From 01602317f71751856d6a41e58aea16c94cebae76 Mon Sep 17 00:00:00 2001 From: Pablo Alvarez Lopez Date: Thu, 27 Jul 2023 13:14:37 +0200 Subject: [PATCH] Updated GNEApplicationWindow. Refs #13667 --- src/netedit/GNEApplicationWindow.cpp | 114 +++++++++++++++++++++++++-- src/netedit/GNEApplicationWindow.h | 6 ++ src/utils/gui/windows/GUIAppEnum.h | 2 + 3 files changed, 114 insertions(+), 8 deletions(-) diff --git a/src/netedit/GNEApplicationWindow.cpp b/src/netedit/GNEApplicationWindow.cpp index b6a1115d274..e9d773c3c85 100644 --- a/src/netedit/GNEApplicationWindow.cpp +++ b/src/netedit/GNEApplicationWindow.cpp @@ -152,6 +152,8 @@ FXDEFMAP(GNEApplicationWindow) GNEApplicationWindowMap[] = { FXMAPFUNC(SEL_UPDATE, MID_HOTKEY_CTRL_SHIFT_A_SAVEADDITIONALS, GNEApplicationWindow::onUpdSaveAdditionals), FXMAPFUNC(SEL_COMMAND, MID_GNE_TOOLBARFILE_SAVEADDITIONALS_AS, GNEApplicationWindow::onCmdSaveAdditionalsAs), FXMAPFUNC(SEL_UPDATE, MID_GNE_TOOLBARFILE_SAVEADDITIONALS_AS, GNEApplicationWindow::onUpdSaveAdditionalsAs), + FXMAPFUNC(SEL_COMMAND, MID_GNE_TOOLBARFILE_SAVEJUPEDSIMELEMENTS_AS, GNEApplicationWindow::onCmdSaveJuPedSimElementsAs), + FXMAPFUNC(SEL_UPDATE, MID_GNE_TOOLBARFILE_SAVEJUPEDSIMELEMENTS_AS, GNEApplicationWindow::onUpdSaveJuPedSimElementsAs), // demand elements FXMAPFUNC(SEL_COMMAND, MID_HOTKEY_CTRL_D_SINGLESIMULATIONSTEP_OPENDEMANDELEMENTS, GNEApplicationWindow::onCmdOpenDemandElements), FXMAPFUNC(SEL_UPDATE, MID_HOTKEY_CTRL_D_SINGLESIMULATIONSTEP_OPENDEMANDELEMENTS, GNEApplicationWindow::onUpdNeedsNetwork), @@ -2591,7 +2593,13 @@ GNEApplicationWindow::onUpdNeedsFrontElement(FXObject* sender, FXSelector, void* long GNEApplicationWindow::onUpdSaveNetwork(FXObject* sender, FXSelector, void*) { - return sender->handle(this, ((myNet == nullptr) || myNet->getSavingStatus()->isNetworkSaved()) ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE), nullptr); + if (myNet == nullptr) { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr); + } else if (myNet->getSavingStatus()->isNetworkSaved()) { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr); + } else { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_ENABLE), nullptr); + } } @@ -2609,31 +2617,80 @@ GNEApplicationWindow::onUpdSaveAdditionals(FXObject* sender, FXSelector, void*) long GNEApplicationWindow::onUpdSaveAdditionalsAs(FXObject* sender, FXSelector, void*) { - return sender->handle(this, ((myNet == nullptr) || (myNet->getAttributeCarriers()->getNumberOfAdditionals() == 0)) ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE), nullptr); + if (myNet == nullptr) { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr); + } else if (myNet->getAttributeCarriers()->getNumberOfAdditionals() == 0) { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr); + } else { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_ENABLE), nullptr); + } +} + + +long +GNEApplicationWindow::onUpdSaveJuPedSimElementsAs(FXObject* sender, FXSelector, void*) { + if (myNet == nullptr) { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr); + } else if (myNet->getAttributeCarriers()->getAdditionals().at(GNE_TAG_WALKABLEAREA).size() > 0) { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_ENABLE), nullptr); + } else if (myNet->getAttributeCarriers()->getAdditionals().at(GNE_TAG_OBSTACLE).size() > 0) { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_ENABLE), nullptr); + } else if (myNet->getAttributeCarriers()->getAdditionals().at(GNE_TAG_POIWAYPOINT).size() > 0) { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_ENABLE), nullptr); + } else { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr); + } } long GNEApplicationWindow::onUpdSaveDemandElements(FXObject* sender, FXSelector, void*) { - return sender->handle(this, ((myNet == nullptr) || myNet->getSavingStatus()->isDemandElementsSaved()) ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE), nullptr); + if (myNet == nullptr) { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr); + } else if (myNet->getSavingStatus()->isDemandElementsSaved()) { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr); + } else { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_ENABLE), nullptr); + } + } long GNEApplicationWindow::onUpdSaveDemandElementsAs(FXObject* sender, FXSelector, void*) { - return sender->handle(this, ((myNet == nullptr) || (myNet->getAttributeCarriers()->getNumberOfDemandElements() == 0)) ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE), nullptr); + if (myNet == nullptr) { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr); + } else if (myNet->getAttributeCarriers()->getNumberOfDemandElements() == 0) { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr); + } else { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_ENABLE), nullptr); + } } long GNEApplicationWindow::onUpdSaveDataElements(FXObject* sender, FXSelector, void*) { - return sender->handle(this, ((myNet == nullptr) || myNet->getSavingStatus()->isDataElementsSaved()) ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE), nullptr); + if (myNet == nullptr) { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr); + } else if (myNet->getSavingStatus()->isDataElementsSaved()) { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr); + } else { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_ENABLE), nullptr); + } + } long GNEApplicationWindow::onUpdSaveDataElementsAs(FXObject* sender, FXSelector, void*) { - return sender->handle(this, ((myNet == nullptr) || (myNet->getAttributeCarriers()->getDataSets().size() == 0)) ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE), nullptr); + if (myNet == nullptr) { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr); + } else if (myNet->getAttributeCarriers()->getDataSets().size() == 0) { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr); + } else { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_ENABLE), nullptr); + } + } @@ -2641,15 +2698,24 @@ long GNEApplicationWindow::onUpdSaveMeanDatas(FXObject* sender, FXSelector, void*) { if (myNet == nullptr) { return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr); + } else if (myNet->getSavingStatus()->isMeanDatasSaved()) { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr); } else { - return sender->handle(this, myNet->getSavingStatus()->isMeanDatasSaved() ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE), nullptr); + return sender->handle(this, FXSEL(SEL_COMMAND, ID_ENABLE), nullptr); } } long GNEApplicationWindow::onUpdSaveMeanDatasAs(FXObject* sender, FXSelector, void*) { - return sender->handle(this, ((myNet == nullptr) || (myNet->getAttributeCarriers()->getNumberOfMeanDatas() == 0)) ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE), nullptr); + if (myNet == nullptr) { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr); + } else if (myNet->getAttributeCarriers()->getNumberOfMeanDatas() == 0) { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_DISABLE), nullptr); + } else { + return sender->handle(this, FXSEL(SEL_COMMAND, ID_ENABLE), nullptr); + } + } @@ -3736,6 +3802,38 @@ GNEApplicationWindow::onCmdSaveAdditionalsAs(FXObject*, FXSelector, void*) { } +long +GNEApplicationWindow::onCmdSaveJuPedSimElementsAs(FXObject*, FXSelector, void*) { + // declare current folder + FXString currentFolder = gCurrentFolder; + // get juPedSim file + const auto juPedSimFile = GNEApplicationWindowHelper::openAdditionalFileDialog(this, true); + // check that file is valid + if (!juPedSimFile.empty()) { + try { + // Start saving additionals + getApp()->beginWaitCursor(); + // save additionals + myNet->saveJuPedSimElements(juPedSimFile); + // show info + WRITE_MESSAGE(TL("JuPedSim elements saved in '") + juPedSimFile + "'"); + // end saving additionals + getApp()->endWaitCursor(); + // restore focus + setFocus(); + } catch (IOError& e) { + // write warning if netedit is running in testing mode + WRITE_DEBUG("Opening FXMessageBox 'error saving JuPedSim elements'"); + // open error message box + FXMessageBox::error(this, MBOX_OK, TL("Saving JuPedSim elements failed!"), "%s", e.what()); + // write warning if netedit is running in testing mode + WRITE_DEBUG("Closed FXMessageBox 'error saving JuPedSim elements' with 'OK'"); + } + } + return 1; +} + + long GNEApplicationWindow::onCmdOpenDemandElements(FXObject*, FXSelector, void*) { // get option container diff --git a/src/netedit/GNEApplicationWindow.h b/src/netedit/GNEApplicationWindow.h index 3c9962fbe0b..5231846168b 100644 --- a/src/netedit/GNEApplicationWindow.h +++ b/src/netedit/GNEApplicationWindow.h @@ -251,6 +251,9 @@ class GNEApplicationWindow : public GUIMainWindow, public MFXInterThreadEventCli /// @brief called when the command/FXCall save additionals as is executed long onCmdSaveAdditionalsAs(FXObject*, FXSelector, void*); + /// @brief called when the command/FXCall save JuPedSim elements as is executed + long onCmdSaveJuPedSimElementsAs(FXObject*, FXSelector, void*); + /// @brief called when the command/FXCall open demand is executed long onCmdOpenDemandElements(FXObject*, FXSelector, void*); @@ -314,6 +317,9 @@ class GNEApplicationWindow : public GUIMainWindow, public MFXInterThreadEventCli /// @brief called when the update/FXCall save additionals as is executed long onUpdSaveAdditionalsAs(FXObject*, FXSelector, void*); + /// @brief called when the update/FXCall save juPedSim as is executed + long onUpdSaveJuPedSimElementsAs(FXObject*, FXSelector, void*); + /// @brief called when the update/FXCall save demand elements is executed long onUpdSaveDemandElements(FXObject*, FXSelector, void*); diff --git a/src/utils/gui/windows/GUIAppEnum.h b/src/utils/gui/windows/GUIAppEnum.h index 986d7c5db2d..1a78a2c3c94 100644 --- a/src/utils/gui/windows/GUIAppEnum.h +++ b/src/utils/gui/windows/GUIAppEnum.h @@ -701,6 +701,8 @@ enum { MID_GNE_TOOLBARFILE_SAVENETWORK_AS, /// @brief save additionals as MID_GNE_TOOLBARFILE_SAVEADDITIONALS_AS, + /// @brief save JuPedSim as + MID_GNE_TOOLBARFILE_SAVEJUPEDSIMELEMENTS_AS, /// @brief reload additionals MID_GNE_TOOLBARFILE_RELOAD_ADDITIONALS, /// @brief save TLS Programs as