fix(ui): Enable word wrapping for batch settings labels

Issue:
- User reported batch settings text being cut off
- "Settings persist across videos. Change them anytime to affect all sub"
- Text truncated instead of wrapping to next line
- Cache directory hint also had truncation issues

Root Cause:
- settingsInfoLabel didn't have TextWrapWord enabled
- cacheDirHint had TextWrapWord but wasn't in a sized container
- Labels in VBox need padded containers for wrapping to work properly

Solution:
- Enabled TextWrapWord on settingsInfoLabel
- Wrapped both labels in container.NewPadded() containers:
  * settingsInfoContainer: "Settings persist across videos..." text
  * cacheDirHintContainer: "Use an SSD for best performance..." text
- Replaced direct label usage with containers in settingsContent VBox

Affected Labels:
- settingsInfoLabel: Batch settings persistence explanation
- cacheDirHint: Cache/temp directory usage guidance

Implementation:
- Added TextWrapWord to settingsInfoLabel
- Created padded containers for both labels
- Updated settingsContent VBox to use containers instead of labels
- Consistent with fix from commit 1051329

Impact:
- Batch settings text now wraps properly
- "Change them anytime to affect all subsequent videos" fully visible
- Better readability in narrow windows
- No more truncated guidance text

Files Changed:
- main.go: Batch settings label wrapping

Reported-by: User (screenshot showing batch settings truncation)
Related: Commit 1051329 (hint label wrapping fix)
Tested: Build successful (v0.1.0-dev20)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Stu Leak 2025-12-28 19:43:55 -05:00
parent 1051329763
commit 3863242ba9

View File

@ -6836,6 +6836,9 @@ func buildConvertView(state *appState, src *videoSource) fyne.CanvasObject {
// Settings management for batch operations // Settings management for batch operations
settingsInfoLabel := widget.NewLabel("Settings persist across videos. Change them anytime to affect all subsequent videos.") settingsInfoLabel := widget.NewLabel("Settings persist across videos. Change them anytime to affect all subsequent videos.")
settingsInfoLabel.Alignment = fyne.TextAlignCenter settingsInfoLabel.Alignment = fyne.TextAlignCenter
settingsInfoLabel.Wrapping = fyne.TextWrapWord
// Wrap in padded container for proper text wrapping in narrow windows
settingsInfoContainer := container.NewPadded(settingsInfoLabel)
cacheDirLabel := widget.NewLabelWithStyle("Cache/Temp Directory", fyne.TextAlignLeading, fyne.TextStyle{Bold: true}) cacheDirLabel := widget.NewLabelWithStyle("Cache/Temp Directory", fyne.TextAlignLeading, fyne.TextStyle{Bold: true})
cacheDirEntry := widget.NewEntry() cacheDirEntry := widget.NewEntry()
@ -6843,6 +6846,8 @@ func buildConvertView(state *appState, src *videoSource) fyne.CanvasObject {
cacheDirEntry.SetText(state.convert.TempDir) cacheDirEntry.SetText(state.convert.TempDir)
cacheDirHint := widget.NewLabel("Use an SSD for best performance. Leave blank to use system temp.") cacheDirHint := widget.NewLabel("Use an SSD for best performance. Leave blank to use system temp.")
cacheDirHint.Wrapping = fyne.TextWrapWord cacheDirHint.Wrapping = fyne.TextWrapWord
// Wrap in padded container for proper text wrapping in narrow windows
cacheDirHintContainer := container.NewPadded(cacheDirHint)
cacheDirEntry.OnChanged = func(val string) { cacheDirEntry.OnChanged = func(val string) {
state.convert.TempDir = strings.TrimSpace(val) state.convert.TempDir = strings.TrimSpace(val)
utils.SetTempDir(state.convert.TempDir) utils.SetTempDir(state.convert.TempDir)
@ -6872,12 +6877,12 @@ func buildConvertView(state *appState, src *videoSource) fyne.CanvasObject {
resetSettingsBtn.Importance = widget.LowImportance resetSettingsBtn.Importance = widget.LowImportance
settingsContent := container.NewVBox( settingsContent := container.NewVBox(
settingsInfoLabel, settingsInfoContainer,
widget.NewSeparator(), widget.NewSeparator(),
cacheDirLabel, cacheDirLabel,
container.NewBorder(nil, nil, nil, cacheBrowseBtn, cacheDirEntry), container.NewBorder(nil, nil, nil, cacheBrowseBtn, cacheDirEntry),
cacheUseSystemBtn, cacheUseSystemBtn,
cacheDirHint, cacheDirHintContainer,
resetSettingsBtn, resetSettingsBtn,
) )
settingsContent.Hide() settingsContent.Hide()