40 lines
		
	
	
		
			955 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			955 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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()
 | |
| 
 |