From ff462c7bd9c78a8eee52e60af2fa66b0f91367dc Mon Sep 17 00:00:00 2001 From: jiegeaiai Date: Sat, 4 Jan 2025 23:41:53 +0800 Subject: [PATCH] add icon and new workspace --- src/CMakeLists.txt | 2 +- src/res/dyt.rc | 1 + src/res/sys_icon.ico | Bin 0 -> 4286 bytes src/translations/Dyt_zh_CN.ts | 54 +++++++++++++++++++++-------- src/ui/WorkSpace/WorkSpaceDlg.cpp | 32 +++++++++++++++-- src/ui/WorkSpace/WorkSpaceDlg.ui | 10 ++++-- src/workspace/WorkSpace.cpp | 12 ------- src/workspace/WorkSpace.h | 1 - src/workspace/WorkSpaceManager.cpp | 13 +++++++ src/workspace/WorkSpaceManager.h | 1 + 10 files changed, 93 insertions(+), 33 deletions(-) create mode 100644 src/res/sys_icon.ico 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 0000000000000000000000000000000000000000..1e673f962328ffafd84a80b5e17575355a303de5 GIT binary patch literal 4286 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 NAgd6x62-fz{{grpbiM!p literal 0 HcmV?d00001 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);