forked from fyne-io/fyne
/
main.go
102 lines (88 loc) · 2.73 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
// Package main provides various examples of Fyne API capabilities
package main
import (
"fmt"
"net/url"
"fyne.io/fyne"
"fyne.io/fyne/app"
"fyne.io/fyne/canvas"
"fyne.io/fyne/layout"
"fyne.io/fyne/theme"
"fyne.io/fyne/widget"
)
func formApp(app fyne.App) {
w := app.NewWindow("Form")
name := widget.NewEntry()
name.SetPlaceHolder("John Smith")
email := widget.NewEntry()
email.SetPlaceHolder("test@example.com")
password := widget.NewPasswordEntry()
largeText := widget.NewMultiLineEntry()
form := &widget.Form{
OnCancel: func() {
w.Close()
},
OnSubmit: func() {
fmt.Println("Form submitted")
fmt.Println("Name:", name.Text)
fmt.Println("Email:", email.Text)
fmt.Println("Password:", password.Text)
fmt.Println("Message:", largeText.Text)
},
}
form.Append("Name", name)
form.Append("Email", email)
form.Append("Password", password)
form.Append("Message", largeText)
w.SetContent(form)
w.Show()
}
func confirmCallback(response bool) {
fmt.Println("Responded with", response)
}
func main() {
a := app.New()
w := a.NewWindow("Fyne Demo")
logo := canvas.NewImageFromResource(theme.FyneLogo())
logo.SetMinSize(fyne.NewSize(64, 64))
fyneio, err := url.Parse("https://fyne.io/")
if err != nil {
fyne.LogError("Could not parse URL", err)
}
w.SetContent(widget.NewVBox(
widget.NewToolbar(widget.NewToolbarAction(theme.MailComposeIcon(), func() { fmt.Println("New") }),
widget.NewToolbarSeparator(),
widget.NewToolbarSpacer(),
widget.NewToolbarAction(theme.ContentCutIcon(), func() { fmt.Println("Cut") }),
widget.NewToolbarAction(theme.ContentCopyIcon(), func() { fmt.Println("Copy") }),
widget.NewToolbarAction(theme.ContentPasteIcon(), func() { fmt.Println("Paste") }),
),
widget.NewGroup("Demos", widget.NewVBox(
widget.NewButton("Canvas", func() { Canvas(a) }),
widget.NewButton("Icons", func() { Icons(a) }),
widget.NewButton("Layout", func() { Layout(a) }),
widget.NewButton("Widgets", func() { Widget(a) }),
widget.NewButton("Form", func() { formApp(a) }),
widget.NewButton("Dialogs", func() { Dialogs(a) }),
)),
widget.NewGroup("Theme",
fyne.NewContainerWithLayout(layout.NewGridLayout(2),
widget.NewButton("Dark", func() {
a.Settings().SetTheme(theme.DarkTheme())
}),
widget.NewButton("Light", func() {
a.Settings().SetTheme(theme.LightTheme())
}),
),
),
widget.NewHBox(layout.NewSpacer(), logo, layout.NewSpacer()),
widget.NewHyperlinkWithStyle("fyne.io", fyneio, fyne.TextAlignCenter, fyne.TextStyle{}),
layout.NewSpacer(),
widget.NewButton("Input", func() { Input(a) }),
widget.NewButton("Advanced", func() { Advanced(a) }),
widget.NewButtonWithIcon("Quit", theme.CancelIcon(), func() {
a.Quit()
}),
))
w.ShowAndRun()
}