GUI: improve channel swapping
This commit is contained in:
parent
1540705b75
commit
e8af633f10
|
@ -31,11 +31,11 @@ void FurnaceGUI::drawChannels() {
|
||||||
if (!channelsOpen) return;
|
if (!channelsOpen) return;
|
||||||
if (ImGui::Begin("Channels",&channelsOpen,globalWinFlags)) {
|
if (ImGui::Begin("Channels",&channelsOpen,globalWinFlags)) {
|
||||||
if (ImGui::BeginTable("ChannelList",4)) {
|
if (ImGui::BeginTable("ChannelList",4)) {
|
||||||
ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthStretch,0.0);
|
ImGui::TableSetupColumn("c0",ImGuiTableColumnFlags_WidthFixed,0.0);
|
||||||
ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthFixed,0.0);
|
ImGui::TableSetupColumn("c1",ImGuiTableColumnFlags_WidthFixed,0.0);
|
||||||
ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthStretch,0.0);
|
ImGui::TableSetupColumn("c2",ImGuiTableColumnFlags_WidthStretch,0.0);
|
||||||
ImGui::TableSetupColumn("c3",ImGuiTableColumnFlags_WidthFixed,48.0f*dpiScale);
|
ImGui::TableSetupColumn("c3",ImGuiTableColumnFlags_WidthFixed,48.0f*dpiScale);
|
||||||
ImGui::TableNextRow();
|
ImGui::TableNextRow(ImGuiTableRowFlags_Headers);
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
ImGui::Text("System");
|
ImGui::Text("System");
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
|
@ -50,17 +50,28 @@ void FurnaceGUI::drawChannels() {
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
ImGui::Checkbox("##Visible",&e->curSubSong->chanShow[i]);
|
ImGui::Checkbox("##Visible",&e->curSubSong->chanShow[i]);
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
ImGui::BeginDisabled(i==0);
|
if (ImGui::Button(ICON_FA_ARROWS)) {
|
||||||
if (ImGui::Button(ICON_FA_CHEVRON_UP)) {
|
|
||||||
e->swapChannelsP(i,i-1);
|
|
||||||
}
|
}
|
||||||
ImGui::EndDisabled();
|
if (ImGui::BeginDragDropSource()) {
|
||||||
ImGui::SameLine();
|
chanToMove=i;
|
||||||
ImGui::BeginDisabled(i==(e->getTotalChannelCount()-1));
|
ImGui::SetDragDropPayload("FUR_CHAN",NULL,0,ImGuiCond_Once);
|
||||||
if (ImGui::Button(ICON_FA_CHEVRON_DOWN)) {
|
ImGui::Text("(release to swap channels)");
|
||||||
e->swapChannelsP(i,i+1);
|
ImGui::EndDragDropSource();
|
||||||
|
} else if (ImGui::IsItemHovered()) {
|
||||||
|
ImGui::SetTooltip("(drag to swap channels)");
|
||||||
|
}
|
||||||
|
if (ImGui::BeginDragDropTarget()) {
|
||||||
|
const ImGuiPayload* dragItem=ImGui::AcceptDragDropPayload("FUR_CHAN");
|
||||||
|
if (dragItem!=NULL) {
|
||||||
|
if (dragItem->IsDataType("FUR_CHAN")) {
|
||||||
|
if (chanToMove!=i && chanToMove>=0) {
|
||||||
|
e->swapChannelsP(chanToMove,i);
|
||||||
|
}
|
||||||
|
chanToMove=-1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ImGui::EndDragDropTarget();
|
||||||
}
|
}
|
||||||
ImGui::EndDisabled();
|
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x);
|
ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x);
|
||||||
ImGui::InputTextWithHint("##ChanName",e->getChannelName(i),&e->curSubSong->chanName[i]);
|
ImGui::InputTextWithHint("##ChanName",e->getChannelName(i),&e->curSubSong->chanName[i]);
|
||||||
|
|
|
@ -4305,6 +4305,7 @@ FurnaceGUI::FurnaceGUI():
|
||||||
eventTimeBegin(0),
|
eventTimeBegin(0),
|
||||||
eventTimeEnd(0),
|
eventTimeEnd(0),
|
||||||
eventTimeDelta(0),
|
eventTimeDelta(0),
|
||||||
|
chanToMove(-1),
|
||||||
transposeAmount(0),
|
transposeAmount(0),
|
||||||
randomizeMin(0),
|
randomizeMin(0),
|
||||||
randomizeMax(255),
|
randomizeMax(255),
|
||||||
|
|
|
@ -1193,6 +1193,8 @@ class FurnaceGUI {
|
||||||
int renderTimeBegin, renderTimeEnd, renderTimeDelta;
|
int renderTimeBegin, renderTimeEnd, renderTimeDelta;
|
||||||
int eventTimeBegin, eventTimeEnd, eventTimeDelta;
|
int eventTimeBegin, eventTimeEnd, eventTimeDelta;
|
||||||
|
|
||||||
|
int chanToMove;
|
||||||
|
|
||||||
ImVec2 patWindowPos, patWindowSize;
|
ImVec2 patWindowPos, patWindowSize;
|
||||||
|
|
||||||
// pattern view specific
|
// pattern view specific
|
||||||
|
|
Loading…
Reference in New Issue