GUI: real-time color setting preview
This commit is contained in:
parent
7905b813e0
commit
ac286fc8d1
|
@ -2928,6 +2928,7 @@ bool FurnaceGUI::loop() {
|
|||
break;
|
||||
case GUI_WARN_RESET_COLORS:
|
||||
resetColors();
|
||||
applyUISettings(false);
|
||||
break;
|
||||
case GUI_WARN_GENERIC:
|
||||
break;
|
||||
|
|
|
@ -1126,7 +1126,7 @@ class FurnaceGUI {
|
|||
int load(String path);
|
||||
void exportAudio(String path, DivAudioExportModes mode);
|
||||
|
||||
void applyUISettings();
|
||||
void applyUISettings(bool updateFonts=true);
|
||||
void initSystemPresets();
|
||||
|
||||
void encodeMMLStr(String& target, int* macro, int macroLen, int macroLoop, int macroRel, bool hex=false);
|
||||
|
|
|
@ -148,7 +148,9 @@ const char* specificControls[18]={
|
|||
}
|
||||
|
||||
#define UI_COLOR_CONFIG(what,label) \
|
||||
ImGui::ColorEdit4(label "##CC_" #what,(float*)&uiColors[what]);
|
||||
if (ImGui::ColorEdit4(label "##CC_" #what,(float*)&uiColors[what])) { \
|
||||
applyUISettings(false); \
|
||||
}
|
||||
|
||||
#define KEYBIND_CONFIG_BEGIN(id) \
|
||||
if (ImGui::BeginTable(id,2)) {
|
||||
|
@ -1702,6 +1704,7 @@ bool FurnaceGUI::importColors(String path) {
|
|||
}
|
||||
}
|
||||
fclose(f);
|
||||
applyUISettings(false);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1945,7 +1948,7 @@ void FurnaceGUI::parseKeybinds() {
|
|||
#define SYSTEM_PAT_FONT_PATH_3 "/usr/share/fonts/ubuntu/UbuntuMono-R.ttf"
|
||||
#endif
|
||||
|
||||
void FurnaceGUI::applyUISettings() {
|
||||
void FurnaceGUI::applyUISettings(bool updateFonts) {
|
||||
ImGuiStyle sty;
|
||||
if (settings.guiColorsBase) {
|
||||
ImGui::StyleColorsLight(&sty);
|
||||
|
@ -1956,9 +1959,11 @@ void FurnaceGUI::applyUISettings() {
|
|||
if (settings.dpiScale>=0.5f) dpiScale=settings.dpiScale;
|
||||
|
||||
// colors
|
||||
if (updateFonts) {
|
||||
for (int i=0; i<GUI_COLOR_MAX; i++) {
|
||||
uiColors[i]=ImGui::ColorConvertU32ToFloat4(e->getConfInt(guiColors[i].name,guiColors[i].defaultColor));
|
||||
}
|
||||
}
|
||||
|
||||
for (int i=0; i<64; i++) {
|
||||
ImVec4 col1=uiColors[GUI_COLOR_PATTERN_VOLUME_MIN];
|
||||
|
@ -2085,6 +2090,7 @@ void FurnaceGUI::applyUISettings() {
|
|||
sysCmd2Grad[i]=ImGui::GetColorU32(ImVec4(base.x,base.y,base.z,((float)i/255.0f)*base.w));
|
||||
}
|
||||
|
||||
if (updateFonts) {
|
||||
// set to 800 for now due to problems with unifont
|
||||
static const ImWchar upTo800[]={0x20,0x7e,0xa0,0x800,0};
|
||||
ImFontGlyphRangesBuilder range;
|
||||
|
@ -2199,6 +2205,7 @@ void FurnaceGUI::applyUISettings() {
|
|||
|
||||
mainFont->FallbackChar='?';
|
||||
mainFont->DotChar='.';
|
||||
}
|
||||
|
||||
// TODO: allow changing these colors.
|
||||
ImGuiFileDialog::Instance()->SetFileStyle(IGFD_FileStyleByTypeDir,"",uiColors[GUI_COLOR_FILE_DIR],ICON_FA_FOLDER_O);
|
||||
|
@ -2224,6 +2231,8 @@ void FurnaceGUI::applyUISettings() {
|
|||
ImGuiFileDialog::Instance()->SetFileStyle(IGFD_FileStyleByExtension,".fti",uiColors[GUI_COLOR_FILE_INSTR],ICON_FA_FILE);
|
||||
ImGuiFileDialog::Instance()->SetFileStyle(IGFD_FileStyleByExtension,".bti",uiColors[GUI_COLOR_FILE_INSTR],ICON_FA_FILE);
|
||||
|
||||
if (updateFonts) {
|
||||
if (fileDialog!=NULL) delete fileDialog;
|
||||
fileDialog=new FurnaceGUIFileDialog(settings.sysFileDialog);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue