diff options
author | Nao Pross <naopross@thearcway.org> | 2017-12-19 22:47:05 +0100 |
---|---|---|
committer | Nao Pross <naopross@thearcway.org> | 2017-12-19 22:47:05 +0100 |
commit | 631f37ee26c19d38408ee733ffda24ad283c7921 (patch) | |
tree | 0d12f7201337ac9c459aac48b5e4421f6a1f7db2 /include | |
parent | Update gitignore for QtCreator (diff) | |
download | OrbitingYeti-631f37ee26c19d38408ee733ffda24ad283c7921.tar.gz OrbitingYeti-631f37ee26c19d38408ee733ffda24ad283c7921.zip |
Implement basic ui
Changes:
- Clean up code to use Qt coding style
- Add comments to some methods
- Add debugtools to have debug_msg() and debug_err() macros
- New Serializer class header to save / load data
- MetadataDialog: check validity of metadata
- MainWindow: initial code for `tool' buttons to edit the structogram
- MainWindow: open / save dialog
Diffstat (limited to '')
-rw-r--r-- | include/debugtools.h | 27 | ||||
-rw-r--r-- | include/diagram/branchstatement.h | 4 | ||||
-rw-r--r-- | include/diagram/iteratorstatement.h | 4 | ||||
-rw-r--r-- | include/diagram/structogram.h | 10 | ||||
-rw-r--r-- | include/io/serializer.h | 18 | ||||
-rw-r--r-- | include/ui/mainwindow.h | 8 | ||||
-rw-r--r-- | include/ui/metadatadialog.h | 6 |
7 files changed, 71 insertions, 6 deletions
diff --git a/include/debugtools.h b/include/debugtools.h new file mode 100644 index 0000000..cd6940b --- /dev/null +++ b/include/debugtools.h @@ -0,0 +1,27 @@ +#ifndef DEBUGTOOLS_H +#define DEBUGTOOLS_H + +#ifdef QT_NO_DEBUG + +void debug_msg(...) {} +void debug_err(...) {} + +#else +#include <iostream> + +#define debug_msg(msg) \ +do { \ + std::cout << "DEBUG [" \ + << __FILE__ << " @ " << __LINE__ \ + << "]: " << msg << std::endl; \ +} while (0) + +#define debug_err(msg) \ +do { \ + std::cerr << "ERROR [" \ + << __FILE__ << " @ " << __LINE__ \ + << "]: " << msg << std::endl; \ +} while (0) + +#endif // QT_NO_DEBUG +#endif // DEBUGTOOLS_H diff --git a/include/diagram/branchstatement.h b/include/diagram/branchstatement.h index 6c5e416..3d8c385 100644 --- a/include/diagram/branchstatement.h +++ b/include/diagram/branchstatement.h @@ -8,13 +8,15 @@ namespace samb { +/* Implementation for Statement::DECISION, Statement::SWITCH + */ class BranchStatement : public Statement { public: BranchStatement(Type t, const QString &condition, pointer next); /* accessors */ - const std::map<QString, pointer>& branches() const { return _branches; } + std::map<QString, pointer>& branches() { return _branches; } std::size_t branches_count() const { return _branchesCount; } inline const QString& condition() const { return text(); } diff --git a/include/diagram/iteratorstatement.h b/include/diagram/iteratorstatement.h index a8f6d59..e7fbba0 100644 --- a/include/diagram/iteratorstatement.h +++ b/include/diagram/iteratorstatement.h @@ -8,13 +8,15 @@ namespace samb { +/* Implementation for Statement::WHILE Statement::UNTIL + */ class IteratorStatement : public Statement { public: IteratorStatement(Type t, const QString &condition, pointer next); /* accessors */ - const Scope& inner() const { return _inner; } + Scope& inner() { return _inner; } inline const QString& condition() const { return text(); } inline void condition(const QString &condition) { return text(condition); } diff --git a/include/diagram/structogram.h b/include/diagram/structogram.h index 6b2e0db..cd501aa 100644 --- a/include/diagram/structogram.h +++ b/include/diagram/structogram.h @@ -7,15 +7,19 @@ namespace samb { +/* A structogram is a specific type of scope, that is the root scope. + * As a result it contains some metadata informations about the author, + * date of creation ecc. + */ class Structogram : public Scope { public: Structogram(const QString &title, const QString &author); - ~Structogram(); + virtual ~Structogram(); /* accessors */ - void title(const QString &title) { text(title); } - const QString& title() const { return text(); } + inline void title(const QString &title) { text(title); } + inline const QString& title() const { return text(); } void author(const QString &author) { _author = author; } const QString& author() const { return _author; } diff --git a/include/io/serializer.h b/include/io/serializer.h new file mode 100644 index 0000000..901d913 --- /dev/null +++ b/include/io/serializer.h @@ -0,0 +1,18 @@ +#ifndef SERIALIZER_H +#define SERIALIZER_H + +#include "diagram/structogram.h" + +#include <QFileInfo> + +class Serializer +{ +public: + explicit Serializer(); + virtual ~Serializer(); + + bool write(const samb::Structogram &structogram, QFileInfo into); + bool load(samb::Structogram &structogram, QFileInfo from); +}; + +#endif // SERIALIZER_H diff --git a/include/ui/mainwindow.h b/include/ui/mainwindow.h index 0beb4a2..3061440 100644 --- a/include/ui/mainwindow.h +++ b/include/ui/mainwindow.h @@ -19,13 +19,19 @@ public: private slots: void on_newButton_clicked(); + void on_openButton_clicked(); + void on_saveButton_clicked(); + + void on_refreshButton_clicked(); void on_metadataButton_clicked(); + void on_newStatementButton_clicked(); private: Ui::MainWindow *_ui; samb::Structogram *_structogram; - void initData(); + bool askSaveDialog(); + void toolButtonsEnabled(bool state); }; #endif // MAINWINDOW_H diff --git a/include/ui/metadatadialog.h b/include/ui/metadatadialog.h index 0ed2f17..81af9da 100644 --- a/include/ui/metadatadialog.h +++ b/include/ui/metadatadialog.h @@ -2,6 +2,7 @@ #define NEWDIALOG_H #include <QDialog> +#include <QAbstractButton> namespace Ui { class MetadataDialog; @@ -15,10 +16,15 @@ public: explicit MetadataDialog(QWidget *parent = 0); ~MetadataDialog(); + bool isValid() const; void setMetadata(const QString& title, const QString& author); QString title() const; QString author() const; +private slots: + void on_titleEdit_textChanged(); + void on_authorEdit_textChanged(); + private: Ui::MetadataDialog *_ui; }; |