rev 6037 - in trunk/packages/kdesdk/debian: . patches
Sune Vuorela
pusling-guest at alioth.debian.org
Wed May 2 21:44:56 UTC 2007
Author: pusling-guest
Date: 2007-05-02 21:44:56 +0000 (Wed, 02 May 2007)
New Revision: 6037
Added:
trunk/packages/kdesdk/debian/patches/07_umbrello-1.5.61.diff
Modified:
trunk/packages/kdesdk/debian/changelog
Log:
update umbrello to 1.5.61
Modified: trunk/packages/kdesdk/debian/changelog
===================================================================
--- trunk/packages/kdesdk/debian/changelog 2007-05-02 21:11:18 UTC (rev 6036)
+++ trunk/packages/kdesdk/debian/changelog 2007-05-02 21:44:56 UTC (rev 6037)
@@ -1,13 +1,16 @@
kdesdk (4:3.5.6-3) unstable; urgency=low
* Unreleased
-
+
+++ Changes by Sune Vuorela
* Add gettext to kbabel recommends (related to upstream bug
http://bugs.kde.org/show_bug.cgi?id=144789)
+ * Add a patch to bring in umbrello 1.5.61. (Closes: #421918)
+ Thanks to Eric Valette for digging out the patch - and for his friendly
+ attitude.
- -- Debian Qt/KDE Maintainers <debian-qt-kde at lists.debian.org> Wed, 02 May 2007 12:56:00 +0200
+ -- Debian Qt/KDE Maintainers <debian-qt-kde at lists.debian.org> Wed, 02 May 2007 23:43:10 +0200
kdesdk (4:3.5.6-2) unstable; urgency=low
Added: trunk/packages/kdesdk/debian/patches/07_umbrello-1.5.61.diff
===================================================================
--- trunk/packages/kdesdk/debian/patches/07_umbrello-1.5.61.diff 2007-05-02 21:11:18 UTC (rev 6036)
+++ trunk/packages/kdesdk/debian/patches/07_umbrello-1.5.61.diff 2007-05-02 21:44:56 UTC (rev 6037)
@@ -0,0 +1,928 @@
+diff -u -r -N kdesdk/umbrello/umbrello/clipboard/umlclipboard.cpp kdesdk/umbrello/umbrello/clipboard/umlclipboard.cpp
+--- kdesdk/umbrello/umbrello/clipboard/umlclipboard.cpp 2006-11-18 22:20:36.000000000 +0100
++++ kdesdk/umbrello/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 -r -N kdesdk/umbrello/umbrello/codeimport/adaimport.cpp kdesdk/umbrello/umbrello/codeimport/adaimport.cpp
+--- kdesdk/umbrello/umbrello/codeimport/adaimport.cpp 2007-01-14 20:31:51.000000000 +0100
++++ kdesdk/umbrello/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++;
+- }
+- if (m_source[m_srcIndex] == "limited") {
+- m_srcIndex++; // we can't (yet?) represent that
++ next = advance();
+ }
+- if (m_source[m_srcIndex] == "private" ||
+- m_source[m_srcIndex] == "record" ||
+- (m_source[m_srcIndex] == "null" &&
++ if (next == "limited" ||
++ next == "task" ||
++ next == "protected" ||
++ next == "synchronized") {
++ next = advance(); // we can't (yet?) represent that
++ }
++ 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 -r -N kdesdk/umbrello/umbrello/codeimport/import_utils.cpp kdesdk/umbrello/umbrello/codeimport/import_utils.cpp
+--- kdesdk/umbrello/umbrello/codeimport/import_utils.cpp 2007-01-14 15:05:00.000000000 +0100
++++ kdesdk/umbrello/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 -r -N kdesdk/umbrello/umbrello/codeimport/import_utils.h kdesdk/umbrello/umbrello/codeimport/import_utils.h
+--- kdesdk/umbrello/umbrello/codeimport/import_utils.h 2006-12-17 23:56:13.000000000 +0100
++++ kdesdk/umbrello/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 -r -N kdesdk/umbrello/umbrello/dialogs/activitydialog.h kdesdk/umbrello/umbrello/dialogs/activitydialog.h
+--- kdesdk/umbrello/umbrello/dialogs/activitydialog.h 2006-11-13 06:47:10.000000000 +0100
++++ kdesdk/umbrello/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 -r -N kdesdk/umbrello/umbrello/dialogs/pkgcontentspage.cpp kdesdk/umbrello/umbrello/dialogs/pkgcontentspage.cpp
+--- kdesdk/umbrello/umbrello/dialogs/pkgcontentspage.cpp 2006-11-13 06:47:10.000000000 +0100
++++ kdesdk/umbrello/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 -r -N kdesdk/umbrello/umbrello/dialogs/settingsdlg.h kdesdk/umbrello/umbrello/dialogs/settingsdlg.h
+--- kdesdk/umbrello/umbrello/dialogs/settingsdlg.h 2006-11-13 06:47:10.000000000 +0100
++++ kdesdk/umbrello/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 -r -N kdesdk/umbrello/umbrello/dialogs/statedialog.h kdesdk/umbrello/umbrello/dialogs/statedialog.h
+--- kdesdk/umbrello/umbrello/dialogs/statedialog.h 2006-11-13 06:47:10.000000000 +0100
++++ kdesdk/umbrello/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 -r -N kdesdk/umbrello/umbrello/objectwidget.cpp kdesdk/umbrello/umbrello/objectwidget.cpp
+--- kdesdk/umbrello/umbrello/objectwidget.cpp 2006-11-18 22:20:36.000000000 +0100
++++ kdesdk/umbrello/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 at 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 -r -N kdesdk/umbrello/umbrello/objectwidget.h kdesdk/umbrello/umbrello/objectwidget.h
+--- kdesdk/umbrello/umbrello/objectwidget.h 2006-11-13 06:47:10.000000000 +0100
++++ kdesdk/umbrello/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 at 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 -r -N kdesdk/umbrello/umbrello/seqlinewidget.cpp kdesdk/umbrello/umbrello/seqlinewidget.cpp
+--- kdesdk/umbrello/umbrello/seqlinewidget.cpp 2006-11-13 06:47:10.000000000 +0100
++++ kdesdk/umbrello/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 at 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_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.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_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 -r -N kdesdk/umbrello/umbrello/seqlinewidget.h kdesdk/umbrello/umbrello/seqlinewidget.h
+--- kdesdk/umbrello/umbrello/seqlinewidget.h 2006-11-13 06:47:10.000000000 +0100
++++ kdesdk/umbrello/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 at 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 -r -N kdesdk/umbrello/umbrello/toolbarstateassociation.cpp kdesdk/umbrello/umbrello/toolbarstateassociation.cpp
+--- kdesdk/umbrello/umbrello/toolbarstateassociation.cpp 2006-12-31 18:18:57.000000000 +0100
++++ kdesdk/umbrello/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 -r -N kdesdk/umbrello/umbrello/umbrello.desktop kdesdk/umbrello/umbrello/umbrello.desktop
+--- kdesdk/umbrello/umbrello/umbrello.desktop 2007-01-18 07:58:35.000000000 +0100
++++ kdesdk/umbrello/umbrello/umbrello.desktop 2007-01-30 08:05:38.000000000 +0100
+@@ -28,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 -r -N kdesdk/umbrello/umbrello/umlcanvasobject.cpp kdesdk/umbrello/umbrello/umlcanvasobject.cpp
+--- kdesdk/umbrello/umbrello/umlcanvasobject.cpp 2006-12-31 15:29:14.000000000 +0100
++++ kdesdk/umbrello/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 -r -N kdesdk/umbrello/umbrello/umlcanvasobject.h kdesdk/umbrello/umbrello/umlcanvasobject.h
+--- kdesdk/umbrello/umbrello/umlcanvasobject.h 2006-11-05 15:12:14.000000000 +0100
++++ kdesdk/umbrello/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 -r -N kdesdk/umbrello/umbrello/umldoc.cpp kdesdk/umbrello/umbrello/umldoc.cpp
+--- kdesdk/umbrello/umbrello/umldoc.cpp 2007-01-13 22:07:41.000000000 +0100
++++ kdesdk/umbrello/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 -r -N kdesdk/umbrello/umbrello/umlobject.cpp kdesdk/umbrello/umbrello/umlobject.cpp
+--- kdesdk/umbrello/umbrello/umlobject.cpp 2006-12-22 23:08:32.000000000 +0100
++++ kdesdk/umbrello/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 -r -N kdesdk/umbrello/umbrello/umlview.cpp kdesdk/umbrello/umbrello/umlview.cpp
+--- kdesdk/umbrello/umbrello/umlview.cpp 2007-01-13 22:07:41.000000000 +0100
++++ kdesdk/umbrello/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 -r -N kdesdk/umbrello/umbrello/umlview.h kdesdk/umbrello/umbrello/umlview.h
+--- kdesdk/umbrello/umbrello/umlview.h 2006-12-03 18:53:01.000000000 +0100
++++ kdesdk/umbrello/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 at 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 -r -N kdesdk/umbrello/VERSION kdesdk/umbrello/VERSION
+--- kdesdk/umbrello/VERSION 2006-11-19 15:56:07.000000000 +0100
++++ kdesdk/umbrello/VERSION 2007-01-26 18:25:37.000000000 +0100
+@@ -1 +1 @@
+-1.5.6
++1.5.61
More information about the pkg-kde-commits
mailing list