Compare commits

...

7 Commits

4 changed files with 50 additions and 15 deletions

3
codupoc/__main__.py Normal file
View File

@@ -0,0 +1,3 @@
from codupoc.codupoc import main
main()

View File

@@ -4,7 +4,8 @@ from textual.widgets import Checkbox, Input, Header, Footer
from base64_random import gen_random_base64
from todo import Todo
from codupoc.todo import Todo
from codupoc.todomanager import TodoManager
class NewTodo(Input):
def on_input_submitted(self, event: Input.Submitted) -> None:
@@ -31,7 +32,7 @@ class Codupoc(App[None]):
def compose(self) -> ComposeResult:
yield Header()
yield VerticalScroll(id="list_items")
yield VerticalScroll(*self.load_todos_into_widgets(), id="list_items")
yield Footer()
def action_new_todo(self):
@@ -43,11 +44,13 @@ class Codupoc(App[None]):
def save_todo(self, value: str):
tinput = self.query_one("#newtodo")
tinput.remove()
todo = Checkbox(value)
scroller = self.query_one("#list_items")
scroller.mount(todo)
todo.scroll_visible()
todo.focus()
# todo = Checkbox(value)
scroller: VerticalScroll = self.query_one("#list_items")
# scroller.mount(todo)
# todo.scroll_visible()
# todo.focus()
self.insert_todo(value, scroller)
self.tmanager.write_todos(list(self.todos.values()))
def insert_todo(self, title: str, scroller: VerticalScroll):
ntodo = Todo(title, False)
@@ -56,12 +59,25 @@ class Codupoc(App[None]):
scroller.mount(todo)
todo.focus()
def load_todos_into_widgets(self) -> list[TodoItem]:
widgets = []
for t in self.todos.values():
nt = TodoItem(self, t, t.item, id=t.lid)
widgets.append(nt)
return widgets
def __init__(self):
super().__init__()
self.todos = {}
self.tmanager = TodoManager()
self.todos = self.tmanager.get_todos()
def main():
app = Codupoc()
app.run()
if __name__ == "__main__":
app = Codupoc()
app.run()
main()

View File

@@ -1,6 +1,6 @@
import re
from .todo import Todo
from codupoc.todo import Todo
TODO_PATTERN = r"^- \[( |X)\] (.+)$"

View File

@@ -1,8 +1,8 @@
import sys
from os import path
from todo import Todo
from slimdownparser import parse_todo
from codupoc.todo import Todo
from codupoc.slimdownparser import parse_todo
class TodoManager:
filename = "todo.md"
@@ -14,7 +14,7 @@ class TodoManager:
return path.exists(self.filename)
def open_todo_file(self):
self.file = open(self.filename, "a")
self.file = open(self.filename, "r+")
return self.file
def read_todos(self) -> list[Todo]:
@@ -27,4 +27,20 @@ class TodoManager:
return todos
def close_todo_file(self):
self.file.close()
self.file.close()
def get_todos(self) -> dict[str, Todo]:
if not self.does_todo_file_exist():
self.open_todo_file()
return {}
todos = self.read_todos()
out = {}
for t in todos:
out[t.lid] = t
return out
def write_todos(self, todos: list[Todo]):
for t in todos:
self.file.write(str(t) + "\n")