summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-04-29 17:18:02 -0500
committerJeff Carr <[email protected]>2025-04-29 17:18:02 -0500
commit6d62858d69e908bc916ff71a52f4e01a3869e890 (patch)
tree2d48fba0fd68f810426031bf452f29f04e038883
parentcc8800bf602237f1c4dfdce81fd8cd77d4c99650 (diff)
code re-arrange
-rw-r--r--doGui.go4
-rw-r--r--windowHackMode.go114
-rw-r--r--windowRepos.go160
3 files changed, 157 insertions, 121 deletions
diff --git a/doGui.go b/doGui.go
index 50287cc..49fe114 100644
--- a/doGui.go
+++ b/doGui.go
@@ -214,7 +214,8 @@ func drawWindow(win *gadgets.GenericWindow) {
})
*/
- var reposWin *gadgets.GenericWindow
+ // var reposWin *gadgets.GenericWindow
+ var reposWin *stdReposTableWin
me.reposWinB = gridM.NewButton("Repos", func() {
if reposWin != nil {
reposWin.Toggle()
@@ -308,6 +309,7 @@ func forgeSwitchMode(newMode forgepb.ForgeMode) {
// this is the magic that generates a window directly from the protocol buffer
func makeStandardReposGrid(pb *gitpb.Repos) *gitpb.ReposTable {
t := pb.NewTable("testDirty")
+ t.NewUuid()
sf := t.AddStringFunc("repo", func(r *gitpb.Repo) string {
return r.GetGoPath()
})
diff --git a/windowHackMode.go b/windowHackMode.go
deleted file mode 100644
index 67c6bd4..0000000
--- a/windowHackMode.go
+++ /dev/null
@@ -1,114 +0,0 @@
-// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
-// Use of this source code is governed by the GPL 3.0
-
-package main
-
-// An app to submit patches for the 30 GO GUI repos
-
-import (
- "go.wit.com/lib/debugger"
- "go.wit.com/lib/gadgets"
- "go.wit.com/log"
-)
-
-func makeHackModeWindow(win *gadgets.GenericWindow) {
- group := win.Stack.NewGroup("This is a work in progress")
- grid := group.RawGrid()
- grid.NewButton("git pull", func() {
- log.Info("todo: run git pull on each repo")
- })
-
- me.repoDevelMergeB = grid.NewButton("merge", func() {
- found := findMergeToDevel()
- _, box := makeStandardReposWindow("repos to merge from user to devel", found)
- hbox := box.Box().Horizontal()
- hbox.NewButton("merge all", func() {
- win.Disable()
- defer win.Enable()
- all := found.SortByFullPath()
- for all.Scan() {
- repo := all.Next()
- if repo.CheckDirty() {
- log.Info("repo is dirty", repo.GetGoPath())
- continue
- }
- log.Info("Starting merge on", repo.GetGoPath())
- if repo.CheckoutDevel() {
- log.Info("checkout devel failed", repo.GetGoPath())
- return
- }
- if _, err := repo.MergeToDevel(); err != nil {
- log.Info("merge from user failed", repo.GetGoPath(), err)
- // log.Info(strings.Join(r.Stdout, "\n"))
- // log.Info(strings.Join(r.Stderr, "\n"))
- return
- }
- if repo.CheckoutMaster() {
- log.Info("checkout master failed", repo.GetGoPath())
- return
- }
- if _, err := repo.MergeToMaster(); err != nil {
- log.Info("merge from devel failed", repo.GetGoPath(), err)
- return
- }
-
- }
- })
- })
- grid.NextRow()
-
- group2 := win.Stack.NewGroup("Merge")
- grid = group2.RawGrid()
-
- grid.NewButton("merge to devel", func() {
- win.Disable()
- defer win.Enable()
-
- mergeUserToDevel(true)
- })
-
- grid.NewButton("merge to master", func() {
- win.Disable()
- defer win.Enable()
-
- mergeDevelToMaster(true)
- })
-
- grid.NewButton("merge all", func() {
- win.Disable()
- defer win.Enable()
-
- me.argvCheckoutUser = false
- me.argvCheckoutDevel = true
- me.argvCheckoutMaster = false
- if err := doCheckoutShared(); err != nil {
- log.Info("checkout error:", err)
- } else {
- log.Info("checkout was ok")
- }
-
- mergeUserToDevel(true)
-
- me.argvCheckoutUser = false
- me.argvCheckoutDevel = false
- me.argvCheckoutMaster = true
- if err := doCheckoutShared(); err != nil {
- log.Info("checkout error:", err)
- } else {
- log.Info("checkout was ok")
- }
-
- mergeDevelToMaster(true)
- })
-
- group3 := win.Stack.NewGroup("work in progress")
- grid = group3.RawGrid()
-
- grid.NewButton("forge ConfigSave()", func() {
- me.forge.ConfigSave()
- })
-
- grid.NewButton("debugger()", func() {
- debugger.DebugWindow()
- })
-}
diff --git a/windowRepos.go b/windowRepos.go
index d4cd144..6782a21 100644
--- a/windowRepos.go
+++ b/windowRepos.go
@@ -8,15 +8,39 @@ package main
import (
"fmt"
"os"
+ "sync"
"time"
+ "go.wit.com/gui"
+ "go.wit.com/lib/debugger"
"go.wit.com/lib/gadgets"
"go.wit.com/lib/protobuf/gitpb"
"go.wit.com/log"
)
-func makeReposWin() *gadgets.GenericWindow {
+type stdReposTableWin struct {
+ sync.Mutex
+ win *gadgets.GenericWindow // the machines gui window
+ boxTB *gui.Node // the machines gui parent box widget
+ TB *gitpb.ReposTable // the gui table buffer
+ pb *gitpb.Repos // the current repos protobuf
+ update bool // if the window should be updated
+}
+
+func (w *stdReposTableWin) Toggle() {
+ if w == nil {
+ return
+ }
+ if w.win == nil {
+ return
+ }
+ w.win.Toggle()
+}
+
+func makeReposWin() *stdReposTableWin {
+ rwin := new(stdReposTableWin)
win := gadgets.NewGenericWindow("git repos", "All about git repos")
+ rwin.win = win
grid := win.Group.RawGrid()
me.repoDirtyB = grid.NewButton("dirty", func() {
@@ -161,9 +185,9 @@ func makeReposWin() *gadgets.GenericWindow {
log.Info("add a forge config window here")
})
- win.Stack.NewGroup("misc (works in progress)")
+ win.Top.NewGroup("misc (works in progress)")
- grid = win.Stack.RawGrid()
+ grid = win.Top.RawGrid()
var found *gitpb.Repos
var txt string
@@ -248,8 +272,13 @@ func makeReposWin() *gadgets.GenericWindow {
t.ShowTable()
})
- grid.NewButton("unknown branches", func() {
- log.Info("unknown branches not done yet")
+ rwin.boxTB = win.Bottom.Box()
+
+ grid.NewButton("dirty on bottom", func() {
+ log.Info("try to show dirty repos on bottom")
+ found := findDirty()
+ rwin.doReposTable(found)
+
})
grid.NextRow()
@@ -269,7 +298,126 @@ func makeReposWin() *gadgets.GenericWindow {
grid.NextRow()
makeHackModeWindow(win)
- return win
+ return rwin
+}
+
+// default window for active running droplets
+func (rwin *stdReposTableWin) doReposTable(pb *gitpb.Repos) {
+ rwin.Lock()
+ defer rwin.Unlock()
+ if rwin.TB != nil {
+ rwin.TB.Delete()
+ rwin.TB = nil
+ }
+
+ rwin.pb = pb
+
+ t := makeStandardReposGrid(pb)
+ t.SetParent(rwin.boxTB)
+ t.ShowTable()
+ rwin.TB = t
+}
+
+func makeHackModeWindow(win *gadgets.GenericWindow) {
+ group := win.Top.NewGroup("This is a work in progress")
+ grid := group.RawGrid()
+ grid.NewButton("git pull", func() {
+ log.Info("todo: run git pull on each repo")
+ })
+
+ me.repoDevelMergeB = grid.NewButton("merge", func() {
+ found := findMergeToDevel()
+ _, box := makeStandardReposWindow("repos to merge from user to devel", found)
+ hbox := box.Box().Horizontal()
+ hbox.NewButton("merge all", func() {
+ win.Disable()
+ defer win.Enable()
+ all := found.SortByFullPath()
+ for all.Scan() {
+ repo := all.Next()
+ if repo.CheckDirty() {
+ log.Info("repo is dirty", repo.GetGoPath())
+ continue
+ }
+ log.Info("Starting merge on", repo.GetGoPath())
+ if repo.CheckoutDevel() {
+ log.Info("checkout devel failed", repo.GetGoPath())
+ return
+ }
+ if _, err := repo.MergeToDevel(); err != nil {
+ log.Info("merge from user failed", repo.GetGoPath(), err)
+ // log.Info(strings.Join(r.Stdout, "\n"))
+ // log.Info(strings.Join(r.Stderr, "\n"))
+ return
+ }
+ if repo.CheckoutMaster() {
+ log.Info("checkout master failed", repo.GetGoPath())
+ return
+ }
+ if _, err := repo.MergeToMaster(); err != nil {
+ log.Info("merge from devel failed", repo.GetGoPath(), err)
+ return
+ }
+
+ }
+ })
+ })
+ grid.NextRow()
+
+ group2 := win.Top.NewGroup("Merge")
+ grid = group2.RawGrid()
+
+ grid.NewButton("merge to devel", func() {
+ win.Disable()
+ defer win.Enable()
+
+ mergeUserToDevel(true)
+ })
+
+ grid.NewButton("merge to master", func() {
+ win.Disable()
+ defer win.Enable()
+
+ mergeDevelToMaster(true)
+ })
+
+ grid.NewButton("merge all", func() {
+ win.Disable()
+ defer win.Enable()
+
+ me.argvCheckoutUser = false
+ me.argvCheckoutDevel = true
+ me.argvCheckoutMaster = false
+ if err := doCheckoutShared(); err != nil {
+ log.Info("checkout error:", err)
+ } else {
+ log.Info("checkout was ok")
+ }
+
+ mergeUserToDevel(true)
+
+ me.argvCheckoutUser = false
+ me.argvCheckoutDevel = false
+ me.argvCheckoutMaster = true
+ if err := doCheckoutShared(); err != nil {
+ log.Info("checkout error:", err)
+ } else {
+ log.Info("checkout was ok")
+ }
+
+ mergeDevelToMaster(true)
+ })
+
+ group3 := win.Top.NewGroup("work in progress")
+ grid = group3.RawGrid()
+
+ grid.NewButton("forge ConfigSave()", func() {
+ me.forge.ConfigSave()
+ })
+
+ grid.NewButton("debugger()", func() {
+ debugger.DebugWindow()
+ })
}
func develBehindMasterProblem() *gitpb.Repos {