import lib.screenful as screenful class Update: def __init__(self): self.message_queue = [] self.model = None self.view = None def update_model(self): # any update resets menu_location, except if it explicitly defines it for msg in self.message_queue: if msg.reset(): self.model.reset() break for msg in self.message_queue: if msg.data_change(): screenful.changed() for msg in self.message_queue: msg.update_model(self.model) 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()