diff options
| author | Jeff Carr <[email protected]> | 2025-01-30 13:35:22 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-01-30 13:35:22 -0600 |
| commit | 4484b0b84d88fbad86ca6d202d3edfa9bb4946d0 (patch) | |
| tree | eed34ded8af61ac9b46a300ce7bd789d32975b0f /windowMerge.go | |
| parent | c079039ffe06a09b8552ffbae40c861c726c0281 (diff) | |
new window for merge on a single repo
Diffstat (limited to 'windowMerge.go')
| -rw-r--r-- | windowMerge.go | 197 |
1 files changed, 197 insertions, 0 deletions
diff --git a/windowMerge.go b/windowMerge.go new file mode 100644 index 0000000..ee10586 --- /dev/null +++ b/windowMerge.go @@ -0,0 +1,197 @@ +package repostatus + +import ( + "go.wit.com/lib/gadgets" + "go.wit.com/lib/protobuf/gitpb" + "go.wit.com/log" + + "go.wit.com/gui" +) + +type repoMergeWindow struct { + repo *gitpb.Repo // the repo protobuf + win *gadgets.BasicWindow // the patches window + stack *gui.Node // the top box set as vertical + lasttag *gadgets.OneLiner // the last tag version + mainBranchVersion *gadgets.OneLiner // the primary branch version + develBranchVersion *gadgets.OneLiner // the devel branch version + userBranchVersion *gadgets.OneLiner // the user branch version + + currentVersion *gadgets.OneLiner // the devel branch version + currentBranch *gadgets.OneLiner // the user branch version + + //shelf *gui.Node // the first box in the stack, set as horizontal + //grid *gui.Node // the list of available patches + //setgrid *gui.Node // the list of each patchset +} + +// todo: autogenerate these or make them standared 'gui' package functions +// make this an go interface somehow + +// is the window hidden right now? +func (w *repoMergeWindow) Hidden() bool { + return w.win.Hidden() +} + +// switches between the window being visable or hidden on the desktop +func (w *repoMergeWindow) Toggle() { + if w.Hidden() { + w.Show() + } else { + w.Hide() + } +} + +// hides the window completely +func (w *repoMergeWindow) Show() { + w.win.Show() + w.Update() +} + +func (w *repoMergeWindow) Hide() { + w.win.Hide() +} + +// should be the first box/widget in the window +// greys out the window to the user +func (w *repoMergeWindow) Disable() { + w.stack.Disable() +} + +func (w *repoMergeWindow) Enable() { + w.stack.Enable() +} + +func (w *repoMergeWindow) Update() { + w.lasttag.SetText(w.repo.GetLastTag()) + w.mainBranchVersion.SetText(w.repo.GetMasterVersion()) + w.develBranchVersion.SetText(w.repo.GetDevelVersion()) + w.userBranchVersion.SetText(w.repo.GetUserVersion()) + + w.currentBranch.SetText(w.repo.GetCurrentBranchName()) + w.currentVersion.SetText(w.repo.GetCurrentVersion()) +} + +func (rs *RepoStatus) MakeRepoMergeWindow(repo *gitpb.Repo) *repoMergeWindow { + w := new(repoMergeWindow) + w.repo = repo + + // sync.Once() + w.win = gadgets.RawBasicWindow("Merge controls for " + repo.GetGoPath()) + w.win.Make() + + w.stack = w.win.Box().NewBox("bw vbox", false) + // me.reposwin.Draw() + w.win.Custom = func() { + log.Info("Got close. setting win.Hide()") + // sets the hidden flag to false so Toggle() works + w.win.Hide() + } + + grid := w.stack.NewGrid("", 0, 0) + + grid.NewGroup("Merge Options") + grid.NextRow() + + grid.NewButton("checkout user", func() { + if err := repo.CheckoutUser(); err != nil { + log.Info(repo.GetFullPath(), err) + } + w.repo.Reload() + w.Update() + }) + grid.NextRow() + grid.NewButton("checkout devel", func() { + repo.CheckoutDevel() + w.repo.Reload() + w.Update() + }) + grid.NewButton("merge to devel", func() { + log.Info("repo:", repo.GetGoPath()) + if result, err := repo.MergeToDevel(); err == nil { + log.Warn("THINGS SEEM OK", repo.GetFullPath()) + for _, line := range result.Stdout { + log.Warn("stdout:", line) + } + for _, line := range result.Stderr { + log.Warn("stderr:", line) + } + } else { + log.Warn("THINGS FAILED ", repo.GetFullPath()) + log.Warn("err", err) + for _, line := range result.Stdout { + log.Warn("stdout:", line) + } + for _, line := range result.Stderr { + log.Warn("stderr:", line) + } + } + w.repo.Reload() + w.Update() + }) + grid.NextRow() + grid.NewButton("checkout master", func() { + repo.CheckoutMaster() + w.repo.Reload() + w.Update() + }) + grid.NewButton("merge to master", func() { + log.Info("repo:", repo.GetGoPath()) + if result, err := repo.MergeToMaster(); err == nil { + log.Warn("THINGS SEEM OK", repo.GetFullPath()) + for _, line := range result.Stdout { + log.Warn("stdout:", line) + } + for _, line := range result.Stderr { + log.Warn("stderr:", line) + } + } else { + log.Warn("THINGS FAILED ", repo.GetFullPath()) + log.Warn("err", err) + for _, line := range result.Stdout { + log.Warn("stdout:", line) + } + for _, line := range result.Stderr { + log.Warn("stderr:", line) + } + } + w.repo.Reload() + w.Update() + }) + grid.NextRow() + + w.lasttag = gadgets.NewOneLiner(grid, "last tag") // `progname:"LASTTAG"` + grid.NextRow() + + w.mainBranchVersion = gadgets.NewOneLiner(grid, "master") // `progname:"MASTERBRANCH"` + grid.NextRow() + w.develBranchVersion = gadgets.NewOneLiner(grid, "devel") // `progname:"DEVELBRANCH"` + grid.NextRow() + w.userBranchVersion = gadgets.NewOneLiner(grid, "user") // `progname:"USERBRANCH"` + grid.NextRow() + + w.currentBranch = gadgets.NewOneLiner(grid, "current branch") // `progname:"CURRENTBRANCH"` + grid.NextRow() + w.currentVersion = gadgets.NewOneLiner(grid, "current version") // `progname:"CURRENTVERSION"` + grid.NextRow() + + w.Update() + + return w +} + +/* + rs.showBranchesButton = newgrid.NewButton("find user and devel", func() { + log.Info("redo this") + }) + newgrid.NextRow() + + rs.checkBranchesButton = newgrid.NewButton("CheckBranches()", func() { + log.Info("redo this") + }) + newgrid.NextRow() + + newgrid.NewButton("Revert master to devel", func() { + log.Info("redo this") + }) +*/ |
