From 7876ab02d1aadfdf57f20dc18b70118c9aef2984 Mon Sep 17 00:00:00 2001 From: Thomas Queste Date: Wed, 25 Sep 2024 07:41:53 +0200 Subject: [PATCH 1/2] feat: add about dialog in tray --- .goreleaser.yaml | 2 +- main.go | 10 +++++++++- ui/ui.go | 48 ++++++++++++++++++++++++++++++++++++++++++------ 3 files changed, 52 insertions(+), 8 deletions(-) diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 025d4cb..7c57053 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -20,7 +20,7 @@ builds: flags: - -trimpath ldflags: - - -s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{ .CommitDate }} -X main.builtBy=goreleaser + - -s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.commitDate={{.CommitDate}} # Enable macOS "Universal Binaries" (amd64 + arm binaries) universal_binaries: - replace: true diff --git a/main.go b/main.go index 7a51d27..e149be1 100644 --- a/main.go +++ b/main.go @@ -5,10 +5,18 @@ import ( "github.com/tomsquest/fynodoro/ui" ) +// Variables set by goreleaser +// We need to put them in a Struct to be able to access them in the UI +var ( + version string + commit string + commitDate string +) + func main() { myApp := app.NewWithID("com.tomsquest.fynodoro") myApp.Settings().SetTheme(&ui.Theme{}) myApp.SetIcon(ui.AssetIconPng) - ui.Display(myApp) + ui.Display(myApp, ui.BuildInfo{version, commit, commitDate}) } diff --git a/ui/ui.go b/ui/ui.go index ca095f2..fab2064 100644 --- a/ui/ui.go +++ b/ui/ui.go @@ -13,7 +13,13 @@ import ( "time" ) -func Display(app fyne.App) { +type BuildInfo struct { + Version string + Commit string + CommitDate string +} + +func Display(app fyne.App, buildInfo BuildInfo) { myPref := pref.Load() myPomodoro := pomodoro.NewPomodoro(&pomodoro.Params{ WorkDuration: time.Duration(myPref.WorkDuration) * time.Minute, @@ -23,21 +29,51 @@ func Display(app fyne.App) { }) mainWindow := app.NewWindow("Fynodoro") + if desk, ok := app.(desktop.App); ok { - trayMenu := fyne.NewMenu(app.Metadata().Name, + aboutWindow := makeAboutWindow(app, buildInfo) + trayMenu := fyne.NewMenu("Fynodoro", fyne.NewMenuItem("Show", mainWindow.Show), fyne.NewMenuItem("Hide", mainWindow.Hide), - fyne.NewMenuItem("Center", mainWindow.CenterOnScreen)) + fyne.NewMenuItem("Center", mainWindow.CenterOnScreen), + fyne.NewMenuItem("About", aboutWindow.Show)) desk.SetSystemTrayMenu(trayMenu) } + mainWindow.SetMaster() mainWindow.SetContent(MakeClassicLayout(myPomodoro)) - mainWindow.SetCloseIntercept(func() { - mainWindow.Hide() - }) + mainWindow.SetCloseIntercept(mainWindow.Hide) mainWindow.ShowAndRun() } +func makeAboutWindow(app fyne.App, buildInfo BuildInfo) fyne.Window { + aboutWindow := app.NewWindow("About Fynodoro") + aboutWindow.SetFixedSize(true) + + img := canvas.NewImageFromResource(AssetIconPng) + img.SetMinSize(fyne.NewSquareSize(64)) + imgContainer := container.NewHBox(img, layout.NewSpacer()) + + markdownStr := "# Fynodoro" + "\n" + markdownStr += "" + "\n" + markdownStr += "Fynodoro is a tiny and cute **Pomodoro** Widget" + "\n" + markdownStr += "" + "\n" + markdownStr += "- `Version: " + buildInfo.Version + "`" + "\n" + markdownStr += "- `Commit date: " + buildInfo.CommitDate + " `" + "\n" + markdownStr += "- `Commit: " + buildInfo.Commit + "`" + "\n" + markdown := widget.NewRichTextFromMarkdown(markdownStr) + + closeButton := &widget.Button{ + Text: "Close", + OnTapped: aboutWindow.Hide, + } + buttonsContainer := container.NewHBox(layout.NewSpacer(), closeButton) + + aboutWindow.SetContent(container.NewVBox(imgContainer, markdown, layout.NewSpacer(), buttonsContainer)) + + return aboutWindow +} + func MakeClassicLayout(myPomodoro *pomodoro.Pomodoro) fyne.CanvasObject { timer := canvas.NewText(formatDuration(myPomodoro.RemainingTime), nil) timer.TextSize = 42 From d00dacd74be5f8e7f687f90599cd892499222b31 Mon Sep 17 00:00:00 2001 From: Thomas Queste Date: Thu, 26 Sep 2024 06:31:56 +0200 Subject: [PATCH 2/2] feat: set fixed size of main windows (disable resizing) --- ui/ui.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ui/ui.go b/ui/ui.go index fab2064..0be27d4 100644 --- a/ui/ui.go +++ b/ui/ui.go @@ -29,6 +29,10 @@ func Display(app fyne.App, buildInfo BuildInfo) { }) mainWindow := app.NewWindow("Fynodoro") + mainWindow.SetMaster() + mainWindow.SetContent(MakeClassicLayout(myPomodoro)) + mainWindow.SetCloseIntercept(mainWindow.Hide) + mainWindow.SetFixedSize(true) if desk, ok := app.(desktop.App); ok { aboutWindow := makeAboutWindow(app, buildInfo) @@ -39,10 +43,6 @@ func Display(app fyne.App, buildInfo BuildInfo) { fyne.NewMenuItem("About", aboutWindow.Show)) desk.SetSystemTrayMenu(trayMenu) } - - mainWindow.SetMaster() - mainWindow.SetContent(MakeClassicLayout(myPomodoro)) - mainWindow.SetCloseIntercept(mainWindow.Hide) mainWindow.ShowAndRun() }