Gui: implement handling of Combo, Property and Tree view

This commit is contained in:
wmayer
2022-09-16 10:10:28 +02:00
parent 4fcddc71ab
commit dc6ce5a08b
5 changed files with 68 additions and 53 deletions

View File

@@ -80,7 +80,7 @@ QTabBar* ControlSingleton::findTabBar(QDockWidget* widget) const
if (count > 1) {
QList<QTabBar*> bars = getMainWindow()->findChildren<QTabBar*>();
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;

View File

@@ -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;

View File

@@ -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&);

View File

@@ -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

View File

@@ -25,7 +25,7 @@
#ifndef GUI_DIALOG_DLGSETTINGSGENERAL_H
#define GUI_DIALOG_DLGSETTINGSGENERAL_H
#include <Gui/PropertyPage.h>
#include <memory>
#include <string>
@@ -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