GUI: prepare to add a "basic mode"
This commit is contained in:
parent
79ede020cf
commit
ea0d7cd420
|
@ -161,3 +161,7 @@ void DivEngine::setConf(String key, const char* value) {
|
||||||
void DivEngine::setConf(String key, String value) {
|
void DivEngine::setConf(String key, String value) {
|
||||||
conf.set(key,value);
|
conf.set(key,value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool DivEngine::hasConf(String key) {
|
||||||
|
return conf.has(key);
|
||||||
|
}
|
|
@ -581,6 +581,9 @@ class DivEngine {
|
||||||
void setConf(String key, const char* value);
|
void setConf(String key, const char* value);
|
||||||
void setConf(String key, String value);
|
void setConf(String key, String value);
|
||||||
|
|
||||||
|
// get whether config value exists
|
||||||
|
bool hasConf(String key);
|
||||||
|
|
||||||
// calculate base frequency/period
|
// calculate base frequency/period
|
||||||
double calcBaseFreq(double clock, double divider, int note, bool period);
|
double calcBaseFreq(double clock, double divider, int note, bool period);
|
||||||
|
|
||||||
|
|
|
@ -2310,7 +2310,7 @@ void FurnaceGUI::editOptions(bool topMenu) {
|
||||||
if (ImGui::MenuItem("cut",BIND_FOR(GUI_ACTION_PAT_CUT))) doCopy(true,true,selStart,selEnd);
|
if (ImGui::MenuItem("cut",BIND_FOR(GUI_ACTION_PAT_CUT))) doCopy(true,true,selStart,selEnd);
|
||||||
if (ImGui::MenuItem("copy",BIND_FOR(GUI_ACTION_PAT_COPY))) doCopy(false,true,selStart,selEnd);
|
if (ImGui::MenuItem("copy",BIND_FOR(GUI_ACTION_PAT_COPY))) doCopy(false,true,selStart,selEnd);
|
||||||
if (ImGui::MenuItem("paste",BIND_FOR(GUI_ACTION_PAT_PASTE))) doPaste();
|
if (ImGui::MenuItem("paste",BIND_FOR(GUI_ACTION_PAT_PASTE))) doPaste();
|
||||||
if (ImGui::BeginMenu("paste special...")) {
|
if (!basicMode) if (ImGui::BeginMenu("paste special...")) {
|
||||||
if (ImGui::MenuItem("paste mix",BIND_FOR(GUI_ACTION_PAT_PASTE_MIX))) doPaste(GUI_PASTE_MODE_MIX_FG);
|
if (ImGui::MenuItem("paste mix",BIND_FOR(GUI_ACTION_PAT_PASTE_MIX))) doPaste(GUI_PASTE_MODE_MIX_FG);
|
||||||
if (ImGui::MenuItem("paste mix (background)",BIND_FOR(GUI_ACTION_PAT_PASTE_MIX_BG))) doPaste(GUI_PASTE_MODE_MIX_BG);
|
if (ImGui::MenuItem("paste mix (background)",BIND_FOR(GUI_ACTION_PAT_PASTE_MIX_BG))) doPaste(GUI_PASTE_MODE_MIX_BG);
|
||||||
if (ImGui::BeginMenu("paste with ins (foreground)")) {
|
if (ImGui::BeginMenu("paste with ins (foreground)")) {
|
||||||
|
@ -2347,6 +2347,7 @@ void FurnaceGUI::editOptions(bool topMenu) {
|
||||||
}
|
}
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
|
|
||||||
|
if (!basicMode) {
|
||||||
if (ImGui::BeginMenu("operation mask...")) {
|
if (ImGui::BeginMenu("operation mask...")) {
|
||||||
drawOpMask(opMaskDelete);
|
drawOpMask(opMaskDelete);
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
|
@ -2503,6 +2504,7 @@ void FurnaceGUI::editOptions(bool topMenu) {
|
||||||
latchNibble=false;
|
latchNibble=false;
|
||||||
}
|
}
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
|
}
|
||||||
|
|
||||||
if (ImGui::MenuItem("note up",BIND_FOR(GUI_ACTION_PAT_NOTE_UP))) doTranspose(1,opMaskTransposeNote);
|
if (ImGui::MenuItem("note up",BIND_FOR(GUI_ACTION_PAT_NOTE_UP))) doTranspose(1,opMaskTransposeNote);
|
||||||
if (ImGui::MenuItem("note down",BIND_FOR(GUI_ACTION_PAT_NOTE_DOWN))) doTranspose(-1,opMaskTransposeNote);
|
if (ImGui::MenuItem("note down",BIND_FOR(GUI_ACTION_PAT_NOTE_DOWN))) doTranspose(-1,opMaskTransposeNote);
|
||||||
|
@ -2546,6 +2548,8 @@ void FurnaceGUI::editOptions(bool topMenu) {
|
||||||
}
|
}
|
||||||
ImGui::EndMenu();
|
ImGui::EndMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!basicMode) {
|
||||||
if (ImGui::BeginMenu("gradient/fade...")) {
|
if (ImGui::BeginMenu("gradient/fade...")) {
|
||||||
if (ImGui::InputInt("Start",&fadeMin,1,1)) {
|
if (ImGui::InputInt("Start",&fadeMin,1,1)) {
|
||||||
if (fadeMin<0) fadeMin=0;
|
if (fadeMin<0) fadeMin=0;
|
||||||
|
@ -2642,6 +2646,7 @@ void FurnaceGUI::editOptions(bool topMenu) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*if (topMenu) {
|
/*if (topMenu) {
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
|
@ -3612,6 +3617,7 @@ bool FurnaceGUI::loop() {
|
||||||
}
|
}
|
||||||
ImGui::EndMenu();
|
ImGui::EndMenu();
|
||||||
}
|
}
|
||||||
|
if (!basicMode) {
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
if (ImGui::BeginMenu("add chip...")) {
|
if (ImGui::BeginMenu("add chip...")) {
|
||||||
DivSystem picked=systemPicker();
|
DivSystem picked=systemPicker();
|
||||||
|
@ -3674,6 +3680,7 @@ bool FurnaceGUI::loop() {
|
||||||
}
|
}
|
||||||
ImGui::EndMenu();
|
ImGui::EndMenu();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
if (ImGui::MenuItem("restore backup",BIND_FOR(GUI_ACTION_OPEN_BACKUP))) {
|
if (ImGui::MenuItem("restore backup",BIND_FOR(GUI_ACTION_OPEN_BACKUP))) {
|
||||||
doAction(GUI_ACTION_OPEN_BACKUP);
|
doAction(GUI_ACTION_OPEN_BACKUP);
|
||||||
|
@ -3710,6 +3717,13 @@ bool FurnaceGUI::loop() {
|
||||||
if (ImGui::MenuItem("lock layout",NULL,lockLayout)) {
|
if (ImGui::MenuItem("lock layout",NULL,lockLayout)) {
|
||||||
lockLayout=!lockLayout;
|
lockLayout=!lockLayout;
|
||||||
}
|
}
|
||||||
|
if (ImGui::MenuItem("basic mode",NULL,basicMode)) {
|
||||||
|
if (basicMode) {
|
||||||
|
showWarning("prepare to unlock the full power of Furnace!",GUI_WARN_BASIC_MODE);
|
||||||
|
} else {
|
||||||
|
showWarning("are you sure? this will disable several things.",GUI_WARN_BASIC_MODE);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (ImGui::MenuItem("visualizer",NULL,fancyPattern)) {
|
if (ImGui::MenuItem("visualizer",NULL,fancyPattern)) {
|
||||||
fancyPattern=!fancyPattern;
|
fancyPattern=!fancyPattern;
|
||||||
e->enableCommandStream(fancyPattern);
|
e->enableCommandStream(fancyPattern);
|
||||||
|
@ -3743,12 +3757,14 @@ bool FurnaceGUI::loop() {
|
||||||
}
|
}
|
||||||
if (ImGui::MenuItem("orders",BIND_FOR(GUI_ACTION_WINDOW_ORDERS),ordersOpen)) ordersOpen=!ordersOpen;
|
if (ImGui::MenuItem("orders",BIND_FOR(GUI_ACTION_WINDOW_ORDERS),ordersOpen)) ordersOpen=!ordersOpen;
|
||||||
if (ImGui::MenuItem("pattern",BIND_FOR(GUI_ACTION_WINDOW_PATTERN),patternOpen)) patternOpen=!patternOpen;
|
if (ImGui::MenuItem("pattern",BIND_FOR(GUI_ACTION_WINDOW_PATTERN),patternOpen)) patternOpen=!patternOpen;
|
||||||
|
if (!basicMode) {
|
||||||
if (ImGui::MenuItem("mixer",BIND_FOR(GUI_ACTION_WINDOW_MIXER),mixerOpen)) mixerOpen=!mixerOpen;
|
if (ImGui::MenuItem("mixer",BIND_FOR(GUI_ACTION_WINDOW_MIXER),mixerOpen)) mixerOpen=!mixerOpen;
|
||||||
if (ImGui::MenuItem("grooves",BIND_FOR(GUI_ACTION_WINDOW_GROOVES),groovesOpen)) groovesOpen=!groovesOpen;
|
if (ImGui::MenuItem("grooves",BIND_FOR(GUI_ACTION_WINDOW_GROOVES),groovesOpen)) groovesOpen=!groovesOpen;
|
||||||
if (ImGui::MenuItem("channels",BIND_FOR(GUI_ACTION_WINDOW_CHANNELS),channelsOpen)) channelsOpen=!channelsOpen;
|
if (ImGui::MenuItem("channels",BIND_FOR(GUI_ACTION_WINDOW_CHANNELS),channelsOpen)) channelsOpen=!channelsOpen;
|
||||||
if (ImGui::MenuItem("pattern manager",BIND_FOR(GUI_ACTION_WINDOW_PAT_MANAGER),patManagerOpen)) patManagerOpen=!patManagerOpen;
|
if (ImGui::MenuItem("pattern manager",BIND_FOR(GUI_ACTION_WINDOW_PAT_MANAGER),patManagerOpen)) patManagerOpen=!patManagerOpen;
|
||||||
if (ImGui::MenuItem("chip manager",BIND_FOR(GUI_ACTION_WINDOW_SYS_MANAGER),sysManagerOpen)) sysManagerOpen=!sysManagerOpen;
|
if (ImGui::MenuItem("chip manager",BIND_FOR(GUI_ACTION_WINDOW_SYS_MANAGER),sysManagerOpen)) sysManagerOpen=!sysManagerOpen;
|
||||||
if (ImGui::MenuItem("compatibility flags",BIND_FOR(GUI_ACTION_WINDOW_COMPAT_FLAGS),compatFlagsOpen)) compatFlagsOpen=!compatFlagsOpen;
|
if (ImGui::MenuItem("compatibility flags",BIND_FOR(GUI_ACTION_WINDOW_COMPAT_FLAGS),compatFlagsOpen)) compatFlagsOpen=!compatFlagsOpen;
|
||||||
|
}
|
||||||
if (ImGui::MenuItem("song comments",BIND_FOR(GUI_ACTION_WINDOW_NOTES),notesOpen)) notesOpen=!notesOpen;
|
if (ImGui::MenuItem("song comments",BIND_FOR(GUI_ACTION_WINDOW_NOTES),notesOpen)) notesOpen=!notesOpen;
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
if (ImGui::MenuItem("instrument editor",BIND_FOR(GUI_ACTION_WINDOW_INS_EDIT),insEditOpen)) insEditOpen=!insEditOpen;
|
if (ImGui::MenuItem("instrument editor",BIND_FOR(GUI_ACTION_WINDOW_INS_EDIT),insEditOpen)) insEditOpen=!insEditOpen;
|
||||||
|
@ -3936,7 +3952,7 @@ bool FurnaceGUI::loop() {
|
||||||
drawPattern();
|
drawPattern();
|
||||||
drawEditControls();
|
drawEditControls();
|
||||||
drawSpeed();
|
drawSpeed();
|
||||||
drawGrooves();
|
if (!basicMode) drawGrooves();
|
||||||
drawSongInfo();
|
drawSongInfo();
|
||||||
drawOrders();
|
drawOrders();
|
||||||
drawSampleList();
|
drawSampleList();
|
||||||
|
@ -3945,7 +3961,7 @@ bool FurnaceGUI::loop() {
|
||||||
drawWaveEdit();
|
drawWaveEdit();
|
||||||
drawInsList();
|
drawInsList();
|
||||||
drawInsEdit();
|
drawInsEdit();
|
||||||
drawMixer();
|
if (!basicMode) drawMixer();
|
||||||
|
|
||||||
readOsc();
|
readOsc();
|
||||||
|
|
||||||
|
@ -3955,12 +3971,14 @@ bool FurnaceGUI::loop() {
|
||||||
drawSettings();
|
drawSettings();
|
||||||
drawDebug();
|
drawDebug();
|
||||||
drawStats();
|
drawStats();
|
||||||
drawCompatFlags();
|
if (!basicMode) drawCompatFlags();
|
||||||
drawPiano();
|
drawPiano();
|
||||||
drawNotes();
|
drawNotes();
|
||||||
|
if (!basicMode) {
|
||||||
drawChannels();
|
drawChannels();
|
||||||
drawPatManager();
|
drawPatManager();
|
||||||
drawSysManager();
|
drawSysManager();
|
||||||
|
}
|
||||||
drawClock();
|
drawClock();
|
||||||
drawRegView();
|
drawRegView();
|
||||||
drawLog();
|
drawLog();
|
||||||
|
@ -4971,6 +4989,16 @@ bool FurnaceGUI::loop() {
|
||||||
ImGui::CloseCurrentPopup();
|
ImGui::CloseCurrentPopup();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case GUI_WARN_BASIC_MODE:
|
||||||
|
if (ImGui::Button("Yes")) {
|
||||||
|
basicMode=!basicMode;
|
||||||
|
ImGui::CloseCurrentPopup();
|
||||||
|
}
|
||||||
|
ImGui::SameLine();
|
||||||
|
if (ImGui::Button("No")) {
|
||||||
|
ImGui::CloseCurrentPopup();
|
||||||
|
}
|
||||||
|
break;
|
||||||
case GUI_WARN_GENERIC:
|
case GUI_WARN_GENERIC:
|
||||||
if (ImGui::Button("OK")) {
|
if (ImGui::Button("OK")) {
|
||||||
ImGui::CloseCurrentPopup();
|
ImGui::CloseCurrentPopup();
|
||||||
|
@ -5276,6 +5304,12 @@ bool FurnaceGUI::init() {
|
||||||
findOpen=e->getConfBool("findOpen",false);
|
findOpen=e->getConfBool("findOpen",false);
|
||||||
spoilerOpen=e->getConfBool("spoilerOpen",false);
|
spoilerOpen=e->getConfBool("spoilerOpen",false);
|
||||||
|
|
||||||
|
if (e->hasConf("lastDir")) {
|
||||||
|
basicMode=e->getConfBool("basicMode",false);
|
||||||
|
} else {
|
||||||
|
basicMode=true;
|
||||||
|
}
|
||||||
|
|
||||||
tempoView=e->getConfBool("tempoView",true);
|
tempoView=e->getConfBool("tempoView",true);
|
||||||
waveHex=e->getConfBool("waveHex",false);
|
waveHex=e->getConfBool("waveHex",false);
|
||||||
waveSigned=e->getConfBool("waveSigned",false);
|
waveSigned=e->getConfBool("waveSigned",false);
|
||||||
|
@ -5673,6 +5707,7 @@ void FurnaceGUI::commitState() {
|
||||||
e->setConf("subSongsOpen",subSongsOpen);
|
e->setConf("subSongsOpen",subSongsOpen);
|
||||||
e->setConf("findOpen",findOpen);
|
e->setConf("findOpen",findOpen);
|
||||||
e->setConf("spoilerOpen",spoilerOpen);
|
e->setConf("spoilerOpen",spoilerOpen);
|
||||||
|
e->setConf("basicMode",basicMode);
|
||||||
|
|
||||||
// commit last window size
|
// commit last window size
|
||||||
e->setConf("lastWindowWidth",scrConfW);
|
e->setConf("lastWindowWidth",scrConfW);
|
||||||
|
@ -5916,6 +5951,7 @@ FurnaceGUI::FurnaceGUI():
|
||||||
clockOpen(false),
|
clockOpen(false),
|
||||||
speedOpen(true),
|
speedOpen(true),
|
||||||
groovesOpen(false),
|
groovesOpen(false),
|
||||||
|
basicMode(true),
|
||||||
clockShowReal(true),
|
clockShowReal(true),
|
||||||
clockShowRow(true),
|
clockShowRow(true),
|
||||||
clockShowBeat(true),
|
clockShowBeat(true),
|
||||||
|
|
|
@ -397,6 +397,7 @@ enum FurnaceGUIWarnings {
|
||||||
GUI_WARN_SUBSONG_DEL,
|
GUI_WARN_SUBSONG_DEL,
|
||||||
GUI_WARN_SYSTEM_DEL,
|
GUI_WARN_SYSTEM_DEL,
|
||||||
GUI_WARN_CLEAR_HISTORY,
|
GUI_WARN_CLEAR_HISTORY,
|
||||||
|
GUI_WARN_BASIC_MODE,
|
||||||
GUI_WARN_GENERIC
|
GUI_WARN_GENERIC
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1473,6 +1474,8 @@ class FurnaceGUI {
|
||||||
bool subSongsOpen, findOpen, spoilerOpen, patManagerOpen, sysManagerOpen, clockOpen, speedOpen;
|
bool subSongsOpen, findOpen, spoilerOpen, patManagerOpen, sysManagerOpen, clockOpen, speedOpen;
|
||||||
bool groovesOpen;
|
bool groovesOpen;
|
||||||
|
|
||||||
|
bool basicMode;
|
||||||
|
|
||||||
bool clockShowReal, clockShowRow, clockShowBeat, clockShowMetro, clockShowTime;
|
bool clockShowReal, clockShowRow, clockShowBeat, clockShowMetro, clockShowTime;
|
||||||
float clockMetroTick[16];
|
float clockMetroTick[16];
|
||||||
|
|
||||||
|
|
|
@ -74,6 +74,7 @@ void FurnaceGUI::drawSongInfo(bool asChild) {
|
||||||
if (ImGui::InputText("##Category",&e->song.category,ImGuiInputTextFlags_UndoRedo)) {
|
if (ImGui::InputText("##Category",&e->song.category,ImGuiInputTextFlags_UndoRedo)) {
|
||||||
MARK_MODIFIED;
|
MARK_MODIFIED;
|
||||||
}
|
}
|
||||||
|
if (!basicMode) {
|
||||||
ImGui::TableNextRow();
|
ImGui::TableNextRow();
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
ImGui::Text("System");
|
ImGui::Text("System");
|
||||||
|
@ -96,11 +97,16 @@ void FurnaceGUI::drawSongInfo(bool asChild) {
|
||||||
}
|
}
|
||||||
popToggleColors();
|
popToggleColors();
|
||||||
autoButtonSize=ImGui::GetItemRectSize().x;
|
autoButtonSize=ImGui::GetItemRectSize().x;
|
||||||
|
}
|
||||||
|
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::BeginTable("OtherProps",2,ImGuiTableFlags_SizingStretchProp)) {
|
if (basicMode) {
|
||||||
|
if (e->song.tuning<435.8 || e->song.tuning>444) {
|
||||||
|
ImGui::TextWrapped("Tuning changed - disable Basic Mode to edit.");
|
||||||
|
}
|
||||||
|
} else if (ImGui::BeginTable("OtherProps",2,ImGuiTableFlags_SizingStretchProp)) {
|
||||||
ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed,0.0);
|
ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed,0.0);
|
||||||
ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch,0.0);
|
ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthStretch,0.0);
|
||||||
|
|
||||||
|
|
|
@ -160,6 +160,7 @@ void FurnaceGUI::drawSpeed(bool asChild) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!basicMode) {
|
||||||
ImGui::TableNextRow();
|
ImGui::TableNextRow();
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
ImGui::Text("Virtual Tempo");
|
ImGui::Text("Virtual Tempo");
|
||||||
|
@ -195,6 +196,7 @@ void FurnaceGUI::drawSpeed(bool asChild) {
|
||||||
}
|
}
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
ImGui::Text("%.2f BPM",calcBPM(e->curSubSong->speeds,e->curSubSong->hz,e->curSubSong->virtualTempoN,e->curSubSong->virtualTempoD));
|
ImGui::Text("%.2f BPM",calcBPM(e->curSubSong->speeds,e->curSubSong->hz,e->curSubSong->virtualTempoN,e->curSubSong->virtualTempoD));
|
||||||
|
}
|
||||||
|
|
||||||
ImGui::TableNextRow();
|
ImGui::TableNextRow();
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
|
@ -231,6 +233,7 @@ void FurnaceGUI::drawSpeed(bool asChild) {
|
||||||
e->curSubSong->patLen=patLen;
|
e->curSubSong->patLen=patLen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!basicMode) {
|
||||||
ImGui::TableNextRow();
|
ImGui::TableNextRow();
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
ImGui::Text("Song Length");
|
ImGui::Text("Song Length");
|
||||||
|
@ -245,6 +248,7 @@ void FurnaceGUI::drawSpeed(bool asChild) {
|
||||||
setOrder(ordLen-1);
|
setOrder(ordLen-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue