diff options
Diffstat (limited to 'girok/calendar_cli/sidebar.py')
-rw-r--r-- | girok/calendar_cli/sidebar.py | 184 |
1 files changed, 0 insertions, 184 deletions
diff --git a/girok/calendar_cli/sidebar.py b/girok/calendar_cli/sidebar.py deleted file mode 100644 index 19a9772..0000000 --- a/girok/calendar_cli/sidebar.py +++ /dev/null @@ -1,184 +0,0 @@ -from textual.app import App, ComposeResult -from textual.containers import Container, Horizontal, Vertical -from textual.widgets import Button, Footer, Header, Static, Label, Placeholder, Tree -from textual.messages import Message -from textual.widget import Widget -from textual.reactive import var, reactive -from textual import events - -import girok.api.category as category_api -import girok.api.task as task_api -import girok.utils.calendar as calendar_utils -import girok.utils.general as general_utils -import girok.constants as constants -from rich.style import Style -from rich.text import Text -from textual import log -from textual.widgets._tree import TreeNode - -class CategoryTree(Tree): - CSS_PATH = "./demo_dock.css" - cats = dict() - can_focus = True - can_focus_children = True - auto_expand=False - highlighted_node = None - selected_node = None - init_select = False - init_highlight = False - class CategoryChanged(Message): - def __init__(self, cat_path: str): - super().__init__() - self.cat_path = cat_path - - class CustomTestMessage(Message): - def __init__(self): - super().__init__() - - def on_mount(self): - self.highlighted_node = self.root - self.selected_node = self.root - calendar_utils.add_left_arrow_tree(self.highlighted_node) - - self.line = 0 - self.cats = category_api.get_categories() - self.root.expand() - - for cat in self.cats: - top_cat = self.root.add(cat, expand=True, data={"color": self.cats[cat]['color']}) - top_cat.allow_expand = True - calendar_utils.build_category_tree(top_cat, self.cats[cat]['subcategories']) - - def on_key(self, evt): - if evt.key == "j": - self.action_cursor_down() - elif evt.key == "k": - self.action_cursor_up() - elif evt.key == "o": - self.action_select_cursor() - - def render_label(self, node, base_style: Style, style: Style): - node_label = node._label.copy() - icon = "" - if node.parent is None: - icon = "📖 " - elif node.parent.parent is None: - icon = Text("● ", style=constants.CIRCLE_COLOR[node.data['color']]) - text = Text() - text.append(icon) - text.append(node_label) - return text - - def on_tree_node_selected(self, event: Tree.NodeSelected): - event.stop() - full_cat_path = calendar_utils.get_full_path_from_node(event.node) - self.selected_node = event.node - self.post_message(self.CategoryChanged(full_cat_path)) - - def on_tree_node_highlighted(self, event: Tree.NodeHighlighted): - event.stop() - prev_highlighted_node = self.highlighted_node - calendar_utils.remove_left_arrow_tree(prev_highlighted_node) - calendar_utils.remove_highlight(prev_highlighted_node) - calendar_utils.add_left_arrow_tree(event.node) - calendar_utils.add_highlight(event.node) - self.highlighted_node = event.node - - def on_focus(self, evt): - calendar_utils.add_left_arrow_tree(self.highlighted_node) - - -class TagTree(Tree): - CSS_PATH = "./demo_dock.css" - tags = [] - can_focus = True - can_focus_children = True - auto_expand=False - highlighted_node = None - selected_node = None - - class TagChanged(Message): - def __init__(self, tag: str): - super().__init__() - self.tag = tag - - class CustomTestMessage(Message): - def __init__(self): - super().__init__() - - def on_mount(self): - self.select_node(self.root) - self.action_select_cursor() - self.highlighted_node = self.root - self.selected_node = self.root - - tags = task_api.get_tags() - self.tags = tags - - self.root.expand() - - for tag in self.tags: - self.root.add(tag, expand=True) - - def on_key(self, evt): - if evt.key == "j": - self.action_cursor_down() - elif evt.key == "k": - self.action_cursor_up() - elif evt.key == "o": - self.action_select_cursor() - - def on_focus(self, evt): - calendar_utils.add_left_arrow_tree(self.highlighted_node) - - def render_label(self, node, base_style: Style, style: Style): - node_label = node._label.copy() - - icon = "" - if node.parent is None: - icon = "📖 " - elif node.parent.parent is None: - icon = Text("● ", style="white") - - text = Text() - text.append(icon) - text.append(node_label) - return text - - def on_tree_node_selected(self, event: Tree.NodeSelected): - event.stop() - # calendar_utils.remove_highlight(self.selected_node) - tag = str(event.node._label) - if tag.endswith(" " + constants.LEFT_ARROW_EMOJI): - tag = tag[:-2] - - self.post_message(self.TagChanged(tag)) - event.node.set_label(tag) - self.selected_node = event.node - - def on_tree_node_highlighted(self, event: Tree.NodeHighlighted): - event.stop() - prev_highlighted_node = self.highlighted_node - calendar_utils.remove_highlight(prev_highlighted_node) - calendar_utils.remove_left_arrow_tree(prev_highlighted_node) - calendar_utils.add_left_arrow_tree(event.node) - calendar_utils.add_highlight(event.node) - self.highlighted_node = event.node - - -class SidebarMainContainer(Vertical): - CSS_PATH = "./demo_dock.css" - def compose(self): - yield CategoryTree("All Categories", id="sidebar") - yield TagTree("All Tags", id="tag-tree") - - -class SidebarContainer(Vertical): - CSS_PATH = "./demo_dock.css" - - def compose(self): - yield SidebarMainContainer(id="sidebar-main-container") - - - - |