Sketcher_Dimension : Turn the command into a group-command to have at hand individual commands.

This commit is contained in:
Paddle
2023-08-31 18:31:46 +02:00
committed by Chris Hennes
parent 49e83787ef
commit d74e67336e
3 changed files with 79 additions and 3 deletions

View File

@@ -1031,6 +1031,75 @@ void CmdSketcherConstraint::activated(int /*iMsg*/)
getSelection().clearSelection();
}
// Comp for dimension tools =============================================
class CmdSketcherCompDimensionTools : public Gui::GroupCommand
{
public:
CmdSketcherCompDimensionTools()
: GroupCommand("Sketcher_CompDimensionTools")
{
sAppModule = "Sketcher";
sGroup = "Sketcher";
sMenuText = QT_TR_NOOP("Dimension");
sToolTipText = QT_TR_NOOP("Dimension tools.");
sWhatsThis = "Sketcher_CompDimensionTools";
sStatusTip = sToolTipText;
eType = ForEdit;
setCheckable(false);
addCommand("Sketcher_Dimension");
addCommand(); //separator
addCommand("Sketcher_ConstrainLock");
addCommand("Sketcher_ConstrainDistanceX");
addCommand("Sketcher_ConstrainDistanceY");
addCommand("Sketcher_ConstrainDistance");
addCommand("Sketcher_ConstrainDiameter");
addCommand("Sketcher_ConstrainRadius");
addCommand("Sketcher_ConstrainAngle");
addCommand("Sketcher_ConstrainSnellsLaw");
}
void updateAction(int mode) override
{
Gui::ActionGroup* pcAction = qobject_cast<Gui::ActionGroup*>(getAction());
if (!pcAction) {
return;
}
QList<QAction*> al = pcAction->actions();
int index = pcAction->property("defaultAction").toInt();
switch (mode) {
case Reference:
al[0]->setIcon(Gui::BitmapFactory().iconFromTheme("Constraint_Dimension_Driven"));
//al[1] is the separator
al[2]->setIcon(Gui::BitmapFactory().iconFromTheme("Constraint_Lock_Driven"));
al[3]->setIcon(Gui::BitmapFactory().iconFromTheme("Constraint_HorizontalDistance_Driven"));
al[4]->setIcon(Gui::BitmapFactory().iconFromTheme("Constraint_VerticalDistance_Driven"));
al[5]->setIcon(Gui::BitmapFactory().iconFromTheme("Constraint_Length_Driven"));
al[6]->setIcon(Gui::BitmapFactory().iconFromTheme("Constraint_Diameter_Driven"));
al[7]->setIcon(Gui::BitmapFactory().iconFromTheme("Constraint_Radius_Driven"));
al[8]->setIcon(Gui::BitmapFactory().iconFromTheme("Constraint_InternalAngle_Driven"));
getAction()->setIcon(al[index]->icon());
break;
case Driving:
al[0]->setIcon(Gui::BitmapFactory().iconFromTheme("Constraint_Dimension"));
//al[1] is the separator
al[2]->setIcon(Gui::BitmapFactory().iconFromTheme("Constraint_Lock"));
al[3]->setIcon(Gui::BitmapFactory().iconFromTheme("Constraint_HorizontalDistance"));
al[4]->setIcon(Gui::BitmapFactory().iconFromTheme("Constraint_VerticalDistance"));
al[5]->setIcon(Gui::BitmapFactory().iconFromTheme("Constraint_Length"));
al[6]->setIcon(Gui::BitmapFactory().iconFromTheme("Constraint_Diameter"));
al[7]->setIcon(Gui::BitmapFactory().iconFromTheme("Constraint_Radius"));
al[8]->setIcon(Gui::BitmapFactory().iconFromTheme("Constraint_InternalAngle"));
getAction()->setIcon(al[index]->icon());
break;
}
}
const char* className() const override { return "CmdSketcherCompDimensionTools"; }
};
// Dimension tool =======================================================
@@ -9928,6 +9997,7 @@ CmdSketcherToggleDrivingConstraint::CmdSketcherToggleDrivingConstraint()
rcCmdMgr.addCommandMode("ToggleDrivingConstraint", "Sketcher_ConstrainAngle");
rcCmdMgr.addCommandMode("ToggleDrivingConstraint", "Sketcher_CompConstrainRadDia");
rcCmdMgr.addCommandMode("ToggleDrivingConstraint", "Sketcher_Dimension");
rcCmdMgr.addCommandMode("ToggleDrivingConstraint", "Sketcher_CompDimensionTools");
// rcCmdMgr.addCommandMode("ToggleDrivingConstraint", "Sketcher_ConstrainSnellsLaw");
}
@@ -10161,4 +10231,5 @@ void CreateSketcherCommandsConstraints()
rcCmdMgr.addCommand(new CmdSketcherConstrainSnellsLaw());
rcCmdMgr.addCommand(new CmdSketcherToggleDrivingConstraint());
rcCmdMgr.addCommand(new CmdSketcherToggleActiveConstraint());
rcCmdMgr.addCommand(new CmdSketcherCompDimensionTools());
}

View File

@@ -185,8 +185,8 @@ Requires to re-enter edit mode to take effect.</string>
<widget class="QComboBox" name="dimensioningMode">
<property name="toolTip">
<string>Select the type of dimensioning constraints for your toolbar:
'Single tool': A single tool for all dimensioning constraints : Distance, Distance X / Y, Angle, Radius.
'Separated tools': Separated tools for each dimensioning constraint.
'Single tool': A single tool for all dimensioning constraints in the toolbar : Distance, Distance X / Y, Angle, Radius. (Others in dropdown)
'Separated tools': Individual tools for each dimensioning constraint.
'Both': You will have both the 'Dimension' tool and the separated tools.
This setting is only for the toolbar. Whichever you chose, all tools are always available in the menu and through shortcuts.</string>
</property>

View File

@@ -441,7 +441,12 @@ inline void SketcherAddWorkbenchConstraints<Gui::ToolBarItem>(Gui::ToolBarItem&
<< "Sketcher_ConstrainBlock"
<< "Separator";
if (hGrp->GetBool("SingleDimensioningTool", true)) {
cons << "Sketcher_Dimension";
if (! hGrp->GetBool("SeparatedDimensioningTools", false)) {
cons << "Sketcher_CompDimensionTools";
}
else {
cons << "Sketcher_Dimension";
}
}
if (hGrp->GetBool("SeparatedDimensioningTools", false)) {
cons << "Sketcher_ConstrainLock"