From: Martin Sevior (msevior@mccubbin.ph.unimelb.edu.au)
Date: Wed Jun 19 2002 - 11:19:17 EDT
Hi Folks,
This commit marks another major milestone for our tables
feature. Tables can be broken across pages. You can now build huge tables
like the one in the attached test document and abiword will break it
across as many pages as are needed.
If you add more text before the table the table will move correctly down
the pages as it should. If you delete text before the table the table will
move up as it should.
You can click inside the table on any page and type and generally edit as
you normally will.
The way I implemented this feature was you have a master table container
which holds all the cells.
This master container is "broken" into sub table which are actually
placed in the columns. These broken tables are ordinary fp_TableContainer
classes with a priviate member variable that identifies them as "broken".
They also contain a pointer back to the Master table, and two
private member variables. m_iYBreak and m_iYBottom. The variables describe
the vertical location of the broken table within the master table.
When placed in a column these are used to correct the offsets for lines
and cells on the currect page.
These offsets are vital for drawing/clearscreen/ and clicking on a
location in the text.
There has been substantial surgury to breakSection() in
fl_DocSectionLayout to "break" tables to fit into columns.
There remains some bugs in this but I can fix these without too many
problems.
(I have clearscreen issues on the bottom of the page as tables are moved
up/down the document. Also there is a redraw issue.)
Anyway, this is a another major milestone.
My next feature will be to implement tables with the columns positioned
via a GUI on the top ruler.
If someone would like to help please copy MSWord table menus and put them
into abiword in the same sort of place under "table" on the main menu bar.
Please consider this a POW.
Doing this will save me a fair amount of grunt work.
Enjoy our new feature :-)
Martin
CVS: ----------------------------------------------------------------------
CVS: Enter Log. Lines beginning with `CVS:' are removed automatically
CVS:
CVS: Committing in .
CVS:
CVS: Modified Files:
CVS: src/text/fmt/xp/fl_BlockLayout.cpp
CVS: src/text/fmt/xp/fl_DocListener.cpp
CVS: src/text/fmt/xp/fl_SectionLayout.cpp
CVS: src/text/fmt/xp/fl_TableLayout.cpp
CVS: src/text/fmt/xp/fl_TableLayout.h src/text/fmt/xp/fp_Column.cpp
CVS: src/text/fmt/xp/fp_Column.h src/text/fmt/xp/fp_Line.cpp
CVS: src/text/fmt/xp/fp_Line.h src/text/fmt/xp/fp_Page.cpp
CVS: src/text/fmt/xp/fp_TableContainer.cpp
CVS: src/text/fmt/xp/fp_TableContainer.h
CVS: ----------------------------------------------------------------------
Implement tables broken across pages.
This archive was generated by hypermail 2.1.4 : Wed Jun 19 2002 - 11:21:50 EDT