Rearrange snippet controls with options toggle
This commit is contained in:
parent
e39b6a7f99
commit
66346d8cee
3
DONE.md
3
DONE.md
|
|
@ -831,8 +831,7 @@ This file tracks completed features, fixes, and milestones.
|
||||||
- ✅ Default bitrate preset normalized to 2.5 Mbps to avoid "select one"
|
- ✅ Default bitrate preset normalized to 2.5 Mbps to avoid "select one"
|
||||||
- ✅ Linked simple and advanced bitrate presets so they stay in sync
|
- ✅ Linked simple and advanced bitrate presets so they stay in sync
|
||||||
- ✅ Hide quality presets when bitrate mode is not CRF
|
- ✅ Hide quality presets when bitrate mode is not CRF
|
||||||
- ✅ Collapsed snippet tools behind a toggle in the convert footer
|
- ✅ Snippet UI now shows Convert Snippet + batch + options with context-sensitive controls
|
||||||
- ✅ Fixed snippet toggle button scope to avoid build error
|
|
||||||
- ✅ Stabilized video seeking and embedded rendering
|
- ✅ Stabilized video seeking and embedded rendering
|
||||||
- ✅ Improved player window positioning
|
- ✅ Improved player window positioning
|
||||||
- ✅ Fixed clear video functionality
|
- ✅ Fixed clear video functionality
|
||||||
|
|
|
||||||
3
TODO.md
3
TODO.md
|
|
@ -64,8 +64,7 @@ This file tracks upcoming features, improvements, and known issues.
|
||||||
- Default bitrate preset normalized to 2.5 Mbps to prevent empty select
|
- Default bitrate preset normalized to 2.5 Mbps to prevent empty select
|
||||||
- Simple/advanced bitrate presets synced
|
- Simple/advanced bitrate presets synced
|
||||||
- Quality presets hidden when bitrate mode is not CRF
|
- Quality presets hidden when bitrate mode is not CRF
|
||||||
- Snippet tools collapsed behind a toggle to reduce footer clutter
|
- Snippet UI rearranged into Convert Snippet / Batch / Options with context-sensitive visibility
|
||||||
- Snippet toggle scope fixed to eliminate build error
|
|
||||||
|
|
||||||
*Last Updated: 2025-12-20*
|
*Last Updated: 2025-12-20*
|
||||||
|
|
||||||
|
|
|
||||||
47
main.go
47
main.go
|
|
@ -7228,30 +7228,29 @@ func buildConvertView(state *appState, src *videoSource) fyne.CanvasObject {
|
||||||
|
|
||||||
snippetHint := widget.NewLabel("Creates a clip centred on the timeline midpoint.")
|
snippetHint := widget.NewLabel("Creates a clip centred on the timeline midpoint.")
|
||||||
|
|
||||||
var snippetRow fyne.CanvasObject
|
snippetConfigRow.Hide()
|
||||||
if snippetAllBtn != nil {
|
snippetOptionsVisible := false
|
||||||
snippetRow = container.NewHBox(snippetBtn, snippetAllBtn, layout.NewSpacer(), snippetHint)
|
var snippetOptionsBtn *widget.Button
|
||||||
} else {
|
snippetOptionsBtn = widget.NewButton("Convert Options", func() {
|
||||||
snippetRow = container.NewHBox(snippetBtn, layout.NewSpacer(), snippetHint)
|
if snippetOptionsVisible {
|
||||||
|
snippetConfigRow.Hide()
|
||||||
|
snippetOptionsBtn.SetText("Convert Options")
|
||||||
|
} else {
|
||||||
|
snippetConfigRow.Show()
|
||||||
|
snippetOptionsBtn.SetText("Hide Options")
|
||||||
|
}
|
||||||
|
snippetOptionsVisible = !snippetOptionsVisible
|
||||||
|
})
|
||||||
|
snippetOptionsBtn.Importance = widget.LowImportance
|
||||||
|
if src == nil {
|
||||||
|
snippetOptionsBtn.Disable()
|
||||||
}
|
}
|
||||||
|
|
||||||
snippetTools := container.NewVBox(snippetConfigRow, snippetRow)
|
var snippetRow fyne.CanvasObject
|
||||||
snippetTools.Hide()
|
if snippetAllBtn != nil {
|
||||||
snippetToolsVisible := false
|
snippetRow = container.NewHBox(snippetBtn, snippetAllBtn, snippetOptionsBtn, layout.NewSpacer(), snippetHint)
|
||||||
var snippetToggleBtn *widget.Button
|
} else {
|
||||||
snippetToggleBtn = widget.NewButton("Show Snippet Tools", func() {
|
snippetRow = container.NewHBox(snippetBtn, snippetOptionsBtn, layout.NewSpacer(), snippetHint)
|
||||||
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.
|
// Stack video and metadata directly so metadata sits immediately under the player.
|
||||||
|
|
@ -7577,8 +7576,8 @@ func buildConvertView(state *appState, src *videoSource) fyne.CanvasObject {
|
||||||
|
|
||||||
// Build footer sections
|
// Build footer sections
|
||||||
footerSections := []fyne.CanvasObject{
|
footerSections := []fyne.CanvasObject{
|
||||||
snippetToggleBtn,
|
snippetRow,
|
||||||
snippetTools,
|
snippetConfigRow,
|
||||||
widget.NewSeparator(),
|
widget.NewSeparator(),
|
||||||
}
|
}
|
||||||
if commandPreviewRow != nil && state.convertCommandPreviewShow {
|
if commandPreviewRow != nil && state.convertCommandPreviewShow {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user