def task_deleted(titles): space = st.SText.space() m1 = st.SText("任务") task = st.SText(unicode(titles), color=st.SColor.yellow) m2 = st.SText("已删除") msg = st.STextList(m1, space, task, space, m2) return msg
def _task_detail_title(titles, indent=0, button_show_desc=True, button_edit_title=False): # type: (TitleList, int, bool, bool) -> st.STextList ind = st.SText.indent(indent) space = st.SText.space() newline = st.SText.newline() t = Task.task_by_title_list(titles) ts = titles icon = TaskView._task_detail_icon_done(ts.copy(), t.done) title = TaskView._task_detail_title_text(ts.copy(), t.done) show_desc = st.SText() if t.description != '' and button_show_desc: show_desc = TaskView._task_detail_button_show_description( ts.copy()) edit_title = st.SText() if button_edit_title: edit_title = TaskView._task_detail_icon_edit_title(ts.copy()) r = st.STextList(ind, icon, space, title, space, show_desc, edit_title, newline) return r
def _task_detail(titles, indent=0): detail_top = TaskView._task_detail_top_task(titles, indent=indent) detail_subs = TaskView._task_detail_sub_tasks(titles, indent=indent) r = st.STextList() r.extend(detail_top) r.extend(detail_subs) return r
def _task_detail_sub(titles, indent=0): # type: (TitleList, int) -> st.STextList title = TaskView._task_detail_title(titles.copy(), indent=indent) subs = TaskView._task_detail_sub_tasks(titles.copy(), indent) r = st.STextList() r.extend(title) r.extend(subs) return r
def _task_detail_main_title(titles, title_text): # type: (TitleList, unicode) -> st.STextList main_title = st.SText(title_text, color=st.SColor.green, styles=[st.SStyle.bold]) add = TaskView._task_detail_button_add(titles.copy()) msg = st.STextList(main_title, add) msg.append(st.SText.newline()) return msg
def _task_list_done(): r = st.STextList() root = TaskRoot.root undones, dones = root.split_sub_tasks_by_done() for t in reversed(dones): ts = TitleList(t.title) item = TaskView._task_detail_title(ts, indent=4) r.extend(item) return r
def task_detail(titles): # type: (TitleList) -> st.STextList title_text = "任务详细信息" main_title = TaskView._task_detail_main_title(titles, title_text) detail = TaskView._task_detail(titles, indent=4) msg = st.STextList() msg.extend(main_title) msg.extend(detail) return msg
def task_list_done(): # type: () -> st.STextList title_text = "已完成任务列表" titles = TitleList() main_title = TaskView._task_detail_main_title(titles, title_text) detail = TaskView._task_list_done() msg = st.STextList() msg.extend(main_title) msg.extend(detail) return msg
def task_detail_all(): # type: () -> st.STextList title_text = "搬砖信息详细信息" titles = TitleList() main_title = TaskView._task_detail_main_title(titles, title_text) subs = TaskView._task_detail_sub_tasks(titles, indent=0) msg = st.STextList() msg.extend(main_title) msg.extend(subs) return msg
def task_list(): # type: () -> st.STextList title_text = "搬砖信息列表" titles = TitleList() main_title = TaskView._task_detail_main_title(titles, title_text) detail = TaskView._task_list_undone() more_button = TaskView._task_list_show_undone() msg = st.STextList() msg.extend(main_title) msg.extend(detail) msg.extend(more_button) return msg
def _task_detail_button_show_description(titles): # type: (TitleList) -> st.SText show = st.SText("[…]", color=st.SColor.white) h1 = st.SText("点击以查看") h2 = st.SText("任务描述", color=st.SColor.yellow) add_hover = st.STextList(h1, h2) show.hover_text = add_hover command = "!!task detail {}".format(unicode(titles)) show.set_click_command(command) return show
def _task_detail_description(titles, indent=0): # type: (TitleList, int) -> st.STextList ind = st.SText.indent(indent) space = st.SText.space() newline = st.SText.newline() task = Task.task_by_title_list(titles.copy()) r = st.STextList() if task.description != '': d = st.SText(task.description, color=st.SColor.gray) edit = TaskView._task_detail_icon_edit_desc(titles) r.append(ind, d, space, edit, newline) return r
def _task_detail_title_text(titles, done): # type: (TitleList, bool) -> st.SText title = titles.peek_tail() styles = [st.SStyle.strikethrough] if done else None color = st.SColor.darkGray if done else st.SColor.yellow r = st.SText(title, color=color, styles=styles) h1 = st.SText("点击以查看") h2 = st.SText("任务详情", st.SColor.yellow) hover = st.STextList(h1, h2) r.hover_text = hover command = "!!task detail {}".format(unicode(titles)) r.set_click_command(command) return r
def _task_detail_button_add(titles): # type: (TitleList) -> st.SText add = st.SText("[+]", color=st.SColor.red) h1 = st.SText("点击以快速") h2 = st.SText("添加子任务", color=st.SColor.yellow) add_hover = st.STextList(h1, h2) add.hover_text = add_hover ts = unicode(titles) if ts != '': suggest = "!!task add {}.".format(ts) else: suggest = "!!task add " add.set_click_suggest(suggest) return add
def _task_detail_icon_done(titles, done): # type: (TitleList, bool) -> st.SText icon_done = st.SText("⬛", color=st.SColor.darkGray) icon_undone = st.SText("⬜", color=st.SColor.white) icon = icon_done if done else icon_undone done_text = "未完成" if done else "完成" hover_prefix = st.SText("将任务标记为") hover_done = st.SText(done_text, st.SColor.yellow) hover = st.STextList(hover_prefix, hover_done) icon.hover_text = hover option = 'undone' if done else 'done' command = "!!task {} {}".format(option, unicode(titles)) icon.set_click_command(command) return icon
def _task_list_show_undone(): ind = st.SText.indent(4) newline = st.SText.newline() text = "[已完成任务...]" msg = st.SText(text, color=st.SColor.darkGray) hover_text = "点击以查看已完成任务" hover = st.SText(hover_text) msg.hover_text = hover command = "!!task list-done" msg.set_click_command(command) r = st.STextList() r.append(ind, msg, newline) return r
def _task_detail_top_task(titles, indent=4): # type: (TitleList, int) -> st.STextList ts = titles t = Task.task_by_title_list(ts) title = TaskView._task_detail_title( ts, indent=indent, button_show_desc=False, button_edit_title=True, ) desc = TaskView._task_detail_description(ts, indent=indent + 3) r = st.STextList() r.extend(title) r.extend(desc) return r
def task_added(titles): # type: (TitleList) -> st.STextList title_text = "添加成功,任务详细信息" root_title_list = titles.copy() root_title_list.pop_tail() main_title = TaskView._task_detail_main_title(root_title_list.copy(), title_text) if root_title_list.is_empty(): detail = TaskView._task_detail(titles.copy(), indent=2) else: detail = TaskView._task_detail(root_title_list.copy(), indent=2) msg = st.STextList() msg.extend(main_title) msg.extend(detail) return msg
def _task_detail_sub_tasks(titles, indent=0): # type: (TitleList, int) -> st.STextList task = Task.task_by_title_list(titles) undones, dones = task.split_sub_tasks_by_done() r = st.STextList() indent += 4 # 逆序输出,最后创建的在最上面 for t in reversed(undones): ts = titles.copy() ts.append(t.title) sub = TaskView._task_detail_sub(ts, indent=indent) r.extend(sub) for t in reversed(dones): ts = titles.copy() ts.append(t.title) sub = TaskView._task_detail_sub(ts, indent=indent) r.extend(sub) return r
def task_not_found(title): # type: (unicode) -> st.STextList m1 = st.SText(text="未找到任务 ") m2 = st.SText(text="{t}".format(t=title), color=st.SColor.yellow) msg = st.STextList(m1, m2) return msg