Merge branch 'master' into ZSMv1
This commit is contained in:
commit
b14bf9ea33
202 changed files with 10451 additions and 1470 deletions
|
|
@ -97,6 +97,11 @@ const char* nesCores[]={
|
|||
"NSFplay"
|
||||
};
|
||||
|
||||
const char* c64Cores[]={
|
||||
"reSID",
|
||||
"reSIDfp"
|
||||
};
|
||||
|
||||
const char* pcspkrOutMethods[]={
|
||||
"evdev SND_TONE",
|
||||
"KIOCSOUND on /dev/tty1",
|
||||
|
|
@ -259,7 +264,7 @@ void FurnaceGUI::drawSettings() {
|
|||
}
|
||||
|
||||
ImGui::Separator();
|
||||
|
||||
|
||||
ImGui::Text("Initial system:");
|
||||
ImGui::SameLine();
|
||||
if (ImGui::Button("Current system")) {
|
||||
|
|
@ -369,7 +374,7 @@ void FurnaceGUI::drawSettings() {
|
|||
} rightClickable
|
||||
ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x-(50.0f*dpiScale));
|
||||
CWSliderScalar("Panning",ImGuiDataType_S8,&settings.initialSys[i+2],&_MINUS_ONE_HUNDRED_TWENTY_SEVEN,&_ONE_HUNDRED_TWENTY_SEVEN); rightClickable
|
||||
|
||||
|
||||
// oh please MSVC don't cry
|
||||
if (ImGui::TreeNode("Configure")) {
|
||||
drawSysConf(-1,(DivSystem)settings.initialSys[i],(unsigned int&)settings.initialSys[i+3],false);
|
||||
|
|
@ -452,7 +457,7 @@ void FurnaceGUI::drawSettings() {
|
|||
if (ImGui::Checkbox("Double click selects entire column",&doubleClickColumnB)) {
|
||||
settings.doubleClickColumn=doubleClickColumnB;
|
||||
}
|
||||
|
||||
|
||||
bool allowEditDockingB=settings.allowEditDocking;
|
||||
if (ImGui::Checkbox("Allow docking editors",&allowEditDockingB)) {
|
||||
settings.allowEditDocking=allowEditDockingB;
|
||||
|
|
@ -509,6 +514,14 @@ void FurnaceGUI::drawSettings() {
|
|||
ImGui::SetTooltip("threaded input processes key presses for note preview on a separate thread (on supported platforms), which reduces latency.\nhowever, crashes have been reported when threaded input is on. enable this option if that is the case.");
|
||||
}
|
||||
|
||||
bool saveWindowPosB=settings.saveWindowPos;
|
||||
if (ImGui::Checkbox("Remember window position",&saveWindowPosB)) {
|
||||
settings.saveWindowPos=saveWindowPosB;
|
||||
}
|
||||
if (ImGui::IsItemHovered()) {
|
||||
ImGui::SetTooltip("remembers the window's last position on startup.");
|
||||
}
|
||||
|
||||
bool blankInsB=settings.blankIns;
|
||||
if (ImGui::Checkbox("New instruments are blank",&blankInsB)) {
|
||||
settings.blankIns=blankInsB;
|
||||
|
|
@ -639,7 +652,7 @@ void FurnaceGUI::drawSettings() {
|
|||
BUFFER_SIZE_SELECTABLE(2048);
|
||||
ImGui::EndCombo();
|
||||
}
|
||||
|
||||
|
||||
ImGui::Text("Quality");
|
||||
ImGui::SameLine();
|
||||
ImGui::Combo("##Quality",&settings.audioQuality,audioQualities,2);
|
||||
|
|
@ -697,7 +710,7 @@ void FurnaceGUI::drawSettings() {
|
|||
}
|
||||
|
||||
if (hasToReloadMidi) {
|
||||
midiMap.read(e->getConfigPath()+DIR_SEPARATOR_STR+"midiIn_"+stripName(settings.midiInDevice)+".cfg");
|
||||
midiMap.read(e->getConfigPath()+DIR_SEPARATOR_STR+"midiIn_"+stripName(settings.midiInDevice)+".cfg");
|
||||
midiMap.compile();
|
||||
}
|
||||
|
||||
|
|
@ -972,6 +985,10 @@ void FurnaceGUI::drawSettings() {
|
|||
ImGui::SameLine();
|
||||
ImGui::Combo("##FDSCore",&settings.fdsCore,nesCores,2);
|
||||
|
||||
ImGui::Text("SID core");
|
||||
ImGui::SameLine();
|
||||
ImGui::Combo("##C64Core",&settings.c64Core,c64Cores,2);
|
||||
|
||||
ImGui::Separator();
|
||||
|
||||
ImGui::Text("PC Speaker strategy");
|
||||
|
|
@ -1113,6 +1130,13 @@ void FurnaceGUI::drawSettings() {
|
|||
|
||||
ImGui::Separator();
|
||||
|
||||
if (ImGui::InputInt("Number of recent files",&settings.maxRecentFile)) {
|
||||
if (settings.maxRecentFile<0) settings.maxRecentFile=0;
|
||||
if (settings.maxRecentFile>30) settings.maxRecentFile=30;
|
||||
}
|
||||
|
||||
ImGui::Separator();
|
||||
|
||||
ImGui::Text("Pattern view labels:");
|
||||
ImGui::InputTextWithHint("Note off (3-char)","OFF",&settings.noteOffLabel);
|
||||
ImGui::InputTextWithHint("Note release (3-char)","===",&settings.noteRelLabel);
|
||||
|
|
@ -1370,7 +1394,7 @@ void FurnaceGUI::drawSettings() {
|
|||
if (ImGui::Checkbox("Unsigned FM detune values",&unsignedDetuneB)) {
|
||||
settings.unsignedDetune=unsignedDetuneB;
|
||||
}
|
||||
|
||||
|
||||
// sorry. temporarily disabled until ImGui has a way to add separators in tables arbitrarily.
|
||||
/*bool sysSeparatorsB=settings.sysSeparators;
|
||||
if (ImGui::Checkbox("Add separators between systems in Orders",&sysSeparatorsB)) {
|
||||
|
|
@ -1580,12 +1604,12 @@ void FurnaceGUI::drawSettings() {
|
|||
UI_COLOR_CONFIG(GUI_COLOR_FM_SECONDARY_MOD,"Mod. accent (secondary)");
|
||||
UI_COLOR_CONFIG(GUI_COLOR_FM_BORDER_MOD,"Mod. border");
|
||||
UI_COLOR_CONFIG(GUI_COLOR_FM_BORDER_SHADOW_MOD,"Mod. border shadow");
|
||||
|
||||
|
||||
UI_COLOR_CONFIG(GUI_COLOR_FM_PRIMARY_CAR,"Car. accent (primary");
|
||||
UI_COLOR_CONFIG(GUI_COLOR_FM_SECONDARY_CAR,"Car. accent (secondary)");
|
||||
UI_COLOR_CONFIG(GUI_COLOR_FM_BORDER_CAR,"Car. border");
|
||||
UI_COLOR_CONFIG(GUI_COLOR_FM_BORDER_SHADOW_CAR,"Car. border shadow");
|
||||
|
||||
|
||||
ImGui::TreePop();
|
||||
}
|
||||
if (ImGui::TreeNode("Macro Editor")) {
|
||||
|
|
@ -1944,7 +1968,7 @@ void FurnaceGUI::drawSettings() {
|
|||
UI_KEYBIND_CONFIG(GUI_ACTION_PAT_COLLAPSE_ROWS);
|
||||
UI_KEYBIND_CONFIG(GUI_ACTION_PAT_EXPAND_ROWS);
|
||||
UI_KEYBIND_CONFIG(GUI_ACTION_PAT_LATCH);
|
||||
|
||||
|
||||
// TODO: collapse/expand pattern and song
|
||||
|
||||
KEYBIND_CONFIG_END;
|
||||
|
|
@ -2156,6 +2180,7 @@ void FurnaceGUI::syncSettings() {
|
|||
settings.snCore=e->getConfInt("snCore",0);
|
||||
settings.nesCore=e->getConfInt("nesCore",0);
|
||||
settings.fdsCore=e->getConfInt("fdsCore",0);
|
||||
settings.c64Core=e->getConfInt("c64Core",1);
|
||||
settings.pcSpeakerOutMethod=e->getConfInt("pcSpeakerOutMethod",0);
|
||||
settings.yrw801Path=e->getConfString("yrw801Path","");
|
||||
settings.tg100Path=e->getConfString("tg100Path","");
|
||||
|
|
@ -2242,6 +2267,7 @@ void FurnaceGUI::syncSettings() {
|
|||
settings.dragMovesSelection=e->getConfInt("dragMovesSelection",2);
|
||||
settings.unsignedDetune=e->getConfInt("unsignedDetune",0);
|
||||
settings.noThreadedInput=e->getConfInt("noThreadedInput",0);
|
||||
settings.saveWindowPos=e->getConfInt("saveWindowPos",1);
|
||||
settings.initialSysName=e->getConfString("initialSysName","");
|
||||
settings.clampSamples=e->getConfInt("clampSamples",0);
|
||||
settings.noteOffLabel=e->getConfString("noteOffLabel","OFF");
|
||||
|
|
@ -2255,6 +2281,7 @@ void FurnaceGUI::syncSettings() {
|
|||
settings.channelStyle=e->getConfInt("channelStyle",0);
|
||||
settings.channelVolStyle=e->getConfInt("channelVolStyle",0);
|
||||
settings.channelFeedbackStyle=e->getConfInt("channelFeedbackStyle",1);
|
||||
settings.maxRecentFile=e->getConfInt("maxRecentFile",10);
|
||||
|
||||
clampSetting(settings.mainFontSize,2,96);
|
||||
clampSetting(settings.patFontSize,2,96);
|
||||
|
|
@ -2268,6 +2295,7 @@ void FurnaceGUI::syncSettings() {
|
|||
clampSetting(settings.snCore,0,1);
|
||||
clampSetting(settings.nesCore,0,1);
|
||||
clampSetting(settings.fdsCore,0,1);
|
||||
clampSetting(settings.c64Core,0,1);
|
||||
clampSetting(settings.pcSpeakerOutMethod,0,4);
|
||||
clampSetting(settings.mainFont,0,6);
|
||||
clampSetting(settings.patFont,0,6);
|
||||
|
|
@ -2344,6 +2372,7 @@ void FurnaceGUI::syncSettings() {
|
|||
clampSetting(settings.dragMovesSelection,0,2);
|
||||
clampSetting(settings.unsignedDetune,0,1);
|
||||
clampSetting(settings.noThreadedInput,0,1);
|
||||
clampSetting(settings.saveWindowPos,0,1);
|
||||
clampSetting(settings.clampSamples,0,1);
|
||||
clampSetting(settings.saveUnusedPatterns,0,1);
|
||||
clampSetting(settings.channelColors,0,2);
|
||||
|
|
@ -2351,6 +2380,7 @@ void FurnaceGUI::syncSettings() {
|
|||
clampSetting(settings.channelStyle,0,5);
|
||||
clampSetting(settings.channelVolStyle,0,3);
|
||||
clampSetting(settings.channelFeedbackStyle,0,3);
|
||||
clampSetting(settings.maxRecentFile,0,30);
|
||||
|
||||
settings.initialSys=e->decodeSysDesc(e->getConfString("initialSys",""));
|
||||
if (settings.initialSys.size()<4) {
|
||||
|
|
@ -2375,7 +2405,7 @@ void FurnaceGUI::syncSettings() {
|
|||
|
||||
parseKeybinds();
|
||||
|
||||
midiMap.read(e->getConfigPath()+DIR_SEPARATOR_STR+"midiIn_"+stripName(settings.midiInDevice)+".cfg");
|
||||
midiMap.read(e->getConfigPath()+DIR_SEPARATOR_STR+"midiIn_"+stripName(settings.midiInDevice)+".cfg");
|
||||
midiMap.compile();
|
||||
|
||||
e->setMidiDirect(midiMap.directChannel);
|
||||
|
|
@ -2383,7 +2413,7 @@ void FurnaceGUI::syncSettings() {
|
|||
}
|
||||
|
||||
void FurnaceGUI::commitSettings() {
|
||||
bool sampleROMsChanged = settings.yrw801Path!=e->getConfString("yrw801Path","") ||
|
||||
bool sampleROMsChanged=settings.yrw801Path!=e->getConfString("yrw801Path","") ||
|
||||
settings.tg100Path!=e->getConfString("tg100Path","") ||
|
||||
settings.mu5Path!=e->getConfString("mu5Path","");
|
||||
|
||||
|
|
@ -2403,6 +2433,7 @@ void FurnaceGUI::commitSettings() {
|
|||
e->setConf("snCore",settings.snCore);
|
||||
e->setConf("nesCore",settings.nesCore);
|
||||
e->setConf("fdsCore",settings.fdsCore);
|
||||
e->setConf("c64Core",settings.c64Core);
|
||||
e->setConf("pcSpeakerOutMethod",settings.pcSpeakerOutMethod);
|
||||
e->setConf("yrw801Path",settings.yrw801Path);
|
||||
e->setConf("tg100Path",settings.tg100Path);
|
||||
|
|
@ -2491,6 +2522,7 @@ void FurnaceGUI::commitSettings() {
|
|||
e->setConf("dragMovesSelection",settings.dragMovesSelection);
|
||||
e->setConf("unsignedDetune",settings.unsignedDetune);
|
||||
e->setConf("noThreadedInput",settings.noThreadedInput);
|
||||
e->setConf("saveWindowPos",settings.saveWindowPos);
|
||||
e->setConf("clampSamples",settings.clampSamples);
|
||||
e->setConf("noteOffLabel",settings.noteOffLabel);
|
||||
e->setConf("noteRelLabel",settings.noteRelLabel);
|
||||
|
|
@ -2503,6 +2535,7 @@ void FurnaceGUI::commitSettings() {
|
|||
e->setConf("channelStyle",settings.channelStyle);
|
||||
e->setConf("channelVolStyle",settings.channelVolStyle);
|
||||
e->setConf("channelFeedbackStyle",settings.channelFeedbackStyle);
|
||||
e->setConf("maxRecentFile",settings.maxRecentFile);
|
||||
|
||||
// colors
|
||||
for (int i=0; i<GUI_COLOR_MAX; i++) {
|
||||
|
|
@ -2524,6 +2557,10 @@ void FurnaceGUI::commitSettings() {
|
|||
|
||||
e->saveConf();
|
||||
|
||||
while (!recentFile.empty() && (int)recentFile.size()>settings.maxRecentFile) {
|
||||
recentFile.pop_back();
|
||||
}
|
||||
|
||||
if (sampleROMsChanged) {
|
||||
if (e->loadSampleROMs()) {
|
||||
showError(e->getLastError());
|
||||
|
|
@ -3169,7 +3206,7 @@ void FurnaceGUI::applyUISettings(bool updateFonts) {
|
|||
if ((iconFont=ImGui::GetIO().Fonts->AddFontFromMemoryCompressedTTF(iconFont_compressed_data,iconFont_compressed_size,e->getConfInt("iconSize",16)*dpiScale,&fc,fontRangeIcon))==NULL) {
|
||||
logE("could not load icon font!");
|
||||
}
|
||||
|
||||
|
||||
if (settings.mainFontSize==settings.patFontSize && settings.patFont<5 && builtinFontM[settings.patFont]==builtinFont[settings.mainFont]) {
|
||||
logD("using main font for pat font.");
|
||||
patFont=mainFont;
|
||||
|
|
@ -3203,7 +3240,7 @@ void FurnaceGUI::applyUISettings(bool updateFonts) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ((bigFont=ImGui::GetIO().Fonts->AddFontFromMemoryCompressedTTF(font_plexSans_compressed_data,font_plexSans_compressed_size,40*dpiScale))==NULL) {
|
||||
logE("could not load big UI font!");
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue