diff --git a/ArchitectureColoredPainting/EditorWidget.ui b/ArchitectureColoredPainting/EditorWidget.ui
index 5825ce6..0ae06e0 100644
--- a/ArchitectureColoredPainting/EditorWidget.ui
+++ b/ArchitectureColoredPainting/EditorWidget.ui
@@ -120,12 +120,12 @@
1
-
+
Tab 1
-
+
Tab 2
@@ -136,14 +136,6 @@
-
-
- EditorWidgetItem
- QWidget
-
- 1
-
-
diff --git a/ArchitectureColoredPainting/src/Editor/EditorWidget.cpp b/ArchitectureColoredPainting/src/Editor/EditorWidget.cpp
index 91926d6..1c3a43b 100644
--- a/ArchitectureColoredPainting/src/Editor/EditorWidget.cpp
+++ b/ArchitectureColoredPainting/src/Editor/EditorWidget.cpp
@@ -18,16 +18,24 @@ EditorWidget::EditorWidget(QWidget* parent) : QWidget(parent)
}
connect(this->createButton, &QPushButton::clicked, this, [this]() {
static int count = 0;
- this->tabWidget->addTab(new EditorWidgetItem(this),"untitled"+QString::number(count++));
+ this->tabWidget->addTab(new EditorWidgetItem("../data.json",this), "untitled" + QString::number(count++));
});
connect(this->closeButton, &QPushButton::clicked, this, [this]() {
this->tabWidget->removeTab(this->tabWidget->currentIndex());
});
connect(this->saveButton, &QPushButton::clicked, this, [this]() {
-
+ EditorWidgetItem* item = dynamic_cast(this->tabWidget->currentWidget());
+ if (item != nullptr)
+ {
+ item->saveAs("../data.back.json");
+ }
});
connect(this->saveAsButton, &QPushButton::clicked, this, [this]() {
-
+ EditorWidgetItem* item = dynamic_cast(this->tabWidget->currentWidget());
+ if (item != nullptr)
+ {
+ item->saveAs("../data.back.json");
+ }
});
}
diff --git a/ArchitectureColoredPainting/src/Editor/EditorWidgetItem.cpp b/ArchitectureColoredPainting/src/Editor/EditorWidgetItem.cpp
index abb1410..a8f630f 100644
--- a/ArchitectureColoredPainting/src/Editor/EditorWidgetItem.cpp
+++ b/ArchitectureColoredPainting/src/Editor/EditorWidgetItem.cpp
@@ -1,6 +1,6 @@
#include "EditorWidgetItem.h"
-EditorWidgetItem::EditorWidgetItem(QWidget *parent) : QWidget(parent)
+EditorWidgetItem::EditorWidgetItem(QString filePath,QWidget *parent) : QWidget(parent)
{
QImage x;
displayLayer = nullptr;
@@ -9,6 +9,7 @@ EditorWidgetItem::EditorWidgetItem(QWidget *parent) : QWidget(parent)
previewWindow = ui.Preview;
treeWidget = ui.LayerTree;
tabWidget = ui.DisplayTab;
+ this->filePath = filePath;
layerInfoDisplayWidget = dynamic_cast(tabWidget->widget(0));
elementInfoDisplayWidget = dynamic_cast(tabWidget->widget(1));
connect(treeWidget, &LayerTreeWidget::displayLayerChange, this, &EditorWidgetItem::onLayerChange);
@@ -20,7 +21,8 @@ EditorWidgetItem::EditorWidgetItem(QWidget *parent) : QWidget(parent)
// &EditorWidget::triggerRefreshPreview);
// test
QFile settingFile;
- settingFile.setFileName("../data.json");
+ //settingFile.setFileName("../data.json");
+ settingFile.setFileName(filePath);
settingFile.open(QFile::ReadOnly);
QByteArray setting = settingFile.readAll().trimmed();
QJsonParseError jError;
@@ -61,3 +63,29 @@ void EditorWidgetItem::triggerRefreshPreview()
{
previewWindow->update();
}
+
+void EditorWidgetItem::save() const
+{
+ saveImpl(this->filePath);
+}
+
+void EditorWidgetItem::saveAs(QString filePath) const
+{
+ saveImpl(filePath);
+}
+
+void EditorWidgetItem::saveImpl(QString filePath) const
+{
+ QJsonObject source1 = layerManager->toJson();
+ QJsonObject source2 = elementManager->toJson();
+ QJsonObject json;
+ json.insert("width", 1080);
+ json.insert("height", 1080);
+ json.insert("root-layer", source1.value("root-layer"));
+ json.insert("elements", source2.value("elements"));
+ QJsonDocument doc(json);
+ QFile file(filePath);
+ file.open(QIODevice::WriteOnly);
+ file.write(doc.toJson());
+ file.close();
+}
\ No newline at end of file
diff --git a/ArchitectureColoredPainting/src/Editor/EditorWidgetItem.h b/ArchitectureColoredPainting/src/Editor/EditorWidgetItem.h
index 794743b..8e447d2 100644
--- a/ArchitectureColoredPainting/src/Editor/EditorWidgetItem.h
+++ b/ArchitectureColoredPainting/src/Editor/EditorWidgetItem.h
@@ -27,11 +27,15 @@ class EditorWidgetItem : public QWidget
// QT DATA PART
LayerWrapper *displayLayer;
GraphicElement *displayElement;
+ QString filePath;
+ void saveImpl(QString filePath)const;
public:
- EditorWidgetItem(QWidget *parent = nullptr);
+ EditorWidgetItem(QString filePath, QWidget *parent = nullptr);
~EditorWidgetItem();
void paintEvent(QPaintEvent *event) override;
+ void save() const;
+ void saveAs(QString filePath)const;
private slots:
void onLayerChange(LayerWrapper *layer);
diff --git a/data.back.json b/data.back.json
new file mode 100644
index 0000000..f58455c
--- /dev/null
+++ b/data.back.json
@@ -0,0 +1,104 @@
+{
+ "elements": [
+ {
+ "name": "ababa",
+ "type": "svg-file",
+ "data": {
+ "include": "./svg/2.svg"
+ }
+ },
+ {
+ "name": "ababa-group",
+ "type": "group",
+ "data": {
+ "reference-layer": "0.0"
+ }
+ }
+ ],
+ "height": 1080,
+ "root-layer": {
+ "children": [
+ {
+ "children": [
+ {
+ "element": 0,
+ "is-folder": false,
+ "name": "Leaf1",
+ "transform": {
+ "offset": {
+ "x": 0,
+ "y": 0
+ },
+ "rotation": 0,
+ "scale": {
+ "x": 1,
+ "y": 1
+ }
+ }
+ },
+ {
+ "element": 0,
+ "is-folder": false,
+ "name": "Leaf2",
+ "transform": {
+ "offset": {
+ "x": 150,
+ "y": 0
+ },
+ "rotation": 0,
+ "scale": {
+ "x": 1.5,
+ "y": 1.5
+ }
+ }
+ }
+ ],
+ "is-folder": true,
+ "name": "GroupFolderExample",
+ "referenced-by": 1,
+ "transform": {
+ "offset": {
+ "x": 50,
+ "y": 50
+ },
+ "rotation": 0,
+ "scale": {
+ "x": 1,
+ "y": 1
+ }
+ }
+ },
+ {
+ "element": 1,
+ "is-folder": false,
+ "name": "ReferencingGroupLayer",
+ "transform": {
+ "offset": {
+ "x": 100,
+ "y": 0
+ },
+ "rotation": 45,
+ "scale": {
+ "x": 1,
+ "y": 1
+ }
+ }
+ }
+ ],
+ "is-folder": true,
+ "name": "root",
+ "referenced-by": null,
+ "transform": {
+ "offset": {
+ "x": 0,
+ "y": 0
+ },
+ "rotation": 0,
+ "scale": {
+ "x": 1,
+ "y": 1
+ }
+ }
+ },
+ "width": 1080
+}