63 lines
2.0 KiB
Python
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
|