mirror of
https://github.com/garraflavatra/rolens.git
synced 2025-06-28 05:25:11 +00:00
Moved UI methods to their own struct
This commit is contained in:
@ -3,14 +3,12 @@ package app
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
|
||||
"github.com/garraflavatra/rolens/internal/open_file"
|
||||
"github.com/gen2brain/beeep"
|
||||
"github.com/garraflavatra/rolens/internal/ui"
|
||||
"github.com/ncruces/zenity"
|
||||
"github.com/wailsapp/wails/v2/pkg/menu"
|
||||
"github.com/wailsapp/wails/v2/pkg/menu/keys"
|
||||
@ -32,6 +30,7 @@ type EnvironmentInfo struct {
|
||||
|
||||
type App struct {
|
||||
ctx context.Context
|
||||
ui *ui.UI
|
||||
Env EnvironmentInfo
|
||||
}
|
||||
|
||||
@ -69,8 +68,9 @@ func NewApp() *App {
|
||||
return a
|
||||
}
|
||||
|
||||
func (a *App) Startup(ctx context.Context) {
|
||||
func (a *App) Startup(ctx context.Context, ui *ui.UI) {
|
||||
a.ctx = ctx
|
||||
a.ui = ui
|
||||
wailsRuntime.LogInfo(a.ctx, "Startup")
|
||||
|
||||
wailsEnv := wailsRuntime.Environment(a.ctx)
|
||||
@ -113,8 +113,9 @@ func (a *App) Menu() *menu.Menu {
|
||||
aboutMenu := appMenu.AddSubmenu("About")
|
||||
aboutMenu.AddText("About…", nil, menuEventEmitter(a, "OpenAboutModal"))
|
||||
aboutMenu.AddText("Prefrences…", keys.CmdOrCtrl(","), menuEventEmitter(a, "OpenPrefrences"))
|
||||
aboutMenu.AddText("Open data directory…", nil, func(cd *menu.CallbackData) { a.ui.Reveal(a.Env.DataDirectory) })
|
||||
aboutMenu.AddSeparator()
|
||||
aboutMenu.AddText("Open log directory…", nil, func(cd *menu.CallbackData) { open_file.Reveal(a.Env.LogDirectory) })
|
||||
aboutMenu.AddText("Open log directory…", nil, func(cd *menu.CallbackData) { a.ui.Reveal(a.Env.LogDirectory) })
|
||||
aboutMenu.AddText("Purge logs", nil, func(cd *menu.CallbackData) { a.PurgeLogDirectory() })
|
||||
aboutMenu.AddSeparator()
|
||||
aboutMenu.AddText("Quit", keys.CmdOrCtrl("q"), func(cd *menu.CallbackData) { wailsRuntime.Quit(a.ctx) })
|
||||
@ -144,45 +145,3 @@ func (a *App) Menu() *menu.Menu {
|
||||
|
||||
return appMenu
|
||||
}
|
||||
|
||||
func (a *App) OpenDirectory(id, title string) string {
|
||||
if title == "" {
|
||||
title = "Choose a directory"
|
||||
}
|
||||
|
||||
wailsRuntime.LogInfo(a.ctx, fmt.Sprintf("Opening directory ('%v')", title))
|
||||
dir, err := zenity.SelectFile(zenity.Title(title), zenity.Directory())
|
||||
|
||||
if err != nil && err != zenity.ErrCanceled {
|
||||
wailsRuntime.LogWarning(a.ctx, "Encountered an error while opening directory:")
|
||||
wailsRuntime.LogWarning(a.ctx, err.Error())
|
||||
wailsRuntime.MessageDialog(a.ctx, wailsRuntime.MessageDialogOptions{
|
||||
Type: wailsRuntime.ErrorDialog,
|
||||
Title: "Encountered an error while opening directory",
|
||||
Message: err.Error(),
|
||||
})
|
||||
}
|
||||
|
||||
wailsRuntime.LogInfo(a.ctx, "Chosen directory: "+dir)
|
||||
return dir
|
||||
}
|
||||
|
||||
func (a *App) EnterText(title, info, defaultEntry string) string {
|
||||
input, err := zenity.Entry(info, zenity.Title(title), zenity.EntryText(defaultEntry))
|
||||
|
||||
if err == zenity.ErrCanceled {
|
||||
return ""
|
||||
} else if err != nil {
|
||||
zenity.Error(err.Error(), zenity.Title("Encountered an error!"), zenity.ErrorIcon)
|
||||
return ""
|
||||
} else {
|
||||
return input
|
||||
}
|
||||
}
|
||||
|
||||
func (a *App) Beep() {
|
||||
if runtime.GOOS == "windows" {
|
||||
return
|
||||
}
|
||||
beeep.Beep(beeep.DefaultFreq, beeep.DefaultDuration)
|
||||
}
|
||||
|
30
internal/ui/dialogs.go
Normal file
30
internal/ui/dialogs.go
Normal file
@ -0,0 +1,30 @@
|
||||
package ui
|
||||
|
||||
import "github.com/ncruces/zenity"
|
||||
|
||||
func (u *UI) OpenDirectory(id, title string) string {
|
||||
if title == "" {
|
||||
title = "Choose a directory"
|
||||
}
|
||||
|
||||
dir, err := zenity.SelectFile(zenity.Title(title), zenity.Directory())
|
||||
|
||||
if err != nil && err != zenity.ErrCanceled {
|
||||
zenity.Error("Error while opening directory", zenity.ErrorIcon)
|
||||
}
|
||||
|
||||
return dir
|
||||
}
|
||||
|
||||
func (u *UI) EnterText(title, info, defaultEntry string) string {
|
||||
input, err := zenity.Entry(info, zenity.Title(title), zenity.EntryText(defaultEntry))
|
||||
|
||||
if err == zenity.ErrCanceled {
|
||||
return ""
|
||||
} else if err != nil {
|
||||
zenity.Error(err.Error(), zenity.Title("Encountered an error!"), zenity.ErrorIcon)
|
||||
return ""
|
||||
} else {
|
||||
return input
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
package open_file
|
||||
package ui
|
||||
|
||||
// Reveal reveals the specified file in the Finder.
|
||||
func Reveal(fname string) {
|
||||
func (u *UI) Reveal(fname string) {
|
||||
reveal(fname)
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
//go:build darwin
|
||||
|
||||
package open_file
|
||||
package ui
|
||||
|
||||
import "os/exec"
|
||||
|
@ -1,6 +1,6 @@
|
||||
//go:build windows
|
||||
|
||||
package open_file
|
||||
package ui
|
||||
|
||||
import "os/exec"
|
||||
|
27
internal/ui/ui.go
Normal file
27
internal/ui/ui.go
Normal file
@ -0,0 +1,27 @@
|
||||
package ui
|
||||
|
||||
import (
|
||||
"context"
|
||||
"runtime"
|
||||
|
||||
"github.com/gen2brain/beeep"
|
||||
)
|
||||
|
||||
type UI struct {
|
||||
ctx context.Context
|
||||
}
|
||||
|
||||
func New() *UI {
|
||||
return &UI{}
|
||||
}
|
||||
|
||||
func (u *UI) Startup(ctx context.Context) {
|
||||
u.ctx = ctx
|
||||
}
|
||||
|
||||
func (u *UI) Beep() {
|
||||
if runtime.GOOS == "windows" {
|
||||
return
|
||||
}
|
||||
beeep.Beep(beeep.DefaultFreq, beeep.DefaultDuration)
|
||||
}
|
Reference in New Issue
Block a user