advanced.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package screens
  2. import (
  3. "fmt"
  4. "fyne.io/fyne"
  5. "fyne.io/fyne/driver/desktop"
  6. "fyne.io/fyne/layout"
  7. "fyne.io/fyne/widget"
  8. )
  9. func scaleString(c fyne.Canvas) string {
  10. return fmt.Sprintf("%0.2f", c.Scale())
  11. }
  12. func prependTo(g *widget.Group, s string) {
  13. g.Prepend(widget.NewLabel(s))
  14. }
  15. // AdvancedScreen loads a panel that shows details and settings that are a bit
  16. // more detailed than normally needed.
  17. func AdvancedScreen(win fyne.Window) fyne.CanvasObject {
  18. scale := widget.NewLabel("")
  19. screen := widget.NewGroup("Screen", widget.NewForm(
  20. &widget.FormItem{Text: "Scale", Widget: scale},
  21. ))
  22. scale.SetText(scaleString(win.Canvas()))
  23. label := widget.NewLabel("Just type...")
  24. generic := widget.NewGroupWithScroller("Generic")
  25. desk := widget.NewGroupWithScroller("Desktop")
  26. win.Canvas().SetOnTypedRune(func(r rune) {
  27. prependTo(generic, "Rune: "+string(r))
  28. })
  29. win.Canvas().SetOnTypedKey(func(ev *fyne.KeyEvent) {
  30. prependTo(generic, "Key : "+string(ev.Name))
  31. })
  32. if deskCanvas, ok := win.Canvas().(desktop.Canvas); ok {
  33. deskCanvas.SetOnKeyDown(func(ev *fyne.KeyEvent) {
  34. prependTo(desk, "KeyDown: "+string(ev.Name))
  35. })
  36. deskCanvas.SetOnKeyUp(func(ev *fyne.KeyEvent) {
  37. prependTo(desk, "KeyUp : "+string(ev.Name))
  38. })
  39. }
  40. return widget.NewHBox(widget.NewVBox(screen,
  41. widget.NewButton("Custom Theme", func() {
  42. fyne.CurrentApp().Settings().SetTheme(newCustomTheme())
  43. }),
  44. widget.NewButton("Fullscreen", func() {
  45. win.SetFullScreen(!win.FullScreen())
  46. }),
  47. ),
  48. fyne.NewContainerWithLayout(layout.NewBorderLayout(label, nil, nil, nil),
  49. label,
  50. fyne.NewContainerWithLayout(layout.NewGridLayout(2),
  51. generic, desk,
  52. ),
  53. ))
  54. }