[Uml-devel] [Bug 93298] code import sometimes prompts for a new datatype name
Oliver Kellogg
okellogg at users.sourceforge.net
Mon Jan 31 10:42:46 UTC 2005
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
http://bugs.kde.org/show_bug.cgi?id=93298
------- Additional Comments From okellogg users sourceforge net 2005-01-31 19:38 -------
CVS commit by okellogg:
Put scope qualified datatypes in the global scope.
This removes another occasion of gratuitous prompting for a type name.
CCBUG:93298
M +3 -6 classimport.cpp 1.67
M +15 -1 model_utils.cpp 1.19
--- kdesdk/umbrello/umbrello/classimport.cpp #1.66:1.67
@ -116,5 +116,6 @ UMLObject *ClassImport::createUMLObject(
parentPkg = static_cast<UMLPackage*>(o);
}
- name.remove(QRegExp("^.*::")); // may also zap "const "
+ // All scope qualified datatypes live in the global scope.
+ m_putAtGlobalScope = true;
}
Uml::Object_Type t = type;
@ -125,13 +126,9 @ UMLObject *ClassImport::createUMLObject(
if (isConst || isPointer || isRef) {
// Create the full given type (including adornments.)
- if (isPointer || isRef) {
- type = Uml::ot_Datatype;
- } else if (type == Uml::ot_UMLObject)
- type = Uml::ot_Class;
if (isConst)
name.prepend("const ");
if (m_putAtGlobalScope)
parentPkg = NULL;
- o = m_umldoc->createUMLObject(type, name, parentPkg);
+ o = m_umldoc->createUMLObject(Uml::ot_Datatype, name);
UMLDatatype *dt = static_cast<UMLDatatype*>(o);
UMLClassifier *c = dynamic_cast<UMLClassifier*>(origType);
--- kdesdk/umbrello/umbrello/model_utils.cpp #1.18:1.19
@ -98,7 +98,21 @ UMLObject* findUMLObject(UMLObjectList i
Uml::Object_Type type /* = ot_UMLObject */,
UMLObject *currentObj /* = NULL */) {
- QStringList components = QStringList::split("::", name);
+ QStringList components;
+ if (name.contains("::"))
+ components = QStringList::split("::", name);
+ else if (name.contains("."))
+ components = QStringList::split(".", name);
QString nameWithoutFirstPrefix;
if (components.size() > 1) {
+ if (name.contains(QRegExp("[^\\w:\\.]"))) {
+ // It's obviously a datatype.
+ // Scope qualified datatypes live in the global scope.
+ for (UMLObjectListIt oit(inList); oit.current(); ++oit) {
+ UMLObject *obj = oit.current();
+ if (obj->getName() == name)
+ return obj;
+ }
+ return NULL;
+ }
name = components.front();
components.pop_front();
More information about the umbrello-devel
mailing list