From dc6ce5a08be8601c8f58feebba3876185030eee7 Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 16 Sep 2022 10:10:28 +0200 Subject: [PATCH] Gui: implement handling of Combo, Property and Tree view --- src/Gui/Control.cpp | 2 +- src/Gui/MainWindow.cpp | 36 ++++----- src/Gui/MainWindow.h | 2 +- .../PreferencePages/DlgSettingsGeneral.cpp | 75 +++++++++++-------- src/Gui/PreferencePages/DlgSettingsGeneral.h | 6 +- 5 files changed, 68 insertions(+), 53 deletions(-) diff --git a/src/Gui/Control.cpp b/src/Gui/Control.cpp index a617edfde5..2bfcd1ece4 100644 --- a/src/Gui/Control.cpp +++ b/src/Gui/Control.cpp @@ -80,7 +80,7 @@ QTabBar* ControlSingleton::findTabBar(QDockWidget* widget) const if (count > 1) { QList bars = getMainWindow()->findChildren(); for (auto it : bars) { - if (it->count() == count) { + if (it->count() <= count) { for (int i = 0; i < count; i++) { if (it->tabText(i) == widget->windowTitle()) { return it; diff --git a/src/Gui/MainWindow.cpp b/src/Gui/MainWindow.cpp index 20f3d75fe4..a162e7e645 100644 --- a/src/Gui/MainWindow.cpp +++ b/src/Gui/MainWindow.cpp @@ -469,11 +469,11 @@ void MainWindow::setupDockWindows() if (ht != config.end()) hiddenDockWindows = ht->second; - bool treeView = setupTreeView(hiddenDockWindows); - bool propertyView = setupPropertyView(hiddenDockWindows); + setupTreeView(hiddenDockWindows); + setupPropertyView(hiddenDockWindows); setupTaskView(hiddenDockWindows); setupSelectionView(hiddenDockWindows); - setupComboView(hiddenDockWindows, !treeView || !propertyView); + setupComboView(hiddenDockWindows); // Report view must be created before PythonConsole! setupReportView(hiddenDockWindows); @@ -492,7 +492,7 @@ bool MainWindow::setupTreeView(const std::string& hiddenDockWindows) bool enabled = group->GetBool("Enabled", true); if (enabled != group->GetBool("Enabled", false)) { enabled = App::GetApplication().GetUserParameter().GetGroup("BaseApp") - ->GetGroup("MainWindow")->GetGroup("DockWindows")->GetBool("Std_TreeView",false); + ->GetGroup("MainWindow")->GetGroup("DockWindows")->GetBool("Std_TreeView", true); } group->SetBool("Enabled", enabled); //ensure entry exists. if (enabled) { @@ -537,7 +537,7 @@ bool MainWindow::setupPropertyView(const std::string& hiddenDockWindows) bool enabled = group->GetBool("Enabled", true); if (enabled != group->GetBool("Enabled", false)) { enabled = App::GetApplication().GetUserParameter().GetGroup("BaseApp") - ->GetGroup("MainWindow")->GetGroup("DockWindows")->GetBool("Std_PropertyView",false); + ->GetGroup("MainWindow")->GetGroup("DockWindows")->GetBool("Std_PropertyView", true); } group->SetBool("Enabled", enabled); //ensure entry exists. if (enabled) { @@ -572,23 +572,23 @@ bool MainWindow::setupSelectionView(const std::string& hiddenDockWindows) return false; } -bool MainWindow::setupComboView(const std::string& hiddenDockWindows, bool enable) +bool MainWindow::setupComboView(const std::string& hiddenDockWindows) { // Combo view if (hiddenDockWindows.find("Std_ComboView") == std::string::npos) { - if (!enable) { - ParameterGrp::handle group = App::GetApplication().GetUserParameter(). - GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("DockWindows")->GetGroup("ComboView"); - enable = group->GetBool("Enabled", true); + ParameterGrp::handle group = App::GetApplication().GetUserParameter(). + GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("DockWindows")->GetGroup("ComboView"); + bool enable = group->GetBool("Enabled", false); + + if (enable) { + auto pcComboView = new ComboView(nullptr, this); + pcComboView->setObjectName(QString::fromLatin1(QT_TRANSLATE_NOOP("QDockWidget", "Model"))); + pcComboView->setMinimumWidth(150); + + DockWindowManager* pDockMgr = DockWindowManager::instance(); + pDockMgr->registerDockWindow("Std_ComboView", pcComboView); + return true; } - - auto pcComboView = new ComboView(nullptr, this); - pcComboView->setObjectName(QString::fromLatin1(QT_TRANSLATE_NOOP("QDockWidget", "Model"))); - pcComboView->setMinimumWidth(150); - - DockWindowManager* pDockMgr = DockWindowManager::instance(); - pDockMgr->registerDockWindow("Std_ComboView", pcComboView); - return true; } return false; diff --git a/src/Gui/MainWindow.h b/src/Gui/MainWindow.h index 28d11bfb8a..9b8405a4fb 100644 --- a/src/Gui/MainWindow.h +++ b/src/Gui/MainWindow.h @@ -287,7 +287,7 @@ private: bool setupTaskView(const std::string&); bool setupPropertyView(const std::string&); bool setupSelectionView(const std::string&); - bool setupComboView(const std::string&, bool enable); + bool setupComboView(const std::string&); bool setupDAGView(const std::string&); bool setupReportView(const std::string&); bool setupPythonConsole(const std::string&); diff --git a/src/Gui/PreferencePages/DlgSettingsGeneral.cpp b/src/Gui/PreferencePages/DlgSettingsGeneral.cpp index f2e26029fd..cad62f17ff 100644 --- a/src/Gui/PreferencePages/DlgSettingsGeneral.cpp +++ b/src/Gui/PreferencePages/DlgSettingsGeneral.cpp @@ -226,23 +226,7 @@ void DlgSettingsGeneral::saveSettings() int blinkTime{hGrp->GetBool("EnableCursorBlinking", true) ? -1 : 0}; qApp->setCursorFlashTime(blinkTime); - hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/DockWindows"); - bool treeView=false; - bool propertyView=false; - bool comboView=true; - switch(ui->treeMode->currentIndex()) { - case 1: - treeView = propertyView = true; - comboView = false; - break; - case 2: - comboView = true; - treeView = propertyView = true; - break; - } - hGrp->GetGroup("ComboView")->SetBool("Enabled",comboView); - hGrp->GetGroup("TreeView")->SetBool("Enabled",treeView); - hGrp->GetGroup("PropertyView")->SetBool("Enabled",propertyView); + saveDockWindowVisibility(); hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/MainWindow"); hGrp->SetBool("TiledBackground", ui->tiledBackground->isChecked()); @@ -330,20 +314,7 @@ void DlgSettingsGeneral::loadSettings() ui->toolbarIconSize->setCurrentIndex(index); //TreeMode combobox setup. - ui->treeMode->clear(); - ui->treeMode->addItem(tr("Combo View")); - ui->treeMode->addItem(tr("TreeView and PropertyView")); - ui->treeMode->addItem(tr("Both")); - - hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/DockWindows"); - bool propertyView = hGrp->GetGroup("PropertyView")->GetBool("Enabled",false); - bool treeView = hGrp->GetGroup("TreeView")->GetBool("Enabled",false); - bool comboView = hGrp->GetGroup("ComboView")->GetBool("Enabled",true); - index = 0; - if(propertyView || treeView) { - index = comboView?2:1; - } - ui->treeMode->setCurrentIndex(index); + loadDockWindowVisibility(); hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/MainWindow"); ui->tiledBackground->setChecked(hGrp->GetBool("TiledBackground", false)); @@ -427,6 +398,48 @@ void DlgSettingsGeneral::changeEvent(QEvent *event) } } +void DlgSettingsGeneral::saveDockWindowVisibility() +{ + auto hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/DockWindows"); + bool treeView = hGrp->GetGroup("TreeView")->GetBool("Enabled", true); + bool propertyView = hGrp->GetGroup("PropertyView")->GetBool("Enabled", true); + bool comboView = hGrp->GetGroup("ComboView")->GetBool("Enabled", false); + switch (ui->treeMode->currentIndex()) { + case 0: + comboView = true; + treeView = propertyView = false; + break; + case 1: + treeView = propertyView = true; + comboView = false; + break; + } + + hGrp->GetGroup("ComboView")->SetBool("Enabled", comboView); + hGrp->GetGroup("TreeView")->SetBool("Enabled", treeView); + hGrp->GetGroup("PropertyView")->SetBool("Enabled", propertyView); +} + +void DlgSettingsGeneral::loadDockWindowVisibility() +{ + ui->treeMode->clear(); + ui->treeMode->addItem(tr("Combo View")); + ui->treeMode->addItem(tr("TreeView and PropertyView")); + + auto hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/DockWindows"); + bool propertyView = hGrp->GetGroup("PropertyView")->GetBool("Enabled", true); + bool treeView = hGrp->GetGroup("TreeView")->GetBool("Enabled", true); + bool comboView = hGrp->GetGroup("ComboView")->GetBool("Enabled", false); + int index = -1; + if (propertyView || treeView) { + index = 1; + } + else if (comboView) { + index = 0; + } + ui->treeMode->setCurrentIndex(index); +} + void DlgSettingsGeneral::recreatePreferencePackMenu() { ui->PreferencePacks->setRowCount(0); // Begin by clearing whatever is there diff --git a/src/Gui/PreferencePages/DlgSettingsGeneral.h b/src/Gui/PreferencePages/DlgSettingsGeneral.h index 2b7313335b..1c3cc6ad0f 100644 --- a/src/Gui/PreferencePages/DlgSettingsGeneral.h +++ b/src/Gui/PreferencePages/DlgSettingsGeneral.h @@ -25,7 +25,7 @@ #ifndef GUI_DIALOG_DLGSETTINGSGENERAL_H #define GUI_DIALOG_DLGSETTINGSGENERAL_H - + #include #include #include @@ -72,6 +72,8 @@ public Q_SLOTS: void onUnitSystemIndexChanged(int index); private: + void saveDockWindowVisibility(); + void loadDockWindowVisibility(); void setRecentFileSize(); void saveAsNewPreferencePack(); void revertToSavedConfig(); @@ -91,4 +93,4 @@ private: } // namespace Dialog } // namespace Gui -#endif // GUI_DIALOG_DLGSETTINGSGENERAL_H +#endif // GUI_DIALOG_DLGSETTINGSGENERAL_H