[prev in list] [next in list] [prev in thread] [next in thread] 

List:       koffice
Subject:    Re: I give up.
From:       Thomas <zander () xs4all ! nl>
Date:       2000-06-25 16:00:26
[Download RAW message or body]

> > A simple OO rule; creation of child objects is done in one place, this
> > ensures that data consistency is always maintained. Just look at the \
> >                 amount
> > of: new KWFrame calls
> > a KWFrame* KWFrameSet::createNewFrame() would have been much nicer.
> 
> Why not just change it to work like that then? Also I don't agree that \
> this  is always the best way, here it might make sense, yes. In many ways \
> it is  much nicer to pass the parent to the child in the constructor.
> 
That is not what I meant, OO is about objects doing only what they need 
to know. 
Let me see; Ahh yes I was coding the framedia.cc
the Constructur for framedia is:
KWFrameDia::KWFrameDia( QWidget* parent, const char* name, KWFrame *_frame, \
KWordDocument *_doc,  KWPage *_page, int _flags, KWFrameSet *fs )
    : KDialogBase( Tabbed, i18n("Frame settings"), Ok | Cancel, Ok, parent, \
name, true)

When I look at that I see that I receive a Name, a Frame, a Doc, a Page and \
a Frameset. This dialog is about ONE frame's properties. So the things I \
need should all be in the frame. I should be able to ask the frame which \
frameset is belongs to, but also  which page it is on. The document it \
belongs to could be asked like:  frame->getFrameset()->getDocument();

The flags determine which tabs are shown. This is simply not neccecarry, \
nor is it good GUI design (all relevant options should be visible)

The flags are also used so some standard settings are made in the dialog, \
this again is simply faulty desing. The dialog should only touch the \
settings  which it can configure.


Summery:

KDocument has a number of framesets which contain a number of frames.
The info a frame needs to know (what type of frame it is for instance) \
needs to be embedded in the frame, and nowhere else.
Creating a new frame forces you to ambed it in a frameset, so find the \
first relevant frameset (or create one) and add the frame by calling:
 frameset->createNewFrame()

This will create understandable code.

-- 
Thomas Zander                                            \
zander@earthling.net The only thing worse than failure is the fear of \
trying something new


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic