[Uml-devel] branches/KDE/3.5/kdesdk/umbrello

Oliver Kellogg okellogg at users.sourceforge.net
Thu Aug 3 19:12:05 UTC 2006


SVN commit 569409 by okellogg:

writeClass(): Patch from Egbert Voigt adds missing imports for superclasses.
BUG:131790


 M  +7 -0      ChangeLog  
 M  +22 -7     umbrello/codegenerators/pythonwriter.cpp  


--- branches/KDE/3.5/kdesdk/umbrello/ChangeLog #569408:569409
@@ -1,3 +1,10 @@
+Version 1.5.5
+
+* Bugs/wishes from http://bugs.kde.org:
+* Java import - importing interfaces - absent visibility treated as package
+  instead of public (131327)
+* Python code generation not independent of diagram view (131790)
+
 Version 1.5.4
 
 * Bugs/wishes from http://bugs.kde.org:
--- branches/KDE/3.5/kdesdk/umbrello/umbrello/codegenerators/pythonwriter.cpp #569408:569409
@@ -87,7 +87,23 @@
         h<<str<<m_endl;
     }
 
-
+    // generate import statement for superclasses and take packages into account 
+    str = cleanName(c->getName()); 
+    QString pkg = cleanName(c->getPackage());
+    if (!pkg.isEmpty())
+        str.prepend(pkg + "."); 
+    QStringList includesList  = QStringList(str); //save imported classes 
+    int i = superclasses.count(); 
+    for (UMLClassifier *classifier = superclasses.first(); 
+            classifier && i; classifier = superclasses.next(), i--) { 
+        str = cleanName(classifier->getName()); 
+        pkg = cleanName(classifier->getPackage());
+        if (!pkg.isEmpty()) 
+            str.prepend(pkg + "."); 
+        includesList.append(str); 
+        h << "from " + str + " import *" << m_endl; 
+    } 
+ 
     //write includes and take namespaces into account
     UMLClassifierList includes;
     findObjectsRelated(c,includes);
@@ -99,16 +115,15 @@
             first = headerName.at(0);
             first = first.upper();
             headerName = headerName.replace(0, 1, first);
-            if (headerName.find('/') > 0)
-                h<<"from "<<headerName.replace(QChar('/'),QChar('.'))<<" import *"<<m_endl;
-            else
-                h<<"from "<<headerName<<" import *"<<m_endl;
+            str = headerName.replace(QChar('/'),QChar('.'));
+            if (includesList.findIndex(str) < 0)  // not yet imported
+                h << "from " << str << " import *" << m_endl;
         }
     }
     h<<m_endl;
 
-    h<<"class "<<classname<<(superclasses.count() > 0 ? " (":"");
-    int i = superclasses.count();
+    h << "class " << classname << (superclasses.count() > 0 ? " (" : "(object)");
+    i = superclasses.count();
 
     for (UMLClassifier *obj = superclasses.first();
             obj && i; obj = superclasses.next(), i--) {




More information about the umbrello-devel mailing list