Bug 53371

Summary: New diagram type: Component Diagram
Product: [Applications] umbrello Reporter: Jonathan Riddell <jr>
Component: generalAssignee: Umbrello Development Group <umbrello-devel>
Status: RESOLVED FIXED    
Severity: wishlist    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: unspecified   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: patch-1
patch-2

Description Jonathan Riddell 2003-01-24 19:08:59 UTC
Version:            (using KDE Devel)
Compiler:          gcc 2.95 
OS:          Linux

Currently UML's "Component Diagrams" are not supported.
Comment 1 Jonathan Riddell 2003-02-26 23:09:58 UTC
These require components, interfaces and possibly subsystems.
Comment 2 Stephen Torri 2003-03-02 01:13:18 UTC
Crash creating component diagram (hope this is the place for it).

Steps to repeat:

1. Click on Diagram
2. Click on Component Diagram
3. Click on OK

[New Thread 16384 (LWP 1987)]
0x40fbb8a7 in waitpid () from /lib/libpthread.so.0
#0  0x40fbb8a7 in waitpid () from /lib/libpthread.so.0
#1  0x406ed6fd in KCrash::defaultCrashHandler(int) ()
   from /usr/lib/libkdecore.so.4
#2  0x40fba505 in __pthread_sighandler () from /lib/libpthread.so.0
#3  <signal handler called>
#4  0x40b30b4d in QListViewItem::QListViewItem(QListViewItem*, QString, QString,
QString, QString, QString, QString, QString, QString) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#5  0x0806cffd in UMLListViewItem::UMLListViewItem(UMLListViewItem*, QString,
Uml::ListView_Type, int) ()
#6  0x0806eefd in UMLListView::slotDiagramCreated(int) ()
#7  0x08074be8 in UMLListView::qt_invoke(int, QUObject*) ()
#8  0x40a6cff0 in QObject::activate_signal(QConnectionList*, QUObject*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#9  0x40a6d155 in QObject::activate_signal(int, int) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#10 0x0809d84a in UMLDoc::sigDiagramCreated(int) ()
#11 0x08096edd in UMLDoc::createDiagram(Uml::Diagram_Type, bool) ()
#12 0x080a3cb9 in UMLApp::slotComponentDiagram() ()
#13 0x080a7b2d in UMLApp::qt_invoke(int, QUObject*) ()
#14 0x40a6d079 in QObject::activate_signal(QConnectionList*, QUObject*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#15 0x40a6cf1d in QObject::activate_signal(int) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#16 0x404b0afb in KAction::activated() () from /usr/lib/libkdeui.so.4
#17 0x404a1f8f in KAction::slotActivated() () from /usr/lib/libkdeui.so.4
#18 0x404b0d01 in KAction::qt_invoke(int, QUObject*) ()
   from /usr/lib/libkdeui.so.4
#19 0x40a6d079 in QObject::activate_signal(QConnectionList*, QUObject*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#20 0x40d4c402 in QSignal::signal(QVariant const&) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#21 0x40a87108 in QSignal::activate() () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#22 0x40b5992d in QPopupMenu::mouseReleaseEvent(QMouseEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#23 0x40aa0fbc in QWidget::event(QEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#24 0x40a0eed4 in QApplication::internalNotify(QObject*, QEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#25 0x40a0e703 in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#26 0x40682139 in KApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/libkdecore.so.4
#27 0x409b4d5d in QETWidget::translateMouseEvent(_XEvent const*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#28 0x409b2cbf in QApplication::x11ProcessEvent(_XEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#29 0x409c7bba in QEventLoop::processEvents(unsigned) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#30 0x40a22ca6 in QEventLoop::enterLoop() ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#31 0x40a22b48 in QEventLoop::exec() () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#32 0x40a0f101 in QApplication::exec() ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#33 0x080b360f in main ()
#34 0x4110c867 in __libc_start_main () from /lib/libc.so.6
Comment 3 Carsten Pfeiffer 2003-03-05 02:52:42 UTC
Subject: Re: [Uml-devel] kdesdk/umbrello/umbrello

An important hint would have been, that you tried this after loading an (old) 
document.

Suggested patch attached. 

