Gui: refactor MainWindow::initDockWindows

* split MainWindow::initDockWindows into smaller functions
* remove of legacy group for Tree view, Property view and DAG view
* simplify code logic
This commit is contained in:
wmayer
2023-10-13 14:07:29 +02:00
committed by wwmayer
parent a264a6fb5e
commit 46f8ad3d7f
2 changed files with 139 additions and 113 deletions

View File

@@ -537,119 +537,11 @@ static inline void _updateDockWidget(const char *name,
void MainWindow::initDockWindows(bool show)
{
bool treeView = false;
if (d->hiddenDockWindows.find("Std_TreeView") == std::string::npos) {
//work through parameter.
ParameterGrp::handle group = App::GetApplication().GetUserParameter().
GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("DockWindows")->GetGroup("TreeView");
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);
}
group->SetBool("Enabled", enabled); //ensure entry exists.
treeView = enabled;
_updateDockWidget("Std_TreeView", enabled, show, Qt::RightDockWidgetArea,
[](QWidget *widget) {
if(widget)
return widget;
TreeDockWidget* tree = new TreeDockWidget(0,getMainWindow());
tree->setObjectName(QStringLiteral(QT_TRANSLATE_NOOP("QDockWidget","Tree view")));
tree->setMinimumWidth(210);
widget = tree;
return widget;
});
}
// Property view
if (d->hiddenDockWindows.find("Std_PropertyView") == std::string::npos) {
//work through parameter.
ParameterGrp::handle group = App::GetApplication().GetUserParameter().
GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("DockWindows")->GetGroup("PropertyView");
bool enabled = treeView || group->GetBool("Enabled", false);
if (!treeView && enabled != group->GetBool("Enabled", true)) {
enabled = App::GetApplication().GetUserParameter().GetGroup("BaseApp")
->GetGroup("MainWindow")->GetGroup("DockWindows")->GetBool("Std_PropertyView", false);
}
group->SetBool("Enabled", enabled); //ensure entry exists.
_updateDockWidget("Std_PropertyView", enabled, show, Qt::RightDockWidgetArea,
[](QWidget *widget) {
if(widget)
return widget;
PropertyDockView* pcPropView = new PropertyDockView(0, getMainWindow());
pcPropView->setObjectName(QStringLiteral(QT_TRANSLATE_NOOP("QDockWidget","Property view")));
pcPropView->setMinimumWidth(210);
widget = pcPropView;
return widget;
});
}
// Combo view
if (d->hiddenDockWindows.find("Std_ComboView") == std::string::npos) {
bool enable = !treeView;
if (!enable) {
ParameterGrp::handle group = App::GetApplication().GetUserParameter().
GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("DockWindows")->GetGroup("ComboView");
enable = group->GetBool("Enabled", true);
}
_updateDockWidget("Std_ComboView", enable, show, Qt::LeftDockWidgetArea,
[](QWidget *widget) {
auto pcComboView = qobject_cast<ComboView*>(widget);
if(widget)
return widget;
pcComboView = new ComboView(nullptr, getMainWindow());
pcComboView->setObjectName(QStringLiteral(QT_TRANSLATE_NOOP("QDockWidget", "Model")));
pcComboView->setMinimumWidth(150);
widget = pcComboView;
return widget;
});
}
//Task List (task watcher).
if (d->hiddenDockWindows.find("Std_TaskWatcher") == std::string::npos) {
//work through parameter.
ParameterGrp::handle group = App::GetApplication().GetUserParameter().
GetGroup("BaseApp/Preferences/DockWindows/TaskWatcher");
bool enabled = group->GetBool("Enabled", false);
group->SetBool("Enabled", enabled); //ensure entry exists.
_updateDockWidget("Std_TaskWatcher", enabled, show, Qt::RightDockWidgetArea,
[](QWidget *widget) {
if(widget)
return widget;
widget = new TaskView::TaskView(getMainWindow());
widget->setObjectName(QStringLiteral(QT_TRANSLATE_NOOP("QDockWidget","Task List")));
return widget;
});
}
//Dag View.
if (d->hiddenDockWindows.find("Std_DAGView") == std::string::npos) {
//work through parameter.
// old group name
ParameterGrp::handle deprecateGroup = App::GetApplication().GetUserParameter().
GetGroup("BaseApp")->GetGroup("Preferences");
bool enabled = false;
if (deprecateGroup->HasGroup("DAGView")) {
deprecateGroup = deprecateGroup->GetGroup("DAGView");
enabled = deprecateGroup->GetBool("Enabled", enabled);
}
// new group name
ParameterGrp::handle group = App::GetApplication().GetUserParameter().
GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("DockWindows")->GetGroup("DAGView");
enabled = group->GetBool("Enabled", enabled);
group->SetBool("Enabled", enabled); //ensure entry exists.
_updateDockWidget("Std_DAGView", enabled, show, Qt::RightDockWidgetArea,
[](QWidget *widget) {
if(widget)
return widget;
DAG::DockWindow *dagDockWindow = new DAG::DockWindow(nullptr, getMainWindow());
dagDockWindow->setObjectName(QStringLiteral(QT_TRANSLATE_NOOP("QDockWidget","DAG View")));
widget = dagDockWindow;
return widget;
});
}
updateTreeView(show);
updatePropertyView(show);
updateComboView(show);
updateTaskView(show);
updateDAGView(show);
}
void MainWindow::setupDockWindows()
@@ -734,6 +626,135 @@ bool MainWindow::setupPythonConsole()
return false;
}
bool MainWindow::updateTreeView(bool show)
{
if (d->hiddenDockWindows.find("Std_TreeView") == std::string::npos) {
ParameterGrp::handle group = App::GetApplication().GetUserParameter().
GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("DockWindows")->GetGroup("TreeView");
bool enabled = group->GetBool("Enabled", false);
_updateDockWidget("Std_TreeView", enabled, show, Qt::RightDockWidgetArea,
[](QWidget *widget) {
if (widget) {
return widget;
}
auto tree = new TreeDockWidget(0,getMainWindow());
tree->setObjectName(QStringLiteral(QT_TRANSLATE_NOOP("QDockWidget","Tree view")));
tree->setMinimumWidth(210);
widget = tree;
return widget;
});
return enabled;
}
return false;
}
bool MainWindow::updatePropertyView(bool show)
{
// Property view
if (d->hiddenDockWindows.find("Std_PropertyView") == std::string::npos) {
ParameterGrp::handle group = App::GetApplication().GetUserParameter().
GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("DockWindows")->GetGroup("PropertyView");
bool enabled = group->GetBool("Enabled", false);
_updateDockWidget("Std_PropertyView", enabled, show, Qt::RightDockWidgetArea,
[](QWidget *widget) {
if (widget) {
return widget;
}
auto pcPropView = new PropertyDockView(0, getMainWindow());
pcPropView->setObjectName(QStringLiteral(QT_TRANSLATE_NOOP("QDockWidget","Property view")));
pcPropView->setMinimumWidth(210);
widget = pcPropView;
return widget;
});
return enabled;
}
return false;
}
bool MainWindow::updateTaskView(bool show)
{
//Task List (task watcher).
if (d->hiddenDockWindows.find("Std_TaskWatcher") == std::string::npos) {
//work through parameter.
ParameterGrp::handle group = App::GetApplication().GetUserParameter().
GetGroup("BaseApp/Preferences/DockWindows/TaskWatcher");
bool enabled = group->GetBool("Enabled", false);
group->SetBool("Enabled", enabled); //ensure entry exists.
_updateDockWidget("Std_TaskWatcher", enabled, show, Qt::RightDockWidgetArea,
[](QWidget *widget) {
if (widget) {
return widget;
}
widget = new TaskView::TaskView(getMainWindow());
widget->setObjectName(QStringLiteral(QT_TRANSLATE_NOOP("QDockWidget","Task List")));
return widget;
});
return enabled;
}
return false;
}
bool MainWindow::updateComboView(bool show)
{
// Combo view
if (d->hiddenDockWindows.find("Std_ComboView") == std::string::npos) {
ParameterGrp::handle group = App::GetApplication().GetUserParameter().
GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("DockWindows")->GetGroup("ComboView");
bool enable = group->GetBool("Enabled", true);
_updateDockWidget("Std_ComboView", enable, show, Qt::LeftDockWidgetArea,
[](QWidget *widget) {
auto pcComboView = qobject_cast<ComboView*>(widget);
if (widget) {
return widget;
}
pcComboView = new ComboView(nullptr, getMainWindow());
pcComboView->setObjectName(QStringLiteral(QT_TRANSLATE_NOOP("QDockWidget", "Model")));
pcComboView->setMinimumWidth(150);
widget = pcComboView;
return widget;
});
return enable;
}
return false;
}
bool MainWindow::updateDAGView(bool show)
{
//Dag View.
if (d->hiddenDockWindows.find("Std_DAGView") == std::string::npos) {
ParameterGrp::handle group = App::GetApplication().GetUserParameter().
GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("DockWindows")->GetGroup("DAGView");
bool enabled = group->GetBool("Enabled", false);
_updateDockWidget("Std_DAGView", enabled, show, Qt::RightDockWidgetArea,
[](QWidget *widget) {
if (widget) {
return widget;
}
auto dagDockWindow = new DAG::DockWindow(nullptr, getMainWindow());
dagDockWindow->setObjectName(QStringLiteral(QT_TRANSLATE_NOOP("QDockWidget","DAG View")));
widget = dagDockWindow;
return widget;
});
return enabled;
}
return false;
}
QMenu* MainWindow::createPopupMenu ()
{
QMenu* menu = QMainWindow::createPopupMenu();

View File

@@ -295,6 +295,11 @@ private:
bool setupSelectionView();
bool setupReportView();
bool setupPythonConsole();
bool updateTreeView(bool show);
bool updatePropertyView(bool show);
bool updateTaskView(bool show);
bool updateComboView(bool show);
bool updateDAGView(bool show);
static void renderDevBuildWarning(QPainter &painter, const QPoint startPosition, const QSize maxSize);