mirror of
https://github.com/ehang-io/nps.git
synced 2025-07-03 21:20:41 +00:00
77 lines
2.4 KiB
Go
77 lines
2.4 KiB
Go
// 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"
|
|
"github.com/cnlh/nps/gui/fyne_demo/data"
|
|
"github.com/cnlh/nps/gui/fyne_demo/screens"
|
|
)
|
|
|
|
const preferenceCurrentTab = "currentTab"
|
|
|
|
func welcomeScreen(a fyne.App) fyne.CanvasObject {
|
|
logo := canvas.NewImageFromResource(data.FyneScene)
|
|
logo.SetMinSize(fyne.NewSize(228, 167))
|
|
|
|
link, err := url.Parse("https://fyne.io/")
|
|
if err != nil {
|
|
fyne.LogError("Could not parse URL", err)
|
|
}
|
|
|
|
return widget.NewVBox(
|
|
widget.NewLabelWithStyle("Welcome to the Fyne toolkit demo app", fyne.TextAlignCenter, fyne.TextStyle{Bold: true}),
|
|
layout.NewSpacer(),
|
|
widget.NewHBox(layout.NewSpacer(), logo, layout.NewSpacer()),
|
|
widget.NewHyperlinkWithStyle("fyne.io", link, fyne.TextAlignCenter, fyne.TextStyle{}),
|
|
layout.NewSpacer(),
|
|
|
|
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())
|
|
}),
|
|
),
|
|
),
|
|
)
|
|
}
|
|
|
|
func main() {
|
|
a := app.NewWithID("io.fyne.demo")
|
|
a.SetIcon(theme.FyneLogo())
|
|
|
|
w := a.NewWindow("Fyne Demo")
|
|
w.SetMainMenu(fyne.NewMainMenu(fyne.NewMenu("File",
|
|
fyne.NewMenuItem("New", func() { fmt.Println("Menu New") }),
|
|
// a quit item will be appended to our first menu
|
|
), fyne.NewMenu("Edit",
|
|
fyne.NewMenuItem("Cut", func() { fmt.Println("Menu Cut") }),
|
|
fyne.NewMenuItem("Copy", func() { fmt.Println("Menu Copy") }),
|
|
fyne.NewMenuItem("Paste", func() { fmt.Println("Menu Paste") }),
|
|
)))
|
|
w.SetMaster()
|
|
|
|
tabs := widget.NewTabContainer(
|
|
widget.NewTabItemWithIcon("Welcome", theme.HomeIcon(), welcomeScreen(a)),
|
|
widget.NewTabItemWithIcon("Widgets", theme.ContentCopyIcon(), screens.WidgetScreen()),
|
|
widget.NewTabItemWithIcon("Graphics", theme.DocumentCreateIcon(), screens.GraphicsScreen()),
|
|
widget.NewTabItemWithIcon("Windows", theme.ViewFullScreenIcon(), screens.DialogScreen(w)),
|
|
widget.NewTabItemWithIcon("Advanced", theme.SettingsIcon(), screens.AdvancedScreen(w)))
|
|
tabs.SetTabLocation(widget.TabLocationLeading)
|
|
tabs.SelectTabIndex(a.Preferences().Int(preferenceCurrentTab))
|
|
w.SetContent(tabs)
|
|
|
|
w.ShowAndRun()
|
|
a.Preferences().SetInt(preferenceCurrentTab, tabs.CurrentTabIndex())
|
|
}
|