Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 118329 Details for
Bug 164174
Umbrello 1.5.6 crashed when inserting activity transition in a state diagram
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
diff between umbrello 1.5.6 and 1.5.61
umbrello_1.5.6_1.5.61_diff (text/plain), 48.74 KB, created by
Simon Siemonsma
on 2007-05-06 12:43:54 UTC
(
hide
)
Description:
diff between umbrello 1.5.6 and 1.5.61
Filename:
MIME Type:
Creator:
Simon Siemonsma
Created:
2007-05-06 12:43:54 UTC
Size:
48.74 KB
patch
obsolete
>diff -U 3 -H -d -r -N -- old/kdesdk-3.5.6/umbrello/ChangeLog new/umbrello-1.5.61/ChangeLog >--- old/kdesdk-3.5.6/umbrello/ChangeLog 2007-01-15 12:24:47.000000000 +0100 >+++ new/umbrello-1.5.61/ChangeLog 2007-02-08 19:53:14.000000000 +0100 >@@ -1,3 +1,12 @@ >+Version 1.5.61 >+ >+* Copy/paste of attribute or operation in list view within same class >+* Improved loading of files from older versions >+* Ada import updated for Ada2005 >+* Bugs fixed from http://bugs.kde.org: >+* Crash on creating various types of associations (140693, 141073, 141106, 141277) >+* Unclickable use case diagram (140870) >+ > Version 1.5.6 > > * Fixed save/reload of association widgets for collaboration diagrams >@@ -11,10 +20,12 @@ > http://www.geeksoc.org/~jr/umbrello/uml-devel/9863.html > * Optimized printer margins > http://www.geeksoc.org/~jr/umbrello/uml-devel/9895.html >+* Improved code import for Ada and Pascal (SVN commits: 621845, 622128, 622396, 623316, >+ 623421, and 624257) > * Bugs/wishes from http://bugs.kde.org: > * Association line nodes don't drag along with multiply-selected classes (57878) > * Disappearing parameters when editing class properties (114477) >-* Umbrello saves too much copies at xmi (135606) >+* Umbrello saves too many copies in xmi (135606) > * XML scheme: mixup of attribute names: *color and *colour (136061) > * Artifacts of a component diagram are wrongly placed in Deployment View folder (137564) > * Incorrect export to SQL (138139) >diff -U 3 -H -d -r -N -- old/kdesdk-3.5.6/umbrello/VERSION new/umbrello-1.5.61/VERSION >--- old/kdesdk-3.5.6/umbrello/VERSION 2007-01-15 12:24:47.000000000 +0100 >+++ new/umbrello-1.5.61/VERSION 2007-01-26 18:25:37.000000000 +0100 >@@ -1 +1 @@ >-1.5.6 >+1.5.61 > >diff -U 3 -H -d -r -N -- old/kdesdk-3.5.6/umbrello/umbrello/clipboard/umlclipboard.cpp new/umbrello-1.5.61/umbrello/clipboard/umlclipboard.cpp >--- old/kdesdk-3.5.6/umbrello/umbrello/clipboard/umlclipboard.cpp 2007-01-15 12:24:36.000000000 +0100 >+++ new/umbrello-1.5.61/umbrello/clipboard/umlclipboard.cpp 2007-02-04 15:53:04.000000000 +0100 >@@ -579,31 +579,45 @@ > return false; > } > >- bool objectAlreadyExists = false; > UMLObject *obj = 0; >- UMLObjectListIt object_it(objects); > doc->setModified(true); > idchanges = doc->getChangeLog(); >+ // Assume success if at least one child object could be pasted >+ if (objects.count()) >+ result = false; > >- while ( (obj=object_it.current()) != 0 ) { >+ for (UMLObjectListIt it(objects); (obj = it.current()) != NULL; ++it) { > obj->setID(doc->assignNewID(obj->getID())); > switch(obj->getBaseType()) { > case Uml::ot_Attribute : > { >- if (parent->addAttribute(dynamic_cast<UMLAttribute*>(obj), idchanges)) { >- //FIXME doc -> signalChildUMLObjectCreated(obj); >+ UMLObject *exist = parent->findChildObject(obj->getName(), Uml::ot_Attribute); >+ if (exist) { >+ QString newName = parent->uniqChildName(Uml::ot_Attribute, obj->getName()); >+ obj->setName(newName); >+ } >+ UMLAttribute *att = static_cast<UMLAttribute*>(obj); >+ if (parent->addAttribute(att, idchanges)) { >+ result = true; > } else { >- objectAlreadyExists = true; >+ kError() << "UMLClipboard::pasteClip5: " << parent->getName() >+ << "->addAttribute(" << att->getName() << ") failed" << endl; > } > break; > } > case Uml::ot_Operation : > { >- UMLClassifier * parent = dynamic_cast<UMLClassifier *>(lvitem -> getUMLObject()); >- if (parent -> addOperation(dynamic_cast<UMLOperation*>(obj), idchanges)) { >- //FIXME doc -> signalChildUMLObjectCreated(obj); >+ UMLOperation *op = static_cast<UMLOperation*>(obj); >+ UMLOperation *exist = parent->checkOperationSignature(op->getName(), op->getParmList()); >+ if (exist) { >+ QString newName = parent->uniqChildName(Uml::ot_Operation, obj->getName()); >+ op->setName(newName); >+ } >+ if (parent->addOperation(op, idchanges)) { >+ result = true; > } else { >- objectAlreadyExists = true; >+ kError() << "UMLClipboard::pasteClip5: " << parent->getName() >+ << "->addOperation(" << op->getName() << ") failed" << endl; > } > break; > } >@@ -611,11 +625,6 @@ > kWarning() << "pasteing unknown children type in clip type 5" << endl; > return false; > } >- ++object_it; >- } >- >- if (objectAlreadyExists) { >- pasteItemAlreadyExists(); > } > > return result; >diff -U 3 -H -d -r -N -- old/kdesdk-3.5.6/umbrello/umbrello/codeimport/adaimport.cpp new/umbrello-1.5.61/umbrello/codeimport/adaimport.cpp >--- old/kdesdk-3.5.6/umbrello/umbrello/codeimport/adaimport.cpp 2007-01-15 12:24:47.000000000 +0100 >+++ new/umbrello-1.5.61/umbrello/codeimport/adaimport.cpp 2007-02-03 10:45:42.000000000 +0100 >@@ -167,7 +167,7 @@ > > bool AdaImport::parseStmt() { > const uint srcLength = m_source.count(); >- const QString& keyword = m_source[m_srcIndex]; >+ QString keyword = m_source[m_srcIndex]; > UMLDoc *umldoc = UMLApp::app()->getDocument(); > //kDebug() << '"' << keyword << '"' << endl; > if (keyword == "with") { >@@ -258,7 +258,8 @@ > } > if (keyword == "type") { > QString name = advance(); >- if (advance() == "(") { >+ QString next = advance(); >+ if (next == "(") { > kDebug() << "AdaImport::parseStmt(" << name << "): " > << "discriminant handling is not yet implemented" << endl; > // @todo Find out how to map discriminated record to UML. >@@ -266,30 +267,30 @@ > Import_Utils::createUMLObject(Uml::ot_Class, name, m_scope[m_scopeIndex], > m_comment, "record"); > skipStmt("end"); >- if (m_source[++m_srcIndex] == "case") >+ if ((next = advance()) == "case") > m_srcIndex += 2; // skip "case" ";" >- // we are now positioned on "end" >- m_srcIndex += 2; // skip "end" "record" >- // we are now positioned on ";" >+ skipStmt(); > return true; > } >- if (m_source[m_srcIndex] == ";") { >+ if (next == ";") { > // forward declaration > Import_Utils::createUMLObject(Uml::ot_Class, name, m_scope[m_scopeIndex], > m_comment); > return true; > } >- if (m_source[m_srcIndex] != "is") { >+ if (next != "is") { > kError() << "AdaImport::parseStmt: expecting \"is\"" << endl; > return false; > } >- if (advance() == "(") { >+ next = advance(); >+ if (next == "(") { > // enum type > UMLObject *ns = Import_Utils::createUMLObject(Uml::ot_Enum, > name, m_scope[m_scopeIndex], m_comment); > UMLEnum *enumType = static_cast<UMLEnum*>(ns); >- while (++m_srcIndex < srcLength && m_source[m_srcIndex] != ")") { >- Import_Utils::addEnumLiteral(enumType, m_source[m_srcIndex]); >+ while ((next = advance()) != ")") { >+ Import_Utils::addEnumLiteral(enumType, next, m_comment); >+ m_comment = QString(); > if (advance() != ",") > break; > } >@@ -297,24 +298,38 @@ > return true; > } > bool isTaggedType = false; >- if (m_source[m_srcIndex] == "abstract") { >+ if (next == "abstract") { > m_isAbstract = true; >- m_srcIndex++; >+ next = advance(); > } >- if (m_source[m_srcIndex] == "tagged") { >+ if (next == "tagged") { > isTaggedType = true; >- m_srcIndex++; >+ next = advance(); > } >- if (m_source[m_srcIndex] == "limited") { >- m_srcIndex++; // we can't (yet?) represent that >+ if (next == "limited" || >+ next == "task" || >+ next == "protected" || >+ next == "synchronized") { >+ next = advance(); // we can't (yet?) represent that > } >- if (m_source[m_srcIndex] == "private" || >- m_source[m_srcIndex] == "record" || >- (m_source[m_srcIndex] == "null" && >+ if (next == "private" || >+ next == "interface" || >+ next == "record" || >+ (next == "null" && > m_source[m_srcIndex+1] == "record")) { >- UMLObject *ns = Import_Utils::createUMLObject(Uml::ot_Class, >- name, m_scope[m_scopeIndex], m_comment); >- ns->setAbstract(m_isAbstract); >+ Uml::Object_Type t = (next == "interface" ? Uml::ot_Interface : Uml::ot_Class); >+ UMLObject *ns = Import_Utils::createUMLObject(t, name, m_scope[m_scopeIndex], m_comment); >+ if (t == Uml::ot_Interface) { >+ while ((next = advance()) == "and") { >+ UMLClassifier *klass = static_cast<UMLClassifier*>(ns); >+ QString base = expand(advance()); >+ UMLObject *p = Import_Utils::createUMLObject(Uml::ot_Interface, base, m_scope[m_scopeIndex]); >+ UMLClassifier *parent = static_cast<UMLClassifier*>(p); >+ Import_Utils::createGeneralization(klass, parent); >+ } >+ } else { >+ ns->setAbstract(m_isAbstract); >+ } > m_isAbstract = false; > if (isTaggedType) { > if (! m_classesDefinedInThisScope.contains(ns)) >@@ -322,15 +337,19 @@ > } else { > ns->setStereotype("record"); > } >- if (m_source[m_srcIndex] == "record") >+ if (next == "record") > m_klass = static_cast<UMLClassifier*>(ns); > else > skipStmt(); > return true; > } >- if (m_source[m_srcIndex] == "new") { >+ if (next == "new") { > QString base = expand(advance()); >- const bool isExtension = (advance() == "with"); >+ QStringList baseInterfaces; >+ while ((next = advance()) == "and") { >+ baseInterfaces.append(expand(advance())); >+ } >+ const bool isExtension = (next == "with"); > Uml::Object_Type t; > if (isExtension || m_isAbstract) { > t = Uml::ot_Class; >@@ -343,14 +362,23 @@ > UMLClassifier *parent = static_cast<UMLClassifier*>(ns); > ns = Import_Utils::createUMLObject(t, name, m_scope[m_scopeIndex], m_comment); > if (isExtension) { >- QString nextLexeme = advance(); >- if (nextLexeme == "null" || nextLexeme == "record") { >+ next = advance(); >+ if (next == "null" || next == "record") { > UMLClassifier *klass = static_cast<UMLClassifier*>(ns); > Import_Utils::createGeneralization(klass, parent); >- if (nextLexeme == "record") { >+ if (next == "record") { > // Set the m_klass for attributes. > m_klass = klass; > } >+ if (baseInterfaces.count()) { >+ t = Uml::ot_Interface; >+ QStringList::Iterator end(baseInterfaces.end()); >+ for (QStringList::Iterator bi(baseInterfaces.begin()); bi != end; ++bi) { >+ ns = Import_Utils::createUMLObject(t, *bi, m_scope[m_scopeIndex]); >+ parent = static_cast<UMLClassifier*>(ns); >+ Import_Utils::createGeneralization(klass, parent); >+ } >+ } > } > } > skipStmt(); >@@ -385,6 +413,11 @@ > skipStmt(); > return true; > } >+ // subprogram >+ if (keyword == "not") >+ keyword = advance(); >+ if (keyword == "overriding") >+ keyword = advance(); > if (keyword == "function" || keyword == "procedure") { > const QString& name = advance(); > QString returnType; >@@ -503,7 +536,7 @@ > skipStmt(); > return true; > } >- if (keyword == "for") { // rep spec (yuck) >+ if (keyword == "for") { // rep spec > QString typeName = advance(); > QString next = advance(); > if (next == "'") { >@@ -532,7 +565,10 @@ > skipStmt(); > return true; > } >- QString typeName = expand(advance()); >+ QString nextToken = advance(); >+ if (nextToken == "aliased") >+ nextToken = advance(); >+ QString typeName = expand(nextToken); > QString initialValue; > if (advance() == ":=") { > initialValue = advance(); >diff -U 3 -H -d -r -N -- old/kdesdk-3.5.6/umbrello/umbrello/codeimport/import_utils.cpp new/umbrello-1.5.61/umbrello/codeimport/import_utils.cpp >--- old/kdesdk-3.5.6/umbrello/umbrello/codeimport/import_utils.cpp 2007-01-15 12:24:47.000000000 +0100 >+++ new/umbrello-1.5.61/umbrello/codeimport/import_utils.cpp 2007-02-03 21:41:26.000000000 +0100 >@@ -344,8 +344,9 @@ > return attr; > } > >-void addEnumLiteral(UMLEnum *enumType, const QString &literal) { >- enumType->addEnumLiteral( literal ); >+void addEnumLiteral(UMLEnum *enumType, const QString &literal, const QString &comment) { >+ UMLObject *el = enumType->addEnumLiteral(literal); >+ el->setDoc(comment); > } > > void createGeneralization(UMLClassifier *child, UMLClassifier *parent) { >diff -U 3 -H -d -r -N -- old/kdesdk-3.5.6/umbrello/umbrello/codeimport/import_utils.h new/umbrello-1.5.61/umbrello/codeimport/import_utils.h >--- old/kdesdk-3.5.6/umbrello/umbrello/codeimport/import_utils.h 2007-01-15 12:24:47.000000000 +0100 >+++ new/umbrello-1.5.61/umbrello/codeimport/import_utils.h 2007-02-03 21:41:26.000000000 +0100 >@@ -107,7 +107,8 @@ > /** > * Add an enum literal to an UMLEnum. > */ >- void addEnumLiteral(UMLEnum *enumType, const QString &literal); >+ void addEnumLiteral(UMLEnum *enumType, const QString &literal, >+ const QString &comment = QString()); > > /** > * Create a generalization from the given child classifier to the given >diff -U 3 -H -d -r -N -- old/kdesdk-3.5.6/umbrello/umbrello/codeimport/pascalimport.cpp new/umbrello-1.5.61/umbrello/codeimport/pascalimport.cpp >--- old/kdesdk-3.5.6/umbrello/umbrello/codeimport/pascalimport.cpp 2007-01-15 12:24:47.000000000 +0100 >+++ new/umbrello-1.5.61/umbrello/codeimport/pascalimport.cpp 2007-01-16 22:18:29.000000000 +0100 >@@ -5,8 +5,8 @@ > * the Free Software Foundation; either version 2 of the License, or * > * (at your option) any later version. * > * * >- * copyright (C) 2006 * >- * Umbrello UML Modeller Authors <uml-devel@uml.sf.net> * >+ * copyright (C) 2006-2007 * >+ * Umbrello UML Modeller Authors <uml-devel@uml.sf.net> * > ***************************************************************************/ > > // own header >@@ -66,7 +66,8 @@ > } > > void PascalImport::checkModifiers(bool& isVirtual, bool& isAbstract) { >- while (true) { >+ const uint srcLength = m_source.count(); >+ while (m_srcIndex < srcLength - 1) { > QString lookAhead = m_source[m_srcIndex + 1].lower(); > if (lookAhead != "virtual" && lookAhead != "abstract" && > lookAhead != "override" && >@@ -89,9 +90,9 @@ > QString keyword = m_source[m_srcIndex].lower(); > //kDebug() << '"' << keyword << '"' << endl; > if (keyword == "uses") { >- while (++m_srcIndex < srcLength && m_source[m_srcIndex] != ";") { >- QStringList components = QStringList::split(".", m_source[m_srcIndex]); >- const QString& prefix = components.first(); >+ while (m_srcIndex < srcLength - 1) { >+ QString unit = advance(); >+ const QString& prefix = unit.lower(); > if (prefix == "sysutils" || prefix == "types" || prefix == "classes" || > prefix == "graphics" || prefix == "controls" || prefix == "strings" || > prefix == "forms" || prefix == "windows" || prefix == "messages" || >@@ -102,27 +103,19 @@ > break; > continue; > } >- QString base = prefix; >- uint i = 0; >- while (1) { >- if (! m_parsedFiles.contains(base)) { >- m_parsedFiles.append(base); >- QString filename = base + ".pas"; >- // Save current m_source and m_srcIndex. >- QStringList source(m_source); >- uint srcIndex = m_srcIndex; >- m_source.clear(); >- parseFile(filename); >- // Restore m_source and m_srcIndex. >- m_source = source; >- m_srcIndex = srcIndex; >- // Also reset m_currentAccess. >- // CHECK: need to reset more stuff? >- m_currentAccess = Uml::Visibility::Public; >- } >- if (++i >= components.count()) >- break; >- base += '-' + components[i]; >+ QString filename = unit + ".pas"; >+ if (! m_parsedFiles.contains(unit)) { >+ // Save current m_source and m_srcIndex. >+ QStringList source(m_source); >+ uint srcIndex = m_srcIndex; >+ m_source.clear(); >+ parseFile(filename); >+ // Restore m_source and m_srcIndex. >+ m_source = source; >+ m_srcIndex = srcIndex; >+ // Also reset m_currentAccess. >+ // CHECK: need to reset more stuff? >+ m_currentAccess = Uml::Visibility::Public; > } > if (advance() != ",") > break; >@@ -189,6 +182,10 @@ > if (keyword == "packed") { > return true; // TBC: perhaps this could be stored in a TaggedValue > } >+ if (keyword == "[") { >+ skipStmt("]"); >+ return true; >+ } > if (keyword == "end") { > if (m_klass) { > m_klass = NULL; >@@ -207,7 +204,9 @@ > // Unlike a Pascal unit, a UML package does not support subprograms. > // In order to map those, we would need to create a UML class with > // stereotype <<utility>> for the unit, http://bugs.kde.org/89167 >- skipStmt(); >+ bool dummyVirtual = false; >+ bool dummyAbstract = false; >+ checkModifiers(dummyVirtual, dummyAbstract); > return true; > } > const QString& name = advance(); >@@ -321,21 +320,38 @@ > skipStmt(); > return true; > } >- if (keyword == "class") { >- UMLObject *ns = Import_Utils::createUMLObject(Uml::ot_Class, >- name, m_scope[m_scopeIndex], m_comment); >- m_klass = static_cast<UMLClassifier*>(ns); >+ if (keyword == "class" || keyword == "interface") { >+ Uml::Object_Type t = (keyword == "class" ? Uml::ot_Class : Uml::ot_Interface); >+ UMLObject *ns = Import_Utils::createUMLObject(t, name, >+ m_scope[m_scopeIndex], m_comment); >+ UMLClassifier *klass = static_cast<UMLClassifier*>(ns); > m_comment = QString(); >- if (m_source[m_srcIndex + 1] == "(") { >+ QString lookAhead = m_source[m_srcIndex + 1]; >+ if (lookAhead == "(") { > advance(); > do { > QString base = advance(); > UMLObject *ns = Import_Utils::createUMLObject(Uml::ot_Class, base, NULL); > UMLClassifier *parent = static_cast<UMLClassifier*>(ns); > m_comment = QString(); >- Import_Utils::createGeneralization(m_klass, parent); >+ Import_Utils::createGeneralization(klass, parent); > } while (advance() == ","); >+ if (m_source[m_srcIndex] != ")") { >+ kError() << "PascalImport: expecting \")\" at " >+ << m_source[m_srcIndex] << endl; >+ return false; >+ } >+ lookAhead = m_source[m_srcIndex + 1]; > } >+ if (lookAhead == ";") { >+ skipStmt(); >+ return true; >+ } >+ if (lookAhead == "of") { >+ // @todo implement class-reference type >+ return false; >+ } >+ m_klass = klass; > m_currentAccess = Uml::Visibility::Public; > return true; > } >@@ -368,7 +384,7 @@ > stereotype = keyword; > name = advance(); > } else { >- name = keyword; >+ name = m_source[m_srcIndex]; > } > if (advance() != ":") { > kError() << "PascalImport: expecting \":\" at " << name << " " > >diff -U 3 -H -d -r -N -- old/kdesdk-3.5.6/umbrello/umbrello/dialogs/activitydialog.h new/umbrello-1.5.61/umbrello/dialogs/activitydialog.h >--- old/kdesdk-3.5.6/umbrello/umbrello/dialogs/activitydialog.h 2007-01-15 12:24:42.000000000 +0100 >+++ new/umbrello-1.5.61/umbrello/dialogs/activitydialog.h 2007-01-20 18:03:01.000000000 +0100 >@@ -52,7 +52,7 @@ > return m_bChangesMade; > } > >-protected: >+protected slots: > > enum Page > { >@@ -70,7 +70,7 @@ > * Entered when Apply button pressed. > */ > void slotApply(); >- >+protected: > /** > * Sets up the pages of the dialog. > */ >diff -U 3 -H -d -r -N -- old/kdesdk-3.5.6/umbrello/umbrello/dialogs/classpropdlg.h new/umbrello-1.5.61/umbrello/dialogs/classpropdlg.h >--- old/kdesdk-3.5.6/umbrello/umbrello/dialogs/classpropdlg.h 2006-07-22 10:11:58.000000000 +0200 >+++ new/umbrello-1.5.61/umbrello/dialogs/classpropdlg.h 2007-01-19 19:08:18.000000000 +0100 >@@ -74,17 +74,18 @@ > enum Page{page_gen = 0, page_att, page_op, page_template, > page_assoc, page_options, page_color, page_font}; > >-protected: >+protected slots: > /** > * Calls slotApply() and accepts (closes) the dialog > */ > void slotOk(); > > /** >- * Applys the settings in the dialog to the widget and object >+ * Applies the settings in the dialog to the widget and object > */ > void slotApply(); > >+protected: > /** > * Sets up the general, attribute, operations, template and association pages as appropriate > */ >diff -U 3 -H -d -r -N -- old/kdesdk-3.5.6/umbrello/umbrello/dialogs/pkgcontentspage.cpp new/umbrello-1.5.61/umbrello/dialogs/pkgcontentspage.cpp >--- old/kdesdk-3.5.6/umbrello/umbrello/dialogs/pkgcontentspage.cpp 2007-01-15 12:24:42.000000000 +0100 >+++ new/umbrello-1.5.61/umbrello/dialogs/pkgcontentspage.cpp 2007-02-09 17:53:01.000000000 +0100 >@@ -64,14 +64,16 @@ > if (!i) > return; > int item = m_pContentLB -> currentItem(); >- UMLObject *o = m_pPackage->containedObjects().at(item); >+ UMLObjectList contents = m_pPackage->containedObjects(); >+ UMLObject *o = contents.at(item); > ClassPropDlg dlg(this, o, item, true); > dlg.exec(); > } > > void PkgContentsPage::fillListBox() { > m_pContentLB->clear(); >- UMLObjectListIt objList_it(m_pPackage->containedObjects()); >+ UMLObjectList contents = m_pPackage->containedObjects(); >+ UMLObjectListIt objList_it(contents); > UMLObject* umlo = NULL; > int i = 0; > while ((umlo = objList_it.current()) != NULL) { >@@ -107,8 +109,8 @@ > switch(id) { > case ListPopupMenu::mt_Delete: > { >- UMLObject *o = m_pPackage->containedObjects().at( >- m_pContentLB->currentItem() ); >+ UMLObjectList contents = m_pPackage->containedObjects(); >+ UMLObject *o = contents.at( m_pContentLB->currentItem() ); > UMLApp::app()->getDocument()->removeUMLObject(o); > fillListBox(); > } >diff -U 3 -H -d -r -N -- old/kdesdk-3.5.6/umbrello/umbrello/dialogs/settingsdlg.h new/umbrello-1.5.61/umbrello/dialogs/settingsdlg.h >--- old/kdesdk-3.5.6/umbrello/umbrello/dialogs/settingsdlg.h 2007-01-15 12:24:42.000000000 +0100 >+++ new/umbrello-1.5.61/umbrello/dialogs/settingsdlg.h 2007-01-20 18:03:01.000000000 +0100 >@@ -165,9 +165,6 @@ > KConfig * m_pCfg; > bool m_bChangesApplied; > >- //signals >-signals: >- //slots > private slots: > void slotApply(); > void slotOk(); >diff -U 3 -H -d -r -N -- old/kdesdk-3.5.6/umbrello/umbrello/dialogs/statedialog.h new/umbrello-1.5.61/umbrello/dialogs/statedialog.h >--- old/kdesdk-3.5.6/umbrello/umbrello/dialogs/statedialog.h 2007-01-15 12:24:42.000000000 +0100 >+++ new/umbrello-1.5.61/umbrello/dialogs/statedialog.h 2007-01-20 18:03:01.000000000 +0100 >@@ -51,7 +51,7 @@ > return m_bChangesMade; > } > >-protected: >+protected slots: > > enum Page > { >@@ -70,7 +70,7 @@ > * Entered when Apply button pressed. > */ > void slotApply(); >- >+protected: > /** > * Sets up the pages of the dialog. > */ >diff -U 3 -H -d -r -N -- old/kdesdk-3.5.6/umbrello/umbrello/objectwidget.cpp new/umbrello-1.5.61/umbrello/objectwidget.cpp >--- old/kdesdk-3.5.6/umbrello/umbrello/objectwidget.cpp 2007-01-15 12:24:47.000000000 +0100 >+++ new/umbrello-1.5.61/umbrello/objectwidget.cpp 2007-02-03 23:25:34.000000000 +0100 >@@ -5,7 +5,7 @@ > * the Free Software Foundation; either version 2 of the License, or * > * (at your option) any later version. * > * * >- * copyright (C) 2002-2006 * >+ * copyright (C) 2002-2007 * > * Umbrello UML Modeller Authors <uml-devel@uml.sf.net> * > ***************************************************************************/ > >@@ -181,8 +181,13 @@ > > void ObjectWidget::moveEvent(QMoveEvent */*m*/) { > emit sigWidgetMoved( m_nLocalID ); >- if( m_pLine ) >- m_pLine -> setStartPoint( getX() + width() / 2, getY() + height() ); >+ if (m_pLine) { >+ const int x = getX(); // for debugging: gdb has a problem evaluating getX() etc >+ const int w = width(); >+ const int y = getY(); >+ const int h = height(); >+ m_pLine->setStartPoint(x + w / 2, y + h); >+ } > } > > void ObjectWidget::slotColorChanged(Uml::IDType /*viewID*/) { >@@ -364,6 +369,10 @@ > return false; > } > >+SeqLineWidget *ObjectWidget::getSeqLine() { >+ return m_pLine; >+} >+ > void ObjectWidget::saveToXMI( QDomDocument & qDoc, QDomElement & qElement ) { > QDomElement objectElement = qDoc.createElement( "objectwidget" ); > UMLWidget::saveToXMI( qDoc, objectElement ); >diff -U 3 -H -d -r -N -- old/kdesdk-3.5.6/umbrello/umbrello/objectwidget.h new/umbrello-1.5.61/umbrello/objectwidget.h >--- old/kdesdk-3.5.6/umbrello/umbrello/objectwidget.h 2007-01-15 12:24:47.000000000 +0100 >+++ new/umbrello-1.5.61/umbrello/objectwidget.h 2007-02-03 23:25:34.000000000 +0100 >@@ -5,7 +5,7 @@ > * the Free Software Foundation; either version 2 of the License, or * > * (at your option) any later version. * > * * >- * copyright (C) 2002-2006 * >+ * copyright (C) 2002-2007 * > * Umbrello UML Modeller Authors <uml-devel@uml.sf.net> * > ***************************************************************************/ > >@@ -225,6 +225,13 @@ > bool messageOverlap(int y, MessageWidget* messageWidget); > > /** >+ * Return the SeqLineWidget. >+ * Returns a non NULL pointer if this ObjectWidget is part of a >+ * sequence diagram. >+ */ >+ SeqLineWidget *getSeqLine(); >+ >+ /** > * Saves to the <objectwidget> XMI element. > */ > void saveToXMI( QDomDocument & qDoc, QDomElement & qElement ); >diff -U 3 -H -d -r -N -- old/kdesdk-3.5.6/umbrello/umbrello/seqlinewidget.cpp new/umbrello-1.5.61/umbrello/seqlinewidget.cpp >--- old/kdesdk-3.5.6/umbrello/umbrello/seqlinewidget.cpp 2007-01-15 12:24:47.000000000 +0100 >+++ new/umbrello-1.5.61/umbrello/seqlinewidget.cpp 2007-02-03 23:25:34.000000000 +0100 >@@ -5,7 +5,7 @@ > * the Free Software Foundation; either version 2 of the License, or * > * (at your option) any later version. * > * * >- * copyright (C) 2002-2006 * >+ * copyright (C) 2002-2007 * > * Umbrello UML Modeller Authors <uml-devel@uml.sf.net> * > ***************************************************************************/ > >@@ -27,10 +27,9 @@ > setPen( QPen( m_pObject->getLineColor(), 0, Qt::DashLine ) ); > setZ( 0 ); > setVisible( true ); >- m_pDestructionBox.line1 = 0; >+ m_DestructionBox.line1 = 0; > m_nLengthY = 250; > setupDestructionBox(); >- m_pView -> addSeqLine( this ); > } > > SeqLineWidget::~SeqLineWidget() {} >@@ -51,7 +50,6 @@ > > void SeqLineWidget::cleanup() { > cleanupDestructionBox(); >- m_pView->removeSeqLine( this ); > } > > void SeqLineWidget::setStartPoint( int startX, int startY ) { >@@ -62,11 +60,11 @@ > } > > void SeqLineWidget::cleanupDestructionBox() { >- if ( m_pDestructionBox.line1 ) { >- delete m_pDestructionBox.line1; >- m_pDestructionBox.line1 = 0; >- delete m_pDestructionBox.line2; >- m_pDestructionBox.line2 = 0; >+ if ( m_DestructionBox.line1 ) { >+ delete m_DestructionBox.line1; >+ m_DestructionBox.line1 = 0; >+ delete m_DestructionBox.line2; >+ m_DestructionBox.line2 = 0; > } > } > >@@ -81,22 +79,21 @@ > rect.setWidth( 14 ); > rect.setHeight( 14 ); > >- m_pDestructionBox.line1 = new QCanvasLine( m_pView->canvas() ); >- m_pDestructionBox.line1->setPoints( rect.x(), rect.y(), >- rect.x() + rect.width(), rect.y() + rect.height() ); >- m_pDestructionBox.line1->setVisible( true ); >- m_pDestructionBox.line1->setPen( QPen(m_pObject->getLineColor(), 2) ); >- m_pDestructionBox.line1->setZ( 3 ); >+ m_DestructionBox.line1 = new QCanvasLine( m_pView->canvas() ); >+ m_DestructionBox.setLine1Points(rect); >+ m_DestructionBox.line1->setVisible( true ); >+ m_DestructionBox.line1->setPen( QPen(m_pObject->getLineColor(), 2) ); >+ m_DestructionBox.line1->setZ( 3 ); > >- m_pDestructionBox.line2 = new QCanvasLine( m_pView -> canvas() ); >- m_pDestructionBox.line2->setPoints( rect.x(), rect.y() + rect.height(), rect.x() + rect.width(), rect.y() ); >- m_pDestructionBox.line2->setVisible( true ); >- m_pDestructionBox.line2->setPen( QPen(m_pObject->getLineColor(), 2) ); >- m_pDestructionBox.line2->setZ( 3 ); >+ m_DestructionBox.line2 = new QCanvasLine( m_pView -> canvas() ); >+ m_DestructionBox.setLine2Points(rect); >+ m_DestructionBox.line2->setVisible( true ); >+ m_DestructionBox.line2->setPen( QPen(m_pObject->getLineColor(), 2) ); >+ m_DestructionBox.line2->setZ( 3 ); > } > > void SeqLineWidget::moveDestructionBox() { >- if( !m_pDestructionBox.line1 ) { >+ if( !m_DestructionBox.line1 ) { > return; > } > QRect rect; >@@ -104,10 +101,8 @@ > rect.setY( m_pObject->getY() + m_pObject->getHeight() + m_nLengthY - 7 ); > rect.setWidth( 14 ); > rect.setHeight( 14 ); >- m_pDestructionBox.line1->setPoints( rect.x(), rect.y(), >- rect.x() + rect.width(), rect.y() + rect.height() ); >- m_pDestructionBox.line2->setPoints( rect.x(), rect.y() + rect.height(), >- rect.x() + rect.width(), rect.y() ); >+ m_DestructionBox.setLine1Points(rect); >+ m_DestructionBox.setLine2Points(rect); > } > > void SeqLineWidget::setEndOfLine(int yPosition) { >diff -U 3 -H -d -r -N -- old/kdesdk-3.5.6/umbrello/umbrello/seqlinewidget.h new/umbrello-1.5.61/umbrello/seqlinewidget.h >--- old/kdesdk-3.5.6/umbrello/umbrello/seqlinewidget.h 2007-01-15 12:24:47.000000000 +0100 >+++ new/umbrello-1.5.61/umbrello/seqlinewidget.h 2007-02-03 23:25:34.000000000 +0100 >@@ -5,14 +5,14 @@ > * the Free Software Foundation; either version 2 of the License, or * > * (at your option) any later version. * > * * >- * copyright (C) 2002-2006 * >+ * copyright (C) 2002-2007 * > * Umbrello UML Modeller Authors <uml-devel@uml.sf.net> * > ***************************************************************************/ > >- > #ifndef SEQLINEWIDGET_H > #define SEQLINEWIDGET_H >-//app includes >+ >+#include <qcanvas.h> > > class UMLView; > class ObjectWidget; >@@ -108,11 +108,18 @@ > UMLView * m_pView; > > /// The destruction box. >- struct { >- QCanvasRectangle * rect; >+ struct DestructionBox { > QCanvasLine * line1; > QCanvasLine * line2; >- } m_pDestructionBox; >+ void setLine1Points(QRect rect) { >+ line1->setPoints( rect.x(), rect.y(), >+ rect.x() + rect.width(), rect.y() + rect.height() ); >+ } >+ void setLine2Points(QRect rect) { >+ line2->setPoints( rect.x(), rect.y() + rect.height(), >+ rect.x() + rect.width(), rect.y() ); >+ } >+ } m_DestructionBox; > > /** > * The length of the line. >diff -U 3 -H -d -r -N -- old/kdesdk-3.5.6/umbrello/umbrello/toolbarstateassociation.cpp new/umbrello-1.5.61/umbrello/toolbarstateassociation.cpp >--- old/kdesdk-3.5.6/umbrello/umbrello/toolbarstateassociation.cpp 2007-01-15 12:24:47.000000000 +0100 >+++ new/umbrello-1.5.61/umbrello/toolbarstateassociation.cpp 2007-01-26 18:25:37.000000000 +0100 >@@ -208,6 +208,10 @@ > if (m_pUMLView->addAssociation(a, false)) { > // if view went ok, then append in document > UMLAssociation *umla = a->getAssociation(); >+ if (umla == NULL) { >+ // association without model representation in UMLDoc >+ return; >+ } > Uml::Model_Type m = Model_Utils::convert_DT_MT(m_pUMLView->getType()); > UMLDoc *umldoc = UMLApp::app()->getDocument(); > umla->setUMLPackage(umldoc->getRootFolder(m)); >diff -U 3 -H -d -r -N -- old/kdesdk-3.5.6/umbrello/umbrello/umbrello.desktop new/umbrello-1.5.61/umbrello/umbrello.desktop >--- old/kdesdk-3.5.6/umbrello/umbrello/umbrello.desktop 2007-01-15 12:24:47.000000000 +0100 >+++ new/umbrello-1.5.61/umbrello/umbrello.desktop 2007-01-30 08:05:38.000000000 +0100 >@@ -8,6 +8,7 @@ > Terminal=false > Name=Umbrello > Name[hi]=ठमà¥à¤¬à¤°à¥à¤²à¥ >+Name[pa]=à¨à¨®à¨¬à¨°à¨¿à©±à¨²à¨ > Name[ta]= à® à®®à¯à®°à®²à¯à®²à¯ > GenericName=UML Modeller > GenericName[bs]=UML modeler >@@ -27,7 +28,7 @@ > GenericName[hi]=यà¥à¤à¤®à¤à¤² मà¥à¤¡à¤²à¤° > GenericName[hu]=UML-modellezÅ > GenericName[it]=Modellatore UML >-GenericName[ja]=UML ã¢ãã© >+GenericName[ja]=UML ã¢ãã©ã¼ > GenericName[ms]=Pemodel UML > GenericName[nb]=UML-modelleringsprogram > GenericName[nds]=UML-Modellmaker >diff -U 3 -H -d -r -N -- old/kdesdk-3.5.6/umbrello/umbrello/umlcanvasobject.cpp new/umbrello-1.5.61/umbrello/umlcanvasobject.cpp >--- old/kdesdk-3.5.6/umbrello/umbrello/umlcanvasobject.cpp 2007-01-15 12:24:47.000000000 +0100 >+++ new/umbrello-1.5.61/umbrello/umlcanvasobject.cpp 2007-02-04 13:34:17.000000000 +0100 >@@ -136,25 +136,32 @@ > } > > QString UMLCanvasObject::uniqChildName( const Uml::Object_Type type, >- bool seekStereo /* = false */ ) { >- QString currentName; >- if (seekStereo) { >- currentName = i18n("new_stereotype"); >- } else if (type == Uml::ot_Association) { >- currentName = i18n("new_association"); >- } else if (type == Uml::ot_Attribute) { >- currentName = i18n("new_attribute"); >- } else if (type == Uml::ot_Template) { >- currentName = i18n("new_template"); >- } else if (type == Uml::ot_Operation) { >- currentName = i18n("new_operation"); >- } else if (type == Uml::ot_EnumLiteral) { >- currentName = i18n("new_literal"); >- } else if (type == Uml::ot_EntityAttribute) { >- currentName = i18n("new_field"); >- } else { >- kWarning() << "uniqChildName() called for unknown child type " << type << endl; >- return "ERROR_in_UMLCanvasObject_uniqChildName"; >+ const QString &prefix /* = QString() */ ) { >+ QString currentName = prefix; >+ if (currentName.isEmpty()) { >+ switch (type) { >+ case Uml::ot_Association: >+ currentName = i18n("new_association"); >+ break; >+ case Uml::ot_Attribute: >+ currentName = i18n("new_attribute"); >+ break; >+ case Uml::ot_Template: >+ currentName = i18n("new_template"); >+ break; >+ case Uml::ot_Operation: >+ currentName = i18n("new_operation"); >+ break; >+ case Uml::ot_EnumLiteral: >+ currentName = i18n("new_literal"); >+ break; >+ case Uml::ot_EntityAttribute: >+ currentName = i18n("new_field"); >+ break; >+ default: >+ kWarning() << "uniqChildName() called for unknown child type " << type << endl; >+ return "ERROR_in_UMLCanvasObject_uniqChildName"; >+ } > } > > QString name = currentName; >diff -U 3 -H -d -r -N -- old/kdesdk-3.5.6/umbrello/umbrello/umlcanvasobject.h new/umbrello-1.5.61/umbrello/umlcanvasobject.h >--- old/kdesdk-3.5.6/umbrello/umbrello/umlcanvasobject.h 2007-01-15 12:24:47.000000000 +0100 >+++ new/umbrello-1.5.61/umbrello/umlcanvasobject.h 2007-02-04 13:34:17.000000000 +0100 >@@ -172,7 +172,7 @@ > /** > * Find an association. > * >- * @param id The id of the object to find. >+ * @param id The id of the object to find. > * @return Pointer to the object found (NULL if not found.) > */ > virtual UMLObject *findChildObjectById(Uml::IDType id, bool considerAncestors = false); >@@ -182,13 +182,14 @@ > * or attribute appended with a number if the default name is > * taken e.g. new_association, new_association_1 etc. > * >- * @param type The object type for which to make a name. >- * @param seekStereo Set this true if we should look at the object's >- * stereotype instead of its name. >+ * @param type The object type for which to make a name. >+ * @param prefix Optional prefix to use for the name. >+ * If not given then uniqChildName() will choose the prefix >+ * internally based on the object type. > * @return Unique name string for the Object_Type given. > */ > virtual QString uniqChildName(const Uml::Object_Type type, >- bool seekStereo = false); >+ const QString &prefix = QString()); > > virtual void removeAllChildObjects(); > >diff -U 3 -H -d -r -N -- old/kdesdk-3.5.6/umbrello/umbrello/umldoc.cpp new/umbrello-1.5.61/umbrello/umldoc.cpp >--- old/kdesdk-3.5.6/umbrello/umbrello/umldoc.cpp 2007-01-15 12:24:47.000000000 +0100 >+++ new/umbrello-1.5.61/umbrello/umldoc.cpp 2007-02-09 17:39:40.000000000 +0100 >@@ -147,15 +147,10 @@ > if ( pApp->getListView() ) > connect(this, SIGNAL(sigObjectRemoved(UMLObject *)), view, SLOT(slotObjectRemoved(UMLObject *))); > >- UMLView * previousView = pApp->getCurrentView(); > pApp->setCurrentView(view); > if ( ! m_bLoading ) { >- if (previousView == NULL) { >- view -> show(); >- emit sigDiagramChanged(view ->getType()); >- } else { >- view -> hide(); >- } >+ view -> show(); >+ emit sigDiagramChanged(view ->getType()); > } > > Settings::OptionState optionState = Settings::getOptionState(); >@@ -1875,10 +1870,10 @@ > } > > UMLClassifierList UMLDoc::getDatatypes() { >+ UMLObjectList objects = m_datatypeRoot->containedObjects(); > UMLClassifierList datatypeList; > UMLObject *obj; >- for (UMLObjectListIt oit(m_datatypeRoot->containedObjects()); >- (obj = oit.current()) != NULL; ++oit) { >+ for (UMLObjectListIt oit(objects); (obj = oit.current()) != NULL; ++oit) { > if (obj->getBaseType() == ot_Datatype) { > datatypeList.append(static_cast<UMLClassifier*>(obj)); > } >@@ -1889,9 +1884,9 @@ > UMLAssociationList UMLDoc::getAssociations() { > UMLAssociationList associationList; > for (int i = 0; i < Uml::N_MODELTYPES; i++) { >+ UMLAssociationList assocs = m_root[i]->getAssociations(); > UMLAssociation *a; >- for (UMLAssociationListIt ait(m_root[i]->getAssociations()); >- (a = ait.current()) != NULL; ++ait) >+ for (UMLAssociationListIt ait(assocs); (a = ait.current()) != NULL; ++ait) > associationList.append(a); > } > return associationList; >diff -U 3 -H -d -r -N -- old/kdesdk-3.5.6/umbrello/umbrello/umlobject.cpp new/umbrello-1.5.61/umbrello/umlobject.cpp >--- old/kdesdk-3.5.6/umbrello/umbrello/umlobject.cpp 2007-01-15 12:24:47.000000000 +0100 >+++ new/umbrello-1.5.61/umbrello/umlobject.cpp 2007-02-07 21:54:48.000000000 +0100 >@@ -414,10 +414,13 @@ > } > } > if (m_SecondaryFallback.isEmpty()) { >- kError() << "UMLObject::resolveRef(" << m_Name >- << "): cannot find type with id " >- << m_SecondaryId << endl; >- return false; >+ if (m_SecondaryId.isEmpty()) { >+ kError() << "UMLObject::resolveRef(" << m_Name >+ << "): both m_SecondaryId and m_SecondaryFallback are empty" >+ << endl; >+ return false; >+ } >+ m_SecondaryFallback = m_SecondaryId; > } > #ifdef VERBOSE_DEBUGGING > kDebug() << "UMLObject::resolveRef(" << m_Name >@@ -435,7 +438,6 @@ > maybeSignalObjectCreated(); > return true; > } >- //pDoc->setIsOldFile(true); > // Work around Object_Factory::createUMLObject()'s incapability > // of on-the-fly scope creation: > if (m_SecondaryId.contains("::")) { >@@ -458,8 +460,7 @@ > << "failed to create a new type for " << m_SecondaryId << endl; > return false; > } >- kDebug() << "UMLObject::resolveRef: Creating new type for " >- << m_SecondaryId << endl; >+ kDebug() << "UMLObject::resolveRef: Creating new type for " << m_SecondaryId << endl; > // This is very C++ specific - we rely on some '*' or > // '&' to decide it's a ref type. Plus, we don't recognize > // typedefs of ref types. >@@ -594,12 +595,14 @@ > if (!stereo.isEmpty()) { > Uml::IDType stereoID = STR2ID(stereo); > m_pStereotype = umldoc->findStereotypeById(stereoID); >- if (m_pStereotype) >+ if (m_pStereotype) { > m_pStereotype->incrRefCount(); >- else >- kError() << "UMLObject::loadFromXMI(" << m_Name << "): " >+ } else { >+ kDebug() << "UMLObject::loadFromXMI(" << m_Name << "): " > << "UMLStereotype " << ID2STR(stereoID) >- << " not found" << endl; >+ << " not found, creating now." << endl; >+ setStereotype(stereo); >+ } > } > > if( element.hasAttribute("abstract") ) { // for bkwd compat. >diff -U 3 -H -d -r -N -- old/kdesdk-3.5.6/umbrello/umbrello/umlview.cpp new/umbrello-1.5.61/umbrello/umlview.cpp >--- old/kdesdk-3.5.6/umbrello/umbrello/umlview.cpp 2007-01-15 12:24:47.000000000 +0100 >+++ new/umbrello-1.5.61/umbrello/umlview.cpp 2007-02-03 23:25:34.000000000 +0100 >@@ -452,6 +452,14 @@ > newWidget->setFont( getFont() ); > newWidget->slotColorChanged( getID() ); > newWidget->slotLineWidthChanged( getID() ); >+ newWidget->updateComponentSize(); >+ if (m_Type == Uml::dt_Sequence) { >+ // Set proper position on the sequence line widget which is >+ // attached to the object widget. >+ ObjectWidget *ow = dynamic_cast<ObjectWidget*>(newWidget); >+ if (ow) >+ ow->moveEvent(NULL); >+ } > m_bCreateObject = false; > m_WidgetList.append(newWidget); > switch (o->getBaseType()) { >@@ -634,11 +642,19 @@ > } > > ObjectWidget * UMLView::onWidgetLine( const QPoint &point ) { >- SeqLineWidget * pLine = 0; >- for( pLine = m_SeqLineList.first(); pLine; pLine = m_SeqLineList.next() ) { >- if( pLine -> onWidget( point ) ) { >- return pLine -> getObjectWidget(); >+ UMLWidget *obj; >+ for (UMLWidgetListIt it(m_WidgetList); (obj = it.current()) != NULL; ++it) { >+ ObjectWidget *ow = dynamic_cast<ObjectWidget*>(obj); >+ if (ow == NULL) >+ continue; >+ SeqLineWidget *pLine = ow->getSeqLine(); >+ if (pLine == NULL) { >+ kError() << "UMLView::onWidgetLine: SeqLineWidget of " << ow->getName() >+ << " (id=" << ID2STR(ow->getLocalID()) << ") is NULL" << endl; >+ continue; > } >+ if (pLine->onWidget(point)) >+ return ow; > } > return 0; > } >@@ -874,13 +890,15 @@ > endy = objEndY; > } > //if seq. diagram, make sure print all of the lines >- if(getType() == dt_Sequence ) { >- SeqLineWidget * pLine = 0; >- for( pLine = m_SeqLineList.first(); pLine; pLine = m_SeqLineList.next() ) { >- int y = pLine -> getObjectWidget() -> getEndLineY(); >- endy = endy < y?y:endy; >+ if (getType() == dt_Sequence ) { >+ for (UMLWidgetListIt it(m_WidgetList); (obj = it.current()) != NULL; ++it) { >+ ObjectWidget *ow = dynamic_cast<ObjectWidget*>(obj); >+ if (ow == NULL) >+ continue; >+ int y = ow->getEndLineY(); >+ if (endy < y) >+ endy = y; > } >- > } > > /* now we need another look at the associations, because they are no >diff -U 3 -H -d -r -N -- old/kdesdk-3.5.6/umbrello/umbrello/umlview.h new/umbrello-1.5.61/umbrello/umlview.h >--- old/kdesdk-3.5.6/umbrello/umbrello/umlview.h 2007-01-15 12:24:47.000000000 +0100 >+++ new/umbrello-1.5.61/umbrello/umlview.h 2007-02-03 23:25:34.000000000 +0100 >@@ -5,7 +5,7 @@ > * the Free Software Foundation; either version 2 of the License, or * > * (at your option) any later version. * > * * >- * copyright (C) 2002-2006 * >+ * copyright (C) 2002-2007 * > * Umbrello UML Modeller Authors <uml-devel@uml.sf.net> * > ***************************************************************************/ > >@@ -34,7 +34,6 @@ > class IDChangeLog; > class ListPopupMenu; > class FloatingTextWidget; >-class SeqLineWidget; > class ObjectWidget; > class UMLFolder; > class UMLApp; >@@ -768,20 +767,6 @@ > bool checkUniqueSelection(); > > /** >- * Adds a sequence line to the list. >- */ >- void addSeqLine( SeqLineWidget * pLine ) { >- m_SeqLineList.append( pLine ); >- } >- >- /** >- * Removes a sequence line from the list. >- */ >- void removeSeqLine(SeqLineWidget* pLine) { >- m_SeqLineList.remove(pLine); >- } >- >- /** > * Asks for confirmation and clears everything on the diagram. > * Called from menus. > */ >@@ -1165,11 +1150,6 @@ > QPoint m_PastePoint; > > /** >- * Holds a list of all the sequence lines on a sequence diagram. >- */ >- QPtrList<SeqLineWidget> m_SeqLineList; >- >- /** > * Pointer to the UMLDoc > */ > UMLDoc* m_pDoc; >diff -U 3 -H -d -r -N -- old/kdesdk-3.5.6/umbrello/umbrello/x-umbrello.desktop new/umbrello-1.5.61/umbrello/x-umbrello.desktop >--- old/kdesdk-3.5.6/umbrello/umbrello/x-umbrello.desktop 2007-01-15 12:24:47.000000000 +0100 >+++ new/umbrello-1.5.61/umbrello/x-umbrello.desktop 2007-01-30 08:05:38.000000000 +0100 >@@ -25,7 +25,7 @@ > Comment[hu]=Umbrello UML-fájl > Comment[is]=Umbrello UML Modeller Skrá > Comment[it]=File del modellatore UML Umbrello >-Comment[ja]=Umbrello UML ã¢ãã©ãã¡ã¤ã« >+Comment[ja]=Umbrello UML ã¢ãã©ã¼ãã¡ã¤ã« > Comment[ms]=Fail Pemodel Umbrello UML > Comment[nb]=Umbrello UML-modelleringsfil > Comment[nds]=UML-Modellmaker-Datei vun Umbrello >diff -U 3 -H -d -r -N -- old/kdesdk-3.5.6/umbrello/uml.lsm new/umbrello-1.5.61/uml.lsm >--- old/kdesdk-3.5.6/umbrello/uml.lsm 2006-07-24 08:03:18.000000000 +0200 >+++ new/umbrello-1.5.61/uml.lsm 2007-01-16 23:54:20.000000000 +0100 >@@ -1,6 +1,6 @@ > Begin3 > Title: Umbrello UML Modeller >-Version: 1.5.4 >+Version: 1.5.6 > Entered-date: > Description: A UML diagram Modeller > Keywords: uml diagram modeller
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 164174
: 118329