package screens import ( "errors" "fmt" "time" "fyne.io/fyne" "fyne.io/fyne/dialog" "fyne.io/fyne/layout" "fyne.io/fyne/widget" ) func confirmCallback(response bool) { fmt.Println("Responded with", response) } // DialogScreen loads a panel that lists the dialog windows that can be tested. func DialogScreen(win fyne.Window) fyne.CanvasObject { dialogs := widget.NewGroup("Dialogs", widget.NewButton("Info", func() { dialog.ShowInformation("Information", "You should know this thing...", win) }), widget.NewButton("Error", func() { err := errors.New("A dummy error message") dialog.ShowError(err, win) }), widget.NewButton("Confirm", func() { cnf := dialog.NewConfirm("Confirmation", "Are you enjoying this demo?", confirmCallback, win) cnf.SetDismissText("Nah") cnf.SetConfirmText("Oh Yes!") cnf.Show() }), widget.NewButton("Progress", func() { prog := dialog.NewProgress("MyProgress", "Nearly there...", win) go func() { num := 0.0 for num < 1.0 { time.Sleep(50 * time.Millisecond) prog.SetValue(num) num += 0.01 } prog.SetValue(1) prog.Hide() }() prog.Show() }), widget.NewButton("Custom", func() { content := widget.NewEntry() content.SetPlaceHolder("Type something here") content.OnChanged = func(text string) { fmt.Println("Entered", text) } dialog.ShowCustom("Custom dialog", "Done", content, win) }), ) windows := widget.NewVBox(dialogs, widget.NewGroup("Windows", widget.NewButton("New window", func() { w := fyne.CurrentApp().NewWindow("Hello") w.SetContent(widget.NewLabel("Hello World!")) w.Show() }), widget.NewButton("Fixed size window", func() { w := fyne.CurrentApp().NewWindow("Fixed") w.SetContent(fyne.NewContainerWithLayout(layout.NewCenterLayout(), widget.NewLabel("Hello World!"))) w.Resize(fyne.NewSize(240, 180)) w.SetFixedSize(true) w.Show() }), widget.NewButton("Centered window", func() { w := fyne.CurrentApp().NewWindow("Central") w.SetContent(fyne.NewContainerWithLayout(layout.NewCenterLayout(), widget.NewLabel("Hello World!"))) w.CenterOnScreen() w.Show() }))) return fyne.NewContainerWithLayout(layout.NewAdaptiveGridLayout(2), windows, LayoutPanel()) }