import lib.screenful as screenful class Update: def __init__(self): self.message_queue = [] self.model = None self.view = None def update_model(self): data_change = False reset = False # check if we need to reset the model 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() data_change = True break # do update for msg in self.message_queue: msg.update_model(self.model) msg.clear_args() if reset: self.model.post_reset() self.view.view(self.model, data_change) self.message_queue = [] 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()