Gui: Allow to hide toolbars that are not needed.
In particular this hides edit-mode sketcher toolbars when in non-edit-mode.
And hides non-edit-mode toolbar when in edit-mode.
It also hides the structure toolbar when in edit-mode (as it is completely deactivated)
This commit is contained in:
@@ -66,6 +66,7 @@
|
||||
#include <Gui/Utilities.h>
|
||||
#include <Gui/View3DInventor.h>
|
||||
#include <Gui/View3DInventorViewer.h>
|
||||
#include "Gui/ToolBarManager.h"
|
||||
|
||||
#include <Mod/Part/App/Geometry.h>
|
||||
#include <Mod/Sketcher/App/GeoList.h>
|
||||
@@ -84,6 +85,7 @@
|
||||
#include "ViewProviderSketchGeometryExtension.h"
|
||||
|
||||
|
||||
|
||||
FC_LOG_LEVEL_INIT("Sketch",true,true)
|
||||
|
||||
using namespace SketcherGui;
|
||||
@@ -314,7 +316,6 @@ ViewProviderSketch::ViewProviderSketch()
|
||||
rubberband = std::make_unique<Gui::Rubberband>();
|
||||
|
||||
cameraSensor.setFunction(&ViewProviderSketch::camSensCB);
|
||||
|
||||
}
|
||||
|
||||
ViewProviderSketch::~ViewProviderSketch()
|
||||
@@ -2749,6 +2750,25 @@ void ViewProviderSketch::setupContextMenu(QMenu *menu, QObject *receiver, const
|
||||
Gui::ViewProvider::setupContextMenu(menu, receiver, member);
|
||||
}
|
||||
|
||||
namespace
|
||||
{
|
||||
inline const QStringList editModeToolbarNames()
|
||||
{
|
||||
return QStringList{ QString::fromLatin1("Sketcher Edit Mode"),
|
||||
QString::fromLatin1("Sketcher geometries"),
|
||||
QString::fromLatin1("Sketcher constraints"),
|
||||
QString::fromLatin1("Sketcher tools"),
|
||||
QString::fromLatin1("Sketcher B-spline tools"),
|
||||
QString::fromLatin1("Sketcher virtual space") };
|
||||
}
|
||||
|
||||
inline const QStringList nonEditModeToolbarNames()
|
||||
{
|
||||
return QStringList{ QString::fromLatin1("Structure"),
|
||||
QString::fromLatin1("Sketcher") };
|
||||
}
|
||||
}
|
||||
|
||||
bool ViewProviderSketch::setEdit(int ModNum)
|
||||
{
|
||||
// When double-clicking on the item for this sketch the
|
||||
@@ -2891,6 +2911,14 @@ bool ViewProviderSketch::setEdit(int ModNum)
|
||||
|
||||
Gui::getMainWindow()->installEventFilter(listener);
|
||||
|
||||
/*Modify toolbars dynamically.
|
||||
First save state of toolbars in case user changed visibility of a toolbar but he's not changing the wb.
|
||||
This happens in someone works directly from sketcher, changing from edit mode to not-edit-mode*/
|
||||
Gui::ToolBarManager::getInstance()->saveState();
|
||||
|
||||
Gui::ToolBarManager::getInstance()->setToolbarVisibility(true, editModeToolbarNames());
|
||||
Gui::ToolBarManager::getInstance()->setToolbarVisibility(false, nonEditModeToolbarNames());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -3021,6 +3049,15 @@ void ViewProviderSketch::UpdateSolverInformation()
|
||||
void ViewProviderSketch::unsetEdit(int ModNum)
|
||||
{
|
||||
Q_UNUSED(ModNum);
|
||||
|
||||
/*Modify toolbars dynamically.
|
||||
First save state of toolbars in case user changed visibility of a toolbar but he's not changing the wb.
|
||||
This happens in someone works directly from sketcher, changing from edit mode to not-edit-mode*/
|
||||
Gui::ToolBarManager::getInstance()->saveState();
|
||||
|
||||
Gui::ToolBarManager::getInstance()->setToolbarVisibility(false, editModeToolbarNames());
|
||||
Gui::ToolBarManager::getInstance()->setToolbarVisibility(true, nonEditModeToolbarNames());
|
||||
|
||||
TightGrid.setValue(true);
|
||||
|
||||
if(listener) {
|
||||
|
||||
@@ -114,27 +114,27 @@ Gui::ToolBarItem* Workbench::setupToolBars() const
|
||||
sketcher->setCommand("Sketcher");
|
||||
addSketcherWorkbenchSketchActions(*sketcher);
|
||||
|
||||
Gui::ToolBarItem* sketcherEditMode = new Gui::ToolBarItem(root);
|
||||
sketcherEditMode->setCommand("Sketcher");
|
||||
Gui::ToolBarItem* sketcherEditMode = new Gui::ToolBarItem(root, Gui::ToolBarItem::HideStyle::FORCE_HIDE);
|
||||
sketcherEditMode->setCommand("Sketcher Edit Mode");
|
||||
addSketcherWorkbenchSketchEditModeActions(*sketcherEditMode);
|
||||
|
||||
Gui::ToolBarItem* geom = new Gui::ToolBarItem(root);
|
||||
Gui::ToolBarItem* geom = new Gui::ToolBarItem(root, Gui::ToolBarItem::HideStyle::FORCE_HIDE);
|
||||
geom->setCommand("Sketcher geometries");
|
||||
addSketcherWorkbenchGeometries(*geom);
|
||||
|
||||
Gui::ToolBarItem* cons = new Gui::ToolBarItem(root);
|
||||
Gui::ToolBarItem* cons = new Gui::ToolBarItem(root, Gui::ToolBarItem::HideStyle::FORCE_HIDE);
|
||||
cons->setCommand("Sketcher constraints");
|
||||
addSketcherWorkbenchConstraints(*cons);
|
||||
|
||||
Gui::ToolBarItem* consaccel = new Gui::ToolBarItem(root);
|
||||
Gui::ToolBarItem* consaccel = new Gui::ToolBarItem(root, Gui::ToolBarItem::HideStyle::FORCE_HIDE);
|
||||
consaccel->setCommand("Sketcher tools");
|
||||
addSketcherWorkbenchTools(*consaccel);
|
||||
|
||||
Gui::ToolBarItem* bspline = new Gui::ToolBarItem(root);
|
||||
Gui::ToolBarItem* bspline = new Gui::ToolBarItem(root, Gui::ToolBarItem::HideStyle::FORCE_HIDE);
|
||||
bspline->setCommand("Sketcher B-spline tools");
|
||||
addSketcherWorkbenchBSplines(*bspline);
|
||||
|
||||
Gui::ToolBarItem* virtualspace = new Gui::ToolBarItem(root);
|
||||
Gui::ToolBarItem* virtualspace = new Gui::ToolBarItem(root, Gui::ToolBarItem::HideStyle::FORCE_HIDE);
|
||||
virtualspace->setCommand("Sketcher virtual space");
|
||||
addSketcherWorkbenchVirtualSpace(*virtualspace);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user