Skip to content

Commit bcad330

Browse files
committed
SSD text view for systems.
1 parent a907340 commit bcad330

File tree

3 files changed

+57
-36
lines changed

3 files changed

+57
-36
lines changed

OMEdit/OMEditGUI/Modeling/LibraryTreeWidget.cpp

Lines changed: 42 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1425,25 +1425,7 @@ void LibraryTreeModel::updateLibraryTreeItemClassText(LibraryTreeItem *pLibraryT
14251425
pParentLibraryTreeItem->setClassInformation(pOMCProxy->getClassInformation(pParentLibraryTreeItem->getNameStructure()));
14261426
}
14271427
} else if (pLibraryTreeItem->getLibraryType() == LibraryTreeItem::OMS) {
1428-
/* We don't use the editor undo/redo in MainWindow::undo/redo for OMSimulator.
1429-
* So always update the text and don't use the updateText flag.
1430-
*/
1431-
if (!pLibraryTreeItem->getModelWidget()) {
1432-
showModelWidget(pLibraryTreeItem, false);
1433-
}
1434-
if (pLibraryTreeItem->getModelWidget() && !pLibraryTreeItem->getModelWidget()->getEditor()) {
1435-
pLibraryTreeItem->getModelWidget()->createModelWidgetComponents();
1436-
}
1437-
QString contents;
1438-
if (OMSProxy::instance()->list(pLibraryTreeItem->getNameStructure(), &contents)) {
1439-
pLibraryTreeItem->setClassText(contents);
1440-
if (pLibraryTreeItem->getModelWidget() && pLibraryTreeItem->getModelWidget()->getEditor()) {
1441-
OMSimulatorEditor *pOMSimulatorEditor = dynamic_cast<OMSimulatorEditor*>(pLibraryTreeItem->getModelWidget()->getEditor());
1442-
if (pOMSimulatorEditor) {
1443-
pOMSimulatorEditor->setPlainText(contents);
1444-
}
1445-
}
1446-
}
1428+
updateOMSLibraryTreeItemClassText(pLibraryTreeItem);
14471429
}
14481430
}
14491431

@@ -2298,6 +2280,29 @@ void LibraryTreeModel::updateChildLibraryTreeItemClassText(LibraryTreeItem *pLib
22982280
}
22992281
}
23002282

