Short Term TODO items: Functionality: 1. Remove the internal XML API. 2. Implement GUI grouping. 3. Implement context menu on item-bars. 4. Implement config tool for the view. 5. Add multi-sorting. GUI: 1. Implement behaviours for "line-selection" 2. Implement good behaviour for editing. 3. Use the theme information for the captions. 4. Use the font from the widget style. 5. Fix the update problems when a group is resized. GUI 2: 1. Make the insertion points be shaped X windows instead of canvas items. Implement e-cell-height Implement computation of heights from the e-cell-heights Make sure we compute the height from that Include spacing in columns and rows for the decoration lines Add threshold to compute a "global" size Implement the two methods for row finding: by full thing, or by a factor. + Add editing mouse grabbing for scrolling 1. Make sure that all values are updated on header changes and table model changes (they are slightly out of sync now) * Correctness * Make sure we can boot and shutdown with no memory leaks. * Run Insure on the thing. + * Propagation + * Row changes should be reflected in the subsets. * Add an ETable::get_specification method to get the current layout information. + * Add frozen_columns output. * Add input and output of column widths and minimum column widths. + * Add GUI sort + * Create an ETableSortInfo class. + * Add display of proper arrows to the ETableHeaderItem. + * Add switching of sorting on clicks. * Add depressed button state to ETableHeaderItem? * Add GUI grouping * Create ETableGroupItem class. * Make it work. (A large step) * Add a context menu * Define the menu * Create the menu object. * Hook up all the menu items. * Add a possible column list GUI * Create ETableColumnList class. * Hook it up to ETableHeader. * Figure out the correct semantics for the connection between the ETableHeader and the ETableColumnList. * Implement widget display. * Implement drag&drop. * Add closing and openning of groups * Add + button to group display. * Build in semantics for clicking on the button. * Make sub items hide & show. * Resize group. * Figure out how to save this data. * Data entry ("Click here to add...") * Add "Allocate" to the ETableModel * Implement ETableDataEntry (a subclass of ETableModel). * Build GUI for the data entry model. This should be fairly simple. * Usability * When the widget grows, the columns should resize to occupy all the available space * Draw little arrows for new column position instead of little triangles. * Make new column position be closest to position instead of rounding to the left. * Copy gtk_dnd as e_dnd. * Fix known bug about navigating out of the bottom of the table.