From df4f9b9c59f9f0b6dccee39891212286306d118e Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Fri, 13 Jan 2023 11:41:55 +0100 Subject: [PATCH] [Draft] Add Units Selector to Status Bar --- .../Draft/draftutils/init_draft_statusbar.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/Mod/Draft/draftutils/init_draft_statusbar.py b/src/Mod/Draft/draftutils/init_draft_statusbar.py index 4f761952e3..5f34ba4329 100644 --- a/src/Mod/Draft/draftutils/init_draft_statusbar.py +++ b/src/Mod/Draft/draftutils/init_draft_statusbar.py @@ -223,6 +223,24 @@ def init_draft_statusbar_snap(): this function initializes draft statusbar snap widget """ + unitsList = [translate("Draft","Millimeters"), + translate("Draft","Centimeters"), + translate("Draft","Meters"), + translate("Draft","Inches"), + translate("Draft","Feet"), + translate("Draft","Architectural"), + ] + + def setUnit(action): + + # set the label of the unit button + utext = action.text().replace("&","") + unit = [0,4,1,3,7,5][unitsList.index(utext)] + App.ParamGet("User parameter:BaseApp/Preferences/Units").SetInt("UserSchema",unit) + if hasattr(App.Units,"setSchema"): + App.Units.setSchema(unit) + action.parent().parent().parent().setText(utext) + def _spacer(): """ empty label instead of snap_widget.addSeparator() @@ -271,6 +289,25 @@ def init_draft_statusbar_snap(): # working plane button: snap_widget.addAction(Gui.Command.get("Draft_Snap_WorkingPlane").getAction()[0]) + # units chooser + snap_widget.unitsList = unitsList + unitLabel = QtGui.QPushButton("Unit") + unitLabel.setObjectName("UnitLabel") + unitLabel.setFlat(True) + unit = App.ParamGet("User parameter:BaseApp/Preferences/Units").GetInt("UserSchema",0) + menu = QtGui.QMenu(unitLabel) + gUnits = QtGui.QActionGroup(menu) + for u in unitsList: + a = QtGui.QAction(gUnits) + a.setText(u) + menu.addAction(a) + unitLabel.setMenu(menu) + gUnits.triggered.connect(setUnit) + unitLabel.setText([unitsList[0],unitsList[2],unitsList[3],unitsList[3],unitsList[1],unitsList[5],unitsList[0],unitsList[4]][unit]) + unitLabel.setToolTip(translate("Draft","The preferred unit you are currently working with.")) + snap_widget.addWidget(unitLabel) + snap_widget.unitLabel = unitLabel + # menu for lock button: for cmd in get_draft_snap_commands(): if cmd not in ["Separator",