comparison getan/states.py @ 565:2c6ff55be046

Each state stores the controller and the controller knows the config. So we do not need to cache the config reference in the states.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 28 Sep 2020 15:07:32 +0200
parents 5ec211c172ed
children
comparison
equal deleted inserted replaced
564:c8e63e919a90 565:2c6ff55be046
40 } 40 }
41 41
42 def __init__(self, controller, view): 42 def __init__(self, controller, view):
43 self.controller = controller 43 self.controller = controller
44 self.view = view 44 self.view = view
45 self.config = controller.get_config()
46 self.set_focus() 45 self.set_focus()
47 46
48 def keypress(self, size, key): 47 def keypress(self, size, key):
49 """Redirects user input to the current view""" 48 """Redirects user input to the current view"""
50 self.view.keypress(size, key) 49 self.view.keypress(size, key)
66 65
67 66
68 class ProjectState(State): 67 class ProjectState(State):
69 68
70 def handle_input(self, input): 69 def handle_input(self, input):
71 keys = self.config.get_keybinding() 70 keys = self.controller.get_config().get_keybinding()
72 logger.debug("ProjectState: handle input '%r'" % input) 71 logger.debug("ProjectState: handle input '%r'" % input)
73 if keys.get_switch_time_mode() in input: 72 if keys.get_switch_time_mode() in input:
74 self.view.switch_time_mode() 73 self.view.switch_time_mode()
75 return True 74 return True
76 75
102 'choose_proj': _('Choose a project: '), 101 'choose_proj': _('Choose a project: '),
103 } 102 }
104 103
105 def handle_input(self, key): 104 def handle_input(self, key):
106 logger.debug("PausedProjectsState: handle key '%r'" % key) 105 logger.debug("PausedProjectsState: handle key '%r'" % key)
107 keys = self.config.get_keybinding() 106 keys = self.controller.get_config().get_keybinding()
108 ret = super(PausedProjectsState, self).handle_input(key) 107 ret = super(PausedProjectsState, self).handle_input(key)
109 if ret: 108 if ret:
110 return True 109 return True
111 110
112 if keys.get_enter() in key: 111 if keys.get_enter() in key:
173 RunningProjectsState(self.controller, self.view, 172 RunningProjectsState(self.controller, self.view,
174 proj)) 173 proj))
175 return True 174 return True
176 175
177 def handle_input(self, key): 176 def handle_input(self, key):
178 keys = self.config.get_keybinding() 177 keys = self.controller.get_config().get_keybinding()
179 if keys.get_escape() in key: 178 if keys.get_escape() in key:
180 self.reset() 179 self.reset()
181 self.set_next_state( 180 self.set_next_state(
182 PausedProjectsState(self.controller, self.view)) 181 PausedProjectsState(self.controller, self.view))
183 return True 182 return True
260 signal.signal(signal.SIGALRM, self.handle_signal) 259 signal.signal(signal.SIGALRM, self.handle_signal)
261 signal.alarm(1) 260 signal.alarm(1)
262 261
263 def handle_signal(self, signum, frame): 262 def handle_signal(self, signum, frame):
264 proj = self.project 263 proj = self.project
265 keys = self.config.get_keybinding() 264 keys = self.controller.get_config().get_keybinding()
266 265
267 if not proj: 266 if not proj:
268 return 267 return
269 268
270 if not self.break_start: 269 if not self.break_start:
290 signal.signal(signal.SIGALRM, self.handle_signal) 289 signal.signal(signal.SIGALRM, self.handle_signal)
291 signal.alarm(1) 290 signal.alarm(1)
292 291
293 def handle_input(self, key): 292 def handle_input(self, key):
294 logger.debug("RunningProjectsState: handle key '%r'" % key) 293 logger.debug("RunningProjectsState: handle key '%r'" % key)
295 keys = self.config.get_keybinding() 294 keys = self.controller.get_config().get_keybinding()
296 ret = super(RunningProjectsState, self).handle_input(key) 295 ret = super(RunningProjectsState, self).handle_input(key)
297 if ret: 296 if ret:
298 return ret 297 return ret
299 298
300 if keys.get_enter() in key: 299 if keys.get_enter() in key:
351 self.state = state 350 self.state = state
352 self.footer = footer 351 self.footer = footer
353 352
354 def handle_input(self, key): 353 def handle_input(self, key):
355 logger.debug("HandleUserInputState: handle key '%r'" % key) 354 logger.debug("HandleUserInputState: handle key '%r'" % key)
356 keys = self.config.get_keybinding() 355 keys = self.controller.get_config().get_keybinding()
357 356
358 if keys.get_escape() in key: 357 if keys.get_escape() in key:
359 return self.exit() 358 return self.exit()
360 elif keys.get_enter() in key: 359 elif keys.get_enter() in key:
361 return self.enter() 360 return self.enter()
504 super(EntryListState, self).__init__(controller, view) 503 super(EntryListState, self).__init__(controller, view)
505 self.projectlist_state = state 504 self.projectlist_state = state
506 505
507 def handle_input(self, key): 506 def handle_input(self, key):
508 logger.debug("EntryListState: pressed key '%r'" % key) 507 logger.debug("EntryListState: pressed key '%r'" % key)
509 keys = self.config.get_keybinding() 508 keys = self.controller.get_config().get_keybinding()
510 509
511 if keys.get_switch_lists() in key: 510 if keys.get_switch_lists() in key:
512 self.view.clear() 511 self.view.clear()
513 self.set_next_state(self.projectlist_state) 512 self.set_next_state(self.projectlist_state)
514 self.controller.view.set_focus(0) 513 self.controller.view.set_focus(0)
547 logger.info("Handling DefaultEntryListState input") 546 logger.info("Handling DefaultEntryListState input")
548 ret = super(DefaultEntryListState, self).handle_input(key) 547 ret = super(DefaultEntryListState, self).handle_input(key)
549 if ret: 548 if ret:
550 return ret 549 return ret
551 550
552 keys = self.config.get_keybinding() 551 keys = self.controller.get_config().get_keybinding()
553 if keys.get_escape() in key: 552 if keys.get_escape() in key:
554 self.view.clear() 553 self.view.clear()
555 self.set_next_state(self.projectlist_state) 554 self.set_next_state(self.projectlist_state)
556 self.controller.view.set_focus(0) 555 self.controller.view.set_focus(0)
557 return True 556 return True
620 self.old_state = old_state 619 self.old_state = old_state
621 if not self.entries: 620 if not self.entries:
622 self.entries = [x.item for x in self.view.selection] 621 self.entries = [x.item for x in self.view.selection]
623 622
624 def handle_input(self, key): 623 def handle_input(self, key):
625 keys = self.config.get_keybinding() 624 keys = self.controller.get_config().get_keybinding()
626 if 'y' in key: 625 if 'y' in key:
627 if self.entries: 626 if self.entries:
628 self.controller.delete_entries(self.entries) 627 self.controller.delete_entries(self.entries)
629 new_focus = self.renew_focus() 628 new_focus = self.renew_focus()
630 self.projectlist_state.view.update_rows() 629 self.projectlist_state.view.update_rows()
688 logger.debug("MoveEntryState: prepared entries to be " 687 logger.debug("MoveEntryState: prepared entries to be "
689 "moved to project '%s'" % self.proj.desc) 688 "moved to project '%s'" % self.proj.desc)
690 self.view.set_footer_text(self.msg('really'), 'question') 689 self.view.set_footer_text(self.msg('really'), 'question')
691 690
692 def handle_input(self, key): 691 def handle_input(self, key):
693 keys = self.config.get_keybinding() 692 keys = self.controller.get_config().get_keybinding()
694 if 'y' in key and self.proj: 693 if 'y' in key and self.proj:
695 logger.debug("MoveEntryState: move selected entries.") 694 logger.debug("MoveEntryState: move selected entries.")
696 self.controller.move_entries(self.entries, self.proj) 695 self.controller.move_entries(self.entries, self.proj)
697 new_focus = self.renew_focus() 696 new_focus = self.renew_focus()
698 self.view.clear() 697 self.view.clear()
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)