Browse Source

Added dispose routine for the menubar

Dispose_Widget
Eugenio Parodi 2 years ago
parent
commit
f7e0f3971a
  1. 8
      TermTk/TTkCore/shortcut.py
  2. 9
      TermTk/TTkWidgets/frame.py
  3. 10
      TermTk/TTkWidgets/menubar.py

8
TermTk/TTkCore/shortcut.py

@ -75,6 +75,14 @@ class TTkShortcut():
TTkShortcut._shortcuts[key] = []
TTkShortcut._shortcuts[key].append(self)
def dispose(self):
self.activated.clear()
if self._key in TTkShortcut._shortcuts:
if self in TTkShortcut._shortcuts[self._key]:
TTkShortcut._shortcuts[self._key].remove(self)
if not TTkShortcut._shortcuts[self._key]:
del TTkShortcut._shortcuts[self._key]
@staticmethod
def processKey(key, focusWidget):
# TTkLog.debug(f"{str(key)=}")

9
TermTk/TTkWidgets/frame.py

@ -72,6 +72,15 @@ class TTkFrame(TTkContainer):
super().__init__(*args, **kwargs)
self.setBorder(self._border)
def dispose(self):
if self._menubarTop:
self._menubarTop.dispose()
if self._menubarBottom:
self._menubarBottom.dispose()
self._menubarTop = None
self._menubarBottom = None
super().dispose()
def newMenubarTop(self):
'''newMenubarTop

10
TermTk/TTkWidgets/menubar.py

@ -80,9 +80,10 @@ class TTkMenuBarButton(TTkMenuButton):
class TTkMenuBarLayout(TTkHBoxLayout):
'''TTkMenuBarLayout'''
__slots__ = ('_itemsLeft', '_itemsCenter', '_itemsRight', '_buttons')
__slots__ = ('_itemsLeft', '_itemsCenter', '_itemsRight', '_buttons', '_shortcuts')
def __init__(self, *args, **kwargs):
self._buttons = []
self._shortcuts = []
TTkHBoxLayout.__init__(self, *args, **kwargs)
self._itemsLeft = TTkHBoxLayout()
self._itemsCenter = TTkHBoxLayout()
@ -101,6 +102,7 @@ class TTkMenuBarLayout(TTkHBoxLayout):
for ch in shortcuts:
shortcut = TTkShortcut(key=TTkK.ALT | ord(ch.upper()))
shortcut.activated.connect(button.shortcutEvent)
self._shortcuts.append(shortcut)
self._mbItems(alignment).addWidget(button)
self._buttons.append(button)
self.update()
@ -121,3 +123,9 @@ class TTkMenuBarLayout(TTkHBoxLayout):
self._itemsLeft.removeItems(self._itemsLeft.children())
self._itemsCenter.removeItems(self._itemsCenter.children())
self._itemsRight.removeItems(self._itemsRight.children())
def dispose(self):
for sc in self._shortcuts:
sc.dispose()
self._shortcuts = []

Loading…
Cancel
Save