command palette: instrument and sample menus
won't be doing for wavetables because they don't have text and that would be impossible to search through with a keyboard
This commit is contained in:
parent
00ee72269f
commit
51148a729c
|
|
@ -76,6 +76,26 @@ void FurnaceGUI::drawPalette() {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case CMDPAL_TYPE_INSTRUMENTS:
|
||||||
|
if (matchFuzzy("- None -",paletteQuery.c_str())) {
|
||||||
|
paletteSearchResults.push_back(0);
|
||||||
|
}
|
||||||
|
for (int i=0; i<e->song.insLen; i++) {
|
||||||
|
if (matchFuzzy(e->song.ins[i]->name.c_str(),paletteQuery.c_str())) {
|
||||||
|
paletteSearchResults.push_back(i+1); // because over here ins=0 is 'None'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CMDPAL_TYPE_SAMPLES:
|
||||||
|
for (int i=0; i<e->song.sampleLen; i++) {
|
||||||
|
logD("ins #%x: %s", i, e->song.sample[i]->name.c_str());
|
||||||
|
if (matchFuzzy(e->song.sample[i]->name.c_str(),paletteQuery.c_str())) {
|
||||||
|
paletteSearchResults.push_back(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
logE("invalid command palette type");
|
logE("invalid command palette type");
|
||||||
ImGui::CloseCurrentPopup();
|
ImGui::CloseCurrentPopup();
|
||||||
|
|
@ -109,13 +129,21 @@ void FurnaceGUI::drawPalette() {
|
||||||
case CMDPAL_TYPE_RECENT:
|
case CMDPAL_TYPE_RECENT:
|
||||||
s=recentFile.at(id).c_str();
|
s=recentFile.at(id).c_str();
|
||||||
break;
|
break;
|
||||||
|
case CMDPAL_TYPE_INSTRUMENTS:
|
||||||
|
if (id==0) {
|
||||||
|
s="- None -";
|
||||||
|
} else {
|
||||||
|
s=e->song.ins[id-1]->name.c_str();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case CMDPAL_TYPE_SAMPLES:
|
||||||
|
s=e->song.sample[id]->name.c_str();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
logE("invalid command palette type");
|
logE("invalid command palette type");
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
|
|
||||||
logD("~ %d, %d", curPaletteType, s == nullptr);
|
|
||||||
|
|
||||||
if (ImGui::Selectable(s,current)) {
|
if (ImGui::Selectable(s,current)) {
|
||||||
curPaletteChoice=i;
|
curPaletteChoice=i;
|
||||||
accepted=true;
|
accepted=true;
|
||||||
|
|
@ -147,24 +175,34 @@ void FurnaceGUI::drawPalette() {
|
||||||
int i=paletteSearchResults[curPaletteChoice];
|
int i=paletteSearchResults[curPaletteChoice];
|
||||||
switch (curPaletteType) {
|
switch (curPaletteType) {
|
||||||
case CMDPAL_TYPE_MAIN:
|
case CMDPAL_TYPE_MAIN:
|
||||||
resetPalette(this);
|
|
||||||
doAction(i);
|
doAction(i);
|
||||||
if (i<GUI_ACTION_CMDPAL_MIN || GUI_ACTION_CMDPAL_MAX<i) {
|
if (i<GUI_ACTION_CMDPAL_MIN || GUI_ACTION_CMDPAL_MAX<i) {
|
||||||
|
// TODO: maybe instead of this, just re-open the dialog from the doAction code. it'll be much simpler than this corny mess I made
|
||||||
ImGui::CloseCurrentPopup();
|
ImGui::CloseCurrentPopup();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CMDPAL_TYPE_RECENT:
|
case CMDPAL_TYPE_RECENT:
|
||||||
resetPalette(this);
|
|
||||||
openRecentFile(recentFile.at(i));
|
openRecentFile(recentFile.at(i));
|
||||||
ImGui::CloseCurrentPopup();
|
ImGui::CloseCurrentPopup();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case CMDPAL_TYPE_INSTRUMENTS:
|
||||||
|
curIns=i-1;
|
||||||
|
ImGui::CloseCurrentPopup();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CMDPAL_TYPE_SAMPLES:
|
||||||
|
curSample=i;
|
||||||
|
ImGui::CloseCurrentPopup();
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
logE("invalid command palette type");
|
logE("invalid command palette type");
|
||||||
ImGui::CloseCurrentPopup();
|
ImGui::CloseCurrentPopup();
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
|
resetPalette(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,9 @@
|
||||||
enum CommandPaletteType {
|
enum CommandPaletteType {
|
||||||
CMDPAL_TYPE_MAIN = 0,
|
CMDPAL_TYPE_MAIN = 0,
|
||||||
CMDPAL_TYPE_RECENT,
|
CMDPAL_TYPE_RECENT,
|
||||||
|
CMDPAL_TYPE_INSTRUMENTS,
|
||||||
|
CMDPAL_TYPE_SAMPLES,
|
||||||
|
// a menu to select wavetables is beyond scope (they can't be put as strings)
|
||||||
// TODO: are there more?
|
// TODO: are there more?
|
||||||
|
|
||||||
CMDPAL_TYPE_MAX,
|
CMDPAL_TYPE_MAX,
|
||||||
|
|
|
||||||
|
|
@ -192,6 +192,12 @@ void FurnaceGUI::doAction(int what) {
|
||||||
case GUI_ACTION_CMDPAL_RECENT:
|
case GUI_ACTION_CMDPAL_RECENT:
|
||||||
curPaletteType=CMDPAL_TYPE_RECENT;
|
curPaletteType=CMDPAL_TYPE_RECENT;
|
||||||
break;
|
break;
|
||||||
|
case GUI_ACTION_CMDPAL_INSTRUMENTS:
|
||||||
|
curPaletteType=CMDPAL_TYPE_INSTRUMENTS;
|
||||||
|
break;
|
||||||
|
case GUI_ACTION_CMDPAL_SAMPLES:
|
||||||
|
curPaletteType=CMDPAL_TYPE_SAMPLES;
|
||||||
|
break;
|
||||||
case GUI_ACTION_WINDOW_EDIT_CONTROLS:
|
case GUI_ACTION_WINDOW_EDIT_CONTROLS:
|
||||||
nextWindow=GUI_WINDOW_EDIT_CONTROLS;
|
nextWindow=GUI_WINDOW_EDIT_CONTROLS;
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -499,6 +499,8 @@ enum FurnaceGUIActions {
|
||||||
GUI_ACTION_COMMAND_PALETTE,
|
GUI_ACTION_COMMAND_PALETTE,
|
||||||
GUI_ACTION_CMDPAL_MIN,
|
GUI_ACTION_CMDPAL_MIN,
|
||||||
GUI_ACTION_CMDPAL_RECENT,
|
GUI_ACTION_CMDPAL_RECENT,
|
||||||
|
GUI_ACTION_CMDPAL_INSTRUMENTS,
|
||||||
|
GUI_ACTION_CMDPAL_SAMPLES,
|
||||||
GUI_ACTION_CMDPAL_MAX,
|
GUI_ACTION_CMDPAL_MAX,
|
||||||
|
|
||||||
GUI_ACTION_WINDOW_EDIT_CONTROLS,
|
GUI_ACTION_WINDOW_EDIT_CONTROLS,
|
||||||
|
|
|
||||||
|
|
@ -560,6 +560,8 @@ const FurnaceGUIActionDef guiActions[GUI_ACTION_MAX]={
|
||||||
D("COMMAND_PALETTE", "Command Palette", FURKMOD_CMD|SDLK_p),
|
D("COMMAND_PALETTE", "Command Palette", FURKMOD_CMD|SDLK_p),
|
||||||
D("CMDPAL_MIN", "", NOT_AN_ACTION),
|
D("CMDPAL_MIN", "", NOT_AN_ACTION),
|
||||||
D("CMDPAL_RECENT", "Recent files (Palette)", 0),
|
D("CMDPAL_RECENT", "Recent files (Palette)", 0),
|
||||||
|
D("CMDPAL_INSTRUMENTS", "Instruments (Palette)", 0),
|
||||||
|
D("CMDPAL_SAMPLES", "Samples (Palette)", 0),
|
||||||
D("CMDPAL_MAX", "", NOT_AN_ACTION),
|
D("CMDPAL_MAX", "", NOT_AN_ACTION),
|
||||||
|
|
||||||
D("WINDOW_EDIT_CONTROLS", "Edit Controls", 0),
|
D("WINDOW_EDIT_CONTROLS", "Edit Controls", 0),
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue