diff --git a/TODO.md b/TODO.md index d9817937e..04b724e0a 100644 --- a/TODO.md +++ b/TODO.md @@ -1,7 +1,11 @@ # to-do for 0.6pre1 - panning macro + - single macro for hard-panned chips + - two macros for soft-panned ones - pitch macro + - relative mode + - test - piano/input pad - note input via piano - input pad @@ -43,3 +47,4 @@ - settings: OK/Cancel buttons should be always visible - Apply button in settings - better FM chip names (number and codename) +- find and replace diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index b37726059..44de597bd 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -1960,6 +1960,7 @@ int _processEvent(void* instance, SDL_Event* event) { int FurnaceGUI::processEvent(SDL_Event* ev) { if (ev->type==SDL_KEYDOWN) { if (!ev->key.repeat && !wantCaptureKeyboard && (ev->key.keysym.mod&(~(KMOD_NUM|KMOD_CAPS|KMOD_SCROLL)))==0) { + if (settings.notePreviewBehavior==0) return 1; switch (curWindow) { case GUI_WINDOW_SAMPLE_EDIT: case GUI_WINDOW_SAMPLE_LIST: @@ -1991,6 +1992,13 @@ int FurnaceGUI::processEvent(SDL_Event* ev) { break; case GUI_WINDOW_ORDERS: // ignore here break; + case GUI_WINDOW_PATTERN: + if (settings.notePreviewBehavior==1) { + if (cursor.xFine!=0) break; + } else if (settings.notePreviewBehavior==2) { + if (edit && cursor.xFine!=0) break; + } + // fall-through default: try { int key=noteKeys.at(ev->key.keysym.scancode); diff --git a/src/gui/gui.h b/src/gui/gui.h index eaab6df43..447708b12 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -819,6 +819,7 @@ class FurnaceGUI { int oplStandardWaveNames; int cursorMoveNoScroll; int lowLatency; + int notePreviewBehavior; unsigned int maxUndoSteps; String mainFontPath; String patFontPath; @@ -891,6 +892,7 @@ class FurnaceGUI { oplStandardWaveNames(0), cursorMoveNoScroll(0), lowLatency(0), + notePreviewBehavior(1), maxUndoSteps(100), mainFontPath(""), patFontPath(""), diff --git a/src/gui/settings.cpp b/src/gui/settings.cpp index f4d62a81d..5bf76160e 100644 --- a/src/gui/settings.cpp +++ b/src/gui/settings.cpp @@ -301,6 +301,20 @@ void FurnaceGUI::drawSettings() { settings.sysFileDialog=sysFileDialogB; } + ImGui::Text("Note preview behavioe:"); + if (ImGui::RadioButton("Never##npb0",settings.notePreviewBehavior==0)) { + settings.notePreviewBehavior=0; + } + if (ImGui::RadioButton("When cursor is in Note column##npb1",settings.notePreviewBehavior==1)) { + settings.notePreviewBehavior=1; + } + if (ImGui::RadioButton("When cursor is in Note column or not in edit mode##npb2",settings.notePreviewBehavior==2)) { + settings.notePreviewBehavior=2; + } + if (ImGui::RadioButton("Always##npb3",settings.notePreviewBehavior==3)) { + settings.notePreviewBehavior=3; + } + ImGui::Text("Wrap pattern cursor horizontally:"); if (ImGui::RadioButton("No##wrapH0",settings.wrapHorizontal==0)) { settings.wrapHorizontal=0; @@ -1609,6 +1623,7 @@ void FurnaceGUI::syncSettings() { settings.oplStandardWaveNames=e->getConfInt("oplStandardWaveNames",0); settings.cursorMoveNoScroll=e->getConfInt("cursorMoveNoScroll",0); settings.lowLatency=e->getConfInt("lowLatency",0); + settings.notePreviewBehavior=e->getConfInt("notePreviewBehavior",1); clampSetting(settings.mainFontSize,2,96); clampSetting(settings.patFontSize,2,96); @@ -1670,6 +1685,7 @@ void FurnaceGUI::syncSettings() { clampSetting(settings.oplStandardWaveNames,0,1); clampSetting(settings.cursorMoveNoScroll,0,1); clampSetting(settings.lowLatency,0,1); + clampSetting(settings.notePreviewBehavior,0,3); // keybinds for (int i=0; isetConf("oplStandardWaveNames",settings.oplStandardWaveNames); e->setConf("cursorMoveNoScroll",settings.cursorMoveNoScroll); e->setConf("lowLatency",settings.lowLatency); + e->setConf("notePreviewBehavior",settings.notePreviewBehavior); // colors for (int i=0; i