[scribus-dev] Tables GSoC draft proposal

Elvis Stansvik elvstone at gmail.com
Tue Mar 29 10:34:49 CEST 2011


2011/3/29 Craig Bradney <cbradney at scribus.info>:
>
> Sorry, top posting on iPhone ugh.
>
> Looks good, latex.. Shudder... Scribus! :)

Heh, yea sorry. Of course I should have used Scribus, I did that for
my proposal in 2009 actually, even though the project then was for
KWord :) It's just I've gotten so used to LaTeX from school.

>
> Only thing I see I that with the pageitem split, you don't need to remove the old table implementation until the end. Just add a new mode and actions. Pretty easy.

Yup. I guess so. It's just that PageItem currently has a
isTableItem()/setIsTableItem() (it means a textframe that is part of a
"fake" table), which are function names I guess I might be using for
my implementation. But I can just refactor that out of the way and
keep the current stuff in until the very end.

I've removed that point from the timeline and updated the proposal on
the wiki and the PDF.

Elvis

>
> Craig
>
>
> On 29/03/2011, at 9:53 AM, Elvis Stansvik <elvstone at gmail.com> wrote:
>
>> 2011/3/29 Elvis Stansvik <elvstone at gmail.com>:
>>> 2011/3/29 Elvis Stansvik <elvstone at gmail.com>:
>>>> Hello again,
>>>>
>>>> As the student application period is now open, I'm planning on sending
>>>> my application to Google soon.
>>>>
>>>> No further comments on my draft proposal below? I've done a couple of
>>>> small edits in the version on the wiki [1], but it's essentially the
>>>> same version as the one I sent to the list.
>>>>
>>>> Should I give it the "final" stamp and maybe make a typeset version of it?
>>>
>>> I made a quick LaTeX-typeset version of the proposal (attached).
>>
>> A few Unicode-related issues crept into that one. I've fixed them and
>> also put it up on the wiki, where I'll keep it up to date [1].
>>
>> Elvis
>>
>> [1] http://wiki.scribus.net/wiki/images/2/2c/Tables_GSoC_Proposal_2011.pdf
>>
>>>
>>> Elvis
>>>
>>>>
>>>> Cheers,
>>>> Elvis
>>>>
>>>> [1] http://wiki.scribus.net/canvas/GSoC_2011_Tables_Proposal
>>>>
>>>> 2011/3/20 Elvis Stansvik <elvstone at gmail.com>:
>>>>> Hi,
>>>>>
>>>>> First of all, congratulations on being picked by Google this year!
>>>>>
>>>>> Below is a first draft of my GSoC proposal. The proposal is perhaps
>>>>> better read on the wiki, where it's available at
>>>>>
>>>>> http://wiki.scribus.net/canvas/GSoC_2011_Tables_Proposal
>>>>>
>>>>> Please respond if you have any comments or if there are things I have missed.
>>>>>
>>>>> Best regards,
>>>>> Elvis
>>>>>
>>>>> = Basic support for tables in Scribus [DRAFT 1] =
>>>>>
>>>>> == Abstract ==
>>>>> The Scribus software currently lacks proper support for laying out
>>>>> content in a tabular arrangement, a feature commonly known as tables.
>>>>> In the following document I propose to implement a first basic support
>>>>> for tables in Scribus. The proposal comes in three parts. First, a
>>>>> problem description is given, where I provide a rationale for the
>>>>> project. Second, an implementation plan, including project
>>>>> deliverables and a contingency plan. Third, a tentative timeline for
>>>>> the project, and last some biographical information and other
>>>>> practicalities.
>>>>>
>>>>> == Problem Description ==
>>>>> Tables provide a compact way of representing tabular information in a
>>>>> page layout, and is a common design element in books, magazines and
>>>>> advertisements. Scribus currently has a shortcut for creating an
>>>>> automatically grouped table-like array of text frames. These are not
>>>>> proper tables. To stay competitive, Scribus needs better support for
>>>>> tables. Support that enables the user to create and edit tables as
>>>>> distinct items with their own set of properties as commonly found in
>>>>> other table implementations.
>>>>>
>>>>> == Implementation Plan ==
>>>>> Having been through Summer of Code once before, I think I have a good
>>>>> perspective on what's important going into a project of this nature.
>>>>> One thing that cannot be stressed enough is the importance of having
>>>>> something tangible and working by the end of the project period. Not
>>>>> only will this give closure and a sense of accomplishment to me as a
>>>>> student, it also gives the Scribus core developers a good outlook when
>>>>> it comes to taking the code in and building further on it. To mitigate
>>>>> the risk of ending up with an unfinished project, a contingency plan
>>>>> is included. The contingency plan lists features that can be dropped
>>>>> from the project, should time start to run out.
>>>>>
>>>>> === Basic Idea ===
>>>>> The implementation will be done by introducing a new page item,
>>>>> PageItem_Table. This item will be responsible for layout and drawing
>>>>> of a table. The layout and drawing of table cell content will be
>>>>> delegated to standard text frames, which might have to be given new
>>>>> features/modifications to serve this purpose. As content in the table
>>>>> cells change, the table will be notified of this and perform a
>>>>> relayout of the table, starting from the row in which the change
>>>>> occured.
>>>>>
>>>>> === Project Deliverables ===
>>>>> These are features that I believe are realistic to implement during
>>>>> the course of the project (but see further down for a contingency
>>>>> plan). For more detailed chronological information, see Timeline.
>>>>>
>>>>> * Tables
>>>>> ** Insert, select, resize and remove.
>>>>> ** Background color.
>>>>> ** Border color.
>>>>> ** Border style.
>>>>> ** Default cell style.
>>>>> ** Breaking across page boundaries.
>>>>> ** Import from CSV and ODT.
>>>>>
>>>>> * Table Rows
>>>>> ** Insert, select, resize and remove.
>>>>> ** Background color.
>>>>> ** Default cell style.
>>>>>
>>>>> * Table Columns
>>>>> ** Insert, select, resize and remove.
>>>>> ** Background color.
>>>>> ** Default cell style.
>>>>>
>>>>> * Table Cells
>>>>> ** Select and resize.
>>>>> ** Background color.
>>>>> ** Border color.
>>>>> ** Border style.
>>>>> ** Padding and margin.
>>>>> ** Row and column spanning.
>>>>>
>>>>> For all features, load/save roundtrip to Scribus .sla format will be supported.
>>>>>
>>>>> === Contingency Plan ===
>>>>> If unforeseen difficulties are encountered during the project, one of
>>>>> more of the following features may be dropped. Hopefully to be
>>>>> implemented later. Note that should any of these features be dropped,
>>>>> an effort will still be made keep the feature in mind to avoid
>>>>> painting ourselves into any corners.
>>>>>
>>>>> * '''Breaking across page boundaries'''
>>>>> *: This is a feature which I did not finish completely during my 2009
>>>>> project for KWord, and one which can be quite hairy to implement. I
>>>>> think I have a good general idea of how to go about it, but should it
>>>>> turn out to take too long, it may be dropped.
>>>>> * '''Row and column spanning'''
>>>>> *: This I really think I should be able to pull off. But should time
>>>>> run short, it may be dropped.
>>>>> * '''Import from CSV and ODT'''
>>>>> *: While hopefully not too challanging, technically, this feature may
>>>>> be time consuming and is something which can be added later. Hence it
>>>>> may be dropped.
>>>>>
>>>>> == Timeline ==
>>>>> Below follows a rough tentative timeline for the project. The timeline
>>>>> is of course subject to change, should some parts of the project turn
>>>>> out to be more/less time consuming than anticipated.
>>>>>
>>>>> I have my last exam on May 28, and my first day of school after the
>>>>> summer is Aug 28. This means my project period will be cut five days
>>>>> short in the beginning. It was the same thing during my project in
>>>>> 2009, and I believe it's quite common for European students taking
>>>>> part in Summer of Code. It just means the timeline has to take this
>>>>> into account.
>>>>>
>>>>> In the time leading up to the project period, I'll try to acquaint
>>>>> myself with the Scribus code I'll be touching, and experiment with
>>>>> data structures and layout algorithms for the tables I'll be
>>>>> implementing.
>>>>>
>>>>> * '''Week 1''' May 29-June 5
>>>>> ** Removal of the old "tables" implementation.
>>>>> ** Data structures for tables.
>>>>> * '''Week 2''' June 6-June 12
>>>>> ** Basic table layout with fixed column widths and mock content in cells.
>>>>> ** Insertion/removal of rows/columns.
>>>>> ** Basic drawing of table.
>>>>> * '''Week 3''' June 13-June 19
>>>>> ** More advanced layout.
>>>>> ** Variable column widths.
>>>>> * '''Week 4''' June 20-June 26
>>>>> ** Cell formatting properties such as border and padding.
>>>>> ** Cell content layout; use Scribus' text frames to populate cells.
>>>>> * '''Week 5''' June 27-July 3
>>>>> ** More integration of text frames. Fixing of issues/road bumps.
>>>>> ** UI: Row/column selection/insertion/removal/resizing.
>>>>> * '''Week 6''' July 4-July 10
>>>>> ** Wrapping up for mid-term evaluation.
>>>>> ** Fix bugs/finish up what I have so far.
>>>>> * '''Week 7''' July 11-July 17 '''(Mid-term-evaluation)'''
>>>>> ** Row and column spanning.
>>>>> * '''Week 8''' July 18-July 24
>>>>> ** Table/row/column/cell styles.
>>>>> * '''Week 9''' July 25-July 31
>>>>> ** UI: Direct formatting.
>>>>> ** UI: Integration of styles in Style Manager.
>>>>> * '''Week 10''' August 1-August 7
>>>>> ** Table breaking.
>>>>> * '''Week 11''' August 8-August 14
>>>>> ** More table breaking.
>>>>> ** CSV and/or ODT import.
>>>>> * '''Week 12''' August 15-August 21 '''(Suggested pencils down)'''
>>>>> ** Wrapping up for mid-term evaluation.
>>>>> ** Fix bugs/finish up what I have so far.
>>>>> * '''Deadline''' August 22 '''(Firm pencils down)'''
>>>>>
>>>>> == Post-Summer of Code Commitment ==
>>>>> A big part of what makes a successful project is the students level of
>>>>> involvement after the project period is over. Although the time I will
>>>>> have available for FOSS hacking will go down drastically after the
>>>>> summer, I'll of course stick around to answer questions, fix bugs and
>>>>> help out the best I can. I've stayed in contact with the KWord
>>>>> developers ever since my project in 2009, and I won't treat you
>>>>> Scribus folks differently. In short; I won't disappear on you.
>>>>>
>>>>> == Student Biography ==
>>>>> Living in Stockholm with my girlfriend Hanna, I'm a 27 year old
>>>>> freshman at the Computer Science program at KTH Royal Institute of
>>>>> Technology in Stockholm. I've dabbled with Free Software for about 12
>>>>> years now. In recent years KDE has been my main focus and in 2009 I
>>>>> implemented basic support for tables in the KWord word processor as
>>>>> part of Google Summer of Code. Previous employments include working at
>>>>> my dads small publishing company Nya Doxa AB and running my own book
>>>>> shop as well as a book café. I should note that Scribus has been a
>>>>> great help at both these positions. Apart from my studies I enjoy
>>>>> hiking our small Swedish mountains when I have the opportunity, and
>>>>> hanging out discussing with my friends over a beer. I have no other
>>>>> engagements this summer apart from Summer of Code.
>>>>>
>>>>> == Contact Information ==
>>>>> '''Name:''' Elvis Stansvik<br>
>>>>> '''E-mail:''' elvstone at gmail.com<br>
>>>>> '''IRC:''' estan @ irc.freenode.net<br>
>>>>> '''Phone:''' +46763091545
>>>>>
>>>>
>>>
>>
>> _______________________________________________
>> scribus-dev mailing list
>> scribus-dev at lists.scribus.net
>> http://lists.scribus.net/mailman/listinfo/scribus-dev
>
> _______________________________________________
> scribus-dev mailing list
> scribus-dev at lists.scribus.net
> http://lists.scribus.net/mailman/listinfo/scribus-dev
>



More information about the scribus-dev mailing list