[scribus-dev] Tables GSoC - Weekly Report #12

Elvis Stansvik elvstone at gmail.com
Sun Aug 21 18:00:17 UTC 2011

Hi all,

As tomorrow is the "firm pencils down" date and the official end of
the coding period for GSoC 2011, this twelfth report [1] will be the
last of these official reports from me.

I will however work full time on the project for one more week, so
I'll probably write a few words about the progress next Sunday as
well. So even though this report is the last official one, it does
include a "Next Week" section.

The traditional screencast for this week's progress can be found here:



[1] http://wiki.scribus.net/canvas/GSoC_2011_Tables_Weekly_Reports

= Tables GSoC - Weekly Report #12 =

== Work Report ==
* Fixed a crash when deleting a table and then quitting the app.
* Speedup of row/column insertions by preventing call to
checkChanges() on cell text frames.
* Added time measurements to the table test script. It now shows the
time for each test, as well as the total test time.
* Declared TableCell, TableBorderLine and CellArea as Q_MOVABLE_TYPE.
This allows the Qt containers to use fast memcpy() instead of calling
constructors when moving objects of these types.
* Added a "Table" submenu to the "Item" menu.
* Added support for inserting rows and columns from menu.
* Added convenience API selectedRows() and selectedColumns() to
PageItem_Table and renamed selection() to selectedCells().
* Added support for deleting rows and columns from menu.
* Added support for merging cells from the menu.
* Added support for setting row heights and column widths from menu.
* Added support for distributing row heights and columns widths evenly
from the menu.
* Fixed the problem with the cursor being initially invisible when
activating text frames (Craig said you might want this fix in 1.4).
* Added support for navigating between cells with
Alt+Left/Right/Up/Down. This required the table to be given the
concept of a "logical position" in addition to the "active cell",
since you want to be able to navigate through a cell spanning multiple
rows and/or columns and end up in the right place. The new API of
PageItem_Table for navigation between cells is moveLeft(),
moveRight(), moveUp() and moveDown(). These functions will move the
"logical position" and set the active cell appropriately.
* Fixed a crash when deleting a series of rows or columns that contain
an entire area of merged cells.
* Added a context menu that is shown on right click when editing a
table. Some of the actions (the ones that are applicable) are also
shown in the regular context menu for Scribus items.
* Added some icons for table actions from the Oxygen project. Nuno
thought it would be a good idea, and he's a much better icons designer
than I am :)
* Fixed a bug in the painting of the table outline during resizing.
* Various cleanups and doc fixes.

== Project Status ==
Since this is the last official report, this time I'll make a little
richer report on what is possible with tables so far.

=== Table Operations ===
All the basic operations on the structure of table such as inserting,
deleting and resizing rows and columns, resizing the table as well as
merging cells are now supported through the UI. In addition to that
there are a few convenience operations such as adjusting the table to
the frame and vice versa, and distributing a range of rows or columns

=== Cell Text Content ===
The text content of cells may be edited on-canvas, and navigation
between cells is possible with both the mouse and keyboard. Neither
direct formatting of the text in the cells nor applying paragraph or
character styles is supported yet (see "Next Week" below).

=== Borders / Paddings ===
Borders may be set on each side of a cell, or on each side of a table.
There is support for multiline borders, and the borders will be
properly collapsed and joined at intersections. Some finetuning of the
collapsing algorithm may be desirable though. Paddings may be set on
each side of a cell.

There is rudimentary support for editing the borders of the table in
the Property Palette, but apart from that, the support for borders and
paddings are only accessible through scripter methods, so more work is
needed on the Property Palette UI (see "Next Week" below).

=== Styles ===
There is support for table and cell styles, however the UI for editing
the styles in the Styles Manager is largely lacking (see "Next Week"

I've kept out some details, but I believe that's it. This is the
status of the project as of today.

== Problems / Questions ==
No questions this time. I do have one for the future regarding usage
of Boost in Scribus. But that one is in a separate mail.

== Next Week ==
Looking at my brief TODO list from my last report:

* Basic cell text editing. [DONE]
* Context menu. [DONE]
* PP UI.
* SM UI.
* Saving / Loading.
* Painting for print output.

I now consider the first two done, even if there are some small
details left. For this last week of full time work that I have left, I
plan on working on the third and fourth item in the list: PP and SM
UI. More specifically, I plan to:

=== Properties Palette ===
* Support direct formatting of cell text, as well as applying
paragraph and character styles.
* Improve the "Table" property palette.
* Add a "Cell" property palette for editing of cell properties.

=== Style Manager ===
* Add UI for editing table style.
* Add UI for editing cell style.

If there is time left (probably unlikely), I'll also start work on the
last two items on my list: saving / loading and painting for print

=== User Centered Goal ===
Since tables support is now starting to come together quite nicely,
I'd also like to put a user centered twist on this week's "Next Week"
section: Attached to this mail you will find two screenshots. One of
them shows a simple table design I did in InDesign. The other
screenshot shows what I was able to accomplish after some work in
Scribus. The user centered goal for this last week is that by Sunday,
I want to be able to make a screencast of me creating the design as
shown in the InDesign screenshot, in Scribus. I want to be able to do
this in less than 3 minutes and I want to be able to do it without
having to bring up the scripter console.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: trial-design-1-indesign.png
Type: image/png
Size: 144265 bytes
Desc: not available
URL: <http://lists.scribus.net/pipermail/scribus-dev/attachments/20110821/3a09d2fc/attachment-0002.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: trial-design-1-scribus.png
Type: image/png
Size: 171251 bytes
Desc: not available
URL: <http://lists.scribus.net/pipermail/scribus-dev/attachments/20110821/3a09d2fc/attachment-0003.png>

More information about the scribus-dev mailing list