Schalter -use_local dazu. Keine Datenbankabfrage vom Server, wenn die Dateien schon da sind. EInige Attribute im config manager privatisiert. In die Logik auch die Abhängigkeit der comboboxen definiert. Controller ist jetzt ein Observer (der einzige)

This commit is contained in:
2024-02-12 17:19:42 +01:00
parent 8c6d91b463
commit b527faf086
6 changed files with 157 additions and 51 deletions
+17 -9
View File
@@ -32,20 +32,29 @@ messages = {
# Der Beobachter
class Observer:
def __init__(self, observable):
def __init__(self):
pass
def attach(self, observable):
observable.subscribe(self)
def notify(self, observable, *args, **kwargs):
print(f"Got {args} {kwargs} from {observable}")
dependent_cbs = self._model.get_dependent(args[0])
for cb in dependent_cbs:
model_values = self._model.callback(cb, None)
if model_values:
self.set_gui_dict(model_values)
self.refresh_gui()
class Controller():
class Controller(Observer):
"""
Class for manipulating the model and returning data for the view
"""
def __init__(self, model, view):
self._environment = None
self._observer = None
self.set_model(model)
self.set_view(view)
@@ -69,8 +78,8 @@ class Controller():
def set_model(self, model):
self._model = model
if self._observer == None:
self._observer = Observer(model)
self.attach(model)
def set_view(self, view):
self._view = view
@@ -157,15 +166,14 @@ class Controller():
if not self._model:
raise Exception("no model yet added")
# gib dem observer Bescheid, was aufgerufen wurde
if self._observer:
self._observer.notify(key,value)
# Logik um neue Werte in Oberfläche oder Modell zu füllen
model_values = self._model.callback(key, value)
if model_values:
self.set_gui_dict(model_values)
self.refresh_gui()
# gib dem observer Bescheid, was aufgerufen wurde
self.notify(self._model, key,value)
# reine Aktionen
if key == 'cb_speichern':