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
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)