From b253bd862bd7e87965482a36a83641a7b3bc4e11 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sun, 17 Mar 2024 13:14:50 -0500 Subject: [PATCH] downgrade .dmf to export status --- src/gui/exportOptions.cpp | 34 ++++++++++++++++++++++++++++++++++ src/gui/gui.cpp | 15 +++++++++------ src/gui/gui.h | 5 ++++- 3 files changed, 47 insertions(+), 7 deletions(-) diff --git a/src/gui/exportOptions.cpp b/src/gui/exportOptions.cpp index 65bbefbaa..5bbf84a78 100644 --- a/src/gui/exportOptions.cpp +++ b/src/gui/exportOptions.cpp @@ -251,6 +251,33 @@ void FurnaceGUI::drawExportCommand(bool onWindow) { } } +void FurnaceGUI::drawExportDMF(bool onWindow) { + exitDisabledTimer=1; + + ImGui::Text( + "export in DefleMask module format.\n" + "only do it if you really, really need to, or are downgrading an existing .dmf." + ); + + ImGui::Text("format version:"); + ImGui::RadioButton("1.1.3 and higher",&dmfExportVersion,0); + ImGui::RadioButton("1.0/legacy (0.12)",&dmfExportVersion,1); + + if (onWindow) { + ImGui::Separator(); + if (ImGui::Button("Cancel",ImVec2(200.0f*dpiScale,0))) ImGui::CloseCurrentPopup(); + ImGui::SameLine(); + } + if (ImGui::Button("Export",ImVec2(200.0f*dpiScale,0))) { + if (dmfExportVersion==1) { + openFileDialog(GUI_FILE_SAVE_DMF_LEGACY); + } else { + openFileDialog(GUI_FILE_SAVE_DMF); + } + ImGui::CloseCurrentPopup(); + } +} + void FurnaceGUI::drawExport() { if (settings.exportOptionsLayout==1 || curExportType==GUI_EXPORT_NONE) { if (ImGui::BeginTabBar("ExportTypes")) { @@ -290,6 +317,10 @@ void FurnaceGUI::drawExport() { drawExportCommand(true); ImGui::EndTabItem(); } + if (ImGui::BeginTabItem("DMF")) { + drawExportDMF(true); + ImGui::EndTabItem(); + } ImGui::EndTabBar(); } } else switch (curExportType) { @@ -311,6 +342,9 @@ void FurnaceGUI::drawExport() { case GUI_EXPORT_CMD_STREAM: drawExportCommand(true); break; + case GUI_EXPORT_DMF: + drawExportDMF(true); + break; default: ImGui::Text("congratulations! you've unlocked a secret panel."); if (ImGui::Button("Toggle hidden systems")) { diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 0d9a1f91d..7226932e0 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -4156,12 +4156,6 @@ bool FurnaceGUI::loop() { if (ImGui::MenuItem("save as...",BIND_FOR(GUI_ACTION_SAVE_AS))) { openFileDialog(GUI_FILE_SAVE); } - if (ImGui::MenuItem("save as .dmf (1.1.3+)...")) { - openFileDialog(GUI_FILE_SAVE_DMF); - } - if (ImGui::MenuItem("save as .dmf (1.0/legacy)...")) { - openFileDialog(GUI_FILE_SAVE_DMF_LEGACY); - } ImGui::Separator(); if (settings.exportOptionsLayout==0) { if (ImGui::BeginMenu("export audio...")) { @@ -4200,6 +4194,10 @@ bool FurnaceGUI::loop() { drawExportCommand(); ImGui::EndMenu(); } + if (ImGui::BeginMenu("export .dmf...")) { + drawExportDMF(); + ImGui::EndMenu(); + } } else if (settings.exportOptionsLayout==2) { if (ImGui::MenuItem("export audio...")) { curExportType=GUI_EXPORT_AUDIO; @@ -4237,6 +4235,10 @@ bool FurnaceGUI::loop() { curExportType=GUI_EXPORT_CMD_STREAM; displayExport=true; } + if (ImGui::MenuItem("export .dmf...")) { + curExportType=GUI_EXPORT_DMF; + displayExport=true; + } } else { if (ImGui::MenuItem("export...",BIND_FOR(GUI_ACTION_EXPORT))) { displayExport=true; @@ -7813,6 +7815,7 @@ FurnaceGUI::FurnaceGUI(): curTutorial(-1), curTutorialStep(0), audioExportType(0), + dmfExportVersion(0), curExportType(GUI_EXPORT_NONE) { // value keys valueKeys[SDLK_0]=0; diff --git a/src/gui/gui.h b/src/gui/gui.h index 8358be6d5..5b17f2d8a 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -586,7 +586,8 @@ enum FurnaceGUIExportTypes { GUI_EXPORT_ZSM, GUI_EXPORT_CMD_STREAM, GUI_EXPORT_AMIGA_VAL, - GUI_EXPORT_TEXT + GUI_EXPORT_TEXT, + GUI_EXPORT_DMF }; enum FurnaceGUIFMAlgs { @@ -2462,6 +2463,7 @@ class FurnaceGUI { // export options int audioExportType; + int dmfExportVersion; FurnaceGUIExportTypes curExportType; void drawExportAudio(bool onWindow=false); @@ -2470,6 +2472,7 @@ class FurnaceGUI { void drawExportAmigaVal(bool onWindow=false); void drawExportText(bool onWindow=false); void drawExportCommand(bool onWindow=false); + void drawExportDMF(bool onWindow=false); void drawSSGEnv(unsigned char type, const ImVec2& size); void drawWaveform(unsigned char type, bool opz, const ImVec2& size);