Sketcher: Joint Line and Polyline in a command group.

This commit is contained in:
PaddleStroke
2024-04-17 14:48:00 +02:00
committed by Chris Hennes
parent 7e0cf657f4
commit cb0a2d2809
3 changed files with 107 additions and 37 deletions

View File

@@ -81,11 +81,12 @@ CmdSketcherToggleConstruction::CmdSketcherToggleConstruction()
// list of toggle construction commands
Gui::CommandManager& rcCmdMgr = Gui::Application::Instance->commandManager();
rcCmdMgr.addCommandMode("ToggleConstruction", "Sketcher_CreateLine");
rcCmdMgr.addCommandMode("ToggleConstruction", "Sketcher_CreatePolyline");
rcCmdMgr.addCommandMode("ToggleConstruction", "Sketcher_CompLine");
rcCmdMgr.addCommandMode("ToggleConstruction", "Sketcher_CreateRectangle");
rcCmdMgr.addCommandMode("ToggleConstruction", "Sketcher_CreateRectangle_Center");
rcCmdMgr.addCommandMode("ToggleConstruction", "Sketcher_CreateOblong");
rcCmdMgr.addCommandMode("ToggleConstruction", "Sketcher_CompCreateRectangles");
rcCmdMgr.addCommandMode("ToggleConstruction", "Sketcher_CreatePolyline");
rcCmdMgr.addCommandMode("ToggleConstruction", "Sketcher_CreateArcSlot");
rcCmdMgr.addCommandMode("ToggleConstruction", "Sketcher_CreateSlot");
rcCmdMgr.addCommandMode("ToggleConstruction", "Sketcher_CompSlot");

View File

