Skip to content

Commit

Permalink
ticket:5187 Fixed the indentation issue
Browse files Browse the repository at this point in the history
Preserve user formatting where entire sub-packages are kept as single files
  • Loading branch information
adeas31 committed Jan 9, 2019
1 parent e6e83ea commit 7074e48
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 9 deletions.
17 changes: 14 additions & 3 deletions OMEdit/OMEditGUI/Editors/ModelicaEditor.cpp
Expand Up @@ -278,13 +278,24 @@ QString ModelicaEditor::getPlainText()
TextBlockUserData *pTextBlockUserData = BaseEditorDocumentLayout::userData(block);
if (pTextBlockUserData) {
if (pTextBlockUserData->getLeadingSpaces() == -1) {
pTextBlockUserData->setLeadingSpaces(pLibraryTreeItem->getNestedLevelInPackage());
TextBlockUserData *pFirstBlockUserData = BaseEditorDocumentLayout::userData(mpPlainTextEdit->document()->firstBlock());
if (pFirstBlockUserData) {
if (pFirstBlockUserData->getLeadingSpaces() == -1) {
pTextBlockUserData->setLeadingSpaces(pLibraryTreeItem->getNestedLevelInPackage());
} else {
pTextBlockUserData->setLeadingSpaces(pFirstBlockUserData->getLeadingSpaces());
}
} else {
pTextBlockUserData->setLeadingSpaces(0);
}
}
text += QString(pTextBlockUserData->getLeadingSpaces(), ' ');
}
text += block.text();
block = block.next();
text += "\n";
if (block.isValid()) { // not last block
text += "\n";
}
}
return text;
} else {
Expand Down Expand Up @@ -322,7 +333,7 @@ void ModelicaEditor::setPlainText(const QString &text, bool useInserText)
QString contents = text;
// store and remove leading spaces
if (mpModelWidget->getLibraryTreeItem()->isInPackageOneFile()) {
leadingSpacesMap = StringHandler::getLeadingSpaces(contents, mpModelWidget->getLibraryTreeItem()->getNestedLevelInPackage());
leadingSpacesMap = StringHandler::getLeadingSpaces(contents);
contents = removeLeadingSpaces(contents);
}
// Only set the text when it is really new
Expand Down
2 changes: 1 addition & 1 deletion OMEdit/OMEditGUI/Modeling/ModelWidgetContainer.cpp
Expand Up @@ -4174,7 +4174,7 @@ bool ModelWidget::modelicaEditorTextChanged(LibraryTreeItem **pLibraryTreeItem)
LibraryTreeItem *pParentLibraryTreeItem = pLibraryTreeModel->getContainingFileParentLibraryTreeItem(mpLibraryTreeItem);
removeDynamicResults(); // show static values during editing
if (pParentLibraryTreeItem != mpLibraryTreeItem) {
stringToLoad = mpLibraryTreeItem->getClassTextBefore() + modelicaText + mpLibraryTreeItem->getClassTextAfter();
stringToLoad = mpLibraryTreeItem->getClassTextBefore() + StringHandler::trimmedEnd(modelicaText) + "\n" + mpLibraryTreeItem->getClassTextAfter();
} else {
stringToLoad = modelicaText;
}
Expand Down
24 changes: 20 additions & 4 deletions OMEdit/OMEditGUI/Util/StringHandler.cpp
Expand Up @@ -1686,10 +1686,9 @@ QString StringHandler::toCamelCase(QString str)
* \brief StringHandler::getLeadingSpaces
* Returns a map with line number and number of leading spaces in that line.
* \param contents
* \param tabWidth
* \return
*/
QMap<int, int> StringHandler::getLeadingSpaces(QString contents, int tabWidth)
QMap<int, int> StringHandler::getLeadingSpaces(QString contents)
{
QMap<int, int> leadingSpacesMap;
int startLeadingSpaces, leadingSpaces = 0;
Expand All @@ -1701,9 +1700,9 @@ QMap<int, int> StringHandler::getLeadingSpaces(QString contents, int tabWidth)
startLeadingSpaces = StringHandler::getLeadingSpacesSize(currentLine);
leadingSpaces = startLeadingSpaces;
} else {
leadingSpaces = StringHandler::getLeadingSpacesSize(currentLine);
leadingSpaces = qMin(startLeadingSpaces, StringHandler::getLeadingSpacesSize(currentLine));
}
leadingSpacesMap.insert(lineNumber, leadingSpaces + tabWidth);
leadingSpacesMap.insert(lineNumber, leadingSpaces);
lineNumber++;
}
return leadingSpacesMap;
Expand Down Expand Up @@ -1758,6 +1757,23 @@ bool StringHandler::containsSpace(QString str)
return false;
}

/*!
* \brief StringHandler::trimmedEnd
* Trims the whitespace from the end of the string.
* \param str
* \return
*/
QString StringHandler::trimmedEnd(const QString &str)
{
int n = str.size() - 1;
for (; n >= 0; --n) {
if (!str.at(n).isSpace()) {
return str.left(n + 1);
}
}
return "";
}

/*!
* \brief StringHandler::joinDerivativeAndPreviousVariable
* Joins the variable. For example, if we have variable like der(der(mass.flange_a.s)) we need to display der(der(s)).
Expand Down
3 changes: 2 additions & 1 deletion OMEdit/OMEditGUI/Util/StringHandler.h
Expand Up @@ -155,10 +155,11 @@ class StringHandler : public QObject
static QColor getSimulationMessageTypeColor(StringHandler::SimulationMessageType type);
static QString makeClassNameRelative(QString draggedClassName, QString droppedClassName);
static QString toCamelCase(QString str);
static QMap<int, int> getLeadingSpaces(QString contents, int tabWidth);
static QMap<int, int> getLeadingSpaces(QString contents);
static int getLeadingSpacesSize(QString str);
static bool isFileWritAble(QString filePath);
static bool containsSpace(QString str);
static QString trimmedEnd(const QString &str);
static QString joinDerivativeAndPreviousVariable(QString fullVariableName, QString variableName, QString derivativeOrPrevious);
protected:
static QString mLastOpenDir;
Expand Down

0 comments on commit 7074e48

Please sign in to comment.