GUI: add input boxes for sample selection range

major sample editor additions coming soon
prepare
This commit is contained in:
tildearrow 2025-07-05 05:06:15 -05:00
parent aec1f80279
commit 57813d53c1

View file

@ -1530,7 +1530,7 @@ void FurnaceGUI::drawSampleEdit() {
/*if (ImGui::GetContentRegionAvail().y>(ImGui::GetContentRegionAvail().x*0.5f)) { /*if (ImGui::GetContentRegionAvail().y>(ImGui::GetContentRegionAvail().x*0.5f)) {
avail=ImVec2(ImGui::GetContentRegionAvail().x,ImGui::GetContentRegionAvail().x*0.5f); avail=ImVec2(ImGui::GetContentRegionAvail().x,ImGui::GetContentRegionAvail().x*0.5f);
}*/ }*/
avail.y-=ImGui::GetFontSize()+ImGui::GetStyle().ItemSpacing.y+ImGui::GetStyle().ScrollbarSize; avail.y-=ImGui::GetFrameHeightWithSpacing()+ImGui::GetStyle().ScrollbarSize;
if (avail.y<1.0) { // Prevents crash if (avail.y<1.0) { // Prevents crash
avail.y=1.0; avail.y=1.0;
} }
@ -1849,9 +1849,10 @@ void FurnaceGUI::drawSampleEdit() {
ImGui::EndPopup(); ImGui::EndPopup();
} }
String statusBar=sampleDragMode?_("Draw"):_("Select"); String statusBar=sampleDragMode?_("Draw"):_("Select:");
String statusBar2=""; String statusBar2="";
String statusBar3=fmt::sprintf(_("%d samples, %d bytes"),sample->samples,sample->getCurBufLen()); String statusBar3=fmt::sprintf(_("%d samples, %d bytes"),sample->samples,sample->getCurBufLen());
String statusBar4="";
bool drawSelection=false; bool drawSelection=false;
if (!sampleDragMode) { if (!sampleDragMode) {
@ -1863,10 +1864,8 @@ void FurnaceGUI::drawSampleEdit() {
end^=start; end^=start;
start^=end; start^=end;
} }
if (start==end) { if (start!=end) {
statusBar+=fmt::sprintf(" (%d)",start); statusBar4=fmt::sprintf(_("(%d samples)"),end-start);
} else {
statusBar+=fmt::sprintf(_(" (%d-%d: %d samples)"),start,end,end-start);
} }
drawSelection=true; drawSelection=true;
} }
@ -2070,27 +2069,55 @@ void FurnaceGUI::drawSampleEdit() {
ImGui::TableNextRow(); ImGui::TableNextRow();
ImGui::TableNextColumn(); ImGui::TableNextColumn();
ImGui::AlignTextToFramePadding();
ImGui::TextUnformatted(statusBar.c_str()); ImGui::TextUnformatted(statusBar.c_str());
if (!sampleDragMode) {
ImGui::SameLine();
ImGui::SetNextItemWidth(140.0f*dpiScale);
if (ImGui::InputInt("##SESelStart",&sampleSelStart)) {
if (sampleSelStart<0) sampleSelStart=0;
if (sampleSelStart>(int)sample->samples) sampleSelStart=sample->samples;
if (sampleSelEnd<sampleSelStart) sampleSelEnd=sampleSelStart;
}
ImGui::SameLine();
ImGui::SetNextItemWidth(140.0f*dpiScale);
if (ImGui::InputInt("##SESelEnd",&sampleSelEnd)) {
if (sampleSelStart<0) sampleSelStart=0;
if (sampleSelStart>(int)sample->samples) sampleSelStart=sample->samples;
if (sampleSelEnd<sampleSelStart) sampleSelEnd=sampleSelStart;
}
if (!statusBar4.empty()) {
ImGui::SameLine();
ImGui::AlignTextToFramePadding();
ImGui::TextUnformatted(statusBar4.c_str());
}
}
ImGui::TableNextColumn(); ImGui::TableNextColumn();
if (!warnRate.empty()) { if (!warnRate.empty()) {
ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_WARNING]); ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_WARNING]);
ImGui::AlignTextToFramePadding();
ImGui::TextUnformatted(statusBar2.c_str()); ImGui::TextUnformatted(statusBar2.c_str());
ImGui::PopStyleColor(); ImGui::PopStyleColor();
if (ImGui::IsItemHovered()) { if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("%s",warnRate.c_str()); ImGui::SetTooltip("%s",warnRate.c_str());
} }
} else { } else {
ImGui::AlignTextToFramePadding();
ImGui::TextUnformatted(statusBar2.c_str()); ImGui::TextUnformatted(statusBar2.c_str());
} }
ImGui::TableNextColumn(); ImGui::TableNextColumn();
if (!warnLength.empty()) { if (!warnLength.empty()) {
ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_WARNING]); ImGui::PushStyleColor(ImGuiCol_Text,uiColors[GUI_COLOR_WARNING]);
ImGui::AlignTextToFramePadding();
ImGui::TextUnformatted(statusBar3.c_str()); ImGui::TextUnformatted(statusBar3.c_str());
ImGui::PopStyleColor(); ImGui::PopStyleColor();
if (ImGui::IsItemHovered()) { if (ImGui::IsItemHovered()) {
ImGui::SetTooltip("%s",warnLength.c_str()); ImGui::SetTooltip("%s",warnLength.c_str());
} }
} else { } else {
ImGui::AlignTextToFramePadding();
ImGui::TextUnformatted(statusBar3.c_str()); ImGui::TextUnformatted(statusBar3.c_str());
} }