andlabs-ui/examples/widgetgallery/main.go

80 lines
1.3 KiB
Go

// 30 august 2014
package main
import (
"image"
"reflect"
"github.com/andlabs/ui"
)
var w ui.Window
type areaHandler struct {
img *image.RGBA
}
func (a *areaHandler) Paint(rect image.Rectangle) *image.RGBA {
return a.img.SubImage(rect).(*image.RGBA)
}
func (a *areaHandler) Mouse(me ui.MouseEvent) {}
func (a *areaHandler) Key(ke ui.KeyEvent) bool { return false }
func initGUI() {
b := ui.NewButton("Button")
c := ui.NewCheckbox("Checkbox")
tf := ui.NewTextField()
tf.SetText("Text Field")
pf := ui.NewPasswordField()
pf.SetText("Password Field")
l := ui.NewLabel("Label")
t := ui.NewTab()
t.Append("Tab 1", ui.Space())
t.Append("Tab 2", ui.Space())
t.Append("Tab 3", ui.Space())
g := ui.NewGroup("Group", ui.Space())
icons, il := readIcons()
table := ui.NewTable(reflect.TypeOf(icons[0]))
table.Lock()
d := table.Data().(*[]icon)
*d = icons
table.Unlock()
table.LoadImageList(il)
area := ui.NewArea(200, 200, &areaHandler{tileImage(20)})
stack := ui.NewVerticalStack(
b,
c,
tf,
pf,
l,
t,
g,
table,
area)
stack.SetStretchy(5)
stack.SetStretchy(6)
stack.SetStretchy(7)
stack.SetStretchy(8)
w = ui.NewWindow("Window", 400, 500, stack)
w.OnClosing(func() bool {
ui.Stop()
return true
})
w.Show()
}
func main() {
go ui.Do(initGUI)
err := ui.Go()
if err != nil {
panic(err)
}
}