Draft: Change Snap toolbar to standard toolbar
This commit is contained in:
@@ -48,21 +48,21 @@ draft_scales_metrics = ["1:1000", "1:500", "1:250", "1:200", "1:100",
|
||||
"1:50", "1:25","1:20", "1:10", "1:5","1:2",
|
||||
"1:1",
|
||||
"2:1", "5:1", "10:1", "20:1",
|
||||
translate("draft", "custom"),
|
||||
translate("draft", "Custom"),
|
||||
]
|
||||
|
||||
draft_scales_arch_imperial = ["1/16in=1ft", "3/32in=1ft", "1/8in=1ft",
|
||||
"3/16in=1ft", "1/4in=1ft","3/8in=1ft",
|
||||
"1/2in=1ft", "3/4in=1ft", "1in=1ft",
|
||||
"1.5in=1ft", "3in=1ft",
|
||||
translate("draft", "custom"),
|
||||
translate("draft", "Custom"),
|
||||
]
|
||||
|
||||
draft_scales_eng_imperial = ["1in=10ft", "1in=20ft", "1in=30ft",
|
||||
"1in=40ft", "1in=50ft", "1in=60ft",
|
||||
"1in=70ft", "1in=80ft", "1in=90ft",
|
||||
"1in=100ft",
|
||||
translate("draft", "custom"),
|
||||
translate("draft", "Custom"),
|
||||
]
|
||||
|
||||
def get_scales(unit_system = 0):
|
||||
@@ -136,7 +136,7 @@ def label_to_scale(label):
|
||||
return scale
|
||||
except Exception:
|
||||
err = translate("draft",
|
||||
"Unable to convert input into a scale factor")
|
||||
"Unable to convert input into a scale factor")
|
||||
App.Console.PrintWarning(err)
|
||||
return None
|
||||
|
||||
@@ -149,8 +149,10 @@ def _set_scale(action):
|
||||
|
||||
mw = Gui.getMainWindow()
|
||||
sb = mw.statusBar()
|
||||
scale_widget = sb.findChild(QtGui.QToolBar,"draft_status_scale_widget")
|
||||
if action.text() == translate("draft", "custom"):
|
||||
|
||||
scale_widget = sb.findChild(QtGui.QToolBar,"draft_scale_widget")
|
||||
|
||||
if action.text() == translate("draft", "Custom"):
|
||||
title_text = translate("draft", "Set custom scale")
|
||||
dialog_text = translate("draft",
|
||||
"Set custom annotation scale in format x:x, x=x")
|
||||
@@ -172,6 +174,7 @@ def _set_scale(action):
|
||||
#----------------------------------------------------------------------------
|
||||
# MAIN DRAFT STATUSBAR FUNCTIONS
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
def init_draft_statusbar_scale():
|
||||
"""
|
||||
this function initializes draft statusbar scale widget
|
||||
@@ -182,7 +185,7 @@ def init_draft_statusbar_scale():
|
||||
sb = mw.statusBar()
|
||||
|
||||
scale_widget = QtGui.QToolBar()
|
||||
scale_widget.setObjectName("draft_status_scale_widget")
|
||||
scale_widget.setObjectName("draft_scale_widget")
|
||||
|
||||
# get scales list according to system units
|
||||
draft_scales = get_scales()
|
||||
@@ -219,121 +222,64 @@ def init_draft_statusbar_snap():
|
||||
"""
|
||||
this function initializes draft statusbar snap widget
|
||||
"""
|
||||
param = App.ParamGet("User parameter:BaseApp/Preferences/Mod/Draft")
|
||||
|
||||
def _spacer():
|
||||
"""
|
||||
empty label instead of snap_widget.addSeparator()
|
||||
"""
|
||||
label = QtGui.QLabel()
|
||||
label.setFixedWidth(2)
|
||||
return label
|
||||
|
||||
mw = Gui.getMainWindow()
|
||||
sb = mw.statusBar()
|
||||
|
||||
# SNAP WIDGET - init ----------------------------------------------------
|
||||
# check if the toolbar is available, without it the required actions
|
||||
# may be missing:
|
||||
if mw.findChild(QtGui.QToolBar, "Draft snap") is None:
|
||||
return
|
||||
|
||||
# snap widget:
|
||||
snap_widget = QtGui.QToolBar()
|
||||
snap_widget.setObjectName("draft_snap_widget")
|
||||
snap_widget.setIconSize(QtCore.QSize(16,16))
|
||||
|
||||
# GRID BUTTON - init
|
||||
gridbutton = QtGui.QPushButton(snap_widget)
|
||||
gridbutton.setIcon(QtGui.QIcon.fromTheme("Draft",
|
||||
QtGui.QIcon(":/icons/"
|
||||
"Draft_Grid.svg")))
|
||||
gridbutton.setToolTip(translate("Draft", "Toggles Grid On/Off"))
|
||||
gridbutton.setObjectName("Grid_Statusbutton")
|
||||
gridbutton.setWhatsThis("Draft_ToggleGrid")
|
||||
gridbutton.setFlat(True)
|
||||
QtCore.QObject.connect(gridbutton,QtCore.SIGNAL("clicked()"),
|
||||
lambda f=Gui.doCommand,
|
||||
arg='Gui.runCommand("Draft_ToggleGrid")':f(arg))
|
||||
snap_widget.addWidget(gridbutton)
|
||||
|
||||
# SNAP BUTTON - init
|
||||
snappref = param.GetString("snapModes","111111111101111")[0]
|
||||
snapbutton = QtGui.QPushButton(snap_widget)
|
||||
snapbutton.setIcon(QtGui.QIcon.fromTheme("Draft",
|
||||
QtGui.QIcon(":/icons/"
|
||||
"Snap_Lock.svg")))
|
||||
snapbutton.setObjectName("Snap_Statusbutton")
|
||||
snapbutton.setWhatsThis("Draft_ToggleLockSnap")
|
||||
snapbutton.setToolTip(translate("Draft", "Object snapping"))
|
||||
snapbutton.setCheckable(True)
|
||||
snapbutton.setChecked(bool(int(snappref)))
|
||||
snapbutton.setFlat(True)
|
||||
|
||||
snaps_menu = QtGui.QMenu(snapbutton)
|
||||
snaps_menu.setObjectName("draft_statusbar_snap_toolbar")
|
||||
|
||||
snap_gui_commands = get_draft_snap_commands()
|
||||
if 'Draft_Snap_Ortho' in snap_gui_commands:
|
||||
snap_gui_commands.remove('Draft_Snap_Ortho')
|
||||
if 'Draft_Snap_WorkingPlane' in snap_gui_commands:
|
||||
snap_gui_commands.remove('Draft_Snap_WorkingPlane')
|
||||
if 'Draft_Snap_Dimensions' in snap_gui_commands:
|
||||
snap_gui_commands.remove('Draft_Snap_Dimensions')
|
||||
if 'Draft_ToggleGrid' in snap_gui_commands:
|
||||
snap_gui_commands.remove('Draft_ToggleGrid')
|
||||
|
||||
Gui.Snapper.init_draft_snap_buttons(snap_gui_commands,snaps_menu, "_Statusbutton")
|
||||
Gui.Snapper.restore_snap_buttons_state(snaps_menu, "_Statusbutton")
|
||||
|
||||
snapbutton.setMenu(snaps_menu)
|
||||
snap_widget.addWidget(snapbutton)
|
||||
|
||||
|
||||
# DIMENSION BUTTON - init
|
||||
dimpref = param.GetString("snapModes","111111111101111")[13]
|
||||
dimbutton = QtGui.QPushButton(snap_widget)
|
||||
dimbutton.setIcon(QtGui.QIcon.fromTheme("Draft",
|
||||
QtGui.QIcon(":/icons/"
|
||||
"Snap_Dimensions.svg")))
|
||||
dimbutton.setToolTip(translate("Draft",
|
||||
"Toggles Visual Aid Dimensions On/Off"))
|
||||
dimbutton.setObjectName("Draft_Snap_Dimensions_Statusbutton")
|
||||
dimbutton.setWhatsThis("Draft_ToggleDimensions")
|
||||
dimbutton.setFlat(True)
|
||||
dimbutton.setCheckable(True)
|
||||
dimbutton.setChecked(bool(int(dimpref)))
|
||||
QtCore.QObject.connect(dimbutton,QtCore.SIGNAL("clicked()"),
|
||||
lambda f=Gui.doCommand,
|
||||
arg='Gui.runCommand("Draft_Snap_Dimensions")':f(arg))
|
||||
snap_widget.addWidget(dimbutton)
|
||||
|
||||
# ORTHO BUTTON - init
|
||||
ortopref = param.GetString("snapModes","111111111101111")[10]
|
||||
orthobutton = QtGui.QPushButton(snap_widget)
|
||||
orthobutton.setIcon(QtGui.QIcon.fromTheme("Draft",
|
||||
QtGui.QIcon(":/icons/"
|
||||
"Snap_Ortho.svg")))
|
||||
orthobutton.setObjectName("Draft_Snap_Ortho"+"_Statusbutton")
|
||||
orthobutton.setWhatsThis("Draft_ToggleOrtho")
|
||||
orthobutton.setToolTip(translate("Draft", "Toggles Ortho On/Off"))
|
||||
orthobutton.setFlat(True)
|
||||
orthobutton.setCheckable(True)
|
||||
orthobutton.setChecked(bool(int(ortopref)))
|
||||
QtCore.QObject.connect(orthobutton,QtCore.SIGNAL("clicked()"),
|
||||
lambda f=Gui.doCommand,
|
||||
arg='Gui.runCommand("Draft_Snap_Ortho")':f(arg))
|
||||
snap_widget.addWidget(orthobutton)
|
||||
|
||||
# WORKINGPLANE BUTTON - init
|
||||
wppref = param.GetString("snapModes","111111111101111")[14]
|
||||
wpbutton = QtGui.QPushButton(snap_widget)
|
||||
wpbutton.setIcon(QtGui.QIcon.fromTheme("Draft",
|
||||
QtGui.QIcon(":/icons/"
|
||||
"Snap_WorkingPlane.svg")))
|
||||
wpbutton.setObjectName("Draft_Snap_WorkingPlane_Statusbutton")
|
||||
wpbutton.setWhatsThis("Draft_ToggleWorkingPlaneSnap")
|
||||
wpbutton.setToolTip(translate("Draft",
|
||||
"Toggles Constrain to Working Plane On/Off"))
|
||||
wpbutton.setFlat(True)
|
||||
wpbutton.setCheckable(True)
|
||||
wpbutton.setChecked(bool(int(wppref)))
|
||||
QtCore.QObject.connect(wpbutton,QtCore.SIGNAL("clicked()"),
|
||||
lambda f=Gui.doCommand,
|
||||
arg='Gui.runCommand("Draft_Snap_WorkingPlane")':f(arg))
|
||||
snap_widget.addWidget(wpbutton)
|
||||
|
||||
# add snap widget to the statusbar
|
||||
sb.insertPermanentWidget(2, snap_widget)
|
||||
snap_widget.setOrientation(QtCore.Qt.Orientation.Horizontal)
|
||||
snap_widget.show()
|
||||
snap_widget.setIconSize(QtCore.QSize(16, 16))
|
||||
sb.insertPermanentWidget(2, snap_widget)
|
||||
|
||||
# grid button:
|
||||
snap_widget.addAction(Gui.Command.get("Draft_ToggleGrid").getAction()[0])
|
||||
|
||||
snap_widget.addWidget(_spacer())
|
||||
|
||||
# lock button:
|
||||
snap_widget.addAction(Gui.Command.get("Draft_Snap_Lock").getAction()[0])
|
||||
snap_action = snap_widget.children()[-1]
|
||||
snap_action.setFixedWidth(40) # Widen the button.
|
||||
|
||||
snap_widget.addWidget(_spacer())
|
||||
|
||||
# dimension button:
|
||||
snap_widget.addAction(Gui.Command.get("Draft_Snap_Dimensions").getAction()[0])
|
||||
|
||||
snap_widget.addWidget(_spacer())
|
||||
|
||||
# ortho button:
|
||||
snap_widget.addAction(Gui.Command.get("Draft_Snap_Ortho").getAction()[0])
|
||||
|
||||
snap_widget.addWidget(_spacer())
|
||||
|
||||
# working plane button:
|
||||
snap_widget.addAction(Gui.Command.get("Draft_Snap_WorkingPlane").getAction()[0])
|
||||
|
||||
# menu for lock button:
|
||||
for cmd in get_draft_snap_commands():
|
||||
if cmd not in ["Separator",
|
||||
"Draft_ToggleGrid",
|
||||
"Draft_Snap_Lock", # Is automatically added to the menu anyway.
|
||||
"Draft_Snap_Dimensions",
|
||||
"Draft_Snap_Ortho",
|
||||
"Draft_Snap_WorkingPlane"]:
|
||||
snap_action.addAction(Gui.Command.get(cmd).getAction()[0])
|
||||
|
||||
|
||||
def show_draft_statusbar():
|
||||
@@ -346,13 +292,11 @@ def show_draft_statusbar():
|
||||
sb = mw.statusBar()
|
||||
|
||||
if params.GetBool("DisplayStatusbarScaleWidget", True):
|
||||
scale_widget = sb.findChild(QtGui.QToolBar,
|
||||
"draft_status_scale_widget")
|
||||
scale_widget = sb.findChild(QtGui.QToolBar, "draft_scale_widget")
|
||||
if scale_widget:
|
||||
scale_widget.show()
|
||||
else:
|
||||
scale_widget = mw.findChild(QtGui.QToolBar,
|
||||
"draft_status_scale_widget")
|
||||
scale_widget = mw.findChild(QtGui.QToolBar, "draft_scale_widget")
|
||||
if scale_widget:
|
||||
sb.insertPermanentWidget(3, scale_widget)
|
||||
scale_widget.show()
|
||||
@@ -361,12 +305,12 @@ def show_draft_statusbar():
|
||||
t.singleShot(500, init_draft_statusbar_scale)
|
||||
|
||||
if params.GetBool("DisplayStatusbarSnapWidget", True):
|
||||
snap_widget = sb.findChild(QtGui.QToolBar,"draft_snap_widget")
|
||||
snap_widget = sb.findChild(QtGui.QToolBar, "draft_snap_widget")
|
||||
if snap_widget:
|
||||
snap_widget.setOrientation(QtCore.Qt.Orientation.Horizontal)
|
||||
snap_widget.show()
|
||||
else:
|
||||
snap_widget = mw.findChild(QtGui.QToolBar,"draft_snap_widget")
|
||||
snap_widget = mw.findChild(QtGui.QToolBar, "draft_snap_widget")
|
||||
if snap_widget:
|
||||
sb.insertPermanentWidget(2, snap_widget)
|
||||
snap_widget.setOrientation(QtCore.Qt.Orientation.Horizontal)
|
||||
@@ -384,27 +328,27 @@ def hide_draft_statusbar():
|
||||
sb = mw.statusBar()
|
||||
|
||||
# hide scale widget
|
||||
scale_widget = sb.findChild(QtGui.QToolBar,
|
||||
"draft_status_scale_widget")
|
||||
if scale_widget:
|
||||
scale_widget.hide()
|
||||
else:
|
||||
scale_widget = sb.findChild(QtGui.QToolBar, "draft_scale_widget")
|
||||
if scale_widget is None:
|
||||
# when switching workbenches, the toolbar sometimes "jumps"
|
||||
# out of the status bar to any other dock area...
|
||||
scale_widget = mw.findChild(QtGui.QToolBar,
|
||||
"draft_status_scale_widget")
|
||||
if scale_widget:
|
||||
scale_widget.hide()
|
||||
scale_widget = mw.findChild(QtGui.QToolBar, "draft_scale_widget")
|
||||
if scale_widget:
|
||||
scale_widget.hide()
|
||||
# prevent the widget from showing up as a blank item in the toolbar
|
||||
# area context menu after switching to a different workbench:
|
||||
scale_widget.toggleViewAction().setVisible(False)
|
||||
|
||||
# hide snap widget
|
||||
snap_widget = sb.findChild(QtGui.QToolBar,"draft_snap_widget")
|
||||
if snap_widget:
|
||||
snap_widget.hide()
|
||||
else:
|
||||
if snap_widget is None:
|
||||
# when switching workbenches, the toolbar sometimes "jumps"
|
||||
# out of the status bar to any other dock area...
|
||||
snap_widget = mw.findChild(QtGui.QToolBar,"draft_snap_widget")
|
||||
if snap_widget:
|
||||
snap_widget.hide()
|
||||
if snap_widget:
|
||||
snap_widget.hide()
|
||||
# prevent the widget from showing up as a blank item in the toolbar
|
||||
# area context menu after switching to a different workbench:
|
||||
snap_widget.toggleViewAction().setVisible(False)
|
||||
|
||||
## @}
|
||||
|
||||
@@ -141,47 +141,26 @@ def get_draft_utility_commands_toolbar():
|
||||
|
||||
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']
|
||||
|
||||
|
||||
def get_draft_snap_tooltips():
|
||||
"""Return a dictionary with tooltips for the snapping commands.
|
||||
|
||||
For the snapping commands in the default toolbar and in the statusbar the
|
||||
tooltips from the `GetResources` functions in gui_snaps.py are not used.
|
||||
"""
|
||||
return {'Draft_Snap_Lock' : translate('draft', 'Snap Lock'),
|
||||
'Draft_Snap_Endpoint' : translate('draft', 'Snap Endpoint'),
|
||||
'Draft_Snap_Midpoint' : translate('draft', 'Snap Midpoint'),
|
||||
'Draft_Snap_Center' : translate('draft', 'Snap Center'),
|
||||
'Draft_Snap_Angle' : translate('draft', 'Snap Angle'),
|
||||
'Draft_Snap_Intersection' : translate('draft', 'Snap Intersection'),
|
||||
'Draft_Snap_Perpendicular': translate('draft', 'Snap Perpendicular'),
|
||||
'Draft_Snap_Extension' : translate('draft', 'Snap Extension'),
|
||||
'Draft_Snap_Parallel' : translate('draft', 'Snap Parallel'),
|
||||
'Draft_Snap_Special' : translate('draft', 'Snap Special'),
|
||||
'Draft_Snap_Near' : translate('draft', 'Snap Near'),
|
||||
'Draft_Snap_Ortho' : translate('draft', 'Snap Ortho'),
|
||||
'Draft_Snap_Grid' : translate('draft', 'Snap Grid'),
|
||||
'Draft_Snap_WorkingPlane' : translate('draft', 'Snap WorkingPlane'),
|
||||
'Draft_Snap_Dimensions' : translate('draft', 'Snap Dimensions'),
|
||||
'Draft_ToggleGrid' : translate('draft', 'Toggle Draft Grid')}
|
||||
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", # Removed: if the Python generated BIM snap toolbar
|
||||
# is displayed in the Draft WB the separator appears
|
||||
# after the last button. Can be reinstated when the
|
||||
# BIM WB has a `normal` snap toolbar as well.
|
||||
"Draft_ToggleGrid"]
|
||||
|
||||
|
||||
def get_draft_context_commands():
|
||||
|
||||
Reference in New Issue
Block a user