|
|
|
@ -7,18 +7,28 @@ class Update:
|
|
|
|
|
self.view = None
|
|
|
|
|
|
|
|
|
|
def update_model(self):
|
|
|
|
|
# any update resets menu_location, except if it explicitly defines it
|
|
|
|
|
# check if we need to reset the model
|
|
|
|
|
reset = False
|
|
|
|
|
for msg in self.message_queue:
|
|
|
|
|
if msg.reset():
|
|
|
|
|
self.model.reset()
|
|
|
|
|
reset = True
|
|
|
|
|
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
|
|
|
|
|
for msg in self.message_queue:
|
|
|
|
|
msg.update_model(self.model)
|
|
|
|
|
|
|
|
|
|
if reset:
|
|
|
|
|
self.model.post_reset()
|
|
|
|
|
|
|
|
|
|
self.message_queue = []
|
|
|
|
|
self.view.view(self.model)
|
|
|
|
|