summaryrefslogtreecommitdiff
path: root/windowViewPatchset.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-02-01 11:55:17 -0600
committerJeff Carr <[email protected]>2025-02-01 11:55:17 -0600
commited686fc4d634caf05595b9c710d5de8e420ac5be (patch)
tree34c4783ccd3a8d424f2bf134ed875a9a48cfc658 /windowViewPatchset.go
parent7c4feea366eb32e284a2b5dd6167dcc7b4df1128 (diff)
more improvements to viewing patchsets
Diffstat (limited to 'windowViewPatchset.go')
-rw-r--r--windowViewPatchset.go171
1 files changed, 0 insertions, 171 deletions
diff --git a/windowViewPatchset.go b/windowViewPatchset.go
deleted file mode 100644
index a9ff69d..0000000
--- a/windowViewPatchset.go
+++ /dev/null
@@ -1,171 +0,0 @@
-package main
-
-import (
- "sync"
-
- "go.wit.com/lib/gadgets"
- "go.wit.com/lib/protobuf/forgepb"
- "go.wit.com/lib/protobuf/gitpb"
- "go.wit.com/log"
-
- "go.wit.com/gui"
-)
-
-type patchWindow struct {
- once sync.Once // only init() the window once
- win *gadgets.BasicWindow // the patches window
- stack *gui.Node // the top box set as vertical
- shelf *gui.Node // the first box in the stack, set as horizontal
- grid *gui.Node // the list of available patches
- // summary *patchSummary // summary of current patches
- setgrid *gui.Node // the list of each patchset
- pset *forgepb.Patchset // the patchset in question
-}
-
-// todo: autogenerate these or make them standared 'gui' package functions
-// make this an go interface somehow
-
-// is the window hidden right now?
-func (w *patchWindow) Hidden() bool {
- return w.win.Hidden()
-}
-
-// switches between the window being visable or hidden on the desktop
-func (w *patchWindow) Toggle() {
- if w.Hidden() {
- w.Show()
- } else {
- w.Hide()
- }
-}
-
-// hides the window completely
-func (w *patchWindow) Show() {
- w.win.Show()
-}
-
-func (w *patchWindow) Hide() {
- w.win.Hide()
-}
-
-// should be the first box/widget in the window
-// greys out the window to the user
-func (w *patchWindow) Disable() {
- w.stack.Disable()
-}
-
-func (w *patchWindow) Enable() {
- w.stack.Enable()
-}
-
-// you can only have one of these
-func makePatchWindow(pset *forgepb.Patchset) *patchWindow {
- pw := new(patchWindow)
-
- // sync.Once()
- pw.win = gadgets.RawBasicWindow("Patcheset for " + pset.Name + " (" + pset.Comment + ")")
- pw.win.Make()
-
- pw.stack = pw.win.Box().NewBox("bw vbox", false)
- // me.reposwin.Draw()
- pw.win.Custom = func() {
- // sets the hidden flag to false so Toggle() works
- pw.win.Hide()
- }
-
- grid := pw.stack.NewGrid("", 0, 0)
-
- grid.NewLabel("Patchset Details:")
- grid.NewLabel(pset.GitAuthorName)
- grid.NewLabel(pset.GitAuthorEmail)
- grid.NewLabel("start branch: " + pset.StartBranchName)
- grid.NewLabel(pset.StartBranchHash)
- grid.NewLabel("end branch: " + pset.EndBranchName)
- grid.NewLabel(pset.EndBranchHash)
- grid.NextRow()
-
- g := pw.stack.NewGroup("PatchSet List")
-
- // make a grid to put the list of git repos that have patches
- // in this particular patchset
- grid = g.NewGrid("", 0, 0)
- grid.NewLabel("repo")
- grid.NewLabel("patch name")
- grid.NewLabel("Applied in current branch?")
- grid.NewLabel("start hash")
- grid.NewLabel("")
- grid.NewButton("Extract", func() {
- if err := savePatchset(pset); err != nil {
- log.Info("Save err:", err)
- return
- }
- })
- grid.NewButton("Apply with git am", func() {
- if _, _, _, err := IsEverythingOnUser(); err != nil {
- log.Info("You can only apply patches to the user branch")
- return
- }
- if IsAnythingDirty() {
- log.Info("You can't apply patches when repos are dirty")
- me.forge.PrintHumanTable(me.found)
- return
- }
- if argv.Force {
- applyPatchset(pset)
- }
- })
- grid.NextRow()
-
- // add the patches to the grid
- pw.addPatchset(grid, pset)
- return pw
-}
-
-func (r *patchWindow) addPatchset(grid *gui.Node, pset *forgepb.Patchset) {
- repomap := make(map[*gitpb.Repo][]*forgepb.Patch)
- repohash := make(map[*gitpb.Repo]string)
-
- // sort patches by repo namespace
- all := pset.Patches.SortByFilename()
- for all.Scan() {
- p := all.Next()
- s := p.RepoNamespace
- repo := me.forge.FindByGoPath(s)
- if repo == nil {
- log.Info("Could not figure out repo path", s)
- continue
- }
- repomap[repo] = append(repomap[repo], p)
- repohash[repo] = p.StartHash
- }
-
- // var repo *gitpb.Repo
-
- for repo, patches := range repomap {
- log.Info(repo.GetGoPath())
- grid.NewLabel(repo.GetGoPath())
-
- for i, p := range patches {
- log.Info(i, p.Filename)
- grid.NewLabel(p.Comment)
- grid.NewLabel("in current branch?")
- break
- }
- hash := repohash[repo]
- grid.NewLabel(hash)
- var win *repoPatchWindow
- grid.NewButton("View", func() {
- if win != nil {
- win.Toggle()
- log.Info("TRYING TO TOGGLE WINDOW")
- return
- }
-
- win = makeRepoPatchWindow(repo, patches)
- win.Show()
- })
- grid.NewCheckbox("").SetChecked(true)
- grid.NewCheckbox("").SetChecked(true)
- grid.NextRow()
- }
-}