Skip to content

Commit

Permalink
ticket:5622 validate the text
Browse files Browse the repository at this point in the history
When users double clicks to open a new model then validate the text of the existing model before switching if it is changed.
  • Loading branch information
adeas31 committed Sep 9, 2019
1 parent 1ff9a98 commit db329f7
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 59 deletions.
37 changes: 13 additions & 24 deletions OMEdit/OMEdit/OMEditGUI/MainWindow.cpp
Expand Up @@ -2788,12 +2788,8 @@ void MainWindow::toggleShapesButton()
void MainWindow::openRecentModelWidget()
{
/* if Model text is changed manually by user then validate it before opening recent ModelWidget. */
ModelWidget *pModelWidget = mpModelWidgetContainer->getCurrentModelWidget();
if (pModelWidget && pModelWidget->getLibraryTreeItem()) {
LibraryTreeItem *pLibraryTreeItem = pModelWidget->getLibraryTreeItem();
if (!pModelWidget->validateText(&pLibraryTreeItem)) {
return;
}
if (!mpModelWidgetContainer->validateText()) {
return;
}
QAction *pAction = qobject_cast<QAction*>(sender());
QToolButton *pToolButton = qobject_cast<QToolButton*>(sender());
Expand Down Expand Up @@ -3975,15 +3971,11 @@ void MainWindow::autoSaveHelper(LibraryTreeItem *pLibraryTreeItem)
*/
void MainWindow::switchToWelcomePerspective()
{
ModelWidget *pModelWidget = mpModelWidgetContainer->getCurrentModelWidget();
if (pModelWidget && pModelWidget->getLibraryTreeItem()) {
LibraryTreeItem *pLibraryTreeItem = pModelWidget->getLibraryTreeItem();
if (!pModelWidget->validateText(&pLibraryTreeItem)) {
bool signalsState = mpPerspectiveTabbar->blockSignals(true);
mpPerspectiveTabbar->setCurrentIndex(1);
mpPerspectiveTabbar->blockSignals(signalsState);
return;
}
if (!mpModelWidgetContainer->validateText()) {
bool signalsState = mpPerspectiveTabbar->blockSignals(true);
mpPerspectiveTabbar->setCurrentIndex(1);
mpPerspectiveTabbar->blockSignals(signalsState);
return;
}
mpCentralStackedWidget->setCurrentWidget(mpWelcomePageWidget);
mpModelWidgetContainer->currentModelWidgetChanged(0);
Expand Down Expand Up @@ -4051,16 +4043,13 @@ void MainWindow::switchToModelingPerspective()
*/
void MainWindow::switchToPlottingPerspective()
{
ModelWidget *pModelWidget = mpModelWidgetContainer->getCurrentModelWidget();
if (pModelWidget && pModelWidget->getLibraryTreeItem()) {
LibraryTreeItem *pLibraryTreeItem = pModelWidget->getLibraryTreeItem();
if (!pModelWidget->validateText(&pLibraryTreeItem)) {
bool signalsState = mpPerspectiveTabbar->blockSignals(true);
mpPerspectiveTabbar->setCurrentIndex(1);
mpPerspectiveTabbar->blockSignals(signalsState);
return;
}
if (!mpModelWidgetContainer->validateText()) {
bool signalsState = mpPerspectiveTabbar->blockSignals(true);
mpPerspectiveTabbar->setCurrentIndex(1);
mpPerspectiveTabbar->blockSignals(signalsState);
return;
}
ModelWidget *pModelWidget = mpModelWidgetContainer->getCurrentModelWidget();
mpCentralStackedWidget->setCurrentWidget(mpPlotWindowContainer);
mpModelWidgetContainer->currentModelWidgetChanged(0);
mpUndoAction->setEnabled(false);
Expand Down
52 changes: 30 additions & 22 deletions OMEdit/OMEdit/OMEditGUI/Modeling/LibraryTreeWidget.cpp
Expand Up @@ -3275,30 +3275,38 @@ void LibraryTreeView::libraryTreeItemDoubleClicked(const QModelIndex &index)
}
return;
}
} else if (pLibraryTreeItem->getLibraryType() == LibraryTreeItem::OMS
&& (pLibraryTreeItem->getOMSConnector()
|| pLibraryTreeItem->getOMSBusConnector()
|| pLibraryTreeItem->getOMSTLMBusConnector())) {
return;
}
/* Check if we are in the plotting perspective
* If yes then we first load the model and switch to Modeling perspective like normal
* and then switches back to plotting perspective and show the DiagramWindow
* If we don't do that then the window title is messed up.
*/
bool isPlottingPerspectiveActive = MainWindow::instance()->isPlottingPerspectiveActive();
mpLibraryWidget->getLibraryTreeModel()->showModelWidget(pLibraryTreeItem);
// if we are in the plotting perspective then open the Diagram Window
if (isPlottingPerspectiveActive) {
MainWindow::instance()->switchToPlottingPerspectiveSlot();
if (MainWindow::instance()->getPlotWindowContainer()->getDiagramSubWindowFromMdi()) {
if (pLibraryTreeItem->getModelWidget()) {
pLibraryTreeItem->getModelWidget()->loadDiagramView();
pLibraryTreeItem->getModelWidget()->loadConnections();
} else if (pLibraryTreeItem->getLibraryType() == LibraryTreeItem::OMS) {
if ((pLibraryTreeItem->getOMSConnector() || pLibraryTreeItem->getOMSBusConnector() || pLibraryTreeItem->getOMSTLMBusConnector())) {
return;
} else {
mpLibraryWidget->getLibraryTreeModel()->showModelWidget(pLibraryTreeItem);
}
} else if (pLibraryTreeItem->getLibraryType() == LibraryTreeItem::CompositeModel) {
mpLibraryWidget->getLibraryTreeModel()->showModelWidget(pLibraryTreeItem);
} else { // LibraryTreeItem::Modelica
/* if Model text is changed manually by user then validate it before opening double clicked ModelWidget. */
if (!MainWindow::instance()->getModelWidgetContainer()->validateText()) {
return;
}
/* Check if we are in the plotting perspective
* If yes then we first load the model and switch to Modeling perspective like normal
* and then switches back to plotting perspective and show the DiagramWindow
* If we don't do that then the window title is messed up.
*/
bool isPlottingPerspectiveActive = MainWindow::instance()->isPlottingPerspectiveActive();
mpLibraryWidget->getLibraryTreeModel()->showModelWidget(pLibraryTreeItem);
// if we are in the plotting perspective then open the Diagram Window
if (isPlottingPerspectiveActive) {
MainWindow::instance()->switchToPlottingPerspectiveSlot();
if (MainWindow::instance()->getPlotWindowContainer()->getDiagramSubWindowFromMdi()) {
if (pLibraryTreeItem->getModelWidget()) {
pLibraryTreeItem->getModelWidget()->loadDiagramView();
pLibraryTreeItem->getModelWidget()->loadConnections();
}
MainWindow::instance()->getPlotWindowContainer()->getDiagramWindow()->drawDiagram(pLibraryTreeItem->getModelWidget());
}
MainWindow::instance()->getPlotWindowContainer()->getDiagramWindow()->drawDiagram(pLibraryTreeItem->getModelWidget());
MainWindow::instance()->getPlotWindowContainer()->addDiagramWindow(pLibraryTreeItem->getModelWidget());
}
MainWindow::instance()->getPlotWindowContainer()->addDiagramWindow(pLibraryTreeItem->getModelWidget());
}
}
}
Expand Down
36 changes: 23 additions & 13 deletions OMEdit/OMEdit/OMEditGUI/Modeling/ModelWidgetContainer.cpp
Expand Up @@ -7118,13 +7118,9 @@ bool ModelWidgetContainer::eventFilter(QObject *object, QEvent *event)
*/
if ((event->type() == QEvent::MouseButtonPress && qobject_cast<QMenuBar*>(object)) ||
(event->type() == QEvent::FocusIn && qobject_cast<DocumentationViewer*>(object))) {
ModelWidget *pModelWidget = getCurrentModelWidget();
if (pModelWidget && pModelWidget->getLibraryTreeItem()) {
LibraryTreeItem *pLibraryTreeItem = pModelWidget->getLibraryTreeItem();
/* if Model text is changed manually by user then validate it. */
if (!pModelWidget->validateText(&pLibraryTreeItem)) {
return true;
}
/* if Model text is changed manually by user then validate it. */
if (!validateText()) {
return true;
}
}
// Global key events with Ctrl modifier.
Expand Down Expand Up @@ -7278,6 +7274,21 @@ void ModelWidgetContainer::updateThreeDViewer(ModelWidget *pModelWidget)
}
#endif

/*!
* \brief ModelWidgetContainer::validateText
* Validates the text of the current ModelWidget editor.
* \return Returns true if validation is successful otherwise return false.
*/
bool ModelWidgetContainer::validateText()
{
ModelWidget *pModelWidget = getCurrentModelWidget();
if (pModelWidget && pModelWidget->getLibraryTreeItem()) {
LibraryTreeItem *pLibraryTreeItem = pModelWidget->getLibraryTreeItem();
return pModelWidget->validateText(&pLibraryTreeItem);
}
return true;
}

/*!
* \brief ModelWidgetContainer::loadPreviousViewType
* Opens the ModelWidget using the previous view type used by user.
Expand Down Expand Up @@ -7323,14 +7334,13 @@ void ModelWidgetContainer::loadPreviousViewType(ModelWidget *pModelWidget)
bool ModelWidgetContainer::openRecentModelWidget(QListWidgetItem *pListWidgetItem)
{
/* if Model text is changed manually by user then validate it before opening recent ModelWidget. */
ModelWidget *pModelWidget = getCurrentModelWidget();
if (pModelWidget && pModelWidget->getLibraryTreeItem()) {
LibraryTreeItem *pLibraryTreeItem = pModelWidget->getLibraryTreeItem();
if (!pModelWidget->validateText(&pLibraryTreeItem)) {
return false;
}
if (!validateText()) {
return false;
}
LibraryTreeItem *pLibraryTreeItem = MainWindow::instance()->getLibraryWidget()->getLibraryTreeModel()->findLibraryTreeItem(pListWidgetItem->data(Qt::UserRole).toString());
if (!pLibraryTreeItem) {
return false;
}
addModelWidget(pLibraryTreeItem->getModelWidget(), false);
return true;
}
Expand Down
1 change: 1 addition & 0 deletions OMEdit/OMEdit/OMEditGUI/Modeling/ModelWidgetContainer.h
Expand Up @@ -616,6 +616,7 @@ class ModelWidgetContainer : public QMdiArea
#if !defined(WITHOUT_OSG)
void updateThreeDViewer(ModelWidget *pModelWidget);
#endif
bool validateText();
private:
StringHandler::ViewType mPreviousViewType;
bool mShowGridLines;
Expand Down

0 comments on commit db329f7

Please sign in to comment.