Mercurial > getan > getan
comparison getan/states.py @ 206:9f1c45a2126e
Update coding style for states
author | Björn Ricks <bjoern.ricks@intevation.de> |
---|---|
date | Fri, 05 Apr 2013 19:46:08 +0200 |
parents | a1b00ffea269 |
children | 910136052631 |
comparison
equal
deleted
inserted
replaced
205:a1b00ffea269 | 206:9f1c45a2126e |
---|---|
147 | 147 |
148 def reset(self): | 148 def reset(self): |
149 self.view.set_footer_text("", "entry_footer") | 149 self.view.set_footer_text("", "entry_footer") |
150 | 150 |
151 def set_footer_text(self): | 151 def set_footer_text(self): |
152 self.view.set_footer_text("Selecting project from key: %s" % self.proj_keys, "running") | 152 self.view.set_footer_text("Selecting project from key: %s" % \ |
153 self.proj_keys, "running") | |
153 | 154 |
154 def check_key(self, key): | 155 def check_key(self, key): |
155 return len(self.controller.find_projects_by_key(key)) | 156 return len(self.controller.find_projects_by_key(key)) |
156 | 157 |
157 def select_project(self): | 158 def select_project(self): |
257 proj.desc), | 258 proj.desc), |
258 'running') | 259 'running') |
259 self.controller.loop.draw_screen() | 260 self.controller.loop.draw_screen() |
260 self.sec = self.sec + 1 | 261 self.sec = self.sec + 1 |
261 else: | 262 else: |
262 self.view.set_footer_text( | 263 self.view.set_footer_text(self.msg('paused') % |
263 self.msg('paused') % | 264 (human_time((datetime.now() - self.break_start).seconds), |
264 (human_time((datetime.now()-self.break_start).seconds), | |
265 self.msg('continue') % keys.get_project_pause()), | 265 self.msg('continue') % keys.get_project_pause()), |
266 'paused_running') | 266 'paused_running') |
267 self.controller.loop.draw_screen() | 267 self.controller.loop.draw_screen() |
268 | 268 |
269 signal.signal(signal.SIGALRM, self.handle_signal) | 269 signal.signal(signal.SIGALRM, self.handle_signal) |
276 if ret: | 276 if ret: |
277 return ret | 277 return ret |
278 | 278 |
279 if keys.get_enter() in key: | 279 if keys.get_enter() in key: |
280 return self.stop() | 280 return self.stop() |
281 | |
281 if keys.get_add_time() in key: | 282 if keys.get_add_time() in key: |
282 self.view.set_footer_text(self.msg('add_time'), | 283 self.view.set_footer_text(self.msg('add_time'), |
283 'question', 1) | 284 'question', 1) |
284 self.view.frame.set_focus('footer') | 285 self.view.frame.set_focus('footer') |
285 self.set_next_state(AddTimeState(self.controller, self.view, self)) | 286 self.set_next_state(AddTimeState(self.controller, self.view, self)) |
310 def stop(self): | 311 def stop(self): |
311 signal.alarm(0) | 312 signal.alarm(0) |
312 self.view.select() | 313 self.view.select() |
313 if self.break_start: | 314 if self.break_start: |
314 proj = self.project | 315 proj = self.project |
315 if proj: proj.start += datetime.now() - self.break_start | 316 if proj: |
317 proj.start += datetime.now() - self.break_start | |
316 self.controller.view.set_footer_text(self.msg('description'),'question',1) | 318 self.controller.view.set_footer_text(self.msg('description'),'question',1) |
317 self.controller.view.get_frame().set_focus('footer') | 319 self.controller.view.get_frame().set_focus('footer') |
318 self.set_next_state(DescriptionProjectsState(self.controller, self.view, | 320 self.set_next_state(DescriptionProjectsState(self.controller, self.view, |
319 self, self.controller.view.get_frame().get_footer())) | 321 self, self.controller.view.get_frame().get_footer())) |
320 return True | 322 return True |
321 | 323 |
322 | 324 |
323 class HandleUserInputState(State): | 325 class HandleUserInputState(State): |
326 | |
324 def __init__(self, controller, view, state, footer): | 327 def __init__(self, controller, view, state, footer): |
325 super(HandleUserInputState, self).__init__(controller, view) | 328 super(HandleUserInputState, self).__init__(controller, view) |
326 self.state = state | 329 self.state = state |
327 self.footer = footer | 330 self.footer = footer |
328 | 331 |
329 def handle_input(self, key): | 332 def handle_input(self, key): |
330 logger.debug("HandleUserInputState: handle key '%r'" % key) | 333 logger.debug("HandleUserInputState: handle key '%r'" % key) |
331 pos = self.footer.edit_pos | 334 pos = self.footer.edit_pos |
332 keys = self.config.get_keybinding() | 335 keys = self.config.get_keybinding() |
375 self.footer.insert_text(text) | 378 self.footer.insert_text(text) |
376 return True | 379 return True |
377 | 380 |
378 | 381 |
379 class BaseTimeState(HandleUserInputState): | 382 class BaseTimeState(HandleUserInputState): |
383 | |
380 def __init__(self, controller, view, running_state): | 384 def __init__(self, controller, view, running_state): |
381 super(BaseTimeState, self).__init__(controller, view, running_state, | 385 super(BaseTimeState, self).__init__(controller, view, running_state, |
382 view.frame.get_footer()) | 386 view.frame.get_footer()) |
383 self.project = running_state.project | 387 self.project = running_state.project |
384 | 388 |
394 "adding/subtracting time: '%r'" % key) | 398 "adding/subtracting time: '%r'" % key) |
395 return True | 399 return True |
396 | 400 |
397 | 401 |
398 class AddTimeState(BaseTimeState): | 402 class AddTimeState(BaseTimeState): |
399 def enter(self): | 403 |
400 minutes = safe_int(self.view.frame.get_footer().get_edit_text()) | 404 def enter(self): |
401 project = self.project | 405 minutes = safe_int(self.view.frame.get_footer().get_edit_text()) |
402 project.start -= timedelta(minutes=minutes) | 406 project = self.project |
407 project.start -= timedelta(minutes=minutes) | |
403 self.state.sec += minutes * 60 | 408 self.state.sec += minutes * 60 |
404 logger.info("AddTimeState: add %d minutes to project '%s'" | 409 logger.info("AddTimeState: add %d minutes to project '%s'" |
405 % (minutes, project.desc)) | 410 % (minutes, project.desc)) |
406 self.view._total_time() | 411 self.view._total_time() |
407 self.set_next_state(self.state) | 412 self.set_next_state(self.state) |
408 return True | 413 return True |
409 | 414 |
410 | 415 |
411 class SubtractTimeState(BaseTimeState): | 416 class SubtractTimeState(BaseTimeState): |
412 def enter(self): | 417 |
413 minutes = safe_int(self.view.frame.get_footer().get_edit_text()) | 418 def enter(self): |
419 minutes = safe_int(self.view.frame.get_footer().get_edit_text()) | |
414 sec = minutes * 60 | 420 sec = minutes * 60 |
415 if sec > self.state.sec: | 421 if sec > self.state.sec: |
416 self.view._total_time() | 422 self.view._total_time() |
417 return self.state | 423 return self.state |
418 project = self.project | 424 project = self.project |
419 project.start += timedelta(minutes=minutes) | 425 project.start += timedelta(minutes=minutes) |
420 self.state.sec -= sec | 426 self.state.sec -= sec |
421 logger.info("SubtractTimeState: subtract %d minutes from project '%s'" | 427 logger.info("SubtractTimeState: subtract %d minutes from project '%s'" |
422 % (minutes, project.desc)) | 428 % (minutes, project.desc)) |
423 self.view._total_time() | 429 self.view._total_time() |
424 self.set_next_state(self.state) | 430 self.set_next_state(self.state) |
425 return True | 431 return True |
426 | 432 |
427 | 433 |
448 signal.alarm(1) | 454 signal.alarm(1) |
449 return super(DescriptionProjectsState, self).exit() | 455 return super(DescriptionProjectsState, self).exit() |
450 | 456 |
451 | 457 |
452 class EntryListState(State): | 458 class EntryListState(State): |
459 | |
453 def __init__(self, state, controller, view): | 460 def __init__(self, state, controller, view): |
454 super(EntryListState, self).__init__(controller, view) | 461 super(EntryListState, self).__init__(controller, view) |
455 self.projectlist_state = state | 462 self.projectlist_state = state |
456 | 463 |
457 def handle_input(self, key): | 464 def handle_input(self, key): |
458 logger.debug("EntryListState: pressed key '%r'" % key) | 465 logger.debug("EntryListState: pressed key '%r'" % key) |
459 keys = self.config.get_keybinding() | 466 keys = self.config.get_keybinding() |
467 | |
460 if keys.get_switch_lists() in key: | 468 if keys.get_switch_lists() in key: |
461 self.view.clear() | 469 self.view.clear() |
462 self.set_next_state(self.projectlist_state) | 470 self.set_next_state(self.projectlist_state) |
463 self.controller.view.set_focus(0) | 471 self.controller.view.set_focus(0) |
464 return True | 472 return True |
471 self.view.select() | 479 self.view.select() |
472 return True | 480 return True |
473 | 481 |
474 def renew_focus(self): | 482 def renew_focus(self): |
475 e_len = self.view.row_count() | 483 e_len = self.view.row_count() |
476 f = self.view.focused | 484 f = self.view.focused |
477 if f >= e_len: | 485 if f >= e_len: |
478 f = e_len - 1 | 486 f = e_len - 1 |
479 self.view.focused = f | 487 self.view.focused = f |
480 self.view.update_focus(f) | 488 self.view.update_focus(f) |
481 | 489 |
519 | 527 |
520 return False | 528 return False |
521 | 529 |
522 | 530 |
523 class DeleteEntryState(EntryListState): | 531 class DeleteEntryState(EntryListState): |
532 | |
524 messages = { | 533 messages = { |
525 'delete' : _("Really delete this entry? (y/n)"), | 534 'delete' : _("Really delete this entry? (y/n)"), |
526 } | 535 } |
527 | 536 |
528 def __init__(self, state, controller, view, entries=None): | 537 def __init__(self, state, controller, view, entries=None): |
670 self.view, key)) | 679 self.view, key)) |
671 return True | 680 return True |
672 | 681 |
673 | 682 |
674 class AddProjectDescriptionState(AlterProjectState): | 683 class AddProjectDescriptionState(AlterProjectState): |
684 | |
675 messages = { | 685 messages = { |
676 'proj_description': _('Insert a description for project: '), | 686 'proj_description': _('Insert a description for project: '), |
677 'choose_proj': _(" Choose a project.") | 687 'choose_proj': _(" Choose a project.") |
678 } | 688 } |
679 | 689 |