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/debugger" "go.wit.com/lib/gadgets" "go.wit.com/log" ) func debug() { log.Info("cmd line --debugger == true") go func() { log.Sleep(3) log.Info("cmd line --debugger == true") log.Info("cmd line --debugger == true") log.Info("cmd line --debugger == true") 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() // debug() me.patchWin = new(patchesWindow) 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.summary = submitPatchesBox(vbox2) me.repos = makeRepoView() // processing is done. update the repo summary box // me.summary.Update() // me.summary.submitB.Disable() me.Enable() // intermittently scans the status indefinitly me.repos.View.Watchdog(func() { log.Info("Watchdog in doGui()") // processing is done. update the repo summary box // me.summary.Update() }) } 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 branch 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() grid.NewButton("Repo Window", func() { if me.repos.Hidden() { me.repos.Show() } else { me.repos.Hide() } }) grid.NewButton("Patches Window", func() { me.patchWin.once.Do(me.patchWin.initWindow) me.patchWin.Toggle() }) }