[kplato] projects, subprojects and tasks

Heiko Evermann Heiko.Evermann at gmx.de
Thu May 8 15:40:46 CEST 2003


Hi Thomas, hi everyone,


After some more analysis, this is what I found:

Concerning Milestones:
MrProject does not seem to have them: 
http://www.mrproject.org/user-guide.php does not tell us about them.
MS project has a very simple way of defining milestones: if a task has a 
duration of 0, then it is a milestone. There do not seem to be further 
restrictions. It can be predecessor or successor to other tasks, of 
course. It can even have subtasks. I tried it out. If you have a task A 
with two subtasks B and C and note 0 duration for B and C, then A has a 
duration of 0, too, and all three get displayed as a milestone. That 
means they are displayed as a diamond and the date is displayed.

So my proposal is to drop the class KPMilestone and just to handle tasks 
with zero duration differently in the display. I think this makes things 
easier.

Concerning subtasks:
I am more and more convinced that it would be better  not to use 
KPTProject for Tasks having subtasks, as this makes the object handling 
lot more complicated.

Concerning KPTProject:
At first I thought it might be completely unneccessary. But something 
else is neccessary: I think we ought to have a model for the program, 
following MVC. kdeedu/kstars, for example, hase a model called 
KStarsData, where all application data is collected. Of this we have one 
instance. If we have something like this in kplato, we could even have 
an empty project. Just try this: Run kplato, state that you want to 
start with an empty document. kplato then asks you about project data, 
which is a bit surprising as you stated that you wanted to start with an 
empty document. Cancel that dialog, and you get an almost empty view, in 
pert as in gantt, it just looks a little bit funny. So it would be good 
to have a model for the whole program to work on. This model should be 
able to hold an empty list of tasks to get an empty display in the 
beginning. So far so good. But this model must support adding and 
deleting tasks, so in the end it must be able to do what KPTNode already 
knows to do. Apart from that it should hold other things like author 
information etc. So my conclusion is that the main model best is 
modelled as a subclass of node.

Summary:
* base class KPTNode
* class KPTTask : KPTNode for tasks and subtasks
* class KPTProject : KPTNode for the main model. This does not get 
displayed in the gantt/pert views. For its properties (we might invent 
many) we will have a menu entry: "edit project properties" and a fitting 
dialog.

Some things in the views etc. will have to be changed and some code will 
have to be moved, but not that much. After that, implementing further 
edit capabilities like indent/unindent should be easy.

Comments?

Regards,

Heiko




More information about the kplato mailing list