Skip to content

Commit

Permalink
Better short display of enumeration values, ticket:4084
Browse files Browse the repository at this point in the history
The shortening checks for a value starting with the type name.
  • Loading branch information
rfranke committed Oct 20, 2016
1 parent 6af603d commit 202ad94
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 22 deletions.
57 changes: 36 additions & 21 deletions OMEdit/OMEditGUI/Component/Component.cpp
Expand Up @@ -1033,15 +1033,19 @@ QString Component::getParameterDisplayString(QString parameterName)
OMCProxy *pOMCProxy = mpGraphicsView->getModelWidget()->getModelWidgetContainer()->getMainWindow()->getOMCProxy();
QString className = mpGraphicsView->getModelWidget()->getLibraryTreeItem()->getNameStructure();
QString displayString = "";
QString typeName = "";
/* case 1 */
displayString = mpComponentInfo->getModifiersMap(pOMCProxy, className, this).value(parameterName, "");
/* case 2 */
if (displayString.isEmpty()) {
/* case 2 or check for enumeration type if case 1 */
if (displayString.isEmpty() || typeName.isEmpty()) {
if (mpLibraryTreeItem) {
mpLibraryTreeItem->getModelWidget()->loadDiagramView();
foreach (Component *pComponent, mpLibraryTreeItem->getModelWidget()->getDiagramGraphicsView()->getComponentsList()) {
if (pComponent->getComponentInfo()->getName().compare(parameterName) == 0) {
displayString = pComponent->getComponentInfo()->getParameterValue(pOMCProxy, mpLibraryTreeItem->getNameStructure());
if (displayString.isEmpty())
displayString = pComponent->getComponentInfo()->getParameterValue(pOMCProxy, mpLibraryTreeItem->getNameStructure());
typeName = pComponent->getComponentInfo()->getClassName();
checkEnumerationDisplayString(displayString, typeName);
break;
}
}
Expand All @@ -1051,18 +1055,9 @@ QString Component::getParameterDisplayString(QString parameterName)
if (displayString.isEmpty()) {
displayString = getParameterDisplayStringFromExtendsModifiers(parameterName);
}
/* case 4 */
if (displayString.isEmpty()) {
displayString = getParameterDisplayStringFromExtendsParameters(parameterName);
}
/* Short enumeration value, ModelicaSpec 3.3, section 18.6.5.5, ticket:4084 */
/* Note: for now just look for dots in non-numbers to avoid lookup of type */
bool ok = false;
displayString.toDouble(&ok);
if (!ok) {
int lastDot = displayString.lastIndexOf(".");
if (lastDot >= 0)
displayString = displayString.right(displayString.length() - lastDot - 1);
/* case 4 or check for enumeration type if case 3 */
if (displayString.isEmpty() || typeName.isEmpty()) {
displayString = getParameterDisplayStringFromExtendsParameters(parameterName, displayString);
}
return displayString;
}
Expand Down Expand Up @@ -1586,34 +1581,54 @@ QString Component::getParameterDisplayStringFromExtendsModifiers(QString paramet
* \brief Component::getParameterDisplayStringFromExtendsParameters
* Gets the display string for components from extends parameters.
* \param parameterName
* \param modifierString an existing extends modifier or an empty string
* \return
*/
QString Component::getParameterDisplayStringFromExtendsParameters(QString parameterName)
QString Component::getParameterDisplayStringFromExtendsParameters(QString parameterName, QString modifierString)
{
QString displayString = "";
QString displayString = modifierString;
QString typeName = "";
foreach (Component *pInheritedComponent, mInheritedComponentsList) {
if (pInheritedComponent->getLibraryTreeItem()) {
pInheritedComponent->getLibraryTreeItem()->getModelWidget()->loadDiagramView();
foreach (Component *pComponent, pInheritedComponent->getLibraryTreeItem()->getModelWidget()->getDiagramGraphicsView()->getComponentsList()) {
if (pComponent->getComponentInfo()->getName().compare(parameterName) == 0) {
OMCProxy *pOMCProxy = pComponent->getGraphicsView()->getModelWidget()->getModelWidgetContainer()->getMainWindow()->getOMCProxy();
if (pComponent->getLibraryTreeItem()) {
displayString = pComponent->getComponentInfo()->getParameterValue(pOMCProxy, pComponent->getLibraryTreeItem()->getNameStructure());
if (!displayString.isEmpty()) {
if (displayString.isEmpty())
displayString = pComponent->getComponentInfo()->getParameterValue(pOMCProxy, pComponent->getLibraryTreeItem()->getNameStructure());
typeName = pComponent->getComponentInfo()->getClassName();
checkEnumerationDisplayString(displayString, typeName);
if (!(displayString.isEmpty() || typeName.isEmpty())) {
return displayString;
}
}
}
}
}
displayString = pInheritedComponent->getParameterDisplayStringFromExtendsParameters(parameterName);
if (!displayString.isEmpty()) {
displayString = pInheritedComponent->getParameterDisplayStringFromExtendsParameters(parameterName, displayString);
if (!(displayString.isEmpty() || typeName.isEmpty())) {
return displayString;
}
}
return displayString;
}

/*!
* \brief Component::checkEnumerationDisplayString
* Checks for enumeration type and shortens enumeration value.
* Returns true if displayString was modified.
* See ModelicaSpec 3.3, section 18.6.5.5, ticket:4084
*/
bool Component::checkEnumerationDisplayString(QString &displayString, const QString &typeName)
{
if (displayString.startsWith(typeName + ".")) {
displayString = displayString.right(displayString.length() - typeName.length() - 1);
return true;
}
return false;
}

/*!
* \brief Component::updateToolTip
* Updates the Component's tooltip.
Expand Down
3 changes: 2 additions & 1 deletion OMEdit/OMEditGUI/Component/Component.h
Expand Up @@ -278,7 +278,8 @@ class Component : public QObject, public QGraphicsItem
void setOriginAndExtents();
void updateConnections();
QString getParameterDisplayStringFromExtendsModifiers(QString parameterName);
QString getParameterDisplayStringFromExtendsParameters(QString parameterName);
QString getParameterDisplayStringFromExtendsParameters(QString parameterName, QString modifierString);
bool checkEnumerationDisplayString(QString &displayString, const QString &typeName);
void updateToolTip();
signals:
void added();
Expand Down

0 comments on commit 202ad94

Please sign in to comment.