Mercurial > getan > getan
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() |