diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index fba87998..1dd8774a 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -19,7 +19,7 @@ FILE(GLOB_RECURSE CPP_FILES ./*.cpp common/*.cpp model/*.cpp app/*.cpp)
FILE(GLOB_RECURSE CC_FILES ./*.cc)
FILE(GLOB_RECURSE UI_FILES ./*.ui)
FILE(GLOB_RECURSE QRC_FILES ./*.qrc)
-FILE(GLOB_RECURSE RC_FILES res/*.rc)
+FILE(GLOB_RECURSE RC_FILES ./res/*.rc)
SET(
TS_FILES
diff --git a/src/res/dyt.rc b/src/res/dyt.rc
index e69de29b..94305d7c 100644
--- a/src/res/dyt.rc
+++ b/src/res/dyt.rc
@@ -0,0 +1 @@
+IDI_ICON ICON DISCARDABLE ".\\res\\sys_icon.ico"
diff --git a/src/res/sys_icon.ico b/src/res/sys_icon.ico
new file mode 100644
index 00000000..1e673f96
Binary files /dev/null and b/src/res/sys_icon.ico differ
diff --git a/src/translations/Dyt_zh_CN.ts b/src/translations/Dyt_zh_CN.ts
index 908a6616..47e41ac9 100644
--- a/src/translations/Dyt_zh_CN.ts
+++ b/src/translations/Dyt_zh_CN.ts
@@ -1704,43 +1704,47 @@
-
- 1
-
-
-
-
+
Path
-
- d:/hysw
+
+ input workspace name
-
+
+ select workspace save path
+
+
+
+
...
-
+
describe
-
+
Sure
-
+
Cancel
-
+
+
+
+
+
warning
@@ -1750,12 +1754,32 @@
-
+
+ current path is contains current folder, do you want to overwrite it?
+
+
+
+
+ removeRecursively failed
+
+
+
+
+ mkpath failed
+
+
+
+
name is exits
-
+
+ create workSpace failed
+
+
+
+
save spaceWork directory
diff --git a/src/ui/WorkSpace/WorkSpaceDlg.cpp b/src/ui/WorkSpace/WorkSpaceDlg.cpp
index a1ecd957..df3d4283 100644
--- a/src/ui/WorkSpace/WorkSpaceDlg.cpp
+++ b/src/ui/WorkSpace/WorkSpaceDlg.cpp
@@ -50,6 +50,30 @@ void WorkSpaceDlg::OnSure() {
return;
}
+ QString workspacePath = QString("%1/%2").arg(savePath).arg(name);
+ QDir dir(workspacePath);
+ if (dir.exists()) {
+ LOG_WARN("current path is contains current folder, {}", workspacePath.toStdString());
+ if (QMessageBox::warning(this, tr("warning"), tr("current path is contains current folder, do you want to overwrite it?"),
+ QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) {
+ return;
+ }
+
+ if (!dir.removeRecursively()) {
+ LOG_WARN("removeRecursively {} failed", workspacePath.toStdString());
+ QMessageBox::warning(this, tr("warning"), tr("removeRecursively failed"));
+ return;
+ }
+
+ WorkSpaceManager::Get().Remove(name);
+ }
+
+ if (!dir.mkpath(workspacePath)) {
+ LOG_WARN("mkpath {} failed", workspacePath.toStdString());
+ QMessageBox::warning(this, tr("warning"), tr("mkpath failed"));
+ return;
+ }
+
if (WorkSpaceManager::Get().Contains(name)) {
LOG_WARN("name is exits");
QMessageBox::warning(this, tr("warning"), tr("name is exits"));
@@ -58,10 +82,14 @@ void WorkSpaceDlg::OnSure() {
WorkSpace* workSpace = WorkSpaceManager::Get().GetOrCreate(name);
workSpace->SetDescribe(ui->etDescribe->toPlainText());
- //workSpace->Save(savePath);
+ workspacePath += QString("/%1.dyt").arg(name);
+ if (!workSpace->Save(workspacePath)) {
+ LOG_ERROR("save workSpace failed");
+ QMessageBox::warning(this, tr("warning"), tr("create workSpace failed"));
+ return;
+ }
emit WorkSpaceManager::Get().WorkSpaceChanged(workSpace);
- workSpace->BuildDefault();
accept();
}
diff --git a/src/ui/WorkSpace/WorkSpaceDlg.ui b/src/ui/WorkSpace/WorkSpaceDlg.ui
index aea009e8..cc58cbd1 100644
--- a/src/ui/WorkSpace/WorkSpaceDlg.ui
+++ b/src/ui/WorkSpace/WorkSpaceDlg.ui
@@ -26,7 +26,10 @@
-
- 1
+
+
+
+ input workspace name
@@ -44,11 +47,14 @@
-
- d:/hysw
+
true
+
+ select workspace save path
+
-
diff --git a/src/workspace/WorkSpace.cpp b/src/workspace/WorkSpace.cpp
index 8306cc37..74cf36c0 100644
--- a/src/workspace/WorkSpace.cpp
+++ b/src/workspace/WorkSpace.cpp
@@ -157,18 +157,6 @@ bool WorkSpace::Save() {
return xmlWrite.Save(path_);
}
-bool WorkSpace::BuildDefault() {
- /* WorkSpaceItemGroup* item = new WorkSpaceItemGroup("root", this);
- AddItem(item, nullptr);
- WorkSpaceItemGroup* subItem = new WorkSpaceRiverGroup(tr("River0"));
- AddItem(subItem, item);
- item = subItem;
- subItem = new WorkSpaceRiverNetGroup(tr("RiverNet0"));
- AddItem(subItem, item);*/
-
- return true;
-}
-
bool WorkSpace::Load(const QString& dyt) {
WorkSpaceXMLParse parse(this);
bool success = parse.Load(dyt);
diff --git a/src/workspace/WorkSpace.h b/src/workspace/WorkSpace.h
index a82e75df..5301f331 100644
--- a/src/workspace/WorkSpace.h
+++ b/src/workspace/WorkSpace.h
@@ -70,7 +70,6 @@ public:
bool Save(const QString& path);
bool Save();
- bool BuildDefault();
bool Load(const QString& dyt);
void Unlaod();
diff --git a/src/workspace/WorkSpaceManager.cpp b/src/workspace/WorkSpaceManager.cpp
index b6ae588c..aa8d9c87 100644
--- a/src/workspace/WorkSpaceManager.cpp
+++ b/src/workspace/WorkSpaceManager.cpp
@@ -28,6 +28,19 @@ bool WorkSpaceManager::Contains(const QString& name) const {
return false;
}
+bool WorkSpaceManager::Remove(const QString& name) {
+ auto itor = workSpaces_.find(name);
+ if (workSpaces_.end() == itor) {
+ return true;
+ }
+
+ WorkSpace* workspace = itor->second;
+ if (nullptr != workspace) {
+ workspace->deleteLater();
+ }
+ workSpaces_.erase(itor);
+}
+
WorkSpace* WorkSpaceManager::LoadDyt(const QString& dyt, class OsgView* view) {
WorkSpace* workspace = new WorkSpace(view, this);
if (!workspace->Load(dyt)) {
diff --git a/src/workspace/WorkSpaceManager.h b/src/workspace/WorkSpaceManager.h
index e77d575a..1e485152 100644
--- a/src/workspace/WorkSpaceManager.h
+++ b/src/workspace/WorkSpaceManager.h
@@ -20,6 +20,7 @@ public:
void OnDestory();
bool Contains(const QString& name) const;
+ bool Remove(const QString& name);
WorkSpace* LoadDyt(const QString& dyt, class OsgView* view);
WorkSpace* GetOrCreate(const QString& path);
void SetCurrent(WorkSpace* workspace);