Metadata-Version: 2.4
Name: qdo-todo
Version: 0.9.13
Summary: Simple GUI for working with todo.txt task lists
Author-email: Al Stone <ahs3@ahs3.net>
License-Expression: GPL-3.0-or-later AND CC-BY-4.0
Project-URL: Homepage, https://codeberg.org/ahs3/qdo-todo
Project-URL: Documentation, https://codeberg.org/ahs3/qdo-todo/README.md
Project-URL: Repository, https://codeberg.org/ahs3/qdo-todo.git
Project-URL: Issues, https://codeberg.org/ahs3/qdo-todo/issues
Keywords: GUI,TODO,todo.txt,Tasks
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Requires-Python: >=3.14
Description-Content-Type: text/markdown
License-File: COPYING
License-File: LICENSES
Requires-Dist: pyqt6
Requires-Dist: pygit2
Requires-Dist: pytodotxt
Dynamic: license-file

[^comment]: SPDX-License-Identifier: CC-BY-4.0

# QDo-ToDo
**qdo-todo**: GUI for working with todo.txt files

## todo.txt Files
If you're familiar with todo.txt files and their format, read on.  If not,
you can find the documentation at:
<a href="https://github.com/todotxt/todo.txt">
https://github.com/todotxt/todo.txt</a>.  These are plain text files and
can easily be used to manage task lists from the command line using all
the standard text manipulation commands.

## QDo-ToDo
This application -- <code>qdo-todo</code> -- provides a relatively simple GUI
interface for dealing with todo.txt files.  That was the intent, at any rate.
To use this tool:

```
    $ pip install qdo-todo
    $ qdo-todo todo.txt
```
where 'todo.txt' is any file name containing a todo.txt format task list.

Each row in the table that gets shown is one of the todo.txt task lines.
Each field in a row is one of the possible fields in a todo.txt task.  By
clicking on the column headers, you can sort on that field.  By clicking
on a row number, you can select a task to mark as deleted.  Otherwise,
the key thing to remember is you can always show the "Help" screen by
pressing F1.

These are the current features:

 * Left mouse click on <b>Done</b> or <b>Priority</b> cycles through
the possible values (including blank).
 * Left mouse click on everything else <i>except</i> <b>Task</b> will
pop up a dialog.
 * To edit text fields like <b>Task</b>, double click the left mouse
button.
 * Delete a task by clicking on the row column (farthest left).
An attribute of <code>deleted_at: yyyy-mm-dd</code>
will be added or updated to today's date.
 * Filters can be one or more Python regular expresions; using '|' is a normal
regex operation for logical OR; separating multiple regexes with
spaces implies a logical AND of the regexes.
 * Summary of keyboard commands: <table>
    <tr>
        <th>Keys</th>
        <th align="left">Command</th>
    </tr>
    <tr>
       <td>F1</td>
       <td>Show this message</td>
    </tr>
    <tr>
        <td>Ctrl-N</td>
        <td>Add a new task</td>
    </tr>
    <tr>
        <td>Ctrl-R</td>
        <td>Re-read the task list</td>
    </tr>
    <tr>
        <td>Ctrl-S</td>
        <td>Save all changes to the task list</td>
    </tr>
    <tr>
        <td>F11</td>
        <td>Toggle Full Screen qdo-todo</td>
    </tr>
    <tr>
        <td>Ctrl-Q</td>
        <td>Quit qdo-todo</td>
    </tr>
</table>

You can also filter the visible tasks with Python regular expressions.  Fill
in the regex text and click on 'Apply'.  Clearing the filter text stops the
filtering.  You can save a filter (and give it a name) using the 'Save Filter'
button; once saved, you can reuse the filter using the 'Select a Filter'
button.

There are predefined filters to hide all the tasks marked completed/done --
the 'Hide Done' button.  Similarly, 'Hide Deleted' will hide all the tasks
marked with 'deleted_at:'.  Note that nothing is ever actually removed from
the file; 'deleted' in this case means that the an attribute has been added
to the task, nothing more.

The only other goodies are (1) saving information about the application
in a small file, and (2) saving a copy of the original todo.txt file.  Both
of these are kept in a git repository in <code>~/.config/qdo-todo</code>.  Every
time you quit <code>qdo-todo</code>, the current state of your todo.txt file
and the application info are saved and committed into the repository.
The original task list is only copied, not moved.

However, you <i>must</i> explicitly save changes to your file using
<code>Ctrl-S</code>.  Until you do, the changes you make are
<i>only</i> known to <code>qdo-todo</code> and are <i>not</i> automatically
saved.

Issues and patches are always welcome at
<a href="https://codeberg.org/ahs3/qdo-todo">
https://codeberg.org/ahs3/qdo-todo</a>.

NOTE: a small script called <code>qdo-todo-dump</code> is also included.
