You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
871 B
54 lines
871 B
2 years ago
|
package ui
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"os"
|
||
|
|
||
|
"fyne.io/fyne/v2"
|
||
|
"fyne.io/fyne/v2/app"
|
||
|
"fyne.io/fyne/v2/container"
|
||
|
"fyne.io/fyne/v2/widget"
|
||
|
)
|
||
|
|
||
|
type UI struct {
|
||
|
Options *Options
|
||
|
mw *fyne.Window
|
||
|
}
|
||
|
|
||
|
func New(op ...Option) GUIApp {
|
||
|
opts := &Options{}
|
||
|
for _, o := range op {
|
||
|
o(opts)
|
||
|
}
|
||
|
if err := opts.Validate(); err != nil {
|
||
|
panic(fmt.Errorf("init ui failed: %v", err))
|
||
|
}
|
||
|
|
||
|
//fyne
|
||
|
a := app.New()
|
||
|
w := a.NewWindow(fmt.Sprintf("%v %v", opts.Name, opts.Version))
|
||
|
|
||
|
lable1 := widget.NewLabel(fmt.Sprintf("Listening at %v", opts.Port))
|
||
|
lable2 := widget.NewLabel("Running")
|
||
|
w.SetContent(container.NewVBox(
|
||
|
lable1,
|
||
|
lable2,
|
||
|
))
|
||
|
w.Resize(fyne.NewSize(240, 120))
|
||
|
|
||
|
return &UI{
|
||
|
Options: opts,
|
||
|
mw: &w,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (u *UI) Run(exitCh chan os.Signal) int {
|
||
|
window := *u.mw
|
||
|
window.ShowAndRun()
|
||
|
return 0
|
||
|
}
|
||
|
func (u *UI) Close() {
|
||
|
window := *u.mw
|
||
|
window.Close()
|
||
|
}
|