62 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package main
 | |
| 
 | |
| import "os"
 | |
| import "image"
 | |
| import "bytes"
 | |
| import _ "image/png"
 | |
| import "github.com/jezek/xgbutil/gopher"
 | |
| import "git.tebibyte.media/sashakoshka/tomo"
 | |
| import "git.tebibyte.media/sashakoshka/tomo/popups"
 | |
| import "git.tebibyte.media/sashakoshka/tomo/layouts"
 | |
| import "git.tebibyte.media/sashakoshka/tomo/elements"
 | |
| import _ "git.tebibyte.media/sashakoshka/tomo/backends/all"
 | |
| import "git.tebibyte.media/sashakoshka/tomo/elements/containers"
 | |
| 
 | |
| func main () {
 | |
| 	tomo.Run(run)
 | |
| }
 | |
| 
 | |
| func run () {
 | |
| 	window, _ := tomo.NewWindow(2, 2)
 | |
| 	window.SetTitle("Tomo Logo")
 | |
| 
 | |
| 	file, err := os.Open("assets/banner.png")
 | |
| 	if err != nil { fatalError(window, err); return }
 | |
| 	logo, _, err := image.Decode(file)
 | |
| 	file.Close()
 | |
| 	if err != nil { fatalError(window, err); return }
 | |
| 
 | |
| 	container := containers.NewContainer(layouts.Vertical { true, true })
 | |
| 	logoImage := elements.NewImage(logo)
 | |
| 	button    := elements.NewButton("Show me a gopher instead")
 | |
| 	button.OnClick (func () { container.Warp (func () {
 | |
| 			container.DisownAll()
 | |
| 			gopher, _, err :=
 | |
| 				image.Decode(bytes.NewReader(gopher.GopherPng()))
 | |
| 			if err != nil { fatalError(window, err); return }
 | |
| 			container.Adopt(elements.NewImage(gopher),true)
 | |
| 	}) })
 | |
| 
 | |
| 	container.Adopt(logoImage, true)
 | |
| 	container.Adopt(button, false)
 | |
| 	window.Adopt(container)
 | |
| 
 | |
| 	button.Focus()
 | |
| 	
 | |
| 	window.OnClose(tomo.Stop)
 | |
| 	window.Show()
 | |
| }
 | |
| 
 | |
| func fatalError (window tomo.Window, err error) {
 | |
| 	popups.NewDialog (
 | |
| 		popups.DialogKindError,
 | |
| 		window,
 | |
| 		"Error",
 | |
| 		err.Error(),
 | |
| 		popups.Button {
 | |
| 			Name: "OK",
 | |
| 			OnPress: tomo.Stop,
 | |
| 		})
 | |
| } 
 | |
| 
 |