GUI: now let's put these config options into group

s
This commit is contained in:
tildearrow 2023-12-22 20:22:53 -05:00
parent 27f4f6830e
commit e0108e5635
2 changed files with 137 additions and 86 deletions

View file

@ -478,6 +478,7 @@ enum FurnaceGUISettingGroups: unsigned int {
GUI_SETTINGS_APPEARANCE=64,
GUI_SETTINGS_LAYOUTS=128,
GUI_SETTINGS_COLOR=256,
GUI_SETTINGS_EMULATION=512,
GUI_SETTINGS_ALL=0xffffffff
};

View file

@ -4121,51 +4121,141 @@ void FurnaceGUI::readConfig(DivConfig& conf, FurnaceGUISettingGroups groups) {
}
void FurnaceGUI::writeConfig(DivConfig& conf, FurnaceGUISettingGroups groups) {
conf.set("mainFontSize",settings.mainFontSize);
conf.set("headFontSize",settings.headFontSize);
conf.set("patFontSize",settings.patFontSize);
conf.set("iconSize",settings.iconSize);
conf.set("audioEngine",String(audioBackends[settings.audioEngine]));
conf.set("audioDevice",settings.audioDevice);
conf.set("midiInDevice",settings.midiInDevice);
conf.set("midiOutDevice",settings.midiOutDevice);
conf.set("renderDriver",settings.renderDriver);
conf.set("sdlAudioDriver",settings.sdlAudioDriver);
conf.set("audioQuality",settings.audioQuality);
conf.set("audioHiPass",settings.audioHiPass);
conf.set("audioBufSize",settings.audioBufSize);
conf.set("audioRate",settings.audioRate);
conf.set("audioChans",settings.audioChans);
conf.set("arcadeCore",settings.arcadeCore);
conf.set("ym2612Core",settings.ym2612Core);
conf.set("snCore",settings.snCore);
conf.set("nesCore",settings.nesCore);
conf.set("fdsCore",settings.fdsCore);
conf.set("c64Core",settings.c64Core);
conf.set("pokeyCore",settings.pokeyCore);
conf.set("opnCore",settings.opnCore);
conf.set("opl2Core",settings.opl2Core);
conf.set("opl3Core",settings.opl3Core);
conf.set("arcadeCoreRender",settings.arcadeCoreRender);
conf.set("ym2612CoreRender",settings.ym2612CoreRender);
conf.set("snCoreRender",settings.snCoreRender);
conf.set("nesCoreRender",settings.nesCoreRender);
conf.set("fdsCoreRender",settings.fdsCoreRender);
conf.set("c64CoreRender",settings.c64CoreRender);
conf.set("pokeyCoreRender",settings.pokeyCoreRender);
conf.set("opnCoreRender",settings.opnCoreRender);
conf.set("opl2CoreRender",settings.opl2CoreRender);
conf.set("opl3CoreRender",settings.opl3CoreRender);
conf.set("pcSpeakerOutMethod",settings.pcSpeakerOutMethod);
conf.set("yrw801Path",settings.yrw801Path);
conf.set("tg100Path",settings.tg100Path);
conf.set("mu5Path",settings.mu5Path);
conf.set("mainFont",settings.mainFont);
conf.set("headFont",settings.headFont);
conf.set("patFont",settings.patFont);
conf.set("mainFontPath",settings.mainFontPath);
conf.set("headFontPath",settings.headFontPath);
conf.set("patFontPath",settings.patFontPath);
// general
if (groups&GUI_SETTINGS_GENERAL) {
conf.set("renderDriver",settings.renderDriver);
conf.set("noDMFCompat",settings.noDMFCompat);
conf.set("dpiScale",settings.dpiScale);
conf.set("initialSys2",settings.initialSys.toBase64());
conf.set("initialSysName",settings.initialSysName);
}
// audio
if (groups&GUI_SETTINGS_AUDIO) {
conf.set("audioEngine",String(audioBackends[settings.audioEngine]));
conf.set("audioDevice",settings.audioDevice);
conf.set("midiInDevice",settings.midiInDevice);
conf.set("midiOutDevice",settings.midiOutDevice);
conf.set("sdlAudioDriver",settings.sdlAudioDriver);
conf.set("audioQuality",settings.audioQuality);
conf.set("audioHiPass",settings.audioHiPass);
conf.set("audioBufSize",settings.audioBufSize);
conf.set("audioRate",settings.audioRate);
conf.set("audioChans",settings.audioChans);
}
// MIDI
if (groups&GUI_SETTINGS_MIDI) {
}
// keyboard
if (groups&GUI_SETTINGS_KEYBOARD) {
// keybinds
for (int i=0; i<GUI_ACTION_MAX; i++) {
if (guiActions[i].defaultBind==-1) continue; // not a bind
conf.set(String("keybind_GUI_ACTION_")+String(guiActions[i].name),actionKeys[i]);
}
conf.set("noteKeys",encodeKeyMap(noteKeys));
}
// behavior
if (groups&GUI_SETTINGS_BEHAVIOR) {
}
// font
if (groups&GUI_SETTINGS_FONT) {
conf.set("mainFontSize",settings.mainFontSize);
conf.set("headFontSize",settings.headFontSize);
conf.set("patFontSize",settings.patFontSize);
conf.set("iconSize",settings.iconSize);
conf.set("mainFont",settings.mainFont);
conf.set("headFont",settings.headFont);
conf.set("patFont",settings.patFont);
conf.set("mainFontPath",settings.mainFontPath);
conf.set("headFontPath",settings.headFontPath);
conf.set("patFontPath",settings.patFontPath);
conf.set("loadJapanese",settings.loadJapanese);
conf.set("loadChinese",settings.loadChinese);
conf.set("loadChineseTraditional",settings.loadChineseTraditional);
conf.set("loadKorean",settings.loadKorean);
}
// appearance
if (groups&GUI_SETTINGS_APPEARANCE) {
conf.set("oscRoundedCorners",settings.oscRoundedCorners);
conf.set("oscTakesEntireWindow",settings.oscTakesEntireWindow);
conf.set("oscBorder",settings.oscBorder);
conf.set("oscEscapesBoundary",settings.oscEscapesBoundary);
conf.set("oscMono",settings.oscMono);
conf.set("oscAntiAlias",settings.oscAntiAlias);
conf.set("channelColors",settings.channelColors);
conf.set("channelTextColors",settings.channelTextColors);
conf.set("channelStyle",settings.channelStyle);
conf.set("channelVolStyle",settings.channelVolStyle);
conf.set("channelFeedbackStyle",settings.channelFeedbackStyle);
conf.set("channelFont",settings.channelFont);
conf.set("channelTextCenter",settings.channelTextCenter);
}
// layout
if (groups&GUI_SETTINGS_LAYOUTS) {
conf.set("fmLayout",settings.fmLayout);
conf.set("sampleLayout",settings.sampleLayout);
conf.set("waveLayout",settings.waveLayout);
conf.set("exportOptionsLayout",settings.exportOptionsLayout);
}
// color
if (groups&GUI_SETTINGS_COLOR) {
conf.set("guiColorsBase",settings.guiColorsBase);
conf.set("guiColorsShading",settings.guiColorsShading);
conf.set("basicColors",settings.basicColors);
// colors
for (int i=0; i<GUI_COLOR_MAX; i++) {
conf.set(guiColors[i].name,(int)ImGui::ColorConvertFloat4ToU32(uiColors[i]));
}
}
// emulation
if (groups&GUI_SETTINGS_EMULATION) {
conf.set("arcadeCore",settings.arcadeCore);
conf.set("ym2612Core",settings.ym2612Core);
conf.set("snCore",settings.snCore);
conf.set("nesCore",settings.nesCore);
conf.set("fdsCore",settings.fdsCore);
conf.set("c64Core",settings.c64Core);
conf.set("pokeyCore",settings.pokeyCore);
conf.set("opnCore",settings.opnCore);
conf.set("opl2Core",settings.opl2Core);
conf.set("opl3Core",settings.opl3Core);
conf.set("arcadeCoreRender",settings.arcadeCoreRender);
conf.set("ym2612CoreRender",settings.ym2612CoreRender);
conf.set("snCoreRender",settings.snCoreRender);
conf.set("nesCoreRender",settings.nesCoreRender);
conf.set("fdsCoreRender",settings.fdsCoreRender);
conf.set("c64CoreRender",settings.c64CoreRender);
conf.set("pokeyCoreRender",settings.pokeyCoreRender);
conf.set("opnCoreRender",settings.opnCoreRender);
conf.set("opl2CoreRender",settings.opl2CoreRender);
conf.set("opl3CoreRender",settings.opl3CoreRender);
conf.set("pcSpeakerOutMethod",settings.pcSpeakerOutMethod);
conf.set("yrw801Path",settings.yrw801Path);
conf.set("tg100Path",settings.tg100Path);
conf.set("mu5Path",settings.mu5Path);
}
// TODO: the fucking rest
conf.set("patRowsBase",settings.patRowsBase);
conf.set("orderRowsBase",settings.orderRowsBase);
conf.set("soloAction",settings.soloAction);
@ -4186,10 +4276,7 @@ void FurnaceGUI::writeConfig(DivConfig& conf, FurnaceGUISettingGroups groups) {
conf.set("forceMono",settings.forceMono);
conf.set("controlLayout",settings.controlLayout);
conf.set("statusDisplay",settings.statusDisplay);
conf.set("dpiScale",settings.dpiScale);
conf.set("viewPrevPattern",settings.viewPrevPattern);
conf.set("guiColorsBase",settings.guiColorsBase);
conf.set("guiColorsShading",settings.guiColorsShading);
conf.set("avoidRaisingPattern",settings.avoidRaisingPattern);
conf.set("insFocusesPattern",settings.insFocusesPattern);
conf.set("stepOnInsert",settings.stepOnInsert);
@ -4198,13 +4285,6 @@ void FurnaceGUI::writeConfig(DivConfig& conf, FurnaceGUISettingGroups groups) {
conf.set("roundedWindows",settings.roundedWindows);
conf.set("roundedButtons",settings.roundedButtons);
conf.set("roundedMenus",settings.roundedMenus);
conf.set("loadJapanese",settings.loadJapanese);
conf.set("loadChinese",settings.loadChinese);
conf.set("loadChineseTraditional",settings.loadChineseTraditional);
conf.set("loadKorean",settings.loadKorean);
conf.set("fmLayout",settings.fmLayout);
conf.set("sampleLayout",settings.sampleLayout);
conf.set("waveLayout",settings.waveLayout);
conf.set("susPosition",settings.susPosition);
conf.set("effectCursorDir",settings.effectCursorDir);
conf.set("cursorPastePos",settings.cursorPastePos);
@ -4212,12 +4292,7 @@ void FurnaceGUI::writeConfig(DivConfig& conf, FurnaceGUISettingGroups groups) {
conf.set("titleBarSys",settings.titleBarSys);
conf.set("frameBorders",settings.frameBorders);
conf.set("effectDeletionAltersValue",settings.effectDeletionAltersValue);
conf.set("oscRoundedCorners",settings.oscRoundedCorners);
conf.set("oscTakesEntireWindow",settings.oscTakesEntireWindow);
conf.set("oscBorder",settings.oscBorder);
conf.set("oscEscapesBoundary",settings.oscEscapesBoundary);
conf.set("oscMono",settings.oscMono);
conf.set("oscAntiAlias",settings.oscAntiAlias);
conf.set("separateFMColors",settings.separateFMColors);
conf.set("insEditColorize",settings.insEditColorize);
conf.set("metroVol",settings.metroVol);
@ -4233,8 +4308,6 @@ void FurnaceGUI::writeConfig(DivConfig& conf, FurnaceGUISettingGroups groups) {
conf.set("eventDelay",settings.eventDelay);
conf.set("moveWindowTitle",settings.moveWindowTitle);
conf.set("hiddenSystems",settings.hiddenSystems);
conf.set("initialSys2",settings.initialSys.toBase64());
conf.set("initialSysName",settings.initialSysName);
conf.set("horizontalDataView",settings.horizontalDataView);
conf.set("noMultiSystem",settings.noMultiSystem);
conf.set("oldMacroVSlider",settings.oldMacroVSlider);
@ -4258,13 +4331,6 @@ void FurnaceGUI::writeConfig(DivConfig& conf, FurnaceGUISettingGroups groups) {
conf.set("emptyLabel",settings.emptyLabel);
conf.set("emptyLabel2",settings.emptyLabel2);
conf.set("saveUnusedPatterns",settings.saveUnusedPatterns);
conf.set("channelColors",settings.channelColors);
conf.set("channelTextColors",settings.channelTextColors);
conf.set("channelStyle",settings.channelStyle);
conf.set("channelVolStyle",settings.channelVolStyle);
conf.set("channelFeedbackStyle",settings.channelFeedbackStyle);
conf.set("channelFont",settings.channelFont);
conf.set("channelTextCenter",settings.channelTextCenter);
conf.set("maxRecentFile",settings.maxRecentFile);
conf.set("midiOutClock",settings.midiOutClock);
conf.set("midiOutTime",settings.midiOutTime);
@ -4293,7 +4359,6 @@ void FurnaceGUI::writeConfig(DivConfig& conf, FurnaceGUISettingGroups groups) {
conf.set("newSongBehavior",settings.newSongBehavior);
conf.set("memUsageUnit",settings.memUsageUnit);
conf.set("cursorFollowsWheel",settings.cursorFollowsWheel);
conf.set("noDMFCompat",settings.noDMFCompat);
conf.set("removeInsOff",settings.removeInsOff);
conf.set("removeVolOff",settings.removeVolOff);
conf.set("playOnLoad",settings.playOnLoad);
@ -4302,7 +4367,6 @@ void FurnaceGUI::writeConfig(DivConfig& conf, FurnaceGUISettingGroups groups) {
conf.set("centerPopup",settings.centerPopup);
conf.set("insIconsStyle",settings.insIconsStyle);
conf.set("classicChipOptions",settings.classicChipOptions);
conf.set("exportOptionsLayout",settings.exportOptionsLayout);
conf.set("wasapiEx",settings.wasapiEx);
conf.set("chanOscThreads",settings.chanOscThreads);
conf.set("renderPoolThreads",settings.renderPoolThreads);
@ -4316,20 +4380,6 @@ void FurnaceGUI::writeConfig(DivConfig& conf, FurnaceGUISettingGroups groups) {
conf.set("fontAutoHint",settings.fontAutoHint);
conf.set("fontAntiAlias",settings.fontAntiAlias);
conf.set("selectAssetOnLoad",settings.selectAssetOnLoad);
conf.set("basicColors",settings.basicColors);
// colors
for (int i=0; i<GUI_COLOR_MAX; i++) {
conf.set(guiColors[i].name,(int)ImGui::ColorConvertFloat4ToU32(uiColors[i]));
}
// keybinds
for (int i=0; i<GUI_ACTION_MAX; i++) {
if (guiActions[i].defaultBind==-1) continue; // not a bind
conf.set(String("keybind_GUI_ACTION_")+String(guiActions[i].name),actionKeys[i]);
}
conf.set("noteKeys",encodeKeyMap(noteKeys));
}
void FurnaceGUI::syncSettings() {