lexonomy_custom_editor/src/update.py

50 lines
1.1 KiB
Python
Raw Normal View History

import lib.screenful as screenful
2019-11-05 21:18:20 +00:00
class Update:
def __init__(self):
self.message_queue = []
self.model = None
self.view = None
def update_model(self):
# check if we need to reset the model
reset = False
2019-11-11 22:04:45 +00:00
for msg in self.message_queue:
if msg.reset():
reset = True
2019-11-11 22:04:45 +00:00
break
if reset:
self.model.pre_reset()
# check if we need to signal the data change
for msg in self.message_queue:
if msg.data_change():
screenful.changed()
break
# do update
2019-11-05 21:18:20 +00:00
for msg in self.message_queue:
msg.update_model(self.model)
if reset:
self.model.post_reset()
2019-11-05 21:18:20 +00:00
self.message_queue = []
self.view.view(self.model)
def schedule(self, msg):
self.message_queue.append(msg)
# for now, directly clearing message queue
self.update_model()
def set_model(self, model):
self.model = model
def set_view(self, view):
self.view = view
update = Update()