mirror of
https://github.com/AynaLivePlayer/AynaLivePlayer.git
synced 2025-12-13 13:38:16 +08:00
Initial commit
This commit is contained in:
85
app/fyne_demo/tutorials/advanced.go
Normal file
85
app/fyne_demo/tutorials/advanced.go
Normal file
@@ -0,0 +1,85 @@
|
||||
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),
|
||||
),
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user