Files
cmdasana/ui/task_details.py
2017-12-10 22:48:14 -08:00

63 lines
2.0 KiB
Python

import urwid
class TaskDetails(object):
def __init__(self, task, stories, on_subtask_click, on_project_click,
on_comment):
self.task = task
self.on_subtask_click = on_subtask_click,
self.on_project_click = on_project_click,
self.on_comment = on_comment
self.details = urwid.Pile([
('pack', urwid.Text(('task', task.name()))),
('pack', urwid.Divider('-')),
('weight', 1, Memberships(task, on_subtask_click, on_project_click) \
.component()),
('pack', urwid.Divider('-')),
('pack', CustomFields(task).component()),
('pack', urwid.Divider('-')),
('weight', 20, urwid.Filler(urwid.Text(task.description()))),
('weight', 5, urwid.Filler(Stories(stories).component()))
])
def component(self):
return self.details
class Memberships(object):
def __init__(self, task, on_subtask_click, on_project_click):
components = [urwid.Button(
('project', p.name()),
on_press = lambda x: on_project_click(p.id())
) for p in task.projects()]
if task.parent():
components.append(urwid.Button(
('task', 'Subtask of: %s' % task.parent().name()),
on_press = lambda x: on_subtask_click(task.parent().id())
))
self.memberships = urwid.ListBox(
urwid.SimpleFocusListWalker(components)
)
def component(self):
return self.memberships
class CustomFields(object):
def __init__(self, task):
components = [urwid.Text('%s: %s' % (f.name(), f.string_value()))
for f in task.custom_fields()]
self.custom_fields = urwid.Pile(components)
def component(self):
return self.custom_fields
class Stories(object):
def __init__(self, stories):
components = [urwid.Text(s.string_value()) for s in stories]
self.stories = urwid.Pile(components)
def component(self):
return self.stories