Start of a new user interface.
Started on the UI that I envisioned since the very beginning of this project, 364 days ago. The UI is inspired by TweetDeck, the column-like Twitter interface. Every column is associated with a View object (which has a filter and a sort order on the active todo.txt file). So each column can show a particular part of the todo.txt files. E.g, a column for today's items, a column for overdue items or a column for a particular project (filter: GrepFilter("+SomeProject")). The way topydo is designed was always with this UI in mind. Commands ('add', 'do', etc.) should be independent of the UI that invoked them, therefore they never print to stdout but output to a function such that the current UI will show it properly. Also the View class, which hasn't been incredibly useful sofar, can finally fulfil its role better. This is still a very immature version of the UI. It shows a single column with all the todos. It can execute commands, but it will do so silently, no output or errors are shown yet. The navigation will be Vim-like. Press : to toggle the command-line at the bottom of the screen, where you can enter any command that you're used to. Press Escape entering a command to set the focus back on the columns. The next few items to address: * show output, errors and handle input * ability to dynamically add/edit/delete columns * add navigation keys to 'walk' through the items in the columns and act on them with shortcuts. E.g. highlight a todo, press 'x' to complete it. I chose urwid as the widget library for the console, since using curses directly gave me a headache.
Showing
topydo/ui/Main.py
0 → 100644
topydo/ui/TodoListWidget.py
0 → 100644
topydo/ui/__init__.py
0 → 100644
Please register or sign in to comment