From 4558e28592e738f55002d1109db35d34ac2f9c73 Mon Sep 17 00:00:00 2001 From: Adeel Asghar Date: Sun, 20 Feb 2011 23:03:32 +0000 Subject: [PATCH] Fixes for bugs #1390 #1435 - Now the parameter values are saved correctly. - BitmapAnnotation is fixed to show correct image. e.g Modelica.Mechanics.MultiBody.Examples.Systems.RobotR3.fullRobot - TextAnnotation is fixed to display right component name and parameter value. git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@7970 f25d12d1-65f4-0310-ae8a-bbce733d8d8e --- OMEdit/OMEditGUI/BitmapAnnotation.cpp | 139 +++++++++++--------------- OMEdit/OMEditGUI/BitmapAnnotation.h | 16 ++- OMEdit/OMEditGUI/Component.cpp | 56 +++++------ OMEdit/OMEditGUI/Component.h | 10 +- OMEdit/OMEditGUI/IconProperties.cpp | 44 +++----- OMEdit/OMEditGUI/LibraryWidget.cpp | 3 + OMEdit/OMEditGUI/OMCProxy.cpp | 54 +++++++--- OMEdit/OMEditGUI/OMCProxy.h | 9 +- OMEdit/OMEditGUI/ProjectTabWidget.cpp | 48 ++++----- OMEdit/OMEditGUI/ShapeAnnotation.cpp | 1 - OMEdit/OMEditGUI/TextAnnotation.cpp | 70 +++++++------ OMEdit/OMEditGUI/TextAnnotation.h | 2 + 12 files changed, 228 insertions(+), 224 deletions(-) diff --git a/OMEdit/OMEditGUI/BitmapAnnotation.cpp b/OMEdit/OMEditGUI/BitmapAnnotation.cpp index deb5df7747a..70becf38fee 100644 --- a/OMEdit/OMEditGUI/BitmapAnnotation.cpp +++ b/OMEdit/OMEditGUI/BitmapAnnotation.cpp @@ -67,6 +67,57 @@ BitmapAnnotation::BitmapAnnotation(QString shape, GraphicsView *graphicsView, QG connect(this, SIGNAL(updateShapeAnnotation()), mpGraphicsView, SLOT(addClassAnnotation())); } +QRectF BitmapAnnotation::boundingRect() const +{ + return shape().boundingRect(); +} + +QPainterPath BitmapAnnotation::shape() const +{ + QPainterPath path; + QPointF p1 = this->mExtent.at(0); + QPointF p2 = this->mExtent.at(1); + + qreal left = qMin(p1.x(), p2.x()); + qreal top = qMin(p1.y(), p2.y()); + qreal width = fabs(p1.x() - p2.x()); + qreal height = fabs(p1.y() - p2.y()); + + QRectF rect (left, top, width, height); + path.addRoundedRect(rect, mCornerRadius, mCornerRadius); + + return path; +} + +void BitmapAnnotation::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) +{ + Q_UNUSED(option); + Q_UNUSED(widget); + + QPointF p1 = this->mExtent.at(0); + QPointF p2 = this->mExtent.at(1); + + qreal left = qMin(p1.x(), p2.x()); + qreal top = qMin(p1.y(), p2.y()); + qreal width = fabs(p1.x() - p2.x()); + qreal height = fabs(p1.y() - p2.y()); + QRectF rect (left, top, width, height); + + if(!mImageSource.isEmpty()) + { + //open file from image source + QByteArray data = QByteArray::fromBase64(mImageSource.toLatin1()); + QImage image; + if(image.loadFromData(data)) + painter->drawImage(rect, image.mirrored()); + } + else + { + QImage image(mFileName); + painter->drawImage(rect, image.mirrored()); + } +} + void BitmapAnnotation::addPoint(QPointF point) { mExtent.append(point); @@ -140,81 +191,11 @@ QString BitmapAnnotation::getShapeAnnotation() return annotationString; } -QRectF BitmapAnnotation::boundingRect() const -{ - return shape().boundingRect(); -} - -void BitmapAnnotation::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) -{ - Q_UNUSED(option); - Q_UNUSED(widget); - - QPointF p1 = this->mExtent.at(0); - QPointF p2 = this->mExtent.at(1); - - qreal left = qMin(p1.x(), p2.x()); - qreal top = qMin(p1.y(), p2.y()); - qreal width = fabs(p1.x() - p2.x()); - qreal height = fabs(p1.y() - p2.y()); - -// top = -top; -// height = -height; - - QRectF rect (left, top, width, height); - - //painter->scale(1.0, -1.0); - - if(!mImageSource.isEmpty()) - { - //open file from image source - QByteArray img = QByteArray::fromBase64(mImageSource.toLatin1()); - QPixmap pix; - if(pix.loadFromData(img)) - painter->drawPixmap(rect.toRect(), pix); - } - else - { - QPixmap pixmap(mFileName); - painter->drawPixmap(rect.toRect(), pixmap); - } -} - -QPainterPath BitmapAnnotation::shape() const -{ - QPainterPath path; - QPointF p1 = this->mExtent.at(0); - QPointF p2 = this->mExtent.at(1); - - qreal left = qMin(p1.x(), p2.x()); - qreal top = qMin(p1.y(), p2.y()); - qreal width = fabs(p1.x() - p2.x()); - qreal height = fabs(p1.y() - p2.y()); - -// top = -top; -// height = -height; - - QRectF rect (left, top, width, height); - path.addRoundedRect(rect, mCornerRadius, mCornerRadius); - - return path; -} - void BitmapAnnotation::setFileName(QString fileName) { mFileName = fileName; } -void BitmapAnnotation::setImageSource(QString imageSource) -{ - mImageSource = imageSource; -} - -QString BitmapAnnotation::getFileName() -{ - return mFileName; -} - void BitmapAnnotation::updateAnnotation() { emit updateShapeAnnotation(); @@ -283,7 +264,6 @@ void BitmapAnnotation::parseShapeAnnotation(QString shape, OMCProxy *omc) { QString modelPath = mpComponent->mpOMCProxy->getSourceFile(mpComponent->getClassName()); QFileInfo qFile(modelPath); - qDebug() << qFile.absolutePath(); this->mFileName = qFile.absolutePath() + "/" + tempFileName; } @@ -293,17 +273,16 @@ void BitmapAnnotation::parseShapeAnnotation(QString shape, OMCProxy *omc) index = index + 1; this->mImageSource = StringHandler::removeFirstLastQuotes(list.at(index)); } +} - //Pic in - //C:\OpenModelicaTrunk\libraries\msl32\Modelica\Resources\Images\MultiBody\Examples\Systems - //""../../../../Images/MultiBody/Examples/Systems/robot_kr15.bmp"" - - //MODEL PATH = C:\OpenModelica1.6.0\lib\omc\omlibrary\msl31/Modelica/Mechanics/MultiBody/Examples/Systems/RobotR3.mo - // + RELATIVE PATH = "../../../../Images/MultiBody/Examples/Systems/robot_kr15.bmp - - //EQUALS: +void BitmapAnnotation::setImageSource(QString imageSource) +{ + mImageSource = imageSource; +} - // ABSOLUTE PATH: C:\OpenModelica1.6.0\lib\omc\omlibrary\msl31/Modelica/Mechanics/MultiBody/Examples/Systems/../../../../Images/MultiBody/Examples/Systems/robot_kr15.bmp +QString BitmapAnnotation::getFileName() +{ + return mFileName; } //Bitmapwidget declarations... diff --git a/OMEdit/OMEditGUI/BitmapAnnotation.h b/OMEdit/OMEditGUI/BitmapAnnotation.h index 5b590db5aab..f2f649b2830 100644 --- a/OMEdit/OMEditGUI/BitmapAnnotation.h +++ b/OMEdit/OMEditGUI/BitmapAnnotation.h @@ -34,27 +34,23 @@ class BitmapAnnotation : public ShapeAnnotation BitmapAnnotation(QString shape, Component *pParent = 0); BitmapAnnotation(GraphicsView *graphicsView, QGraphicsItem *pParent = 0); BitmapAnnotation(QString shape, GraphicsView *graphicsView, QGraphicsItem *pParent = 0); - + QRectF boundingRect() const; + QPainterPath shape() const; + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); void addPoint(QPointF point); - void drawRectangleCornerItems(); void updateEndPoint(QPointF point); + void drawRectangleCornerItems(); + QString getShapeAnnotation(); + void parseShapeAnnotation(QString shape, OMCProxy *omc); void setFileName(QString fileName); void updateAnnotation(); void setImageSource(QString imageSource); - void parseShapeAnnotation(QString shape, OMCProxy *omc); - QString getFileName(); - QString getShapeAnnotation(); - - QRectF boundingRect() const; - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); - QPainterPath shape() const; Component *mpComponent; private: QString mFileName; QString mImageSource; - public slots: void updatePoint(int index, QPointF point); }; diff --git a/OMEdit/OMEditGUI/Component.cpp b/OMEdit/OMEditGUI/Component.cpp index de46ba6917d..1c2086a3a58 100644 --- a/OMEdit/OMEditGUI/Component.cpp +++ b/OMEdit/OMEditGUI/Component.cpp @@ -40,7 +40,8 @@ Component::Component(QString value, QString name, QString className, QPointF pos { mIsLibraryComponent = false; mpParentComponent = pParent; - mpIconParametersList.append(mpOMCProxy->getParameters(mClassName)); + mIconParametersList.append(mpOMCProxy->getParameters(mpGraphicsView->mpParentProjectTab->mModelNameStructure, + mClassName, mName)); parseAnnotationString(this, value); // if component is an icon @@ -92,18 +93,19 @@ Component::Component(QString value, QString className, int type, bool connector, } /* Called for component annotation instance */ -Component::Component(QString value, QString className, QString transformationString, - ComponentsProperties *pComponentProperties, int type, bool connector, Component *pParent) - : ShapeAnnotation(pParent), mAnnotationString(value), mClassName(className), - mTransformationString(transformationString), mpComponentProperties(pComponentProperties), mType(type), - mIsConnector(connector) +Component::Component(QString value, QString transformationString,ComponentsProperties *pComponentProperties, int type, + bool connector, Component *pParent) + : ShapeAnnotation(pParent), mAnnotationString(value), mTransformationString(transformationString), + mpComponentProperties(pComponentProperties), mType(type), mIsConnector(connector) { + mName = mpComponentProperties->getName(); + mClassName = mpComponentProperties->getClassName(); mIsLibraryComponent = false; mpParentComponent = pParent; mpOMCProxy = pParent->mpOMCProxy; mpGraphicsView = pParent->mpGraphicsView; - mpComponentProperties = pComponentProperties; - + mIconParametersList.append(mpOMCProxy->getParameters(mpGraphicsView->mpParentProjectTab->mModelNameStructure, + mClassName, mName)); parseAnnotationString(this, mAnnotationString); mpTransformation = new Transformation(this); @@ -154,20 +156,24 @@ Component::Component(QString value, QString className, Component *pParent) } /* Used for Library Component. Called for component annotation instance */ -Component::Component(QString value, QString className, QString transformationString, - ComponentsProperties *pComponentProperties, Component *pParent) - : ShapeAnnotation(pParent), mAnnotationString(value), mClassName(className), - mTransformationString(transformationString), mpComponentProperties(pComponentProperties) +Component::Component(QString value, QString transformationString, ComponentsProperties *pComponentProperties, + Component *pParent) + : ShapeAnnotation(pParent), mAnnotationString(value), mTransformationString(transformationString), + mpComponentProperties(pComponentProperties) { + mName = mpComponentProperties->getName(); + mClassName = mpComponentProperties->getClassName(); mIsLibraryComponent = true; mpParentComponent = pParent; mpOMCProxy = pParent->mpOMCProxy; mType = StringHandler::ICON; mIsConnector = false; + parseAnnotationString(this, mAnnotationString, true); mpTransformation = new Transformation(this); setTransform(mpTransformation->getTransformationMatrix()); + //! @todo Since for some components we get empty annotations but its inherited componets does have annotations //! @todo so set the parent give the parent bounding box the value of inherited class boundingbox. if (mRectangle.width() > 1) @@ -186,8 +192,8 @@ Component::Component(Component *pComponent, QString name, QPointF position, int // Assing the Graphics View of this component to passed component. In order to avoid exceptions pComponent->mpGraphicsView = mpGraphicsView; // get the component parameters - mpIconParametersList.append(mpOMCProxy->getParameters(mClassName)); - + mIconParametersList.append(mpOMCProxy->getParameters(mpGraphicsView->mpParentProjectTab->mModelNameStructure, + mClassName, mName)); parseAnnotationString(this, mAnnotationString); // if component is an icon if ((mType == StringHandler::ICON)) @@ -836,13 +842,11 @@ void Component::getClassComponents(QString className, int type) Component *component; if (mIsLibraryComponent) { - component = new Component(result, componentProperties->getClassName(), - componentsAnnotationsList.at(i), componentProperties, this); + component = new Component(result, componentsAnnotationsList.at(i), componentProperties, this); } else { - component = new Component(result, componentProperties->getClassName(), - componentsAnnotationsList.at(i), componentProperties, + component = new Component(result, componentsAnnotationsList.at(i), componentProperties, StringHandler::ICON, true, this); } mpComponentsList.append(component); @@ -916,8 +920,7 @@ void Component::getClassComponents(QString className, int type, Component *pPare { QString result = mpOMCProxy->getIconAnnotation(componentProperties->getClassName()); Component *component; - component = new Component(result, componentProperties->getClassName(), - componentsAnnotationsList.at(i), componentProperties, + component = new Component(result, componentsAnnotationsList.at(i), componentProperties, StringHandler::ICON, true, pParent); mpComponentsList.append(component); getClassComponents(componentProperties->getClassName(), StringHandler::ICON, component); @@ -937,8 +940,7 @@ void Component::getClassComponents(QString className, int type, Component *pPare { QString result = mpOMCProxy->getDiagramAnnotation(componentProperties->getClassName()); Component *component; - component = new Component(result, componentProperties->getClassName(), - componentsAnnotationsList.at(i), componentProperties, + component = new Component(result, componentsAnnotationsList.at(i), componentProperties, StringHandler::DIAGRAM, true, pParent); mpComponentsList.append(component); getClassComponents(componentProperties->getClassName(), StringHandler::DIAGRAM, component); @@ -947,8 +949,7 @@ void Component::getClassComponents(QString className, int type, Component *pPare { QString result = mpOMCProxy->getIconAnnotation(componentProperties->getClassName()); Component *component; - component = new Component(result, componentProperties->getClassName(), - componentsAnnotationsList.at(i), componentProperties, + component = new Component(result, componentsAnnotationsList.at(i), componentProperties, StringHandler::DIAGRAM, true, pParent); mpComponentsList.append(component); getClassComponents(componentProperties->getClassName(), StringHandler::ICON, component); @@ -973,10 +974,9 @@ void Component::copyClassComponents(Component *pComponent) foreach(Component *component, pComponent->mpComponentsList) { - Component *portComponent = new Component(component->mAnnotationString, component->mClassName, - component->mTransformationString, component->mpComponentProperties, - component->mType, component->mIsConnector, - this); + Component *portComponent = new Component(component->mAnnotationString, component->mTransformationString, + component->mpComponentProperties, component->mType, + component->mIsConnector, this); mpComponentsList.append(portComponent); copyClassComponents(component); } diff --git a/OMEdit/OMEditGUI/Component.h b/OMEdit/OMEditGUI/Component.h index 7d963fc012a..b4796df851d 100644 --- a/OMEdit/OMEditGUI/Component.h +++ b/OMEdit/OMEditGUI/Component.h @@ -85,13 +85,13 @@ class Component : public ShapeAnnotation Component(QString value, QString name, QString className, QPointF position, int type, bool connector, OMCProxy *omc, GraphicsView *graphicsView, Component *pParent = 0); Component(QString value, QString className, int type, bool connector, Component *pParent = 0); - Component(QString value, QString className, QString transformationString, - ComponentsProperties *pComponentProperties, int type, bool connector, Component *pParent = 0); + Component(QString value, QString transformationString, ComponentsProperties *pComponentProperties, int type, + bool connector, Component *pParent = 0); /* Used for Library Component */ Component(QString value, QString className, OMCProxy *omc, Component *pParent = 0); Component(QString value, QString className, Component *pParent = 0); - Component(QString value, QString className, QString transformationString, - ComponentsProperties *pComponentProperties, Component *pParent = 0); + Component(QString value, QString transformationString, ComponentsProperties *pComponentProperties, + Component *pParent = 0); /* Used for Library Component */ /* Copy Constructors */ Component(Component *pComponent, QString name, QPointF position, int type, bool connector, @@ -113,7 +113,7 @@ class Component : public ShapeAnnotation QList mpShapesList; QList mpInheritanceList; QList mpComponentsList; - QList mpIconParametersList; + QList mIconParametersList; bool mIsLibraryComponent; QPointF mOldPosition; bool isMousePressed; diff --git a/OMEdit/OMEditGUI/IconProperties.cpp b/OMEdit/OMEditGUI/IconProperties.cpp index a00cf5dcd0b..3647eef747c 100644 --- a/OMEdit/OMEditGUI/IconProperties.cpp +++ b/OMEdit/OMEditGUI/IconProperties.cpp @@ -115,11 +115,9 @@ void IconProperties::setUpDialog() QGridLayout *gridParametersLayout = new QGridLayout; gridParametersLayout->setAlignment(Qt::AlignTop | Qt::AlignLeft); - - - for (int i = 0 ; i < mpComponent->mpIconParametersList.size() ; i++) + for (int i = 0 ; i < mpComponent->mIconParametersList.size() ; i++) { - IconParameters *iconParameter = mpComponent->mpIconParametersList.at(i); + IconParameters *iconParameter = mpComponent->mIconParametersList.at(i); QLabel *parameterLabel = new QLabel; parameterLabel->setText(iconParameter->getName()); @@ -197,33 +195,19 @@ void IconProperties::updateIconProperties() QString parameterNewValueString; // update the parameter if it is changed - for (int i = 0 ; i < mpComponent->mpIconParametersList.size() ; i++) + for (int i = 0 ; i < mpComponent->mIconParametersList.size() ; i++) { - IconParameters *iconParameter = mpComponent->mpIconParametersList.at(i); - - if (mParameterTextBoxesList.at(i)->text().isEmpty()) - { - mpComponent->mpOMCProxy->setParameterValue(mpComponent->getClassName(), - iconParameter->getName(), - iconParameter->getDefaultValue()); - - parameterOldValueString = QString(iconParameter->getName()).append("=").append(iconParameter->getValue()); - parameterNewValueString = QString(iconParameter->getName()).append("=").append(iconParameter->getDefaultValue()); - mpComponent->updateParameterValue(parameterOldValueString, parameterNewValueString); - iconParameter->setValue(iconParameter->getDefaultValue()); - - } - else - { - mpComponent->mpOMCProxy->setParameterValue(mpComponent->getClassName(), - iconParameter->getName(), - mParameterTextBoxesList.at(i)->text().trimmed()); - - parameterOldValueString = QString(iconParameter->getName()).append("=").append(iconParameter->getValue()); - parameterNewValueString = QString(iconParameter->getName()).append("=").append(mParameterTextBoxesList.at(i)->text().trimmed()); - mpComponent->updateParameterValue(parameterOldValueString, parameterNewValueString); - iconParameter->setValue(mParameterTextBoxesList.at(i)->text().trimmed()); - } + IconParameters *iconParameter = mpComponent->mIconParametersList.at(i); + mpComponent->mpOMCProxy->setComponentModifierValue(pProjectTab->mModelNameStructure, + QString(mpComponent->getName()).append(".") + .append(iconParameter->getName()), + mParameterTextBoxesList.at(i)->text().trimmed()); + + // update the gui text now + parameterOldValueString = QString(iconParameter->getName()).append("=").append(iconParameter->getValue()); + parameterNewValueString = QString(iconParameter->getName()).append("=").append(mParameterTextBoxesList.at(i)->text().trimmed()); + mpComponent->updateParameterValue(parameterOldValueString, parameterNewValueString); + iconParameter->setValue(mParameterTextBoxesList.at(i)->text().trimmed()); } accept(); } diff --git a/OMEdit/OMEditGUI/LibraryWidget.cpp b/OMEdit/OMEditGUI/LibraryWidget.cpp index 1a63c970633..6206017a7d1 100644 --- a/OMEdit/OMEditGUI/LibraryWidget.cpp +++ b/OMEdit/OMEditGUI/LibraryWidget.cpp @@ -771,6 +771,8 @@ void MSLSearchBox::focusInEvent(QFocusEvent *event) if (text().compare(mDefaultText) == 0) setText(tr("")); + + QLineEdit::focusInEvent(event); } void MSLSearchBox::focusOutEvent(QFocusEvent *event) @@ -781,6 +783,7 @@ void MSLSearchBox::focusOutEvent(QFocusEvent *event) { setText(mDefaultText); } + QLineEdit::focusOutEvent(event); } SearchMSLWidget::SearchMSLWidget(MainWindow *pParent) diff --git a/OMEdit/OMEditGUI/OMCProxy.cpp b/OMEdit/OMEditGUI/OMCProxy.cpp index 7a67fa536c4..904c1ebdbf6 100644 --- a/OMEdit/OMEditGUI/OMCProxy.cpp +++ b/OMEdit/OMEditGUI/OMCProxy.cpp @@ -565,21 +565,46 @@ int OMCProxy::getClassRestriction(QString modelName) return StringHandler::MODEL; } -QList OMCProxy::getParameters(QString className) +QList OMCProxy::getParameters(QString modelName, QString className, QString name) { QList iconParametersList; + // get the list of component modifires + QStringList modifiersList = getComponentModifierNames(modelName, name); + for (int i = 0 ; i < modifiersList.size() ; i++) + { + QString value = getComponentModifierValue(modelName, QString(name).append(".") + .append(modifiersList.at(i)).trimmed()); + IconParameters *iconParameter = new IconParameters(QString(modifiersList.at(i)).trimmed(), value); + iconParametersList.append(iconParameter); + } + // get the list of parameters QStringList list = getParameterNames(className); - for (int i = 0 ; i < list.size() ; i++) { - QString value = getParameterValue(className, list.at(i)); - IconParameters *iconParameter = new IconParameters(list.at(i), value); - iconParametersList.append(iconParameter); + if (!getIconParameter(iconParametersList, QString(list.at(i)).trimmed())) + { + QString value = getParameterValue(className, QString(list.at(i)).trimmed()); + IconParameters *iconParameter = new IconParameters(QString(list.at(i)).trimmed(), value); + iconParametersList.append(iconParameter); + } } - return iconParametersList; } +IconParameters* OMCProxy::getIconParameter(QList list, QString value) +{ + IconParameters *pIconParameter = 0; + foreach (IconParameters *iconParammeter, list) + { + if (iconParammeter->getName().compare(value) == 0) + { + pIconParameter = iconParammeter; + break; + } + } + return pIconParameter; +} + QStringList OMCProxy::getParameterNames(QString className) { QString result; @@ -589,8 +614,8 @@ QStringList OMCProxy::getParameterNames(QString className) if (expressionResult.isEmpty()) { sendCommand(expression); - addExpressionInCommandMap(expression, getResult()); result = StringHandler::removeFirstLastCurlBrackets(getResult()); + addExpressionInCommandMap(expression, result); } else { @@ -621,23 +646,26 @@ bool OMCProxy::setParameterValue(QString className, QString parameter, QString v return false; } -QStringList OMCProxy::getComponentModifierNames(QString modelName, QString className) +QStringList OMCProxy::getComponentModifierNames(QString modelName, QString name) { - sendCommand("getComponentModifierNames(" + modelName + "," + className + ")"); + sendCommand("getComponentModifierNames(" + modelName + "," + name + ")"); QString result = StringHandler::removeFirstLastCurlBrackets(getResult()); QStringList list = result.split(",", QString::SkipEmptyParts); return list; } -QString OMCProxy::getComponentModifierValue(QString modelName, QString className) +QString OMCProxy::getComponentModifierValue(QString modelName, QString name) { - sendCommand("getComponentModifierValue(" + modelName + "," + className + ")"); + sendCommand("getComponentModifierValue(" + modelName + "," + name + ")"); return StringHandler::getModifierValue(getResult()); } -bool OMCProxy::setComponentModifierValue(QString modelName, QString className, QString value) +bool OMCProxy::setComponentModifierValue(QString modelName, QString name, QString value) { - sendCommand("setComponentModifierValue(" + modelName + "," + className + ", Code(=" + value + "))"); + if (value.isEmpty()) + sendCommand("setComponentModifierValue(" + modelName + "," + name + ", Code((" + value + ")))"); + else + sendCommand("setComponentModifierValue(" + modelName + "," + name + ", Code(=" + value + "))"); if (getResult().toLower().contains("ok")) return true; else diff --git a/OMEdit/OMEditGUI/OMCProxy.h b/OMEdit/OMEditGUI/OMCProxy.h index a066766d35e..9502b881e3d 100644 --- a/OMEdit/OMEditGUI/OMCProxy.h +++ b/OMEdit/OMEditGUI/OMCProxy.h @@ -98,13 +98,14 @@ class OMCProxy : public QObject bool isPackage(QString className); bool isWhat(int type, QString className); int getClassRestriction(QString modelName); - QList getParameters(QString className); + QList getParameters(QString modelName, QString className, QString name); + IconParameters* getIconParameter(QList list, QString value); QStringList getParameterNames(QString className); QString getParameterValue(QString className, QString parameter); bool setParameterValue(QString className, QString parameter, QString value); - QStringList getComponentModifierNames(QString modelName, QString className); - QString getComponentModifierValue(QString modelName, QString className); - bool setComponentModifierValue(QString modelName, QString className, QString value); + QStringList getComponentModifierNames(QString modelName, QString name); + QString getComponentModifierValue(QString modelName, QString name); + bool setComponentModifierValue(QString modelName, QString name, QString value); QString getIconAnnotation(QString className); QString getDiagramAnnotation(QString className); int getConnectionCount(QString className); diff --git a/OMEdit/OMEditGUI/ProjectTabWidget.cpp b/OMEdit/OMEditGUI/ProjectTabWidget.cpp index 2a2e28b5509..2799bfb49e6 100644 --- a/OMEdit/OMEditGUI/ProjectTabWidget.cpp +++ b/OMEdit/OMEditGUI/ProjectTabWidget.cpp @@ -338,7 +338,7 @@ void GraphicsView::mouseMoveEvent(QMouseEvent *event) { // don't send mouse move events to items if we are creating something if (!mIsCreatingConnector and !mIsCreatingLine and !mIsCreatingPolygon and !mIsCreatingRectangle - and !mIsCreatingEllipse and !mIsCreatingText) + and !mIsCreatingEllipse and !mIsCreatingText and !mIsCreatingBitmap) { QGraphicsView::mouseMoveEvent(event); } @@ -379,7 +379,7 @@ void GraphicsView::mouseMoveEvent(QMouseEvent *event) mpTextShape->updateEndPoint(this->mapToScene(event->pos())); mpTextShape->update(); } - //If creating bitmap shape, the end points shall be updated to the mouse position. + //If creating bitmap shape, the end points shall be updated to the mouse position. else if (this->mIsCreatingBitmap) { mpBitmapShape->updateEndPoint(this->mapToScene(event->pos())); @@ -772,28 +772,28 @@ void GraphicsView::contextMenuEvent(QContextMenuEvent *event) menu.exec(event->globalPos()); return; // return from it because at a time we only want one context menu. } - bool isFound = false; - foreach (Component *pCompnent, mComponentsList) - { - if (pCompnent->isSelected()) - { - isFound = true; - break; - } - } - // if no component is selected then show the graphics view context menu - if (!isFound) - { - if (StringHandler::ICON == mIconType) - { - QMenu menu(mpParentProjectTab->mpParentProjectTabWidget->mpParentMainWindow); - mpCancelConnectionAction->setText("Context Menu"); - menu.addAction(mpParentProjectTab->mpParentProjectTabWidget->mpParentMainWindow->exportAsImage); - menu.addAction(mpParentProjectTab->mpParentProjectTabWidget->mpParentMainWindow->exportToOMNotebookAction); - menu.exec(event->globalPos()); - return; // return from it because at a time we only want one context menu. - } - } +// bool isFound = false; +// foreach (Component *pCompnent, mComponentsList) +// { +// if (pCompnent->isSelected()) +// { +// isFound = true; +// break; +// } +// } +// // if no component is selected then show the graphics view context menu +// if (!isFound) +// { +// if (StringHandler::ICON == mIconType) +// { +// QMenu menu(mpParentProjectTab->mpParentProjectTabWidget->mpParentMainWindow); +// mpCancelConnectionAction->setText("Context Menu"); +// menu.addAction(mpParentProjectTab->mpParentProjectTabWidget->mpParentMainWindow->exportAsImage); +// menu.addAction(mpParentProjectTab->mpParentProjectTabWidget->mpParentMainWindow->exportToOMNotebookAction); +// menu.exec(event->globalPos()); +// return; // return from it because at a time we only want one context menu. +// } +// } QGraphicsView::contextMenuEvent(event); } diff --git a/OMEdit/OMEditGUI/ShapeAnnotation.cpp b/OMEdit/OMEditGUI/ShapeAnnotation.cpp index 1a65d93e185..a2c7cd61b90 100644 --- a/OMEdit/OMEditGUI/ShapeAnnotation.cpp +++ b/OMEdit/OMEditGUI/ShapeAnnotation.cpp @@ -57,7 +57,6 @@ ShapeAnnotation::~ShapeAnnotation() void ShapeAnnotation::initializeFields() { - // initialize the Line Patterns map. this->mLinePatternsMap.insert("None", Qt::NoPen); this->mLinePatternsMap.insert("Solid", Qt::SolidLine); diff --git a/OMEdit/OMEditGUI/TextAnnotation.cpp b/OMEdit/OMEditGUI/TextAnnotation.cpp index 07eaf092563..b94fa835cb7 100644 --- a/OMEdit/OMEditGUI/TextAnnotation.cpp +++ b/OMEdit/OMEditGUI/TextAnnotation.cpp @@ -32,10 +32,6 @@ */ #include "TextAnnotation.h" -#include "SimulationWidget.h" -#include "qwt_plot.h" -#include "qwt_plot_curve.h" -#include TextAnnotation::TextAnnotation(QString shape, Component *pParent) : ShapeAnnotation(pParent), mpComponent(pParent) @@ -165,48 +161,65 @@ void TextAnnotation::paint(QPainter *painter, const QStyleOptionGraphicsItem *op if(this->mFontUnderLine) font.setUnderline(true); painter->setFont(font); - //painter->setFont(QFont(this->mFontName, this->mDefaultFontSize + this->mFontSize, this->mFontWeight, this->mFontItalic)); - + //painter->setFont(QFont(this->mFontName, this->mDefaultFontSize + this->mFontSize, this->mFontWeight, this->mFontItalic)); painter->drawText(rect, mHorizontalAlignment, this->mTextString); } void TextAnnotation::checkNameString() { + /* the name of the component can be present in any inherited class . So we start with the main class and then + move up the hierarchy looking for the name. + */ if (this->mTextString.contains("%name")) { - // if it is a root item the get name - if (!mpComponent->mpParentComponent) + if (!mpComponent->getName().isEmpty()) mTextString = mpComponent->getName(); - else if (!mpComponent->mpComponentProperties) - mTextString = mpComponent->getRootParentComponent()->getName(); - else if (mpComponent->mpComponentProperties) - mTextString = mpComponent->mpComponentProperties->getName(); + else + { + Component *pComponent = mpComponent; + while (pComponent->mpParentComponent) + { + pComponent = pComponent->mpParentComponent; + if (!pComponent->getName().isEmpty()) + { + mTextString = pComponent->getName(); + break; + } + } + } } } void TextAnnotation::checkParameterString() { - QString parameterString; - - foreach (IconParameters *parameter, mpComponent->mpIconParametersList) + // look for the string in parameters list + foreach (IconParameters *parameter, mpComponent->mIconParametersList) { - // paramter can be in form R=%R - parameterString = QString(parameter->getName()).append("=%").append(parameter->getName()); - if (parameterString == mTextString) - { - mTextString = QString(parameter->getName()).append("=").append(parameter->getDefaultValue()); - break; - } - // paramter can be in form %R - parameterString = QString("%").append(parameter->getName()); - if (parameterString == mTextString) - { - mTextString = QString(parameter->getDefaultValue()); + if (updateParameterString(parameter)) break; - } } } +bool TextAnnotation::updateParameterString(IconParameters *pParamter) +{ + QString parameterString; + // paramter can be in form R=%R + parameterString = QString(pParamter->getName()).append("=%").append(pParamter->getName()); + if (parameterString == mTextString) + { + mTextString = QString(pParamter->getName()).append("=").append(pParamter->getDefaultValue()); + return true; + } + // paramter can be in form %R + parameterString = QString("%").append(pParamter->getName()); + if (parameterString == mTextString) + { + mTextString = QString(pParamter->getDefaultValue()); + return true; + } + return false; +} + QString TextAnnotation::getTextString() { return mTextString.trimmed(); @@ -384,7 +397,6 @@ QString TextAnnotation::getShapeAnnotation() void TextAnnotation::parseShapeAnnotation(QString shape, OMCProxy *omc) { - shape = shape.replace("{", ""); shape = shape.replace("}", ""); diff --git a/OMEdit/OMEditGUI/TextAnnotation.h b/OMEdit/OMEditGUI/TextAnnotation.h index d851d115bcb..af50e29f374 100644 --- a/OMEdit/OMEditGUI/TextAnnotation.h +++ b/OMEdit/OMEditGUI/TextAnnotation.h @@ -39,6 +39,7 @@ #include "mainwindow.h" class OMCProxy; +class IconParameters; class TextAnnotation : public ShapeAnnotation { @@ -65,6 +66,7 @@ class TextAnnotation : public ShapeAnnotation void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); void checkNameString(); void checkParameterString(); + bool updateParameterString(IconParameters *pParamter); void setTextString(QString text); void setFontName(QString fontName); void setFontSize(double fontSize);