autotypist/tagWindow.go

98 lines
1.9 KiB
Go
Raw Normal View History

// 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
continue
}
tagsW.PruneSmart()
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)
}
}
if ! me.autoDryRun.Checked() {
return
}
}
})
return tagW
}
func (t *gitTag) Hide() {
t.hidden = true
}