diff --git a/src/gui/effectList.cpp b/src/gui/effectList.cpp index 604204b86..d192340de 100644 --- a/src/gui/effectList.cpp +++ b/src/gui/effectList.cpp @@ -12,6 +12,40 @@ void FurnaceGUI::drawEffectList() { ImGui::SetNextWindowSizeConstraints(ImVec2(60.0f*dpiScale,20.0f*dpiScale),ImVec2(canvasW,canvasH)); if (ImGui::Begin("Effect List",&effectListOpen,globalWinFlags)) { ImGui::Text("Chip at cursor: %s",e->getSystemName(e->sysOfChan[cursor.xCoarse])); + ImGui::Text("Sort Effects:"); + ImGui::Checkbox("All",&effectShowAll); + if (effectShowAll) { + effectShowMisc = true; + effectShowPanning = true; + effectShowPitch = true; + effectShowVolume = true; + effectShowSong = true; + effectShowTime = true; + effectShowSpeed = true; + effectShowSysPrimary = true; + effectShowSysSecondary = true; + } + ImGui::SameLine(); + ImGui::Checkbox("Pitch",&effectShowPitch); + ImGui::SameLine(); + ImGui::Checkbox("Song",&effectShowSong); + ImGui::SameLine(); + ImGui::Checkbox("Time",&effectShowTime); + ImGui::SameLine(); + ImGui::Checkbox("Speed",&effectShowSpeed); + ImGui::SameLine(); + ImGui::Checkbox("Panning",&effectShowPanning); + // ImGui::SameLine(); + ImGui::Checkbox("Volume",&effectShowVolume); + ImGui::SameLine(); + ImGui::Checkbox("System (primary)",&effectShowSysPrimary); + ImGui::SameLine(); + ImGui::Checkbox("System (secondary)",&effectShowSysSecondary); + ImGui::SameLine(); + ImGui::Checkbox("Miscellanious",&effectShowMisc); + + effectShowAll = effectShowMisc && effectShowPanning && effectShowPitch && effectShowVolume && effectShowSong && effectShowTime && effectShowSpeed && effectShowSysPrimary && effectShowSysSecondary; + if (ImGui::BeginTable("effectList",2)) { ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed); ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch); @@ -25,11 +59,25 @@ void FurnaceGUI::drawEffectList() { const char* prevName=NULL; for (int i=0; i<256; i++) { const char* name=e->getEffectDesc(i,cursor.xCoarse); + bool effectShow = true; + switch (fxColors[i]) { + case GUI_COLOR_PATTERN_EFFECT_MISC: effectShow = effectShowMisc; break; + case GUI_COLOR_PATTERN_EFFECT_SONG: effectShow = effectShowSong; break; + case GUI_COLOR_PATTERN_EFFECT_SPEED: effectShow = effectShowSpeed; break; + case GUI_COLOR_PATTERN_EFFECT_TIME: effectShow = effectShowTime; break; + case GUI_COLOR_PATTERN_EFFECT_PITCH: effectShow = effectShowPitch; break; + case GUI_COLOR_PATTERN_EFFECT_PANNING: effectShow = effectShowPanning; break; + case GUI_COLOR_PATTERN_EFFECT_VOLUME: effectShow = effectShowVolume; break; + case GUI_COLOR_PATTERN_EFFECT_SYS_PRIMARY: effectShow = effectShowSysPrimary; break; + case GUI_COLOR_PATTERN_EFFECT_SYS_SECONDARY: effectShow = effectShowSysSecondary; break; + default: effectShow = true; break; + } + // effectShow = effectShow && effectShowAll; if (name==prevName) { continue; } prevName=name; - if (name!=NULL) { + if (name!=NULL && effectShow) { ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::PushFont(patFont); diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index e84c3ecd2..088f1b8d7 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -7153,6 +7153,17 @@ FurnaceGUI::FurnaceGUI(): pianoView(PIANO_LAYOUT_STANDARD), pianoInputPadMode(PIANO_INPUT_PAD_DISABLE), #endif + //effect sorting + effectShowAll(true), + effectShowPitch(true), + effectShowVolume(true), + effectShowPanning(true), + effectShowSong(true), + effectShowTime(true), + effectShowSpeed(true), + effectShowSysPrimary(true), + effectShowSysSecondary(true), + effectShowMisc(true), hasACED(false), waveGenBaseShape(0), waveInterpolation(0), diff --git a/src/gui/gui.h b/src/gui/gui.h index b4a8a3e5b..e1cdd5d3d 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1729,6 +1729,9 @@ class FurnaceGUI { bool subSongsOpen, findOpen, spoilerOpen, patManagerOpen, sysManagerOpen, clockOpen, speedOpen; bool groovesOpen, introMonOpen; + //effect sorting + bool effectShowAll, effectShowPitch, effectShowVolume, effectShowPanning, effectShowSong, effectShowTime, effectShowSpeed, effectShowSysPrimary, effectShowSysSecondary, effectShowMisc; + bool basicMode, shortIntro; bool insListDir, waveListDir, sampleListDir;