Skip to content

Commit 23fa53a

Browse files
committed
Only get the extends modifiers when they are needed.
1 parent 62fb7c8 commit 23fa53a

File tree

5 files changed

+73
-69
lines changed

5 files changed

+73
-69
lines changed

OMEdit/OMEditGUI/Component/Component.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ ComponentInfo::ComponentInfo(QObject *pParent)
7373
mArrayIndex = "";
7474
mIsArray = false;
7575
mModifiersMap.clear();
76+
mParameterValue = "";
7677
}
7778

7879
/*!
@@ -111,6 +112,7 @@ void ComponentInfo::updateComponentInfo(const ComponentInfo *pComponentInfo)
111112
mIsArray = pComponentInfo->isArray();
112113
mModifiersMap.clear();
113114
mModifiersMap = pComponentInfo->getModifiersMap();
115+
mParameterValue = pComponentInfo->getParameterValue();
114116
}
115117

116118
/*!

OMEdit/OMEditGUI/Modeling/Commands.cpp

Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -570,27 +570,28 @@ void UpdateComponentParametersCommand::redo()
570570
{
571571
OMCProxy *pOMCProxy = mpComponent->getGraphicsView()->getModelWidget()->getModelWidgetContainer()->getMainWindow()->getOMCProxy();
572572
QString className = mpComponent->getGraphicsView()->getModelWidget()->getLibraryTreeItem()->getNameStructure();
573-
// remove all the modifiers of a component.
574-
pOMCProxy->removeComponentModifiers(className, mpComponent->getName());
575-
// apply the new Component modifiers if any
576-
QMap<QString, QString>::iterator componentModifier;
577-
for (componentModifier = mNewComponentModifiersMap.begin(); componentModifier != mNewComponentModifiersMap.end(); ++componentModifier) {
578-
QString modifierValue = componentModifier.value();
579-
QString modifierKey = QString(mpComponent->getName()).append(".").append(componentModifier.key());
580-
pOMCProxy->setComponentModifierValue(className, modifierKey, modifierValue);
581-
}
582-
// apply the new Component extends modifiers if any
583-
if (mpComponent->getReferenceComponent()) {
573+
if (!mpComponent->getReferenceComponent()) {
574+
// remove all the modifiers of a component.
575+
pOMCProxy->removeComponentModifiers(className, mpComponent->getName());
576+
// apply the new Component modifiers if any
577+
QMap<QString, QString>::iterator componentModifier;
578+
for (componentModifier = mNewComponentModifiersMap.begin(); componentModifier != mNewComponentModifiersMap.end(); ++componentModifier) {
579+
QString modifierValue = componentModifier.value();
580+
QString modifierKey = QString(mpComponent->getName()).append(".").append(componentModifier.key());
581+
pOMCProxy->setComponentModifierValue(className, modifierKey, modifierValue);
582+
}
583+
mpComponent->getComponentInfo()->fetchModifiers(pOMCProxy, className);
584+
} else {
584585
QString inheritedClassName;
585586
inheritedClassName = mpComponent->getReferenceComponent()->getGraphicsView()->getModelWidget()->getLibraryTreeItem()->getNameStructure();
587+
// apply the new Component extends modifiers if any
586588
QMap<QString, QString>::iterator componentExtendsModifier;
587589
for (componentExtendsModifier = mNewComponentExtendsModifiersMap.begin(); componentExtendsModifier != mNewComponentExtendsModifiersMap.end(); ++componentExtendsModifier) {
588590
QString modifierValue = componentExtendsModifier.value();
589591
pOMCProxy->setExtendsModifierValue(className, inheritedClassName, componentExtendsModifier.key(), modifierValue);
590592
}
591-
mpComponent->getGraphicsView()->getModelWidget()->updateExtendsModifiersMap(inheritedClassName);
593+
mpComponent->getGraphicsView()->getModelWidget()->fetchExtendsModifiers(inheritedClassName);
592594
}
593-
mpComponent->getComponentInfo()->fetchModifiers(pOMCProxy, className);
594595
mpComponent->componentParameterHasChanged();
595596
}
596597

@@ -602,17 +603,20 @@ void UpdateComponentParametersCommand::undo()
602603
{
603604
OMCProxy *pOMCProxy = mpComponent->getGraphicsView()->getModelWidget()->getModelWidgetContainer()->getMainWindow()->getOMCProxy();
604605
QString className = mpComponent->getGraphicsView()->getModelWidget()->getLibraryTreeItem()->getNameStructure();
605-
// remove all the modifiers of a component.
606-
pOMCProxy->removeComponentModifiers(className, mpComponent->getName());
607-
// apply the old Component modifiers if any
608-
QMap<QString, QString>::iterator componentModifier;
609-
for (componentModifier = mOldComponentModifiersMap.begin(); componentModifier != mOldComponentModifiersMap.end(); ++componentModifier) {
610-
QString modifierValue = componentModifier.value();
611-
QString modifierKey = QString(mpComponent->getName()).append(".").append(componentModifier.key());
612-
pOMCProxy->setComponentModifierValue(className, modifierKey, modifierValue);
613-
}
614-
if (mpComponent->getReferenceComponent()) {
615-
QString inheritedClassName = mpComponent->getReferenceComponent()->getGraphicsView()->getModelWidget()->getLibraryTreeItem()->getNameStructure();
606+
if (!mpComponent->getReferenceComponent()) {
607+
// remove all the modifiers of a component.
608+
pOMCProxy->removeComponentModifiers(className, mpComponent->getName());
609+
// apply the old Component modifiers if any
610+
QMap<QString, QString>::iterator componentModifier;
611+
for (componentModifier = mOldComponentModifiersMap.begin(); componentModifier != mOldComponentModifiersMap.end(); ++componentModifier) {
612+
QString modifierValue = componentModifier.value();
613+
QString modifierKey = QString(mpComponent->getName()).append(".").append(componentModifier.key());
614+
pOMCProxy->setComponentModifierValue(className, modifierKey, modifierValue);
615+
}
616+
mpComponent->getComponentInfo()->fetchModifiers(pOMCProxy, className);
617+
} else {
618+
QString inheritedClassName;
619+
inheritedClassName = mpComponent->getReferenceComponent()->getGraphicsView()->getModelWidget()->getLibraryTreeItem()->getNameStructure();
616620
// remove all the extends modifiers.
617621
pOMCProxy->removeExtendsModifiers(className, inheritedClassName);
618622
// apply the new Component extends modifiers if any
@@ -621,9 +625,8 @@ void UpdateComponentParametersCommand::undo()
621625
QString modifierValue = componentExtendsModifier.value();
622626
pOMCProxy->setExtendsModifierValue(className, inheritedClassName, componentExtendsModifier.key(), modifierValue);
623627
}
624-
mpComponent->getGraphicsView()->getModelWidget()->updateExtendsModifiersMap(inheritedClassName);
628+
mpComponent->getGraphicsView()->getModelWidget()->fetchExtendsModifiers(inheritedClassName);
625629
}
626-
mpComponent->getComponentInfo()->fetchModifiers(pOMCProxy, className);
627630
mpComponent->componentParameterHasChanged();
628631
}
629632

OMEdit/OMEditGUI/Modeling/ModelWidgetContainer.cpp

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2210,7 +2210,7 @@ void WelcomePageWidget::openLatestNewsItem(QListWidgetItem *pItem)
22102210

22112211
ModelWidget::ModelWidget(LibraryTreeItem* pLibraryTreeItem, ModelWidgetContainer *pModelWidgetContainer, QString text)
22122212
: QWidget(pModelWidgetContainer), mpModelWidgetContainer(pModelWidgetContainer), mpLibraryTreeItem(pLibraryTreeItem),
2213-
mDiagramViewLoaded(false), mConnectionsLoaded(false), mCreateModelWidgetComponents(false)
2213+
mDiagramViewLoaded(false), mConnectionsLoaded(false), mCreateModelWidgetComponents(false), mExtendsModifiersLoaded(false)
22142214
{
22152215
mExtendsModifiersMap.clear();
22162216
// create widgets based on library type
@@ -2267,23 +2267,30 @@ ModelWidget::ModelWidget(LibraryTreeItem* pLibraryTreeItem, ModelWidgetContainer
22672267
*/
22682268
QMap<QString, QString> ModelWidget::getExtendsModifiersMap(QString extendsClass)
22692269
{
2270-
QMap<QString, QMap<QString, QString> >::iterator extendsmodifiersIterator;
2271-
for (extendsmodifiersIterator = mExtendsModifiersMap.begin(); extendsmodifiersIterator != mExtendsModifiersMap.end(); ++extendsmodifiersIterator) {
2272-
if (extendsmodifiersIterator.key().compare(extendsClass) == 0) {
2273-
return extendsmodifiersIterator.value();
2270+
if (!mExtendsModifiersLoaded) {
2271+
foreach (LibraryTreeItem *pLibraryTreeItem, mInheritedClassesList) {
2272+
fetchExtendsModifiers(pLibraryTreeItem->getNameStructure());
22742273
}
2274+
mExtendsModifiersLoaded = true;
22752275
}
2276-
return QMap<QString, QString>();
2276+
return mExtendsModifiersMap.value(extendsClass);
22772277
}
22782278

22792279
/*!
2280-
* \brief ModelWidget::updateExtendsModifiersMap
2281-
* Updates the extends modifier map for extends class.
2280+
* \brief ModelWidget::fetchExtendsModifiers
2281+
* Gets the extends modifiers and their values.
22822282
* \param extendsClass
22832283
*/
2284-
void ModelWidget::updateExtendsModifiersMap(QString extendsClass)
2284+
void ModelWidget::fetchExtendsModifiers(QString extendsClass)
22852285
{
2286-
getModelExtendsModifiers(extendsClass);
2286+
OMCProxy *pOMCProxy = mpModelWidgetContainer->getMainWindow()->getOMCProxy();
2287+
QStringList extendsModifiersList = pOMCProxy->getExtendsModifierNames(mpLibraryTreeItem->getNameStructure(), extendsClass);
2288+
QMap<QString, QString> extendsModifiersMap;
2289+
foreach (QString extendsModifier, extendsModifiersList) {
2290+
QString extendsModifierValue = pOMCProxy->getExtendsModifierValue(mpLibraryTreeItem->getNameStructure(), extendsClass, extendsModifier);
2291+
extendsModifiersMap.insert(extendsModifier, extendsModifierValue);
2292+
}
2293+
mExtendsModifiersMap.insert(extendsClass, extendsModifiersMap);
22872294
}
22882295

22892296
void ModelWidget::reDrawModelWidget()
@@ -2856,7 +2863,6 @@ void ModelWidget::getModelInheritedClasses()
28562863
* Also check for cyclic loops.
28572864
*/
28582865
if (!(pMainWindow->getOMCProxy()->isBuiltinType(inheritedClass) || inheritedClass.compare(mpLibraryTreeItem->getNameStructure()) == 0)) {
2859-
getModelExtendsModifiers(inheritedClass);
28602866
LibraryTreeItem *pInheritedLibraryTreeItem = pLibraryTreeModel->findLibraryTreeItem(inheritedClass);
28612867
if (!pInheritedLibraryTreeItem) {
28622868
pInheritedLibraryTreeItem = pLibraryTreeModel->createNonExistingLibraryTreeItem(inheritedClass);
@@ -2870,23 +2876,6 @@ void ModelWidget::getModelInheritedClasses()
28702876
}
28712877
}
28722878

2873-
/*!
2874-
* \brief ModelWidget::getModelExtendsModifiers
2875-
* Gets the extends modifiers and their values.
2876-
* \param extendsClass
2877-
*/
2878-
void ModelWidget::getModelExtendsModifiers(QString extendsClass)
2879-
{
2880-
OMCProxy *pOMCProxy = mpModelWidgetContainer->getMainWindow()->getOMCProxy();
2881-
QStringList extendsModifiersList = pOMCProxy->getExtendsModifierNames(mpLibraryTreeItem->getNameStructure(), extendsClass);
2882-
QMap<QString, QString> extendsModifiersMap;
2883-
foreach (QString extendsModifier, extendsModifiersList) {
2884-
QString extendsModifierValue = pOMCProxy->getExtendsModifierValue(mpLibraryTreeItem->getNameStructure(), extendsClass, extendsModifier);
2885-
extendsModifiersMap.insert(extendsModifier, extendsModifierValue);
2886-
}
2887-
mExtendsModifiersMap.insert(extendsClass, extendsModifiersMap);
2888-
}
2889-
28902879
/*!
28912880
* \brief ModelWidget::parseModelInheritedClass
28922881
* Parses the inherited class shape and draws its items on the appropriate view.
@@ -2911,6 +2900,7 @@ void ModelWidget::drawModelInheritedClassShapes(ModelWidget *pModelWidget, Strin
29112900
pInheritedGraphicsView = pLibraryTreeItem->getModelWidget()->getIconGraphicsView();
29122901
pGraphicsView = mpIconGraphicsView;
29132902
} else {
2903+
pLibraryTreeItem->getModelWidget()->loadDiagramView();
29142904
pInheritedGraphicsView = pLibraryTreeItem->getModelWidget()->getDiagramGraphicsView();
29152905
pGraphicsView = mpDiagramGraphicsView;
29162906
}
@@ -3068,6 +3058,7 @@ void ModelWidget::drawModelInheritedClassComponents(ModelWidget *pModelWidget, S
30683058
if (viewType == StringHandler::Icon) {
30693059
pGraphicsView = mpIconGraphicsView;
30703060
} else {
3061+
pLibraryTreeItem->getModelWidget()->loadDiagramView();
30713062
pGraphicsView = mpDiagramGraphicsView;
30723063
}
30733064
foreach (Component *pInheritedComponent, pLibraryTreeItem->getModelWidget()->getDiagramGraphicsView()->getComponentsList()) {
@@ -3211,6 +3202,7 @@ void ModelWidget::drawModelInheritedClassConnections(ModelWidget *pModelWidget)
32113202
foreach (LibraryTreeItem *pLibraryTreeItem, pModelWidget->getInheritedClassesList()) {
32123203
if (!pLibraryTreeItem->isNonExisting()) {
32133204
drawModelInheritedClassConnections(pLibraryTreeItem->getModelWidget());
3205+
pLibraryTreeItem->getModelWidget()->loadConnections();
32143206
foreach (LineAnnotation *pConnectionLineAnnotation, pLibraryTreeItem->getModelWidget()->getDiagramGraphicsView()->getConnectionsList()) {
32153207
mpDiagramGraphicsView->addInheritedConnectionToList(createInheritedConnection(pConnectionLineAnnotation));
32163208
}

OMEdit/OMEditGUI/Modeling/ModelWidgetContainer.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,7 @@ class ModelWidget : public QWidget
342342
QList<LibraryTreeItem*> getInheritedClassesList() {return mInheritedClassesList;}
343343
QMap<QString, QMap<QString, QString> > getExtendsModifiersMap() {return mExtendsModifiersMap;}
344344
QMap<QString, QString> getExtendsModifiersMap(QString extendsClass);
345-
void updateExtendsModifiersMap(QString extendsClass);
345+
void fetchExtendsModifiers(QString extendsClass);
346346
void reDrawModelWidget();
347347
ShapeAnnotation* createNonExistingInheritedShape(GraphicsView *pGraphicsView);
348348
ShapeAnnotation* createInheritedShape(ShapeAnnotation *pShapeAnnotation, GraphicsView *pGraphicsView);
@@ -386,13 +386,13 @@ class ModelWidget : public QWidget
386386
bool mDiagramViewLoaded;
387387
bool mConnectionsLoaded;
388388
bool mCreateModelWidgetComponents;
389+
bool mExtendsModifiersLoaded;
389390
QMap<QString, QMap<QString, QString> > mExtendsModifiersMap;
390391
QList<LibraryTreeItem*> mInheritedClassesList;
391392
QList<ComponentInfo*> mComponentsList;
392393
QStringList mComponentsAnnotationsList;
393394

394395
void getModelInheritedClasses();
395-
void getModelExtendsModifiers(QString extendsClass);
396396
void drawModelInheritedClassShapes(ModelWidget *pModelWidget, StringHandler::ViewType viewType);
397397
void removeInheritedClassShapes(StringHandler::ViewType viewType);
398398
void getModelIconDiagramShapes(StringHandler::ViewType viewType);

OMEdit/OMEditGUI/OMC/OMCProxy.cpp

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1042,15 +1042,21 @@ QString OMCProxy::getExtendsModifierValue(QString className, QString extendsClas
10421042

10431043
bool OMCProxy::setExtendsModifierValue(QString className, QString extendsClassName, QString modifierName, QString modifierValue)
10441044
{
1045-
if (modifierValue.compare("=") == 0)
1046-
sendCommand("setExtendsModifierValue(" + className + "," + extendsClassName + "," + modifierName + ", $Code(()))");
1047-
else
1048-
sendCommand("setExtendsModifierValue(" + className + "," + extendsClassName + "," + modifierName + ", $Code(" + modifierValue + "))");
1049-
if (getResult().toLower().contains("ok"))
1045+
QString expression;
1046+
if (modifierValue.isEmpty()) {
1047+
expression = QString("setExtendsModifierValue(%1, %2, %3, $Code(()))").arg(className).arg(extendsClassName).arg(modifierName);
1048+
} else if (modifierValue.startsWith("(")) {
1049+
expression = QString("setExtendsModifierValue(%1, %2, %3, $Code(%4))").arg(className).arg(extendsClassName).arg(modifierName).arg(modifierValue);
1050+
} else {
1051+
expression = QString("setExtendsModifierValue(%1, %2, %3, $Code(=%4))").arg(className).arg(extendsClassName).arg(modifierName).arg(modifierValue);
1052+
}
1053+
sendCommand(expression);
1054+
if (getResult().toLower().contains("ok")) {
10501055
return true;
1051-
else
1052-
{
1053-
printMessagesStringInternal();
1056+
} else {
1057+
QString msg = tr("Unable to set the extends modifier value using command <b>%1</b>").arg(expression);
1058+
MessageItem messageItem(MessageItem::Modelica, "", false, 0, 0, 0, 0, msg, Helper::scriptingKind, Helper::errorLevel);
1059+
mpMainWindow->getMessagesWidget()->addGUIMessage(messageItem);
10541060
return false;
10551061
}
10561062
}
@@ -1207,11 +1213,12 @@ QList<QString> OMCProxy::getInheritedClasses(QString className)
12071213
}
12081214

12091215
/*!
1210-
Returns the components of a model with their attributes.\n
1211-
Creates an object of ComponentInfo for each component.
1212-
\param className - is the name of the model.
1213-
\return the list of components
1214-
*/
1216+
* \brief OMCProxy::getComponents
1217+
* Returns the components of a model with their attributes.\n
1218+
* Creates an object of ComponentInfo for each component.
1219+
* \param className - is the name of the model.
1220+
* \return the list of components
1221+
*/
12151222
QList<ComponentInfo*> OMCProxy::getComponents(QString className)
12161223
{
12171224
QString expression = "getComponents(" + className + ", useQuotes = true)";

0 commit comments

Comments
 (0)