Compare commits
7 Commits
597cf6fbb4
...
bc0ad8d4f8
| Author | SHA1 | Date | |
|---|---|---|---|
|
bc0ad8d4f8
|
|||
|
89d4adc0e2
|
|||
|
dc32e2c26e
|
|||
|
f56c651961
|
|||
|
6a6667c3d6
|
|||
|
3411d1886a
|
|||
|
5c5a20a159
|
3
codupoc/__main__.py
Normal file
3
codupoc/__main__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from codupoc.codupoc import main
|
||||
|
||||
main()
|
||||
@@ -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()
|
||||
@@ -1,6 +1,6 @@
|
||||
import re
|
||||
|
||||
from .todo import Todo
|
||||
from codupoc.todo import Todo
|
||||
|
||||
TODO_PATTERN = r"^- \[( |X)\] (.+)$"
|
||||
|
||||
|
||||
@@ -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")
|
||||
Reference in New Issue
Block a user