From 9018e37852eb38c70206f05648f7d39fb47faef7 Mon Sep 17 00:00:00 2001 From: Sven Augustin Date: Wed, 21 Dec 2022 19:41:06 +0100 Subject: [PATCH] moved the piping of the bar menu into a separate file --- grum/barmenu.py | 24 ++++++++++++++++++++++++ grum/mdi/mdiarea.py | 25 ++++++------------------- 2 files changed, 30 insertions(+), 19 deletions(-) create mode 100644 grum/barmenu.py diff --git a/grum/barmenu.py b/grum/barmenu.py new file mode 100644 index 0000000..3621bc9 --- /dev/null +++ b/grum/barmenu.py @@ -0,0 +1,24 @@ +from PyQt5.QtWidgets import QAction + + +class BarMenu: + + def __init__(self, bar, name): + self.menu = menu = bar.addMenu(name) + menu.triggered[QAction].connect(self.on_select) + self.actions = {} + + def on_select(self, p): + txt = p.text() + func = self.actions[txt] + func() + + def addAction(self, name, func): + self.menu.addAction(name) + self.actions[name] = func + + def addSeparator(self): + self.menu.addSeparator() + + + diff --git a/grum/mdi/mdiarea.py b/grum/mdi/mdiarea.py index a451a03..7cd6c7a 100644 --- a/grum/mdi/mdiarea.py +++ b/grum/mdi/mdiarea.py @@ -3,6 +3,7 @@ from PyQt5.QtGui import QPainter from .. import assets from ..theme import MDI_BKG +from ..barmenu import BarMenu class MDIArea(QMdiArea): @@ -16,21 +17,12 @@ class MDIArea(QMdiArea): def _add_menu(self, bar): - menu = bar.addMenu("&Windows") - menu.addAction("Cascade") - menu.addAction("Tile") - menu.addAction("Tabbed") + self.menu = menu = BarMenu(bar, "&Windows") + menu.addAction("Cascade", self.on_cascade) + menu.addAction("Tile", self.on_tile) + menu.addAction("Tabbed", self.enable_tabbed_view) menu.addSeparator() - menu.addAction("Close All") - menu.triggered[QAction].connect(self.on_menu_select) - - self.actions = { - "Cascade": self.on_cascade, - "Tile": self.on_tile, - "Tabbed": self.enable_tabbed_view, - "Close All": self.closeAllSubWindows - } - + menu.addAction("Close All", self.closeAllSubWindows) def on_cascade(self): self.enable_subwindow_view() @@ -47,11 +39,6 @@ class MDIArea(QMdiArea): self.setViewMode(QMdiArea.TabbedView) - def on_menu_select(self, p): - txt = p.text() - self.actions[txt]() - - def paintEvent(self, _event): self._draw_watermark()