diff --git a/.gitignore b/.gitignore
index e02e1c5..f8ac05f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
*.mm
*.pro.user
build
+*.user*
diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user
deleted file mode 100644
index 7a2f43f..0000000
--- a/CMakeLists.txt.user
+++ /dev/null
@@ -1,285 +0,0 @@
-
-
-
-
-
- EnvironmentId
- {8fe85189-3226-423c-bccf-c2236465442c}
-
-
- ProjectExplorer.Project.ActiveTarget
- 0
-
-
- ProjectExplorer.Project.EditorSettings
-
- true
- false
- true
-
- Cpp
-
- CppGlobal
-
-
-
- QmlJS
-
- QmlJSGlobal
-
-
- 2
- UTF-8
- false
- 4
- false
- 80
- true
- true
- 1
- true
- false
- 0
- true
- 0
- 8
- true
- 1
- true
- true
- true
- false
-
-
-
- ProjectExplorer.Project.PluginSettings
-
-
-
- 1
-
-
-
-
- ProjectExplorer.Project.Target.0
-
- Desktop
- Desktop
- {211a0c20-f25f-4bf4-b929-1284740fe4d9}
- 0
- 0
- 0
-
-
- false
- /home/qwc/source/npc/build
-
-
-
-
- false
-
- true
- Make
-
- CMakeProjectManager.MakeStep
-
- 1
- Build
-
- ProjectExplorer.BuildSteps.Build
-
-
-
- clean
-
- true
-
- true
- Make
-
- CMakeProjectManager.MakeStep
-
- 1
- Bereinigen
-
- ProjectExplorer.BuildSteps.Clean
-
- 2
- false
-
- Vorgabe
- Vorgabe
- CMakeProjectManager.CMakeBuildConfiguration
-
-
- -DCMAKE_BUILD_TYPE=Debug
- false
- /home/qwc/source/npc/build/debug
-
-
-
-
- false
-
- true
- Make
-
- CMakeProjectManager.MakeStep
-
- 1
- Build
-
- ProjectExplorer.BuildSteps.Build
-
-
-
- clean
-
- true
-
- true
- Make
-
- CMakeProjectManager.MakeStep
-
- 1
- Bereinigen
-
- ProjectExplorer.BuildSteps.Clean
-
- 2
- false
-
- Debug
- Debug
- CMakeProjectManager.CMakeBuildConfiguration
-
-
- -DCMAKE_BUILD_TYPE=Release
- false
- /home/qwc/source/npc/build/release
-
-
-
-
- false
-
- true
- Make
-
- CMakeProjectManager.MakeStep
-
- 1
- Build
-
- ProjectExplorer.BuildSteps.Build
-
-
-
- clean
-
- true
-
- true
- Make
-
- CMakeProjectManager.MakeStep
-
- 1
- Bereinigen
-
- ProjectExplorer.BuildSteps.Clean
-
- 2
- false
-
- Release
- Release
- CMakeProjectManager.CMakeBuildConfiguration
-
- 3
-
-
- 0
- Deployment
-
- ProjectExplorer.BuildSteps.Deploy
-
- 1
- Lokales Deployment
-
- ProjectExplorer.DefaultDeployConfiguration
-
- 1
-
-
- false
- 1000
-
- true
-
- false
- false
- false
- false
- true
- 0.01
- 10
- true
- 1
- 25
-
- 1
- true
- false
- true
- valgrind
-
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
-
- npc
-
-
- 2
-
- npc
-
- CMakeProjectManager.CMakeRunConfiguration.npc
- 3768
- false
- true
- false
- false
- true
-
- 1
-
-
-
- ProjectExplorer.Project.TargetCount
- 1
-
-
- ProjectExplorer.Project.Updater.FileVersion
- 18
-
-
- Version
- 18
-
-
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index f460f40..88a4a42 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,20 +1,12 @@
-set(HEADERS abstractguidededitormodel.h
- flowlayout.h
- guidededitorelement.h
- guidededitorelementview.h
- guidededitorlayer.h
- guidededitorview.h
- mainwindow.h
+set(HEADERS mainwindow.h
)
-set(SOURCES abstractguidededitormodel.cpp
- flowlayout.cpp
- guidededitorelement.cpp
- guidededitorelementview.cpp
- guidededitorlayer.cpp
- guidededitorview.cpp
- mainwindow.cpp
+set(SOURCES mainwindow.cpp
)
+add_subdirectory(model)
+add_subdirectory(editor)
+
add_library(src ${HEADERS} ${SOURCES})
+target_link_libraries(src model editor)
qt5_use_modules(src Widgets)
diff --git a/src/editor/CMakeLists.txt b/src/editor/CMakeLists.txt
new file mode 100644
index 0000000..042095c
--- /dev/null
+++ b/src/editor/CMakeLists.txt
@@ -0,0 +1,20 @@
+
+set(HEADERS abstractguidededitormodel.h
+ guidededitorelement.h
+ guidededitorelementview.h
+ guidededitorlayer.h
+ guidededitorlayer.h
+ flowlayout.h
+)
+
+set(SOURCES guidededitorelementview.cpp
+ guidededitorelement.cpp
+ abstractguidededitormodel.cpp
+ guidededitorlayer.cpp
+ guidededitorview.cpp
+ flowlayout.cpp
+)
+
+add_library(editor ${HEADERS} ${SOURCES})
+
+qt5_use_modules(editor Widgets)
diff --git a/src/abstractguidededitormodel.cpp b/src/editor/abstractguidededitormodel.cpp
similarity index 100%
rename from src/abstractguidededitormodel.cpp
rename to src/editor/abstractguidededitormodel.cpp
diff --git a/src/abstractguidededitormodel.h b/src/editor/abstractguidededitormodel.h
similarity index 100%
rename from src/abstractguidededitormodel.h
rename to src/editor/abstractguidededitormodel.h
diff --git a/src/flowlayout.cpp b/src/editor/flowlayout.cpp
similarity index 100%
rename from src/flowlayout.cpp
rename to src/editor/flowlayout.cpp
diff --git a/src/flowlayout.h b/src/editor/flowlayout.h
similarity index 100%
rename from src/flowlayout.h
rename to src/editor/flowlayout.h
diff --git a/src/guidededitorelement.cpp b/src/editor/guidededitorelement.cpp
similarity index 100%
rename from src/guidededitorelement.cpp
rename to src/editor/guidededitorelement.cpp
diff --git a/src/guidededitorelement.h b/src/editor/guidededitorelement.h
similarity index 100%
rename from src/guidededitorelement.h
rename to src/editor/guidededitorelement.h
diff --git a/src/editor/guidededitorelementview.cpp b/src/editor/guidededitorelementview.cpp
new file mode 100644
index 0000000..f4e59ca
--- /dev/null
+++ b/src/editor/guidededitorelementview.cpp
@@ -0,0 +1,17 @@
+#include "guidededitorelementview.h"
+
+GuidedEditorElementView::GuidedEditorElementView(QWidget *parent) : QWidget(parent)
+{
+
+}
+
+void GuidedEditorElementView::setElement()
+{
+
+}
+
+void GuidedEditorElementView::dataChanged()
+{
+
+}
+
diff --git a/src/guidededitorelementview.h b/src/editor/guidededitorelementview.h
similarity index 83%
rename from src/guidededitorelementview.h
rename to src/editor/guidededitorelementview.h
index dfc5c14..4ad5a7f 100644
--- a/src/guidededitorelementview.h
+++ b/src/editor/guidededitorelementview.h
@@ -1,23 +1,24 @@
#ifndef GUIDEDEDITORELEMENTVIEW_H
#define GUIDEDEDITORELEMENTVIEW_H
-#include "guidededitorelement.h"
#include
#include
#include
-#include "guidededitorlayer.h"
#include
#include
#include
+#include "guidededitorlayer.h"
+
class GuidedEditorElementView : public QWidget
{
Q_OBJECT
public:
- explicit GuidedEditorElementView(GuidedEditorElement* element, QWidget *parent = 0);
+ explicit GuidedEditorElementView(QWidget *parent = 0);
+ //explicit GuidedEditorElementView( QWidget *parent = 0);
- void setElement(GuidedEditorElement* element);
+ void setElement();
signals:
@@ -42,6 +43,7 @@ private:
std::unique_ptr combobox;
// layer information
std::shared_ptr layer;
+
};
#endif // GUIDEDEDITORELEMENTVIEW_H
diff --git a/src/guidededitorlayer.cpp b/src/editor/guidededitorlayer.cpp
similarity index 100%
rename from src/guidededitorlayer.cpp
rename to src/editor/guidededitorlayer.cpp
diff --git a/src/guidededitorlayer.h b/src/editor/guidededitorlayer.h
similarity index 100%
rename from src/guidededitorlayer.h
rename to src/editor/guidededitorlayer.h
diff --git a/src/editor/guidededitorview.cpp b/src/editor/guidededitorview.cpp
new file mode 100644
index 0000000..93eb34e
--- /dev/null
+++ b/src/editor/guidededitorview.cpp
@@ -0,0 +1,28 @@
+#include "guidededitorview.h"
+#include "guidededitorelementview.h"
+
+GuidedEditorView::GuidedEditorView(QWidget* parent) : QWidget(parent) {
+ editorLayout = new FlowLayout(this);
+ this->setLayout(editorLayout);
+ // tests
+ QString style = QString(
+ "QWidget {"
+ "border-radius: 5px;"
+ "background: white }"
+ "QLabel {border: 2px dashed black; background: gray; "
+ "border-radius: 5px;}"
+ "QLineEdit {border: 2px dashed black;background: dark-gray;"
+ "border-radius: 5px;}");
+ this->setStyleSheet(style);
+}
+
+GuidedEditorView::GuidedEditorView(
+ std::shared_ptr model,
+ QWidget* parent)
+ : GuidedEditorView(parent) {}
+
+GuidedEditorView::~GuidedEditorView() {}
+
+void GuidedEditorView::addElement() {
+ this->editorLayout->addWidget(new GuidedEditorElementView());
+}
diff --git a/src/editor/guidededitorview.h b/src/editor/guidededitorview.h
new file mode 100644
index 0000000..4814258
--- /dev/null
+++ b/src/editor/guidededitorview.h
@@ -0,0 +1,27 @@
+#ifndef GUIDEDEDITOR_H
+#define GUIDEDEDITOR_H
+
+#include
+#include
+#include "flowlayout.h"
+#include "guidededitorelement.h"
+#include "abstractguidededitormodel.h"
+
+class GuidedEditorView : public QWidget {
+ Q_OBJECT
+public:
+ explicit GuidedEditorView(QWidget* parent = 0);
+ GuidedEditorView(std::shared_ptr model,
+ QWidget* parent = 0);
+ ~GuidedEditorView();
+
+signals:
+
+public slots:
+ void addElement();
+
+private:
+ FlowLayout* editorLayout;
+};
+
+#endif // GUIDEDEDITOR_H
diff --git a/src/guidededitorelementview.cpp b/src/guidededitorelementview.cpp
deleted file mode 100644
index 29adf36..0000000
--- a/src/guidededitorelementview.cpp
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "guidededitorelementview.h"
-
-GuidedEditorElementView::GuidedEditorElementView(GuidedEditorElement *element, QWidget *parent) : QWidget(parent)
-{
-
-}
-
diff --git a/src/guidededitorview.cpp b/src/guidededitorview.cpp
deleted file mode 100644
index f4d248c..0000000
--- a/src/guidededitorview.cpp
+++ /dev/null
@@ -1,30 +0,0 @@
-#include "guidededitorview.h"
-
-GuidedEditorView::GuidedEditorView(QWidget * parent): QWidget(parent) {
- editorLayout = new FlowLayout(this);
- this->setLayout(editorLayout);
- //tests
- QString style = QString(
- "QWidget {"
- "border-radius: 5px;"
- "background: white }"
- "QLabel {border: 2px dashed black; background: gray; "
- "border-radius: 5px;}"
- "QLineEdit {border: 2px dashed black;background: dark-gray;"
- "border-radius: 5px;}"
- );
- this->setStyleSheet(style);
-}
-
-GuidedEditorView::GuidedEditorView(std::shared_ptr model,QWidget *parent) :GuidedEditorView(parent)
-{
-
-
-}
-
-
-GuidedEditorView::~GuidedEditorView()
-{
-
-}
-
diff --git a/src/guidededitorview.h b/src/guidededitorview.h
deleted file mode 100644
index d994778..0000000
--- a/src/guidededitorview.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef GUIDEDEDITOR_H
-#define GUIDEDEDITOR_H
-
-#include
-#include
-#include "flowlayout.h"
-#include "guidededitorelement.h"
-#include "abstractguidededitormodel.h"
-
-class GuidedEditorView : public QWidget
-{
- Q_OBJECT
-public:
- explicit GuidedEditorView(QWidget *parent = 0);
- explicit GuidedEditorView(std::shared_ptr model, QWidget *parent);
- ~GuidedEditorView();
-
-signals:
-
-public slots:
-
-private:
- FlowLayout* editorLayout;
-
-
-
-};
-
-#endif // GUIDEDEDITOR_H
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 57b0555..382e184 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -4,18 +4,18 @@
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
- editor = new GuidedEditorView(this);
- this->setCentralWidget(editor);
- dockWidget = new QDockWidget(this);
- this->addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
+ editor = std::make_shared(this);
+ this->setCentralWidget(editor.get());
+ dockWidget = std::make_shared(this);
+ this->addDockWidget(Qt::LeftDockWidgetArea, dockWidget.get());
// dockwidget
- QVBoxLayout* dockLayout = new QVBoxLayout(dockWidget);
+ QVBoxLayout* dockLayout = new QVBoxLayout(dockWidget.get());
dockWidget->setLayout(dockLayout);
- QPushButton* button = new QPushButton(dockWidget);
+ QPushButton* button = new QPushButton(dockWidget.get());
button->setText("add");
dockLayout->addWidget(button);
-// this->connect(button, &QPushButton::pressed,editor, &GuidedEditorView::addElement);
+ //this->connect(button, &QPushButton::pressed,editor, &GuidedEditorView::addElement);
}
diff --git a/src/mainwindow.h b/src/mainwindow.h
index e4ff0cf..5d0d87d 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -1,19 +1,20 @@
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
+#include
#include
#include
-#include "flowlayout.h"
-#include "guidededitorview.h"
#include
#include
+#include "editor/guidededitorview.h"
+
class MainWindow : public QMainWindow
{
Q_OBJECT
private:
- GuidedEditorView* editor;
- QDockWidget* dockWidget;
+ std::shared_ptr editor;
+ std::shared_ptr dockWidget;
public:
MainWindow(QWidget *parent = 0);
diff --git a/src/model/CMakeLists.txt b/src/model/CMakeLists.txt
new file mode 100644
index 0000000..b98c3d2
--- /dev/null
+++ b/src/model/CMakeLists.txt
@@ -0,0 +1,10 @@
+
+set(HEADERS packetmodel.h
+ packetelement.h
+)
+
+set(SOURCES packetmodel.cpp
+ packetelement.cpp
+)
+
+add_library(model ${HEADERS} ${SOURCES})
diff --git a/src/model/packetelement.cpp b/src/model/packetelement.cpp
new file mode 100644
index 0000000..2772ef3
--- /dev/null
+++ b/src/model/packetelement.cpp
@@ -0,0 +1,11 @@
+#include "packetelement.h"
+
+PacketElement::PacketElement(std::__cxx11::string name, uint32_t sizeInBit, uint16_t layer): name(name), sizeInBit(sizeInBit), layer(layer)
+{
+
+}
+
+void PacketElement::setValue(std::__cxx11::string &value, ValueType type)
+{
+
+}
diff --git a/src/model/packetelement.h b/src/model/packetelement.h
new file mode 100644
index 0000000..b34edea
--- /dev/null
+++ b/src/model/packetelement.h
@@ -0,0 +1,99 @@
+#ifndef PACKETELEMENT_H
+#define PACKETELEMENT_H
+
+#include
+#include
+#include
+#include
+
+
+class PacketElement;
+
+typedef
+ std::list>
+ PacketElementList_t;
+
+ /**
+ @brief The ValueType enum
+ */
+enum class ValueType { hexBinary, integer, text, base64 };
+
+class ElementSyntax
+{
+public:
+ std::string triggerRegex;
+ std::string completeRegex;
+ std::string example;
+};
+
+
+/**
+ @brief The PacketElement class
+ */
+
+class PacketElement
+{
+public:
+ /**
+ @brief PacketElement
+ @param name
+ @param sizeInBit
+ @param layer
+ */
+ PacketElement(std::string name, uint32_t sizeInBit, uint16_t layer);
+ /**
+ @brief setValue
+ @param value
+ */
+ void setValue(std::string& value) {this->value = value; this->valueType = ValueType::text; }
+ /**
+ @brief setValue
+ @param value
+ @param type
+ */
+ void setValue(std::string& value, ValueType type);
+
+ const std::string getValue() { return value; }
+ uint32_t getSizeInBit() { return sizeInBit; }
+ uint16_t getLayer() { return layer; }
+ const std::string getName() { return name; }
+ const std::string getDescription() { return description; }
+
+
+ const std::shared_ptr getNextLayer() { return nextLayer; }
+ /**
+ @brief hasNextLayer
+ @return
+ */
+ bool hasNextLayer() { return nextLayer != nullptr && sizeInBit == 0; }
+ /**
+ @brief setNextLayer
+ @param layerElements
+ */
+ void setNextLayer(std::shared_ptr& layerElements) { nextLayer = layerElements; }
+
+ void addSyntax(std::string minimalRegex, std::string completeRegex, std::string example)
+ {
+ ElementSyntax syntax;
+ syntax.triggerRegex = minimalRegex;
+ syntax.completeRegex = completeRegex;
+ syntax.example = example;
+ syntaxes.push_back(syntax);
+ }
+
+private:
+ std::string name;
+ uint32_t sizeInBit;
+ uint16_t layer;
+ std::string value;
+ ValueType valueType;
+
+ std::shared_ptr nextLayer;
+
+ //additional data
+ std::string description;
+ std::list syntaxes;
+
+};
+
+#endif // PACKETELEMENT_H
diff --git a/src/model/packetmodel.cpp b/src/model/packetmodel.cpp
new file mode 100644
index 0000000..7386dad
--- /dev/null
+++ b/src/model/packetmodel.cpp
@@ -0,0 +1,13 @@
+#include "packetmodel.h"
+
+#include "packetelement.h"
+
+PacketModel::PacketModel()
+{
+ this->elementList = std::make_shared();
+}
+
+const std::shared_ptr PacketModel::getList()
+{
+ return this->elementList;
+}
diff --git a/src/model/packetmodel.h b/src/model/packetmodel.h
new file mode 100644
index 0000000..d90c197
--- /dev/null
+++ b/src/model/packetmodel.h
@@ -0,0 +1,20 @@
+#ifndef PACKETMODEL_H
+#define PACKETMODEL_H
+
+#include
+#include
+#include
+
+#include "packetelement.h"
+
+class PacketModel
+{
+public:
+ PacketModel();
+ const std::shared_ptr getList();
+
+private:
+ std::shared_ptr elementList;
+};
+
+#endif // PACKETMODEL_H