Skip to content

Commit 227701e

Browse files
authored
Read the profiling value when loading transformational debugger (#14407)
Fixes #10997 Enable generate operations by default. Do not duplicate definedIn otherwise we get multiple context menu entries in Variable browser. When loading the model_info.json check if profiling files exists. If they do then load the profiling information.
1 parent a25e83d commit 227701e

File tree

7 files changed

+209
-159
lines changed

7 files changed

+209
-159
lines changed

OMEdit/OMEditLIB/MainWindow.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1513,17 +1513,19 @@ void MainWindow::createOMNotebookCodeCell(LibraryTreeItem *pLibraryTreeItem, QDo
15131513
/*!
15141514
* \brief MainWindow::showTransformationsWidget
15151515
* Creates a TransformationsWidget and show it to the user.
1516-
* \param fileName
1516+
* \param fileName - path to model_info.json file.
1517+
* \param profiling - enable/disable profiling
1518+
* \param checkProfilingExists - check profiling files exists
15171519
* \return
15181520
*/
1519-
TransformationsWidget *MainWindow::showTransformationsWidget(QString fileName, bool profiling)
1521+
TransformationsWidget *MainWindow::showTransformationsWidget(QString fileName, bool profiling, bool checkProfilingExists)
15201522
{
15211523
TransformationsWidget *pTransformationsWidget = mTransformationsWidgetHash.value(fileName, 0);
15221524
if (!pTransformationsWidget) {
1523-
pTransformationsWidget = new TransformationsWidget(fileName, profiling);
1525+
pTransformationsWidget = new TransformationsWidget(fileName, profiling, checkProfilingExists);
15241526
mTransformationsWidgetHash.insert(fileName, pTransformationsWidget);
15251527
} else {
1526-
pTransformationsWidget->reloadTransformations();
1528+
pTransformationsWidget->loadTransformations(profiling, checkProfilingExists);
15271529
}
15281530
pTransformationsWidget->show();
15291531
pTransformationsWidget->raise();
@@ -2053,7 +2055,7 @@ void MainWindow::showOpenTransformationFileDialog()
20532055
}
20542056
mpProgressBar->setRange(0, 0);
20552057
mpStatusBar->showMessage(QString("%1: %2").arg(Helper::loading, fileName));
2056-
showTransformationsWidget(fileName, false);
2058+
showTransformationsWidget(fileName, false, true);
20572059
mpStatusBar->clearMessage();
20582060
hideProgressBar();
20592061
}

OMEdit/OMEditLIB/MainWindow.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ class MainWindow : public QMainWindow
246246
void createOMNotebookTitleCell(LibraryTreeItem *pLibraryTreeItem, QDomDocument xmlDocument, QDomElement domElement);
247247
void createOMNotebookImageCell(LibraryTreeItem *pLibraryTreeItem, QDomDocument xmlDocument, QDomElement domElement, QString filePath);
248248
void createOMNotebookCodeCell(LibraryTreeItem *pLibraryTreeItem, QDomDocument xmlDocument, QDomElement domElement);
249-
TransformationsWidget* showTransformationsWidget(QString fileName, bool profiling);
249+
TransformationsWidget* showTransformationsWidget(QString fileName, bool profiling, bool checkProfilingExists);
250250
void findFileAndGoToLine(QString fileName, QString lineNumber);
251251
void printStandardOutAndErrorFilesMessages();
252252
static void PlotCallbackFunction(void *p, int externalWindow, const char* filename, const char* title, const char* grid, const char* plotType, const char* logX,

OMEdit/OMEditLIB/Plotting/VariablesWidget.cpp

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ void VariablesTreeItem::setVariableItemData(const QVector<QVariant> &variableIte
127127
mIsMainArray = variableItemData[VariableItemData::ISMAINARRAY].toBool();
128128
mUses = variableItemData[VariableItemData::USES].toStringList();
129129
mInitialUses = variableItemData[VariableItemData::INITIAL_USES].toStringList();
130+
mDefinedIn.clear();
130131
foreach(QVariant var, variableItemData[VariableItemData::DEFINED_IN].toList()) {
131132
mDefinedIn << var.value<IntStringPair>();
132133
}
@@ -1255,23 +1256,40 @@ void VariablesTreeModel::filterDependencies()
12551256
}
12561257
}
12571258

1259+
/*!
1260+
* \brief VariablesTreeModel::openTransformationsBrowser
1261+
* Slot activated when open debugger equation context menu action triggered SIGNAL is raised.
1262+
*/
12581263
void VariablesTreeModel::openTransformationsBrowser()
12591264
{
12601265
QAction *pAction = qobject_cast<QAction*>(sender());
12611266
if (pAction) {
12621267
QVariantList list = pAction->data().toList();
12631268
QString fileName = list[0].toString();
12641269
int equationIndex = list[1].toInt();
1270+
QString variableName = list[2].toString();
12651271
if (QFileInfo(fileName).exists()) {
1266-
TransformationsWidget *pTransformationsWidget = MainWindow::instance()->showTransformationsWidget(fileName, false);
1272+
bool profiling = false;
1273+
bool checkForProfilingFiles = true;
1274+
VariablesTreeItem *pVariablesTreeItem = findVariablesTreeItem(variableName, mpRootVariablesTreeItem);
1275+
if (pVariablesTreeItem) {
1276+
pVariablesTreeItem = pVariablesTreeItem->rootParent();
1277+
SimulationOptions simulationOptions = pVariablesTreeItem->getSimulationOptions();
1278+
if (simulationOptions.isValid()) {
1279+
profiling = simulationOptions.getProfiling().compare(QStringLiteral("none")) != 0;
1280+
checkForProfilingFiles = false;
1281+
}
1282+
}
1283+
TransformationsWidget *pTransformationsWidget = MainWindow::instance()->showTransformationsWidget(fileName, profiling, checkForProfilingFiles);
12671284
QTreeWidgetItem *pTreeWidgetItem = pTransformationsWidget->findEquationTreeItem(equationIndex);
12681285
if (pTreeWidgetItem) {
12691286
pTransformationsWidget->getEquationsTreeWidget()->clearSelection();
12701287
pTransformationsWidget->getEquationsTreeWidget()->setCurrentItem(pTreeWidgetItem);
12711288
}
12721289
pTransformationsWidget->fetchEquationData(equationIndex);
12731290
} else {
1274-
QMessageBox::critical(MainWindow::instance(), QString("%1 - %2").arg(Helper::applicationName, Helper::error), GUIMessages::getMessage(GUIMessages::FILE_NOT_FOUND).arg(fileName), QMessageBox::Ok);
1291+
QMessageBox::critical(MainWindow::instance(), QString("%1 - %2").arg(Helper::applicationName, Helper::error),
1292+
GUIMessages::getMessage(GUIMessages::FILE_NOT_FOUND).arg(fileName), QMessageBox::Ok);
12751293
}
12761294
}
12771295
}
@@ -2912,6 +2930,7 @@ void VariablesWidget::showContextMenu(QPoint point)
29122930
QVariantList lst;
29132931
lst << QString("%1/%2").arg(pVariablesTreeItem->getFilePath(), pVariablesTreeItem->getInfoFileName());
29142932
lst << pair.first;
2933+
lst << pVariablesTreeItem->getVariableName();
29152934
pGetDefines->setData(lst);
29162935
pGetDefines->setStatusTip(tr("Open debugger for the equation"));
29172936
menu.addAction(pGetDefines);

OMEdit/OMEditLIB/Simulation/SimulationDialog.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1989,7 +1989,7 @@ void SimulationDialog::simulationProcessFinished(SimulationOptions simulationOpt
19891989
bool profiling = simulationOptions.getProfiling().compare(QStringLiteral("none")) != 0;
19901990
if (OptionsDialog::instance()->getDebuggerPage()->getAlwaysShowTransformationsCheckBox()->isChecked() ||
19911991
simulationOptions.getLaunchTransformationalDebugger() || profiling) {
1992-
MainWindow::instance()->showTransformationsWidget(simulationOptions.getWorkingDirectory() + "/" + simulationOptions.getOutputFileName() + "_info.json", profiling);
1992+
MainWindow::instance()->showTransformationsWidget(simulationOptions.getWorkingDirectory() + "/" + simulationOptions.getOutputFileName() + "_info.json", profiling, false);
19931993
}
19941994
// Show the data reconciliation report
19951995
if (simulationOptions.getEnableDataReconciliation()) {

OMEdit/OMEditLIB/Simulation/SimulationOutputWidget.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -799,7 +799,7 @@ void SimulationOutputWidget::compilationProcessFinishedHelper(int exitCode, QPro
799799
if (mSimulationOptions.getBuildOnly() &&
800800
(OptionsDialog::instance()->getDebuggerPage()->getAlwaysShowTransformationsCheckBox()->isChecked() ||
801801
mSimulationOptions.getLaunchTransformationalDebugger() || profiling)) {
802-
MainWindow::instance()->showTransformationsWidget(mSimulationOptions.getWorkingDirectory() + "/" + mSimulationOptions.getOutputFileName() + "_info.json", profiling);
802+
MainWindow::instance()->showTransformationsWidget(mSimulationOptions.getWorkingDirectory() + "/" + mSimulationOptions.getOutputFileName() + "_info.json", profiling, false);
803803
}
804804
MainWindow::instance()->getSimulationDialog()->showAlgorithmicDebugger(mSimulationOptions);
805805
progressStr = tr("Compilation of %1 finished.").arg(mSimulationOptions.getClassName());
@@ -983,7 +983,7 @@ void SimulationOutputWidget::openTransformationalDebugger()
983983
QString fileName = QString("%1/%2_info.json").arg(mSimulationOptions.getWorkingDirectory(), mSimulationOptions.getOutputFileName());
984984
/* open the model_info.json file */
985985
if (QFileInfo(fileName).exists()) {
986-
MainWindow::instance()->showTransformationsWidget(fileName, mSimulationOptions.getProfiling().compare(QStringLiteral("none")) != 0);
986+
MainWindow::instance()->showTransformationsWidget(fileName, mSimulationOptions.getProfiling().compare(QStringLiteral("none")) != 0, false);
987987
} else {
988988
QMessageBox::critical(this, QString("%1 - %2").arg(Helper::applicationName, Helper::error), GUIMessages::getMessage(GUIMessages::FILE_NOT_FOUND).arg(fileName), QMessageBox::Ok);
989989
}
@@ -1244,7 +1244,8 @@ void SimulationOutputWidget::openTransformationBrowser(QUrl url)
12441244
#endif
12451245
/* open the model_info.json file */
12461246
if (QFileInfo(fileName).exists()) {
1247-
TransformationsWidget *pTransformationsWidget = MainWindow::instance()->showTransformationsWidget(fileName, mSimulationOptions.getProfiling().compare(QStringLiteral("none")) != 0);
1247+
bool profiling = mSimulationOptions.getProfiling().compare(QStringLiteral("none")) != 0;
1248+
TransformationsWidget *pTransformationsWidget = MainWindow::instance()->showTransformationsWidget(fileName, profiling, false);
12481249
QUrlQuery query(url);
12491250
int equationIndex = query.queryItemValue("index").toInt();
12501251
QTreeWidgetItem *pTreeWidgetItem = pTransformationsWidget->findEquationTreeItem(equationIndex);

0 commit comments

Comments
 (0)