From 94cf589e924f56d510a4101eb47e40f2416fc123 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 19 Aug 2022 04:41:45 -0500 Subject: [PATCH] GUI: prepare for chip manager window --- CMakeLists.txt | 1 + src/gui/doAction.cpp | 6 ++++++ src/gui/gui.cpp | 5 +++++ src/gui/gui.h | 5 ++++- src/gui/guiConst.cpp | 1 + src/gui/sysManager.cpp | 37 +++++++++++++++++++++++++++++++++++++ 6 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 src/gui/sysManager.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 6b6b7788..7c8d3939 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -552,6 +552,7 @@ src/gui/stats.cpp src/gui/subSongs.cpp src/gui/sysConf.cpp src/gui/sysEx.cpp +src/gui/sysManager.cpp src/gui/util.cpp src/gui/waveEdit.cpp src/gui/volMeter.cpp diff --git a/src/gui/doAction.cpp b/src/gui/doAction.cpp index 5c840df4..e0f0ca30 100644 --- a/src/gui/doAction.cpp +++ b/src/gui/doAction.cpp @@ -241,6 +241,9 @@ void FurnaceGUI::doAction(int what) { case GUI_ACTION_WINDOW_PAT_MANAGER: nextWindow=GUI_WINDOW_PAT_MANAGER; break; + case GUI_ACTION_WINDOW_SYS_MANAGER: + nextWindow=GUI_WINDOW_SYS_MANAGER; + break; case GUI_ACTION_WINDOW_REGISTER_VIEW: nextWindow=GUI_WINDOW_REGISTER_VIEW; break; @@ -328,6 +331,9 @@ void FurnaceGUI::doAction(int what) { case GUI_WINDOW_PAT_MANAGER: patManagerOpen=false; break; + case GUI_WINDOW_SYS_MANAGER: + sysManagerOpen=false; + break; case GUI_WINDOW_REGISTER_VIEW: regViewOpen=false; break; diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 4a6f3f39..9189618d 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -3108,6 +3108,7 @@ bool FurnaceGUI::loop() { if (ImGui::MenuItem("mixer",BIND_FOR(GUI_ACTION_WINDOW_MIXER),mixerOpen)) mixerOpen=!mixerOpen; if (ImGui::MenuItem("channels",BIND_FOR(GUI_ACTION_WINDOW_CHANNELS),channelsOpen)) channelsOpen=!channelsOpen; if (ImGui::MenuItem("pattern manager",BIND_FOR(GUI_ACTION_WINDOW_PAT_MANAGER),patManagerOpen)) patManagerOpen=!patManagerOpen; + if (ImGui::MenuItem("chip manager",BIND_FOR(GUI_ACTION_WINDOW_SYS_MANAGER),sysManagerOpen)) sysManagerOpen=!sysManagerOpen; if (ImGui::MenuItem("compatibility flags",BIND_FOR(GUI_ACTION_WINDOW_COMPAT_FLAGS),compatFlagsOpen)) compatFlagsOpen=!compatFlagsOpen; if (ImGui::MenuItem("song comments",BIND_FOR(GUI_ACTION_WINDOW_NOTES),notesOpen)) notesOpen=!notesOpen; ImGui::Separator(); @@ -3243,6 +3244,7 @@ bool FurnaceGUI::loop() { drawNotes(); drawChannels(); drawPatManager(); + drawSysManager(); drawRegView(); drawLog(); drawEffectList(); @@ -4364,6 +4366,7 @@ bool FurnaceGUI::init() { notesOpen=e->getConfBool("notesOpen",false); channelsOpen=e->getConfBool("channelsOpen",false); patManagerOpen=e->getConfBool("patManagerOpen",false); + sysManagerOpen=e->getConfBool("sysManagerOpen",false); regViewOpen=e->getConfBool("regViewOpen",false); logOpen=e->getConfBool("logOpen",false); effectListOpen=e->getConfBool("effectListOpen",false); @@ -4607,6 +4610,7 @@ bool FurnaceGUI::finish() { e->setConf("notesOpen",notesOpen); e->setConf("channelsOpen",channelsOpen); e->setConf("patManagerOpen",patManagerOpen); + e->setConf("sysManagerOpen",sysManagerOpen); e->setConf("regViewOpen",regViewOpen); e->setConf("logOpen",logOpen); e->setConf("effectListOpen",effectListOpen); @@ -4787,6 +4791,7 @@ FurnaceGUI::FurnaceGUI(): findOpen(false), spoilerOpen(false), patManagerOpen(false), + sysManagerOpen(false), selecting(false), selectingFull(false), dragging(false), diff --git a/src/gui/gui.h b/src/gui/gui.h index 3e340119..8a3548f2 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -250,6 +250,7 @@ enum FurnaceGUIWindows { GUI_WINDOW_NOTES, GUI_WINDOW_CHANNELS, GUI_WINDOW_PAT_MANAGER, + GUI_WINDOW_SYS_MANAGER, GUI_WINDOW_REGISTER_VIEW, GUI_WINDOW_LOG, GUI_WINDOW_EFFECT_LIST, @@ -370,6 +371,7 @@ enum FurnaceGUIActions { GUI_ACTION_WINDOW_NOTES, GUI_ACTION_WINDOW_CHANNELS, GUI_ACTION_WINDOW_PAT_MANAGER, + GUI_ACTION_WINDOW_SYS_MANAGER, GUI_ACTION_WINDOW_REGISTER_VIEW, GUI_ACTION_WINDOW_LOG, GUI_ACTION_WINDOW_EFFECT_LIST, @@ -1278,7 +1280,7 @@ class FurnaceGUI { bool waveListOpen, waveEditOpen, sampleListOpen, sampleEditOpen, aboutOpen, settingsOpen; bool mixerOpen, debugOpen, inspectorOpen, oscOpen, volMeterOpen, statsOpen, compatFlagsOpen; bool pianoOpen, notesOpen, channelsOpen, regViewOpen, logOpen, effectListOpen, chanOscOpen; - bool subSongsOpen, findOpen, spoilerOpen, patManagerOpen; + bool subSongsOpen, findOpen, spoilerOpen, patManagerOpen, sysManagerOpen; SelectionPoint selStart, selEnd, cursor, cursorDrag, dragStart, dragEnd; bool selecting, selectingFull, dragging, curNibble, orderNibble, followOrders, followPattern, changeAllOrders, mobileUI; @@ -1588,6 +1590,7 @@ class FurnaceGUI { void drawNotes(); void drawChannels(); void drawPatManager(); + void drawSysManager(); void drawRegView(); void drawAbout(); void drawSettings(); diff --git a/src/gui/guiConst.cpp b/src/gui/guiConst.cpp index 714e7770..1940946d 100644 --- a/src/gui/guiConst.cpp +++ b/src/gui/guiConst.cpp @@ -488,6 +488,7 @@ const FurnaceGUIActionDef guiActions[GUI_ACTION_MAX]={ D("WINDOW_NOTES", "Song Comments", 0), D("WINDOW_CHANNELS", "Channels", 0), D("WINDOW_PAT_MANAGER", "Pattern Manager", 0), + D("WINDOW_SYS_MANAGER", "Chip Manager", 0), D("WINDOW_REGISTER_VIEW", "Register View", 0), D("WINDOW_LOG", "Log Viewer", 0), D("EFFECT_LIST", "Effect List", 0), diff --git a/src/gui/sysManager.cpp b/src/gui/sysManager.cpp new file mode 100644 index 00000000..e43b4dfe --- /dev/null +++ b/src/gui/sysManager.cpp @@ -0,0 +1,37 @@ +/** + * Furnace Tracker - multi-system chiptune tracker + * Copyright (C) 2021-2022 tildearrow and contributors + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "gui.h" +#include "misc/cpp/imgui_stdlib.h" +#include "IconsFontAwesome4.h" +#include + +void FurnaceGUI::drawSysManager() { + if (nextWindow==GUI_WINDOW_SYS_MANAGER) { + sysManagerOpen=true; + ImGui::SetNextWindowFocus(); + nextWindow=GUI_WINDOW_NOTHING; + } + if (!sysManagerOpen) return; + if (ImGui::Begin("Chip Manager",&sysManagerOpen,globalWinFlags)) { + ImGui::Text("Stuff here..."); + } + if (ImGui::IsWindowFocused(ImGuiFocusedFlags_ChildWindows)) curWindow=GUI_WINDOW_SYS_MANAGER; + ImGui::End(); +}