Replace chapter warning popup with inline label

Removed confirmation dialog popups when converting files with
chapters to DVD format. Instead, show a non-intrusive inline
warning label that appears/disappears based on format selection.

Warning label:
- Shows only when file has chapters AND DVD format is selected
- Displays inline below format selector in both simple and advanced modes
- No user action required - just informational
- Text: "Chapters will be lost - DVD format doesn't support embedded chapters. Use MKV/MP4 to preserve chapters."
This commit is contained in:
Stu Leak 2025-12-17 03:10:59 -05:00
parent 484a636fb4
commit 6d379a309e

56
main.go
View File

@ -4654,6 +4654,20 @@ func buildConvertView(state *appState, src *videoSource) fyne.CanvasObject {
}
}
// Chapter warning label (shown when converting file with chapters to DVD)
chapterWarningLabel := widget.NewLabel("⚠️ Chapters will be lost - DVD format doesn't support embedded chapters. Use MKV/MP4 to preserve chapters.")
chapterWarningLabel.Wrapping = fyne.TextWrapWord
chapterWarningLabel.TextStyle = fyne.TextStyle{Italic: true}
var updateChapterWarning func()
updateChapterWarning = func() {
isDVD := state.convert.SelectedFormat.Ext == ".mpg"
if src != nil && src.HasChapters && isDVD {
chapterWarningLabel.Show()
} else {
chapterWarningLabel.Hide()
}
}
formatSelect := widget.NewSelect(formatLabels, func(value string) {
for _, opt := range formatOptions {
if opt.Label == value {
@ -4663,6 +4677,9 @@ func buildConvertView(state *appState, src *videoSource) fyne.CanvasObject {
if updateDVDOptions != nil {
updateDVDOptions() // Show/hide DVD options and auto-set resolution
}
if updateChapterWarning != nil {
updateChapterWarning() // Show/hide chapter warning
}
// Keep the codec selector aligned with the chosen format by default
newCodec := mapFormatCodec(opt.VideoCodec)
@ -4678,6 +4695,7 @@ func buildConvertView(state *appState, src *videoSource) fyne.CanvasObject {
}
})
formatSelect.SetSelected(state.convert.SelectedFormat.Label)
updateChapterWarning() // Initial visibility
if !state.convert.AspectUserSet {
state.convert.OutputAspect = "Source"
@ -5374,6 +5392,7 @@ func buildConvertView(state *appState, src *videoSource) fyne.CanvasObject {
widget.NewLabelWithStyle("═══ OUTPUT ═══", fyne.TextAlignCenter, fyne.TextStyle{Bold: true}),
widget.NewLabelWithStyle("Format", fyne.TextAlignLeading, fyne.TextStyle{Bold: true}),
formatSelect,
chapterWarningLabel, // Warning when converting chapters to DVD
dvdAspectBox, // DVD options appear here when DVD format selected
widget.NewLabelWithStyle("Output Name", fyne.TextAlignLeading, fyne.TextStyle{Bold: true}),
outputEntry,
@ -5400,6 +5419,7 @@ func buildConvertView(state *appState, src *videoSource) fyne.CanvasObject {
widget.NewLabelWithStyle("═══ OUTPUT ═══", fyne.TextAlignCenter, fyne.TextStyle{Bold: true}),
widget.NewLabelWithStyle("Format", fyne.TextAlignLeading, fyne.TextStyle{Bold: true}),
formatSelect,
chapterWarningLabel, // Warning when converting chapters to DVD
dvdAspectBox, // DVD options appear here when DVD format selected
widget.NewLabelWithStyle("Output Name", fyne.TextAlignLeading, fyne.TextStyle{Bold: true}),
outputEntry,
@ -5768,24 +5788,6 @@ func buildConvertView(state *appState, src *videoSource) fyne.CanvasObject {
// Add to Queue button
addQueueBtn := widget.NewButton("Add to Queue", func() {
state.persistConvertConfig()
// Check if converting a file with chapters to DVD format
isDVD := state.convert.SelectedFormat.Ext == ".mpg"
if state.source != nil && state.source.HasChapters && isDVD {
dialog.ShowConfirm("Chapter Warning",
"This file contains chapters, but DVD/MPEG format does not support embedded chapters.\n\n"+
"Chapters will be lost in the conversion.\n\n"+
"Consider using MKV or MP4 format to preserve chapters.\n\n"+
"Continue anyway?",
func(confirmed bool) {
if !confirmed {
return
}
state.executeAddToQueue()
}, state.window)
return
}
state.executeAddToQueue()
})
if src == nil {
@ -5794,24 +5796,6 @@ func buildConvertView(state *appState, src *videoSource) fyne.CanvasObject {
convertBtn = widget.NewButton("CONVERT NOW", func() {
state.persistConvertConfig()
// Check if converting a file with chapters to DVD format
isDVD := state.convert.SelectedFormat.Ext == ".mpg"
if state.source != nil && state.source.HasChapters && isDVD {
dialog.ShowConfirm("Chapter Warning",
"This file contains chapters, but DVD/MPEG format does not support embedded chapters.\n\n"+
"Chapters will be lost in the conversion.\n\n"+
"Consider using MKV or MP4 format to preserve chapters.\n\n"+
"Continue anyway?",
func(confirmed bool) {
if !confirmed {
return
}
state.executeConversion()
}, state.window)
return
}
state.executeConversion()
})
convertBtn.Importance = widget.HighImportance