# HG changeset patch # User Björn Ricks # Date 1306772014 -7200 # Node ID 04dbf4c9f29756f54bae2e4ed89dd181de726bb2 # Parent 3bea335c0f309c81f11dd865f32d3edb9628a445 Handle KeyboardInterrupt and shutdown getan carefully afterwards diff -r 3bea335c0f30 -r 04dbf4c9f297 ChangeLog --- a/ChangeLog Mon May 30 15:45:25 2011 +0200 +++ b/ChangeLog Mon May 30 18:13:34 2011 +0200 @@ -1,3 +1,8 @@ +2011-05-30 Björn Ricks + + * getan.py: Handle KeyboardInterrupt and shutdown getan + carefully afterwards + 2011-05-30 Björn Ricks * getan/states.py: Save the current project when switching to Running state. diff -r 3bea335c0f30 -r 04dbf4c9f297 getan.py --- a/getan.py Mon May 30 15:45:25 2011 +0200 +++ b/getan.py Mon May 30 18:13:34 2011 +0200 @@ -133,7 +133,7 @@ self.view.set_footer_text(" Running on '%s'" % project.desc, 'running') logger.debug('All running projects: %r' % self.running) - def stop_project(self, desc='-no description-'): + def stop_project(self, desc='-no description-', display=True): if not self.running: return project = self.running.pop() if not project: return @@ -141,8 +141,9 @@ % (project.desc, format_time(datetime.now()))) project.stop = datetime.now() self.backend.insert_project_entry(project, datetime.now(), desc) - self.update_entries(project) - self.update_project_list() + if display: + self.update_entries(project) + self.update_project_list() logger.debug('Still running projects: %r' % self.running) def add_project(self, key, description): @@ -156,7 +157,7 @@ def shutdown(self): for project in self.running: - self.stop_project() + self.stop_project(display=False) def main(): @@ -189,6 +190,8 @@ try: controller.main() + except KeyboardInterrupt: + pass finally: controller.shutdown()