summaryrefslogtreecommitdiff
path: root/tagWindow.go
diff options
context:
space:
mode:
Diffstat (limited to 'tagWindow.go')
-rw-r--r--tagWindow.go94
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
+}