ModelEditor: Improve reverse engineering of template classes

Change-Id: Ic62c8b6f7f08203c2b4f52d1fcb381d8ec61c834
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
This commit is contained in:
Jochen Becher
2016-01-03 19:05:13 +01:00
parent 57ceb15692
commit 6fb131de98
2 changed files with 20 additions and 10 deletions

View File

@@ -296,14 +296,7 @@ void PxNodeController::onMenuActionTriggered(PxNodeController::MenuAction *actio
// TODO handle template classes
auto klass = new qmt::MClass();
klass->setFlags(qmt::MElement::ReverseEngineered);
QString qualifiedName = action->className;
int i = qualifiedName.lastIndexOf(QStringLiteral("::"));
if (i >= 0) {
klass->setUmlNamespace(qualifiedName.left(i));
klass->setName(qualifiedName.mid(i + 2));
} else {
klass->setName(qualifiedName);
}
parseFullClassName(klass, action->className);
newObject = klass;
break;
}
@@ -385,5 +378,20 @@ void PxNodeController::onMenuActionTriggered(PxNodeController::MenuAction *actio
}
}
void PxNodeController::parseFullClassName(qmt::MClass *klass, const QString &fullClassName)
{
QString umlNamespace;
QString className;
QStringList templateParameters;
if (qmt::NameController::parseClassName(fullClassName, &umlNamespace, &className, &templateParameters)) {
klass->setName(className);
klass->setUmlNamespace(umlNamespace);
klass->setTemplateParameters(templateParameters);
} else {
klass->setName(fullClassName);
}
}
} // namespace Internal
} // namespace ModelEditor

View File

@@ -36,6 +36,7 @@
namespace ProjectExplorer { class Node; }
namespace qmt {
class MClass;
class MDiagram;
class DElement;
class DiagramSceneController;
@@ -63,12 +64,13 @@ public:
bool hasDiagramForExplorerNode(const ProjectExplorer::Node *node);
qmt::MDiagram *findDiagramForExplorerNode(const ProjectExplorer::Node *node);
private slots:
private:
void onMenuActionTriggered(MenuAction *action, const ProjectExplorer::Node *node,
qmt::DElement *topMostElementAtPos, const QPointF &pos,
qmt::MDiagram *diagram);
private:
void parseFullClassName(qmt::MClass *klass, const QString &fullClassName);
PxNodeControllerPrivate *d;
};