voicemeeter-compact/vmcompact/subject.py

37 lines
882 B
Python
Raw Normal View History

class Subject:
"""Adds support for observers"""
def __init__(self):
"""list of current observers"""
self._observers = list()
def notify(self, modifier=None):
"""run callbacks on update"""
[o.on_update(modifier) for o in self._observers]
def add(self, observer):
2022-07-16 22:11:28 +01:00
"""adds an observer to _observers"""
if observer not in self._observers:
self._observers.append(observer)
def remove(self, observer):
2022-07-16 22:11:28 +01:00
"""removes an observer from _observers"""
try:
self._observers.remove(observer)
except ValueError:
2022-07-16 22:11:28 +01:00
print(f"{observer} not in observers (ungridded)")
def get(self) -> list:
2022-07-16 22:11:28 +01:00
"""returns the current _observers"""
return self._observers
def clear(self):
2022-07-16 22:11:28 +01:00
"""clears the _observers list"""
self._observers.clear()