Skip to content

Commit

Permalink
using generic file dialogs
Browse files Browse the repository at this point in the history
  • Loading branch information
chrxh committed Jul 18, 2023
1 parent 9eabbef commit c6be8d4
Show file tree
Hide file tree
Showing 20 changed files with 198 additions and 450 deletions.
2 changes: 1 addition & 1 deletion external/ImFileDialog/ImFileDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -498,7 +498,7 @@ namespace ifd {

if (isMe && m_isOpen) {
if (!m_calledOpenPopup) {
ImGui::SetNextWindowSize(ImVec2(600.0f * contentScale, 400.0f * contentScale), ImGuiCond_FirstUseEver);
ImGui::SetNextWindowSize(ImVec2(600.0f * contentScale, 400.0f * contentScale), ImGuiCond_Appearing);
ImGui::OpenPopup(m_currentTitle.c_str());
m_calledOpenPopup = true;
}
Expand Down
8 changes: 0 additions & 8 deletions source/Gui/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -82,10 +82,6 @@ PUBLIC
NewPasswordDialog.h
OpenGLHelper.cpp
OpenGLHelper.h
OpenPatternDialog.cpp
OpenPatternDialog.h
OpenSimulationDialog.cpp
OpenSimulationDialog.h
OverlayMessageController.cpp
OverlayMessageController.h
PatternAnalysisDialog.cpp
Expand All @@ -100,10 +96,6 @@ PUBLIC
ResetPasswordDialog.h
ResizeWorldDialog.cpp
ResizeWorldDialog.h
SavePatternDialog.cpp
SavePatternDialog.h
SaveSimulationDialog.cpp
SaveSimulationDialog.h
SelectionWindow.cpp
SelectionWindow.h
Shader.cpp
Expand Down
2 changes: 1 addition & 1 deletion source/Gui/CreatorWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ namespace
}

_CreatorWindow::_CreatorWindow(EditorModel const& editorModel, SimulationController const& simController, Viewport const& viewport)
: _AlienWindow("Creator", "editor.creator", true), _editorModel(editorModel)
: _AlienWindow("Creator", "editors.creator", true), _editorModel(editorModel)
, _simController(simController)
, _viewport(viewport)
{
Expand Down
12 changes: 0 additions & 12 deletions source/Gui/Definitions.h
Original file line number Diff line number Diff line change
Expand Up @@ -73,12 +73,6 @@ using AutosaveController = std::shared_ptr<_AutosaveController>;
class _GettingStartedWindow;
using GettingStartedWindow = std::shared_ptr<_GettingStartedWindow>;

class _OpenSimulationDialog;
using OpenSimulationDialog = std::shared_ptr<_OpenSimulationDialog>;

class _SaveSimulationDialog;
using SaveSimulationDialog = std::shared_ptr<_SaveSimulationDialog>;

class _DisplaySettingsDialog;
using DisplaySettingsDialog = std::shared_ptr<_DisplaySettingsDialog>;

Expand All @@ -100,12 +94,6 @@ class WindowController;
class _ResizeWorldDialog;
using ResizeWorldDialog = std::shared_ptr<_ResizeWorldDialog>;

class _SavePatternDialog;
using SavePatternDialog = std::shared_ptr<_SavePatternDialog>;

class _OpenPatternDialog;
using OpenPatternDialog = std::shared_ptr<_OpenPatternDialog>;

class _OpenSymbolsDialog;
using OpenSymbolsDialog = std::shared_ptr<_OpenSymbolsDialog>;

Expand Down
67 changes: 57 additions & 10 deletions source/Gui/MainWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,6 @@
#include "UiController.h"
#include "AutosaveController.h"
#include "GettingStartedWindow.h"
#include "OpenSimulationDialog.h"
#include "SaveSimulationDialog.h"
#include "DisplaySettingsDialog.h"
#include "EditorController.h"
#include "SelectionWindow.h"
Expand Down Expand Up @@ -148,8 +146,6 @@ _MainWindow::_MainWindow(SimulationController const& simController, SimpleLogger
_logWindow = std::make_shared<_LogWindow>(_logger);
_gettingStartedWindow = std::make_shared<_GettingStartedWindow>();
_newSimulationDialog = std::make_shared<_NewSimulationDialog>(_simController, _temporalControlWindow, _viewport, _statisticsWindow);
_openSimulationDialog = std::make_shared<_OpenSimulationDialog>(_simController, _temporalControlWindow, _statisticsWindow, _viewport);
_saveSimulationDialog = std::make_shared<_SaveSimulationDialog>(_simController, _viewport);
_displaySettingsDialog = std::make_shared<_DisplaySettingsDialog>();
_patternAnalysisDialog = std::make_shared<_PatternAnalysisDialog>(_simController);
_fpsController = std::make_shared<_FpsController>();
Expand Down Expand Up @@ -380,11 +376,11 @@ void _MainWindow::processMenubar()
_simulationMenuToggled = false;
}
if (ImGui::MenuItem("Open", "CTRL+O")) {
_openSimulationDialog->show();
onOpenSimulation();
_simulationMenuToggled = false;
}
if (ImGui::MenuItem("Save", "CTRL+S")) {
_saveSimulationDialog->show();
onSaveSimulation();
_simulationMenuToggled = false;
}
ImGui::Separator();
Expand Down Expand Up @@ -576,10 +572,10 @@ void _MainWindow::processMenubar()
_newSimulationDialog->open();
}
if (io.KeyCtrl && ImGui::IsKeyPressed(GLFW_KEY_O)) {
_openSimulationDialog->show();
onOpenSimulation();
}
if (io.KeyCtrl && ImGui::IsKeyPressed(GLFW_KEY_S)) {
_saveSimulationDialog->show();
onSaveSimulation();
}
if (ImGui::IsKeyPressed(GLFW_KEY_SPACE)) {
if (_simController->isSimulationRunning()) {
Expand Down Expand Up @@ -710,8 +706,6 @@ void _MainWindow::processMenubar()

void _MainWindow::processDialogs()
{
_openSimulationDialog->process();
_saveSimulationDialog->process();
_newSimulationDialog->process();
_aboutDialog->process();
_massOperationsDialog->process();
Expand Down Expand Up @@ -756,6 +750,59 @@ void _MainWindow::processControllers()
DelayedExecutionController::getInstance().process();
}

void _MainWindow::onOpenSimulation()
{
GenericFileDialogs::getInstance().showOpenFileDialog(
"Open simulation", "Simulation file (*.sim){.sim},.*", _startingPath, [&](std::filesystem::path const& path) {
auto firstFilename = ifd::FileDialog::Instance().GetResult();
auto firstFilenameCopy = firstFilename;
_startingPath = firstFilenameCopy.remove_filename().string();

DeserializedSimulation deserializedData;
if (Serializer::deserializeSimulationFromFiles(deserializedData, firstFilename.string())) {
printOverlayMessage("Loading ...");
delayedExecution([=, this] {
_simController->closeSimulation();
_statisticsWindow->reset();

_simController->newSimulation(
deserializedData.auxiliaryData.timestep,
deserializedData.auxiliaryData.generalSettings,
deserializedData.auxiliaryData.simulationParameters);
_simController->setClusteredSimulationData(deserializedData.mainData);
_viewport->setCenterInWorldPos(deserializedData.auxiliaryData.center);
_viewport->setZoomFactor(deserializedData.auxiliaryData.zoom);
_temporalControlWindow->onSnapshot();
printOverlayMessage(firstFilename.filename().string());
});
} else {
printMessage("Open simulation", "The selected file could not be opened.");
}
});
}

void _MainWindow::onSaveSimulation()
{
GenericFileDialogs::getInstance().showSaveFileDialog(
"Save simulation", "Simulation file (*.sim){.sim},.*", _startingPath, [&](std::filesystem::path const& path) {
auto firstFilename = ifd::FileDialog::Instance().GetResult();
auto firstFilenameCopy = firstFilename;
_startingPath = firstFilenameCopy.remove_filename().string();

DeserializedSimulation sim;
sim.auxiliaryData.timestep = static_cast<uint32_t>(_simController->getCurrentTimestep());
sim.auxiliaryData.zoom = _viewport->getZoomFactor();
sim.auxiliaryData.center = _viewport->getCenterInWorldPos();
sim.auxiliaryData.generalSettings = _simController->getGeneralSettings();
sim.auxiliaryData.simulationParameters = _simController->getSimulationParameters();
sim.mainData = _simController->getClusteredSimulationData();

if (!Serializer::serializeSimulationToFiles(firstFilename.string(), sim)) {
MessageDialog::getInstance().show("Save simulation", "The simulation could not be saved to the specified file.");
}
});
}

void _MainWindow::onRunSimulation()
{
_simController->runSimulation();
Expand Down
6 changes: 4 additions & 2 deletions source/Gui/MainWindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ class _MainWindow
void processWindows();
void processControllers();

void onOpenSimulation();
void onSaveSimulation();
void onRunSimulation();
void onPauseSimulation();

Expand All @@ -52,8 +54,6 @@ class _MainWindow
GpuSettingsDialog _gpuSettingsDialog;
MassOperationsDialog _massOperationsDialog;
NewSimulationDialog _newSimulationDialog;
OpenSimulationDialog _openSimulationDialog;
SaveSimulationDialog _saveSimulationDialog;
DisplaySettingsDialog _displaySettingsDialog;
PatternAnalysisDialog _patternAnalysisDialog;
AboutDialog _aboutDialog;
Expand Down Expand Up @@ -87,4 +87,6 @@ class _MainWindow
bool _toolsMenuToggled = false;
bool _helpMenuToggled = false;
bool _renderSimulation = true;

std::string _startingPath;
};
2 changes: 1 addition & 1 deletion source/Gui/MultiplierWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ namespace
}

_MultiplierWindow::_MultiplierWindow(EditorModel const& editorModel, SimulationController const& simController, Viewport const& viewport)
: _AlienWindow("Multiplier", "editor.multiplier", false)
: _AlienWindow("Multiplier", "editors.multiplier", false)
, _editorModel(editorModel)
, _simController(simController)
, _viewport(viewport)
Expand Down
60 changes: 0 additions & 60 deletions source/Gui/OpenPatternDialog.cpp

This file was deleted.

25 changes: 0 additions & 25 deletions source/Gui/OpenPatternDialog.h

This file was deleted.

75 changes: 0 additions & 75 deletions source/Gui/OpenSimulationDialog.cpp

This file was deleted.

Loading

0 comments on commit c6be8d4

Please sign in to comment.