label for bar
This commit is contained in:
parent
daaea24668
commit
d4cba93834
@ -1,6 +1,7 @@
|
|||||||
|
import re
|
||||||
from textual.app import App
|
from textual.app import App
|
||||||
from textual.widgets import DataTable, Header, Input
|
from textual.widgets import DataTable, Header, Input, Static
|
||||||
from textual.containers import Container
|
from textual.containers import Container, Horizontal
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from .controller import get_tasks, add_task, update_task, TaskStatus
|
from .controller import get_tasks, add_task, update_task, TaskStatus
|
||||||
@ -15,6 +16,11 @@ column_to_field = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def remove_rich_tag(text):
|
||||||
|
pattern = r"\[[^\]]*\](.*?)\[/\]"
|
||||||
|
return re.sub(pattern, r"\1", text)
|
||||||
|
|
||||||
|
|
||||||
def get_colored_status(status: str) -> str:
|
def get_colored_status(status: str) -> str:
|
||||||
colors = {
|
colors = {
|
||||||
"zero": "#666666",
|
"zero": "#666666",
|
||||||
@ -34,12 +40,23 @@ def get_colored_category(category: str) -> str:
|
|||||||
|
|
||||||
class TaskManagerApp(App):
|
class TaskManagerApp(App):
|
||||||
CSS = """
|
CSS = """
|
||||||
Input {
|
#input_bar {
|
||||||
dock: bottom;
|
dock: bottom;
|
||||||
|
height: 1;
|
||||||
|
layout: grid;
|
||||||
|
grid-size: 2;
|
||||||
|
grid-columns: 10 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
#prompt_label {
|
||||||
|
width: 10;
|
||||||
|
content-align: left middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
#input_widget {
|
||||||
|
width: 100%;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
|
||||||
border: none;
|
border: none;
|
||||||
background: $boost;
|
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@ -69,11 +86,14 @@ class TaskManagerApp(App):
|
|||||||
def compose(self):
|
def compose(self):
|
||||||
self.header = Header()
|
self.header = Header()
|
||||||
self.table = DataTable()
|
self.table = DataTable()
|
||||||
self.input_bar = Input(id="input_bar")
|
self.input_widget = Input(id="input_widget")
|
||||||
self.input_bar.display = False
|
self.input_label = Static("label", id="prompt_label")
|
||||||
|
self.input_bar = Container(id="input_bar")
|
||||||
yield self.header
|
yield self.header
|
||||||
yield Container(self.table)
|
yield Container(self.table)
|
||||||
yield self.input_bar
|
with self.input_bar:
|
||||||
|
yield self.input_label
|
||||||
|
yield self.input_widget
|
||||||
|
|
||||||
def on_mount(self):
|
def on_mount(self):
|
||||||
self.table.add_columns("ID", "Task", "Status", "Type", "Due", "Category")
|
self.table.add_columns("ID", "Task", "Status", "Type", "Due", "Category")
|
||||||
@ -133,8 +153,12 @@ class TaskManagerApp(App):
|
|||||||
def _show_input(self, mode, start_value):
|
def _show_input(self, mode, start_value):
|
||||||
self.mode = mode
|
self.mode = mode
|
||||||
self.input_bar.display = True
|
self.input_bar.display = True
|
||||||
self.input_bar.value = start_value
|
self.input_widget.value = start_value
|
||||||
self.set_focus(self.input_bar)
|
if mode == "search":
|
||||||
|
self.input_label.update("search: ")
|
||||||
|
else:
|
||||||
|
self.input_label.update("edit: ")
|
||||||
|
self.set_focus(self.input_widget)
|
||||||
|
|
||||||
def _hide_input(self):
|
def _hide_input(self):
|
||||||
self.input_bar.display = False
|
self.input_bar.display = False
|
||||||
@ -154,7 +178,7 @@ class TaskManagerApp(App):
|
|||||||
current_value = self.table.get_cell_at(
|
current_value = self.table.get_cell_at(
|
||||||
(self.table.cursor_row, self.table.cursor_column)
|
(self.table.cursor_row, self.table.cursor_column)
|
||||||
)
|
)
|
||||||
# TODO: remove color codes
|
current_value = remove_rich_tag(current_value)
|
||||||
self._show_input("edit", current_value)
|
self._show_input("edit", current_value)
|
||||||
|
|
||||||
def on_input_submitted(self, event: Input.Submitted):
|
def on_input_submitted(self, event: Input.Submitted):
|
||||||
|
Loading…
Reference in New Issue
Block a user