2283+
/*!
2284+
* \brief LibraryTreeModel::updateOMSLibraryTreeItemClassText
2285+
* Updates the OMSimulator model or system contents.
2286+
* \param pLibraryTreeItem
2287+
*/
2288+
void LibraryTreeModel::updateOMSLibraryTreeItemClassText(LibraryTreeItem *pLibraryTreeItem)
2289+
{
2290+
if (pLibraryTreeItem->isTopLevel() || pLibraryTreeItem->isSystemElement()) {
2291+
pLibraryTreeItem->setIsSaved(false);
2292+
updateLibraryTreeItem(pLibraryTreeItem);
2293+
QString contents;
2294+
if (OMSProxy::instance()->list(pLibraryTreeItem->getNameStructure(), &contents)) {
2295+
pLibraryTreeItem->setClassText(contents);
2296+
if (pLibraryTreeItem->getModelWidget() && pLibraryTreeItem->getModelWidget()->getEditor()) {
2297+
OMSimulatorEditor *pOMSimulatorEditor = dynamic_cast<OMSimulatorEditor*>(pLibraryTreeItem->getModelWidget()->getEditor());
2298+
if (pOMSimulatorEditor) {
2299+
pOMSimulatorEditor->setPlainText(contents);
2300+
}
2301+
}
2302+
}
2303+
}
2304+
}
2305+
23012306
/*!
23022307
* \brief LibraryTreeModel::readLibraryTreeItemClassTextFromText
23032308
* Reads the contents of the Modelica class nested in another class.
@@ -2443,6 +2448,21 @@ void LibraryTreeModel::createLibraryTreeItems(LibraryTreeItem *pLibraryTreeItem)
24432448
}
24442449
}
24452450

2451+
/*!
2452+
* \brief LibraryTreeModel::updateOMSChildLibraryTreeItemClassText
2453+
* Updates the OMSimulator model or systems contents recursivly.
2454+
* \param pLibraryTreeItem
2455+
*/
2456+
void LibraryTreeModel::updateOMSChildLibraryTreeItemClassText(LibraryTreeItem *pLibraryTreeItem)
2457+
{
2458+
if (pLibraryTreeItem->isTopLevel() || pLibraryTreeItem->isSystemElement()) {
2459+
updateOMSLibraryTreeItemClassText(pLibraryTreeItem);
2460+
for (int i = 0; i < pLibraryTreeItem->childrenSize(); i++) {
2461+
updateOMSChildLibraryTreeItemClassText(pLibraryTreeItem->child(i));
2462+
}
2463+
}
2464+
}
2465+
24462466
/*!
24472467
* \brief LibraryTreeModel::createLibraryTreeItemImpl
24482468
* Creates a LibraryTreeItem.
@@ -2628,7 +2648,7 @@ void LibraryTreeModel::createOMSConnectorLibraryTreeItems(LibraryTreeItem *pLibr
26282648
for (int j = 0 ; pLibraryTreeItem->getOMSElement()->connectors[j] ; j++) {
26292649
QString name = pLibraryTreeItem->getOMSElement()->connectors[j]->name;
26302650
createLibraryTreeItem(name, QString("%1.%2").arg(pLibraryTreeItem->getNameStructure()).arg(name), pLibraryTreeItem->getFileName(),
2631-
pLibraryTreeItem->isSaved(), pLibraryTreeItem, 0, pLibraryTreeItem->getOMSElement()->connectors[j]);
2651+
true, pLibraryTreeItem, 0, pLibraryTreeItem->getOMSElement()->connectors[j]);
26322652
}
26332653
}
26342654
}
@@ -2644,7 +2664,7 @@ void LibraryTreeModel::createOMSBusConnectorLibraryTreeItems(LibraryTreeItem *pL
26442664
for (int j = 0 ; pLibraryTreeItem->getOMSElement()->busconnectors[j] ; j++) {
26452665
QString name = pLibraryTreeItem->getOMSElement()->busconnectors[j]->name;
26462666
createLibraryTreeItem(name, QString("%1.%2").arg(pLibraryTreeItem->getNameStructure()).arg(name), pLibraryTreeItem->getFileName(),
2647-
pLibraryTreeItem->isSaved(), pLibraryTreeItem, 0, 0, pLibraryTreeItem->getOMSElement()->busconnectors[j]);
2667+
true, pLibraryTreeItem, 0, 0, pLibraryTreeItem->getOMSElement()->busconnectors[j]);
26482668
}
26492669
}
26502670
}
@@ -2660,7 +2680,7 @@ void LibraryTreeModel::createOMSTLMBusConnectorLibraryTreeItems(LibraryTreeItem
26602680
for (int j = 0 ; pLibraryTreeItem->getOMSElement()->tlmbusconnectors[j] ; j++) {
26612681
QString name = pLibraryTreeItem->getOMSElement()->tlmbusconnectors[j]->name;
26622682
createLibraryTreeItem(name, QString("%1.%2").arg(pLibraryTreeItem->getNameStructure()).arg(name), pLibraryTreeItem->getFileName(),
2663-
pLibraryTreeItem->isSaved(), pLibraryTreeItem, 0, 0, 0, pLibraryTreeItem->getOMSElement()->tlmbusconnectors[j]);
2683+
true, pLibraryTreeItem, 0, 0, 0, pLibraryTreeItem->getOMSElement()->tlmbusconnectors[j]);
26642684
}
26652685
}
26662686
}

OMEdit/OMEditGUI/Modeling/LibraryTreeWidget.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,10 +312,12 @@ class LibraryTreeModel : public QAbstractItemModel
312312
const QModelIndex &parentIndex) const;
313313
LibraryTreeItem* getLibraryTreeItemFromFileHelper(LibraryTreeItem *pLibraryTreeItem, QString fileName, int lineNumber);
314314
void updateChildLibraryTreeItemClassText(LibraryTreeItem *pLibraryTreeItem, QString contents, QString fileName);
315+
void updateOMSLibraryTreeItemClassText(LibraryTreeItem *pLibraryTreeItem);
315316
void readLibraryTreeItemClassTextFromText(LibraryTreeItem *pLibraryTreeItem, QString contents);
316317
QString readLibraryTreeItemClassTextFromFile(LibraryTreeItem *pLibraryTreeItem);
317318
public:
318319
void createLibraryTreeItems(LibraryTreeItem *pLibraryTreeItem);
320+
void updateOMSChildLibraryTreeItemClassText(LibraryTreeItem *pLibraryTreeItem);
319321
private:
320322
LibraryTreeItem* createLibraryTreeItemImpl(QString name, LibraryTreeItem *pParentLibraryTreeItem, bool isSaved = true,
321323
bool isSystemLibrary = false, bool load = false, int row = -1);

OMEdit/OMEditGUI/Modeling/ModelWidgetContainer.cpp

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3880,23 +3880,15 @@ void ModelWidget::createModelWidgetComponents()
38803880
}
38813881
connect(mpDiagramViewToolButton, SIGNAL(toggled(bool)), SLOT(showDiagramView(bool)));
38823882
pViewButtonsHorizontalLayout->addWidget(mpDiagramViewToolButton);
3883-
// Only the top level OMSimualtor models will have the editor.
3884-
if (mpLibraryTreeItem->isTopLevel()) {
3883+
// Only the top level OMSimualtor models or systems will have the editor.
3884+
if (mpLibraryTreeItem->isTopLevel() || mpLibraryTreeItem->isSystemElement()) {
38853885
connect(mpTextViewToolButton, SIGNAL(toggled(bool)), SLOT(showTextView(bool)));
38863886
pViewButtonsHorizontalLayout->addWidget(mpTextViewToolButton);
3887-
// create an xml editor for CompositeModel
3887+
// create an editor
38883888
mpEditor = new OMSimulatorEditor(this);
38893889
mpEditor->getPlainTextEdit()->setReadOnly(true);
38903890
OMSimulatorEditor *pOMSimulatorEditor = dynamic_cast<OMSimulatorEditor*>(mpEditor);
3891-
if (mpLibraryTreeItem->getFileName().isEmpty()) {
3892-
QString contents;
3893-
if (OMSProxy::instance()->list(mpLibraryTreeItem->getNameStructure(), &contents)) {
3894-
pOMSimulatorEditor->setPlainText(contents, false);
3895-
mpLibraryTreeItem->setClassText(contents);
3896-
}
3897-
} else {
3898-
pOMSimulatorEditor->setPlainText(mpLibraryTreeItem->getClassText(pMainWindow->getLibraryWidget()->getLibraryTreeModel()), false);
3899-
}
3891+
pOMSimulatorEditor->setPlainText(mpLibraryTreeItem->getClassText(pMainWindow->getLibraryWidget()->getLibraryTreeModel()), false);
39003892
OMSimulatorHighlighter *pOMSimulatorHighlighter = new OMSimulatorHighlighter(OptionsDialog::instance()->getOMSimulatorEditorPage(),
39013893
mpEditor->getPlainTextEdit());
39023894
mpEditor->hide(); // set it hidden so that Find/Replace action can get correct value.
@@ -4418,13 +4410,20 @@ void ModelWidget::updateModelText()
44184410
{
44194411
LibraryTreeModel *pLibraryTreeModel = MainWindow::instance()->getLibraryWidget()->getLibraryTreeModel();
44204412
// Don't allow updating the child LibraryTreeItems of OMS model
4421-
if (mpLibraryTreeItem->getLibraryType() == LibraryTreeItem::OMS
4422-
&& mpLibraryTreeItem->parent() != pLibraryTreeModel->getRootLibraryTreeItem()) {
4413+
if (mpLibraryTreeItem->getLibraryType() == LibraryTreeItem::OMS && !mpLibraryTreeItem->isTopLevel()) {
44234414
if (mpLibraryTreeItem->parent()->getModelWidget()) {
44244415
mpLibraryTreeItem->parent()->getModelWidget()->updateModelText();
44254416
} else {
44264417
pLibraryTreeModel->updateLibraryTreeItemClassText(mpLibraryTreeItem->parent());
44274418
}
4419+
// set the library node not saved.
4420+
mpLibraryTreeItem->setIsSaved(false);
4421+
pLibraryTreeModel->updateLibraryTreeItem(mpLibraryTreeItem);
4422+
if (mpLibraryTreeItem->isComponentElement()) {
4423+
pLibraryTreeModel->updateOMSChildLibraryTreeItemClassText(mpLibraryTreeItem->parent());
4424+
} else {
4425+
pLibraryTreeModel->updateOMSChildLibraryTreeItemClassText(mpLibraryTreeItem);
4426+
}
44284427
return;
44294428
}
44304429
setWindowTitle(QString(mpLibraryTreeItem->getName()).append("*"));

0 commit comments

Comments
 (0)