diff options
Diffstat (limited to 'tagWindow.go')
| -rw-r--r-- | tagWindow.go | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/tagWindow.go b/tagWindow.go new file mode 100644 index 0000000..122f2d6 --- /dev/null +++ b/tagWindow.go @@ -0,0 +1,94 @@ +// 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 +} |
