From a832adeac5ac52eb08c58986bb154d5f84e3e091 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 13:35:26 +0400 Subject: [PATCH 01/18] chanosc gradient point remove is red --- src/gui/chanOsc.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gui/chanOsc.cpp b/src/gui/chanOsc.cpp index 5ca97f479..58f15d1f5 100644 --- a/src/gui/chanOsc.cpp +++ b/src/gui/chanOsc.cpp @@ -282,10 +282,12 @@ void FurnaceGUI::drawChanOsc() { updateChanOscGradTex=true; } + pushDestColor(); if (ImGui::Button("Remove")) { removePoint=index; ImGui::CloseCurrentPopup(); } + popDestColor(); ImGui::EndPopup(); } From 89921b1ff3524d6449dd4647f82824e2dc03eefc Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 13:53:01 +0400 Subject: [PATCH 02/18] improve inital sys steeings --- src/gui/settings.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 4c70b5f26..60d1b4d92 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -576,7 +576,7 @@ void FurnaceGUI::drawSettings() { float vol=fabs(sysVol); ImGui::PushID(i); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x-ImGui::CalcTextSize("Invert").x-ImGui::GetFrameHeightWithSpacing()*2.0-ImGui::GetStyle().ItemSpacing.x); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x-ImGui::CalcTextSize("Invert").x-ImGui::GetFrameHeightWithSpacing()*2.0-ImGui::GetStyle().ItemSpacing.x*2.0); if (ImGui::BeginCombo("##System",getSystemName(sysID))) { for (int j=0; availableSystems[j]; j++) { if (ImGui::Selectable(getSystemName((DivSystem)availableSystems[j]),sysID==availableSystems[j])) { @@ -595,11 +595,13 @@ void FurnaceGUI::drawSettings() { } ImGui::SameLine(); //ImGui::BeginDisabled(settings.initialSys.size()<=4); + pushDestColor(); if (ImGui::Button(ICON_FA_MINUS "##InitSysRemove")) { doRemove=i; } + popDestColor(); //ImGui::EndDisabled(); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x-ImGui::GetFrameHeightWithSpacing()*2.0-ImGui::GetStyle().ItemSpacing.x*2.0); if (CWSliderFloat("Volume",&vol,0.0f,3.0f)) { if (doInvert) { if (vol<0.0001) vol=0.0001; @@ -609,13 +611,13 @@ void FurnaceGUI::drawSettings() { sysVol=doInvert?-vol:vol; settings.initialSys.set(fmt::sprintf("vol%d",i),(float)sysVol); } rightClickable - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x-ImGui::GetFrameHeightWithSpacing()*2.0-ImGui::GetStyle().ItemSpacing.x*2.0); if (CWSliderFloat("Panning",&sysPan,-1.0f,1.0f)) { if (sysPan<-1.0f) sysPan=-1.0f; if (sysPan>1.0f) sysPan=1.0f; settings.initialSys.set(fmt::sprintf("pan%d",i),(float)sysPan); } rightClickable - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x-ImGui::GetFrameHeightWithSpacing()*2.0-ImGui::GetStyle().ItemSpacing.x*2.0); if (CWSliderFloat("Front/Rear",&sysPanFR,-1.0f,1.0f)) { if (sysPanFR<-1.0f) sysPanFR=-1.0f; if (sysPanFR>1.0f) sysPanFR=1.0f; From b993d4b58dc42a4dcb510239adc5b1c879cea672 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 14:01:39 +0400 Subject: [PATCH 03/18] improve audio settings --- src/gui/settings.cpp | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 60d1b4d92..2b34596fb 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -720,10 +720,15 @@ void FurnaceGUI::drawSettings() { CONFIG_SECTION("Audio") { // SUBSECTION OUTPUT CONFIG_SUBSECTION("Output"); + if (ImGui::BeginTable("##Output",2)) { + ImGui::TableSetupColumn("##Label",ImGuiTableColumnFlags_WidthFixed); + ImGui::TableSetupColumn("##Combo",ImGuiTableColumnFlags_WidthStretch); #ifdef HAVE_JACK + ImGui::TableNextRow(); + ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); ImGui::Text("Backend"); - ImGui::SameLine(); + ImGui::TableNextColumn(); int prevAudioEngine=settings.audioEngine; if (ImGui::Combo("##Backend",&settings.audioEngine,audioBackends,2)) { if (settings.audioEngine!=prevAudioEngine) { @@ -732,10 +737,12 @@ void FurnaceGUI::drawSettings() { } #endif + ImGui::TableNextRow(); + ImGui::TableNextColumn(); if (settings.audioEngine==DIV_AUDIO_SDL) { ImGui::AlignTextToFramePadding(); ImGui::Text("Driver"); - ImGui::SameLine(); + ImGui::TableNextColumn(); if (ImGui::BeginCombo("##SDLADriver",settings.sdlAudioDriver.empty()?"Automatic":settings.sdlAudioDriver.c_str())) { if (ImGui::Selectable("Automatic",settings.sdlAudioDriver.empty())) { settings.sdlAudioDriver=""; @@ -752,9 +759,11 @@ void FurnaceGUI::drawSettings() { } } + ImGui::TableNextRow(); + ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); ImGui::Text("Device"); - ImGui::SameLine(); + ImGui::TableNextColumn(); String audioDevName=settings.audioDevice.empty()?"":settings.audioDevice; if (ImGui::BeginCombo("##AudioDevice",audioDevName.c_str())) { if (ImGui::Selectable("",settings.audioDevice.empty())) { @@ -768,9 +777,11 @@ void FurnaceGUI::drawSettings() { ImGui::EndCombo(); } + ImGui::TableNextRow(); + ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); ImGui::Text("Sample rate"); - ImGui::SameLine(); + ImGui::TableNextColumn(); String sr=fmt::sprintf("%d",settings.audioRate); if (ImGui::BeginCombo("##SampleRate",sr.c_str())) { SAMPLE_RATE_SELECTABLE(8000); @@ -785,9 +796,12 @@ void FurnaceGUI::drawSettings() { ImGui::EndCombo(); } + ImGui::TableNextRow(); + ImGui::TableNextColumn(); if (isProAudio[settings.audioEngine]) { + ImGui::AlignTextToFramePadding(); ImGui::Text("Outputs"); - ImGui::SameLine(); + ImGui::TableNextColumn(); if (ImGui::InputInt("##AudioChansI",&settings.audioChans,1,1)) { if (settings.audioChans<1) settings.audioChans=1; if (settings.audioChans>16) settings.audioChans=16; @@ -795,7 +809,7 @@ void FurnaceGUI::drawSettings() { } else { ImGui::AlignTextToFramePadding(); ImGui::Text("Channels"); - ImGui::SameLine(); + ImGui::TableNextColumn(); String chStr=(settings.audioChans<1 || settings.audioChans>8)?"What?":nonProAudioOuts[settings.audioChans-1]; if (ImGui::BeginCombo("##AudioChans",chStr.c_str())) { CHANS_SELECTABLE(1); @@ -807,9 +821,11 @@ void FurnaceGUI::drawSettings() { } } + ImGui::TableNextRow(); + ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); ImGui::Text("Buffer size"); - ImGui::SameLine(); + ImGui::TableNextColumn(); String bs=fmt::sprintf("%d (latency: ~%.1fms)",settings.audioBufSize,2000.0*(double)settings.audioBufSize/(double)MAX(1,settings.audioRate)); if (ImGui::BeginCombo("##BufferSize",bs.c_str())) { BUFFER_SIZE_SELECTABLE(64); @@ -820,6 +836,8 @@ void FurnaceGUI::drawSettings() { BUFFER_SIZE_SELECTABLE(2048); ImGui::EndCombo(); } + ImGui::EndTable(); + } bool lowLatencyB=settings.lowLatency; if (ImGui::Checkbox("Low-latency mode (experimental!)",&lowLatencyB)) { From eef3dacc78ce6c6cb39a9f0051944ad66a54ddf7 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 14:03:34 +0400 Subject: [PATCH 04/18] indent --- src/gui/settings.cpp | 198 +++++++++++++++++++++---------------------- 1 file changed, 99 insertions(+), 99 deletions(-) diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 2b34596fb..7eb4d018c 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -724,119 +724,119 @@ void FurnaceGUI::drawSettings() { ImGui::TableSetupColumn("##Label",ImGuiTableColumnFlags_WidthFixed); ImGui::TableSetupColumn("##Combo",ImGuiTableColumnFlags_WidthStretch); #ifdef HAVE_JACK - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::AlignTextToFramePadding(); - ImGui::Text("Backend"); - ImGui::TableNextColumn(); - int prevAudioEngine=settings.audioEngine; - if (ImGui::Combo("##Backend",&settings.audioEngine,audioBackends,2)) { - if (settings.audioEngine!=prevAudioEngine) { - if (!isProAudio[settings.audioEngine]) settings.audioChans=2; + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::AlignTextToFramePadding(); + ImGui::Text("Backend"); + ImGui::TableNextColumn(); + int prevAudioEngine=settings.audioEngine; + if (ImGui::Combo("##Backend",&settings.audioEngine,audioBackends,2)) { + if (settings.audioEngine!=prevAudioEngine) { + if (!isProAudio[settings.audioEngine]) settings.audioChans=2; + } } - } #endif - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - if (settings.audioEngine==DIV_AUDIO_SDL) { - ImGui::AlignTextToFramePadding(); - ImGui::Text("Driver"); + ImGui::TableNextRow(); ImGui::TableNextColumn(); - if (ImGui::BeginCombo("##SDLADriver",settings.sdlAudioDriver.empty()?"Automatic":settings.sdlAudioDriver.c_str())) { - if (ImGui::Selectable("Automatic",settings.sdlAudioDriver.empty())) { - settings.sdlAudioDriver=""; + if (settings.audioEngine==DIV_AUDIO_SDL) { + ImGui::AlignTextToFramePadding(); + ImGui::Text("Driver"); + ImGui::TableNextColumn(); + if (ImGui::BeginCombo("##SDLADriver",settings.sdlAudioDriver.empty()?"Automatic":settings.sdlAudioDriver.c_str())) { + if (ImGui::Selectable("Automatic",settings.sdlAudioDriver.empty())) { + settings.sdlAudioDriver=""; + } + for (String& i: availAudioDrivers) { + if (ImGui::Selectable(i.c_str(),i==settings.sdlAudioDriver)) { + settings.sdlAudioDriver=i; + } + } + ImGui::EndCombo(); } - for (String& i: availAudioDrivers) { - if (ImGui::Selectable(i.c_str(),i==settings.sdlAudioDriver)) { - settings.sdlAudioDriver=i; + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("you may need to restart Furnace for this setting to take effect."); + } + } + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::AlignTextToFramePadding(); + ImGui::Text("Device"); + ImGui::TableNextColumn(); + String audioDevName=settings.audioDevice.empty()?"":settings.audioDevice; + if (ImGui::BeginCombo("##AudioDevice",audioDevName.c_str())) { + if (ImGui::Selectable("",settings.audioDevice.empty())) { + settings.audioDevice=""; + } + for (String& i: e->getAudioDevices()) { + if (ImGui::Selectable(i.c_str(),i==settings.audioDevice)) { + settings.audioDevice=i; } } ImGui::EndCombo(); } - if (ImGui::IsItemHovered()) { - ImGui::SetTooltip("you may need to restart Furnace for this setting to take effect."); - } - } - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::AlignTextToFramePadding(); - ImGui::Text("Device"); - ImGui::TableNextColumn(); - String audioDevName=settings.audioDevice.empty()?"":settings.audioDevice; - if (ImGui::BeginCombo("##AudioDevice",audioDevName.c_str())) { - if (ImGui::Selectable("",settings.audioDevice.empty())) { - settings.audioDevice=""; - } - for (String& i: e->getAudioDevices()) { - if (ImGui::Selectable(i.c_str(),i==settings.audioDevice)) { - settings.audioDevice=i; - } - } - ImGui::EndCombo(); - } - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::AlignTextToFramePadding(); - ImGui::Text("Sample rate"); - ImGui::TableNextColumn(); - String sr=fmt::sprintf("%d",settings.audioRate); - if (ImGui::BeginCombo("##SampleRate",sr.c_str())) { - SAMPLE_RATE_SELECTABLE(8000); - SAMPLE_RATE_SELECTABLE(16000); - SAMPLE_RATE_SELECTABLE(22050); - SAMPLE_RATE_SELECTABLE(32000); - SAMPLE_RATE_SELECTABLE(44100); - SAMPLE_RATE_SELECTABLE(48000); - SAMPLE_RATE_SELECTABLE(88200); - SAMPLE_RATE_SELECTABLE(96000); - SAMPLE_RATE_SELECTABLE(192000); - ImGui::EndCombo(); - } - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - if (isProAudio[settings.audioEngine]) { - ImGui::AlignTextToFramePadding(); - ImGui::Text("Outputs"); + + ImGui::TableNextRow(); ImGui::TableNextColumn(); - if (ImGui::InputInt("##AudioChansI",&settings.audioChans,1,1)) { - if (settings.audioChans<1) settings.audioChans=1; - if (settings.audioChans>16) settings.audioChans=16; - } - } else { ImGui::AlignTextToFramePadding(); - ImGui::Text("Channels"); + ImGui::Text("Sample rate"); ImGui::TableNextColumn(); - String chStr=(settings.audioChans<1 || settings.audioChans>8)?"What?":nonProAudioOuts[settings.audioChans-1]; - if (ImGui::BeginCombo("##AudioChans",chStr.c_str())) { - CHANS_SELECTABLE(1); - CHANS_SELECTABLE(2); - CHANS_SELECTABLE(4); - CHANS_SELECTABLE(6); - CHANS_SELECTABLE(8); + String sr=fmt::sprintf("%d",settings.audioRate); + if (ImGui::BeginCombo("##SampleRate",sr.c_str())) { + SAMPLE_RATE_SELECTABLE(8000); + SAMPLE_RATE_SELECTABLE(16000); + SAMPLE_RATE_SELECTABLE(22050); + SAMPLE_RATE_SELECTABLE(32000); + SAMPLE_RATE_SELECTABLE(44100); + SAMPLE_RATE_SELECTABLE(48000); + SAMPLE_RATE_SELECTABLE(88200); + SAMPLE_RATE_SELECTABLE(96000); + SAMPLE_RATE_SELECTABLE(192000); ImGui::EndCombo(); } - } - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGui::AlignTextToFramePadding(); - ImGui::Text("Buffer size"); - ImGui::TableNextColumn(); - String bs=fmt::sprintf("%d (latency: ~%.1fms)",settings.audioBufSize,2000.0*(double)settings.audioBufSize/(double)MAX(1,settings.audioRate)); - if (ImGui::BeginCombo("##BufferSize",bs.c_str())) { - BUFFER_SIZE_SELECTABLE(64); - BUFFER_SIZE_SELECTABLE(128); - BUFFER_SIZE_SELECTABLE(256); - BUFFER_SIZE_SELECTABLE(512); - BUFFER_SIZE_SELECTABLE(1024); - BUFFER_SIZE_SELECTABLE(2048); - ImGui::EndCombo(); - } - ImGui::EndTable(); + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + if (isProAudio[settings.audioEngine]) { + ImGui::AlignTextToFramePadding(); + ImGui::Text("Outputs"); + ImGui::TableNextColumn(); + if (ImGui::InputInt("##AudioChansI",&settings.audioChans,1,1)) { + if (settings.audioChans<1) settings.audioChans=1; + if (settings.audioChans>16) settings.audioChans=16; + } + } else { + ImGui::AlignTextToFramePadding(); + ImGui::Text("Channels"); + ImGui::TableNextColumn(); + String chStr=(settings.audioChans<1 || settings.audioChans>8)?"What?":nonProAudioOuts[settings.audioChans-1]; + if (ImGui::BeginCombo("##AudioChans",chStr.c_str())) { + CHANS_SELECTABLE(1); + CHANS_SELECTABLE(2); + CHANS_SELECTABLE(4); + CHANS_SELECTABLE(6); + CHANS_SELECTABLE(8); + ImGui::EndCombo(); + } + } + + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::AlignTextToFramePadding(); + ImGui::Text("Buffer size"); + ImGui::TableNextColumn(); + String bs=fmt::sprintf("%d (latency: ~%.1fms)",settings.audioBufSize,2000.0*(double)settings.audioBufSize/(double)MAX(1,settings.audioRate)); + if (ImGui::BeginCombo("##BufferSize",bs.c_str())) { + BUFFER_SIZE_SELECTABLE(64); + BUFFER_SIZE_SELECTABLE(128); + BUFFER_SIZE_SELECTABLE(256); + BUFFER_SIZE_SELECTABLE(512); + BUFFER_SIZE_SELECTABLE(1024); + BUFFER_SIZE_SELECTABLE(2048); + ImGui::EndCombo(); + } + ImGui::EndTable(); } bool lowLatencyB=settings.lowLatency; From 6250dd970f1378a80c80605571eef934ebc47de5 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 14:20:53 +0400 Subject: [PATCH 05/18] improve font settings --- src/gui/settings.cpp | 107 ++++++++++++++++++++++--------------------- 1 file changed, 56 insertions(+), 51 deletions(-) diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 7eb4d018c..8b09ac96e 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -758,7 +758,7 @@ void FurnaceGUI::drawSettings() { ImGui::SetTooltip("you may need to restart Furnace for this setting to take effect."); } } - + ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); @@ -776,7 +776,7 @@ void FurnaceGUI::drawSettings() { } ImGui::EndCombo(); } - + ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); @@ -795,7 +795,7 @@ void FurnaceGUI::drawSettings() { SAMPLE_RATE_SELECTABLE(192000); ImGui::EndCombo(); } - + ImGui::TableNextRow(); ImGui::TableNextColumn(); if (isProAudio[settings.audioEngine]) { @@ -820,7 +820,7 @@ void FurnaceGUI::drawSettings() { ImGui::EndCombo(); } } - + ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); @@ -2034,57 +2034,62 @@ void FurnaceGUI::drawSettings() { // SUBSECTION TEXT CONFIG_SUBSECTION("Text"); - ImGui::AlignTextToFramePadding(); - ImGui::Text("Main font"); - ImGui::SameLine(); - ImGui::Combo("##MainFont",&settings.mainFont,mainFonts,7); - ImGui::Indent(); - if (settings.mainFont==6) { - ImGui::InputText("##MainFontPath",&settings.mainFontPath); - ImGui::SameLine(); - if (ImGui::Button(ICON_FA_FOLDER "##MainFontLoad")) { - openFileDialog(GUI_FILE_LOAD_MAIN_FONT); + if (ImGui::BeginTable("##Text",2)) { + ImGui::TableSetupColumn("##Label",ImGuiTableColumnFlags_WidthFixed); + ImGui::TableSetupColumn("##Combos",ImGuiTableColumnFlags_WidthStretch); + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::AlignTextToFramePadding(); + ImGui::Text("Main font"); + ImGui::TableNextColumn(); + ImGui::Combo("##MainFont",&settings.mainFont,mainFonts,7); + if (settings.mainFont==6) { + ImGui::InputText("##MainFontPath",&settings.mainFontPath); + ImGui::SameLine(); + if (ImGui::Button(ICON_FA_FOLDER "##MainFontLoad")) { + openFileDialog(GUI_FILE_LOAD_MAIN_FONT); + } } - } - if (ImGui::InputInt("Size##MainFontSize",&settings.mainFontSize)) { - if (settings.mainFontSize<3) settings.mainFontSize=3; - if (settings.mainFontSize>96) settings.mainFontSize=96; - } - ImGui::Unindent(); - ImGui::AlignTextToFramePadding(); - ImGui::Text("Header font"); - ImGui::SameLine(); - ImGui::Combo("##HeadFont",&settings.headFont,headFonts,7); - ImGui::Indent(); - if (settings.headFont==6) { - ImGui::InputText("##HeadFontPath",&settings.headFontPath); - ImGui::SameLine(); - if (ImGui::Button(ICON_FA_FOLDER "##HeadFontLoad")) { - openFileDialog(GUI_FILE_LOAD_HEAD_FONT); + if (ImGui::InputInt("Size##MainFontSize",&settings.mainFontSize)) { + if (settings.mainFontSize<3) settings.mainFontSize=3; + if (settings.mainFontSize>96) settings.mainFontSize=96; } - } - if (ImGui::InputInt("Size##HeadFontSize",&settings.headFontSize)) { - if (settings.headFontSize<3) settings.headFontSize=3; - if (settings.headFontSize>96) settings.headFontSize=96; - } - ImGui::Unindent(); - ImGui::AlignTextToFramePadding(); - ImGui::Text("Pattern font"); - ImGui::SameLine(); - ImGui::Combo("##PatFont",&settings.patFont,patFonts,7); - ImGui::Indent(); - if (settings.patFont==6) { - ImGui::InputText("##PatFontPath",&settings.patFontPath); - ImGui::SameLine(); - if (ImGui::Button(ICON_FA_FOLDER "##PatFontLoad")) { - openFileDialog(GUI_FILE_LOAD_PAT_FONT); + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::AlignTextToFramePadding(); + ImGui::Text("Header font"); + ImGui::TableNextColumn(); + ImGui::Combo("##HeadFont",&settings.headFont,headFonts,7); + if (settings.headFont==6) { + ImGui::InputText("##HeadFontPath",&settings.headFontPath); + ImGui::SameLine(); + if (ImGui::Button(ICON_FA_FOLDER "##HeadFontLoad")) { + openFileDialog(GUI_FILE_LOAD_HEAD_FONT); + } } + if (ImGui::InputInt("Size##HeadFontSize",&settings.headFontSize)) { + if (settings.headFontSize<3) settings.headFontSize=3; + if (settings.headFontSize>96) settings.headFontSize=96; + } + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGui::AlignTextToFramePadding(); + ImGui::Text("Pattern font"); + ImGui::TableNextColumn(); + ImGui::Combo("##PatFont",&settings.patFont,patFonts,7); + if (settings.patFont==6) { + ImGui::InputText("##PatFontPath",&settings.patFontPath); + ImGui::SameLine(); + if (ImGui::Button(ICON_FA_FOLDER "##PatFontLoad")) { + openFileDialog(GUI_FILE_LOAD_PAT_FONT); + } + } + if (ImGui::InputInt("Size##PatFontSize",&settings.patFontSize)) { + if (settings.patFontSize<3) settings.patFontSize=3; + if (settings.patFontSize>96) settings.patFontSize=96; + } + ImGui::EndTable(); } - if (ImGui::InputInt("Size##PatFontSize",&settings.patFontSize)) { - if (settings.patFontSize<3) settings.patFontSize=3; - if (settings.patFontSize>96) settings.patFontSize=96; - } - ImGui::Unindent(); bool loadJapaneseB=settings.loadJapanese; if (ImGui::Checkbox("Display Japanese characters",&loadJapaneseB)) { From ccdd5693c6ea6f35dbc5bb0208be05afc8d827ee Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 15:16:38 +0400 Subject: [PATCH 06/18] additive hint --- src/gui/gui.h | 1 + src/gui/guiConst.cpp | 1 + src/gui/settings.cpp | 1 + 3 files changed, 3 insertions(+) diff --git a/src/gui/gui.h b/src/gui/gui.h index 9f6b04b25..915c306de 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -130,6 +130,7 @@ enum FurnaceGUIColors { GUI_COLOR_TOGGLE_ON, GUI_COLOR_EDITING, GUI_COLOR_SONG_LOOP, + GUI_COLOR_ADDITIVE, GUI_COLOR_DESTRUCTIVE, GUI_COLOR_WARNING, GUI_COLOR_ERROR, diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index bc9f5ff77..30e03aab1 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -810,6 +810,7 @@ const FurnaceGUIColorDef guiColors[GUI_COLOR_MAX]={ D(GUI_COLOR_TOGGLE_ON,"",ImVec4(0.2f,0.6f,0.2f,1.0f)), D(GUI_COLOR_EDITING,"",ImVec4(0.2f,0.1f,0.1f,1.0f)), D(GUI_COLOR_SONG_LOOP,"",ImVec4(0.3f,0.5f,0.8f,0.4f)), + D(GUI_COLOR_ADDITIVE,"",ImVec4(0.12f,0.58f,1.0f,1.0f)), D(GUI_COLOR_DESTRUCTIVE,"",ImVec4(1.0f,0.2f,0.2f,1.0f)), D(GUI_COLOR_WARNING,"",ImVec4(0.98f,0.98f,0.06f,1.0f)), D(GUI_COLOR_ERROR,"",ImVec4(0.98f,0.06f,0.11f,1.0f)), diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 8b09ac96e..8ed4dcf66 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -2673,6 +2673,7 @@ void FurnaceGUI::drawSettings() { UI_COLOR_CONFIG(GUI_COLOR_EDITING,"Editing"); UI_COLOR_CONFIG(GUI_COLOR_SONG_LOOP,"Song loop"); UI_COLOR_CONFIG(GUI_COLOR_PLAYBACK_STAT,"Playback status"); + UI_COLOR_CONFIG(GUI_COLOR_ADDITIVE,"Additive hint"); UI_COLOR_CONFIG(GUI_COLOR_DESTRUCTIVE,"Destructive hint"); UI_COLOR_CONFIG(GUI_COLOR_WARNING,"Warning hint"); UI_COLOR_CONFIG(GUI_COLOR_ERROR,"Error hint"); From f0bcb1c06a3004a133c44d4b761a4b4ada280283 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 15:24:32 +0400 Subject: [PATCH 07/18] add color push/pop --- src/gui/gui.h | 2 ++ src/gui/settings.cpp | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/src/gui/gui.h b/src/gui/gui.h index 915c306de..74f55a6db 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -2181,6 +2181,8 @@ class FurnaceGUI { void pushDestColor(); void popDestColor(); + void pushAddColor(); + void popAddColor(); void pushWarningColor(bool warnCond, bool errorCond=false); void popWarningColor(); diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 8ed4dcf66..9adfe7b61 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -3992,6 +3992,14 @@ void FurnaceGUI::popDestColor() { popAccentColors(); } +void FurnaceGUI::pushAddColor() { + pushAccentColors(uiColors[GUI_COLOR_ADDITIVE],uiColors[GUI_COLOR_ADDITIVE],uiColors[GUI_COLOR_ADDITIVE],ImVec4(0.0f,0.0f,0.0f,0.0f)); +} + +void FurnaceGUI::popAddColor() { + popAccentColors(); +} + void FurnaceGUI::pushWarningColor(bool warnCond, bool errorCond) { if (warnColorPushed) { logE("warnColorPushed"); From 3c38a79801813b7d61c87e927f480dddfbf5d06b Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 15:37:28 +0400 Subject: [PATCH 08/18] more pushdestcolor --- src/gui/dataList.cpp | 6 +++--- src/gui/orders.cpp | 2 ++ src/gui/sysManager.cpp | 4 +++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/gui/dataList.cpp b/src/gui/dataList.cpp index 1506c5ff3..86de5a037 100644 --- a/src/gui/dataList.cpp +++ b/src/gui/dataList.cpp @@ -504,7 +504,7 @@ void FurnaceGUI::drawInsList(bool asChild) { } ImGui::SameLine(); pushDestColor(); - if (ImGui::Button(ICON_FA_TIMES "##InsDelete")) { + if (ImGui::Button(ICON_FA_MINUS "##InsDelete")) { if (settings.unifiedDataView) { switch (lastAssetType) { case 0: @@ -749,7 +749,7 @@ void FurnaceGUI::drawWaveList(bool asChild) { } ImGui::SameLine(); pushDestColor(); - if (ImGui::Button(ICON_FA_TIMES "##WaveDelete")) { + if (ImGui::Button(ICON_FA_MINUS "##WaveDelete")) { doAction(GUI_ACTION_WAVE_LIST_DELETE); } popDestColor(); @@ -901,7 +901,7 @@ void FurnaceGUI::drawSampleList(bool asChild) { } ImGui::SameLine(); pushDestColor(); - if (ImGui::Button(ICON_FA_TIMES "##SampleDelete")) { + if (ImGui::Button(ICON_FA_MINUS "##SampleDelete")) { doAction(GUI_ACTION_SAMPLE_LIST_DELETE); } popDestColor(); diff --git a/src/gui/orders.cpp b/src/gui/orders.cpp index dad280d46..0bce014aa 100644 --- a/src/gui/orders.cpp +++ b/src/gui/orders.cpp @@ -115,10 +115,12 @@ void FurnaceGUI::drawOrderButtons() { } NEXT_BUTTON; + pushDestColor(); if (ImGui::Button(ICON_FA_MINUS)) { handleUnimportant // remove this order row doAction(GUI_ACTION_ORDERS_REMOVE); } + popDestColor(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Remove order"); } diff --git a/src/gui/sysManager.cpp b/src/gui/sysManager.cpp index 7a214beca..24dfdbfdd 100644 --- a/src/gui/sysManager.cpp +++ b/src/gui/sysManager.cpp @@ -102,10 +102,12 @@ void FurnaceGUI::drawSysManager() { } ImGui::SameLine(); ImGui::BeginDisabled(e->song.systemLen<=1); - if (ImGui::Button(ICON_FA_TIMES "##SysRemove")) { + pushDestColor(); + if (ImGui::Button(ICON_FA_MINUS "##SysRemove")) { sysToDelete=i; showWarning("Are you sure you want to remove this chip?",GUI_WARN_SYSTEM_DEL); } + popDestColor(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Remove"); } From 9e405e86fa781c27d79bd982eea3f7c2c31922cf Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 15:49:06 +0400 Subject: [PATCH 09/18] improve find/replace --- src/gui/findReplace.cpp | 15 ++++++++++++++- src/gui/guiConst.cpp | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/gui/findReplace.cpp b/src/gui/findReplace.cpp index 60976d31c..0e313d0ab 100644 --- a/src/gui/findReplace.cpp +++ b/src/gui/findReplace.cpp @@ -811,20 +811,29 @@ void FurnaceGUI::drawFindReplace() { } ImGui::TableNextRow(); ImGui::TableNextColumn(); - if (ImGui::Button(ICON_FA_MINUS "##DelQuery")) { + pushDestColor(); + if (ImGui::Button(ICON_FA_TRASH "##DelQuery")) { eraseIndex=index; } + popDestColor(); + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("Delete query"); + } ImGui::TableNextColumn(); if (i.effectCount<8) { + pushAddColor(); if (ImGui::Button("Add effect")) { i.effectCount++; } + popAddColor(); } ImGui::TableNextColumn(); if (i.effectCount>0) { + pushDestColor(); if (ImGui::Button("Remove effect")) { i.effectCount--; } + popDestColor(); } ImGui::EndTable(); } @@ -1097,15 +1106,19 @@ void FurnaceGUI::drawFindReplace() { ImGui::TableNextColumn(); ImGui::TableNextColumn(); if (queryReplaceEffectCount<8) { + pushAddColor(); if (ImGui::Button("Add effect")) { queryReplaceEffectCount++; } + popAddColor(); } ImGui::TableNextColumn(); if (queryReplaceEffectCount>0) { + pushDestColor(); if (ImGui::Button("Remove effect")) { queryReplaceEffectCount--; } + popDestColor(); } ImGui::EndTable(); diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index 30e03aab1..65966bb7f 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -810,7 +810,7 @@ const FurnaceGUIColorDef guiColors[GUI_COLOR_MAX]={ D(GUI_COLOR_TOGGLE_ON,"",ImVec4(0.2f,0.6f,0.2f,1.0f)), D(GUI_COLOR_EDITING,"",ImVec4(0.2f,0.1f,0.1f,1.0f)), D(GUI_COLOR_SONG_LOOP,"",ImVec4(0.3f,0.5f,0.8f,0.4f)), - D(GUI_COLOR_ADDITIVE,"",ImVec4(0.12f,0.58f,1.0f,1.0f)), + D(GUI_COLOR_ADDITIVE,"",ImVec4(0.2f,1.0f,0.2f,1.0f)), D(GUI_COLOR_DESTRUCTIVE,"",ImVec4(1.0f,0.2f,0.2f,1.0f)), D(GUI_COLOR_WARNING,"",ImVec4(0.98f,0.98f,0.06f,1.0f)), D(GUI_COLOR_ERROR,"",ImVec4(0.98f,0.06f,0.11f,1.0f)), From 0dbe1b401fc4dbb2788b7a606c4716a14d32a80d Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 16:01:56 +0400 Subject: [PATCH 10/18] some pushaddcolor's and improve grooves --- src/gui/dataList.cpp | 4 ++++ src/gui/grooves.cpp | 13 +++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/gui/dataList.cpp b/src/gui/dataList.cpp index 86de5a037..b7269fb28 100644 --- a/src/gui/dataList.cpp +++ b/src/gui/dataList.cpp @@ -253,6 +253,7 @@ void FurnaceGUI::drawInsList(bool asChild) { } if (began) { if (settings.unifiedDataView) settings.horizontalDataView=0; + pushAddColor(); if (ImGui::Button(ICON_FA_PLUS "##InsAdd")) { if (settings.unifiedDataView) { switch (lastAssetType) { @@ -270,6 +271,7 @@ void FurnaceGUI::drawInsList(bool asChild) { doAction(GUI_ACTION_INS_LIST_ADD); } } + popAddColor(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Add"); } @@ -657,9 +659,11 @@ void FurnaceGUI::drawWaveList(bool asChild) { began=ImGui::Begin("Wavetables",&waveListOpen,globalWinFlags); } if (began) { + pushAddColor(); if (ImGui::Button(ICON_FA_PLUS "##WaveAdd")) { doAction(GUI_ACTION_WAVE_LIST_ADD); } + popAddColor(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Add"); } diff --git a/src/gui/grooves.cpp b/src/gui/grooves.cpp index 560a09e68..65ab6d016 100644 --- a/src/gui/grooves.cpp +++ b/src/gui/grooves.cpp @@ -47,13 +47,14 @@ void FurnaceGUI::drawGrooves() { ImGui::TableNextColumn(); ImGui::Text("pattern"); ImGui::TableNextColumn(); - ImGui::Text("remove"); + // ImGui::Text("remove"); removed because the text clips from the fixed width int index=0; for (DivGroovePattern& i: e->song.grooves) { ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::PushFont(patFont); + ImGui::AlignTextToFramePadding(); ImGui::Text("%.2X",index); ImGui::PopFont(); @@ -79,6 +80,7 @@ void FurnaceGUI::drawGrooves() { ImGui::SetKeyboardFocusHere(); } ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + ImGui::AlignTextToFramePadding(); if (ImGui::InputText(grooveStr.c_str(),&grooveListString)) { decodeMMLStr(grooveListString,intVersion,intVersionLen,ignoredLoop,1,255,ignoredRel); if (intVersionLen<1) { @@ -120,10 +122,15 @@ void FurnaceGUI::drawGrooves() { } ImGui::TableNextColumn(); - String grooveID=fmt::sprintf(ICON_FA_TIMES "##GRR%d",index); + pushDestColor(); + String grooveID=fmt::sprintf(ICON_FA_MINUS "##GRR%d",index); if (ImGui::Button(grooveID.c_str())) { delGroove=index; } + if (ImGui::IsItemHovered()) { + ImGui::SetTooltip("remove"); + } + popDestColor(); index++; } @@ -138,12 +145,14 @@ void FurnaceGUI::drawGrooves() { MARK_MODIFIED; } + pushAddColor(); if (ImGui::Button(ICON_FA_PLUS "##AddGroove")) { e->lockEngine([this]() { e->song.grooves.push_back(DivGroovePattern()); }); MARK_MODIFIED; } + popAddColor(); } if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) { curWindow=GUI_WINDOW_GROOVES; From 19f7376337a1108028a8eb855ad133a9de6a4c66 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 16:09:27 +0400 Subject: [PATCH 11/18] the rest of the add colors --- src/gui/insEdit.cpp | 6 +++++- src/gui/orders.cpp | 2 ++ src/gui/settings.cpp | 4 ++++ src/gui/subSongs.cpp | 2 ++ src/gui/sysManager.cpp | 2 ++ 5 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index 98d02e3a2..e7b9690ac 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -4333,18 +4333,21 @@ void FurnaceGUI::drawInsEdit() { MARK_MODIFIED; } ImGui::SameLine(); - if (ImGui::Button(ICON_FA_TIMES "##HWCmdDel")) { + pushDestColor(); + if (ImGui::Button(ICON_FA_MINUS "##HWCmdDel")) { for (int j=i; jgb.hwSeqLen-1; j++) { ins->gb.hwSeq[j].cmd=ins->gb.hwSeq[j+1].cmd; ins->gb.hwSeq[j].data=ins->gb.hwSeq[j+1].data; } ins->gb.hwSeqLen--; } + popDestColor(); ImGui::PopID(); } ImGui::EndTable(); } + pushAddColor(); if (ImGui::Button(ICON_FA_PLUS "##HWCmdAdd")) { if (ins->gb.hwSeqLen<255) { ins->gb.hwSeq[ins->gb.hwSeqLen].cmd=0; @@ -4352,6 +4355,7 @@ void FurnaceGUI::drawInsEdit() { ins->gb.hwSeqLen++; } } + popAddColor(); } ImGui::EndChild(); ImGui::EndDisabled(); diff --git a/src/gui/orders.cpp b/src/gui/orders.cpp index 0bce014aa..4162b0229 100644 --- a/src/gui/orders.cpp +++ b/src/gui/orders.cpp @@ -106,10 +106,12 @@ void FurnaceGUI::drawOrderButtons() { buttonColumns++; } + pushAddColor(); if (ImGui::Button(ICON_FA_PLUS)) { handleUnimportant // add order row (new) doAction(GUI_ACTION_ORDERS_ADD); } + popAddColor(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Add new order"); } diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 9adfe7b61..0b53f77e0 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -659,6 +659,7 @@ void FurnaceGUI::drawSettings() { settings.initialSys.remove(fmt::sprintf("flags%d",sysCount-1)); } + pushAddColor(); if (sysCount<32) if (ImGui::Button(ICON_FA_PLUS "##InitSysAdd")) { settings.initialSys.set(fmt::sprintf("id%d",sysCount),(int)e->systemToFileFur(DIV_SYSTEM_YM2612)); settings.initialSys.set(fmt::sprintf("vol%d",sysCount),1.0f); @@ -666,6 +667,7 @@ void FurnaceGUI::drawSettings() { settings.initialSys.set(fmt::sprintf("fr%d",sysCount),0.0f); settings.initialSys.set(fmt::sprintf("flags%d",sysCount),""); } + popAddColor(); ImGui::Text("When creating new song:"); ImGui::Indent(); @@ -978,9 +980,11 @@ void FurnaceGUI::drawSettings() { ImGui::AlignTextToFramePadding(); ImGui::Text("Actions:"); ImGui::SameLine(); + pushAddColor(); if (ImGui::Button(ICON_FA_PLUS "##AddAction")) { midiMap.binds.push_back(MIDIBind()); } + popAddColor(); ImGui::SameLine(); if (ImGui::Button(ICON_FA_EXTERNAL_LINK "##AddLearnAction")) { midiMap.binds.push_back(MIDIBind()); diff --git a/src/gui/subSongs.cpp b/src/gui/subSongs.cpp index 15b107ed0..86c606b68 100644 --- a/src/gui/subSongs.cpp +++ b/src/gui/subSongs.cpp @@ -70,6 +70,7 @@ void FurnaceGUI::drawSubSongs(bool asChild) { ImGui::EndCombo(); } ImGui::SameLine(); + pushAddColor(); if (ImGui::Button(ICON_FA_PLUS "##SubSongAdd")) { if (!e->addSubSong()) { showError("too many subsongs!"); @@ -88,6 +89,7 @@ void FurnaceGUI::drawSubSongs(bool asChild) { MARK_MODIFIED; } } + popAddColor(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Add"); } diff --git a/src/gui/sysManager.cpp b/src/gui/sysManager.cpp index 24dfdbfdd..6bbeea40d 100644 --- a/src/gui/sysManager.cpp +++ b/src/gui/sysManager.cpp @@ -118,6 +118,7 @@ void FurnaceGUI::drawSysManager() { ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::TableNextColumn(); + pushAddColor(); ImGui::Button(ICON_FA_PLUS "##SysAdd"); if (ImGui::BeginPopupContextItem("SysPickerA",ImGuiPopupFlags_MouseButtonLeft)) { DivSystem picked=systemPicker(); @@ -135,6 +136,7 @@ void FurnaceGUI::drawSysManager() { } ImGui::EndPopup(); } + popAddColor(); } ImGui::EndTable(); } From a7eb62a5d66a7af4cb02cd86f0af170dd649b715 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 16:15:40 +0400 Subject: [PATCH 12/18] add sample add add color --- src/gui/dataList.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gui/dataList.cpp b/src/gui/dataList.cpp index b7269fb28..e46070507 100644 --- a/src/gui/dataList.cpp +++ b/src/gui/dataList.cpp @@ -793,9 +793,11 @@ void FurnaceGUI::drawSampleList(bool asChild) { began=ImGui::Begin("Samples",&sampleListOpen,globalWinFlags); } if (began) { + pushAddColor(); if (ImGui::Button(ICON_FA_FILE "##SampleAdd")) { doAction(GUI_ACTION_SAMPLE_LIST_ADD); } + popAddColor(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Add"); } From 6fa746f04d00f7b44d76ee0ad1019929e500f334 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sat, 26 Aug 2023 16:30:17 +0400 Subject: [PATCH 13/18] uncolor grooves remove tooltip --- src/gui/grooves.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/grooves.cpp b/src/gui/grooves.cpp index 65ab6d016..4c739785f 100644 --- a/src/gui/grooves.cpp +++ b/src/gui/grooves.cpp @@ -127,10 +127,10 @@ void FurnaceGUI::drawGrooves() { if (ImGui::Button(grooveID.c_str())) { delGroove=index; } + popDestColor(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("remove"); } - popDestColor(); index++; } From fdd9b598a722d04ebda731a60ba7882221704f38 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sun, 27 Aug 2023 10:15:28 +0400 Subject: [PATCH 14/18] revert additive hint --- src/gui/dataList.cpp | 6 ------ src/gui/findReplace.cpp | 4 ---- src/gui/grooves.cpp | 2 -- src/gui/gui.h | 3 --- src/gui/guiConst.cpp | 1 - src/gui/insEdit.cpp | 2 -- src/gui/orders.cpp | 2 -- src/gui/settings.cpp | 13 ------------- src/gui/subSongs.cpp | 2 -- src/gui/sysManager.cpp | 2 -- 10 files changed, 37 deletions(-) diff --git a/src/gui/dataList.cpp b/src/gui/dataList.cpp index e46070507..86de5a037 100644 --- a/src/gui/dataList.cpp +++ b/src/gui/dataList.cpp @@ -253,7 +253,6 @@ void FurnaceGUI::drawInsList(bool asChild) { } if (began) { if (settings.unifiedDataView) settings.horizontalDataView=0; - pushAddColor(); if (ImGui::Button(ICON_FA_PLUS "##InsAdd")) { if (settings.unifiedDataView) { switch (lastAssetType) { @@ -271,7 +270,6 @@ void FurnaceGUI::drawInsList(bool asChild) { doAction(GUI_ACTION_INS_LIST_ADD); } } - popAddColor(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Add"); } @@ -659,11 +657,9 @@ void FurnaceGUI::drawWaveList(bool asChild) { began=ImGui::Begin("Wavetables",&waveListOpen,globalWinFlags); } if (began) { - pushAddColor(); if (ImGui::Button(ICON_FA_PLUS "##WaveAdd")) { doAction(GUI_ACTION_WAVE_LIST_ADD); } - popAddColor(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Add"); } @@ -793,11 +789,9 @@ void FurnaceGUI::drawSampleList(bool asChild) { began=ImGui::Begin("Samples",&sampleListOpen,globalWinFlags); } if (began) { - pushAddColor(); if (ImGui::Button(ICON_FA_FILE "##SampleAdd")) { doAction(GUI_ACTION_SAMPLE_LIST_ADD); } - popAddColor(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Add"); } diff --git a/src/gui/findReplace.cpp b/src/gui/findReplace.cpp index 0e313d0ab..b2dcc0c11 100644 --- a/src/gui/findReplace.cpp +++ b/src/gui/findReplace.cpp @@ -821,11 +821,9 @@ void FurnaceGUI::drawFindReplace() { } ImGui::TableNextColumn(); if (i.effectCount<8) { - pushAddColor(); if (ImGui::Button("Add effect")) { i.effectCount++; } - popAddColor(); } ImGui::TableNextColumn(); if (i.effectCount>0) { @@ -1106,11 +1104,9 @@ void FurnaceGUI::drawFindReplace() { ImGui::TableNextColumn(); ImGui::TableNextColumn(); if (queryReplaceEffectCount<8) { - pushAddColor(); if (ImGui::Button("Add effect")) { queryReplaceEffectCount++; } - popAddColor(); } ImGui::TableNextColumn(); if (queryReplaceEffectCount>0) { diff --git a/src/gui/grooves.cpp b/src/gui/grooves.cpp index 4c739785f..db709ce09 100644 --- a/src/gui/grooves.cpp +++ b/src/gui/grooves.cpp @@ -145,14 +145,12 @@ void FurnaceGUI::drawGrooves() { MARK_MODIFIED; } - pushAddColor(); if (ImGui::Button(ICON_FA_PLUS "##AddGroove")) { e->lockEngine([this]() { e->song.grooves.push_back(DivGroovePattern()); }); MARK_MODIFIED; } - popAddColor(); } if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) { curWindow=GUI_WINDOW_GROOVES; diff --git a/src/gui/gui.h b/src/gui/gui.h index 74f55a6db..9f6b04b25 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -130,7 +130,6 @@ enum FurnaceGUIColors { GUI_COLOR_TOGGLE_ON, GUI_COLOR_EDITING, GUI_COLOR_SONG_LOOP, - GUI_COLOR_ADDITIVE, GUI_COLOR_DESTRUCTIVE, GUI_COLOR_WARNING, GUI_COLOR_ERROR, @@ -2181,8 +2180,6 @@ class FurnaceGUI { void pushDestColor(); void popDestColor(); - void pushAddColor(); - void popAddColor(); void pushWarningColor(bool warnCond, bool errorCond=false); void popWarningColor(); diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index 65966bb7f..bc9f5ff77 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -810,7 +810,6 @@ const FurnaceGUIColorDef guiColors[GUI_COLOR_MAX]={ D(GUI_COLOR_TOGGLE_ON,"",ImVec4(0.2f,0.6f,0.2f,1.0f)), D(GUI_COLOR_EDITING,"",ImVec4(0.2f,0.1f,0.1f,1.0f)), D(GUI_COLOR_SONG_LOOP,"",ImVec4(0.3f,0.5f,0.8f,0.4f)), - D(GUI_COLOR_ADDITIVE,"",ImVec4(0.2f,1.0f,0.2f,1.0f)), D(GUI_COLOR_DESTRUCTIVE,"",ImVec4(1.0f,0.2f,0.2f,1.0f)), D(GUI_COLOR_WARNING,"",ImVec4(0.98f,0.98f,0.06f,1.0f)), D(GUI_COLOR_ERROR,"",ImVec4(0.98f,0.06f,0.11f,1.0f)), diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index e7b9690ac..f6066d686 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -4347,7 +4347,6 @@ void FurnaceGUI::drawInsEdit() { ImGui::EndTable(); } - pushAddColor(); if (ImGui::Button(ICON_FA_PLUS "##HWCmdAdd")) { if (ins->gb.hwSeqLen<255) { ins->gb.hwSeq[ins->gb.hwSeqLen].cmd=0; @@ -4355,7 +4354,6 @@ void FurnaceGUI::drawInsEdit() { ins->gb.hwSeqLen++; } } - popAddColor(); } ImGui::EndChild(); ImGui::EndDisabled(); diff --git a/src/gui/orders.cpp b/src/gui/orders.cpp index 4162b0229..0bce014aa 100644 --- a/src/gui/orders.cpp +++ b/src/gui/orders.cpp @@ -106,12 +106,10 @@ void FurnaceGUI::drawOrderButtons() { buttonColumns++; } - pushAddColor(); if (ImGui::Button(ICON_FA_PLUS)) { handleUnimportant // add order row (new) doAction(GUI_ACTION_ORDERS_ADD); } - popAddColor(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Add new order"); } diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 0b53f77e0..8b09ac96e 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -659,7 +659,6 @@ void FurnaceGUI::drawSettings() { settings.initialSys.remove(fmt::sprintf("flags%d",sysCount-1)); } - pushAddColor(); if (sysCount<32) if (ImGui::Button(ICON_FA_PLUS "##InitSysAdd")) { settings.initialSys.set(fmt::sprintf("id%d",sysCount),(int)e->systemToFileFur(DIV_SYSTEM_YM2612)); settings.initialSys.set(fmt::sprintf("vol%d",sysCount),1.0f); @@ -667,7 +666,6 @@ void FurnaceGUI::drawSettings() { settings.initialSys.set(fmt::sprintf("fr%d",sysCount),0.0f); settings.initialSys.set(fmt::sprintf("flags%d",sysCount),""); } - popAddColor(); ImGui::Text("When creating new song:"); ImGui::Indent(); @@ -980,11 +978,9 @@ void FurnaceGUI::drawSettings() { ImGui::AlignTextToFramePadding(); ImGui::Text("Actions:"); ImGui::SameLine(); - pushAddColor(); if (ImGui::Button(ICON_FA_PLUS "##AddAction")) { midiMap.binds.push_back(MIDIBind()); } - popAddColor(); ImGui::SameLine(); if (ImGui::Button(ICON_FA_EXTERNAL_LINK "##AddLearnAction")) { midiMap.binds.push_back(MIDIBind()); @@ -2677,7 +2673,6 @@ void FurnaceGUI::drawSettings() { UI_COLOR_CONFIG(GUI_COLOR_EDITING,"Editing"); UI_COLOR_CONFIG(GUI_COLOR_SONG_LOOP,"Song loop"); UI_COLOR_CONFIG(GUI_COLOR_PLAYBACK_STAT,"Playback status"); - UI_COLOR_CONFIG(GUI_COLOR_ADDITIVE,"Additive hint"); UI_COLOR_CONFIG(GUI_COLOR_DESTRUCTIVE,"Destructive hint"); UI_COLOR_CONFIG(GUI_COLOR_WARNING,"Warning hint"); UI_COLOR_CONFIG(GUI_COLOR_ERROR,"Error hint"); @@ -3996,14 +3991,6 @@ void FurnaceGUI::popDestColor() { popAccentColors(); } -void FurnaceGUI::pushAddColor() { - pushAccentColors(uiColors[GUI_COLOR_ADDITIVE],uiColors[GUI_COLOR_ADDITIVE],uiColors[GUI_COLOR_ADDITIVE],ImVec4(0.0f,0.0f,0.0f,0.0f)); -} - -void FurnaceGUI::popAddColor() { - popAccentColors(); -} - void FurnaceGUI::pushWarningColor(bool warnCond, bool errorCond) { if (warnColorPushed) { logE("warnColorPushed"); diff --git a/src/gui/subSongs.cpp b/src/gui/subSongs.cpp index 86c606b68..15b107ed0 100644 --- a/src/gui/subSongs.cpp +++ b/src/gui/subSongs.cpp @@ -70,7 +70,6 @@ void FurnaceGUI::drawSubSongs(bool asChild) { ImGui::EndCombo(); } ImGui::SameLine(); - pushAddColor(); if (ImGui::Button(ICON_FA_PLUS "##SubSongAdd")) { if (!e->addSubSong()) { showError("too many subsongs!"); @@ -89,7 +88,6 @@ void FurnaceGUI::drawSubSongs(bool asChild) { MARK_MODIFIED; } } - popAddColor(); if (ImGui::IsItemHovered()) { ImGui::SetTooltip("Add"); } diff --git a/src/gui/sysManager.cpp b/src/gui/sysManager.cpp index 6bbeea40d..24dfdbfdd 100644 --- a/src/gui/sysManager.cpp +++ b/src/gui/sysManager.cpp @@ -118,7 +118,6 @@ void FurnaceGUI::drawSysManager() { ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::TableNextColumn(); - pushAddColor(); ImGui::Button(ICON_FA_PLUS "##SysAdd"); if (ImGui::BeginPopupContextItem("SysPickerA",ImGuiPopupFlags_MouseButtonLeft)) { DivSystem picked=systemPicker(); @@ -136,7 +135,6 @@ void FurnaceGUI::drawSysManager() { } ImGui::EndPopup(); } - popAddColor(); } ImGui::EndTable(); } From 4eda4aeb39ea3ab75f445f5c03bf7aa99319b54b Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sun, 27 Aug 2023 10:18:39 +0400 Subject: [PATCH 15/18] revert icon changes --- src/gui/dataList.cpp | 6 +++--- src/gui/findReplace.cpp | 2 +- src/gui/grooves.cpp | 2 +- src/gui/insEdit.cpp | 2 +- src/gui/sysManager.cpp | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/gui/dataList.cpp b/src/gui/dataList.cpp index 86de5a037..1506c5ff3 100644 --- a/src/gui/dataList.cpp +++ b/src/gui/dataList.cpp @@ -504,7 +504,7 @@ void FurnaceGUI::drawInsList(bool asChild) { } ImGui::SameLine(); pushDestColor(); - if (ImGui::Button(ICON_FA_MINUS "##InsDelete")) { + if (ImGui::Button(ICON_FA_TIMES "##InsDelete")) { if (settings.unifiedDataView) { switch (lastAssetType) { case 0: @@ -749,7 +749,7 @@ void FurnaceGUI::drawWaveList(bool asChild) { } ImGui::SameLine(); pushDestColor(); - if (ImGui::Button(ICON_FA_MINUS "##WaveDelete")) { + if (ImGui::Button(ICON_FA_TIMES "##WaveDelete")) { doAction(GUI_ACTION_WAVE_LIST_DELETE); } popDestColor(); @@ -901,7 +901,7 @@ void FurnaceGUI::drawSampleList(bool asChild) { } ImGui::SameLine(); pushDestColor(); - if (ImGui::Button(ICON_FA_MINUS "##SampleDelete")) { + if (ImGui::Button(ICON_FA_TIMES "##SampleDelete")) { doAction(GUI_ACTION_SAMPLE_LIST_DELETE); } popDestColor(); diff --git a/src/gui/findReplace.cpp b/src/gui/findReplace.cpp index b2dcc0c11..40e259eb3 100644 --- a/src/gui/findReplace.cpp +++ b/src/gui/findReplace.cpp @@ -812,7 +812,7 @@ void FurnaceGUI::drawFindReplace() { ImGui::TableNextRow(); ImGui::TableNextColumn(); pushDestColor(); - if (ImGui::Button(ICON_FA_TRASH "##DelQuery")) { + if (ImGui::Button(ICON_FA_MINUS "##DelQuery")) { eraseIndex=index; } popDestColor(); diff --git a/src/gui/grooves.cpp b/src/gui/grooves.cpp index db709ce09..eee8db56e 100644 --- a/src/gui/grooves.cpp +++ b/src/gui/grooves.cpp @@ -123,7 +123,7 @@ void FurnaceGUI::drawGrooves() { ImGui::TableNextColumn(); pushDestColor(); - String grooveID=fmt::sprintf(ICON_FA_MINUS "##GRR%d",index); + String grooveID=fmt::sprintf(ICON_FA_TIMES "##GRR%d",index); if (ImGui::Button(grooveID.c_str())) { delGroove=index; } diff --git a/src/gui/insEdit.cpp b/src/gui/insEdit.cpp index f6066d686..d00295895 100644 --- a/src/gui/insEdit.cpp +++ b/src/gui/insEdit.cpp @@ -4334,7 +4334,7 @@ void FurnaceGUI::drawInsEdit() { } ImGui::SameLine(); pushDestColor(); - if (ImGui::Button(ICON_FA_MINUS "##HWCmdDel")) { + if (ImGui::Button(ICON_FA_TIMES "##HWCmdDel")) { for (int j=i; jgb.hwSeqLen-1; j++) { ins->gb.hwSeq[j].cmd=ins->gb.hwSeq[j+1].cmd; ins->gb.hwSeq[j].data=ins->gb.hwSeq[j+1].data; diff --git a/src/gui/sysManager.cpp b/src/gui/sysManager.cpp index 24dfdbfdd..ad71e0e86 100644 --- a/src/gui/sysManager.cpp +++ b/src/gui/sysManager.cpp @@ -103,7 +103,7 @@ void FurnaceGUI::drawSysManager() { ImGui::SameLine(); ImGui::BeginDisabled(e->song.systemLen<=1); pushDestColor(); - if (ImGui::Button(ICON_FA_MINUS "##SysRemove")) { + if (ImGui::Button(ICON_FA_TIMES "##SysRemove")) { sysToDelete=i; showWarning("Are you sure you want to remove this chip?",GUI_WARN_SYSTEM_DEL); } From 65fbdba831252cee183dc37ac76361051d50e739 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Sun, 27 Aug 2023 12:49:53 +0400 Subject: [PATCH 16/18] wavetable list selectable sizing fix --- src/gui/dataList.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gui/dataList.cpp b/src/gui/dataList.cpp index 1506c5ff3..22c080c1b 100644 --- a/src/gui/dataList.cpp +++ b/src/gui/dataList.cpp @@ -172,10 +172,12 @@ void FurnaceGUI::waveListItem(int i, float* wavePreview, int dir, int asset) { wavePreview[i]=wave->data[i]; } if (wave->len>0) wavePreview[wave->len]=wave->data[wave->len-1]; - if (ImGui::Selectable(fmt::sprintf("%d##_WAVE%d\n",i,i).c_str(),curWave==i)) { + ImGui::PushStyleVar(ImGuiStyleVar_SelectableTextAlign, ImVec2(0,0.5f)); + if (ImGui::Selectable(fmt::sprintf(" %d##_WAVE%d\n",i,i).c_str(),curWave==i, 0, ImVec2(0,23*dpiScale))) {//i didnt think that the 0 would work, but it does curWave=i; lastAssetType=1; } + ImGui::PopStyleVar(); if (wantScrollList && curWave==i) ImGui::SetScrollHereY(); if (ImGui::IsItemHovered()) { if (ImGui::IsMouseDoubleClicked(ImGuiMouseButton_Left)) { From 06f259586192a4e044d93c9469a42b11d14a85a6 Mon Sep 17 00:00:00 2001 From: Eknous <61464512+Eknous-P@users.noreply.github.com> Date: Mon, 28 Aug 2023 10:00:32 +0400 Subject: [PATCH 17/18] formatting --- src/gui/dataList.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/dataList.cpp b/src/gui/dataList.cpp index 22c080c1b..de5f3515d 100644 --- a/src/gui/dataList.cpp +++ b/src/gui/dataList.cpp @@ -173,7 +173,7 @@ void FurnaceGUI::waveListItem(int i, float* wavePreview, int dir, int asset) { } if (wave->len>0) wavePreview[wave->len]=wave->data[wave->len-1]; ImGui::PushStyleVar(ImGuiStyleVar_SelectableTextAlign, ImVec2(0,0.5f)); - if (ImGui::Selectable(fmt::sprintf(" %d##_WAVE%d\n",i,i).c_str(),curWave==i, 0, ImVec2(0,23*dpiScale))) {//i didnt think that the 0 would work, but it does + if (ImGui::Selectable(fmt::sprintf(" %d##_WAVE%d\n",i,i).c_str(),curWave==i,0,ImVec2(0,23*dpiScale))) { // i didnt think that the 0 would work, but it does curWave=i; lastAssetType=1; } From cd2d60ac5823203075eb77f31541d8852e7340b2 Mon Sep 17 00:00:00 2001 From: Eknous-P Date: Mon, 28 Aug 2023 10:37:51 +0400 Subject: [PATCH 18/18] table stuff into if --- src/gui/settings.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index 109526adb..753abc3bb 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -738,9 +738,9 @@ void FurnaceGUI::drawSettings() { } #endif - ImGui::TableNextRow(); - ImGui::TableNextColumn(); if (settings.audioEngine==DIV_AUDIO_SDL) { + ImGui::TableNextRow(); + ImGui::TableNextColumn(); ImGui::AlignTextToFramePadding(); ImGui::Text("Driver"); ImGui::TableNextColumn();