27 lines
620 B
Python
27 lines
620 B
Python
from typing import Callable
|
|
|
|
from raven.plugins.domain.raction import RAction
|
|
|
|
|
|
class RMenu():
|
|
def __init__(self, label: str):
|
|
super(RMenu, self).__init__()
|
|
self.label = label
|
|
self.actions = []
|
|
self.listeners = []
|
|
|
|
def add_action(self, action: RAction):
|
|
self.actions.append(action)
|
|
self._notify()
|
|
|
|
def clear(self):
|
|
self.actions.clear()
|
|
self._notify()
|
|
|
|
def _notify(self):
|
|
for listener in self.listeners:
|
|
listener()
|
|
|
|
def add_change_listener(self, listener: Callable[[], None]):
|
|
self.listeners.append(listener)
|