From 442658d18b992446c7ae7f26738b77b31d76db6c Mon Sep 17 00:00:00 2001 From: Stu Leak Date: Sun, 4 Jan 2026 02:59:04 -0500 Subject: [PATCH] Rework about dialog layout to match mockup --- main.go | 69 ++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 41 insertions(+), 28 deletions(-) diff --git a/main.go b/main.go index 583b710..ee15847 100644 --- a/main.go +++ b/main.go @@ -13,7 +13,6 @@ import ( "image/png" "io" "math" - "net/url" "os" "os/exec" "path/filepath" @@ -506,55 +505,69 @@ func (s *appState) showAbout() { dev := "Leak Technologies" logsPath := getLogsDir() + title := canvas.NewText("About / Support", textColor) + title.TextSize = 20 + versionText := widget.NewLabel(version) devText := widget.NewLabel(fmt.Sprintf("Developer: %s", dev)) - var ltLogo fyne.CanvasObject - logoCandidates := []string{filepath.Join("assets", "logo", "LT_Logo-26.png")} - if exe, err := os.Executable(); err == nil { - dir := filepath.Dir(exe) - logoCandidates = append(logoCandidates, filepath.Join(dir, "assets", "logo", "LT_Logo-26.png")) - } - for _, p := range logoCandidates { - if _, err := os.Stat(p); err == nil { - img := canvas.NewImageFromFile(p) - img.FillMode = canvas.ImageFillContain - img.SetMinSize(fyne.NewSize(96, 96)) - ltLogo = img - break + loadLogo := func(name string, size float32) fyne.CanvasObject { + candidates := []string{filepath.Join("assets", "logo", name)} + if exe, err := os.Executable(); err == nil { + dir := filepath.Dir(exe) + candidates = append(candidates, filepath.Join(dir, "assets", "logo", name)) } + for _, p := range candidates { + if _, err := os.Stat(p); err == nil { + img := canvas.NewImageFromFile(p) + img.FillMode = canvas.ImageFillContain + img.SetMinSize(fyne.NewSize(size, size)) + return img + } + } + return nil } - logsLink := widget.NewButton("Open Logs Folder", func() { + vtLogo := loadLogo("VT_Icon.png", 72) + ltLogo := loadLogo("LT_Logo-26.png", 96) + + logsLink := widget.NewButton("Logs Folder", func() { if err := openFolder(logsPath); err != nil { dialog.ShowError(fmt.Errorf("failed to open logs folder: %w", err), s.window) } }) logsLink.Importance = widget.LowImportance - donateURL, _ := url.Parse("https://leaktechnologies.dev/support") - donateLink := widget.NewHyperlink("Support development", donateURL) - feedbackLabel := widget.NewLabel("Feedback: use the Logs button on the main menu to view logs; send issues with attached logs.") feedbackLabel.Wrapping = fyne.TextWrapWord mainContent := container.NewVBox( versionText, devText, - logsLink, - donateLink, + widget.NewLabel(""), + widget.NewLabel("Support Development"), feedbackLabel, ) - scrollContent := container.NewVScroll(mainContent) - scrollContent.SetMinSize(fyne.NewSize(420, 220)) - var body fyne.CanvasObject - if ltLogo != nil { - topRow := container.NewHBox(layout.NewSpacer(), ltLogo) - body = container.NewBorder(topRow, nil, nil, nil, scrollContent) - } else { - body = scrollContent + logoColumn := container.NewVBox() + if vtLogo != nil { + logoColumn.Add(vtLogo) } + if ltLogo != nil { + logoColumn.Add(ltLogo) + } + logoColumn.Add(layout.NewSpacer()) + logoColumn.Add(logsLink) + + body := container.NewBorder( + container.NewHBox(title), + nil, + nil, + logoColumn, + mainContent, + ) + body = container.NewPadded(body) + body.SetMinSize(fyne.NewSize(560, 280)) dialog.ShowCustom("About & Support", "Close", body, s.window) }