95 lines
1.9 KiB
Go
95 lines
1.9 KiB
Go
|
// 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
|
||
|
}
|