From 84deb09f0ba61920561ac789f18e85e54b048ce0 Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Mon, 20 Nov 2023 21:17:18 +0100 Subject: [PATCH] Draft: make mod key prefs non-global --- src/Mod/Draft/DraftTools.py | 5 ----- src/Mod/Draft/draftguitools/gui_arcs.py | 6 +++--- src/Mod/Draft/draftguitools/gui_dimensions.py | 8 +++---- src/Mod/Draft/draftguitools/gui_labels.py | 2 +- src/Mod/Draft/draftguitools/gui_mirror.py | 6 +++--- src/Mod/Draft/draftguitools/gui_move.py | 6 +++--- src/Mod/Draft/draftguitools/gui_offset.py | 8 +++---- src/Mod/Draft/draftguitools/gui_polygons.py | 6 +++--- src/Mod/Draft/draftguitools/gui_rotate.py | 6 +++--- src/Mod/Draft/draftguitools/gui_tool_utils.py | 21 +++++++++++++------ src/Mod/Draft/draftguitools/gui_trimex.py | 16 +++++++------- 11 files changed, 46 insertions(+), 44 deletions(-) diff --git a/src/Mod/Draft/DraftTools.py b/src/Mod/Draft/DraftTools.py index 1584c6c4c3..5933f3f27b 100644 --- a/src/Mod/Draft/DraftTools.py +++ b/src/Mod/Draft/DraftTools.py @@ -98,11 +98,6 @@ from draftguitools.gui_layers import Layer # update the translation engine FreeCADGui.updateLocale() -# Set modifier keys -from draftguitools.gui_tool_utils import MODCONSTRAIN -from draftguitools.gui_tool_utils import MODSNAP -from draftguitools.gui_tool_utils import MODALT - # --------------------------------------------------------------------------- # General functions # --------------------------------------------------------------------------- diff --git a/src/Mod/Draft/draftguitools/gui_arcs.py b/src/Mod/Draft/draftguitools/gui_arcs.py index 05d46d82ba..144a2ec05d 100644 --- a/src/Mod/Draft/draftguitools/gui_arcs.py +++ b/src/Mod/Draft/draftguitools/gui_arcs.py @@ -155,7 +155,7 @@ class Arc(gui_base_original.Creator): if not DraftVecUtils.isNull(viewdelta): self.point = self.point.add(viewdelta.negative()) if self.step == 0: # choose center - if gui_tool_utils.hasMod(arg, gui_tool_utils.MODALT): + if gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_alt_key()): if not self.altdown: self.altdown = True self.ui.switchUi(True) @@ -178,7 +178,7 @@ class Arc(gui_base_original.Creator): _c = DraftGeomUtils.findClosestCircle(self.point, cir) self.center = _c.Center self.arctrack.setCenter(self.center) - if gui_tool_utils.hasMod(arg, gui_tool_utils.MODALT): + if gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_alt_key()): if not self.altdown: self.altdown = True if info: @@ -237,7 +237,7 @@ class Arc(gui_base_original.Creator): gui_tool_utils.getSupport(arg) (self.point, ctrlPoint, info) = gui_tool_utils.getPoint(self, arg) - if gui_tool_utils.hasMod(arg, gui_tool_utils.MODALT): + if gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_alt_key()): snapped = self.view.getObjectInfo((arg["Position"][0], arg["Position"][1])) if snapped: diff --git a/src/Mod/Draft/draftguitools/gui_dimensions.py b/src/Mod/Draft/draftguitools/gui_dimensions.py index c00520bbee..0dbbc25710 100644 --- a/src/Mod/Draft/draftguitools/gui_dimensions.py +++ b/src/Mod/Draft/draftguitools/gui_dimensions.py @@ -362,13 +362,13 @@ class Dimension(gui_base_original.Creator): if arg["Key"] == "ESCAPE": self.finish() elif arg["Type"] == "SoLocation2Event": # mouse movement detection - shift = gui_tool_utils.hasMod(arg, gui_tool_utils.MODCONSTRAIN) + shift = gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_constrain_key()) if self.arcmode or self.point2: - gui_tool_utils.setMod(arg, gui_tool_utils.MODCONSTRAIN, False) + gui_tool_utils.setMod(arg, gui_tool_utils.get_mod_constrain_key(), False) (self.point, ctrlPoint, self.info) = gui_tool_utils.getPoint(self, arg, noTracker=(len(self.node)>0)) - if (gui_tool_utils.hasMod(arg, gui_tool_utils.MODALT) + if (gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_alt_key()) or self.selectmode) and (len(self.node) < 3): self.dimtrack.off() if not self.altdown: @@ -467,7 +467,7 @@ class Dimension(gui_base_original.Creator): self.ui.redraw() if (not self.node) and (not self.support): gui_tool_utils.getSupport(arg) - if (gui_tool_utils.hasMod(arg, gui_tool_utils.MODALT) + if (gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_alt_key()) or self.selectmode) and (len(self.node) < 3): # print("snapped: ",self.info) if self.info: diff --git a/src/Mod/Draft/draftguitools/gui_labels.py b/src/Mod/Draft/draftguitools/gui_labels.py index 794f9a41c5..ae11d65156 100644 --- a/src/Mod/Draft/draftguitools/gui_labels.py +++ b/src/Mod/Draft/draftguitools/gui_labels.py @@ -171,7 +171,7 @@ class Label(gui_base_original.Creator): if hasattr(Gui, "Snapper"): Gui.Snapper.affinity = None # don't keep affinity if len(self.node) == 2: - gui_tool_utils.setMod(arg, gui_tool_utils.MODCONSTRAIN, True) + gui_tool_utils.setMod(arg, gui_tool_utils.get_mod_constrain_key(), True) self.point, ctrlPoint, info = gui_tool_utils.getPoint(self, arg) gui_tool_utils.redraw3DView() elif arg["Type"] == "SoMouseButtonEvent": diff --git a/src/Mod/Draft/draftguitools/gui_mirror.py b/src/Mod/Draft/draftguitools/gui_mirror.py index 27dd6da252..497cb7e77c 100644 --- a/src/Mod/Draft/draftguitools/gui_mirror.py +++ b/src/Mod/Draft/draftguitools/gui_mirror.py @@ -147,7 +147,7 @@ class Mirror(gui_base_original.Modifier): self.ghost.setMatrix(mtx) # Ignores the position of the matrix. self.ghost.move(App.Vector(mtx.col(3)[:3])) if self.extendedCopy: - if not gui_tool_utils.hasMod(arg, gui_tool_utils.MODALT): + if not gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_alt_key()): self.finish() gui_tool_utils.redraw3DView() elif arg["Type"] == "SoMouseButtonEvent": @@ -166,11 +166,11 @@ class Mirror(gui_base_original.Modifier): else: last = self.node[0] if (self.ui.isCopy.isChecked() - or gui_tool_utils.hasMod(arg, gui_tool_utils.MODALT)): + or gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_alt_key())): self.mirror(last, self.point, True) else: self.mirror(last, self.point) - if gui_tool_utils.hasMod(arg, gui_tool_utils.MODALT): + if gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_alt_key()): self.extendedCopy = True else: self.finish() diff --git a/src/Mod/Draft/draftguitools/gui_move.py b/src/Mod/Draft/draftguitools/gui_move.py index 31dd0e8a6e..17142337bb 100644 --- a/src/Mod/Draft/draftguitools/gui_move.py +++ b/src/Mod/Draft/draftguitools/gui_move.py @@ -149,7 +149,7 @@ class Move(gui_base_original.Modifier): ghost.move(self.vector) ghost.on() if self.extendedCopy: - if not gui_tool_utils.hasMod(arg, gui_tool_utils.MODALT): + if not gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_alt_key()): self.finish() gui_tool_utils.redraw3DView() @@ -172,8 +172,8 @@ class Move(gui_base_original.Modifier): last = self.node[0] self.vector = self.point.sub(last) self.move(self.ui.isCopy.isChecked() - or gui_tool_utils.hasMod(arg, gui_tool_utils.MODALT)) - if gui_tool_utils.hasMod(arg, gui_tool_utils.MODALT): + or gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_alt_key())) + if gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_alt_key()): self.extendedCopy = True else: self.finish(cont=None) diff --git a/src/Mod/Draft/draftguitools/gui_offset.py b/src/Mod/Draft/draftguitools/gui_offset.py index b911e41afb..e5547af3cf 100644 --- a/src/Mod/Draft/draftguitools/gui_offset.py +++ b/src/Mod/Draft/draftguitools/gui_offset.py @@ -166,7 +166,7 @@ class Offset(gui_base_original.Modifier): self.finish() elif arg["Type"] == "SoLocation2Event": self.point, ctrlPoint, info = gui_tool_utils.getPoint(self, arg) - if (gui_tool_utils.hasMod(arg, gui_tool_utils.MODCONSTRAIN) + if (gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_constrain_key()) and self.constrainSeg): dist = DraftGeomUtils.findPerpendicular(self.point, self.shape, @@ -218,7 +218,7 @@ class Offset(gui_base_original.Modifier): self.ui.radiusValue.setFocus() self.ui.radiusValue.selectAll() if self.extendedCopy: - if not gui_tool_utils.hasMod(arg, gui_tool_utils.MODALT): + if not gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_alt_key()): self.finish() gui_tool_utils.redraw3DView() @@ -227,7 +227,7 @@ class Offset(gui_base_original.Modifier): copymode = False occmode = self.ui.occOffset.isChecked() self.param.SetBool("Offset_OCC", occmode) - if (gui_tool_utils.hasMod(arg, gui_tool_utils.MODALT) + if (gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_alt_key()) or self.ui.isCopy.isChecked()): copymode = True Gui.addModule("Draft") @@ -261,7 +261,7 @@ class Offset(gui_base_original.Modifier): 'FreeCAD.ActiveDocument.recompute()'] self.commit(translate("draft", "Offset"), _cmd_list) - if gui_tool_utils.hasMod(arg, gui_tool_utils.MODALT): + if gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_alt_key()): self.extendedCopy = True else: self.finish() diff --git a/src/Mod/Draft/draftguitools/gui_polygons.py b/src/Mod/Draft/draftguitools/gui_polygons.py index 16683eb432..2d768385b1 100644 --- a/src/Mod/Draft/draftguitools/gui_polygons.py +++ b/src/Mod/Draft/draftguitools/gui_polygons.py @@ -119,7 +119,7 @@ class Polygon(gui_base_original.Creator): if not DraftVecUtils.isNull(viewdelta): self.point = self.point.add(viewdelta.negative()) if self.step == 0: # choose center - if gui_tool_utils.hasMod(arg, gui_tool_utils.MODALT): + if gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_alt_key()): if not self.altdown: self.altdown = True self.ui.switchUi(True) @@ -142,7 +142,7 @@ class Polygon(gui_base_original.Creator): _c = DraftGeomUtils.findClosestCircle(self.point, cir) self.center = _c.Center self.arctrack.setCenter(self.center) - if gui_tool_utils.hasMod(arg, gui_tool_utils.MODALT): + if gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_alt_key()): if not self.altdown: self.altdown = True snapped = self.view.getObjectInfo((arg["Position"][0], @@ -181,7 +181,7 @@ class Polygon(gui_base_original.Creator): gui_tool_utils.getSupport(arg) (self.point, ctrlPoint, info) = gui_tool_utils.getPoint(self, arg) - if gui_tool_utils.hasMod(arg, gui_tool_utils.MODALT): + if gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_alt_key()): snapped = self.view.getObjectInfo((arg["Position"][0], arg["Position"][1])) if snapped: diff --git a/src/Mod/Draft/draftguitools/gui_rotate.py b/src/Mod/Draft/draftguitools/gui_rotate.py index 6c84a597c3..2072f02b1c 100644 --- a/src/Mod/Draft/draftguitools/gui_rotate.py +++ b/src/Mod/Draft/draftguitools/gui_rotate.py @@ -130,7 +130,7 @@ class Rotate(gui_base_original.Modifier): if not DraftVecUtils.isNull(viewdelta): self.point = self.point.add(viewdelta.negative()) if self.extendedCopy: - if not gui_tool_utils.hasMod(arg, gui_tool_utils.MODALT): + if not gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_alt_key()): self.step = 3 self.finish() if self.step == 0: @@ -223,8 +223,8 @@ class Rotate(gui_base_original.Modifier): else: self.angle = angle - self.firstangle self.rotate(self.ui.isCopy.isChecked() - or gui_tool_utils.hasMod(arg, gui_tool_utils.MODALT)) - if gui_tool_utils.hasMod(arg, gui_tool_utils.MODALT): + or gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_alt_key())) + if gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_alt_key()): self.extendedCopy = True else: self.finish(cont=None) diff --git a/src/Mod/Draft/draftguitools/gui_tool_utils.py b/src/Mod/Draft/draftguitools/gui_tool_utils.py index dbaac4be91..7ccf7c564e 100644 --- a/src/Mod/Draft/draftguitools/gui_tool_utils.py +++ b/src/Mod/Draft/draftguitools/gui_tool_utils.py @@ -44,9 +44,18 @@ from draftutils.messages import _wrn # Set modifier keys from the parameter database MODS = ["shift", "ctrl", "alt"] -MODCONSTRAIN = MODS[utils.get_param("modconstrain", 0)] -MODSNAP = MODS[utils.get_param("modsnap", 1)] -MODALT = MODS[utils.get_param("modalt", 2)] + + +def get_mod_constrain_key(): + return MODS[utils.get_param("modconstrain", 0)] + + +def get_mod_snap_key(): + return MODS[utils.get_param("modsnap", 1)] + + +def get_mod_alt_key(): + return MODS[utils.get_param("modalt", 2)] def format_unit(exp, unit="mm"): @@ -187,14 +196,14 @@ def get_point(target, args, noTracker=False): else: last = None - amod = has_mod(args, MODSNAP) - cmod = has_mod(args, MODCONSTRAIN) + smod = has_mod(args, get_mod_snap_key()) + cmod = has_mod(args, get_mod_constrain_key()) point = None if hasattr(Gui, "Snapper"): point = Gui.Snapper.snap(args["Position"], lastpoint=last, - active=amod, + active=smod, constrain=cmod, noTracker=noTracker) info = Gui.Snapper.snapInfo diff --git a/src/Mod/Draft/draftguitools/gui_trimex.py b/src/Mod/Draft/draftguitools/gui_trimex.py index 8051db5b85..151cd732f9 100644 --- a/src/Mod/Draft/draftguitools/gui_trimex.py +++ b/src/Mod/Draft/draftguitools/gui_trimex.py @@ -187,16 +187,15 @@ class Trimex(gui_base_original.Modifier): if arg["Key"] == "ESCAPE": self.finish() elif arg["Type"] == "SoLocation2Event": # mouse movement detection - self.shift = gui_tool_utils.hasMod(arg, - gui_tool_utils.MODCONSTRAIN) - self.alt = gui_tool_utils.hasMod(arg, gui_tool_utils.MODALT) - self.ctrl = gui_tool_utils.hasMod(arg, gui_tool_utils.MODSNAP) + self.shift = gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_constrain_key()) + self.alt = gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_alt_key()) + self.ctrl = gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_snap_key()) if self.extrudeMode: arg["ShiftDown"] = False elif hasattr(Gui, "Snapper"): Gui.Snapper.setSelectMode(not self.ctrl) self.point, cp, info = gui_tool_utils.getPoint(self, arg) - if gui_tool_utils.hasMod(arg, gui_tool_utils.MODSNAP): + if gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_snap_key()): self.snapped = None else: self.snapped = self.view.getObjectInfo((arg["Position"][0], @@ -226,10 +225,9 @@ class Trimex(gui_base_original.Modifier): elif arg["Type"] == "SoMouseButtonEvent": if (arg["State"] == "DOWN") and (arg["Button"] == "BUTTON1"): cursor = arg["Position"] - self.shift = gui_tool_utils.hasMod(arg, - gui_tool_utils.MODCONSTRAIN) - self.alt = gui_tool_utils.hasMod(arg, gui_tool_utils.MODALT) - if gui_tool_utils.hasMod(arg, gui_tool_utils.MODSNAP): + self.shift = gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_constrain_key()) + self.alt = gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_alt_key()) + if gui_tool_utils.hasMod(arg, gui_tool_utils.get_mod_snap_key()): self.snapped = None else: self.snapped = self.view.getObjectInfo((cursor[0],