Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
- Generate relative components paths for classes contained in package.

git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@25638 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
adeas31 committed Apr 20, 2015
1 parent 89effa2 commit 874da4b
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 15 deletions.
5 changes: 3 additions & 2 deletions OMEdit/OMEditGUI/Modeling/ModelWidgetContainer.cpp
Expand Up @@ -514,8 +514,9 @@ void GraphicsView::addComponentObject(Component *pComponent)
{
MainWindow *pMainWindow = mpModelWidget->getModelWidgetContainer()->getMainWindow();
// Add the component to model in OMC Global Scope.
pMainWindow->getOMCProxy()->addComponent(pComponent->getName(), pComponent->getClassName(),
mpModelWidget->getLibraryTreeNode()->getNameStructure(), pComponent->getPlacementAnnotation());
QString className = StringHandler::makeClassNameRelative(pComponent->getClassName(), mpModelWidget->getLibraryTreeNode()->getNameStructure());
pMainWindow->getOMCProxy()->addComponent(pComponent->getName(), className, mpModelWidget->getLibraryTreeNode()->getNameStructure(),
pComponent->getPlacementAnnotation());
// make the model modified
mpModelWidget->setModelModified();
// add the component to the local list
Expand Down
85 changes: 74 additions & 11 deletions OMEdit/OMEditGUI/Util/StringHandler.cpp
Expand Up @@ -725,6 +725,13 @@ QStringList StringHandler::getStrings(QString value, char start, char end)
return list;
}

/*!
* \brief wordsBeforeAfterLastDot
* Helper for StringHandler::getLastWordAfterDot() and StringHandler::removeLastWordAfterDot()
* \param value
* \param lastWord
* \return
*/
static QString wordsBeforeAfterLastDot(QString value, bool lastWord)
{
if (value.isEmpty())
Expand Down Expand Up @@ -756,20 +763,38 @@ static QString wordsBeforeAfterLastDot(QString value, bool lastWord)
}
}

/*!
* \brief StringHandler::getLastWordAfterDot
* Returns the last word after dot.
* \param value
* \return
*/
QString StringHandler::getLastWordAfterDot(QString value)
{
return wordsBeforeAfterLastDot(value,true);
return wordsBeforeAfterLastDot(value, true);
}

/*!
* \brief StringHandler::removeLastWordAfterDot
* Removes the last word after dot and returns the remaining string.
* \param value
* \return
*/
QString StringHandler::removeLastWordAfterDot(QString value)
{
return wordsBeforeAfterLastDot(value,false);
return wordsBeforeAfterLastDot(value, false);
}

QString StringHandler::getFirstWordBeforeDot(QString value)
/*!
* \brief wordsBeforeAfterFirstDot
* Helper for StringHandler::getFirstWordBeforeDot() and StringHandler::removeFirstWordAfterDot()
* \param value
* \param firstWord
* \return
*/
static QString wordsBeforeAfterFirstDot(QString value, bool firstWord)
{
if (value.isEmpty())
{
if (value.isEmpty()) {
return "";
}
value = value.trimmed();
Expand All @@ -784,16 +809,39 @@ QString StringHandler::getFirstWordBeforeDot(QString value)
pos = value.indexOf('.');
}

if (pos >= 0)
{
return value.mid(0, (pos));
}
else
{
if (pos >= 0) {
if (firstWord) {
return value.mid(0, (pos));
} else {
return value.mid((pos + 1), (value.length() - 1));
}
} else {
return value;
}
}

/*!
* \brief StringHandler::getFirstWordBeforeDot
* Returns the first word before dot.
* \param value
* \return
*/
QString StringHandler::getFirstWordBeforeDot(QString value)
{
return wordsBeforeAfterFirstDot(value, true);
}

/*!
* \brief StringHandler::removeFirstWordAfterDot
* Removes the first word before dot and returns the remaining string.
* \param value
* \return
*/
QString StringHandler::removeFirstWordAfterDot(QString value)
{
return wordsBeforeAfterFirstDot(value, false);
}

QString StringHandler::getModifierValue(QString value)
{
int element = 0;
Expand Down Expand Up @@ -1402,3 +1450,18 @@ QColor StringHandler::getSimulationMessageTypeColor(StringHandler::SimulationMes
}
}

/*!
* \brief StringHandler::makeClassNameRelative
* Removes the first characters matching with droppedClassName from draggedClassName.
* \param draggedClassName
* \param droppedClassName
* \return
*/
QString StringHandler::makeClassNameRelative(QString draggedClassName, QString droppedClassName)
{
if (getFirstWordBeforeDot(draggedClassName).compare(getFirstWordBeforeDot(droppedClassName)) == 0) {
return makeClassNameRelative(removeFirstWordAfterDot(draggedClassName), removeFirstWordAfterDot(droppedClassName));
} else {
return draggedClassName;
}
}
6 changes: 4 additions & 2 deletions OMEdit/OMEditGUI/Util/StringHandler.h
Expand Up @@ -106,10 +106,11 @@ class StringHandler : public QObject
static QString removeFirstLastQuotes(QString value);
static QStringList getStrings(QString value);
static QStringList getStrings(QString value, char start, char end);
static QString getLastWordAfterDot(QString value);
static QString getFirstWordBeforeDot(QString value);
/* Handles quoted identifiers A.B.'C.D' -> A.B, A.B.C.D -> A.B.C */
static QString getLastWordAfterDot(QString value);
static QString removeLastWordAfterDot(QString value);
static QString getFirstWordBeforeDot(QString value);
static QString removeFirstWordAfterDot(QString value);
static QString getModifierValue(QString value);
static QString escapeString(QString value);
// Returns "" if the string is not a standard Modelica string. Else it unparses it into normal form.
Expand Down Expand Up @@ -145,6 +146,7 @@ class StringHandler : public QObject
static StringHandler::SimulationMessageType getSimulationMessageType(QString type);
static QString getSimulationMessageTypeString(StringHandler::SimulationMessageType type);
static QColor getSimulationMessageTypeColor(StringHandler::SimulationMessageType type);
static QString makeClassNameRelative(QString draggedClassName, QString droppedClassName);
protected:
static QString mLastOpenDir;
};
Expand Down

0 comments on commit 874da4b

Please sign in to comment.