From 113ec0de3dba0bdcad039c85df95e1db0fc596de Mon Sep 17 00:00:00 2001 From: Aaron Gutierrez Date: Sun, 19 Jul 2015 19:41:22 -0700 Subject: [PATCH] Tasks can be completed from the task list --- cmdasana.py | 21 ++++++++++++++++++--- ui.py | 15 +++++++++++++-- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/cmdasana.py b/cmdasana.py index 7fac8f8..2284c1d 100644 --- a/cmdasana.py +++ b/cmdasana.py @@ -39,15 +39,30 @@ class CmdAsana: task_list += tasks return task_list + def completeTask(self, task_id): + self.client.tasks.update(task_id, completed=True) + + def newTask(self): pass + def deleteTask(self): pass + def handleInput(key): if key in ('q', 'Q'): raise urwid.ExitMainLoop() +def showDetails(task_id): pass + +def registerSignals(): + urwid.register_signal(ui.TaskList, 'complete') + urwid.register_signal(ui.TaskEdit, 'complete') + def main(): cmdasana = CmdAsana() - task_list = cmdasana.allMyTasks() - - loop = urwid.MainLoop(ui.TaskList(task_list), unhandled_input=handleInput) + registerSignals() + + task_list = ui.TaskList(cmdasana.allMyTasks()) + urwid.connect_signal(task_list, 'complete', cmdasana.completeTask) + + loop = urwid.MainLoop(task_list, unhandled_input=handleInput) loop.run() diff --git a/ui.py b/ui.py index 499a60e..c05ba80 100644 --- a/ui.py +++ b/ui.py @@ -1,4 +1,5 @@ import urwid +from event import Event # TaskEdit modes EDIT = 'edit' @@ -7,13 +8,21 @@ LIST = 'list' class TaskList(urwid.ListBox): def __init__(self, tasks): self.tasks = tasks + task_widgets = urwid.Pile( [TaskEdit(task) for task in tasks] ) + for task_widget,_ in task_widgets.contents: + urwid.connect_signal(task_widget, 'complete', self.completeTask) + body = urwid.SimpleFocusListWalker([task_widgets]) super(TaskList, self).__init__(body) + def completeTask(self, task_id): + del self.focus.contents[self.focus.focus_position] + urwid.emit_signal(self, 'complete', task_id) + def keypress(self, size, key): # The ListBox will handle scrolling for us, so we trick it into thinking # it's being passed arrow keys @@ -32,7 +41,9 @@ class TaskList(urwid.ListBox): class TaskEdit(urwid.Edit): mode = LIST def __init__(self, task): + self.task = task super(TaskEdit, self).__init__(task["name"]) + def keypress(self, size, key): if self.mode == EDIT: @@ -50,8 +61,8 @@ class TaskEdit(urwid.Edit): self.set_edit_text(self.caption) self.set_caption('') elif key == 'enter': - self.set_caption(self.caption + ' [done]') + urwid.emit_signal(self, 'complete', self.task['id']) elif key in ('l', 'tab'): - self.set_caption(self.caption + ' [details]') + pass else: return key