Gui: Add ability to easily lock Toolbars from UI
This adds the Std_ToggleToolBarLock action mentioned in #4992. It is exposed in the context menu of toolbar and also in the view -> toolbars app menu.
This commit is contained in:
@@ -36,6 +36,7 @@
|
||||
#include "Document.h"
|
||||
#include "DlgActivateWindowImp.h"
|
||||
#include "DockWindowManager.h"
|
||||
#include "ToolBarManager.h"
|
||||
|
||||
#include <Base/Exception.h>
|
||||
#include <App/Document.h>
|
||||
@@ -339,6 +340,46 @@ Action * StdCmdToolBarMenu::createAction()
|
||||
return pcAction;
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
// Std_DlgToggleToolBarLock
|
||||
//===========================================================================
|
||||
DEF_STD_CMD_C(StdCmdToggleToolBarLock)
|
||||
|
||||
StdCmdToggleToolBarLock::StdCmdToggleToolBarLock()
|
||||
:Command("Std_ToggleToolBarLock")
|
||||
{
|
||||
sGroup = "Tools";
|
||||
sMenuText = QT_TR_NOOP("Lock toolbars");
|
||||
sToolTipText = QT_TR_NOOP("Locks toolbar so they are no longer moveable");
|
||||
sWhatsThis = "Std_ToggleToolBarLock";
|
||||
sStatusTip = QT_TR_NOOP("Locks toolbar so they are no longer moveable");
|
||||
eType = 0;
|
||||
}
|
||||
|
||||
|
||||
Action* StdCmdToggleToolBarLock::createAction()
|
||||
{
|
||||
Action* action = Command::createAction();
|
||||
|
||||
action->setCheckable(true);
|
||||
action->setChecked(ToolBarManager::getInstance()->areToolBarsLocked(), true);
|
||||
|
||||
return action;
|
||||
}
|
||||
|
||||
void StdCmdToggleToolBarLock::activated(int iMsg)
|
||||
{
|
||||
Q_UNUSED(iMsg);
|
||||
|
||||
auto manager = ToolBarManager::getInstance();
|
||||
auto toggled = !manager->areToolBarsLocked();
|
||||
|
||||
manager->setToolBarsLocked(toggled);
|
||||
|
||||
getAction()->setChecked(toggled);
|
||||
}
|
||||
|
||||
|
||||
//===========================================================================
|
||||
// Std_ViewStatusBar
|
||||
//===========================================================================
|
||||
@@ -475,6 +516,7 @@ void CreateWindowStdCommands()
|
||||
rcCmdMgr.addCommand(new StdCmdWindows());
|
||||
rcCmdMgr.addCommand(new StdCmdDockViewMenu());
|
||||
rcCmdMgr.addCommand(new StdCmdToolBarMenu());
|
||||
rcCmdMgr.addCommand(new StdCmdToggleToolBarLock());
|
||||
rcCmdMgr.addCommand(new StdCmdWindowsMenu());
|
||||
rcCmdMgr.addCommand(new StdCmdStatusBar());
|
||||
rcCmdMgr.addCommand(new StdCmdUserInterface());
|
||||
|
||||
@@ -1387,6 +1387,10 @@ void MainWindow::onToolBarMenuAboutToShow()
|
||||
menu->addAction(action);
|
||||
}
|
||||
}
|
||||
|
||||
menu->addSeparator();
|
||||
|
||||
Application::Instance->commandManager().getCommandByName("Std_ToggleToolBarLock")->addTo(menu);
|
||||
}
|
||||
|
||||
void MainWindow::onDockWindowMenuAboutToShow()
|
||||
|
||||
@@ -408,11 +408,7 @@ void ToolBarManager::restoreState() const
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
hPref = App::GetApplication().GetUserParameter().GetGroup("BaseApp")
|
||||
->GetGroup("Preferences")->GetGroup("General");
|
||||
bool lockToolBars = hPref->GetBool("LockToolBars", false);
|
||||
setMovable(!lockToolBars);
|
||||
setMovable(!areToolBarsLocked());
|
||||
}
|
||||
|
||||
void ToolBarManager::retranslate() const
|
||||
@@ -426,6 +422,30 @@ void ToolBarManager::retranslate() const
|
||||
}
|
||||
}
|
||||
|
||||
bool Gui::ToolBarManager::areToolBarsLocked() const
|
||||
{
|
||||
auto hPref = App::GetApplication()
|
||||
.GetUserParameter()
|
||||
.GetGroup("BaseApp")
|
||||
->GetGroup("Preferences")
|
||||
->GetGroup("General");
|
||||
|
||||
return hPref->GetBool("LockToolBars", false);
|
||||
}
|
||||
|
||||
void Gui::ToolBarManager::setToolBarsLocked(bool locked) const
|
||||
{
|
||||
auto hPref = App::GetApplication()
|
||||
.GetUserParameter()
|
||||
.GetGroup("BaseApp")
|
||||
->GetGroup("Preferences")
|
||||
->GetGroup("General");
|
||||
|
||||
hPref->SetBool("LockToolBars", locked);
|
||||
|
||||
setMovable(!locked);
|
||||
}
|
||||
|
||||
void Gui::ToolBarManager::setMovable(bool moveable) const
|
||||
{
|
||||
for (auto& tb : toolBars()) {
|
||||
|
||||
@@ -103,14 +103,17 @@ public:
|
||||
void restoreState() const;
|
||||
void retranslate() const;
|
||||
|
||||
void setMovable(bool movable) const;
|
||||
bool areToolBarsLocked() const;
|
||||
void setToolBarsLocked(bool locked) const;
|
||||
|
||||
void setState(const QList<QString>& names, State state);
|
||||
void setState (const QString& name, State state);
|
||||
|
||||
void setState(const QString& name, State state);
|
||||
|
||||
protected:
|
||||
void setup(ToolBarItem*, QToolBar*) const;
|
||||
|
||||
void setMovable(bool movable) const;
|
||||
|
||||
ToolBarItem::DefaultVisibility getToolbarPolicy(const QToolBar *) const;
|
||||
|
||||
/** Returns a list of all currently existing toolbars. */
|
||||
|
||||
@@ -620,6 +620,7 @@ void StdWorkbench::setupContextMenu(const char* recipient, MenuItem* item) const
|
||||
|
||||
void StdWorkbench::createMainWindowPopupMenu(MenuItem* item) const
|
||||
{
|
||||
*item << "Std_ToggleToolBarLock";
|
||||
*item << "Std_DlgCustomize";
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user