33 lines
1.9 KiB
Org Mode
33 lines
1.9 KiB
Org Mode
* Explanation
|
|
:PROPERTIES:
|
|
:CUSTOM_ID: explanation
|
|
:END:
|
|
This is a port of Chronometrist to Common Lisp.
|
|
|
|
Currently, it contains
|
|
1. a read-only plist-group backend
|
|
2. an incomplete SQLite backend
|
|
3. an incomplete CLIM frontend
|
|
|
|
** Source code overview
|
|
:PROPERTIES:
|
|
:CUSTOM_ID: source-code-overview
|
|
:END:
|
|
*** CLIM frontend
|
|
:PROPERTIES:
|
|
:CUSTOM_ID: clim-frontend
|
|
:END:
|
|
The CLIM frontend uses CLIM panes for each view of data Chronometrist provides. Each pane has a [[file:chronometrist.org::#display-pane][=display-pane=]] method to display its contents.
|
|
|
|
Currently, only one CLIM pane has been implemented, called the [[file:chronometrist.org::#task-duration-table-pane][task-duration table]]. By default, it displays a list of tasks, and each of their durations for today.
|
|
|
|
**** Tables
|
|
:PROPERTIES:
|
|
:CUSTOM_ID: tables
|
|
:END:
|
|
The tables in the CLIM frontend are designed with ease of extensibility in mind. Thus -
|
|
1. The columns displayed in this table are controlled by [[file:chronometrist.org::#*task-duration-table-spec*][=*task-duration-table-spec*=]], which contains a list of [[file:chronometrist.org::#column-specifier][=column-specifier=]] objects.
|
|
2. Each [[file:chronometrist.org::#column-specifier][=column-specifier=]] has two methods specializing on it, a [[file:chronometrist.org::#cell-data][=cell-data=]] method and a [[file:chronometrist.org::#cell-print][=cell-print=]] method. These determine the data contained by the cells of the column, and how that data is printed in the CLIM pane.
|
|
|
|
The function [[file:chronometrist.org::#task-duration-table-function][=task-duration-table-function=]] uses the [[file:chronometrist.org::#cell-data][=cell-data=]] methods to return the data of the table as a list of lists. This data is used by [[file:chronometrist.org::#display-pane][=display-pane=]] in conjunction with [[file:chronometrist.org::#cell-print][=cell-print=]] methods to display the data in the pane.
|