Draft: fix shortcuts in menus and more (init_tools.py)

This commit is contained in:
Roy-043
2021-09-28 14:50:41 +02:00
committed by GitHub
parent da185295b2
commit 188339c3dc

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.
@@ -48,6 +45,35 @@ def get_draft_drawing_commands():
"Draft_ShapeString","Draft_Hatch"]
# This function replaces get_draft_drawing_commands.
# The "_temp" suffix should be removed when the BIM Workbench has been updated.
def get_draft_drawing_commands_temp():
"""Return the drawing commands list."""
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",
@@ -59,6 +85,8 @@ def get_draft_array_commands():
return ["Draft_ArrayTools"]
# This function has been replaced by get_draft_utility_commands_toolbar.
# It should be removed when the BIM Workbench has been updated.
def get_draft_small_commands():
"""Return a list with only some utilities."""
return ["Draft_Layer",
@@ -92,6 +120,42 @@ def get_draft_modification_commands():
return lst
# This function replaces get_draft_modification_commands.
# The "_temp" suffix should be removed when the BIM Workbench has been updated.
def get_draft_modification_commands_temp():
"""Return the modification commands list."""
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_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_Edit",
"Draft_SubelementHighlight",
"Separator",
"Draft_Join",
"Draft_Split",
"Draft_Upgrade",
"Draft_Downgrade",
"Separator",
"Draft_WireToBSpline",
"Draft_Draft2Sketch",
"Draft_Slope",
"Draft_FlipDimension",
"Separator",
"Draft_Shape2DView"]
def get_draft_context_commands():
"""Return the context menu commands list."""
return ["Draft_ApplyStyle", "Draft_ToggleDisplayMode",
@@ -106,6 +170,8 @@ def get_draft_line_commands():
"Draft_CloseLine"]
# This function has been replaced by get_draft_utility_commands_menu.
# It should be removed when the BIM Workbench has been updated.
def get_draft_utility_commands():
"""Return the utility commands list."""
return ["Draft_Layer",
@@ -116,6 +182,39 @@ def get_draft_utility_commands():
"Draft_AddConstruction"]
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_AddConstruction",
"Separator",
"Draft_ToggleDisplayMode",
"Draft_ToggleGrid",
"Draft_SelectPlane",
"Draft_WorkingPlaneProxy",
"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',
@@ -130,47 +229,48 @@ def get_draft_snap_commands():
]
def init_draft_toolbars(workbench):
"""Initialize the Draft toolbars.
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_temp.
"""
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_temp.
"""
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])
## @}