import lib.screenful as screenful 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 for msg in self.message_queue: if msg.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) 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()