mirror of https://github.com/ehang-io/nps
66 lines
1.6 KiB
Go
66 lines
1.6 KiB
Go
package screens
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"fyne.io/fyne"
|
|
"fyne.io/fyne/driver/desktop"
|
|
"fyne.io/fyne/layout"
|
|
"fyne.io/fyne/widget"
|
|
)
|
|
|
|
func scaleString(c fyne.Canvas) string {
|
|
return fmt.Sprintf("%0.2f", c.Scale())
|
|
}
|
|
|
|
func prependTo(g *widget.Group, s string) {
|
|
g.Prepend(widget.NewLabel(s))
|
|
}
|
|
|
|
// AdvancedScreen loads a panel that shows details and settings that are a bit
|
|
// more detailed than normally needed.
|
|
func AdvancedScreen(win fyne.Window) fyne.CanvasObject {
|
|
scale := widget.NewLabel("")
|
|
|
|
screen := widget.NewGroup("Screen", widget.NewForm(
|
|
&widget.FormItem{Text: "Scale", Widget: scale},
|
|
))
|
|
|
|
scale.SetText(scaleString(win.Canvas()))
|
|
|
|
label := widget.NewLabel("Just type...")
|
|
generic := widget.NewGroupWithScroller("Generic")
|
|
desk := widget.NewGroupWithScroller("Desktop")
|
|
|
|
win.Canvas().SetOnTypedRune(func(r rune) {
|
|
prependTo(generic, "Rune: "+string(r))
|
|
})
|
|
win.Canvas().SetOnTypedKey(func(ev *fyne.KeyEvent) {
|
|
prependTo(generic, "Key : "+string(ev.Name))
|
|
})
|
|
if deskCanvas, ok := win.Canvas().(desktop.Canvas); ok {
|
|
deskCanvas.SetOnKeyDown(func(ev *fyne.KeyEvent) {
|
|
prependTo(desk, "KeyDown: "+string(ev.Name))
|
|
})
|
|
deskCanvas.SetOnKeyUp(func(ev *fyne.KeyEvent) {
|
|
prependTo(desk, "KeyUp : "+string(ev.Name))
|
|
})
|
|
}
|
|
|
|
return widget.NewHBox(widget.NewVBox(screen,
|
|
widget.NewButton("Custom Theme", func() {
|
|
fyne.CurrentApp().Settings().SetTheme(newCustomTheme())
|
|
}),
|
|
widget.NewButton("Fullscreen", func() {
|
|
win.SetFullScreen(!win.FullScreen())
|
|
}),
|
|
),
|
|
|
|
fyne.NewContainerWithLayout(layout.NewBorderLayout(label, nil, nil, nil),
|
|
label,
|
|
fyne.NewContainerWithLayout(layout.NewGridLayout(2),
|
|
generic, desk,
|
|
),
|
|
))
|
|
}
|