There were several problems.
1) UMLListView::init() is called multiple times during the lifetime of the 
UMLListView instance, which produced a memory leak and some connect()s 
accumulating.
2) The default listview items ("Logical View", "Use Case View", etc.) were 
created and destroyed at several places in the code. However they were not 
guaranteed to be created at all times (but being relied on all the time).

The deleteChildrenOf() calls could be factored out into a clear() method, 
cleaning up the view (cleaning up everything, but not destroying, or at least 
recreating the default items).

Please test/review.

Cheers
Carsten Pfeiffer
-----BEGIN PGP SIGNATURE-----

iQEVAwUBPmVYk6WgYMJuwmZtAQHKZgf/SEgbL2SNOJBCQ9rfcehBXnpmQIjXr8tk
W+GkZwBgRPc5AYzOlA8QOEVoKCbn7jykxVCtemsmuUrKkcBNea7AfY0ck3Fnv5U/
fCMaao8OiJToPWZVwFCNjF4XDFi+zNALhMPGaPY6kuNM0JzFpRWe39E6IksbwCUh
XloKgFJQokOT21acN3teGJC8YfQPc/ckkXFVjNRVLxqlaCSN84mzQsRTiCV3wbYP
dZ9vPhQWrLacmmT/LmPvtzI159uOy1ofPG1qypKYpFX9QhNMG08lOlfU0hI6/hMD
yYoK8TV4PK5RqmA+iDZIqsXZU76DCVJu5A8cT/3PZO4XcFmSokz/tQ==
=2/LJ
-----END PGP SIGNATURE-----


Created an attachment (id=1106)
patch-1
Comment 4 Stephen Torri 2003-03-05 16:31:24 UTC
The patch did not apply totally cleanly to a fresh CVS copy. This function was
the area where the patch failed. Is this function correct?

void UMLListView::init() {
        deleteChildrenOf( ucv );
        deleteChildrenOf( lv );
        deleteChildrenOf( componentView );
                                                                                
        rv->setOpen(true);
        ucv->setOpen(true);
        lv->setOpen(true);
        componentView->setOpen(true);
                                                                                
        //setup misc.
        delete menu;
        menu = 0;
        m_bStartedCut = false;
        loading = false;
        m_bIgnoreCancelRename = true;
}
Comment 5 Carsten Pfeiffer 2003-03-05 23:47:51 UTC
Subject: Re: [Uml-devel] kdesdk/umbrello/umbrello

On Wednesday 05 March 2003 16:33, you wrote:

Here's an updated patch against current CVS.

Cheers
Carsten Pfeiffer
-----BEGIN PGP SIGNATURE-----

iQEVAwUBPmZ+vaWgYMJuwmZtAQGDbgf/TmeEc1eB9qF1PB95fMkb8YjPZrdxxQFM
Gz1D3Cjrgza3EIY2AN7QgiH09MTgXo2IH2oNPSTbzW4/ADpzjBjy+zzIG2NcUo4T
rBOil4b72Zb8uTCLm0c13xe+QaRuu2PMsA4jM3cLgyFeHiqcdHik56kbZbvSb/9h
4kJBzLDJHFVdn1tYXO0fz0eiBZR91Gs94QSPpggKurPmUYB8MioBgY/oPBdIzsU/
nZqqzRf/aliasONcrbyZFnRNXOsYK/5i86xZnrmQYlyxaRT+8TkOkqaEtfcimN0Y
ck+nfsRtbSfV2hY1tlQNMZuEn3xL9lFuRztJKiqnKeNK6rVRPbRmWQ==
=paOi
-----END PGP SIGNATURE-----


Created an attachment (id=1109)
patch-2
Comment 6 Stephen Torri 2003-03-06 01:24:34 UTC
I applied the patch above along with this fix to get umbrello to compile. It
works now. Cool!

Index: diagram/widgetfactory.cpp
===================================================================
RCS file: /home/kde/kdesdk/umbrello/umbrello/diagram/widgetfactory.cpp,v
retrieving revision 1.1
diff -U2 -r1.1 widgetfactory.cpp
--- diagram/widgetfactory.cpp   5 Mar 2003 23:09:29 -0000       1.1
+++ diagram/widgetfactory.cpp   6 Mar 2003 00:23:35 -0000
@@ -27,4 +27,5 @@
  
  
+using namespace std;
Comment 7 Jonathan Riddell 2003-03-11 15:25:56 UTC
*** Bug has been marked as fixed ***.