@@ -102,6 +102,60 @@ GeometryCreationMode geometryCreationMode = GeometryCreationMode::Normal;
/* Sketch commands =======================================================*/
// Comp for line tools =============================================
class CmdSketcherCompLine: public Gui::GroupCommand
{
public:
CmdSketcherCompLine()
: GroupCommand("Sketcher_CompLine")
{
sAppModule = "Sketcher";
sGroup = "Sketcher";
sMenuText = QT_TR_NOOP("Create polyline");
sToolTipText = QT_TR_NOOP("Create a polyline in the sketch. 'M' Key cycles behaviour");
sWhatsThis = "Sketcher_CompLine";
sStatusTip = sToolTipText;
eType = ForEdit;
setCheckable(false);
addCommand("Sketcher_CreatePolyline");
addCommand("Sketcher_CreateLine");
}
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 (static_cast<GeometryCreationMode>(mode)) {
case GeometryCreationMode::Normal:
al[0]->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_CreatePolyline"));
al[1]->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_CreateLine"));
getAction()->setIcon(al[index]->icon());
break;
case GeometryCreationMode::Construction:
al[0]->setIcon(
Gui::BitmapFactory().iconFromTheme("Sketcher_CreatePolyline_Constr"));
al[1]->setIcon(Gui::BitmapFactory().iconFromTheme("Sketcher_CreateLine_Constr"));
getAction()->setIcon(al[index]->icon());
break;
}
}
const char* className() const override
{
return "CmdSketcherCompLine";
}
};
// Line ================================================================
DEF_STD_CMD_AU(CmdSketcherCreateLine)
CmdSketcherCreateLine::CmdSketcherCreateLine()
@@ -131,6 +185,37 @@ bool CmdSketcherCreateLine::isActive()
return isCommandActive(getActiveGuiDocument());
}
// Polyline ================================================================
DEF_STD_CMD_AU(CmdSketcherCreatePolyline)
CmdSketcherCreatePolyline::CmdSketcherCreatePolyline()
: Command("Sketcher_CreatePolyline")
{
sAppModule = "Sketcher";
sGroup = "Sketcher";
sMenuText = QT_TR_NOOP("Create polyline");
sToolTipText = QT_TR_NOOP("Create a polyline in the sketch. 'M' Key cycles behaviour");
sWhatsThis = "Sketcher_CreatePolyline";
sStatusTip = sToolTipText;
sPixmap = "Sketcher_CreatePolyline";
sAccel = "G, M";
eType = ForEdit;
}
CONSTRUCTION_UPDATE_ACTION(CmdSketcherCreatePolyline, "Sketcher_CreatePolyline")
void CmdSketcherCreatePolyline::activated(int iMsg)
{
Q_UNUSED(iMsg);
ActivateHandler(getActiveGuiDocument(), new DrawSketchHandlerLineSet());
}
bool CmdSketcherCreatePolyline::isActive()
{
return isCommandActive(getActiveGuiDocument());
}
/* Create Box =======================================================*/
@@ -361,38 +446,6 @@ bool CmdSketcherCompCreateRectangles::isActive()
return isCommandActive(getActiveGuiDocument());
}
// ======================================================================================
DEF_STD_CMD_AU(CmdSketcherCreatePolyline)
CmdSketcherCreatePolyline::CmdSketcherCreatePolyline()
: Command("Sketcher_CreatePolyline")
{
sAppModule = "Sketcher";
sGroup = "Sketcher";
sMenuText = QT_TR_NOOP("Create polyline");
sToolTipText = QT_TR_NOOP("Create a polyline in the sketch. 'M' Key cycles behaviour");
sWhatsThis = "Sketcher_CreatePolyline";
sStatusTip = sToolTipText;
sPixmap = "Sketcher_CreatePolyline";
sAccel = "G, M";
eType = ForEdit;
}
CONSTRUCTION_UPDATE_ACTION(CmdSketcherCreatePolyline, "Sketcher_CreatePolyline")
void CmdSketcherCreatePolyline::activated(int iMsg)
{
Q_UNUSED(iMsg);
ActivateHandler(getActiveGuiDocument(), new DrawSketchHandlerLineSet());
}
bool CmdSketcherCreatePolyline::isActive()
{
return isCommandActive(getActiveGuiDocument());
}
// ======================================================================================
DEF_STD_CMD_AU(CmdSketcherCreateArc)
@@ -2248,4 +2301,5 @@ void CreateSketcherCommandsCreateGeo()
rcCmdMgr.addCommand(new CmdSketcherCompCurveEdition());
rcCmdMgr.addCommand(new CmdSketcherExternal());
rcCmdMgr.addCommand(new CmdSketcherCarbonCopy());
rcCmdMgr.addCommand(new CmdSketcherCompLine());
}

View File

@@ -285,6 +285,22 @@ inline void SketcherAddWorkbenchSketchEditModeActions(Gui::ToolBarItem& sketch)
template<typename T>
void SketcherAddWorkbenchGeometries(T& geom);
template<typename T>
void SketcherAddWorkspaceLines(T& geom);
template<>
inline void SketcherAddWorkspaceLines<Gui::MenuItem>(Gui::MenuItem& geom)
{
geom << "Sketcher_CreatePolyline"
<< "Sketcher_CreateLine";
}
template<>
inline void SketcherAddWorkspaceLines<Gui::ToolBarItem>(Gui::ToolBarItem& geom)
{
geom << "Sketcher_CompLine";
}
template<typename T>
void SketcherAddWorkspaceArcs(T& geom);
@@ -405,11 +421,10 @@ inline void SketcherAddWorkspaceCurveEdition<Gui::ToolBarItem>(Gui::ToolBarItem&
template<typename T>
inline void SketcherAddWorkbenchGeometries(T& geom)
{
geom << "Sketcher_CreatePoint"
<< "Sketcher_CreateLine";
geom << "Sketcher_CreatePoint";
SketcherAddWorkspaceLines(geom);
SketcherAddWorkspaceArcs(geom);
geom << "Separator"
<< "Sketcher_CreatePolyline";
geom << "Separator";
SketcherAddWorkspaceRectangles(geom);
SketcherAddWorkspaceRegularPolygon(geom);
SketcherAddWorkspaceslots(geom);