mirror of
https://github.com/AynaLivePlayer/AynaLivePlayer.git
synced 2025-12-11 20:58:13 +08:00
86 lines
2.3 KiB
Go
86 lines
2.3 KiB
Go
package tutorials
|
|
|
|
import (
|
|
"strconv"
|
|
"time"
|
|
|
|
"fyne.io/fyne/v2"
|
|
"fyne.io/fyne/v2/container"
|
|
"fyne.io/fyne/v2/driver/desktop"
|
|
"fyne.io/fyne/v2/widget"
|
|
)
|
|
|
|
func scaleString(c fyne.Canvas) string {
|
|
return strconv.FormatFloat(float64(c.Scale()), 'f', 2, 32)
|
|
}
|
|
|
|
func texScaleString(c fyne.Canvas) string {
|
|
pixels, _ := c.PixelCoordinateForPosition(fyne.NewPos(1, 1))
|
|
texScale := float32(pixels) / c.Scale()
|
|
return strconv.FormatFloat(float64(texScale), 'f', 2, 32)
|
|
}
|
|
|
|
func prependTo(g *fyne.Container, s string) {
|
|
g.Objects = append([]fyne.CanvasObject{widget.NewLabel(s)}, g.Objects...)
|
|
g.Refresh()
|
|
}
|
|
|
|
func setScaleText(scale, tex *widget.Label, win fyne.Window) {
|
|
for scale.Visible() {
|
|
scale.SetText(scaleString(win.Canvas()))
|
|
tex.SetText(texScaleString(win.Canvas()))
|
|
|
|
time.Sleep(time.Second)
|
|
}
|
|
}
|
|
|
|
// 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("")
|
|
tex := widget.NewLabel("")
|
|
|
|
screen := widget.NewCard("Screen info", "", widget.NewForm(
|
|
&widget.FormItem{Text: "Scale", Widget: scale},
|
|
&widget.FormItem{Text: "Texture Scale", Widget: tex},
|
|
))
|
|
|
|
go setScaleText(scale, tex, win)
|
|
|
|
label := widget.NewLabel("Just type...")
|
|
generic := container.NewVBox()
|
|
desk := container.NewVBox()
|
|
|
|
genericCard := widget.NewCard("", "Generic", container.NewVScroll(generic))
|
|
deskCard := widget.NewCard("", "Desktop", container.NewVScroll(desk))
|
|
|
|
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 container.NewHBox(
|
|
container.NewVBox(screen,
|
|
widget.NewButton("Custom Theme", func() {
|
|
fyne.CurrentApp().Settings().SetTheme(newCustomTheme())
|
|
}),
|
|
widget.NewButton("Fullscreen", func() {
|
|
win.SetFullScreen(!win.FullScreen())
|
|
}),
|
|
),
|
|
container.NewBorder(label, nil, nil, nil,
|
|
container.NewGridWithColumns(2, genericCard, deskCard),
|
|
),
|
|
)
|
|
}
|