mirror of
https://github.com/tildearrow/furnace.git
synced 2024-12-31 20:11:29 +00:00
parent
8ab97a959c
commit
8d1e14e844
2 changed files with 82 additions and 7 deletions
|
@ -1977,6 +1977,28 @@ void FurnaceGUI::drawSettings() {
|
||||||
if (ImGui::Checkbox("Move cursor up on backspace-delete",&pullDeleteBehaviorB)) {
|
if (ImGui::Checkbox("Move cursor up on backspace-delete",&pullDeleteBehaviorB)) {
|
||||||
settings.pullDeleteBehavior=pullDeleteBehaviorB;
|
settings.pullDeleteBehavior=pullDeleteBehaviorB;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ImGui::Text("Wrap pattern cursor horizontally:");
|
||||||
|
if (ImGui::RadioButton("No##wrapH0",settings.wrapHorizontal==0)) {
|
||||||
|
settings.wrapHorizontal=0;
|
||||||
|
}
|
||||||
|
if (ImGui::RadioButton("Yes##wrapH1",settings.wrapHorizontal==1)) {
|
||||||
|
settings.wrapHorizontal=1;
|
||||||
|
}
|
||||||
|
if (ImGui::RadioButton("Yes, and move to next/prev row##wrapH2",settings.wrapHorizontal==2)) {
|
||||||
|
settings.wrapHorizontal=2;
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::Text("Wrap pattern cursor vertically:");
|
||||||
|
if (ImGui::RadioButton("No##wrapV0",settings.wrapVertical==0)) {
|
||||||
|
settings.wrapVertical=0;
|
||||||
|
}
|
||||||
|
if (ImGui::RadioButton("Yes##wrapV1",settings.wrapVertical==1)) {
|
||||||
|
settings.wrapVertical=1;
|
||||||
|
}
|
||||||
|
if (ImGui::RadioButton("Yes, and move to next/prev pattern##wrapV2",settings.wrapVertical==2)) {
|
||||||
|
settings.wrapVertical=2;
|
||||||
|
}
|
||||||
ImGui::EndTabItem();
|
ImGui::EndTabItem();
|
||||||
}
|
}
|
||||||
if (ImGui::BeginTabItem("Audio")) {
|
if (ImGui::BeginTabItem("Audio")) {
|
||||||
|
@ -2095,6 +2117,8 @@ void FurnaceGUI::syncSettings() {
|
||||||
settings.orderRowsBase=e->getConfInt("orderRowsBase",1);
|
settings.orderRowsBase=e->getConfInt("orderRowsBase",1);
|
||||||
settings.soloAction=e->getConfInt("soloAction",0);
|
settings.soloAction=e->getConfInt("soloAction",0);
|
||||||
settings.pullDeleteBehavior=e->getConfInt("pullDeleteBehavior",1);
|
settings.pullDeleteBehavior=e->getConfInt("pullDeleteBehavior",1);
|
||||||
|
settings.wrapHorizontal=e->getConfInt("wrapHorizontal",0);
|
||||||
|
settings.wrapVertical=e->getConfInt("wrapVertical",0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FurnaceGUI::commitSettings() {
|
void FurnaceGUI::commitSettings() {
|
||||||
|
@ -2114,6 +2138,8 @@ void FurnaceGUI::commitSettings() {
|
||||||
e->setConf("orderRowsBase",settings.orderRowsBase);
|
e->setConf("orderRowsBase",settings.orderRowsBase);
|
||||||
e->setConf("soloAction",settings.soloAction);
|
e->setConf("soloAction",settings.soloAction);
|
||||||
e->setConf("pullDeleteBehavior",settings.pullDeleteBehavior);
|
e->setConf("pullDeleteBehavior",settings.pullDeleteBehavior);
|
||||||
|
e->setConf("wrapHorizontal",settings.wrapHorizontal);
|
||||||
|
e->setConf("wrapVertical",settings.wrapVertical);
|
||||||
|
|
||||||
e->saveConf();
|
e->saveConf();
|
||||||
|
|
||||||
|
@ -2206,8 +2232,13 @@ void FurnaceGUI::moveCursor(int x, int y) {
|
||||||
if (++cursor.xFine>=3+e->song.pat[cursor.xCoarse].effectRows*2) {
|
if (++cursor.xFine>=3+e->song.pat[cursor.xCoarse].effectRows*2) {
|
||||||
cursor.xFine=0;
|
cursor.xFine=0;
|
||||||
if (++cursor.xCoarse>=e->getTotalChannelCount()) {
|
if (++cursor.xCoarse>=e->getTotalChannelCount()) {
|
||||||
cursor.xCoarse=e->getTotalChannelCount()-1;
|
if (settings.wrapHorizontal!=0) {
|
||||||
cursor.xFine=2+e->song.pat[cursor.xCoarse].effectRows*2;
|
cursor.xCoarse=0;
|
||||||
|
if (settings.wrapHorizontal==2) y++;
|
||||||
|
} else {
|
||||||
|
cursor.xCoarse=e->getTotalChannelCount()-1;
|
||||||
|
cursor.xFine=2+e->song.pat[cursor.xCoarse].effectRows*2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2215,8 +2246,14 @@ void FurnaceGUI::moveCursor(int x, int y) {
|
||||||
for (int i=0; i<-x; i++) {
|
for (int i=0; i<-x; i++) {
|
||||||
if (--cursor.xFine<0) {
|
if (--cursor.xFine<0) {
|
||||||
if (--cursor.xCoarse<0) {
|
if (--cursor.xCoarse<0) {
|
||||||
cursor.xCoarse=0;
|
if (settings.wrapHorizontal!=0) {
|
||||||
cursor.xFine=0;
|
cursor.xCoarse=e->getTotalChannelCount()-1;
|
||||||
|
cursor.xFine=2+e->song.pat[cursor.xCoarse].effectRows*2;
|
||||||
|
if (settings.wrapHorizontal==2) y--;
|
||||||
|
} else {
|
||||||
|
cursor.xCoarse=0;
|
||||||
|
cursor.xFine=0;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
cursor.xFine=2+e->song.pat[cursor.xCoarse].effectRows*2;
|
cursor.xFine=2+e->song.pat[cursor.xCoarse].effectRows*2;
|
||||||
}
|
}
|
||||||
|
@ -2225,9 +2262,43 @@ void FurnaceGUI::moveCursor(int x, int y) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (y!=0) {
|
if (y!=0) {
|
||||||
cursor.y+=y;
|
if (y>0) {
|
||||||
if (cursor.y<0) cursor.y=0;
|
for (int i=0; i<y; i++) {
|
||||||
if (cursor.y>=e->song.patLen) cursor.y=e->song.patLen-1;
|
cursor.y++;
|
||||||
|
if (cursor.y>=e->song.patLen) {
|
||||||
|
if (settings.wrapVertical!=0) {
|
||||||
|
cursor.y=0;
|
||||||
|
if (settings.wrapVertical==2) {
|
||||||
|
if (!e->isPlaying() && e->getOrder()<(e->song.ordersLen-1)) {
|
||||||
|
e->setOrder(e->getOrder()+1);
|
||||||
|
} else {
|
||||||
|
cursor.y=e->song.patLen-1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
cursor.y=e->song.patLen-1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (int i=0; i<-y; i++) {
|
||||||
|
cursor.y--;
|
||||||
|
if (cursor.y<0) {
|
||||||
|
if (settings.wrapVertical!=0) {
|
||||||
|
cursor.y=e->song.patLen-1;
|
||||||
|
if (settings.wrapVertical==2) {
|
||||||
|
if (!e->isPlaying() && e->getOrder()>0) {
|
||||||
|
e->setOrder(e->getOrder()-1);
|
||||||
|
} else {
|
||||||
|
cursor.y=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
cursor.y=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
selStart=cursor;
|
selStart=cursor;
|
||||||
selEnd=cursor;
|
selEnd=cursor;
|
||||||
|
|
|
@ -189,6 +189,8 @@ class FurnaceGUI {
|
||||||
int orderRowsBase;
|
int orderRowsBase;
|
||||||
int soloAction;
|
int soloAction;
|
||||||
int pullDeleteBehavior;
|
int pullDeleteBehavior;
|
||||||
|
int wrapHorizontal;
|
||||||
|
int wrapVertical;
|
||||||
unsigned int maxUndoSteps;
|
unsigned int maxUndoSteps;
|
||||||
String mainFontPath;
|
String mainFontPath;
|
||||||
String patFontPath;
|
String patFontPath;
|
||||||
|
@ -208,6 +210,8 @@ class FurnaceGUI {
|
||||||
orderRowsBase(1),
|
orderRowsBase(1),
|
||||||
soloAction(0),
|
soloAction(0),
|
||||||
pullDeleteBehavior(1),
|
pullDeleteBehavior(1),
|
||||||
|
wrapHorizontal(0),
|
||||||
|
wrapVertical(0),
|
||||||
maxUndoSteps(100),
|
maxUndoSteps(100),
|
||||||
mainFontPath(""),
|
mainFontPath(""),
|
||||||
patFontPath("") {}
|
patFontPath("") {}
|
||||||
|
|
Loading…
Reference in a new issue