[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