Core: Introduce Tab-Bar workbench selector
This commit is contained in:
committed by
Chris Hennes
parent
9aa0fca3e4
commit
5d3de598e7
@@ -75,6 +75,39 @@ after FreeCAD launches</string>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<layout class="QHBoxLayout">
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="WorkbenchSelectorTypeLabel">
|
||||
<property name="text">
|
||||
<string>Workbench selector type:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QComboBox" name="WorkbenchSelectorType">
|
||||
<property name="toolTip">
|
||||
<string>Choose the workbench selector widget type (restart required).</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<layout class="QHBoxLayout">
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
@@ -111,7 +144,40 @@ after FreeCAD launches</string>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<item row="5" column="0">
|
||||
<layout class="QHBoxLayout">
|
||||
<property name="spacing">
|
||||
<number>6</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="WorkbenchSelectorItemLabel">
|
||||
<property name="text">
|
||||
<string>Workbench selector items style:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QComboBox" name="WorkbenchSelectorItem">
|
||||
<property name="toolTip">
|
||||
<string>Customize how the items are displayed.</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<widget class="Gui::PrefCheckBox" name="CheckBox_WbByTab">
|
||||
<property name="toolTip">
|
||||
<string>If checked, application will remember which workbench is active for each tab of the viewport</string>
|
||||
|
||||
@@ -249,7 +249,6 @@ DlgSettingsWorkbenchesImp::DlgSettingsWorkbenchesImp( QWidget* parent )
|
||||
|
||||
connect(ui->wbList->model(), &QAbstractItemModel::rowsMoved, this, &DlgSettingsWorkbenchesImp::wbItemMoved);
|
||||
connect(ui->AutoloadModuleCombo, qOverload<int>(&QComboBox::activated), this, &DlgSettingsWorkbenchesImp::onStartWbChanged);
|
||||
connect(ui->WorkbenchSelectorPosition, qOverload<int>(&QComboBox::activated), this, &DlgSettingsWorkbenchesImp::onWbSelectorChanged);
|
||||
connect(ui->CheckBox_WbByTab, &QCheckBox::toggled, this, &DlgSettingsWorkbenchesImp::onWbByTabToggled);
|
||||
}
|
||||
|
||||
@@ -355,19 +354,16 @@ void DlgSettingsWorkbenchesImp::resetSettingsToDefaults()
|
||||
{
|
||||
ParameterGrp::handle hGrp;
|
||||
hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Workbenches");
|
||||
//reset "Ordered" parameter
|
||||
hGrp->RemoveASCII("Ordered");
|
||||
//reset "Disabled" parameter
|
||||
hGrp->RemoveASCII("Disabled");
|
||||
hGrp->RemoveASCII("WorkbenchSelectorType");
|
||||
hGrp->RemoveASCII("WorkbenchSelectorItem");
|
||||
|
||||
hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/General");
|
||||
//reset "BackgroundAutoloadModules" parameter
|
||||
hGrp->RemoveASCII("BackgroundAutoloadModules");
|
||||
//reset "AutoloadModule" parameter
|
||||
hGrp->RemoveASCII("AutoloadModule");
|
||||
|
||||
hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/MainWindow");
|
||||
//reset "WSPosition" parameter
|
||||
hGrp->RemoveASCII("WSPosition");
|
||||
if (ui->WorkbenchSelectorPosition->currentIndex() != WorkbenchSwitcher::getIndex()) {
|
||||
requireRestart();
|
||||
@@ -504,20 +500,57 @@ void DlgSettingsWorkbenchesImp::changeEvent(QEvent *e)
|
||||
void DlgSettingsWorkbenchesImp::saveWorkbenchSelector()
|
||||
{
|
||||
//save workbench selector position
|
||||
int prevIndex = WorkbenchSwitcher::getIndex();
|
||||
auto index = ui->WorkbenchSelectorPosition->currentIndex();
|
||||
WorkbenchSwitcher::setIndex(index);
|
||||
if (prevIndex != index) {
|
||||
WorkbenchSwitcher::setIndex(index);
|
||||
requireRestart();
|
||||
}
|
||||
|
||||
//save workbench selector type
|
||||
ParameterGrp::handle hGrp;
|
||||
hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Workbenches");
|
||||
prevIndex = hGrp->GetInt("WorkbenchSelectorType", 0);
|
||||
index = ui->WorkbenchSelectorType->currentIndex();
|
||||
if (prevIndex != index) {
|
||||
hGrp->SetInt("WorkbenchSelectorType", index);
|
||||
requireRestart();
|
||||
}
|
||||
|
||||
// save workbench selector items style
|
||||
prevIndex = hGrp->GetInt("WorkbenchSelectorItem", 0);
|
||||
index = ui->WorkbenchSelectorItem->currentIndex();
|
||||
if (prevIndex != index) {
|
||||
hGrp->SetInt("WorkbenchSelectorItem", index);
|
||||
requireRestart();
|
||||
}
|
||||
}
|
||||
|
||||
void DlgSettingsWorkbenchesImp::loadWorkbenchSelector()
|
||||
{
|
||||
QSignalBlocker sigblk(ui->WorkbenchSelectorPosition);
|
||||
|
||||
//workbench selector position combobox setup
|
||||
ui->WorkbenchSelectorPosition->clear();
|
||||
ui->WorkbenchSelectorPosition->addItem(tr("Toolbar"));
|
||||
ui->WorkbenchSelectorPosition->addItem(tr("Left corner"));
|
||||
ui->WorkbenchSelectorPosition->addItem(tr("Right corner"));
|
||||
ui->WorkbenchSelectorPosition->setCurrentIndex(WorkbenchSwitcher::getIndex());
|
||||
|
||||
//workbench selector type setup
|
||||
ParameterGrp::handle hGrp;
|
||||
hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Workbenches");
|
||||
int widgetTypeIndex = hGrp->GetInt("WorkbenchSelectorType", 0);
|
||||
ui->WorkbenchSelectorType->clear();
|
||||
ui->WorkbenchSelectorType->addItem(tr("ComboBox"));
|
||||
ui->WorkbenchSelectorType->addItem(tr("TabBar"));
|
||||
ui->WorkbenchSelectorType->setCurrentIndex(widgetTypeIndex);
|
||||
|
||||
// workbench selector items style
|
||||
int itemStyleIndex = hGrp->GetInt("WorkbenchSelectorItem", 0);
|
||||
ui->WorkbenchSelectorItem->clear();
|
||||
ui->WorkbenchSelectorItem->addItem(tr("Icon & Text"));
|
||||
ui->WorkbenchSelectorItem->addItem(tr("Icon"));
|
||||
ui->WorkbenchSelectorItem->addItem(tr("Text"));
|
||||
ui->WorkbenchSelectorItem->setCurrentIndex(itemStyleIndex);
|
||||
}
|
||||
|
||||
void DlgSettingsWorkbenchesImp::wbToggled(const QString& wbName, bool enabled)
|
||||
@@ -618,21 +651,6 @@ void DlgSettingsWorkbenchesImp::onStartWbChanged(int index)
|
||||
}
|
||||
}
|
||||
|
||||
void DlgSettingsWorkbenchesImp::onWbSelectorChanged(int index)
|
||||
{
|
||||
Q_UNUSED(index);
|
||||
/**
|
||||
* TODO: move the following code somewhere else so that the restart request isn't asked
|
||||
* everytime the WorkbenchSwitcher is changed but only when the value that will be saved in
|
||||
* the parameter is actually different from the current one.
|
||||
* The code, as is now, will request the restart even if the use selects again the same value
|
||||
* that is already saved in the parameters
|
||||
*/
|
||||
if (ui->WorkbenchSelectorPosition->currentIndex() != WorkbenchSwitcher::getIndex()) {
|
||||
requireRestart();
|
||||
}
|
||||
}
|
||||
|
||||
void DlgSettingsWorkbenchesImp::onWbByTabToggled(bool val)
|
||||
{
|
||||
Q_UNUSED(val);
|
||||
|
||||
@@ -56,7 +56,6 @@ public:
|
||||
protected Q_SLOTS:
|
||||
void wbToggled(const QString& wbName, bool enabled);
|
||||
void wbItemMoved();
|
||||
void onWbSelectorChanged(int index);
|
||||
void onStartWbChanged(int index);
|
||||
void onWbByTabToggled(bool val);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user