rearrange main window

This commit is contained in:
Jeff Carr 2025-05-31 16:03:00 -05:00
parent 9f367cb39b
commit 1282c17e81
4 changed files with 148 additions and 95 deletions

124
doGui.go
View File

@ -102,16 +102,9 @@ func doGui() {
func drawWindow(win *gadgets.GenericWindow) {
grid := win.Group.RawGrid()
me.goSrcPwd = gadgets.NewOneLiner(grid, "repo src home")
me.goSrcPwd = gadgets.NewOneLiner(grid, "Working Directory")
grid.NewLabel("")
var howtoWin *gadgets.GenericWindow
me.demoB = grid.NewButton("Howto", func() {
if howtoWin != nil {
howtoWin.Toggle()
return
}
howtoWin = makeHowtoWin()
})
grid.NextRow()
me.goSrcPwd.SetText(me.forge.GetGoSrc())
@ -128,59 +121,12 @@ func drawWindow(win *gadgets.GenericWindow) {
me.gitAuthor.SetText(author)
}
group1 := win.Stack.NewGroup("Forge Mode")
grid = group1.RawGrid()
me.forgeMode = grid.NewLabel("")
me.forgeMode.SetText(me.forge.GetMode())
me.newBranch = grid.NewDropdown()
me.newBranch.AddText("master")
me.newBranch.AddText("devel")
me.newBranch.AddText(me.forge.Config.GetUsername())
me.newBranch.Custom = func() {
me.setBranchB.Disable()
// toggle global values shared by the command line and the gui for doCheckout()
switch me.newBranch.String() {
case "master":
if me.forge.Config.Mode != forgepb.ForgeMode_MASTER {
me.setBranchB.Enable()
}
case "devel":
if me.forge.Config.Mode != forgepb.ForgeMode_DEVEL {
me.setBranchB.Enable()
}
default:
if me.forge.Config.Mode != forgepb.ForgeMode_USER {
me.setBranchB.Enable()
}
}
}
// select the branch you want to test, build and develop against
// this lets you select your user branch, but, when you are happy
// you can merge everything into the devel branch and make sure it actually
// works. Then, when that is good, merge and version everything in master
me.setBranchB = grid.NewButton("Switch mode", func() {
win.Disable()
defer win.Enable()
switch me.newBranch.String() {
case "master":
forgeSwitchMode(forgepb.ForgeMode_MASTER)
case "devel":
forgeSwitchMode(forgepb.ForgeMode_DEVEL)
default:
forgeSwitchMode(forgepb.ForgeMode_USER)
}
me.setBranchB.Disable()
})
me.setBranchB.Disable()
grid.NextRow()
groupM := win.Stack.NewGroup("Mode Windows")
gridM := groupM.RawGrid()
// groupM := hbox.NewGroup("Windows")
// gridM := groupM.RawGrid()
// hbox := win.Stack.Box().Horizontal()
gridM := win.Stack.RawGrid()
var releaseWin *gadgets.GenericWindow
gridM.NewButton("Release Window", func() {
@ -251,6 +197,64 @@ func drawWindow(win *gadgets.GenericWindow) {
patchesWin = makePatchesWin(notdone)
})
var howtoWin *gadgets.GenericWindow
gridM.NewButton("Howto", func() {
if howtoWin != nil {
howtoWin.Toggle()
return
}
howtoWin = makeHowtoWin()
})
group1 := win.Stack.NewGroup("Forge Mode (deprecated)")
grid = group1.RawGrid()
me.forgeMode = grid.NewLabel("")
me.forgeMode.SetText(me.forge.GetMode())
me.newBranch = grid.NewDropdown()
me.newBranch.AddText("master")
me.newBranch.AddText("devel")
me.newBranch.AddText(me.forge.Config.GetUsername())
me.newBranch.Custom = func() {
me.setBranchB.Disable()
// toggle global values shared by the command line and the gui for doCheckout()
switch me.newBranch.String() {
case "master":
if me.forge.Config.Mode != forgepb.ForgeMode_MASTER {
me.setBranchB.Enable()
}
case "devel":
if me.forge.Config.Mode != forgepb.ForgeMode_DEVEL {
me.setBranchB.Enable()
}
default:
if me.forge.Config.Mode != forgepb.ForgeMode_USER {
me.setBranchB.Enable()
}
}
}
// select the branch you want to test, build and develop against
// this lets you select your user branch, but, when you are happy
// you can merge everything into the devel branch and make sure it actually
// works. Then, when that is good, merge and version everything in master
me.setBranchB = grid.NewButton("Switch mode", func() {
win.Disable()
defer win.Enable()
switch me.newBranch.String() {
case "master":
forgeSwitchMode(forgepb.ForgeMode_MASTER)
case "devel":
forgeSwitchMode(forgepb.ForgeMode_DEVEL)
default:
forgeSwitchMode(forgepb.ForgeMode_USER)
}
me.setBranchB.Disable()
})
me.setBranchB.Disable()
// set the initial button state based on the last
// forge mode the user saved in the config file
switch me.forge.Config.Mode {

View File

@ -67,7 +67,6 @@ type mainType struct {
repoDirtyB *gui.Node // "dirty" repos button
repoDevelMergeB *gui.Node // "merge to devel" repos button
repoWritableB *gui.Node // "what repos are writable" repos button
demoB *gui.Node // opens the demo
// modeReleaseW *gui.Node // opens the release window
// modePatchW *gui.Node // opens the patch window
// modeUserW *gui.Node // opens the user/hack window

View File

@ -18,13 +18,14 @@ import (
func makeReposWin() *stdReposTableWin {
rwin := new(stdReposTableWin)
win := gadgets.NewGenericWindow("git repos", "All about git repos")
win := gadgets.NewGenericWindow("find errors and try to fix them", "types of errors of some sort or another")
rwin.win = win
grid := win.Group.RawGrid()
win.Top.NewGroup("misc (works in progress)")
// win.Top.NewGroup("misc (works in progress)")
grid = win.Top.RawGrid()
// grid = win.Top.RawGrid()
grid = win.Group.RawGrid()
var found *gitpb.Repos
var txt string
@ -394,32 +395,3 @@ func makeWritableWindow(pb *gitpb.Repos) (*gadgets.GenericWindow, *gitpb.ReposTa
t.ShowTable()
return win, t
}
func addWindowPB(win *gadgets.GenericWindow, pb *gitpb.Repos) *gitpb.ReposTable {
t := pb.NewTable("testForgeRepos")
t.NewUuid()
tbox := win.Bottom.Box().SetProgName("TBOX")
t.SetParent(tbox)
sf := t.AddStringFunc("repo", func(r *gitpb.Repo) string {
return r.GetGoPath()
})
sf.Custom = func(r *gitpb.Repo) {
log.Info("do button click on", r.GetGoPath())
}
t.AddTimeFunc("age", func(repo *gitpb.Repo) time.Time {
return repo.NewestTime()
})
t.AddMasterVersion()
t.AddDevelVersion()
t.AddUserVersion()
t.AddCurrentBranchName()
t.AddState()
f := func(repo *gitpb.Repo) string {
log.Info("repo =", repo.GetGoPath(), repo.GetCurrentVersion())
return repo.GetGoPath()
}
t.AddButtonFunc("cur version", f)
t.ShowTable()
return t
}

View File

@ -7,6 +7,7 @@ package main
import (
"sync"
"time"
"go.wit.com/gui"
"go.wit.com/lib/gadgets"
@ -63,6 +64,54 @@ func makeReposWinNew() *gadgets.GenericWindow {
log.Info("table has uuid", t.GetUuid())
})
grid.NewButton("with patches", func() {
if t != nil {
t.Delete()
t = nil
}
found := new(gitpb.Repos)
all := me.forge.Repos.SortByFullPath()
for all.Scan() {
repo := all.Next()
if me.forge.Config.IsReadOnly(repo.GetGoPath()) {
continue
}
found.AppendByGoPath(repo)
}
// make the window for the first time
t = addWindowPB(insertWin, found)
f := func(repo *gitpb.Repo) {
log.Info("got to ReposTable.Custom() id =", repo.GetGoPath(), repo.GetCurrentVersion())
}
t.Custom(f)
log.Info("table has uuid", t.GetUuid())
})
grid.NewButton("favorites", func() {
if t != nil {
t.Delete()
t = nil
}
found := new(gitpb.Repos)
all := me.forge.Repos.SortByFullPath()
for all.Scan() {
repo := all.Next()
if !me.forge.Config.IsFavorite(repo.GetGoPath()) {
continue
}
found.AppendByGoPath(repo)
}
// make the window for the first time
t = addWindowPB(insertWin, found)
f := func(repo *gitpb.Repo) {
log.Info("got to ReposTable.Custom() id =", repo.GetGoPath(), repo.GetCurrentVersion())
}
t.Custom(f)
log.Info("table has uuid", t.GetUuid())
})
grid.NewButton("writeable", func() {
if t != nil {
t.Delete()
@ -75,9 +124,7 @@ func makeReposWinNew() *gadgets.GenericWindow {
if me.forge.Config.IsReadOnly(repo.GetGoPath()) {
continue
}
found.AppendByGoPath(repo)
}
// make the window for the first time
@ -112,3 +159,34 @@ func makeReposWinNew() *gadgets.GenericWindow {
return insertWin
}
func addWindowPB(win *gadgets.GenericWindow, pb *gitpb.Repos) *gitpb.ReposTable {
t := pb.NewTable("testForgeRepos")
t.NewUuid()
tbox := win.Bottom.Box().SetProgName("TBOX")
t.SetParent(tbox)
sf := t.AddStringFunc("repo", func(r *gitpb.Repo) string {
return r.GetGoPath()
})
sf.Custom = func(r *gitpb.Repo) {
log.Info("do button click on", r.GetGoPath())
}
t.AddTimeFunc("age", func(repo *gitpb.Repo) time.Time {
return repo.NewestTime()
})
t.AddMasterVersion()
// hmm := t.AddMasterVersion()
// hmm.SetTitle("Master")
t.AddDevelVersion()
t.AddUserVersion()
t.AddCurrentBranchName()
t.AddState()
f := func(repo *gitpb.Repo) string {
log.Info("repo =", repo.GetGoPath(), repo.GetCurrentVersion())
return repo.GetGoPath()
}
t.AddButtonFunc("cur version", f)
t.ShowTable()
return t
}