# HG changeset patch # User Björn Ricks # Date 1314857966 -7200 # Node ID 19e9d76a10fb55d0a0f076e92d663ca66133087e # Parent 159a1ef0fd7cd10cbe7aa4e332c74069ee38451c Fix: Recognize first letter to choose a project The first key must be checked if it's a key for a project. If yes switch directly to RunningProjectState else use SelectProjectState and wait for additional letters diff -r 159a1ef0fd7c -r 19e9d76a10fb getan/states.py --- a/getan/states.py Wed Aug 31 15:43:12 2011 +0200 +++ b/getan/states.py Thu Sep 01 08:19:26 2011 +0200 @@ -82,7 +82,8 @@ else: if len(key) > 0: - return SelectProjectState(self.controller, self.view, key[0]) + select_proj = SelectProjectState(self.controller, self.view, key[0]) + return select_proj.check_key() return self @@ -93,7 +94,6 @@ class SelectProjectState(State): - def __init__(self, controller, view, key): super(SelectProjectState, self).__init__(controller, view) self.proj_keys = key @@ -105,6 +105,18 @@ def set_footer_text(self): self.view.set_footer_text("Selecting project from key: %s" % self.proj_keys, "running") + def check_key(self): + proj = self.controller.project_by_key(self.proj_keys) + if proj: + self.reset() + self.view.select_project(proj) + self.controller.start_project(self.view.item_in_focus()) + self.controller.update_entries( + self.view.item_in_focus()) + return RunningProjectsState(self.controller, self.view, proj) + return self + + def keypress(self, key): if 'esc' in key: self.reset() @@ -114,14 +126,7 @@ if len(key) > 0: self.proj_keys += key[0] self.set_footer_text() - proj = self.controller.project_by_key(self.proj_keys) - if proj: - self.reset() - self.view.select_project(proj) - self.controller.start_project(self.view.item_in_focus()) - self.controller.update_entries( - self.view.item_in_focus()) - return RunningProjectsState(self.controller, self.view, proj) + return self.check_key() return self class ExitState(ProjectState):