| 22 | } |
| 23 | |
| 24 | void FileTransferController::onOpenSimulation(std::filesystem::path const& filename) |
| 25 | { |
| 26 | printOverlayMessage("Loading ..."); |
| 27 | |
| 28 | _openSimulationProcessor->executeTask( |
| 29 | [&](auto const& senderId) { |
| 30 | auto senderInfo = SenderInfo{.senderId = senderId, .wishResultData = true, .wishErrorInfo = true}; |
| 31 | auto readData = ReadSimulationRequestData{filename.string()}; |
| 32 | return _persisterFacade->scheduleReadSimulation(senderInfo, readData); |
| 33 | }, |
| 34 | [&](auto const& requestId) { |
| 35 | auto const& data = _persisterFacade->fetchReadSimulationData(requestId); |
| 36 | _persisterFacade->shutdown(); |
| 37 | |
| 38 | _simulationFacade->closeSimulation(); |
| 39 | |
| 40 | std::optional<std::string> errorMessage; |
| 41 | try { |
| 42 | _simulationFacade->newSimulation( |
| 43 | data.deserializedSimulation.auxiliaryData.timestep, |
| 44 | data.deserializedSimulation.auxiliaryData.generalSettings, |
| 45 | data.deserializedSimulation.auxiliaryData.simulationParameters); |
| 46 | _simulationFacade->setClusteredSimulationData(data.deserializedSimulation.mainData); |
| 47 | _simulationFacade->setStatisticsHistory(data.deserializedSimulation.statistics); |
| 48 | _simulationFacade->setRealTime(data.deserializedSimulation.auxiliaryData.realTime); |
| 49 | } catch (CudaMemoryAllocationException const& exception) { |
| 50 | errorMessage = exception.what(); |
| 51 | } catch (...) { |
| 52 | errorMessage = "Failed to load simulation."; |
| 53 | } |
| 54 | |
| 55 | if (errorMessage) { |
| 56 | showMessage("Error", *errorMessage); |
| 57 | _simulationFacade->closeSimulation(); |
| 58 | _simulationFacade->newSimulation( |
| 59 | data.deserializedSimulation.auxiliaryData.timestep, |
| 60 | data.deserializedSimulation.auxiliaryData.generalSettings, |
| 61 | data.deserializedSimulation.auxiliaryData.simulationParameters); |
| 62 | } |
| 63 | _persisterFacade->restart(); |
| 64 | |
| 65 | Viewport::get().setCenterInWorldPos(data.deserializedSimulation.auxiliaryData.center); |
| 66 | Viewport::get().setZoomFactor(data.deserializedSimulation.auxiliaryData.zoom); |
| 67 | TemporalControlWindow::get().onSnapshot(); |
| 68 | printOverlayMessage(data.filename.string()); |
| 69 | }, |
| 70 | [](auto const& criticalErrors) { GenericMessageDialog::get().information("Error", criticalErrors); }); |
| 71 | } |
| 72 | |
| 73 | void FileTransferController::onSaveSimulationDialog() |
| 74 | { |
no test coverage detected