diff --git a/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj b/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj
index f933123..c9aebe4 100644
--- a/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj
+++ b/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj
@@ -104,8 +104,9 @@
-
+
+
@@ -149,11 +150,12 @@
-
+
+
@@ -187,6 +189,7 @@
+
@@ -216,7 +219,7 @@
-
+
diff --git a/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj.filters b/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj.filters
index b433451..6052abb 100644
--- a/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj.filters
+++ b/ArchitectureColoredPainting/ArchitectureColoredPainting.vcxproj.filters
@@ -76,9 +76,12 @@
Form Files
+
+ Form Files
+
-
+
Source Files\Editor
@@ -213,12 +216,15 @@
Source Files\Editor
+
+ Source Files
+
Header Files\Renderer
-
+
Header Files\Editor
@@ -248,6 +254,9 @@
Header Files
+
+ Header Files
+
@@ -328,7 +337,7 @@
-
+
Form Files
diff --git a/ArchitectureColoredPainting/EditorWidget.ui b/ArchitectureColoredPainting/EditorWidget.ui
index 1243056..5825ce6 100644
--- a/ArchitectureColoredPainting/EditorWidget.ui
+++ b/ArchitectureColoredPainting/EditorWidget.ui
@@ -1,110 +1,146 @@
- EditorWidgetClass
-
+ EditorWidget
+
0
0
- 1124
- 695
+ 1139
+ 685
- RendererWidget
+ Form
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
+
-
-
-
-
-
-
-
-
-
-
- Qt::AlignCenter
-
-
-
- -
-
+
+
-
+
+
-
-
-
- -
-
-
- -
-
-
-
-
-
-
- 0
-
-
-
- Layer
-
-
-
-
- Element
-
-
-
-
- -
-
-
- Qt::CustomContextMenu
-
-
-
- 1
-
-
-
-
-
-
+
+ -
+
+
+
+ 80
+ 0
+
+
+
+
+ 80
+ 16777215
+
+
+
+ 新建
+
+
+
+ -
+
+
+
+ 80
+ 0
+
+
+
+
+ 80
+ 16777215
+
+
+
+ 保存
+
+
+
+ -
+
+
+
+ 80
+ 0
+
+
+
+
+ 80
+ 16777215
+
+
+
+ 另存为
+
+
+
+ -
+
+
+
+ 80
+ 0
+
+
+
+
+ 80
+ 16777215
+
+
+
+ 关闭
+
+
+
+
-
-
-
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ 1
+
+
+
+ Tab 1
+
+
+
+
+ Tab 2
+
+
+
+
+
-
- PreviewWindow
- QOpenGLWidget
-
-
-
- LayerTreeWidget
- QTreeWidget
-
-
-
- InfoDisplayWidget
+ EditorWidgetItem
QWidget
-
+
1
diff --git a/ArchitectureColoredPainting/EditorWidgetItem.ui b/ArchitectureColoredPainting/EditorWidgetItem.ui
new file mode 100644
index 0000000..e69dc93
--- /dev/null
+++ b/ArchitectureColoredPainting/EditorWidgetItem.ui
@@ -0,0 +1,113 @@
+
+
+ EditorWidgetItem
+
+
+
+ 0
+ 0
+ 1124
+ 695
+
+
+
+ RendererWidget
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+
-
+
+
+
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
-
+
+
+ -
+
+
+ -
+
+
+
-
+
+
+ 0
+
+
+
+ Layer
+
+
+
+
+ Element
+
+
+
+
+ -
+
+
+ Qt::CustomContextMenu
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PreviewWindow
+ QOpenGLWidget
+
+
+
+ LayerTreeWidget
+ QTreeWidget
+
+
+
+ InfoDisplayWidget
+ QWidget
+
+ 1
+
+
+
+
+
diff --git a/ArchitectureColoredPainting/MainWindow.ui b/ArchitectureColoredPainting/MainWindow.ui
index 647adb8..0608ef8 100644
--- a/ArchitectureColoredPainting/MainWindow.ui
+++ b/ArchitectureColoredPainting/MainWindow.ui
@@ -60,16 +60,16 @@
- QTabBar::tab {
+ QTabBar::tab.rendererWidget {
height: 0px;
margin-top:0px;
}
- QTabWidget::tab-bar
+ QTabWidget::tab-bar.rendererWidget
{
height: 0px;
top:0px;
}
- QTabWidget::pane {
+ QTabWidget::pane.rendererWidget {
border: 0px;
background-color: transparent;
}
diff --git a/ArchitectureColoredPainting/src/Editor/EditorWidget.cpp b/ArchitectureColoredPainting/src/Editor/EditorWidget.cpp
index 03ca81d..91926d6 100644
--- a/ArchitectureColoredPainting/src/Editor/EditorWidget.cpp
+++ b/ArchitectureColoredPainting/src/Editor/EditorWidget.cpp
@@ -1,63 +1,33 @@
#include "EditorWidget.h"
+#include "EditorWidgetItem.h"
+#include
+#include
+#include
-EditorWidget::EditorWidget(QWidget *parent) : QWidget(parent)
+EditorWidget::EditorWidget(QWidget* parent) : QWidget(parent)
{
- QImage x;
- displayLayer = nullptr;
- displayElement = nullptr;
- ui.setupUi(this);
- previewWindow = ui.Preview;
- treeWidget = ui.LayerTree;
- tabWidget = ui.DisplayTab;
- layerInfoDisplayWidget = dynamic_cast(tabWidget->widget(0));
- elementInfoDisplayWidget = dynamic_cast(tabWidget->widget(1));
- connect(treeWidget, &LayerTreeWidget::displayLayerChange, this, &EditorWidget::onLayerChange);
- connect(layerInfoDisplayWidget, &InfoDisplayWidget::requireRefreshPreview, this,
- &EditorWidget::triggerRefreshPreview);
- connect(treeWidget, &LayerTreeWidget::requireRefreshPreview, this,
- &EditorWidget::triggerRefreshPreview);
- connect(layerInfoDisplayWidget, &InfoDisplayWidget::requireSelfRefresh, layerInfoDisplayWidget, &InfoDisplayWidget::triggerSelfRefresh);
- // &EditorWidget::triggerRefreshPreview);
- // test
- QFile settingFile;
- settingFile.setFileName("../data.json");
- settingFile.open(QFile::ReadOnly);
- QByteArray setting = settingFile.readAll().trimmed();
- QJsonParseError jError;
- QJsonDocument jsonDoc(QJsonDocument::fromJson(setting, &jError));
- qDebug() << jsonDoc.object().value("height").toDouble();
- qDebug() << jError.errorString();
- // end test
- QJsonObject source = jsonDoc.object();
- elementManager = new ElementManager(source,previewWindow->getRenderer());
- layerManager = new LayerManager(source, elementManager);
- qDebug() << layerManager->toJson();
- previewWindow->initialize(layerManager,QSize(jsonDoc.object().value("width").toDouble(),jsonDoc.object().value("height").toDouble()));
- if (layerManager->getRoot() != nullptr)
- {
- treeWidget->root = layerManager->getRoot();
- treeWidget->refresh();
- treeWidget->addTopLevelItem(treeWidget->root->getQTreeItem());
- }
+ ui.setupUi(this);
+ this->createButton = ui.createButton;
+ this->closeButton = ui.closeButton;
+ this->saveButton = ui.saveButton;
+ this->saveAsButton = ui.saveAsButton;
+ this->tabWidget = ui.tabWidget;
+ while (this->tabWidget->count() > 0)
+ {
+ this->tabWidget->removeTab(0);
+ }
+ connect(this->createButton, &QPushButton::clicked, this, [this]() {
+ static int count = 0;
+ this->tabWidget->addTab(new EditorWidgetItem(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]() {
+
+ });
+ connect(this->saveAsButton, &QPushButton::clicked, this, [this]() {
+
+ });
}
-EditorWidget::~EditorWidget()
-{
-}
-
-void EditorWidget::paintEvent(QPaintEvent *event)
-{
-}
-
-void EditorWidget::onLayerChange(LayerWrapper *layer)
-{
- displayLayer = layer;
- // TODO : notify InfoDisplayWidget and update
- dynamic_cast(tabWidget->widget(0))->setLayer(layer);
- this->update();
-}
-
-void EditorWidget::triggerRefreshPreview()
-{
- previewWindow->update();
-}
diff --git a/ArchitectureColoredPainting/src/Editor/EditorWidget.h b/ArchitectureColoredPainting/src/Editor/EditorWidget.h
index 6c56ded..6024513 100644
--- a/ArchitectureColoredPainting/src/Editor/EditorWidget.h
+++ b/ArchitectureColoredPainting/src/Editor/EditorWidget.h
@@ -1,39 +1,22 @@
#pragma once
-
-#include "ElementManager.h"
-#include "InfoDisplayWidget.h"
-#include "LayerManager.h"
-#include "LayerTreeWidget.h"
-#include "PreviewWindow.h"
+#include
#include "ui_EditorWidget.h"
-#include
-#include
-#include
-class EditorWidget : public QWidget
+class EditorWidget :
+ public QWidget
{
Q_OBJECT
-
- private:
- // DATA PART
- PreviewWindow *previewWindow;
- ElementManager *elementManager;
- LayerManager *layerManager;
- // QT GUI PART
- Ui::EditorWidgetClass ui;
- LayerTreeWidget *treeWidget;
- QTabWidget *tabWidget;
- InfoDisplayWidget *layerInfoDisplayWidget, *elementInfoDisplayWidget;
- // QT DATA PART
- LayerWrapper *displayLayer;
- GraphicElement *displayElement;
-
- public:
- EditorWidget(QWidget *parent = nullptr);
- ~EditorWidget();
- void paintEvent(QPaintEvent *event) override;
-
- private slots:
- void onLayerChange(LayerWrapper *layer);
- void triggerRefreshPreview();
+private:
+ Ui::EditorWidget ui;
+ QTabWidget* tabWidget;
+ QPushButton* createButton;
+ QPushButton* closeButton;
+ QPushButton* saveButton;
+ QPushButton* saveAsButton;
+
+public:
+ EditorWidget(QWidget* parent = nullptr);
+ ~EditorWidget()=default;
+
};
+
diff --git a/ArchitectureColoredPainting/src/Editor/EditorWidgetItem.cpp b/ArchitectureColoredPainting/src/Editor/EditorWidgetItem.cpp
new file mode 100644
index 0000000..abb1410
--- /dev/null
+++ b/ArchitectureColoredPainting/src/Editor/EditorWidgetItem.cpp
@@ -0,0 +1,63 @@
+#include "EditorWidgetItem.h"
+
+EditorWidgetItem::EditorWidgetItem(QWidget *parent) : QWidget(parent)
+{
+ QImage x;
+ displayLayer = nullptr;
+ displayElement = nullptr;
+ ui.setupUi(this);
+ previewWindow = ui.Preview;
+ treeWidget = ui.LayerTree;
+ tabWidget = ui.DisplayTab;
+ layerInfoDisplayWidget = dynamic_cast(tabWidget->widget(0));
+ elementInfoDisplayWidget = dynamic_cast(tabWidget->widget(1));
+ connect(treeWidget, &LayerTreeWidget::displayLayerChange, this, &EditorWidgetItem::onLayerChange);
+ connect(layerInfoDisplayWidget, &InfoDisplayWidget::requireRefreshPreview, this,
+ &EditorWidgetItem::triggerRefreshPreview);
+ connect(treeWidget, &LayerTreeWidget::requireRefreshPreview, this,
+ &EditorWidgetItem::triggerRefreshPreview);
+ connect(layerInfoDisplayWidget, &InfoDisplayWidget::requireSelfRefresh, layerInfoDisplayWidget, &InfoDisplayWidget::triggerSelfRefresh);
+ // &EditorWidget::triggerRefreshPreview);
+ // test
+ QFile settingFile;
+ settingFile.setFileName("../data.json");
+ settingFile.open(QFile::ReadOnly);
+ QByteArray setting = settingFile.readAll().trimmed();
+ QJsonParseError jError;
+ QJsonDocument jsonDoc(QJsonDocument::fromJson(setting, &jError));
+ qDebug() << jsonDoc.object().value("height").toDouble();
+ qDebug() << jError.errorString();
+ // end test
+ QJsonObject source = jsonDoc.object();
+ elementManager = new ElementManager(source,previewWindow->getRenderer());
+ layerManager = new LayerManager(source, elementManager);
+ qDebug() << layerManager->toJson();
+ previewWindow->initialize(layerManager,QSize(jsonDoc.object().value("width").toDouble(),jsonDoc.object().value("height").toDouble()));
+ if (layerManager->getRoot() != nullptr)
+ {
+ treeWidget->root = layerManager->getRoot();
+ treeWidget->refresh();
+ treeWidget->addTopLevelItem(treeWidget->root->getQTreeItem());
+ }
+}
+
+EditorWidgetItem::~EditorWidgetItem()
+{
+}
+
+void EditorWidgetItem::paintEvent(QPaintEvent *event)
+{
+}
+
+void EditorWidgetItem::onLayerChange(LayerWrapper *layer)
+{
+ displayLayer = layer;
+ // TODO : notify InfoDisplayWidget and update
+ dynamic_cast(tabWidget->widget(0))->setLayer(layer);
+ this->update();
+}
+
+void EditorWidgetItem::triggerRefreshPreview()
+{
+ previewWindow->update();
+}
diff --git a/ArchitectureColoredPainting/src/Editor/EditorWidgetItem.h b/ArchitectureColoredPainting/src/Editor/EditorWidgetItem.h
new file mode 100644
index 0000000..794743b
--- /dev/null
+++ b/ArchitectureColoredPainting/src/Editor/EditorWidgetItem.h
@@ -0,0 +1,39 @@
+#pragma once
+
+#include "ElementManager.h"
+#include "InfoDisplayWidget.h"
+#include "LayerManager.h"
+#include "LayerTreeWidget.h"
+#include "PreviewWindow.h"
+#include "ui_EditorWidgetItem.h"
+#include
+#include
+#include
+
+class EditorWidgetItem : public QWidget
+{
+ Q_OBJECT
+
+ private:
+ // DATA PART
+ PreviewWindow *previewWindow;
+ ElementManager *elementManager;
+ LayerManager *layerManager;
+ // QT GUI PART
+ Ui::EditorWidgetItem ui;
+ LayerTreeWidget *treeWidget;
+ QTabWidget *tabWidget;
+ InfoDisplayWidget *layerInfoDisplayWidget, *elementInfoDisplayWidget;
+ // QT DATA PART
+ LayerWrapper *displayLayer;
+ GraphicElement *displayElement;
+
+ public:
+ EditorWidgetItem(QWidget *parent = nullptr);
+ ~EditorWidgetItem();
+ void paintEvent(QPaintEvent *event) override;
+
+ private slots:
+ void onLayerChange(LayerWrapper *layer);
+ void triggerRefreshPreview();
+};
diff --git a/ArchitectureColoredPainting/src/Editor/LayerWrapper.cpp b/ArchitectureColoredPainting/src/Editor/LayerWrapper.cpp
index 28ba954..be40eaa 100644
--- a/ArchitectureColoredPainting/src/Editor/LayerWrapper.cpp
+++ b/ArchitectureColoredPainting/src/Editor/LayerWrapper.cpp
@@ -96,7 +96,6 @@ void FolderLayerWrapper::refresh()
{
cache.clear();
for (auto& child : children) {
- qDebug() << child.get();
cache.addPath(child.get()->getCache());
}
LayerWrapper::refresh();