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
|
// TODO handle template classes
|
||||||
auto klass = new qmt::MClass();
|
auto klass = new qmt::MClass();
|
||||||
klass->setFlags(qmt::MElement::ReverseEngineered);
|
klass->setFlags(qmt::MElement::ReverseEngineered);
|
||||||
QString qualifiedName = action->className;
|
parseFullClassName(klass, 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);
|
|
||||||
}
|
|
||||||
newObject = klass;
|
newObject = klass;
|
||||||
break;
|
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 Internal
|
||||||
} // namespace ModelEditor
|
} // namespace ModelEditor
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
namespace ProjectExplorer { class Node; }
|
namespace ProjectExplorer { class Node; }
|
||||||
|
|
||||||
namespace qmt {
|
namespace qmt {
|
||||||
|
class MClass;
|
||||||
class MDiagram;
|
class MDiagram;
|
||||||
class DElement;
|
class DElement;
|
||||||
class DiagramSceneController;
|
class DiagramSceneController;
|
||||||
@@ -63,12 +64,13 @@ public:
|
|||||||
bool hasDiagramForExplorerNode(const ProjectExplorer::Node *node);
|
bool hasDiagramForExplorerNode(const ProjectExplorer::Node *node);
|
||||||
qmt::MDiagram *findDiagramForExplorerNode(const ProjectExplorer::Node *node);
|
qmt::MDiagram *findDiagramForExplorerNode(const ProjectExplorer::Node *node);
|
||||||
|
|
||||||
private slots:
|
private:
|
||||||
void onMenuActionTriggered(MenuAction *action, const ProjectExplorer::Node *node,
|
void onMenuActionTriggered(MenuAction *action, const ProjectExplorer::Node *node,
|
||||||
qmt::DElement *topMostElementAtPos, const QPointF &pos,
|
qmt::DElement *topMostElementAtPos, const QPointF &pos,
|
||||||
qmt::MDiagram *diagram);
|
qmt::MDiagram *diagram);
|
||||||
|
|
||||||
private:
|
void parseFullClassName(qmt::MClass *klass, const QString &fullClassName);
|
||||||
|
|
||||||
PxNodeControllerPrivate *d;
|
PxNodeControllerPrivate *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user