[Uml-devel] Progress report
Gopala Krishna
krishna.ggk at gmail.com
Fri Aug 1 17:18:44 UTC 2008
Hi , I apologize for not having updated you people with my soc
progress so far. So I hereby will give a brief updates of my progress
:)
Step by step progress.
1) I started with a simple canvas-graphicsitem port where I mostly
mapped QCanvas classes to QGraphicsItem classes.
2) I moved most of UMLView's functionality to UMLScene, so that in
future we will be able to support split views.
3) I spent considerable amount of time in designing NewUMLWidget and
NewUMLRectWidget classes. Infact WidgetBase became NewUMLWidget and
UMLWidget became NewUMLRectWidget, but the difference being
NewUMLWidget is also a QGraphicsItem.
4) I implemented resizing mechanism through external item called
WidgetHandle for NewUMLRectWidget. The WidgetHandle displays 8
resize handles and also takes care of displaying appropriate
cursor.
5) Added sizeHint support to NewUMLRectWidget (intially sizeHint
method, but later setMinimumSize and setMaximumSize method).
6) I implemented NewEnumWidget based on new classes and here is where
I realized the problem of too many calculations surrounding fonts.
7) I did a few benchmarks and finally implemented TextItem and
TextItemGroup framework classes.
The aim was to encapsulate Text display with support for tooltips,
hover effect, grouping mechanism and font calculations. Though this
is not bug free, I am happy that I zeroed on this idea.
It is scalable enough to add validation support, inline editing and
also optimizable(if needed) by implementing the text items
ourselves which share common data with other text items!
8) The journey of porting all other widgets using these TextItem and
TextItemGroup began and here is a list of the accomplished work so
far.
The file names beginning with --- are the ported ones.
---activitywidget.h
---actorwidget.h
---artifactwidget.h
associationwidget.h
---boxwidget.h
---categorywidget.h
---classifierwidget.h
combinedfragmentwidget.h
---componentwidget.h
---datatypewidget.h
---entitywidget.h
---enumwidget.h
---floatingdashlinewidget.h
floatingtextwidget.h
---forkjoinwidget.h
linkwidget.h
messagewidget.h
---newumlrectwidget.h
---newumlwidget.h
---nodewidget.h
---notewidget.h
---objectnodewidget.h
objectwidget.h
---packagewidget.h
pinwidget.h
preconditionwidget.h
---regionwidget.h
---seqlinewidget.h
---signalwidget.h
---statewidget.h
---toolbarstateonewidget.h
---umlwidget.h
---usecasewidget.h
9) I implemented a notification mechanism through
QVariant NewUMLWidget::attributeChange(WidgetAttributeChange
change, const QVariant& oldValue) function
and
WidgetAttributeChange enumeration. This is modelled similar to
QGraphicsItem::itemChange.
Now all subclasses can react to notifications like NameHasChanged,
FontHasChanged.. to handle any required functionality.
* So what is for FUTURE (withing soc timeframe - before Aug 18th) ?
My college is starting from 4th August and hence I will have still
lesser time to code. So unfotunately I had to change my plans a
bit. This is my first ever "timeframe" based project and hence I
guess I overestimated the work that can be covered during
soc. Especially TextItem and TextItemGroup was not planned before at
all!! Ofcourse I will be working on umbrello even after soc :)
I hope you people can understand me :-)
I firstly want to finish off with porting all widgets. Especially I
still have Associationwidget to be ported which is the most complex
widget :( I will be needing your help in this regard specially.
Then, I need to cleanup the UMLScene class and all other
AssociationWidget stuff used elsewhere. Also I need to make
ToolBarStates to work and removed Controller code.
Next, I will provide user interface for selecting gradients/brush
styles for selecting "fill"
Implement Codefolding like mechanism to hide attributes and methods
of ClassifierWidget.
XMI based cut/copy/paste.
* What next after soc timeframe ?
Fix all regressions.
Fix undo/redo.
Implement inplace editing (i can't do this in soc time frame because
this needs robust validation support which varies from widget to
widget)
Work on merge to trunk (if you people are satisfied ;) )
Plan again for futher developments!
Any feedback/comments/suggestions appreciated. Thanks :)
--
Cheers,
Gopala Krishna A
More information about the umbrello-devel
mailing list