commit: Implement Tables broken across pages.

From: Martin Sevior (msevior@mccubbin.ph.unimelb.edu.au)
Date: Wed Jun 19 2002 - 11:19:17 EDT

  • Next message: Alan Horkan: "Re: commit: Implement Tables broken across pages."

    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