Gui: Add setting enabling workbench selector to be on the menubar. Restart required.
This commit is contained in:
@@ -35,6 +35,7 @@
|
||||
# include <QToolBar>
|
||||
# include <QToolButton>
|
||||
# include <QToolTip>
|
||||
# include <QMenuBar>
|
||||
#endif
|
||||
|
||||
#include <Base/Exception.h>
|
||||
@@ -529,16 +530,27 @@ WorkbenchGroup::~WorkbenchGroup()
|
||||
void WorkbenchGroup::addTo(QWidget *w)
|
||||
{
|
||||
refreshWorkbenchList();
|
||||
if (w->inherits("QToolBar")) {
|
||||
auto bar = qobject_cast<QToolBar*>(w);
|
||||
QComboBox* box = new WorkbenchComboBox(this, w);
|
||||
|
||||
auto setupBox = [&](QComboBox* box) {
|
||||
box->setIconSize(QSize(16, 16));
|
||||
box->setToolTip(_action->toolTip());
|
||||
box->setStatusTip(_action->statusTip());
|
||||
box->setWhatsThis(_action->whatsThis());
|
||||
box->addActions(_group->actions());
|
||||
connect(_group, SIGNAL(triggered(QAction*)), box, SLOT(onActivated (QAction*)));
|
||||
bar->addWidget(box);
|
||||
connect(_group, SIGNAL(triggered(QAction*)), box, SLOT(onActivated(QAction*)));
|
||||
};
|
||||
if (w->inherits("QToolBar")) {
|
||||
QComboBox* box = new WorkbenchComboBox(this, w);
|
||||
setupBox(box);
|
||||
|
||||
qobject_cast<QToolBar*>(w)->addWidget(box);
|
||||
}
|
||||
else if (w->inherits("QMenuBar")) {
|
||||
QComboBox* box = new WorkbenchComboBox(this, w);
|
||||
setupBox(box);
|
||||
|
||||
bool left = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/MainWindow")->GetBool("WSLeftCorner", true);
|
||||
qobject_cast<QMenuBar*>(w)->setCornerWidget(box, left ? Qt::TopLeftCorner : Qt::TopRightCorner);
|
||||
}
|
||||
else if (w->inherits("QMenu")) {
|
||||
auto menu = qobject_cast<QMenu*>(w);
|
||||
|
||||
@@ -508,6 +508,43 @@ this according to your screen size or personal taste</string>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<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="WorkbenchSelectorPositionLabel">
|
||||
<property name="text">
|
||||
<string>Workbench selector position :</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QComboBox" name="WorkbenchSelectorPosition">
|
||||
<property name="toolTip">
|
||||
<string>Customize where the workbench selector appears (restart required).
|
||||
|
||||
'Toolbar': In the toolbars, as a movable toolbar.
|
||||
'Left Corner': In the menu bar, on the left corner.
|
||||
'Right Corner': In the menu bar, on the right corner.</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
|
||||
@@ -215,6 +215,25 @@ void DlgGeneralImp::saveSettings()
|
||||
hGrp->GetGroup("TreeView")->SetBool("Enabled",treeView);
|
||||
hGrp->GetGroup("PropertyView")->SetBool("Enabled",propertyView);
|
||||
|
||||
//save workbench selector position
|
||||
hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/MainWindow");
|
||||
bool WSToolbar = false, WSLeftCorner = false, WSRightCorner = false;
|
||||
|
||||
switch (ui->WorkbenchSelectorPosition->currentIndex()) {
|
||||
case 0:
|
||||
WSToolbar = true;
|
||||
break;
|
||||
case 1:
|
||||
WSLeftCorner = true;
|
||||
break;
|
||||
case 2:
|
||||
WSRightCorner = true;
|
||||
break;
|
||||
}
|
||||
hGrp->SetBool("WSToolbar", WSToolbar);
|
||||
hGrp->SetBool("WSLeftCorner", WSLeftCorner);
|
||||
hGrp->SetBool("WSRightCorner", WSRightCorner);
|
||||
|
||||
hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/MainWindow");
|
||||
hGrp->SetBool("TiledBackground", ui->tiledBackground->isChecked());
|
||||
|
||||
@@ -284,6 +303,7 @@ void DlgGeneralImp::loadSettings()
|
||||
}
|
||||
ui->toolbarIconSize->setCurrentIndex(index);
|
||||
|
||||
//TreeMode combobox setup.
|
||||
ui->treeMode->clear();
|
||||
ui->treeMode->addItem(tr("Combo View"));
|
||||
ui->treeMode->addItem(tr("TreeView and PropertyView"));
|
||||
@@ -299,6 +319,23 @@ void DlgGeneralImp::loadSettings()
|
||||
}
|
||||
ui->treeMode->setCurrentIndex(index);
|
||||
|
||||
//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"));
|
||||
|
||||
hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/MainWindow");
|
||||
//bool WSToolbar = hGrp->GetBool("WSToolbar", true);
|
||||
bool WSLeftCorner = hGrp->GetBool("WSLeftCorner", false);
|
||||
bool WSRightCorner = hGrp->GetBool("WSRightCorner", false);
|
||||
index = 0;
|
||||
if (WSLeftCorner)
|
||||
index = 1;
|
||||
else if (WSRightCorner)
|
||||
index = 2;
|
||||
ui->WorkbenchSelectorPosition->setCurrentIndex(index);
|
||||
|
||||
hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/MainWindow");
|
||||
ui->tiledBackground->setChecked(hGrp->GetBool("TiledBackground", false));
|
||||
|
||||
|
||||
@@ -263,6 +263,8 @@ void MenuManager::setup(MenuItem* menuItems) const
|
||||
setup(*it, action->menu());
|
||||
}
|
||||
|
||||
setupMenuBarCornerWidgets();
|
||||
|
||||
// hide all menus which we don't need for the moment
|
||||
for (QList<QAction*>::Iterator it = actions.begin(); it != actions.end(); ++it) {
|
||||
(*it)->setVisible(false);
|
||||
@@ -338,6 +340,24 @@ void MenuManager::setup(MenuItem* item, QMenu* menu) const
|
||||
}
|
||||
}
|
||||
|
||||
void MenuManager::setupMenuBarCornerWidgets() const {
|
||||
/*Note: currently only workbench selector uses corner widget.*/
|
||||
QMenuBar* menuBar = getMainWindow()->menuBar();
|
||||
ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/MainWindow");
|
||||
|
||||
//Right corner widget
|
||||
if (hGrp->GetBool("WSRightCorner", false)) { //add workbench selector to menubar right corner widget.
|
||||
if (!menuBar->cornerWidget(Qt::TopRightCorner))
|
||||
Application::Instance->commandManager().addTo("Std_Workbench", menuBar);
|
||||
}
|
||||
|
||||
//Left corner widget
|
||||
if (hGrp->GetBool("WSLeftCorner", false)) { //add workbench selector to menubar left corner widget.
|
||||
if (!menuBar->cornerWidget(Qt::TopLeftCorner))
|
||||
Application::Instance->commandManager().addTo("Std_Workbench", menuBar);
|
||||
}
|
||||
}
|
||||
|
||||
void MenuManager::retranslate() const
|
||||
{
|
||||
QMenuBar* menuBar = getMainWindow()->menuBar();
|
||||
|
||||
@@ -77,6 +77,7 @@ class GuiExport MenuManager
|
||||
public:
|
||||
/** Sets up the menus of a given workbench. */
|
||||
void setup(MenuItem*) const;
|
||||
void setupMenuBarCornerWidgets() const;
|
||||
/// sets up a context menu out of item
|
||||
void setupContextMenu(MenuItem* item, QMenu &menu) const;
|
||||
void retranslate() const;
|
||||
|
||||
@@ -768,9 +768,12 @@ ToolBarItem* StdWorkbench::setupToolBars() const
|
||||
<< "Std_Refresh" << "Separator" << "Std_WhatsThis";
|
||||
|
||||
// Workbench switcher
|
||||
auto wb = new ToolBarItem( root );
|
||||
wb->setCommand("Workbench");
|
||||
*wb << "Std_Workbench";
|
||||
ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/MainWindow");
|
||||
if (hGrp->GetBool("WSToolbar", true)) {
|
||||
auto wb = new ToolBarItem(root);
|
||||
wb->setCommand("Workbench");
|
||||
*wb << "Std_Workbench";
|
||||
}
|
||||
|
||||
// Macro
|
||||
auto macro = new ToolBarItem( root );
|
||||
|
||||
Reference in New Issue
Block a user