GUI: add pattern label customization settings
This commit is contained in:
parent
ee16d20047
commit
bb5cee4a66
|
@ -24,7 +24,7 @@
|
||||||
|
|
||||||
#include "actionUtil.h"
|
#include "actionUtil.h"
|
||||||
|
|
||||||
const char* noteNameNormal(short note, short octave) {
|
const char* FurnaceGUI::noteNameNormal(short note, short octave) {
|
||||||
if (note==100) { // note cut
|
if (note==100) { // note cut
|
||||||
return "OFF";
|
return "OFF";
|
||||||
} else if (note==101) { // note off and envelope release
|
} else if (note==101) { // note off and envelope release
|
||||||
|
|
|
@ -593,11 +593,11 @@ void FurnaceGUI::drawFindReplace() {
|
||||||
i.note=0;
|
i.note=0;
|
||||||
}
|
}
|
||||||
if (i.note==130) {
|
if (i.note==130) {
|
||||||
snprintf(tempID,1024,"REL");
|
snprintf(tempID,1024,"%s##MREL",macroRelLabel);
|
||||||
} else if (i.note==129) {
|
} else if (i.note==129) {
|
||||||
snprintf(tempID,1024,"===");
|
snprintf(tempID,1024,"%s##NREL",noteRelLabel);
|
||||||
} else if (i.note==128) {
|
} else if (i.note==128) {
|
||||||
snprintf(tempID,1024,"OFF");
|
snprintf(tempID,1024,"%s##NOFF",noteOffLabel);
|
||||||
} else if (i.note>=-60 && i.note<120) {
|
} else if (i.note>=-60 && i.note<120) {
|
||||||
snprintf(tempID,1024,"%s",noteNames[i.note+60]);
|
snprintf(tempID,1024,"%s",noteNames[i.note+60]);
|
||||||
} else {
|
} else {
|
||||||
|
@ -613,13 +613,13 @@ void FurnaceGUI::drawFindReplace() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (i.noteMode!=GUI_QUERY_RANGE && i.noteMode!=GUI_QUERY_RANGE_NOT) {
|
if (i.noteMode!=GUI_QUERY_RANGE && i.noteMode!=GUI_QUERY_RANGE_NOT) {
|
||||||
if (ImGui::Selectable("OFF",i.note==128)) {
|
if (ImGui::Selectable(noteOffLabel,i.note==128)) {
|
||||||
i.note=128;
|
i.note=128;
|
||||||
}
|
}
|
||||||
if (ImGui::Selectable("===",i.note==129)) {
|
if (ImGui::Selectable(noteRelLabel,i.note==129)) {
|
||||||
i.note=129;
|
i.note=129;
|
||||||
}
|
}
|
||||||
if (ImGui::Selectable("REL",i.note==130)) {
|
if (ImGui::Selectable(macroRelLabel,i.note==130)) {
|
||||||
i.note=130;
|
i.note=130;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -916,11 +916,11 @@ void FurnaceGUI::drawFindReplace() {
|
||||||
ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x);
|
ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x);
|
||||||
if (queryReplaceNoteMode==GUI_QUERY_REPLACE_SET) {
|
if (queryReplaceNoteMode==GUI_QUERY_REPLACE_SET) {
|
||||||
if (queryReplaceNote==130) {
|
if (queryReplaceNote==130) {
|
||||||
snprintf(tempID,1024,"REL");
|
snprintf(tempID,1024,"%s##MREL",macroRelLabel);
|
||||||
} else if (queryReplaceNote==129) {
|
} else if (queryReplaceNote==129) {
|
||||||
snprintf(tempID,1024,"===");
|
snprintf(tempID,1024,"%s##NREL",noteRelLabel);
|
||||||
} else if (queryReplaceNote==128) {
|
} else if (queryReplaceNote==128) {
|
||||||
snprintf(tempID,1024,"OFF");
|
snprintf(tempID,1024,"%s##NOFF",noteOffLabel);
|
||||||
} else if (queryReplaceNote>=-60 && queryReplaceNote<120) {
|
} else if (queryReplaceNote>=-60 && queryReplaceNote<120) {
|
||||||
snprintf(tempID,1024,"%s",noteNames[queryReplaceNote+60]);
|
snprintf(tempID,1024,"%s",noteNames[queryReplaceNote+60]);
|
||||||
} else {
|
} else {
|
||||||
|
@ -934,13 +934,13 @@ void FurnaceGUI::drawFindReplace() {
|
||||||
queryReplaceNote=j-60;
|
queryReplaceNote=j-60;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ImGui::Selectable("OFF",queryReplaceNote==128)) {
|
if (ImGui::Selectable(noteOffLabel,queryReplaceNote==128)) {
|
||||||
queryReplaceNote=128;
|
queryReplaceNote=128;
|
||||||
}
|
}
|
||||||
if (ImGui::Selectable("===",queryReplaceNote==129)) {
|
if (ImGui::Selectable(noteRelLabel,queryReplaceNote==129)) {
|
||||||
queryReplaceNote=129;
|
queryReplaceNote=129;
|
||||||
}
|
}
|
||||||
if (ImGui::Selectable("REL",queryReplaceNote==130)) {
|
if (ImGui::Selectable(macroRelLabel,queryReplaceNote==130)) {
|
||||||
queryReplaceNote=130;
|
queryReplaceNote=130;
|
||||||
}
|
}
|
||||||
ImGui::EndCombo();
|
ImGui::EndCombo();
|
||||||
|
|
|
@ -84,13 +84,13 @@ void FurnaceGUI::bindEngine(DivEngine* eng) {
|
||||||
|
|
||||||
const char* FurnaceGUI::noteName(short note, short octave) {
|
const char* FurnaceGUI::noteName(short note, short octave) {
|
||||||
if (note==100) {
|
if (note==100) {
|
||||||
return "OFF";
|
return noteOffLabel;
|
||||||
} else if (note==101) { // note off and envelope release
|
} else if (note==101) { // note off and envelope release
|
||||||
return "===";
|
return noteRelLabel;
|
||||||
} else if (note==102) { // envelope release only
|
} else if (note==102) { // envelope release only
|
||||||
return "REL";
|
return macroRelLabel;
|
||||||
} else if (octave==0 && note==0) {
|
} else if (octave==0 && note==0) {
|
||||||
return "...";
|
return emptyLabel;
|
||||||
} else if (note==0 && octave!=0) {
|
} else if (note==0 && octave!=0) {
|
||||||
return "BUG";
|
return "BUG";
|
||||||
}
|
}
|
||||||
|
@ -5067,4 +5067,16 @@ FurnaceGUI::FurnaceGUI():
|
||||||
memset(queryReplaceEffectValDo,0,sizeof(bool)*8);
|
memset(queryReplaceEffectValDo,0,sizeof(bool)*8);
|
||||||
|
|
||||||
chanOscGrad.bgColor=ImVec4(0.0f,0.0f,0.0f,1.0f);
|
chanOscGrad.bgColor=ImVec4(0.0f,0.0f,0.0f,1.0f);
|
||||||
|
|
||||||
|
memset(noteOffLabel,0,32);
|
||||||
|
memset(noteRelLabel,0,32);
|
||||||
|
memset(macroRelLabel,0,32);
|
||||||
|
memset(emptyLabel,0,32);
|
||||||
|
memset(emptyLabel2,0,32);
|
||||||
|
|
||||||
|
strncat(noteOffLabel,"OFF",32);
|
||||||
|
strncat(noteRelLabel,"===",32);
|
||||||
|
strncat(macroRelLabel,"REL",32);
|
||||||
|
strncat(emptyLabel,"...",32);
|
||||||
|
strncat(emptyLabel2,"..",32);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1017,6 +1017,12 @@ class FurnaceGUI {
|
||||||
ImU32 sysCmd1Grad[256];
|
ImU32 sysCmd1Grad[256];
|
||||||
ImU32 sysCmd2Grad[256];
|
ImU32 sysCmd2Grad[256];
|
||||||
|
|
||||||
|
char noteOffLabel[32];
|
||||||
|
char noteRelLabel[32];
|
||||||
|
char macroRelLabel[32];
|
||||||
|
char emptyLabel[32];
|
||||||
|
char emptyLabel2[32];
|
||||||
|
|
||||||
struct Settings {
|
struct Settings {
|
||||||
int mainFontSize, patFontSize, iconSize;
|
int mainFontSize, patFontSize, iconSize;
|
||||||
int audioEngine;
|
int audioEngine;
|
||||||
|
@ -1119,6 +1125,11 @@ class FurnaceGUI {
|
||||||
String midiOutDevice;
|
String midiOutDevice;
|
||||||
String c163Name;
|
String c163Name;
|
||||||
String initialSysName;
|
String initialSysName;
|
||||||
|
String noteOffLabel;
|
||||||
|
String noteRelLabel;
|
||||||
|
String macroRelLabel;
|
||||||
|
String emptyLabel;
|
||||||
|
String emptyLabel2;
|
||||||
std::vector<int> initialSys;
|
std::vector<int> initialSys;
|
||||||
|
|
||||||
Settings():
|
Settings():
|
||||||
|
@ -1224,7 +1235,12 @@ class FurnaceGUI {
|
||||||
midiInDevice(""),
|
midiInDevice(""),
|
||||||
midiOutDevice(""),
|
midiOutDevice(""),
|
||||||
c163Name(""),
|
c163Name(""),
|
||||||
initialSysName("Sega Genesis/Mega Drive") {}
|
initialSysName("Sega Genesis/Mega Drive"),
|
||||||
|
noteOffLabel("OFF"),
|
||||||
|
noteRelLabel("==="),
|
||||||
|
macroRelLabel("REL"),
|
||||||
|
emptyLabel("..."),
|
||||||
|
emptyLabel2("..") {}
|
||||||
} settings;
|
} settings;
|
||||||
|
|
||||||
char finalLayoutPath[4096];
|
char finalLayoutPath[4096];
|
||||||
|
@ -1657,6 +1673,7 @@ class FurnaceGUI {
|
||||||
public:
|
public:
|
||||||
void showWarning(String what, FurnaceGUIWarnings type);
|
void showWarning(String what, FurnaceGUIWarnings type);
|
||||||
void showError(String what);
|
void showError(String what);
|
||||||
|
const char* noteNameNormal(short note, short octave);
|
||||||
const char* noteName(short note, short octave);
|
const char* noteName(short note, short octave);
|
||||||
bool decodeNote(const char* what, short& note, short& octave);
|
bool decodeNote(const char* what, short& note, short& octave);
|
||||||
void bindEngine(DivEngine* eng);
|
void bindEngine(DivEngine* eng);
|
||||||
|
|
|
@ -56,7 +56,7 @@ void FurnaceGUI::popPartBlend() {
|
||||||
|
|
||||||
// draw a pattern row
|
// draw a pattern row
|
||||||
inline void FurnaceGUI::patternRow(int i, bool isPlaying, float lineHeight, int chans, int ord, const DivPattern** patCache, bool inhibitSel) {
|
inline void FurnaceGUI::patternRow(int i, bool isPlaying, float lineHeight, int chans, int ord, const DivPattern** patCache, bool inhibitSel) {
|
||||||
static char id[32];
|
static char id[64];
|
||||||
bool selectedRow=(i>=sel1.y && i<=sel2.y && !inhibitSel);
|
bool selectedRow=(i>=sel1.y && i<=sel2.y && !inhibitSel);
|
||||||
ImGui::TableNextRow(0,lineHeight);
|
ImGui::TableNextRow(0,lineHeight);
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
|
@ -114,9 +114,9 @@ inline void FurnaceGUI::patternRow(int i, bool isPlaying, float lineHeight, int
|
||||||
ImGui::PushStyleColor(ImGuiCol_Text,rowIndexColor);
|
ImGui::PushStyleColor(ImGuiCol_Text,rowIndexColor);
|
||||||
|
|
||||||
if (settings.patRowsBase==1) {
|
if (settings.patRowsBase==1) {
|
||||||
snprintf(id,31," %.2X ##PR_%d",i,i);
|
snprintf(id,63," %.2X ##PR_%d",i,i);
|
||||||
} else {
|
} else {
|
||||||
snprintf(id,31,"%3d ##PR_%d",i,i);
|
snprintf(id,63,"%3d ##PR_%d",i,i);
|
||||||
}
|
}
|
||||||
ImGui::Selectable(id,false,ImGuiSelectableFlags_NoPadWithHalfSpacing,fourChars);
|
ImGui::Selectable(id,false,ImGuiSelectableFlags_NoPadWithHalfSpacing,fourChars);
|
||||||
if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenBlockedByActiveItem)) {
|
if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenBlockedByActiveItem)) {
|
||||||
|
@ -151,7 +151,7 @@ inline void FurnaceGUI::patternRow(int i, bool isPlaying, float lineHeight, int
|
||||||
bool cursorVol=(cursor.y==i && cursor.xCoarse==j && cursor.xFine==2 && curWindowLast==GUI_WINDOW_PATTERN);
|
bool cursorVol=(cursor.y==i && cursor.xCoarse==j && cursor.xFine==2 && curWindowLast==GUI_WINDOW_PATTERN);
|
||||||
|
|
||||||
// note
|
// note
|
||||||
sprintf(id,"%s##PN_%d_%d",noteName(pat->data[i][0],pat->data[i][1]),i,j);
|
snprintf(id,63,"%.31s##PN_%d_%d",noteName(pat->data[i][0],pat->data[i][1]),i,j);
|
||||||
if (pat->data[i][0]==0 && pat->data[i][1]==0) {
|
if (pat->data[i][0]==0 && pat->data[i][1]==0) {
|
||||||
ImGui::PushStyleColor(ImGuiCol_Text,inactiveColor);
|
ImGui::PushStyleColor(ImGuiCol_Text,inactiveColor);
|
||||||
} else {
|
} else {
|
||||||
|
@ -182,7 +182,7 @@ inline void FurnaceGUI::patternRow(int i, bool isPlaying, float lineHeight, int
|
||||||
// instrument
|
// instrument
|
||||||
if (pat->data[i][2]==-1) {
|
if (pat->data[i][2]==-1) {
|
||||||
ImGui::PushStyleColor(ImGuiCol_Text,inactiveColor);
|
ImGui::PushStyleColor(ImGuiCol_Text,inactiveColor);
|
||||||
sprintf(id,"..##PI_%d_%d",i,j);
|
snprintf(id,63,"%.31s##PI_%d_%d",emptyLabel2,i,j);
|
||||||
} else {
|
} else {
|
||||||
if (pat->data[i][2]<0 || pat->data[i][2]>=e->song.insLen) {
|
if (pat->data[i][2]<0 || pat->data[i][2]>=e->song.insLen) {
|
||||||
ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_PATTERN_INS_ERROR]);
|
ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_PATTERN_INS_ERROR]);
|
||||||
|
@ -194,7 +194,7 @@ inline void FurnaceGUI::patternRow(int i, bool isPlaying, float lineHeight, int
|
||||||
ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_PATTERN_INS]);
|
ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_PATTERN_INS]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sprintf(id,"%.2X##PI_%d_%d",pat->data[i][2],i,j);
|
snprintf(id,63,"%.2X##PI_%d_%d",pat->data[i][2],i,j);
|
||||||
}
|
}
|
||||||
ImGui::SameLine(0.0f,0.0f);
|
ImGui::SameLine(0.0f,0.0f);
|
||||||
if (cursorIns) {
|
if (cursorIns) {
|
||||||
|
@ -221,13 +221,13 @@ inline void FurnaceGUI::patternRow(int i, bool isPlaying, float lineHeight, int
|
||||||
if (e->curSubSong->chanCollapse[j]<2) {
|
if (e->curSubSong->chanCollapse[j]<2) {
|
||||||
// volume
|
// volume
|
||||||
if (pat->data[i][3]==-1) {
|
if (pat->data[i][3]==-1) {
|
||||||
sprintf(id,"..##PV_%d_%d",i,j);
|
snprintf(id,63,"%.31s##PV_%d_%d",emptyLabel2,i,j);
|
||||||
ImGui::PushStyleColor(ImGuiCol_Text,inactiveColor);
|
ImGui::PushStyleColor(ImGuiCol_Text,inactiveColor);
|
||||||
} else {
|
} else {
|
||||||
int volColor=(pat->data[i][3]*127)/chanVolMax;
|
int volColor=(pat->data[i][3]*127)/chanVolMax;
|
||||||
if (volColor>127) volColor=127;
|
if (volColor>127) volColor=127;
|
||||||
if (volColor<0) volColor=0;
|
if (volColor<0) volColor=0;
|
||||||
sprintf(id,"%.2X##PV_%d_%d",pat->data[i][3],i,j);
|
snprintf(id,63,"%.2X##PV_%d_%d",pat->data[i][3],i,j);
|
||||||
ImGui::PushStyleColor(ImGuiCol_Text,volColors[volColor]);
|
ImGui::PushStyleColor(ImGuiCol_Text,volColors[volColor]);
|
||||||
}
|
}
|
||||||
ImGui::SameLine(0.0f,0.0f);
|
ImGui::SameLine(0.0f,0.0f);
|
||||||
|
@ -263,15 +263,15 @@ inline void FurnaceGUI::patternRow(int i, bool isPlaying, float lineHeight, int
|
||||||
|
|
||||||
// effect
|
// effect
|
||||||
if (pat->data[i][index]==-1) {
|
if (pat->data[i][index]==-1) {
|
||||||
sprintf(id,"..##PE%d_%d_%d",k,i,j);
|
snprintf(id,63,"%.31s##PE%d_%d_%d",emptyLabel2,k,i,j);
|
||||||
ImGui::PushStyleColor(ImGuiCol_Text,inactiveColor);
|
ImGui::PushStyleColor(ImGuiCol_Text,inactiveColor);
|
||||||
} else {
|
} else {
|
||||||
if (pat->data[i][index]>0xff) {
|
if (pat->data[i][index]>0xff) {
|
||||||
sprintf(id,"??##PE%d_%d_%d",k,i,j);
|
snprintf(id,63,"??##PE%d_%d_%d",k,i,j);
|
||||||
ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_PATTERN_EFFECT_INVALID]);
|
ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_PATTERN_EFFECT_INVALID]);
|
||||||
} else {
|
} else {
|
||||||
const unsigned char data=pat->data[i][index];
|
const unsigned char data=pat->data[i][index];
|
||||||
sprintf(id,"%.2X##PE%d_%d_%d",data,k,i,j);
|
snprintf(id,63,"%.2X##PE%d_%d_%d",data,k,i,j);
|
||||||
ImGui::PushStyleColor(ImGuiCol_Text,uiColors[fxColors[data]]);
|
ImGui::PushStyleColor(ImGuiCol_Text,uiColors[fxColors[data]]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -297,9 +297,9 @@ inline void FurnaceGUI::patternRow(int i, bool isPlaying, float lineHeight, int
|
||||||
|
|
||||||
// effect value
|
// effect value
|
||||||
if (pat->data[i][index+1]==-1) {
|
if (pat->data[i][index+1]==-1) {
|
||||||
sprintf(id,"..##PF%d_%d_%d",k,i,j);
|
snprintf(id,63,"%.31s##PF%d_%d_%d",emptyLabel2,k,i,j);
|
||||||
} else {
|
} else {
|
||||||
sprintf(id,"%.2X##PF%d_%d_%d",pat->data[i][index+1],k,i,j);
|
snprintf(id,63,"%.2X##PF%d_%d_%d",pat->data[i][index+1],k,i,j);
|
||||||
}
|
}
|
||||||
ImGui::SameLine(0.0f,0.0f);
|
ImGui::SameLine(0.0f,0.0f);
|
||||||
if (cursorEffectVal) {
|
if (cursorEffectVal) {
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include "fonts.h"
|
#include "fonts.h"
|
||||||
#include "../ta-log.h"
|
#include "../ta-log.h"
|
||||||
#include "../fileutils.h"
|
#include "../fileutils.h"
|
||||||
|
#include "../utfutils.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "guiConst.h"
|
#include "guiConst.h"
|
||||||
#include "intConst.h"
|
#include "intConst.h"
|
||||||
|
@ -1081,6 +1082,15 @@ void FurnaceGUI::drawSettings() {
|
||||||
|
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
|
|
||||||
|
ImGui::Text("Pattern view labels:");
|
||||||
|
ImGui::InputTextWithHint("Note off (3-char)","OFF",&settings.noteOffLabel);
|
||||||
|
ImGui::InputTextWithHint("Note release (3-char)","===",&settings.noteRelLabel);
|
||||||
|
ImGui::InputTextWithHint("Macro release (3-char)","REL",&settings.macroRelLabel);
|
||||||
|
ImGui::InputTextWithHint("Empty field (3-char)","...",&settings.emptyLabel);
|
||||||
|
ImGui::InputTextWithHint("Empty field (2-char)","..",&settings.emptyLabel2);
|
||||||
|
|
||||||
|
ImGui::Separator();
|
||||||
|
|
||||||
ImGui::Text("Orders row number format:");
|
ImGui::Text("Orders row number format:");
|
||||||
if (ImGui::RadioButton("Decimal##orbD",settings.orderRowsBase==0)) {
|
if (ImGui::RadioButton("Decimal##orbD",settings.orderRowsBase==0)) {
|
||||||
settings.orderRowsBase=0;
|
settings.orderRowsBase=0;
|
||||||
|
@ -2118,6 +2128,11 @@ void FurnaceGUI::syncSettings() {
|
||||||
settings.noThreadedInput=e->getConfInt("noThreadedInput",0);
|
settings.noThreadedInput=e->getConfInt("noThreadedInput",0);
|
||||||
settings.initialSysName=e->getConfString("initialSysName","");
|
settings.initialSysName=e->getConfString("initialSysName","");
|
||||||
settings.clampSamples=e->getConfInt("clampSamples",0);
|
settings.clampSamples=e->getConfInt("clampSamples",0);
|
||||||
|
settings.noteOffLabel=e->getConfString("noteOffLabel","OFF");
|
||||||
|
settings.noteRelLabel=e->getConfString("noteRelLabel","===");
|
||||||
|
settings.macroRelLabel=e->getConfString("macroRelLabel","REL");
|
||||||
|
settings.emptyLabel=e->getConfString("emptyLabel","...");
|
||||||
|
settings.emptyLabel2=e->getConfString("emptyLabel2","..");
|
||||||
|
|
||||||
clampSetting(settings.mainFontSize,2,96);
|
clampSetting(settings.mainFontSize,2,96);
|
||||||
clampSetting(settings.patFontSize,2,96);
|
clampSetting(settings.patFontSize,2,96);
|
||||||
|
@ -2345,6 +2360,11 @@ void FurnaceGUI::commitSettings() {
|
||||||
e->setConf("unsignedDetune",settings.unsignedDetune);
|
e->setConf("unsignedDetune",settings.unsignedDetune);
|
||||||
e->setConf("noThreadedInput",settings.noThreadedInput);
|
e->setConf("noThreadedInput",settings.noThreadedInput);
|
||||||
e->setConf("clampSamples",settings.clampSamples);
|
e->setConf("clampSamples",settings.clampSamples);
|
||||||
|
e->setConf("noteOffLabel",settings.noteOffLabel);
|
||||||
|
e->setConf("noteRelLabel",settings.noteRelLabel);
|
||||||
|
e->setConf("macroRelLabel",settings.macroRelLabel);
|
||||||
|
e->setConf("emptyLabel",settings.emptyLabel);
|
||||||
|
e->setConf("emptyLabel2",settings.emptyLabel2);
|
||||||
|
|
||||||
// colors
|
// colors
|
||||||
for (int i=0; i<GUI_COLOR_MAX; i++) {
|
for (int i=0; i<GUI_COLOR_MAX; i++) {
|
||||||
|
@ -2757,6 +2777,20 @@ void FurnaceGUI::popAccentColors() {
|
||||||
#define SYSTEM_PAT_FONT_PATH_3 "/usr/share/fonts/ubuntu/UbuntuMono-R.ttf"
|
#define SYSTEM_PAT_FONT_PATH_3 "/usr/share/fonts/ubuntu/UbuntuMono-R.ttf"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void setupLabel(const char* lStr, char* label, int len) {
|
||||||
|
memset(label,0,32);
|
||||||
|
for (int i=0, p=0; i<len; i++) {
|
||||||
|
signed char cl;
|
||||||
|
if (lStr[p]!=0) {
|
||||||
|
strncat(label," ",32);
|
||||||
|
} else {
|
||||||
|
decodeUTF8((const unsigned char*)&lStr[p],cl);
|
||||||
|
memcpy(label+p,lStr+p,cl);
|
||||||
|
p+=cl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void FurnaceGUI::applyUISettings(bool updateFonts) {
|
void FurnaceGUI::applyUISettings(bool updateFonts) {
|
||||||
ImGuiStyle sty;
|
ImGuiStyle sty;
|
||||||
if (settings.guiColorsBase) {
|
if (settings.guiColorsBase) {
|
||||||
|
@ -2765,6 +2799,12 @@ void FurnaceGUI::applyUISettings(bool updateFonts) {
|
||||||
ImGui::StyleColorsDark(&sty);
|
ImGui::StyleColorsDark(&sty);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setupLabel(settings.noteOffLabel.c_str(),noteOffLabel,3);
|
||||||
|
setupLabel(settings.noteRelLabel.c_str(),noteRelLabel,3);
|
||||||
|
setupLabel(settings.macroRelLabel.c_str(),macroRelLabel,3);
|
||||||
|
setupLabel(settings.emptyLabel.c_str(),emptyLabel,3);
|
||||||
|
setupLabel(settings.emptyLabel2.c_str(),emptyLabel2,2);
|
||||||
|
|
||||||
if (settings.dpiScale>=0.5f) dpiScale=settings.dpiScale;
|
if (settings.dpiScale>=0.5f) dpiScale=settings.dpiScale;
|
||||||
|
|
||||||
// colors
|
// colors
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
|
|
||||||
#include "utfutils.h"
|
#include "utfutils.h"
|
||||||
|
|
||||||
int decodeUTF8(const unsigned char* data, char& len) {
|
int decodeUTF8(const unsigned char* data, signed char& len) {
|
||||||
int ret=0xfffd;
|
int ret=0xfffd;
|
||||||
if (data[0]<0x80) {
|
if (data[0]<0x80) {
|
||||||
ret=data[0];
|
ret=data[0];
|
||||||
|
@ -66,7 +66,7 @@ int decodeUTF8(const unsigned char* data, char& len) {
|
||||||
size_t utf8len(const char* s) {
|
size_t utf8len(const char* s) {
|
||||||
size_t p=0;
|
size_t p=0;
|
||||||
size_t r=0;
|
size_t r=0;
|
||||||
char cl;
|
signed char cl;
|
||||||
while (s[p]!=0) {
|
while (s[p]!=0) {
|
||||||
r++;
|
r++;
|
||||||
decodeUTF8((const unsigned char*)&s[p],cl);
|
decodeUTF8((const unsigned char*)&s[p],cl);
|
||||||
|
@ -76,7 +76,7 @@ size_t utf8len(const char* s) {
|
||||||
}
|
}
|
||||||
|
|
||||||
char utf8csize(const unsigned char* c) {
|
char utf8csize(const unsigned char* c) {
|
||||||
char ret;
|
signed char ret;
|
||||||
decodeUTF8(c,ret);
|
decodeUTF8(c,ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -84,7 +84,7 @@ char utf8csize(const unsigned char* c) {
|
||||||
WString utf8To16(const char* s) {
|
WString utf8To16(const char* s) {
|
||||||
WString ret;
|
WString ret;
|
||||||
int ch, p;
|
int ch, p;
|
||||||
char chs;
|
signed char chs;
|
||||||
p=0;
|
p=0;
|
||||||
while (s[p]!=0) {
|
while (s[p]!=0) {
|
||||||
ch=decodeUTF8((const unsigned char*)&s[p],chs);
|
ch=decodeUTF8((const unsigned char*)&s[p],chs);
|
||||||
|
|
|
@ -21,6 +21,8 @@
|
||||||
#define _UTFUTILS_H
|
#define _UTFUTILS_H
|
||||||
#include "ta-utils.h"
|
#include "ta-utils.h"
|
||||||
|
|
||||||
|
int decodeUTF8(const unsigned char* data, signed char& len);
|
||||||
|
|
||||||
size_t utf8len(const char* s);
|
size_t utf8len(const char* s);
|
||||||
size_t utf8clen(const char* s);
|
size_t utf8clen(const char* s);
|
||||||
size_t utf8pos(const char* s, size_t inpos);
|
size_t utf8pos(const char* s, size_t inpos);
|
||||||
|
|
Loading…
Reference in New Issue