asset directories, part 1

This commit is contained in:
tildearrow 2023-05-15 01:36:02 -05:00
parent 4211dad692
commit e1b5842728
6 changed files with 399 additions and 289 deletions

View file

@ -30,207 +30,7 @@ const char* sampleNote[12]={
"C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"
};
void FurnaceGUI::drawInsList(bool asChild) {
if (nextWindow==GUI_WINDOW_INS_LIST) {
insListOpen=true;
ImGui::SetNextWindowFocus();
nextWindow=GUI_WINDOW_NOTHING;
}
if (!insListOpen && !asChild) return;
bool began=false;
if (asChild) {
began=ImGui::BeginChild("Instruments");
} else {
began=ImGui::Begin("Instruments",&insListOpen,globalWinFlags);
}
if (began) {
if (settings.unifiedDataView) settings.horizontalDataView=0;
if (ImGui::Button(ICON_FA_PLUS "##InsAdd")) {
if (!settings.unifiedDataView) doAction(GUI_ACTION_INS_LIST_ADD);
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Add");
}
if (settings.unifiedDataView) {
if (ImGui::BeginPopupContextItem("UnifiedAdd",ImGuiMouseButton_Left)) {
if (ImGui::MenuItem("instrument")) {
doAction(GUI_ACTION_INS_LIST_ADD);
}
if (ImGui::MenuItem("wavetable")) {
doAction(GUI_ACTION_WAVE_LIST_ADD);
}
if (ImGui::MenuItem("sample (create)")) {
doAction(GUI_ACTION_SAMPLE_LIST_ADD);
}
ImGui::EndPopup();
}
} else {
if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) {
displayInsTypeList=true;
displayInsTypeListMakeInsSample=-1;
}
}
ImGui::SameLine();
if (ImGui::Button(ICON_FA_FILES_O "##InsClone")) {
if (!settings.unifiedDataView) doAction(GUI_ACTION_INS_LIST_DUPLICATE);
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Duplicate");
}
if (settings.unifiedDataView) {
if (ImGui::BeginPopupContextItem("UnifiedClone",ImGuiMouseButton_Left)) {
if (ImGui::MenuItem("instrument")) {
doAction(GUI_ACTION_INS_LIST_DUPLICATE);
}
if (ImGui::MenuItem("wavetable")) {
doAction(GUI_ACTION_WAVE_LIST_DUPLICATE);
}
if (ImGui::MenuItem("sample")) {
doAction(GUI_ACTION_SAMPLE_LIST_DUPLICATE);
}
ImGui::EndPopup();
}
}
ImGui::SameLine();
if (ImGui::Button(ICON_FA_FOLDER_OPEN "##InsLoad")) {
if (!settings.unifiedDataView) doAction(GUI_ACTION_INS_LIST_OPEN);
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Open");
}
if (settings.unifiedDataView) {
if (ImGui::BeginPopupContextItem("UnifiedLoad",ImGuiMouseButton_Left)) {
if (ImGui::MenuItem("instrument")) {
doAction(GUI_ACTION_INS_LIST_OPEN);
}
if (ImGui::MenuItem("instrument (replace...)")) {
doAction((curIns>=0 && curIns<(int)e->song.ins.size())?GUI_ACTION_INS_LIST_OPEN_REPLACE:GUI_ACTION_INS_LIST_OPEN);
}
if (ImGui::MenuItem("wavetable")) {
doAction(GUI_ACTION_WAVE_LIST_OPEN);
}
if (ImGui::MenuItem("sample")) {
doAction(GUI_ACTION_SAMPLE_LIST_OPEN);
}
ImGui::Separator();
if (ImGui::MenuItem("instrument from TX81Z")) {
doAction(GUI_ACTION_TX81Z_REQUEST);
}
ImGui::EndPopup();
}
} else {
if (ImGui::BeginPopupContextItem("InsOpenOpt")) {
if (ImGui::MenuItem("replace...")) {
doAction((curIns>=0 && curIns<(int)e->song.ins.size())?GUI_ACTION_INS_LIST_OPEN_REPLACE:GUI_ACTION_INS_LIST_OPEN);
}
ImGui::Separator();
if (ImGui::MenuItem("load from TX81Z")) {
doAction(GUI_ACTION_TX81Z_REQUEST);
}
ImGui::EndPopup();
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Open (insert; right-click to replace)");
}
}
ImGui::SameLine();
if (ImGui::Button(ICON_FA_FLOPPY_O "##InsSave")) {
if (!settings.unifiedDataView) doAction(GUI_ACTION_INS_LIST_SAVE);
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Save");
}
if (settings.unifiedDataView) {
if (ImGui::BeginPopupContextItem("UnifiedSave",ImGuiMouseButton_Left)) {
if (ImGui::MenuItem("instrument")) {
doAction(GUI_ACTION_INS_LIST_SAVE);
}
if (ImGui::MenuItem("instrument (legacy .fui)")) {
doAction(GUI_ACTION_INS_LIST_SAVE_OLD);
}
if (ImGui::MenuItem("instrument (.dmp)")) {
doAction(GUI_ACTION_INS_LIST_SAVE_DMP);
}
if (ImGui::MenuItem("wavetable")) {
doAction(GUI_ACTION_WAVE_LIST_SAVE);
}
if (ImGui::MenuItem("wavetable (.dmw)")) {
doAction(GUI_ACTION_WAVE_LIST_SAVE_DMW);
}
if (ImGui::MenuItem("wavetable (raw)")) {
doAction(GUI_ACTION_WAVE_LIST_SAVE_RAW);
}
if (ImGui::MenuItem("sample")) {
doAction(GUI_ACTION_SAMPLE_LIST_SAVE);
}
ImGui::EndPopup();
}
} else {
if (ImGui::BeginPopupContextItem("InsSaveFormats",ImGuiMouseButton_Right)) {
if (ImGui::MenuItem("save in legacy format...")) {
doAction(GUI_ACTION_INS_LIST_SAVE_OLD);
}
if (ImGui::MenuItem("save as .dmp...")) {
doAction(GUI_ACTION_INS_LIST_SAVE_DMP);
}
ImGui::EndPopup();
}
ImGui::SameLine();
if (ImGui::ArrowButton("InsUp",ImGuiDir_Up)) {
doAction(GUI_ACTION_INS_LIST_MOVE_UP);
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Move up");
}
ImGui::SameLine();
if (ImGui::ArrowButton("InsDown",ImGuiDir_Down)) {
doAction(GUI_ACTION_INS_LIST_MOVE_DOWN);
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Move down");
}
}
ImGui::SameLine();
if (ImGui::Button(ICON_FA_TIMES "##InsDelete")) {
if (!settings.unifiedDataView) doAction(GUI_ACTION_INS_LIST_DELETE);
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Delete");
}
if (settings.unifiedDataView) {
if (ImGui::BeginPopupContextItem("UnifiedDelete",ImGuiMouseButton_Left)) {
if (ImGui::MenuItem("instrument")) {
doAction(GUI_ACTION_INS_LIST_DELETE);
}
if (ImGui::MenuItem("wavetable")) {
doAction(GUI_ACTION_WAVE_LIST_DELETE);
}
if (ImGui::MenuItem("sample")) {
doAction(GUI_ACTION_SAMPLE_LIST_DELETE);
}
ImGui::EndPopup();
}
}
ImGui::Separator();
int availableRows=ImGui::GetContentRegionAvail().y/ImGui::GetFrameHeight();
if (availableRows<1) availableRows=1;
int columns=settings.horizontalDataView?(int)(ceil((double)(e->song.ins.size()+1)/(double)availableRows)):1;
if (columns<1) columns=1;
if (columns>64) columns=64;
if (ImGui::BeginTable("InsListScroll",columns,(settings.horizontalDataView?ImGuiTableFlags_ScrollX:0)|ImGuiTableFlags_ScrollY)) {
if (settings.unifiedDataView) {
ImGui::TableNextRow();
ImGui::TableNextColumn();
ImGui::Text(ICON_FA_TASKS " Instruments");
ImGui::Indent();
}
if (settings.horizontalDataView) {
ImGui::TableNextRow();
}
int curRow=0;
for (int i=-1; i<(int)e->song.ins.size(); i++) {
void FurnaceGUI::insListItem(int i) {
ImGui::PushID(i);
String name=ICON_FA_CIRCLE_O;
const char* insType="Bug!";
@ -447,12 +247,6 @@ void FurnaceGUI::drawInsList(bool asChild) {
} else {
ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_TEXT]);
}
if (!settings.horizontalDataView) {
ImGui::TableNextRow();
ImGui::TableNextColumn();
} else if (curRow==0) {
ImGui::TableNextColumn();
}
if (ImGui::Selectable(name.c_str(),(i==-1)?(curIns<0 || curIns>=e->song.insLen):(curIns==i))) {
curIns=i;
wavePreviewInit=true;
@ -508,11 +302,272 @@ void FurnaceGUI::drawInsList(bool asChild) {
ImGui::SameLine();
ImGui::Text("- None -");
}
ImGui::PopID();
ImGui::PopStyleColor();
}
void FurnaceGUI::drawInsList(bool asChild) {
if (nextWindow==GUI_WINDOW_INS_LIST) {
insListOpen=true;
ImGui::SetNextWindowFocus();
nextWindow=GUI_WINDOW_NOTHING;
}
if (!insListOpen && !asChild) return;
bool began=false;
if (asChild) {
began=ImGui::BeginChild("Instruments");
} else {
began=ImGui::Begin("Instruments",&insListOpen,globalWinFlags);
}
if (began) {
if (settings.unifiedDataView) settings.horizontalDataView=0;
if (ImGui::Button(ICON_FA_PLUS "##InsAdd")) {
if (!settings.unifiedDataView) doAction(GUI_ACTION_INS_LIST_ADD);
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Add");
}
if (settings.unifiedDataView) {
if (ImGui::BeginPopupContextItem("UnifiedAdd",ImGuiMouseButton_Left)) {
if (ImGui::MenuItem("instrument")) {
doAction(GUI_ACTION_INS_LIST_ADD);
}
if (ImGui::MenuItem("wavetable")) {
doAction(GUI_ACTION_WAVE_LIST_ADD);
}
if (ImGui::MenuItem("sample (create)")) {
doAction(GUI_ACTION_SAMPLE_LIST_ADD);
}
ImGui::EndPopup();
}
} else {
if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) {
displayInsTypeList=true;
displayInsTypeListMakeInsSample=-1;
}
}
ImGui::SameLine();
if (ImGui::Button(ICON_FA_FILES_O "##InsClone")) {
if (!settings.unifiedDataView) doAction(GUI_ACTION_INS_LIST_DUPLICATE);
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Duplicate");
}
if (settings.unifiedDataView) {
if (ImGui::BeginPopupContextItem("UnifiedClone",ImGuiMouseButton_Left)) {
if (ImGui::MenuItem("instrument")) {
doAction(GUI_ACTION_INS_LIST_DUPLICATE);
}
if (ImGui::MenuItem("wavetable")) {
doAction(GUI_ACTION_WAVE_LIST_DUPLICATE);
}
if (ImGui::MenuItem("sample")) {
doAction(GUI_ACTION_SAMPLE_LIST_DUPLICATE);
}
ImGui::EndPopup();
}
}
ImGui::SameLine();
if (ImGui::Button(ICON_FA_FOLDER_OPEN "##InsLoad")) {
if (!settings.unifiedDataView) doAction(GUI_ACTION_INS_LIST_OPEN);
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Open");
}
if (settings.unifiedDataView) {
if (ImGui::BeginPopupContextItem("UnifiedLoad",ImGuiMouseButton_Left)) {
if (ImGui::MenuItem("instrument")) {
doAction(GUI_ACTION_INS_LIST_OPEN);
}
if (ImGui::MenuItem("instrument (replace...)")) {
doAction((curIns>=0 && curIns<(int)e->song.ins.size())?GUI_ACTION_INS_LIST_OPEN_REPLACE:GUI_ACTION_INS_LIST_OPEN);
}
if (ImGui::MenuItem("wavetable")) {
doAction(GUI_ACTION_WAVE_LIST_OPEN);
}
if (ImGui::MenuItem("sample")) {
doAction(GUI_ACTION_SAMPLE_LIST_OPEN);
}
ImGui::Separator();
if (ImGui::MenuItem("instrument from TX81Z")) {
doAction(GUI_ACTION_TX81Z_REQUEST);
}
ImGui::EndPopup();
}
} else {
if (ImGui::BeginPopupContextItem("InsOpenOpt")) {
if (ImGui::MenuItem("replace...")) {
doAction((curIns>=0 && curIns<(int)e->song.ins.size())?GUI_ACTION_INS_LIST_OPEN_REPLACE:GUI_ACTION_INS_LIST_OPEN);
}
ImGui::Separator();
if (ImGui::MenuItem("load from TX81Z")) {
doAction(GUI_ACTION_TX81Z_REQUEST);
}
ImGui::EndPopup();
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Open (insert; right-click to replace)");
}
}
ImGui::SameLine();
if (ImGui::Button(ICON_FA_FLOPPY_O "##InsSave")) {
if (!settings.unifiedDataView) doAction(GUI_ACTION_INS_LIST_SAVE);
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Save");
}
if (settings.unifiedDataView) {
if (ImGui::BeginPopupContextItem("UnifiedSave",ImGuiMouseButton_Left)) {
if (ImGui::MenuItem("instrument")) {
doAction(GUI_ACTION_INS_LIST_SAVE);
}
if (ImGui::MenuItem("instrument (legacy .fui)")) {
doAction(GUI_ACTION_INS_LIST_SAVE_OLD);
}
if (ImGui::MenuItem("instrument (.dmp)")) {
doAction(GUI_ACTION_INS_LIST_SAVE_DMP);
}
if (ImGui::MenuItem("wavetable")) {
doAction(GUI_ACTION_WAVE_LIST_SAVE);
}
if (ImGui::MenuItem("wavetable (.dmw)")) {
doAction(GUI_ACTION_WAVE_LIST_SAVE_DMW);
}
if (ImGui::MenuItem("wavetable (raw)")) {
doAction(GUI_ACTION_WAVE_LIST_SAVE_RAW);
}
if (ImGui::MenuItem("sample")) {
doAction(GUI_ACTION_SAMPLE_LIST_SAVE);
}
ImGui::EndPopup();
}
} else {
if (ImGui::BeginPopupContextItem("InsSaveFormats",ImGuiMouseButton_Right)) {
if (ImGui::MenuItem("save in legacy format...")) {
doAction(GUI_ACTION_INS_LIST_SAVE_OLD);
}
if (ImGui::MenuItem("save as .dmp...")) {
doAction(GUI_ACTION_INS_LIST_SAVE_DMP);
}
ImGui::EndPopup();
}
ImGui::SameLine();
pushToggleColors(insListDir);
if (ImGui::Button(ICON_FA_SITEMAP "##DirMode")) {
doAction(GUI_ACTION_INS_LIST_DIR_VIEW);
}
popToggleColors();
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Toggle folders/standard view");
}
if (!insListDir) {
ImGui::SameLine();
if (ImGui::ArrowButton("InsUp",ImGuiDir_Up)) {
doAction(GUI_ACTION_INS_LIST_MOVE_UP);
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Move up");
}
ImGui::SameLine();
if (ImGui::ArrowButton("InsDown",ImGuiDir_Down)) {
doAction(GUI_ACTION_INS_LIST_MOVE_DOWN);
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Move down");
}
} else {
ImGui::SameLine();
if (ImGui::Button(ICON_FA_FOLDER "##InsFolder")) {
folderString="";
}
if (ImGui::BeginPopupContextItem("NewInsFolder",ImGuiMouseButton_Left)) {
ImGui::InputText("##FolderName",&folderString);
ImGui::SameLine();
ImGui::BeginDisabled(folderString.empty());
if (ImGui::Button("Create")) {
e->lockEngine([this]() {
e->song.insDir.push_back(DivAssetDir(folderString));
});
ImGui::CloseCurrentPopup();
}
ImGui::EndDisabled();
ImGui::EndPopup();
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("New folder");
}
}
}
ImGui::SameLine();
if (ImGui::Button(ICON_FA_TIMES "##InsDelete")) {
if (!settings.unifiedDataView) doAction(GUI_ACTION_INS_LIST_DELETE);
}
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Delete");
}
if (settings.unifiedDataView) {
if (ImGui::BeginPopupContextItem("UnifiedDelete",ImGuiMouseButton_Left)) {
if (ImGui::MenuItem("instrument")) {
doAction(GUI_ACTION_INS_LIST_DELETE);
}
if (ImGui::MenuItem("wavetable")) {
doAction(GUI_ACTION_WAVE_LIST_DELETE);
}
if (ImGui::MenuItem("sample")) {
doAction(GUI_ACTION_SAMPLE_LIST_DELETE);
}
ImGui::EndPopup();
}
}
ImGui::Separator();
int availableRows=ImGui::GetContentRegionAvail().y/ImGui::GetFrameHeight();
if (availableRows<1) availableRows=1;
int columns=settings.horizontalDataView?(int)(ceil((double)(e->song.ins.size()+1)/(double)availableRows)):1;
if (columns<1) columns=1;
if (columns>64) columns=64;
if (insListDir) columns=1;
if (ImGui::BeginTable("InsListScroll",columns,(settings.horizontalDataView?ImGuiTableFlags_ScrollX:0)|ImGuiTableFlags_ScrollY)) {
if (settings.unifiedDataView) {
ImGui::TableNextRow();
ImGui::TableNextColumn();
ImGui::Text(ICON_FA_TASKS " Instruments");
ImGui::Indent();
}
if (settings.horizontalDataView && !insListDir) {
ImGui::TableNextRow();
}
if (insListDir) {
ImGui::TableNextRow();
ImGui::TableNextColumn();
insListItem(-1);
for (DivAssetDir& i: e->song.insDir) {
if (!i.name.empty()) {
ImGui::Text(ICON_FA_FOLDER_OPEN " %s",i.name.c_str());
ImGui::Indent();
}
for (int j: i.entries) {
insListItem(j);
}
if (!i.name.empty()) {
ImGui::Unindent();
}
}
} else {
int curRow=0;
for (int i=-1; i<(int)e->song.ins.size(); i++) {
if (!settings.horizontalDataView) {
ImGui::TableNextRow();
ImGui::TableNextColumn();
} else if (curRow==0) {
ImGui::TableNextColumn();
}
insListItem(i);
if (settings.horizontalDataView) {
if (++curRow>=availableRows) curRow=0;
}
ImGui::PopID();
}
}
if (settings.unifiedDataView) {
@ -608,6 +663,15 @@ void FurnaceGUI::drawWaveList(bool asChild) {
}
}
ImGui::SameLine();
pushToggleColors(waveListDir);
if (ImGui::Button(ICON_FA_SITEMAP "##WaveDirMode")) {
doAction(GUI_ACTION_WAVE_LIST_DIR_VIEW);
}
popToggleColors();
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Toggle folders/standard view");
}
ImGui::SameLine();
if (ImGui::ArrowButton("WaveUp",ImGuiDir_Up)) {
doAction(GUI_ACTION_WAVE_LIST_MOVE_UP);
}
@ -716,6 +780,15 @@ void FurnaceGUI::drawSampleList(bool asChild) {
ImGui::EndPopup();
}
ImGui::SameLine();
pushToggleColors(sampleListDir);
if (ImGui::Button(ICON_FA_SITEMAP "##SampleDirMode")) {
doAction(GUI_ACTION_SAMPLE_LIST_DIR_VIEW);
}
popToggleColors();
if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("Toggle folders/standard view");
}
ImGui::SameLine();
if (ImGui::ArrowButton("SampleUp",ImGuiDir_Up)) {
doAction(GUI_ACTION_SAMPLE_LIST_MOVE_UP);
}

View file

@ -684,6 +684,9 @@ void FurnaceGUI::doAction(int what) {
wavePreviewInit=true;
updateFMPreview=true;
break;
case GUI_ACTION_INS_LIST_DIR_VIEW:
insListDir=!insListDir;
break;
case GUI_ACTION_WAVE_LIST_ADD:
curWave=e->addWave();
@ -757,6 +760,9 @@ void FurnaceGUI::doAction(int what) {
if (++curWave>=(int)e->song.wave.size()) curWave=((int)e->song.wave.size())-1;
wantScrollList=true;
break;
case GUI_ACTION_WAVE_LIST_DIR_VIEW:
waveListDir=!waveListDir;
break;
case GUI_ACTION_SAMPLE_LIST_ADD:
curSample=e->addSample();
@ -860,6 +866,9 @@ void FurnaceGUI::doAction(int what) {
case GUI_ACTION_SAMPLE_LIST_STOP_PREVIEW:
e->stopSamplePreview();
break;
case GUI_ACTION_SAMPLE_LIST_DIR_VIEW:
sampleListDir=!sampleListDir;
break;
case GUI_ACTION_SAMPLE_SELECT:
if (curSample<0 || curSample>=(int)e->song.sample.size()) break;

View file

@ -5882,6 +5882,10 @@ bool FurnaceGUI::init() {
basicMode=true;
}
insListDir=e->getConfBool("insListDir",false);
waveListDir=e->getConfBool("waveListDir",false);
sampleListDir=e->getConfBool("sampleListDir",false);
tempoView=e->getConfBool("tempoView",true);
waveHex=e->getConfBool("waveHex",false);
waveSigned=e->getConfBool("waveSigned",false);
@ -6309,6 +6313,11 @@ void FurnaceGUI::commitState() {
e->setConf("spoilerOpen",spoilerOpen);
e->setConf("basicMode",basicMode);
// commit dir state
e->setConf("insListDir",insListDir);
e->setConf("waveListDir",waveListDir);
e->setConf("sampleListDir",sampleListDir);
// commit last window size
e->setConf("lastWindowWidth",scrConfW);
e->setConf("lastWindowHeight",scrConfH);
@ -6560,6 +6569,10 @@ FurnaceGUI::FurnaceGUI():
groovesOpen(false),
introMonOpen(false),
basicMode(true),
shortIntro(false),
insListDir(false),
waveListDir(false),
sampleListDir(false),
clockShowReal(true),
clockShowRow(true),
clockShowBeat(true),

View file

@ -566,6 +566,7 @@ enum FurnaceGUIActions {
GUI_ACTION_INS_LIST_EDIT,
GUI_ACTION_INS_LIST_UP,
GUI_ACTION_INS_LIST_DOWN,
GUI_ACTION_INS_LIST_DIR_VIEW,
GUI_ACTION_INS_LIST_MAX,
GUI_ACTION_WAVE_LIST_MIN,
@ -582,6 +583,7 @@ enum FurnaceGUIActions {
GUI_ACTION_WAVE_LIST_EDIT,
GUI_ACTION_WAVE_LIST_UP,
GUI_ACTION_WAVE_LIST_DOWN,
GUI_ACTION_WAVE_LIST_DIR_VIEW,
GUI_ACTION_WAVE_LIST_MAX,
GUI_ACTION_SAMPLE_LIST_MIN,
@ -601,6 +603,7 @@ enum FurnaceGUIActions {
GUI_ACTION_SAMPLE_LIST_DOWN,
GUI_ACTION_SAMPLE_LIST_PREVIEW,
GUI_ACTION_SAMPLE_LIST_STOP_PREVIEW,
GUI_ACTION_SAMPLE_LIST_DIR_VIEW,
GUI_ACTION_SAMPLE_LIST_MAX,
GUI_ACTION_SAMPLE_MIN,
@ -1207,6 +1210,7 @@ class FurnaceGUI {
String workingDirLayout, workingDirROM, workingDirTest;
String mmlString[32];
String mmlStringW, mmlStringSNES, grooveString, grooveListString, mmlStringModTable;
String folderString;
std::vector<DivSystem> sysSearchResults;
std::vector<FurnaceGUISysDef> newSongSearchResults;
@ -1614,6 +1618,7 @@ class FurnaceGUI {
bool groovesOpen, introMonOpen;
bool basicMode, shortIntro;
bool insListDir, waveListDir, sampleListDir;
bool clockShowReal, clockShowRow, clockShowBeat, clockShowMetro, clockShowTime;
float clockMetroTick[16];
@ -1995,6 +2000,10 @@ class FurnaceGUI {
void actualWaveList();
void actualSampleList();
void insListItem(int index);
void waveListItem(int index);
void sampleListItem(int index);
void toggleMobileUI(bool enable, bool force=false);
void pushToggleColors(bool status);

View file

@ -610,6 +610,7 @@ const FurnaceGUIActionDef guiActions[GUI_ACTION_MAX]={
D("INS_LIST_EDIT", "Edit", FURKMOD_SHIFT|SDLK_RETURN),
D("INS_LIST_UP", "Cursor up", SDLK_UP),
D("INS_LIST_DOWN", "Cursor down", SDLK_DOWN),
D("INS_LIST_DIR_VIEW", "Toggle folders/standard view", FURKMOD_CMD|SDLK_v),
D("INS_LIST_MAX", "", NOT_AN_ACTION),
D("WAVE_LIST_MIN", "---Wavetable list", NOT_AN_ACTION),
@ -626,6 +627,7 @@ const FurnaceGUIActionDef guiActions[GUI_ACTION_MAX]={
D("WAVE_LIST_EDIT", "Edit", FURKMOD_SHIFT|SDLK_RETURN),
D("WAVE_LIST_UP", "Cursor up", SDLK_UP),
D("WAVE_LIST_DOWN", "Cursor down", SDLK_DOWN),
D("WAVE_LIST_DIR_VIEW", "Toggle folders/standard view", FURKMOD_CMD|SDLK_v),
D("WAVE_LIST_MAX", "", NOT_AN_ACTION),
D("SAMPLE_LIST_MIN", "---Sample list", NOT_AN_ACTION),
@ -645,6 +647,7 @@ const FurnaceGUIActionDef guiActions[GUI_ACTION_MAX]={
D("SAMPLE_LIST_DOWN", "Cursor down", SDLK_DOWN),
D("SAMPLE_LIST_PREVIEW", "Preview", 0),
D("SAMPLE_LIST_STOP_PREVIEW", "Stop preview", 0),
D("SAMPLE_LIST_DIR_VIEW", "Toggle folders/standard view", FURKMOD_CMD|SDLK_v),
D("SAMPLE_LIST_MAX", "", NOT_AN_ACTION),
D("SAMPLE_MIN", "---Sample editor", NOT_AN_ACTION),

View file

@ -2351,6 +2351,7 @@ void FurnaceGUI::drawSettings() {
UI_KEYBIND_CONFIG(GUI_ACTION_INS_LIST_EDIT);
UI_KEYBIND_CONFIG(GUI_ACTION_INS_LIST_UP);
UI_KEYBIND_CONFIG(GUI_ACTION_INS_LIST_DOWN);
UI_KEYBIND_CONFIG(GUI_ACTION_INS_LIST_DIR_VIEW);
KEYBIND_CONFIG_END;
ImGui::TreePop();
@ -2368,6 +2369,7 @@ void FurnaceGUI::drawSettings() {
UI_KEYBIND_CONFIG(GUI_ACTION_WAVE_LIST_EDIT);
UI_KEYBIND_CONFIG(GUI_ACTION_WAVE_LIST_UP);
UI_KEYBIND_CONFIG(GUI_ACTION_WAVE_LIST_DOWN);
UI_KEYBIND_CONFIG(GUI_ACTION_WAVE_LIST_DIR_VIEW);
KEYBIND_CONFIG_END;
ImGui::TreePop();
@ -2387,6 +2389,7 @@ void FurnaceGUI::drawSettings() {
UI_KEYBIND_CONFIG(GUI_ACTION_SAMPLE_LIST_DOWN);
UI_KEYBIND_CONFIG(GUI_ACTION_SAMPLE_LIST_PREVIEW);
UI_KEYBIND_CONFIG(GUI_ACTION_SAMPLE_LIST_STOP_PREVIEW);
UI_KEYBIND_CONFIG(GUI_ACTION_SAMPLE_LIST_DIR_VIEW);
KEYBIND_CONFIG_END;
ImGui::TreePop();