diff --git a/src/translations/Dyt_zh_CN.ts b/src/translations/Dyt_zh_CN.ts
index 38757366..2f08f417 100644
--- a/src/translations/Dyt_zh_CN.ts
+++ b/src/translations/Dyt_zh_CN.ts
@@ -103,25 +103,30 @@
CodeEdtUI
-
- &file
-
-
-
-
- &Import the template
-
-
-
-
- &save
-
-
-
-
+
matlab editor
+
+
+ &bat
+
+
+
+
+ &Control
+
+
+
+
+ &Run
+
+
+
+
+ &Save
+
+
CodeEdtUIClass
@@ -446,27 +451,32 @@
MainFrame
-
+
Dyt
-
+
file manager
-
+
simu manager
-
+
play manager
-
+
+ window manager
+
+
+
+
system manager
@@ -630,14 +640,6 @@
-
- ModelBrowser
-
-
- model elements
-
-
-
ModelTreeWidget
@@ -951,43 +953,43 @@
QtConeWaveComponentManager
-
-
+
+
ConeWaveComponent
-
+
Height
-
+
Radius
-
+
levelCount
-
+
levelHeight
-
+
Color1
-
+
Color2
-
+
Color3
@@ -1093,28 +1095,28 @@
QtDashedLineComponentManager
-
-
+
+
DashedLineComponent
-
+
Start
-
+
End
-
+
Radius
-
+
Color
@@ -1130,12 +1132,12 @@
QtEntityPropertyManager
-
+
Name
-
+
Transform
@@ -1217,13 +1219,13 @@
QtMeshComponetManager
-
-
+
+
MeshComponent
-
+
Mesh
@@ -1273,13 +1275,13 @@
QtPathComponentManager
-
-
+
+
PathComponent
-
+
Path
@@ -1529,42 +1531,42 @@
QtWorkspacePropertyManager
-
+
Name
-
+
Description
-
+
Timestep
-
+
SimMatlab
-
+
MatlabParam
-
+
Wave
-
+
RD
-
+
Report
@@ -1687,6 +1689,14 @@
+
+ WindowManagerMenu
+
+
+ WindowManagerMenu
+
+
+
WorkSpaceDlg
diff --git a/src/ui/DockTitleBar.cpp b/src/ui/DockTitleBar.cpp
index ce749a1a..89b061a6 100644
--- a/src/ui/DockTitleBar.cpp
+++ b/src/ui/DockTitleBar.cpp
@@ -13,7 +13,7 @@ DockTitleBar::DockTitleBar(QWidget* parent)
: DockWidgetTitleBar(parent)
, ui(new Ui::DockTitleBar) {
ui->setupUi(this);
-
+ connect(ui->sys_close, &QPushButton::clicked, this, &DockTitleBar::signalClose);
}
DockTitleBar::~DockTitleBar() {
diff --git a/src/ui/DockWidget.cpp b/src/ui/DockWidget.cpp
index f373676f..6115d28e 100644
--- a/src/ui/DockWidget.cpp
+++ b/src/ui/DockWidget.cpp
@@ -1,17 +1,15 @@
#include "DockWidget.h"
-#include
#include
-#include
-#include
-#include
-#include
-#include
-#include
+
+#include "ui/Menu/WindowManagerMenu.h"
+#include "common/SpdLogger.h"
+#include "ui/MainFrame.h"
DockWidgetTitleBar::DockWidgetTitleBar(QWidget* parent)
: QWidget(parent) {
+
}
DockWidgetTitleBar::~DockWidgetTitleBar() {
@@ -31,6 +29,10 @@ QSize DockWidgetTitleBar::minimumSizeHint() const {
DockWidget::DockWidget(const QString& title, QWidget* parent)
: QDockWidget(title, parent) {
setFeatures(DockWidgetClosable | DockWidgetMovable | DockWidgetFloatable);
+ WindowManagerMenu* windowManagerMenu = MainFrame::Get().GetMenuManager("window_manager");
+ if (nullptr != windowManagerMenu) {
+ windowManagerMenu->AddDockWidget(this);
+ }
}
DockWidget::DockWidget(QWidget* parent)
@@ -50,7 +52,17 @@ void DockWidget::setWindowTitle(const QString& text) {
}
void DockWidget::SetDockWidgetTitleBar(DockWidgetTitleBar* titleBar) {
+ if (nullptr != titleBar_) {
+ disconnect(titleBar_, &DockWidgetTitleBar::signalClose, this, &DockWidget::close);
+ }
titleBar_ = titleBar;
+ if (nullptr == titleBar_) {
+ LOG_ERROR("DockWidget::SetDockWidgetTitleBar titleBar is nullptr");
+ return;
+ }
+
+ titleBar_->SetTitle(windowTitle());
+ connect(titleBar_, &DockWidgetTitleBar::signalClose, this, &DockWidget::close);
QDockWidget::setTitleBarWidget(titleBar_);
}
diff --git a/src/ui/DockWidget.h b/src/ui/DockWidget.h
index 1f08472a..5307480d 100644
--- a/src/ui/DockWidget.h
+++ b/src/ui/DockWidget.h
@@ -18,6 +18,9 @@ public:
return minimumSizeHint();
}
QSize minimumSizeHint() const override;
+
+Q_SIGNALS:
+ void signalClose();
};
class DockWidget : public QDockWidget {
diff --git a/src/ui/MainFrame.cpp b/src/ui/MainFrame.cpp
index cedba96a..b4bbfe7c 100644
--- a/src/ui/MainFrame.cpp
+++ b/src/ui/MainFrame.cpp
@@ -16,12 +16,14 @@
#include "ui/Menu/DynamicDisplayMenu.h"
#include "ui/Menu/SystemManagerMenu.h"
#include "ui/Menu/PlayManagerMenu.h"
+#include "ui/Menu/WindowManagerMenu.h"
#include "viewer/QtOsgViewWidget.h"
#include "chartPlot/FitCurveDialog.h"
#include "chartPlot/SurfaceDialog.h"
#include "ui/Menu/ChartPlotMenu.h" // lz 20140914
+#include "common/SpdLogger.h"
#include "ui_MainFrame.h"
@@ -107,6 +109,9 @@ void MainFrame::InitUI() {
PlayManagerMenu* playMenu = new PlayManagerMenu(this);
AddMenuWidget("play_manager", tr("play manager"), playMenu);
+ WindowManagerMenu* windowMenu = new WindowManagerMenu(this);
+ AddMenuWidget("window_manager", tr("window manager"), windowMenu);
+
SystemManagerMenu* system_ = new SystemManagerMenu(this);
AddMenuWidget("system_manager", tr("system manager"), system_);
@@ -140,3 +145,20 @@ void MainFrame::AddMenuWidget(const QString& name, const QString& text, QWidget*
int index = ui->menuWidget->addWidget(widget);
menuWidget_.insert(btn, index);
}
+
+QWidget* MainFrame::GetMenuWidget(const QString& name) {
+ int index = -1;
+ for (auto it = menuWidget_.begin(); it != menuWidget_.end(); ++it) {
+ if (it.key()->objectName() == name) {
+ index = it.value();
+ break;
+ }
+ };
+
+ if (index < 0) {
+ LOG_INFO("not find menu widget : {}", name.toLocal8Bit().constData());
+ return nullptr;
+ }
+
+ return ui->menuWidget->widget(index);
+}
diff --git a/src/ui/MainFrame.h b/src/ui/MainFrame.h
index b8dbec06..9b139c0d 100644
--- a/src/ui/MainFrame.h
+++ b/src/ui/MainFrame.h
@@ -20,6 +20,18 @@ public:
static MainFrame& Get();
+ template
+ T* GetMenuManager(const QString& name) {
+ QWidget* widget = GetMenuWidget(name);
+ if (widget) {
+ T* t = qobject_cast(widget);
+ if (t) {
+ return t;
+ }
+ }
+ return nullptr;
+ }
+
protected:
void paintEvent(QPaintEvent* event) override;
@@ -31,6 +43,7 @@ protected:
private:
void InitUI();
void AddMenuWidget(const QString& name, const QString& text, QWidget* widget);
+ QWidget* GetMenuWidget(const QString& name);
private:
Ui::MainFrame* ui;
diff --git a/src/ui/Menu/ViewManagerMenu.cpp b/src/ui/Menu/ViewManagerMenu.cpp
index 00d7fce4..fc2eb46d 100644
--- a/src/ui/Menu/ViewManagerMenu.cpp
+++ b/src/ui/Menu/ViewManagerMenu.cpp
@@ -1,5 +1,6 @@
#include "ViewManagerMenu.h"
+#include "ui/DockWidget.h"
#include "ui_ViewManagerMenu.h"
ViewManagerMenu::ViewManagerMenu(QWidget* parent)
diff --git a/src/ui/Menu/WindowManagerMenu.cpp b/src/ui/Menu/WindowManagerMenu.cpp
new file mode 100644
index 00000000..ee65a962
--- /dev/null
+++ b/src/ui/Menu/WindowManagerMenu.cpp
@@ -0,0 +1,49 @@
+#include "ui/Menu/WindowManagerMenu.h"
+
+#include
+
+#include "ui/MainFrame.h"
+#include "ui/DockWidget.h"
+#include "common/SpdLogger.h"
+
+#include "ui_WindowManagerMenu.h"
+
+const int DockWidgetRole = Qt::UserRole + 1;
+
+WindowManagerMenu::WindowManagerMenu(QWidget* parent)
+ : QWidget(parent)
+ , ui(new Ui::WindowManagerMenu) {
+ ui->setupUi(this);
+
+
+}
+
+WindowManagerMenu::~WindowManagerMenu() {
+ delete ui;
+}
+
+void WindowManagerMenu::AddDockWidget(DockWidget* dockWidget) {
+ if (nullptr == dockWidget) {
+ LOG_ERROR("dockWidget is nullptr");
+ return;
+ }
+
+ QListWidgetItem* item = new QListWidgetItem(dockWidget->windowTitle());
+ connect(dockWidget, &DockWidget::windowTitleChanged, [item](const QString& title) {
+ item->setText(title);
+ }
+ );
+
+ item->setCheckState(Qt::Checked);
+ connect(ui->listWidget, &QListWidget::itemClicked, [](QListWidgetItem* item) {
+ bool checked = !(item->checkState() == Qt::Checked);
+ item->setCheckState(checked ? Qt::Checked : Qt::Unchecked);
+ item->data(DockWidgetRole).value()->setVisible(checked);
+ });
+ item->setData(DockWidgetRole, QVariant::fromValue(dockWidget));
+ ui->listWidget->addItem(item);
+}
+
+void WindowManagerMenu::RemoveDockWidget(class DockWidget* dockWidget) {
+
+}
diff --git a/src/ui/Menu/WindowManagerMenu.h b/src/ui/Menu/WindowManagerMenu.h
new file mode 100644
index 00000000..586e2dad
--- /dev/null
+++ b/src/ui/Menu/WindowManagerMenu.h
@@ -0,0 +1,26 @@
+#pragma once
+
+#include
+
+#include "workspace/WorkSpace.h"
+
+namespace Ui {
+ class WindowManagerMenu;
+}
+
+class WindowManagerMenu : public QWidget {
+ Q_OBJECT
+
+public:
+ WindowManagerMenu(QWidget* parent = 0);
+ ~WindowManagerMenu() override;
+
+ void AddDockWidget(class DockWidget* dockWidget);
+ void RemoveDockWidget(class DockWidget* dockWidget);
+
+protected:
+
+
+private:
+ Ui::WindowManagerMenu* ui;
+};
\ No newline at end of file
diff --git a/src/ui/Menu/WindowManagerMenu.ui b/src/ui/Menu/WindowManagerMenu.ui
new file mode 100644
index 00000000..1a7225ee
--- /dev/null
+++ b/src/ui/Menu/WindowManagerMenu.ui
@@ -0,0 +1,47 @@
+
+
+ WindowManagerMenu
+
+
+
+ 0
+ 0
+ 847
+ 91
+
+
+
+ WindowManagerMenu
+
+
+ -
+
+
+ Qt::ScrollBarAlwaysOff
+
+
+ Qt::ScrollBarAlwaysOff
+
+
+ QListView::LeftToRight
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 408
+ 20
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/ModelBrowser.cpp b/src/ui/ModelBrowser.cpp
index cec6925e..3c65d8d0 100644
--- a/src/ui/ModelBrowser.cpp
+++ b/src/ui/ModelBrowser.cpp
@@ -28,7 +28,6 @@ void ModelBrowser::AttachDock(DockWidget* dockWidget) {
dockWidget->setWidget(this);
DockTitleBar* dockTitleBar = new DockTitleBar;
- dockTitleBar->SetTitle(tr("model elements"));
dockWidget->SetDockWidgetTitleBar(dockTitleBar);
}