From a989fa8920256c8a800ef85aa9c82bcfb33ab246 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Wed, 19 Jan 2022 03:15:20 -0500 Subject: [PATCH] prepare for ins/wave loading/saving --- src/gui/gui.cpp | 32 ++++++++++++++++++++++++++++++++ src/gui/gui.h | 4 ++++ 2 files changed, 36 insertions(+) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 2fd784d63..1a42d9feb 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -536,6 +536,14 @@ void FurnaceGUI::drawInsList() { } } ImGui::SameLine(); + if (ImGui::Button(ICON_FA_FOLDER_OPEN "##InsLoad")) { + openFileDialog(GUI_FILE_INS_OPEN); + } + ImGui::SameLine(); + if (ImGui::Button(ICON_FA_FLOPPY_O "##InsSave")) { + if (curIns>=0 && curIns<(int)e->song.ins.size()) openFileDialog(GUI_FILE_INS_SAVE); + } + ImGui::SameLine(); if (ImGui::ArrowButton("InsUp",ImGuiDir_Up)) { if (e->moveInsUp(curIns)) curIns--; } @@ -1104,6 +1112,14 @@ void FurnaceGUI::drawWaveList() { } } ImGui::SameLine(); + if (ImGui::Button(ICON_FA_FOLDER_OPEN "##WaveLoad")) { + openFileDialog(GUI_FILE_WAVE_OPEN); + } + ImGui::SameLine(); + if (ImGui::Button(ICON_FA_FLOPPY_O "##WaveSave")) { + if (curWave>=0 && curWave<(int)e->song.wave.size()) openFileDialog(GUI_FILE_WAVE_SAVE); + } + ImGui::SameLine(); if (ImGui::ArrowButton("WaveUp",ImGuiDir_Up)) { if (e->moveWaveUp(curWave)) curWave--; } @@ -2837,6 +2853,18 @@ void FurnaceGUI::openFileDialog(FurnaceGUIFileDialogs type) { case GUI_FILE_SAVE: ImGuiFileDialog::Instance()->OpenModal("FileDialog","Save File","Furnace song{.fur},DefleMask module{.dmf}",workingDir); break; + case GUI_FILE_INS_OPEN: + ImGuiFileDialog::Instance()->OpenModal("FileDialog","Load Instrument","Furnace instrument{.fui},DefleMask preset{.dmp},.*",workingDir); + break; + case GUI_FILE_INS_SAVE: + ImGuiFileDialog::Instance()->OpenModal("FileDialog","Save Instrument","Furnace instrument{.fui}",workingDir); + break; + case GUI_FILE_WAVE_OPEN: + ImGuiFileDialog::Instance()->OpenModal("FileDialog","Load Wavetable","Furnace wavetable{.fuw},DefleMask wavetable{.dmw},.*",workingDir); + break; + case GUI_FILE_WAVE_SAVE: + ImGuiFileDialog::Instance()->OpenModal("FileDialog","Save Wavetable","Furnace wavetable{.fuw}",workingDir); + break; case GUI_FILE_SAMPLE_OPEN: ImGuiFileDialog::Instance()->OpenModal("FileDialog","Load Sample","Wave file{.wav},.*",workingDir); break; @@ -3402,6 +3430,10 @@ bool FurnaceGUI::loop() { case GUI_FILE_EXPORT_AUDIO_PER_CHANNEL: exportAudio(copyOfName,DIV_EXPORT_MODE_MANY_CHAN); break; + case GUI_FILE_INS_OPEN: + case GUI_FILE_INS_SAVE: + case GUI_FILE_WAVE_OPEN: + case GUI_FILE_WAVE_SAVE: case GUI_FILE_EXPORT_VGM: case GUI_FILE_EXPORT_ROM: showError("Coming soon!"); diff --git a/src/gui/gui.h b/src/gui/gui.h index 107fb2d6d..63a7e4b86 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -79,6 +79,10 @@ enum FurnaceGUIWindows { enum FurnaceGUIFileDialogs { GUI_FILE_OPEN, GUI_FILE_SAVE, + GUI_FILE_INS_OPEN, + GUI_FILE_INS_SAVE, + GUI_FILE_WAVE_OPEN, + GUI_FILE_WAVE_SAVE, GUI_FILE_SAMPLE_OPEN, GUI_FILE_SAMPLE_SAVE, GUI_FILE_EXPORT_AUDIO_ONE,