forge/doGui.go

156 lines
3.7 KiB
Go

package main
// An app to submit patches for the 30 GO GUI repos
import (
"os"
"os/user"
"path/filepath"
"go.wit.com/gui"
"go.wit.com/lib/gadgets"
"go.wit.com/log"
)
func debug() {
log.Info("cmd line --debugger == true")
func() {
for {
log.Sleep(30)
log.Info("cmd line --debugger == true")
// debugger.DebugWindow()
}
}()
}
func doGui() {
if me.forge.Config.GetDefaultGui() == "" {
me.forge.Config.DefaultGui = "gocui"
me.forge.ConfigSave()
}
me.myGui = gui.New()
me.myGui.InitEmbed(resources)
me.myGui.SetAppDefaultPlugin(me.forge.Config.DefaultGui) // sets the default GUI plugin to use
me.myGui.Default()
me.mainWindow = gadgets.RawBasicWindow("Forge: (this kinda works sometimes)")
me.mainWindow.Make()
me.mainWindow.Show()
me.mainWindow.Custom = func() {
log.Warn("MAIN WINDOW CLOSE")
count := me.forge.RillReload()
log.Info("Repo Reload count =", count)
if count != 0 {
me.forge.ConfigSave()
}
os.Exit(0)
}
me.mainbox = me.mainWindow.Box()
// disable the interface while everything is scanned
me.Disable()
vbox2 := me.mainbox.NewVerticalBox("BOX2")
globalBuildOptions(vbox2)
me.Enable()
// sits here forever
debug()
}
func globalBuildOptions(vbox *gui.Node) {
group1 := vbox.NewGroup("Forge Settings")
grid := group1.NewGrid("buildOptions", 0, 0)
// me.autoWorkingPwd = gadgets.NewOneLiner(grid, "working directory (pwd)")
me.userHomePwd = gadgets.NewOneLiner(grid, "user home")
grid.NextRow()
me.goSrcPwd = gadgets.NewOneLiner(grid, "go src home")
grid.NextRow()
usr, _ := user.Current()
homeDir, err := os.UserHomeDir()
if err != nil {
log.Warn("Error getting home directory:", err)
homeDir = "/home/autotypist"
}
me.userHomePwd.SetText(homeDir)
srcDir := filepath.Join(homeDir, "go/src")
me.goSrcPwd.SetText(srcDir)
// use ENV GIT_AUTHOR
me.gitAuthor = gadgets.NewOneLiner(grid, "Git Author")
grid.NextRow()
if os.Getenv("GIT_AUTHOR_NAME") == "" {
me.gitAuthor.SetText("ENV GIT_AUTHOR_NAME is unset")
} else {
author := os.Getenv("GIT_AUTHOR_NAME")
author += " <" + os.Getenv("GIT_AUTHOR_EMAIL") + ">"
me.gitAuthor.SetText(author)
}
// 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("set current branches to:", func() {
targetName := me.newBranch.String()
log.Warn("setting all branches to", targetName)
if targetName == "devel" {
if err := doAllCheckoutDevel(); err != nil {
log.Info("switching to devel branches failed")
}
return
}
if targetName == "master" {
if err := doAllCheckoutMaster(); err != nil {
log.Info("switching to master branches failed")
}
return
}
// just assume user
if err := doAllCheckoutUser(); err != nil {
log.Info("switching to user branches failed")
}
})
me.newBranch = grid.NewCombobox()
me.newBranch.AddText("master")
me.newBranch.AddText("devel")
me.newBranch.AddText(usr.Username)
me.newBranch.SetText(usr.Username)
// checking this will automatically make the branches off of devel
me.autoCreateBranches = grid.NewCheckbox("create if missing").SetChecked(true)
grid.NextRow()
var reposWin *repoWindow
grid.NewButton("Repo Window", func() {
if reposWin != nil {
if reposWin.Hidden() {
reposWin.Show()
} else {
reposWin.Hide()
}
return
}
reposWin = makeRepoView()
reposWin.Show()
})
var patchWin *patchesWindow
grid.NewButton("Patches Window", func() {
if patchWin != nil {
patchWin.Toggle()
return
}
patchWin = new(patchesWindow)
patchWin.initWindow()
patchWin.Show()
})
}