From a3fd3bc546376e40408ccc5078d30fab847023aa Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Fri, 21 Mar 2025 20:29:36 +0100 Subject: [PATCH 1/2] Draft: move statusbar widget hide delay to init_draft_statusbar.py With this PR both the delays for `show_draft_statusbar` and `hide_draft_statusbar` are defined in the same file. This is more consistent. --- src/Mod/Draft/InitGui.py | 5 +- .../Draft/draftutils/init_draft_statusbar.py | 57 ++++++++++++------- 2 files changed, 38 insertions(+), 24 deletions(-) diff --git a/src/Mod/Draft/InitGui.py b/src/Mod/Draft/InitGui.py index f05b5af564..0a2c8409e4 100644 --- a/src/Mod/Draft/InitGui.py +++ b/src/Mod/Draft/InitGui.py @@ -167,10 +167,7 @@ class DraftWorkbench(FreeCADGui.Workbench): FreeCADGui.Snapper.hide() from PySide import QtCore from draftutils import init_draft_statusbar - # Delay required in case the Draft WB is preloaded, - # else show_draft_statusbar will not yet be done: - t = QtCore.QTimer() - t.singleShot(700, init_draft_statusbar.hide_draft_statusbar) + init_draft_statusbar.hide_draft_statusbar() import WorkingPlane WorkingPlane._view_observer_stop() from draftutils import grid_observer diff --git a/src/Mod/Draft/draftutils/init_draft_statusbar.py b/src/Mod/Draft/draftutils/init_draft_statusbar.py index 8546edeb15..43ef0b63fd 100644 --- a/src/Mod/Draft/draftutils/init_draft_statusbar.py +++ b/src/Mod/Draft/draftutils/init_draft_statusbar.py @@ -287,6 +287,38 @@ def init_draft_statusbar_snap(): snap_action.addAction(Gui.Command.get(cmd).getAction()[0]) +def hide_draft_statusbar_scale(): + """ + hides draft statusbar scale widget + """ + mw = Gui.getMainWindow() + sb = mw.statusBar() + + scale_widget = sb.findChild(QtWidgets.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(QtWidgets.QToolBar, "draft_scale_widget") + if scale_widget: + scale_widget.hide() + + +def hide_draft_statusbar_snap(): + """ + hides draft statusbar snap widget + """ + mw = Gui.getMainWindow() + sb = mw.statusBar() + + snap_widget = sb.findChild(QtWidgets.QToolBar,"draft_snap_widget") + 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(QtWidgets.QToolBar,"draft_snap_widget") + if snap_widget: + snap_widget.hide() + + def show_draft_statusbar(): """ shows draft statusbar if present or initializes it @@ -327,25 +359,10 @@ def hide_draft_statusbar(): """ hides draft statusbar if present """ - mw = Gui.getMainWindow() - sb = mw.statusBar() - - # hide scale widget - scale_widget = sb.findChild(QtWidgets.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(QtWidgets.QToolBar, "draft_scale_widget") - if scale_widget: - scale_widget.hide() - - # hide snap widget - snap_widget = sb.findChild(QtWidgets.QToolBar,"draft_snap_widget") - 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(QtWidgets.QToolBar,"draft_snap_widget") - if snap_widget: - snap_widget.hide() + # Delay required in case the Draft WB is autoloaded, + # else show_draft_statusbar will not yet be done. + t = QtCore.QTimer() + t.singleShot(500, hide_draft_statusbar_scale) + t.singleShot(500, hide_draft_statusbar_snap) ## @} From 3bb1358f32cdb2056c8c722ca43e8a2e16153813 Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Fri, 21 Mar 2025 20:38:58 +0100 Subject: [PATCH 2/2] Remove import that has become superfluous --- src/Mod/Draft/InitGui.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Mod/Draft/InitGui.py b/src/Mod/Draft/InitGui.py index 0a2c8409e4..ee5431fd0b 100644 --- a/src/Mod/Draft/InitGui.py +++ b/src/Mod/Draft/InitGui.py @@ -165,7 +165,6 @@ class DraftWorkbench(FreeCADGui.Workbench): FreeCADGui.draftToolBar.Deactivated() if hasattr(FreeCADGui, "Snapper"): FreeCADGui.Snapper.hide() - from PySide import QtCore from draftutils import init_draft_statusbar init_draft_statusbar.hide_draft_statusbar() import WorkingPlane