// This is a simple example package main import ( "go.wit.com/gui" "go.wit.com/log" "go.wit.com/lib/gadgets" "go.wit.com/lib/gui/repostatus" ) var tagW *tagWindow type tagWindow struct { win *gadgets.BasicWindow box *gui.Node grid *gui.Node group *gui.Node allTags []*gitTag } type gitTag struct { rs *repostatus.RepoStatus hidden bool } func makeTagWindow() *tagWindow { if tagW != nil { tagW.win.Toggle() return tagW } tagW = new(tagWindow) tagW.win = gadgets.NewBasicWindow(me.myGui, "git tag tasks") tagW.win.Custom = func() { log.Warn("got to close") } tagW.win.Make() tagW.win.StandardClose() tagW.win.Draw() tagW.box = tagW.win.Box() tagW.group = tagW.box.NewGroup("tags") tagW.group.NewButton("list tags", func() { // dumpVersions() }) tagW.group.NewButton("list all tags", func() { me.autotypistWindow.Disable() defer me.autotypistWindow.Enable() for _, repo := range me.allrepos { tagsW := repo.status.TagsW if tagsW == nil { repo.status.TagWindow() tagsW = repo.status.TagsW // tagsW.Prune() continue } allTags := tagsW.ListAll() for _, t := range allTags { log.Info("found tag:", t.TagString(), "from", repo.status.String()) } } }) tagW.group.NewButton("delete all dup tags", func() { me.autotypistWindow.Disable() defer me.autotypistWindow.Enable() for _, repo := range me.allrepos { tagsW := repo.status.TagsW if tagsW == nil { repo.status.TagWindow() tagsW = repo.status.TagsW tagsW.PruneSmart() continue } deleteTags := tagsW.List() for _, t := range deleteTags { if me.autoDryRun.Checked() { log.Info("delete tag --dry-run:", t.TagString(), "from", repo.status.String()) } else { log.Info("Deleting tag:", t.TagString(), "from", repo.status.String()) // tagsW.Delete(t) } } } }) return tagW } func (t *gitTag) Hide() { t.hidden = true }