From a7b92cfa8ec271c06de1efda4e6be425f489c60c Mon Sep 17 00:00:00 2001 From: Stu Leak Date: Sat, 20 Dec 2025 16:27:19 -0500 Subject: [PATCH] Collapse snippet tools behind a toggle --- DONE.md | 1 + TODO.md | 1 + main.go | 22 ++++++++++++++++++++-- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/DONE.md b/DONE.md index a3a7ed9..3a87e8d 100644 --- a/DONE.md +++ b/DONE.md @@ -831,6 +831,7 @@ This file tracks completed features, fixes, and milestones. - ✅ Default bitrate preset normalized to 2.5 Mbps to avoid "select one" - ✅ Linked simple and advanced bitrate presets so they stay in sync - ✅ Hide quality presets when bitrate mode is not CRF +- ✅ Collapsed snippet tools behind a toggle in the convert footer - ✅ Stabilized video seeking and embedded rendering - ✅ Improved player window positioning - ✅ Fixed clear video functionality diff --git a/TODO.md b/TODO.md index 9405edd..d6c3e07 100644 --- a/TODO.md +++ b/TODO.md @@ -64,6 +64,7 @@ This file tracks upcoming features, improvements, and known issues. - Default bitrate preset normalized to 2.5 Mbps to prevent empty select - Simple/advanced bitrate presets synced - Quality presets hidden when bitrate mode is not CRF + - Snippet tools collapsed behind a toggle to reduce footer clutter *Last Updated: 2025-12-20* diff --git a/main.go b/main.go index d3e5cc3..8c61aa9 100644 --- a/main.go +++ b/main.go @@ -7235,6 +7235,24 @@ func buildConvertView(state *appState, src *videoSource) fyne.CanvasObject { snippetRow = container.NewHBox(snippetBtn, layout.NewSpacer(), snippetHint) } + snippetTools := container.NewVBox(snippetConfigRow, snippetRow) + snippetTools.Hide() + snippetToolsVisible := false + snippetToggleBtn := widget.NewButton("Show Snippet Tools", func() { + if snippetToolsVisible { + snippetTools.Hide() + snippetToggleBtn.SetText("Show Snippet Tools") + } else { + snippetTools.Show() + snippetToggleBtn.SetText("Hide Snippet Tools") + } + snippetToolsVisible = !snippetToolsVisible + }) + snippetToggleBtn.Importance = widget.LowImportance + if src == nil { + snippetToggleBtn.Disable() + } + // Stack video and metadata directly so metadata sits immediately under the player. leftColumn := container.NewVBox(videoPanel, metaPanel) @@ -7558,8 +7576,8 @@ func buildConvertView(state *appState, src *videoSource) fyne.CanvasObject { // Build footer sections footerSections := []fyne.CanvasObject{ - snippetConfigRow, - snippetRow, + snippetToggleBtn, + snippetTools, widget.NewSeparator(), } if commandPreviewRow != nil && state.convertCommandPreviewShow {