From a124ce4f8fc93d8281b5fef3b66ff74d993f8997 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sun, 27 Apr 2025 19:46:05 +0200 Subject: [PATCH] Gui: In DockWindowItems::addDockWidget replace the booleans with the enum class DockWindowOptions --- src/Gui/DockWindowManager.cpp | 6 +++--- src/Gui/DockWindowManager.h | 17 ++++++++++++++++- src/Gui/Workbench.cpp | 18 +++++++++--------- 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/src/Gui/DockWindowManager.cpp b/src/Gui/DockWindowManager.cpp index 69eb85409c..9a65987ec6 100644 --- a/src/Gui/DockWindowManager.cpp +++ b/src/Gui/DockWindowManager.cpp @@ -49,13 +49,13 @@ DockWindowItems::DockWindowItems() = default; DockWindowItems::~DockWindowItems() = default; -void DockWindowItems::addDockWidget(const char* name, Qt::DockWidgetArea pos, bool visibility, bool tabbed) +void DockWindowItems::addDockWidget(const char* name, Qt::DockWidgetArea pos, DockWindowOptions option) { DockWindowItem item; item.name = QString::fromUtf8(name); item.pos = pos; - item.visibility = visibility; - item.tabbed = tabbed; + item.visibility = option.testFlag(DockWindowOption::Visible); + item.tabbed = option.testFlag(DockWindowOption::HiddenTabbed); _items << item; } diff --git a/src/Gui/DockWindowManager.h b/src/Gui/DockWindowManager.h index c6ceb9440c..19cf6fe230 100644 --- a/src/Gui/DockWindowManager.h +++ b/src/Gui/DockWindowManager.h @@ -24,6 +24,7 @@ #define GUI_DOCKWINDOWMANAGER_H #include +#include #include class QDockWidget; @@ -31,6 +32,18 @@ class QWidget; namespace Gui { +enum class DockWindowOption +{ + // clang-format off + Hidden = 0, + Visible = 1, + HiddenTabbed = 2, + VisibleTabbed = 3 + // clang-format on +}; + +using DockWindowOptions = Base::Flags; + struct DockWindowItem { QString name; Qt::DockWidgetArea pos; @@ -44,7 +57,7 @@ public: DockWindowItems(); ~DockWindowItems(); - void addDockWidget(const char* name, Qt::DockWidgetArea pos, bool visibility, bool tabbed); + void addDockWidget(const char* name, Qt::DockWidgetArea pos, DockWindowOptions option); void setDockingArea(const char* name, Qt::DockWidgetArea pos); void setVisibility(const char* name, bool v); void setVisibility(bool v); @@ -122,4 +135,6 @@ private: } // namespace Gui +ENABLE_BITMASK_OPERATORS(Gui::DockWindowOption) + #endif // GUI_DOCKWINDOWMANAGER_H diff --git a/src/Gui/Workbench.cpp b/src/Gui/Workbench.cpp index f44bf2ea0e..6aecbb3b49 100644 --- a/src/Gui/Workbench.cpp +++ b/src/Gui/Workbench.cpp @@ -860,13 +860,13 @@ ToolBarItem* StdWorkbench::setupCommandBars() const DockWindowItems* StdWorkbench::setupDockWindows() const { auto root = new DockWindowItems(); - root->addDockWidget("Std_TreeView", Qt::LeftDockWidgetArea, true, false); - root->addDockWidget("Std_PropertyView", Qt::LeftDockWidgetArea, true, false); - root->addDockWidget("Std_SelectionView", Qt::LeftDockWidgetArea, false, false); - root->addDockWidget("Std_ComboView", Qt::LeftDockWidgetArea, true, true); - root->addDockWidget("Std_TaskView", Qt::LeftDockWidgetArea, true, true); - root->addDockWidget("Std_ReportView", Qt::BottomDockWidgetArea, false, true); - root->addDockWidget("Std_PythonView", Qt::BottomDockWidgetArea, false, true); + root->addDockWidget("Std_TreeView", Qt::LeftDockWidgetArea, Gui::DockWindowOption::Visible); + root->addDockWidget("Std_PropertyView", Qt::LeftDockWidgetArea, Gui::DockWindowOption::Visible); + root->addDockWidget("Std_SelectionView", Qt::LeftDockWidgetArea, Gui::DockWindowOption::Hidden); + root->addDockWidget("Std_ComboView", Qt::LeftDockWidgetArea, Gui::DockWindowOption::VisibleTabbed); + root->addDockWidget("Std_TaskView", Qt::LeftDockWidgetArea, Gui::DockWindowOption::VisibleTabbed); + root->addDockWidget("Std_ReportView", Qt::BottomDockWidgetArea, Gui::DockWindowOption::HiddenTabbed); + root->addDockWidget("Std_PythonView", Qt::BottomDockWidgetArea, Gui::DockWindowOption::HiddenTabbed); //Dagview through parameter. ParameterGrp::handle group = App::GetApplication().GetUserParameter(). @@ -874,7 +874,7 @@ DockWindowItems* StdWorkbench::setupDockWindows() const bool enabled = group->GetBool("Enabled", false); if (enabled) { - root->addDockWidget("Std_DAGView", Qt::RightDockWidgetArea, false, false); + root->addDockWidget("Std_DAGView", Qt::RightDockWidgetArea, Gui::DockWindowOption::Hidden); } return root; @@ -995,7 +995,7 @@ ToolBarItem* NoneWorkbench::setupCommandBars() const DockWindowItems* NoneWorkbench::setupDockWindows() const { auto root = new DockWindowItems(); - root->addDockWidget("Std_ReportView", Qt::BottomDockWidgetArea, true, false); + root->addDockWidget("Std_ReportView", Qt::BottomDockWidgetArea, Gui::DockWindowOption::Visible); return root; }