furnace/src/gui/effectList.cpp

105 lines
4.0 KiB
C++
Raw Normal View History

2022-04-19 23:44:05 +00:00
#include "gui.h"
#include "guiConst.h"
#include <imgui.h>
void FurnaceGUI::drawEffectList() {
if (nextWindow==GUI_WINDOW_EFFECT_LIST) {
effectListOpen=true;
ImGui::SetNextWindowFocus();
nextWindow=GUI_WINDOW_NOTHING;
}
if (!effectListOpen) return;
ImGui::SetNextWindowSizeConstraints(ImVec2(60.0f*dpiScale,20.0f*dpiScale),ImVec2(canvasW,canvasH));
2022-05-19 21:35:00 +00:00
if (ImGui::Begin("Effect List",&effectListOpen,globalWinFlags)) {
2022-08-20 22:04:57 +00:00
ImGui::Text("Chip at cursor: %s",e->getSystemName(e->sysOfChan[cursor.xCoarse]));
2023-07-28 14:24:56 +00:00
if (ImGui::Button("Sort Effects")) ImGui::OpenPopup("effectSort");
if (ImGui::BeginPopup("effectSort")) {
2023-07-27 10:44:41 +00:00
ImGui::Checkbox("Pitch",&effectShowPitch);
ImGui::Checkbox("Song",&effectShowSong);
ImGui::Checkbox("Time",&effectShowTime);
ImGui::Checkbox("Speed",&effectShowSpeed);
ImGui::Checkbox("Panning",&effectShowPanning);
ImGui::Checkbox("Volume",&effectShowVolume);
ImGui::Checkbox("System (primary)",&effectShowSysPrimary);
ImGui::Checkbox("System (secondary)",&effectShowSysSecondary);
ImGui::Checkbox("Miscellaneous",&effectShowMisc);
if (ImGui::Button("All")) {
2023-07-26 14:53:39 +00:00
effectShowMisc = true;
effectShowPanning = true;
effectShowPitch = true;
effectShowVolume = true;
effectShowSong = true;
effectShowTime = true;
effectShowSpeed = true;
effectShowSysPrimary = true;
effectShowSysSecondary = true;
}
2023-07-27 10:44:41 +00:00
ImGui::SameLine();
if (ImGui::Button("None")) {
effectShowMisc = false;
effectShowPanning = false;
effectShowPitch = false;
effectShowVolume = false;
effectShowSong = false;
effectShowTime = false;
effectShowSpeed = false;
effectShowSysPrimary = false;
effectShowSysSecondary = false;
}
2023-07-28 14:24:56 +00:00
ImGui::EndPopup();
2023-07-26 14:41:17 +00:00
}
2022-04-19 23:44:05 +00:00
if (ImGui::BeginTable("effectList",2)) {
ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed);
ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch);
ImGui::TableNextRow(ImGuiTableRowFlags_Headers);
ImGui::TableNextColumn();
ImGui::Text("Name");
ImGui::TableNextColumn();
ImGui::Text("Description");
const char* prevName=NULL;
for (int i=0; i<256; i++) {
const char* name=e->getEffectDesc(i,cursor.xCoarse);
2023-07-26 14:41:17 +00:00
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;
}
2022-04-19 23:44:05 +00:00
if (name==prevName) {
continue;
}
prevName=name;
2023-07-26 14:41:17 +00:00
if (name!=NULL && effectShow) {
2022-04-19 23:44:05 +00:00
ImGui::TableNextRow();
ImGui::TableNextColumn();
ImGui::PushFont(patFont);
2022-04-30 04:41:14 +00:00
ImGui::PushStyleColor(ImGuiCol_Text,uiColors[fxColors[i]]);
2022-04-19 23:44:05 +00:00
ImGui::Text("%c%c%c%c",name[0],name[1],name[2],name[3]);
ImGui::PopStyleColor();
ImGui::PopFont();
ImGui::TableNextColumn();
if (strlen(name)>6) {
ImGui::TextWrapped("%s",&name[6]);
} else {
ImGui::Text("ERROR");
}
}
}
ImGui::EndTable();
}
}
if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_EFFECT_LIST;
ImGui::End();
2022-05-19 21:35:00 +00:00
}