[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [seul-edu] Linux DTP



On Friday 17 November 2000 02:28, Tom Hoffman wrote:
> Actually, I think you would want KWord, which is part of the new
> KOffice and KDE2.  It uses frames, so it should be similar to
> FrameMaker.  It looks really good, but I don't know how complete and
> stable it is.  I will be trying it out with my kids in a few
> weeks--then I'll know.

http://www.koffice.org/kword/ is outdated. It is version 1.0 now and the 
websites will get updated soon. 

KWord is quite useable but not really stable or complete. Here is the 
TODO-list from 19.10.2000:


TODO-List:
----------

Bugs; in order or importance:

- Implement correct printing of floating tables.
- Need a routine which renders the table per row in a way that any 
cellsize is adjusted to fit.
- Frame Run around is the wrong way around.. Framedia does it correct 
now. 
  still needs to be done correctly in kword_doc
- deleting pictures-frames should also delete the picture (from the tar) 
(imageCollection)
  (we have a problem with reference counts in the creation of a new image)
- reconnect dumps sometimes.
- Anchor is not redrawn if page scrolls
- Type 1 line. Press enter after first character, 
  press backspace, press enter again. Press backspace again. 
  Rest of text is gone until you press enter gain.

Missing or incomplete stuff:
----------------------------------------
- Even/odd pages
 - Add SheetSide config in framedia 
 - implement copy of 'copy-frames' in appendPage method
- split (table) cells needs to be implementated
- Tab in the parag layout dialog for configuration of tabulators 
(adding/deleting/modifying them)
- Preview widget for numbering
- Preview widget for style templates editor
- Tabulators don't work correctly in "Blocksatz"
- Toolbars in the settings menu are not updated if they are not 
shown/reshown
- The borders dialog doesnt work (settings are not used)
- runAroundGap does nothing

cleanup:
--------
- isAHeader is a global function; move to frameset class.
- isAFooter is a global function; move to frameset class.
- load and save functions in frame and frameset are mixed up. Should move 
them to right position
  to save code duplication.
- All enums should belong to a class, making it safe for namespace 
clashes. Class::Enum-value 
  should be used everywhere
- A large portion of (at least page.cc) kword uses integets to store 
framesets and frames, using
  doc->getFrame(int) to retrieve the pointer.
  I would suggest using pointers there, and only storing the frame, since 
the frameset can be 
  retrieved with frame->getFrameSet();
- groupmanager variable active is used to 'Deactivate' a groupmanager. 
Deleting would be a better option ;)

The whole images thing needs to be rethought:
-----------------------------------------
Included files (pictures/parts/formula's)
-----------------------------------------
- Pictures should never be rescaled if that means that there is image 
loss at printing time
- It should be possible to keep files external. Kword should also notice 
a changed file
  (preferably at runtime) and reload it.

- In kword we have an image object. 
- we also have a imageCollection object.


Proposal
--------

On placing a picture or part we get an insert dialog. This dialog could 
be changed 
to include a checkbox "keep file external". If changing the file-dia is a 
problem 
we could show a dialog just after the file-dia.

On placing the picture in the document we should create a thumbnail on 
screen at the 
screensize. This counts for both internal and external pictures. With 
todays computers 
I am not really concerned with filesizes anymore, besides; it would 
probably be about 30k max. 
They will be saved as:
 tar:pictures/

The internal pictures should be read into memory and saved to the tar in 
a dir like
  tar:raw-pictures/ 
and
  tar:raw-parts/


When another instance of the same picture/part is placed we should just 
use
the same object we allready use. We could consider creating a newly
scaled thumb if the sizes differ a lot. The raw file will stay untouched.
 
 
kofficecore/ImageContainer.cc
 manages a picture. You can ask it for thumbs, location, the raw file
 and it has a save function.
 - ImageContainer(QString filename, bool external);
    constructor.
    if filename starts with tar or external is set: store filename.
    otherwise read raw file in mem.
 - int getRefCount()
    keep internal usage count
 - koImage* getThumb(QSize);
    look in tar if there was a thumb. Otherwise create one of selected 
size.
    note that koImage also does referece checking.
 - void incCount();
    for usage count
 - void decCount();
    for usage count
 - koRawImage* getImage();
    Return the rawimage (in a stream??) either from mem or from disk.
 - save();
    well, it saves.
 
kofficecore/PartContainer.cc
 manages a part. You can as it for location (key), the part and it
 has a save function
 - PartContainer
    constructor
 - getRefCount
 - void incCount()
 - void decCount();
 - koSomething* getPart();
 - save();
 
kofficeCore/ImageCollection.cc
 - ImageCollection();
 - ImageConatainer* getImage(filename);
    return imageContainer, if one doesnt exist create it first.
 - int getCount();
    return number of images in the collection
 - void removeImage(filename);
    remove image from collection
 - void load();
    load all imageContainers
 - void save();
    save all imageContainers
 
Note that you can not resize an image, just the thumbs.
Note also that the 'key' is its filename. With full path that makes it 
http://
or file:// or tar:// for remote, local, internal storage respectively.
 
Last note: this proposal does not propose any gui/printing issues at all.



MILESTONES

Since KWord has been unmaintained for quite some time it is best to patch 
it up before we start
adding features. In this document I want to set a number of milestones 
which give the direction
I want KWord to take in the not to far future.
I have no problem with people starting to implement features, but I 
myself will try to keep to 
this file. 
The reason that this file is in CVS is therefor 2-fold. First I want 
everyone to know the 
current state of kword (since for some time not much will visibly 
change). Last this document will
state where I want KWord to go. So people can see the purpose of stuff I 
created better..


KWord from a development POV can be devided in a number of 'layers'. 
- document and view
  This layer is implemented in the koffice-libs and I will not be 
actively developing them

- Frames
  Most (but not all) of the frames code has been created, and will stay 
in its current form for 
  quite some time (most notable exception being floating frames)

- Text and paragraphs. 
  This is code that is to be completely replaced with QT code. There is 
work in progress for this
  on the Troll side and a full version will be release in QT3.0 (february 
2001) However I have 
  discussed this with the Trolls and we will find a solution to get this 
in well before that time.

- GUI
  The window and menu's need a big update. There is the inconsistency in 
the menus and lots of
  options which are in code but not in the GUI.

----------------- Milestones

Replace all the text/paragraph/strings stuff with the QT QRichTextObject 
stuff.

Page class needs some work; its main function is 2-fold:
 - input from user
 - it is the widget to draw on screen (so we need updating stuff in there)

find out if the redraw stuff works, and document it.

Fix a lot of non-OO stuff.

All classes and methods should have proper documentation, in the proper 
format.

Complete re-layout of the GUI with all future features as hooks 
implemented. These features will
mostly be discussed in this file.
 - tables menu items should be accessible from the edit and the frameedit 
cursor modes.
 - Have an insert and a modify menu where all elements are represented.

Make complete undo-redo stuff work.

Create a much nicer status bar.

Tables should get a title (with positioning posibility) This will basicly 
be a new frame placed on top
or at bottom of table.

Make all frametypes have the posibility to float.

Sideheads (for text)

Split frames needs to be implemented.

Styles have to be saved external.

Books (collection of documents) should be implemented

Implement complete DCOP interface

Make everything scriptable

Make variables work

Make TOC and other auto-generates stuff work.

Add "TopOfFrame"-TopOfPage" etc to styles.


Thanx to: Reginald Stadlbauer <reggie@kde.org>
Author: Thomas Zander <zander@earthling.net>



Regards,
Max Moritz Sievers