forked from qt-creator/qt-creator
ModelEditor: Improve reverse engineering of template classes
Change-Id: Ic62c8b6f7f08203c2b4f52d1fcb381d8ec61c834 Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
This commit is contained in:
@@ -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, ¨Namespace, &className, &templateParameters)) {
|
||||
klass->setName(className);
|
||||
klass->setUmlNamespace(umlNamespace);
|
||||
klass->setTemplateParameters(templateParameters);
|
||||
} else {
|
||||
klass->setName(fullClassName);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace ModelEditor
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user