From c55fb584eb67418f9f55780bffd0ec7eeed08cc0 Mon Sep 17 00:00:00 2001 From: triplus Date: Mon, 3 Apr 2017 23:22:27 +0200 Subject: [PATCH] Optimized selector menu behaviour --- InitGui.py | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/InitGui.py b/InitGui.py index 4c7375e..6360d12 100644 --- a/InitGui.py +++ b/InitGui.py @@ -40,6 +40,10 @@ def selectorToolbar(): dList = "ArchWorkbench,PartDesignWorkbench" p = App.ParamGet("User parameter:BaseApp/SelectorToolbar") + aMenu = QtGui.QAction(mw) + sMenu = QtGui.QMenu() + aMenu.setMenu(sMenu) + def onSelector(a): """Activate workbench on selection.""" @@ -128,29 +132,26 @@ def selectorToolbar(): def selectorMenu(): """Selector button with menu.""" - a = QtGui.QAction(mw) - menu = QtGui.QMenu() - a.setMenu(menu) + sMenu.clear() active = Gui.activeWorkbench().__class__.__name__ keys = list(actions) keys.sort() for key in keys: - menu.addAction(actions[key]) + sMenu.addAction(actions[key]) if key == active: - menu.setDefaultAction(actions[key]) - a.setText(actions[key].text()) - a.setIcon(actions[key].icon()) + sMenu.setDefaultAction(actions[key]) + aMenu.setText(actions[key].text()) + aMenu.setIcon(actions[key].icon()) else: pass - return a - def onWorkbenchActivated(): """Populate the selector toolbar.""" wbActions() + selectorMenu() menu = p.GetString("Menu") enabled = p.GetString("Enabled", dList) @@ -167,10 +168,14 @@ def selectorToolbar(): if tb: tb.clear() + if menu == "Front" or menu == "End" and active in enabled: + enabled.remove(active) + else: + pass + if menu == "Front": - a = selectorMenu() - tb.addAction(a) - w = tb.widgetForAction(a) + tb.addAction(aMenu) + w = tb.widgetForAction(aMenu) w.setPopupMode(QtGui.QToolButton .ToolButtonPopupMode .InstantPopup) @@ -192,9 +197,8 @@ def selectorToolbar(): pass if menu == "End": - a = selectorMenu() - tb.addAction(a) - w = tb.widgetForAction(a) + tb.addAction(aMenu) + w = tb.widgetForAction(aMenu) w.setPopupMode(QtGui.QToolButton .ToolButtonPopupMode .InstantPopup)