package main import ( "sync" "go.wit.com/lib/gadgets" "go.wit.com/log" "go.wit.com/gui" ) type patchesWindow struct { once sync.Once // only init() the window once win *gadgets.BasicWindow // the patches window stack *gui.Node // the top box set as vertical shelf *gui.Node // the first box in the stack, set as horizontal grid *gui.Node // the list of available patches summary *patchSummary // summary of current patches } func (r *patchesWindow) Hidden() bool { return r.win.Hidden() } func (r *patchesWindow) Toggle() { if r.Hidden() { r.Show() } else { r.Hide() } } func (r *patchesWindow) Show() { r.win.Show() } func (r *patchesWindow) Hide() { r.win.Hide() } func (r *patchesWindow) Disable() { r.stack.Disable() } func (r *patchesWindow) Enable() { r.stack.Enable() } // you can only have one of these func (r *patchesWindow) initWindow() { // sync.Once() r.win = gadgets.RawBasicWindow("Forge Patchesets") r.win.Make() r.stack = r.win.Box().NewBox("bw vbox", false) // me.reposwin.Draw() r.win.Custom = func() { log.Warn("Patchset Window close. setting hidden=true") // sets the hidden flag to false so Toggle() works r.win.Hide() } r.grid = r.stack.NewGrid("", 0, 0) r.shelf = r.initGroup() r.summary = submitPatchesBox(r.stack) } func (r *patchesWindow) initGroup() *gui.Node { // reposbox.SetExpand(false) group1 := r.stack.NewGroup("stuff") vbox := group1.Box() // hbox.Horizontal() vbox.Vertical() hbox := vbox.Box().Horizontal() /* */ dirty := hbox.NewCheckbox("dirty") dirty.Custom = func() { log.Info("filter dirty =", dirty.Checked()) } hbox.NewButton("update patch summary", func() { r.summary.Update() }) hbox.NewButton("test add", func() { me.patchWin.initGroup() }) hbox.NewButton("Get Patchsets", func() { // if psets, err := me.forge.GetPatchesets(); err != nil { psets, err := me.forge.GetPatchesets() if err != nil { log.Info(err) return } all := psets.All() for all.Scan() { pset := all.Next() log.Info(pset) } /* if err := listPatches(); err != nil { log.Info(err) } */ }) return vbox }