From 9971c86d099fcb75fe29297d1200acebdc329974 Mon Sep 17 00:00:00 2001 From: Marcel Otte Date: Thu, 4 Aug 2016 07:29:54 +0200 Subject: [PATCH] current work on generic guided editor --- src/editor/CMakeLists.txt | 16 +- src/editor/abstractguidededitormodel.cpp | 7 - src/editor/editorelementdata.cpp | 15 ++ src/editor/editorelementdata.h | 22 +++ src/editor/editorgroup.cpp | 8 + src/editor/editorgroup.h | 27 ++++ src/editor/editormodel.cpp | 7 + ...tractguidededitormodel.h => editormodel.h} | 17 +- src/editor/editortreenode.cpp | 149 ++++++++++++++++++ src/editor/editortreenode.h | 49 ++++++ src/editor/guidededitorelement.cpp | 85 ---------- src/editor/guidededitorelement.h | 52 ------ src/editor/guidededitorelementview.cpp | 54 ++----- src/editor/guidededitorelementview.h | 47 +++--- src/editor/guidededitorgroup.cpp | 29 ---- src/editor/guidededitorgroup.h | 31 ---- src/editor/guidededitorgroupview.cpp | 7 + src/editor/guidededitorgroupview.h | 20 +++ src/editor/guidededitorview.cpp | 39 ++--- src/editor/guidededitorview.h | 14 +- xml/editorelement.xsd | 49 ++++++ xml/editorgroup.xsd | 20 +++ xml/protocol.xsd | 19 +++ 23 files changed, 468 insertions(+), 315 deletions(-) delete mode 100644 src/editor/abstractguidededitormodel.cpp create mode 100644 src/editor/editorelementdata.cpp create mode 100644 src/editor/editorelementdata.h create mode 100644 src/editor/editorgroup.cpp create mode 100644 src/editor/editorgroup.h create mode 100644 src/editor/editormodel.cpp rename src/editor/{abstractguidededitormodel.h => editormodel.h} (51%) create mode 100644 src/editor/editortreenode.cpp create mode 100644 src/editor/editortreenode.h delete mode 100644 src/editor/guidededitorelement.cpp delete mode 100644 src/editor/guidededitorelement.h delete mode 100644 src/editor/guidededitorgroup.cpp delete mode 100644 src/editor/guidededitorgroup.h create mode 100644 src/editor/guidededitorgroupview.cpp create mode 100644 src/editor/guidededitorgroupview.h create mode 100644 xml/editorelement.xsd create mode 100644 xml/editorgroup.xsd create mode 100644 xml/protocol.xsd diff --git a/src/editor/CMakeLists.txt b/src/editor/CMakeLists.txt index cc9ce41..6127fbe 100644 --- a/src/editor/CMakeLists.txt +++ b/src/editor/CMakeLists.txt @@ -1,17 +1,21 @@ -set(HEADERS abstractguidededitormodel.h - guidededitorelement.h +set(HEADERS editormodel.h + editorelementdata.h guidededitorelementview.h - guidededitorgroup.h + guidededitorgroupview.h + editorgroup.h flowlayout.h + editortreenode.h ) set(SOURCES guidededitorelementview.cpp - guidededitorelement.cpp - abstractguidededitormodel.cpp - guidededitorgroup.cpp + guidededitorgroupview.cpp + editorelementdata.cpp + editormodel.cpp + editorgroup.cpp guidededitorview.cpp flowlayout.cpp + editortreenode.cpp ) add_library(editor ${HEADERS} ${SOURCES}) diff --git a/src/editor/abstractguidededitormodel.cpp b/src/editor/abstractguidededitormodel.cpp deleted file mode 100644 index 85c552c..0000000 --- a/src/editor/abstractguidededitormodel.cpp +++ /dev/null @@ -1,7 +0,0 @@ -#include "abstractguidededitormodel.h" - -AbstractGuidedEditorModel::AbstractGuidedEditorModel(QObject *parent) : QObject(parent) -{ - -} - diff --git a/src/editor/editorelementdata.cpp b/src/editor/editorelementdata.cpp new file mode 100644 index 0000000..c47c1a8 --- /dev/null +++ b/src/editor/editorelementdata.cpp @@ -0,0 +1,15 @@ +#include "editorelementdata.h" +#include + +EditorElementData::EditorElementData() +{ + +} + + + +EditorElementData::~EditorElementData() +{ + +} + diff --git a/src/editor/editorelementdata.h b/src/editor/editorelementdata.h new file mode 100644 index 0000000..53ff0f8 --- /dev/null +++ b/src/editor/editorelementdata.h @@ -0,0 +1,22 @@ +#ifndef EDITORELEMENT_H +#define EDITORELEMENT_H +#include +#include + + + +class EditorElementData : public QObject +{ + Q_OBJECT +public: + + explicit EditorElementData(); + ~EditorElementData(); + + +private: + QMap elements; + +}; + +#endif // EDITORELEMENT_H diff --git a/src/editor/editorgroup.cpp b/src/editor/editorgroup.cpp new file mode 100644 index 0000000..0726503 --- /dev/null +++ b/src/editor/editorgroup.cpp @@ -0,0 +1,8 @@ +#include "editorgroup.h" +#include "cstdlib" +#include + +EditorGroup::EditorGroup(QObject *parent) : QObject(parent) +{ + +} diff --git a/src/editor/editorgroup.h b/src/editor/editorgroup.h new file mode 100644 index 0000000..b457c9a --- /dev/null +++ b/src/editor/editorgroup.h @@ -0,0 +1,27 @@ +#ifndef GUIDEDEDITORLAYER_H +#define GUIDEDEDITORLAYER_H + +#include +#include +#include + +#include "editorelementdata.h" + +class EditorGroup : public QObject +{ + Q_OBJECT +public: + explicit EditorGroup(QObject *parent = 0); + +private: + QMap attributes; + QList elements; + + + +signals: + +public slots: +}; + +#endif // GUIDEDEDITORLAYER_H diff --git a/src/editor/editormodel.cpp b/src/editor/editormodel.cpp new file mode 100644 index 0000000..2637945 --- /dev/null +++ b/src/editor/editormodel.cpp @@ -0,0 +1,7 @@ +#include "abstractguidededitormodel.h" + +EditorModel::EditorModel(QObject *parent) : QObject(parent) +{ + +} + diff --git a/src/editor/abstractguidededitormodel.h b/src/editor/editormodel.h similarity index 51% rename from src/editor/abstractguidededitormodel.h rename to src/editor/editormodel.h index 5e0756c..70914fd 100644 --- a/src/editor/abstractguidededitormodel.h +++ b/src/editor/editormodel.h @@ -5,26 +5,31 @@ #include #include #include -#include "guidededitorelement.h" +#include "editorelementdata.h" +#include "editorgroup.h" -class AbstractGuidedEditorModel : public QObject +class EditorModel : public QObject { Q_OBJECT public: - explicit AbstractGuidedEditorModel(QObject *parent = 0); - virtual ~AbstractGuidedEditorModel(); + explicit EditorModel(QObject *parent = 0); + virtual ~EditorModel(); virtual uint getCount()=0; - virtual GuidedEditorElement& getElement(uint index) = 0; + virtual EditorElementData& getElement(uint index) = 0; virtual void setElementValue(const uint index, const QString value)= 0; - virtual const std::list& getAllElements() = 0; + virtual const std::list& getAllElements() = 0; signals: void dataChanged(); void dataChanged(uint index); public slots: +private: + QList data; + QList groups; + }; #endif // ABSTRACTGUIDEDEDITORMODEL_H diff --git a/src/editor/editortreenode.cpp b/src/editor/editortreenode.cpp new file mode 100644 index 0000000..3a6eb27 --- /dev/null +++ b/src/editor/editortreenode.cpp @@ -0,0 +1,149 @@ +#include "editortreenode.h" + +EditorTreeNode::EditorTreeNode() {} + +EditorTreeNode::EditorTreeNode(T v) + : value(v) +{ +} + +EditorTreeNode::~EditorTreeNode() +{ + if (parent != nullptr) { + remove(); + } +} + +const EditorTreeNode* EditorTreeNode::nextSibling() +{ + if (parent() != nullptr) { + uint i = parent()->children().indexOf(this); + if (i + 1 < parent->children().size()) + return parent->children().at(i + 1); //next sibling... + else + return nullptr; + } + return nullptr; +} + +const EditorTreeNode* EditorTreeNode::next(TreeWalkStrategy walkStrategy) +{ + if (walkStrategy == TreeWalkStrategy::mixture) + // choose node, work through all siblings, choose next node, but don't change branches more than one parent away, except branch is at an end. + if (parent() != nullptr) { + if (nextSibling() != null) // next sibling + return nextSibling(); + else // find next children + { + for (auto n : parent->children()) + if (n->children().size() > 0) + return n->children().first(); + auto siblingOfParent = parent->nextSibling(); + while (siblingOfParent != nullptr && siblingOfParent->children().size() == 0) { + if (siblingOfParent->nextSibling() == nullptr) + siblingOfParent = siblingOfParent->parent(); + else + siblingOfParent = siblingOfParent->nextSibling(); + } + if (siblingOfParent != nullptr) + return siblingOfParent->children().first(); + else + return nullptr; + } + } else { + if (children.size() > 0) + return children.first(); + else + return nullptr; + } + else if (walkStrategy == TreeWalkStrategy::depthFirst) + if (children().size() > 0) + return children.first(); + else { + auto node = this; + while (node->nextSibling() == nullptr && node->parent() != nullptr) + node = node->parent(); + return node->nextSibling(); + } + else if (walkStrategy == TreeWalkStrategy::breadthFirst) + if (parent != nullptr) { + auto nextOnLvl = nextOnSameLevel(); + if (nextOnLvl == nullptr){ + for (auto n : this->children) + if (n->children().size() > 0) + return n->children().first(); + } + else return nextOnLvl; + } + return nullptr; +} + +const EditorTreeNode* EditorTreeNode::getRoot() +{ + auto node = this; + while (node->parent() != nullptr) + node = node->parent(); + return node; +} + +void EditorTreeNode::move(EditorTreeNode* to) +{ + this->parent()->children().removeOne(this); + to->children().append(this); +} + +void EditorTreeNode::moveChildren(EditorTreeNode* to) +{ + for (auto child : children) + child->move(to); +} + +void EditorTreeNode::addChild(EditorTreeNode* child) +{ + this->children().append(child); + child->setParen(this); +} + +bool EditorTreeNode::removeChild(EditorTreeNode* child) +{ + this->children().removeOne(child); +} + +bool EditorTreeNode::remove() +{ + if (parent != nullptr) { + parent->children().removeOne(this); + } + + if (children.size() > 0) { + for (auto node : children) { + node->remove(); + } + } +} + +EditorTreeNode* EditorTreeNode::nextOnSameLevel() +{ + if (nextSibling() != nullptr) + return nextSibling(); + uint lvl = 1; + auto node = this->parent(); + auto pnode = this; + while (lvl > 0 && node != nullptr) { + if (node != pnode->parent() && node->children() > 0) { + node = node->children().first(); + --lvl; + } else { + pnode = node; + if (node->nextSibling() != nullptr) + node = node->nextSibling(); + else { + if (node->parent() != nullptr) { + node = node->parent(); + ++lvl; + } + } + } + } + return node; +} diff --git a/src/editor/editortreenode.h b/src/editor/editortreenode.h new file mode 100644 index 0000000..634a2ba --- /dev/null +++ b/src/editor/editortreenode.h @@ -0,0 +1,49 @@ +#ifndef EDITORTREENODE_H +#define EDITORTREENODE_H + +#include + +enum class TreeWalkStrategy { + depthFirst, + breadthFirst, + mixture +}; + +template +class EditorTreeNode; + +template +class EditorTreeNode { +public: + explicit EditorTreeNode(); + explicit EditorTreeNode(T v); + ~EditorTreeNode(); + + const EditorTreeNode* nextSibling(); + const EditorTreeNode* parent() { return parent; } + QList*>& children() { return children; } + void setParen(EditorTreeNode* parent) { this->parent = parent; } + + T value() { return value; } + + const EditorTreeNode* next(TreeWalkStrategy depth_first = TreeWalkStrategy::depthFirst); + const EditorTreeNode* getRoot(); + void move(EditorTreeNode* to); // as child! + void moveChildren(EditorTreeNode* to); // move all children +signals: + void nodeDataChanged(EditorTreeNode* node); + void treeChanged(EditorTreeNode* node); + +public slots: + void addChild(EditorTreeNode* child); + bool removeChild(EditorTreeNode* child); + bool remove(); + +private: + T value; + EditorTreeNode* parent = nullptr; + QList*> children; + EditorTreeNode* nextOnSameLevel(); +}; + +#endif // EDITORTREENODE_H diff --git a/src/editor/guidededitorelement.cpp b/src/editor/guidededitorelement.cpp deleted file mode 100644 index 43d791c..0000000 --- a/src/editor/guidededitorelement.cpp +++ /dev/null @@ -1,85 +0,0 @@ -#include "guidededitorelement.h" -#include - -GuidedEditorElement::GuidedEditorElement() -{ - -} - - - -GuidedEditorElement::~GuidedEditorElement() -{ - -} - -QString GuidedEditorElement::getTitle() const -{ - return title; -} - -void GuidedEditorElement::setTitle(const QString &value) -{ - title = value; -} - -QString GuidedEditorElement::getDescription() const -{ - return description; -} - -void GuidedEditorElement::setDescription(const QString &value) -{ - description = value; -} - -QString GuidedEditorElement::getExample() const -{ - return example; -} - -void GuidedEditorElement::setExample(const QString &value) -{ - example = value; -} - -QString GuidedEditorElement::getSyntaxregex() const -{ - return syntaxregex; -} - -void GuidedEditorElement::setSyntaxregex(const QString &value) -{ - syntaxregex = value; -} - -ElementType GuidedEditorElement::getType() const -{ - return type; -} - -void GuidedEditorElement::setType(const ElementType &value) -{ - type = value; -} - -QString GuidedEditorElement::getValue() const -{ - return value; -} - -void GuidedEditorElement::setValue(const QString &value) -{ - this->value = value; -} - -GuidedEditorGroup *GuidedEditorElement::getGroup() const -{ - return this->group; -} - -void GuidedEditorElement::setGroup(GuidedEditorGroup *group) -{ - this->group = group; -} - diff --git a/src/editor/guidededitorelement.h b/src/editor/guidededitorelement.h deleted file mode 100644 index f0faf86..0000000 --- a/src/editor/guidededitorelement.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef EDITORELEMENT_H -#define EDITORELEMENT_H -#include -#include -#include "guidededitorgroup.h" - - -enum class ElementType { - INPUT, CHOOSER, STATIC -}; - -class GuidedEditorElement : public QObject -{ - Q_OBJECT -public: - - explicit GuidedEditorElement(); - ~GuidedEditorElement(); - - QString getTitle() const; - void setTitle(const QString &value); - - QString getDescription() const; - void setDescription(const QString &value); - - QString getExample() const; - void setExample(const QString &value); - - QString getSyntaxregex() const; - void setSyntaxregex(const QString &value); - - ElementType getType() const; - void setType(const ElementType &value); - - QString getValue() const; - void setValue(const QString &value); - - GuidedEditorGroup* getGroup() const; - void setGroup(GuidedEditorGroup* group); - -private: - QString title; - QString description; - QString example; - QString syntaxregex; - ElementType type; - QString value; - GuidedEditorGroup* group; - -}; - -#endif // EDITORELEMENT_H diff --git a/src/editor/guidededitorelementview.cpp b/src/editor/guidededitorelementview.cpp index 3c58425..e441ba2 100644 --- a/src/editor/guidededitorelementview.cpp +++ b/src/editor/guidededitorelementview.cpp @@ -1,10 +1,10 @@ #include "guidededitorelementview.h" -#include -#include -#include -#include #include +#include +#include +#include +#include #include @@ -12,53 +12,17 @@ GuidedEditorElementView::GuidedEditorElementView(QWidget* parent) : QWidget(parent) { this->layout = new QVBoxLayout(this); - this->title = new QLabel(this); - this->description = new QString(); - this->example = new QLabel(this); this->setLayout(layout); - this->layout->addWidget(title); - this->layout->addWidget(example); } -void GuidedEditorElementView::setElement(GuidedEditorElement* element) +void GuidedEditorElementView::render() { - std::cout<<"adding element " << element <title->setText("testtitle"); - this->description = new QString("test description"); - this->example->setText("test example"); - this->input = new QLineEdit(this); - this->layout->addWidget(input); - this->update(); - return; + for (QWidget* w : this->propertyViews->values()) + this->layout->removeWidget(w); + for (QString prop : this->propertyOrder) { + this->layout->addWidget(this->propertyViews[prop]); } - // set title - this->title->setText(element->getTitle()); - // put description somewhere - this->description = new QString(element->getDescription()); - // set example - this->example->setText(element->getExample()); - // set input/static part - switch (element->getType()) { - case ElementType::CHOOSER: - this->combobox = new QComboBox(this); - //TODO: data for the combobox ?! - this->layout->addWidget(combobox); - break; - case ElementType::INPUT: - this->input = new QLineEdit(this); - this->layout->addWidget(input); - - this->input->setValidator(new QRegExpValidator(QRegExp(element->getSyntaxregex()))); - break; - case ElementType::STATIC: - this->staticLabel = new QLabel(this); - this->layout->addWidget(staticLabel); - this->staticLabel->setText(element->getValue()); - break; - } - } void GuidedEditorElementView::dataChanged() diff --git a/src/editor/guidededitorelementview.h b/src/editor/guidededitorelementview.h index ec2eb86..9da5b30 100644 --- a/src/editor/guidededitorelementview.h +++ b/src/editor/guidededitorelementview.h @@ -1,48 +1,39 @@ #ifndef GUIDEDEDITORELEMENTVIEW_H #define GUIDEDEDITORELEMENTVIEW_H -#include +#include #include #include +#include #include +#include #include -#include -#include "guidededitorelement.h" -#include "guidededitorgroup.h" +#include "editorelementdata.h" +#include "editorgroup.h" +#include "guidededitorgroupview.h" - -class GuidedEditorElementView : public QWidget -{ - Q_OBJECT +class GuidedEditorElementView : public QWidget { + Q_OBJECT public: - explicit GuidedEditorElementView(QWidget *parent = 0); - void setElement(GuidedEditorElement* element); + explicit GuidedEditorElementView(QWidget* parent = 0); + + void render(); signals: - void inputChanged(); + void inputChanged(); public slots: - void dataChanged(); + void dataChanged(); private: - // layout + // layout QVBoxLayout* layout; - // widget container - //? - // title label - QLabel* title; - // example/regex label - QLabel* example; - // mouseover description? - QString* description; - // input field based on element type - QLineEdit* input; - QComboBox* combobox; - QLabel* staticLabel; - // layer information - GuidedEditorGroup* group; - + QList propertyOrder; + QMap propertyViews; + GuidedEditorGroupView* groupView; + EditorGroup* group; + EditorElementData* elementData; }; #endif // GUIDEDEDITORELEMENTVIEW_H diff --git a/src/editor/guidededitorgroup.cpp b/src/editor/guidededitorgroup.cpp deleted file mode 100644 index 4ccc5b7..0000000 --- a/src/editor/guidededitorgroup.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#include "guidededitorgroup.h" -#include "cstdlib" -#include - -GuidedEditorGroup::GuidedEditorGroup(QObject *parent) : QObject(parent) -{ - this->color = new QColor(rand()%20*10+50, rand()%20*10+50, rand()%20*10+50); -} - -QString GuidedEditorGroup::getTitle() const -{ - return title; -} - -void GuidedEditorGroup::setTitle(const QString &value) -{ - title = value; -} - -QColor GuidedEditorGroup::getColor() const -{ - return *color; -} - -void GuidedEditorGroup::setColor(QColor *value) -{ - color = value; -} - diff --git a/src/editor/guidededitorgroup.h b/src/editor/guidededitorgroup.h deleted file mode 100644 index 28fa20a..0000000 --- a/src/editor/guidededitorgroup.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef GUIDEDEDITORLAYER_H -#define GUIDEDEDITORLAYER_H - -#include -#include -#include - -class GuidedEditorGroup : public QObject -{ - Q_OBJECT -public: - explicit GuidedEditorGroup(QObject *parent = 0); - GuidedEditorGroup(QString title, QObject *parent = 0); - - QString getTitle() const; - void setTitle(const QString &value); - - QColor getColor() const; - void setColor(QColor *value); - -private: - QString title; - QColor *color; - - -signals: - -public slots: -}; - -#endif // GUIDEDEDITORLAYER_H diff --git a/src/editor/guidededitorgroupview.cpp b/src/editor/guidededitorgroupview.cpp new file mode 100644 index 0000000..e2626bc --- /dev/null +++ b/src/editor/guidededitorgroupview.cpp @@ -0,0 +1,7 @@ +#include "guidededitorgroupview.h" + +GuidedEditorGroupView::GuidedEditorGroupView(QObject* parent) + : QObject(parent) +{ + this->color = new QColor(rand() % 20 * 10 + 50, rand() % 20 * 10 + 50, rand() % 20 * 10 + 50); +} diff --git a/src/editor/guidededitorgroupview.h b/src/editor/guidededitorgroupview.h new file mode 100644 index 0000000..637e7c2 --- /dev/null +++ b/src/editor/guidededitorgroupview.h @@ -0,0 +1,20 @@ +#ifndef GUIDEDEDITORGROUPVIEW_H +#define GUIDEDEDITORGROUPVIEW_H + +#include +#include +class GuidedEditorGroupView : public QObject { + Q_OBJECT +public: + explicit GuidedEditorGroupView(QObject* parent = 0); + +signals: + +public slots: + +private: + QColor* color; + QString stylesheet; +}; + +#endif // GUIDEDEDITORGROUPVIEW_H diff --git a/src/editor/guidededitorview.cpp b/src/editor/guidededitorview.cpp index 7626c18..132497a 100644 --- a/src/editor/guidededitorview.cpp +++ b/src/editor/guidededitorview.cpp @@ -2,27 +2,29 @@ #include -#include "guidededitorview.h" #include "guidededitorelementview.h" +#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); - this->addElement(nullptr); +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); + this->addElement(nullptr); } GuidedEditorView::GuidedEditorView( - AbstractGuidedEditorModel* model, + EditorModel* model, QWidget* parent) : GuidedEditorView(parent) { @@ -31,11 +33,10 @@ GuidedEditorView::GuidedEditorView( GuidedEditorView::~GuidedEditorView() {} -void GuidedEditorView::addElement(GuidedEditorElement* element) +void GuidedEditorView::addElement(EditorElementData* element) { - std::cout << "adding elementview from element " << element <setElement(element); this->layout()->addWidget(elementView); //this->update(); } diff --git a/src/editor/guidededitorview.h b/src/editor/guidededitorview.h index 10624d3..d50d5e8 100644 --- a/src/editor/guidededitorview.h +++ b/src/editor/guidededitorview.h @@ -1,28 +1,28 @@ #ifndef GUIDEDEDITOR_H #define GUIDEDEDITOR_H -#include -#include +#include "editormodel.h" +#include "editorelementdata.h" #include "flowlayout.h" -#include "guidededitorelement.h" -#include "abstractguidededitormodel.h" +#include +#include class GuidedEditorView : public QWidget { Q_OBJECT public: explicit GuidedEditorView(QWidget* parent = 0); - GuidedEditorView(AbstractGuidedEditorModel* model, + GuidedEditorView(EditorModel* model, QWidget* parent = 0); ~GuidedEditorView(); signals: public slots: - void addElement(GuidedEditorElement* element); + void addElement(EditorElementData* element); private: FlowLayout* editorLayout; - AbstractGuidedEditorModel* model; + EditorModel* model; }; #endif // GUIDEDEDITOR_H diff --git a/xml/editorelement.xsd b/xml/editorelement.xsd new file mode 100644 index 0000000..4e1ac25 --- /dev/null +++ b/xml/editorelement.xsd @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xml/editorgroup.xsd b/xml/editorgroup.xsd new file mode 100644 index 0000000..9b6daee --- /dev/null +++ b/xml/editorgroup.xsd @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + diff --git a/xml/protocol.xsd b/xml/protocol.xsd new file mode 100644 index 0000000..33135d2 --- /dev/null +++ b/xml/protocol.xsd @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + +