Merge pull request #5072 from Roy-043/Draft-fix-shortcuts-in-menus-and-more

Draft: fix shortcuts in menus and more
This commit is contained in:
Yorik van Havre
2021-10-05 13:51:59 +02:00
committed by GitHub
3 changed files with 285 additions and 159 deletions

View File

@@ -1,5 +1,6 @@
# ***************************************************************************
# * (c) 2020 Eliud Cabrera Castillo <e.cabrera-castillo@tum.de> *
# * Copyright (c) 2020 Eliud Cabrera Castillo <e.cabrera-castillo@tum.de> *
# * Copyright (c) 2021 FreeCAD Developers *
# * *
# * This file is part of the FreeCAD CAx development system. *
# * *
@@ -20,13 +21,9 @@
# * USA *
# * *
# ***************************************************************************
"""Provides lists of commands in order to set up toolbars of the workbench.
This module returns lists of commands, so that the toolbars
can be initialized by Draft, and by other workbenches.
These commands should be defined in `DraftTools`, and in the individual
modules in `draftguitools`.
"""
"""Provides functions and lists of commands to set up Draft menus and toolbars."""
## @package init_tools
# \ingroup draftutils
# \brief Provides lists of commands to set up toolbars of the workbench.
@@ -40,137 +37,188 @@ from PySide.QtCore import QT_TRANSLATE_NOOP
def get_draft_drawing_commands():
"""Return the drawing commands list."""
return ["Draft_Line", "Draft_Wire", "Draft_Fillet",
"Draft_ArcTools",
"Draft_Circle", "Draft_Ellipse", "Draft_Rectangle",
"Draft_Polygon", "Draft_BSpline", "Draft_BezierTools",
"Draft_Point", "Draft_Facebinder",
"Draft_ShapeString","Draft_Hatch"]
from draftguitools import gui_arcs
from draftguitools import gui_beziers
arc_group = gui_arcs.ArcGroup
bez_group = gui_beziers.BezierGroup
return ["Draft_Line",
"Draft_Wire",
"Draft_Fillet",
([QT_TRANSLATE_NOOP("Draft", "Arc tools")],
list(arc_group.GetCommands(arc_group))), # tuple len=2: submenu
("Draft_ArcTools", ), # tuple len=1: toolbar flyout
"Draft_Circle",
"Draft_Ellipse",
"Draft_Rectangle",
"Draft_Polygon",
"Draft_BSpline",
([QT_TRANSLATE_NOOP("Draft", "Bezier tools")],
list(bez_group.GetCommands(bez_group))),
("Draft_BezierTools", ),
"Draft_Point",
"Draft_Facebinder",
"Draft_ShapeString",
"Draft_Hatch"]
def get_draft_annotation_commands():
"""Return the annotation commands list."""
return ["Draft_Text", "Draft_Dimension",
"Draft_Label", "Draft_AnnotationStyleEditor"]
def get_draft_array_commands():
"""Return the array commands list."""
return ["Draft_ArrayTools"]
def get_draft_small_commands():
"""Return a list with only some utilities."""
return ["Draft_Layer",
"Draft_WorkingPlaneProxy",
"Draft_ToggleDisplayMode",
"Draft_AddNamedGroup",
"Draft_AddToGroup",
"Draft_SelectGroup",
"Draft_AddConstruction"]
return ["Draft_Text",
"Draft_Dimension",
"Draft_Label",
"Draft_AnnotationStyleEditor"]
def get_draft_modification_commands():
"""Return the modification commands list."""
lst = ["Draft_Move", "Draft_Rotate",
"Draft_Scale", "Draft_Mirror",
"Draft_Offset", "Draft_Trimex",
"Draft_Stretch",
"Separator",
"Draft_Clone"]
lst += get_draft_array_commands()
lst += ["Separator",
"Draft_Edit", "Draft_SubelementHighlight",
from draftguitools import gui_arrays
arr_group = gui_arrays.ArrayGroup
return ["Draft_Move",
"Draft_Rotate",
"Draft_Scale",
"Draft_Mirror",
"Draft_Offset",
"Draft_Trimex",
"Draft_Stretch",
"Separator",
"Draft_Join", "Draft_Split",
"Draft_Upgrade", "Draft_Downgrade",
"Draft_Clone",
([QT_TRANSLATE_NOOP("Draft", "Array tools")],
list(arr_group.GetCommands(arr_group))), # tuple len=2: submenu
("Draft_ArrayTools", ), # tuple len=1: toolbar flyout
"Separator",
"Draft_WireToBSpline", "Draft_Draft2Sketch",
"Draft_Slope", "Draft_FlipDimension",
"Draft_Edit",
"Draft_SubelementHighlight",
"Separator",
"Draft_Join",
"Draft_Split",
"Draft_Upgrade",
"Draft_Downgrade",
"Separator",
"Draft_WireToBSpline",
"Draft_Draft2Sketch",
"Draft_Slope",
"Draft_FlipDimension",
"Separator",
"Draft_Shape2DView"]
return lst
def get_draft_context_commands():
"""Return the context menu commands list."""
return ["Draft_ApplyStyle", "Draft_ToggleDisplayMode",
"Draft_AddNamedGroup", "Draft_AddToGroup", "Draft_SelectGroup",
"Draft_SelectPlane", "Draft_ShowSnapBar",
"Draft_ToggleGrid", "Draft_SetStyle"]
def get_draft_line_commands():
"""Return the line commands list."""
return ["Draft_UndoLine", "Draft_FinishLine",
"Draft_CloseLine"]
def get_draft_utility_commands():
"""Return the utility commands list."""
return ["Draft_Layer",
"Draft_Heal",
def get_draft_utility_commands_menu():
"""Return the utility commands list for the menu."""
return ["Draft_SetStyle",
"Draft_ApplyStyle",
"Separator",
"Draft_Layer",
"Draft_AddNamedGroup",
"Draft_AddToGroup",
"Draft_SelectGroup",
"Draft_ToggleConstructionMode",
"Draft_ToggleContinueMode",
"Draft_AddConstruction",
"Separator",
"Draft_ToggleDisplayMode",
"Draft_ToggleGrid",
"Draft_SelectPlane",
"Draft_WorkingPlaneProxy",
"Draft_AddConstruction"]
"Separator",
"Draft_Heal",
"Draft_ToggleContinueMode",
"Draft_ShowSnapBar"]
def get_draft_utility_commands_toolbar():
"""Return the utility commands list for the toolbar."""
return ["Draft_Layer",
"Draft_AddNamedGroup",
"Draft_AddToGroup",
"Draft_SelectGroup",
"Draft_AddConstruction",
"Draft_ToggleDisplayMode",
"Draft_WorkingPlaneProxy"]
def get_draft_snap_commands():
"""Return the snapping commands list."""
return ['Draft_Snap_Lock',
'Draft_Snap_Endpoint', 'Draft_Snap_Midpoint',
'Draft_Snap_Center', 'Draft_Snap_Angle',
'Draft_Snap_Intersection', 'Draft_Snap_Perpendicular',
'Draft_Snap_Extension', 'Draft_Snap_Parallel',
'Draft_Snap_Special', 'Draft_Snap_Near',
'Draft_Snap_Ortho', 'Draft_Snap_Grid',
'Draft_Snap_WorkingPlane', 'Draft_Snap_Dimensions',
'Separator', 'Draft_ToggleGrid'
]
'Draft_Snap_Endpoint',
'Draft_Snap_Midpoint',
'Draft_Snap_Center',
'Draft_Snap_Angle',
'Draft_Snap_Intersection',
'Draft_Snap_Perpendicular',
'Draft_Snap_Extension',
'Draft_Snap_Parallel',
'Draft_Snap_Special',
'Draft_Snap_Near',
'Draft_Snap_Ortho',
'Draft_Snap_Grid',
'Draft_Snap_WorkingPlane',
'Draft_Snap_Dimensions',
'Separator', 'Draft_ToggleGrid']
def init_draft_toolbars(workbench):
"""Initialize the Draft toolbars.
def get_draft_context_commands():
"""Return the context menu commands list."""
return ["Draft_ApplyStyle",
"Draft_ToggleDisplayMode",
"Draft_AddNamedGroup",
"Draft_AddToGroup",
"Draft_SelectGroup",
"Draft_SelectPlane",
"Draft_ShowSnapBar",
"Draft_ToggleGrid",
"Draft_SetStyle"]
def get_draft_line_commands():
"""Return the line commands list."""
return ["Draft_UndoLine",
"Draft_FinishLine",
"Draft_CloseLine"]
def init_toolbar(workbench, toolbar, cmd_list):
"""Initialize a toolbar.
Parameters
----------
workbench: Gui.Workbench
The workbench class on which the commands have to be available.
If called from within the `Initialize` method
of a workbench class defined inside `InitGui.py`,
it can be used as `setup_draft_toolbars(self)`.
The workbench. The commands from cmd_list must be available.
toolbar: string
The name of the toolbar.
cmd_list: list of strings or list of strings and tuples
See f.e. the return value of get_draft_drawing_commands.
"""
workbench.appendToolbar(QT_TRANSLATE_NOOP("Draft",
"Draft creation tools"),
get_draft_drawing_commands())
workbench.appendToolbar(QT_TRANSLATE_NOOP("Draft",
"Draft annotation tools"),
get_draft_annotation_commands())
workbench.appendToolbar(QT_TRANSLATE_NOOP("Draft",
"Draft modification tools"),
get_draft_modification_commands())
for cmd in cmd_list:
if isinstance(cmd, tuple):
if len(cmd) == 1:
workbench.appendToolbar(toolbar, [cmd[0]])
else:
workbench.appendToolbar(toolbar, [cmd])
def init_draft_menus(workbench):
"""Initialize the Draft menus.
def init_menu(workbench, menu_list, cmd_list):
"""Initialize a menu.
Parameters
----------
workbench: Gui.Workbench
The workbench class on which the commands have to be available.
If called from within the `Initialize` method
of a workbench class defined inside `InitGui.py`,
it can be used as `setup_draft_menus(self)`.
The workbench. The commands from cmd_list must be available.
menu_list: list of strings
The main and optional submenu(s). The commands, and additonal
submenus (if any), are added to the last (sub)menu in the list.
cmd_list: list of strings or list of strings and tuples
See f.e. the return value of get_draft_drawing_commands.
"""
workbench.appendMenu(QT_TRANSLATE_NOOP("Draft", "&Drafting"),
get_draft_drawing_commands())
workbench.appendMenu(QT_TRANSLATE_NOOP("Draft", "&Annotation"),
get_draft_annotation_commands())
workbench.appendMenu(QT_TRANSLATE_NOOP("Draft", "&Modification"),
get_draft_modification_commands())
workbench.appendMenu(QT_TRANSLATE_NOOP("Draft", "&Utilities"),
get_draft_utility_commands()
+ get_draft_context_commands())
for cmd in cmd_list:
if isinstance(cmd, tuple):
if len(cmd) == 2:
workbench.appendMenu(menu_list + cmd[0], cmd[1])
else:
workbench.appendMenu(menu_list, [cmd])
## @}