From 99cf9b3bf12bac5c24e37f6547e5f25e187b85a1 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Fri, 11 Feb 2022 01:56:59 -0500 Subject: [PATCH] GUI: woooooow --- src/gui/gui.cpp | 340 ++++++++++++++++++++++++++++++++++++++++++++++++ src/gui/gui.h | 41 +++++- 2 files changed, 374 insertions(+), 7 deletions(-) diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 547775895..86a47d7d2 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -25,6 +25,7 @@ #ifdef __APPLE__ #define CMD_MODIFIER KMOD_GUI +#define FURKMOD_CMD FURKMOD_META #define CMD_MODIFIER_NAME "Cmd-" #define SHIFT_MODIFIER_NAME "Shift-" extern "C" { @@ -32,6 +33,7 @@ extern "C" { } #else #define CMD_MODIFIER KMOD_CTRL +#define FURKMOD_CMD FURKMOD_CTRL #define CMD_MODIFIER_NAME "Ctrl-" #define SHIFT_MODIFIER_NAME "Shift-" #endif @@ -3872,6 +3874,9 @@ void FurnaceGUI::drawSettings() { ImGui::End(); } +#define LOAD_KEYBIND(x,y) \ + actionKeys[x]=e->getConfInt("keybind_" #x,y); + void FurnaceGUI::syncSettings() { settings.mainFontSize=e->getConfInt("mainFontSize",18); settings.patFontSize=e->getConfInt("patFontSize",18); @@ -3906,9 +3911,155 @@ void FurnaceGUI::syncSettings() { settings.forceMono=e->getConfInt("forceMono",0); settings.controlLayout=e->getConfInt("controlLayout",0); settings.restartOnFlagChange=e->getConfInt("restartOnFlagChange",1); + + // keybinds + LOAD_KEYBIND(GUI_ACTION_OPEN,FURKMOD_CMD|SDLK_o); + LOAD_KEYBIND(GUI_ACTION_SAVE,FURKMOD_CMD|SDLK_s); + LOAD_KEYBIND(GUI_ACTION_UNDO,FURKMOD_CMD|SDLK_z); + LOAD_KEYBIND(GUI_ACTION_REDO,FURKMOD_CMD|SDLK_y); + LOAD_KEYBIND(GUI_ACTION_PLAY_TOGGLE,SDLK_RETURN); + LOAD_KEYBIND(GUI_ACTION_PLAY,0); + LOAD_KEYBIND(GUI_ACTION_STOP,0); + LOAD_KEYBIND(GUI_ACTION_PLAY_REPEAT,0); + LOAD_KEYBIND(GUI_ACTION_PLAY_CURSOR,FURKMOD_SHIFT|SDLK_RETURN); + LOAD_KEYBIND(GUI_ACTION_STEP_ONE,FURKMOD_CMD|SDLK_RETURN); + LOAD_KEYBIND(GUI_ACTION_OCTAVE_UP,SDLK_KP_MULTIPLY); + LOAD_KEYBIND(GUI_ACTION_OCTAVE_DOWN,SDLK_KP_DIVIDE); + LOAD_KEYBIND(GUI_ACTION_INS_UP,FURKMOD_SHIFT|SDLK_KP_DIVIDE); + LOAD_KEYBIND(GUI_ACTION_INS_DOWN,FURKMOD_SHIFT|SDLK_KP_MULTIPLY); + LOAD_KEYBIND(GUI_ACTION_STEP_UP,FURKMOD_CMD|SDLK_KP_DIVIDE); + LOAD_KEYBIND(GUI_ACTION_STEP_DOWN,FURKMOD_CMD|SDLK_KP_MULTIPLY); + LOAD_KEYBIND(GUI_ACTION_TOGGLE_EDIT,SDLK_SPACE); + LOAD_KEYBIND(GUI_ACTION_METRONOME,FURKMOD_CMD|SDLK_m); + LOAD_KEYBIND(GUI_ACTION_REPEAT_PATTERN,0); + LOAD_KEYBIND(GUI_ACTION_FOLLOW_ORDERS,0); + LOAD_KEYBIND(GUI_ACTION_FOLLOW_PATTERN,0); + LOAD_KEYBIND(GUI_ACTION_PANIC,SDLK_F12); + + LOAD_KEYBIND(GUI_ACTION_WINDOW_EDIT_CONTROLS,0); + LOAD_KEYBIND(GUI_ACTION_WINDOW_ORDERS,0); + LOAD_KEYBIND(GUI_ACTION_WINDOW_INS_LIST,0); + LOAD_KEYBIND(GUI_ACTION_WINDOW_INS_EDIT,0); + LOAD_KEYBIND(GUI_ACTION_WINDOW_SONG_INFO,0); + LOAD_KEYBIND(GUI_ACTION_WINDOW_PATTERN,0); + LOAD_KEYBIND(GUI_ACTION_WINDOW_WAVE_LIST,0); + LOAD_KEYBIND(GUI_ACTION_WINDOW_WAVE_EDIT,0); + LOAD_KEYBIND(GUI_ACTION_WINDOW_SAMPLE_LIST,0); + LOAD_KEYBIND(GUI_ACTION_WINDOW_SAMPLE_EDIT,0); + LOAD_KEYBIND(GUI_ACTION_WINDOW_ABOUT,0); + LOAD_KEYBIND(GUI_ACTION_WINDOW_SETTINGS,0); + LOAD_KEYBIND(GUI_ACTION_WINDOW_MIXER,0); + LOAD_KEYBIND(GUI_ACTION_WINDOW_DEBUG,0); + LOAD_KEYBIND(GUI_ACTION_WINDOW_VOL_METER,0); + LOAD_KEYBIND(GUI_ACTION_WINDOW_STATS,0); + LOAD_KEYBIND(GUI_ACTION_WINDOW_COMPAT_FLAGS,0); + LOAD_KEYBIND(GUI_ACTION_WINDOW_PIANO,0); + LOAD_KEYBIND(GUI_ACTION_WINDOW_NOTES,0); + LOAD_KEYBIND(GUI_ACTION_WINDOW_CHANNELS,0); + + LOAD_KEYBIND(GUI_ACTION_COLLAPSE_WINDOW,0); + LOAD_KEYBIND(GUI_ACTION_CLOSE_WINDOW,FURKMOD_SHIFT|SDLK_ESCAPE); + + LOAD_KEYBIND(GUI_ACTION_PAT_NOTE_UP,0); + LOAD_KEYBIND(GUI_ACTION_PAT_NOTE_DOWN,0); + LOAD_KEYBIND(GUI_ACTION_PAT_OCTAVE_UP,0); + LOAD_KEYBIND(GUI_ACTION_PAT_OCTAVE_DOWN,0); + LOAD_KEYBIND(GUI_ACTION_PAT_SELECT_ALL,FURKMOD_CMD|SDLK_a); + LOAD_KEYBIND(GUI_ACTION_PAT_CUT,FURKMOD_CMD|SDLK_x); + LOAD_KEYBIND(GUI_ACTION_PAT_COPY,FURKMOD_CMD|SDLK_c); + LOAD_KEYBIND(GUI_ACTION_PAT_PASTE,FURKMOD_CMD|SDLK_v); + LOAD_KEYBIND(GUI_ACTION_PAT_CURSOR_UP,SDLK_UP); + LOAD_KEYBIND(GUI_ACTION_PAT_CURSOR_DOWN,SDLK_DOWN); + LOAD_KEYBIND(GUI_ACTION_PAT_CURSOR_LEFT,SDLK_LEFT); + LOAD_KEYBIND(GUI_ACTION_PAT_CURSOR_RIGHT,SDLK_RIGHT); + LOAD_KEYBIND(GUI_ACTION_PAT_CURSOR_UP_ONE,FURKMOD_SHIFT|SDLK_HOME); + LOAD_KEYBIND(GUI_ACTION_PAT_CURSOR_DOWN_ONE,FURKMOD_SHIFT|SDLK_END); + LOAD_KEYBIND(GUI_ACTION_PAT_CURSOR_LEFT_CHANNEL,0); + LOAD_KEYBIND(GUI_ACTION_PAT_CURSOR_RIGHT_CHANNEL,0); + LOAD_KEYBIND(GUI_ACTION_PAT_CURSOR_NEXT_CHANNEL,0); + LOAD_KEYBIND(GUI_ACTION_PAT_CURSOR_PREVIOUS_CHANNEL,0); + LOAD_KEYBIND(GUI_ACTION_PAT_CURSOR_BEGIN,SDLK_HOME); + LOAD_KEYBIND(GUI_ACTION_PAT_CURSOR_END,SDLK_END); + LOAD_KEYBIND(GUI_ACTION_PAT_CURSOR_UP_COARSE,SDLK_PAGEUP); + LOAD_KEYBIND(GUI_ACTION_PAT_CURSOR_DOWN_COARSE,SDLK_PAGEDOWN); + LOAD_KEYBIND(GUI_ACTION_PAT_SELECTION_UP,FURKMOD_SHIFT|SDLK_UP); + LOAD_KEYBIND(GUI_ACTION_PAT_SELECTION_DOWN,FURKMOD_SHIFT|SDLK_DOWN); + LOAD_KEYBIND(GUI_ACTION_PAT_SELECTION_LEFT,FURKMOD_SHIFT|SDLK_LEFT); + LOAD_KEYBIND(GUI_ACTION_PAT_SELECTION_RIGHT,FURKMOD_SHIFT|SDLK_RIGHT); + LOAD_KEYBIND(GUI_ACTION_PAT_SELECTION_UP_ONE,0); + LOAD_KEYBIND(GUI_ACTION_PAT_SELECTION_DOWN_ONE,0); + LOAD_KEYBIND(GUI_ACTION_PAT_SELECTION_BEGIN,0); + LOAD_KEYBIND(GUI_ACTION_PAT_SELECTION_END,0); + LOAD_KEYBIND(GUI_ACTION_PAT_SELECTION_UP_COARSE,FURKMOD_SHIFT|SDLK_PAGEUP); + LOAD_KEYBIND(GUI_ACTION_PAT_SELECTION_DOWN_COARSE,FURKMOD_SHIFT|SDLK_PAGEDOWN); + LOAD_KEYBIND(GUI_ACTION_PAT_DELETE,SDLK_DELETE); + LOAD_KEYBIND(GUI_ACTION_PAT_PULL_DELETE,SDLK_BACKSPACE); + LOAD_KEYBIND(GUI_ACTION_PAT_INSERT,SDLK_INSERT); + LOAD_KEYBIND(GUI_ACTION_PAT_MUTE_CURSOR,FURKMOD_ALT|SDLK_F9); + LOAD_KEYBIND(GUI_ACTION_PAT_SOLO_CURSOR,FURKMOD_ALT|SDLK_F10); + LOAD_KEYBIND(GUI_ACTION_PAT_UNMUTE_ALL,FURKMOD_ALT|FURKMOD_SHIFT|SDLK_F9); + LOAD_KEYBIND(GUI_ACTION_PAT_NEXT_ORDER,0); + LOAD_KEYBIND(GUI_ACTION_PAT_PREV_ORDER,0); + LOAD_KEYBIND(GUI_ACTION_PAT_COLLAPSE,0); + LOAD_KEYBIND(GUI_ACTION_PAT_INCREASE_COLUMNS,0); + LOAD_KEYBIND(GUI_ACTION_PAT_DECREASE_COLUMNS,0); + + LOAD_KEYBIND(GUI_ACTION_INS_LIST_ADD,0); + LOAD_KEYBIND(GUI_ACTION_INS_LIST_DUPLICATE,0); + LOAD_KEYBIND(GUI_ACTION_INS_LIST_OPEN,0); + LOAD_KEYBIND(GUI_ACTION_INS_LIST_SAVE,0); + LOAD_KEYBIND(GUI_ACTION_INS_LIST_MOVE_UP,0); + LOAD_KEYBIND(GUI_ACTION_INS_LIST_MOVE_DOWN,0); + LOAD_KEYBIND(GUI_ACTION_INS_LIST_DELETE,0); + LOAD_KEYBIND(GUI_ACTION_INS_LIST_EDIT,0); + LOAD_KEYBIND(GUI_ACTION_INS_LIST_UP,0); + LOAD_KEYBIND(GUI_ACTION_INS_LIST_DOWN,0); + + LOAD_KEYBIND(GUI_ACTION_WAVE_LIST_ADD,0); + LOAD_KEYBIND(GUI_ACTION_WAVE_LIST_DUPLICATE,0); + LOAD_KEYBIND(GUI_ACTION_WAVE_LIST_OPEN,0); + LOAD_KEYBIND(GUI_ACTION_WAVE_LIST_SAVE,0); + LOAD_KEYBIND(GUI_ACTION_WAVE_LIST_MOVE_UP,0); + LOAD_KEYBIND(GUI_ACTION_WAVE_LIST_MOVE_DOWN,0); + LOAD_KEYBIND(GUI_ACTION_WAVE_LIST_DELETE,0); + LOAD_KEYBIND(GUI_ACTION_WAVE_LIST_EDIT,0); + LOAD_KEYBIND(GUI_ACTION_WAVE_LIST_UP,0); + LOAD_KEYBIND(GUI_ACTION_WAVE_LIST_DOWN,0); + + LOAD_KEYBIND(GUI_ACTION_SAMPLE_LIST_ADD,0); + LOAD_KEYBIND(GUI_ACTION_SAMPLE_LIST_DUPLICATE,0); + LOAD_KEYBIND(GUI_ACTION_SAMPLE_LIST_OPEN,0); + LOAD_KEYBIND(GUI_ACTION_SAMPLE_LIST_SAVE,0); + LOAD_KEYBIND(GUI_ACTION_SAMPLE_LIST_MOVE_UP,0); + LOAD_KEYBIND(GUI_ACTION_SAMPLE_LIST_MOVE_DOWN,0); + LOAD_KEYBIND(GUI_ACTION_SAMPLE_LIST_DELETE,0); + LOAD_KEYBIND(GUI_ACTION_SAMPLE_LIST_EDIT,0); + LOAD_KEYBIND(GUI_ACTION_SAMPLE_LIST_UP,0); + LOAD_KEYBIND(GUI_ACTION_SAMPLE_LIST_DOWN,0); + LOAD_KEYBIND(GUI_ACTION_SAMPLE_LIST_PREVIEW,0); + LOAD_KEYBIND(GUI_ACTION_SAMPLE_LIST_STOP_PREVIEW,0); + + LOAD_KEYBIND(GUI_ACTION_ORDERS_UP,0); + LOAD_KEYBIND(GUI_ACTION_ORDERS_DOWN,0); + LOAD_KEYBIND(GUI_ACTION_ORDERS_LEFT,0); + LOAD_KEYBIND(GUI_ACTION_ORDERS_RIGHT,0); + LOAD_KEYBIND(GUI_ACTION_ORDERS_INCREASE,0); + LOAD_KEYBIND(GUI_ACTION_ORDERS_DECREASE,0); + LOAD_KEYBIND(GUI_ACTION_ORDERS_EDIT_MODE,0); + LOAD_KEYBIND(GUI_ACTION_ORDERS_LINK,0); + LOAD_KEYBIND(GUI_ACTION_ORDERS_ADD,0); + LOAD_KEYBIND(GUI_ACTION_ORDERS_DUPLICATE,0); + LOAD_KEYBIND(GUI_ACTION_ORDERS_DEEP_CLONE,0); + LOAD_KEYBIND(GUI_ACTION_ORDERS_DUPLICATE_END,0); + LOAD_KEYBIND(GUI_ACTION_ORDERS_DEEP_CLONE_END,0); + LOAD_KEYBIND(GUI_ACTION_ORDERS_REMOVE,0); + LOAD_KEYBIND(GUI_ACTION_ORDERS_MOVE_UP,0); + LOAD_KEYBIND(GUI_ACTION_ORDERS_MOVE_DOWN,0); + LOAD_KEYBIND(GUI_ACTION_ORDERS_REPLAY,0); } #define PUT_UI_COLOR(source) e->setConf(#source,(int)ImGui::GetColorU32(uiColors[source])); +#define SAVE_KEYBIND(x) e->setConf("keybind_" #x,actionKeys[x]); void FurnaceGUI::commitSettings() { e->setConf("mainFontSize",settings.mainFontSize); @@ -4006,6 +4157,150 @@ void FurnaceGUI::commitSettings() { PUT_UI_COLOR(GUI_COLOR_EE_VALUE); PUT_UI_COLOR(GUI_COLOR_PLAYBACK_STAT); + SAVE_KEYBIND(GUI_ACTION_OPEN); + SAVE_KEYBIND(GUI_ACTION_SAVE); + SAVE_KEYBIND(GUI_ACTION_UNDO); + SAVE_KEYBIND(GUI_ACTION_REDO); + SAVE_KEYBIND(GUI_ACTION_PLAY_TOGGLE); + SAVE_KEYBIND(GUI_ACTION_PLAY); + SAVE_KEYBIND(GUI_ACTION_STOP); + SAVE_KEYBIND(GUI_ACTION_PLAY_REPEAT); + SAVE_KEYBIND(GUI_ACTION_PLAY_CURSOR); + SAVE_KEYBIND(GUI_ACTION_STEP_ONE); + SAVE_KEYBIND(GUI_ACTION_OCTAVE_UP); + SAVE_KEYBIND(GUI_ACTION_OCTAVE_DOWN); + SAVE_KEYBIND(GUI_ACTION_INS_UP); + SAVE_KEYBIND(GUI_ACTION_INS_DOWN); + SAVE_KEYBIND(GUI_ACTION_STEP_UP); + SAVE_KEYBIND(GUI_ACTION_STEP_DOWN); + SAVE_KEYBIND(GUI_ACTION_TOGGLE_EDIT); + SAVE_KEYBIND(GUI_ACTION_METRONOME); + SAVE_KEYBIND(GUI_ACTION_REPEAT_PATTERN); + SAVE_KEYBIND(GUI_ACTION_FOLLOW_ORDERS); + SAVE_KEYBIND(GUI_ACTION_FOLLOW_PATTERN); + SAVE_KEYBIND(GUI_ACTION_PANIC); + + SAVE_KEYBIND(GUI_ACTION_WINDOW_EDIT_CONTROLS); + SAVE_KEYBIND(GUI_ACTION_WINDOW_ORDERS); + SAVE_KEYBIND(GUI_ACTION_WINDOW_INS_LIST); + SAVE_KEYBIND(GUI_ACTION_WINDOW_INS_EDIT); + SAVE_KEYBIND(GUI_ACTION_WINDOW_SONG_INFO); + SAVE_KEYBIND(GUI_ACTION_WINDOW_PATTERN); + SAVE_KEYBIND(GUI_ACTION_WINDOW_WAVE_LIST); + SAVE_KEYBIND(GUI_ACTION_WINDOW_WAVE_EDIT); + SAVE_KEYBIND(GUI_ACTION_WINDOW_SAMPLE_LIST); + SAVE_KEYBIND(GUI_ACTION_WINDOW_SAMPLE_EDIT); + SAVE_KEYBIND(GUI_ACTION_WINDOW_ABOUT); + SAVE_KEYBIND(GUI_ACTION_WINDOW_SETTINGS); + SAVE_KEYBIND(GUI_ACTION_WINDOW_MIXER); + SAVE_KEYBIND(GUI_ACTION_WINDOW_DEBUG); + SAVE_KEYBIND(GUI_ACTION_WINDOW_VOL_METER); + SAVE_KEYBIND(GUI_ACTION_WINDOW_STATS); + SAVE_KEYBIND(GUI_ACTION_WINDOW_COMPAT_FLAGS); + SAVE_KEYBIND(GUI_ACTION_WINDOW_PIANO); + SAVE_KEYBIND(GUI_ACTION_WINDOW_NOTES); + SAVE_KEYBIND(GUI_ACTION_WINDOW_CHANNELS); + + SAVE_KEYBIND(GUI_ACTION_COLLAPSE_WINDOW); + SAVE_KEYBIND(GUI_ACTION_CLOSE_WINDOW); + + SAVE_KEYBIND(GUI_ACTION_PAT_NOTE_UP); + SAVE_KEYBIND(GUI_ACTION_PAT_NOTE_DOWN); + SAVE_KEYBIND(GUI_ACTION_PAT_OCTAVE_UP); + SAVE_KEYBIND(GUI_ACTION_PAT_OCTAVE_DOWN); + SAVE_KEYBIND(GUI_ACTION_PAT_SELECT_ALL); + SAVE_KEYBIND(GUI_ACTION_PAT_CUT); + SAVE_KEYBIND(GUI_ACTION_PAT_COPY); + SAVE_KEYBIND(GUI_ACTION_PAT_PASTE); + SAVE_KEYBIND(GUI_ACTION_PAT_CURSOR_UP); + SAVE_KEYBIND(GUI_ACTION_PAT_CURSOR_DOWN); + SAVE_KEYBIND(GUI_ACTION_PAT_CURSOR_LEFT); + SAVE_KEYBIND(GUI_ACTION_PAT_CURSOR_RIGHT); + SAVE_KEYBIND(GUI_ACTION_PAT_CURSOR_UP_ONE); + SAVE_KEYBIND(GUI_ACTION_PAT_CURSOR_DOWN_ONE); + SAVE_KEYBIND(GUI_ACTION_PAT_CURSOR_LEFT_CHANNEL); + SAVE_KEYBIND(GUI_ACTION_PAT_CURSOR_RIGHT_CHANNEL); + SAVE_KEYBIND(GUI_ACTION_PAT_CURSOR_NEXT_CHANNEL); + SAVE_KEYBIND(GUI_ACTION_PAT_CURSOR_PREVIOUS_CHANNEL); + SAVE_KEYBIND(GUI_ACTION_PAT_CURSOR_BEGIN); + SAVE_KEYBIND(GUI_ACTION_PAT_CURSOR_END); + SAVE_KEYBIND(GUI_ACTION_PAT_CURSOR_UP_COARSE); + SAVE_KEYBIND(GUI_ACTION_PAT_CURSOR_DOWN_COARSE); + SAVE_KEYBIND(GUI_ACTION_PAT_SELECTION_UP); + SAVE_KEYBIND(GUI_ACTION_PAT_SELECTION_DOWN); + SAVE_KEYBIND(GUI_ACTION_PAT_SELECTION_LEFT); + SAVE_KEYBIND(GUI_ACTION_PAT_SELECTION_RIGHT); + SAVE_KEYBIND(GUI_ACTION_PAT_SELECTION_UP_ONE); + SAVE_KEYBIND(GUI_ACTION_PAT_SELECTION_DOWN_ONE); + SAVE_KEYBIND(GUI_ACTION_PAT_SELECTION_BEGIN); + SAVE_KEYBIND(GUI_ACTION_PAT_SELECTION_END); + SAVE_KEYBIND(GUI_ACTION_PAT_SELECTION_UP_COARSE); + SAVE_KEYBIND(GUI_ACTION_PAT_SELECTION_DOWN_COARSE); + SAVE_KEYBIND(GUI_ACTION_PAT_DELETE); + SAVE_KEYBIND(GUI_ACTION_PAT_PULL_DELETE); + SAVE_KEYBIND(GUI_ACTION_PAT_INSERT); + SAVE_KEYBIND(GUI_ACTION_PAT_MUTE_CURSOR); + SAVE_KEYBIND(GUI_ACTION_PAT_SOLO_CURSOR); + SAVE_KEYBIND(GUI_ACTION_PAT_UNMUTE_ALL); + SAVE_KEYBIND(GUI_ACTION_PAT_NEXT_ORDER); + SAVE_KEYBIND(GUI_ACTION_PAT_PREV_ORDER); + SAVE_KEYBIND(GUI_ACTION_PAT_COLLAPSE); + SAVE_KEYBIND(GUI_ACTION_PAT_INCREASE_COLUMNS); + SAVE_KEYBIND(GUI_ACTION_PAT_DECREASE_COLUMNS); + + SAVE_KEYBIND(GUI_ACTION_INS_LIST_ADD); + SAVE_KEYBIND(GUI_ACTION_INS_LIST_DUPLICATE); + SAVE_KEYBIND(GUI_ACTION_INS_LIST_OPEN); + SAVE_KEYBIND(GUI_ACTION_INS_LIST_SAVE); + SAVE_KEYBIND(GUI_ACTION_INS_LIST_MOVE_UP); + SAVE_KEYBIND(GUI_ACTION_INS_LIST_MOVE_DOWN); + SAVE_KEYBIND(GUI_ACTION_INS_LIST_DELETE); + SAVE_KEYBIND(GUI_ACTION_INS_LIST_EDIT); + SAVE_KEYBIND(GUI_ACTION_INS_LIST_UP); + SAVE_KEYBIND(GUI_ACTION_INS_LIST_DOWN); + + SAVE_KEYBIND(GUI_ACTION_WAVE_LIST_ADD); + SAVE_KEYBIND(GUI_ACTION_WAVE_LIST_DUPLICATE); + SAVE_KEYBIND(GUI_ACTION_WAVE_LIST_OPEN); + SAVE_KEYBIND(GUI_ACTION_WAVE_LIST_SAVE); + SAVE_KEYBIND(GUI_ACTION_WAVE_LIST_MOVE_UP); + SAVE_KEYBIND(GUI_ACTION_WAVE_LIST_MOVE_DOWN); + SAVE_KEYBIND(GUI_ACTION_WAVE_LIST_DELETE); + SAVE_KEYBIND(GUI_ACTION_WAVE_LIST_EDIT); + SAVE_KEYBIND(GUI_ACTION_WAVE_LIST_UP); + SAVE_KEYBIND(GUI_ACTION_WAVE_LIST_DOWN); + + SAVE_KEYBIND(GUI_ACTION_SAMPLE_LIST_ADD); + SAVE_KEYBIND(GUI_ACTION_SAMPLE_LIST_DUPLICATE); + SAVE_KEYBIND(GUI_ACTION_SAMPLE_LIST_OPEN); + SAVE_KEYBIND(GUI_ACTION_SAMPLE_LIST_SAVE); + SAVE_KEYBIND(GUI_ACTION_SAMPLE_LIST_MOVE_UP); + SAVE_KEYBIND(GUI_ACTION_SAMPLE_LIST_MOVE_DOWN); + SAVE_KEYBIND(GUI_ACTION_SAMPLE_LIST_DELETE); + SAVE_KEYBIND(GUI_ACTION_SAMPLE_LIST_EDIT); + SAVE_KEYBIND(GUI_ACTION_SAMPLE_LIST_UP); + SAVE_KEYBIND(GUI_ACTION_SAMPLE_LIST_DOWN); + SAVE_KEYBIND(GUI_ACTION_SAMPLE_LIST_PREVIEW); + SAVE_KEYBIND(GUI_ACTION_SAMPLE_LIST_STOP_PREVIEW); + + SAVE_KEYBIND(GUI_ACTION_ORDERS_UP); + SAVE_KEYBIND(GUI_ACTION_ORDERS_DOWN); + SAVE_KEYBIND(GUI_ACTION_ORDERS_LEFT); + SAVE_KEYBIND(GUI_ACTION_ORDERS_RIGHT); + SAVE_KEYBIND(GUI_ACTION_ORDERS_INCREASE); + SAVE_KEYBIND(GUI_ACTION_ORDERS_DECREASE); + SAVE_KEYBIND(GUI_ACTION_ORDERS_EDIT_MODE); + SAVE_KEYBIND(GUI_ACTION_ORDERS_LINK); + SAVE_KEYBIND(GUI_ACTION_ORDERS_ADD); + SAVE_KEYBIND(GUI_ACTION_ORDERS_DUPLICATE); + SAVE_KEYBIND(GUI_ACTION_ORDERS_DEEP_CLONE); + SAVE_KEYBIND(GUI_ACTION_ORDERS_DUPLICATE_END); + SAVE_KEYBIND(GUI_ACTION_ORDERS_DEEP_CLONE_END); + SAVE_KEYBIND(GUI_ACTION_ORDERS_REMOVE); + SAVE_KEYBIND(GUI_ACTION_ORDERS_MOVE_UP); + SAVE_KEYBIND(GUI_ACTION_ORDERS_MOVE_DOWN); + SAVE_KEYBIND(GUI_ACTION_ORDERS_REPLAY); + e->saveConf(); if (!e->switchMaster()) { @@ -6643,6 +6938,51 @@ bool FurnaceGUI::loop() { return false; } +void FurnaceGUI::parseKeybinds() { + actionMapGlobal.clear(); + actionMapPat.clear(); + actionMapInsList.clear(); + actionMapWaveList.clear(); + actionMapSampleList.clear(); + actionMapOrders.clear(); + + for (int i=GUI_ACTION_GLOBAL_MIN+1; i actionMapGlobal; - std::map actionMapPat; - std::map actionMapOrders; - std::map actionMapInsList; - std::map actionMapWaveList; - std::map actionMapSampleList; + std::map actionMapGlobal; + std::map actionMapPat; + std::map actionMapOrders; + std::map actionMapInsList; + std::map actionMapWaveList; + std::map actionMapSampleList; std::vector pgProgram; int pgSys, pgAddr, pgVal; @@ -528,6 +553,8 @@ class FurnaceGUI { void drawSettings(); void drawDebug(); + void parseKeybinds(); + void syncSettings(); void commitSettings(); void processDrags(int dragX, int dragY);