GSoC 2011 Tables Post GSoC Tasks

This is a list of tasks relating to tables that are up for grabs. Some of the tasks are small and relatively simple, some are more complex, and others are really complex. For each task I have written some thoughts and ideas on how to solve them.

TODO: Write these.

= Task Progress =

= Task Descriptions =

Style Editing
Support for editing all the properties of table / cell styles should be added to the StyleManager. The work is quite straightforward, and similar to the work that needs to be done in the Properties Palette (see below).

Cell / Table Properties in Property Palette
The existing "Table" property palette should be made more robust and support all properties of the table. A combobox for selecting the table style, as well as a "Remove Direct Table Formatting" button should be added. A new "Cell" property palette should be added, supporting all properties of cells.

Cell Text Formatting
The existing "Text" property palette should be modified to support formatting of paragraphs and spans of selected text in tables. Modifications to the relevant slots in ScribusDoc is probably also necessary.

Load / Save
Loading saving of both tables and cells, as well as table style and cells styles have to be written. This requires modification of the scribus15format load/save plugin and the saxx(...) functions of the styles, and possibly other places as well.

Painting for Print Output
The table item is currently only painted on the canvas. The first step will be to add support for tables to PDFLibCore, to support output to PDF. Hopefully most code in the CollapsedTablePainter, which paints a table on the canvas, can be reused. The easiest way will probably be to create a CollapsedTablePainter::paintTablePDF(PageItem_Table* table, PDFLibCore*, QString& output) which will do the work, but then CollapsedTablePainter will have to be made a friend of PDFLibCore to be able to access it's convenience functions for generating PS/PDF commands. I will have to look at it closer. After that, support for the other outputs needs to be added as well.

Cleanup of Resizing Code (Strategies)
At the moment, the code in the the RowResize and ColumnResize canvas gesture for resizing the table overlay is pretty similar to the code in PageItem_Table that does the actual resizing of the table. Resizing is just a manipulation of a couple of lists of qreal. To avoid code duplication this code could be generalized into "resizing strategies" and put in e.g. tableutils.h/cpp to be shared.

Extend Unit Testing Python Script
This is pretty self-explanatory. The script  currently tests some basic functionality of the table, but more tests could be added. Adding a test is as simple as adding a new method to the  class. Any added methods will be runned automatically when the script runs.