diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index da3a7b31a..56ae4f37a 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -6689,6 +6689,14 @@ bool FurnaceGUI::init() { syncSettings(); syncTutorial(); + recentFile.clear(); + for (int i=0; igetConfString(fmt::sprintf("recentFile%d",i),""); + if (!r.empty()) { + recentFile.push_back(r); + } + } + if (!settings.persistFadeOut) { audioExportOptions.loops=settings.exportLoops; audioExportOptions.fadeOut=settings.exportFadeOut; @@ -7271,14 +7279,6 @@ void FurnaceGUI::syncState() { xyOscThickness=e->getConfFloat("xyOscThickness",2.0f); cvHiScore=e->getConfInt("cvHiScore",25000); - - recentFile.clear(); - for (int i=0; igetConfString(fmt::sprintf("recentFile%d",i),""); - if (!r.empty()) { - recentFile.push_back(r); - } - } } void FurnaceGUI::commitState(DivConfig& conf) { diff --git a/src/gui/gui.h b/src/gui/gui.h index a68a8b91c..b7b9785ff 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -2806,6 +2806,8 @@ class FurnaceGUI { void resetColors(); void resetKeybinds(); + void purgeBackups(int year, int month, int day); + void readConfig(DivConfig& conf, FurnaceGUISettingGroups groups=GUI_SETTINGS_ALL); void writeConfig(DivConfig& conf, FurnaceGUISettingGroups groups=GUI_SETTINGS_ALL); diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 3da98aeb0..cbdc77f07 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -336,6 +336,10 @@ String stripName(String what) { return ret; } +void FurnaceGUI::purgeBackups(int year, int month, int day) { + refreshBackups=true; +} + void FurnaceGUI::promptKey(int which) { bindSetTarget=which; bindSetActive=true; @@ -4030,14 +4034,16 @@ void FurnaceGUI::drawSettings() { CONFIG_SUBSECTION("Backup Management"); bool purgeDateChanged=false; - ImGui::Text("Delete before (year/month/day):"); - ImGui::SetNextItemWidth(80.0f*dpiScale); + ImGui::AlignTextToFramePadding(); + ImGui::Text("Purge before:"); + ImGui::SameLine(); + ImGui::SetNextItemWidth(60.0f*dpiScale); if (ImGui::InputInt("##PYear",&purgeYear,0,0)) purgeDateChanged=true; ImGui::SameLine(); - ImGui::SetNextItemWidth(60.0f*dpiScale); + ImGui::SetNextItemWidth(40.0f*dpiScale); if (ImGui::InputInt("##PMonth",&purgeMonth,0,0)) purgeDateChanged=true; ImGui::SameLine(); - ImGui::SetNextItemWidth(60.0f*dpiScale); + ImGui::SetNextItemWidth(40.0f*dpiScale); if (ImGui::InputInt("##PDay",&purgeDay,0,0)) purgeDateChanged=true; if (purgeDateChanged) { @@ -4103,11 +4109,12 @@ void FurnaceGUI::drawSettings() { } ImGui::SameLine(); - ImGui::Button("Go##PDate"); - - ImGui::Button("Delete all"); + if (ImGui::Button("Go##PDate")) { + purgeBackups(purgeYear,purgeMonth,purgeDay); + } backupEntryLock.lock(); + ImGui::AlignTextToFramePadding(); if (totalBackupSize>=(1ULL<<50ULL)) { ImGui::Text("%" PRIu64 "PB used",totalBackupSize>>50); } else if (totalBackupSize>=(1ULL<<40ULL)) { @@ -4122,6 +4129,16 @@ void FurnaceGUI::drawSettings() { ImGui::Text("%" PRIu64 " bytes used",totalBackupSize); } + ImGui::SameLine(); + + if (ImGui::Button("Refresh")) { + refreshBackups=true; + } + ImGui::SameLine(); + if (ImGui::Button("Delete all")) { + purgeBackups(0,0,0); + } + if (ImGui::BeginTable("BackupList",3,ImGuiTableFlags_ScrollY|ImGuiTableFlags_Borders)) { ImGui::TableSetupColumn("Name",ImGuiTableColumnFlags_WidthStretch,0.6f); ImGui::TableSetupColumn("Size",ImGuiTableColumnFlags_WidthStretch,0.15f); @@ -4156,9 +4173,11 @@ void FurnaceGUI::drawSettings() { backupEntryLock.unlock(); if (refreshBackups) { refreshBackups=false; + if (backupEntryTask.valid()) backupEntryTask.get(); backupEntryTask=std::async(std::launch::async,[this]() -> bool { backupEntryLock.lock(); backupEntries.clear(); + totalBackupSize=0; backupEntryLock.unlock(); #ifdef _WIN32 @@ -5665,6 +5684,14 @@ bool FurnaceGUI::importConfig(String path) { syncState(); syncSettings(); commitSettings(); + + recentFile.clear(); + for (int i=0; igetConfString(fmt::sprintf("recentFile%d",i),""); + if (!r.empty()) { + recentFile.push_back(r); + } + } return true; }