main.go_ raw

   1  package main
   2  
   3  import (
   4  	"log"
   5  	"os"
   6  	
   7  	"github.com/p9c/p9/pkg/gel/gio/app"
   8  	"github.com/p9c/p9/pkg/gel/gio/io/system"
   9  	"github.com/p9c/p9/pkg/gel/gio/layout"
  10  	"github.com/p9c/p9/pkg/gel/gio/op"
  11  	"github.com/p9c/p9/pkg/gel/gio/op/paint"
  12  	"github.com/p9c/p9/pkg/gel/gio/unit"
  13  	
  14  	"github.com/p9c/p9/pkg/gui"
  15  	"github.com/p9c/p9/pkg/gui/dialog"
  16  	"github.com/p9c/p9/pkg/gui/fonts/p9fonts"
  17  )
  18  
  19  var (
  20  	th         = gui.NewTheme(p9fonts.Collection(), nil)
  21  	btnDanger  = th.Clickable()
  22  	btnWarning = th.Clickable()
  23  	btnSuccess = th.Clickable()
  24  )
  25  
  26  func main() {
  27  	go func() {
  28  		w := app.NewWindow(app.Size(unit.Px(150*6+50), unit.Px(150*6-50)))
  29  		if e := loop(w); E.Chk(e) {
  30  			log.F.Ln(e)
  31  		}
  32  		os.Exit(0)
  33  	}()
  34  	app.Main()
  35  }
  36  
  37  func loop(w *app.Window) (e error) {
  38  	var ops op.Ops
  39  	d := dialog.New(th)
  40  	for {
  41  		e := <-w.Events()
  42  		switch e := e.(type) {
  43  		case system.DestroyEvent:
  44  			return e.Err
  45  		case system.FrameEvent:
  46  			gtx := layout.NewContext(&ops, e)
  47  			paint.Fill(gtx.Ops, gui.HexNRGB("e5e5e5FF"))
  48  			op.InvalidateOp{}.Add(gtx.Ops)
  49  			
  50  			th.Inset(
  51  				0.25,
  52  				th.VFlex().
  53  					Rigid(
  54  						// th.Button(btnDanger).Text("Danger").Color("Danger").Fn,
  55  						// ).
  56  						// Rigid(
  57  						//	th.Button(btnWarning).Text("Warning").Color("Warning").Fn,
  58  						// ).
  59  						// Rigid(
  60  						th.Button(btnSuccess).Text("Success").Color("Success").SetClick(
  61  							d.ShowDialog(
  62  								"Success",
  63  								"Success content",
  64  								"Success",
  65  							),
  66  						).Fn,
  67  					).Fn,
  68  			).Fn(gtx)
  69  			
  70  			// for btnDanger.Clicked() {
  71  			//	d.DrawDialog("Danger", "Danger content", "Danger")
  72  			// }
  73  			
  74  			// for btnWarning.Clicked() {
  75  			//	d.DrawDialog("Warning", "Warning content", "Warning")
  76  			// }
  77  			
  78  			d.DrawDialog()(gtx)
  79  			e.Frame(gtx.Ops)
  80  			w.Invalidate()
  81  		}
  82  	}
  83  }
  84