move show/hide function to seperate file

This commit is contained in:
Jeff Carr 2024-02-26 21:46:34 -06:00
parent 2d2fc80754
commit e825cffc8a
3 changed files with 100 additions and 36 deletions

View File

@ -1,46 +1,14 @@
package main
import (
"os"
"go.wit.com/gui"
"go.wit.com/lib/debugger"
"go.wit.com/lib/gui/logsettings"
"go.wit.com/lib/gui/repolist"
"go.wit.com/log"
)
func showHideRepos(repo *repolist.RepoRow) {
if repo.GoPath() == "go.wit.com/dev/alexflint/arg" {
log.Info("found autoHideReleased() =", me.autoHideReleased.Checked())
log.Info("found alexflint/arg IsReleased() =", repo.Status.IsReleased())
}
// always show dirty repos
if repo.IsDirty() {
repo.Show()
return
}
// always show repos that have not been merged ?
if repo.GoState() == "merge to devel" {
repo.Show()
return
}
// hide read-only repos. These are repos that do not
// match things in the users config file (.config/autotypist)
if me.autoHideReadOnly.Checked() {
if repo.Status.ReadOnly() {
repo.Hide()
return
}
}
if me.autoHideReleased.Checked() {
if repo.Status.IsReleased() {
repo.Hide()
return
}
}
repo.Show()
}
func globalDisplayOptions(box *gui.Node) {
vbox := box.NewVerticalBox("DISPLAYVBOX")
@ -73,8 +41,15 @@ func globalDisplayOptions(box *gui.Node) {
me.scanEveryMinute = hidegrid.NewCheckbox("Scan every minute").SetChecked(false)
me.scanEveryMinute.Custom = func() {
me.repos.View.SetAutoScan(me.scanEveryMinute.Checked())
if me.scanEveryMinute.Checked() {
os.Setenv("REPO_AUTO_SCAN", "true")
log.Info("env REPO_AUTO_SCAN=", os.Getenv("REPO_AUTO_SCAN"))
} else {
os.Unsetenv("REPO_AUTO_SCAN")
log.Info("env REPO_AUTO_SCAN=", os.Getenv("REPO_AUTO_SCAN"))
}
}
hidegrid.NewButton("scan now", func() {
log.Info("re-scanning repos now")
i, s := me.repos.View.ScanRepositories()

89
hideFunction.go Normal file
View File

@ -0,0 +1,89 @@
package main
import (
"os"
"go.wit.com/lib/gui/repolist"
"go.wit.com/log"
)
// like tcl/tk, use ENV variables to set display preferences
func hideFunction(r *repolist.RepoRow) {
if r.GoPath() == "go.wit.com/dev/alexflint/arg" {
log.Info("found autoHideReleased() =", me.autoHideReleased.Checked())
log.Info("found alexflint/arg IsReleased() =", r.Status.IsReleased())
}
// always show dirty repos
if r.Status.IsDirty() {
r.Show()
return
}
// hide read-only repos
if os.Getenv("AUTOTYPIST_READONLY") == "hide" {
if r.Status.ReadOnly() {
// log.Info(r.Name(), "hiding read-only repo")
r.Hide()
return
} else {
// log.Info(r.Name(), "not hiding read-only repo")
}
}
// show repos with mismatched mode
// this means, if you are in "devel" mode, show all the repos that
// might be stuck on the wrong branch, like 'master' or '<username>'
if os.Getenv("AUTOTYPIST_MODE") != "" {
if !r.Status.IsCorrectMode(os.Getenv("AUTOTYPIST_MODE")) {
r.Show()
return
}
}
// hide perfectly clean repos
if os.Getenv("AUTOTYPIST_CLEAN") == "hide" {
if r.IsPerfect() {
r.Hide()
return
}
}
// show everything else. often this will be "unconforming" repos
// if you what those repos ignored, add these to the config file
// as read-only=true
r.Show()
}
func showHideRepos(repo *repolist.RepoRow) {
if repo.GoPath() == "go.wit.com/dev/alexflint/arg" {
log.Info("found autoHideReleased() =", me.autoHideReleased.Checked())
log.Info("found alexflint/arg IsReleased() =", repo.Status.IsReleased())
}
// always show dirty repos
if repo.IsDirty() {
repo.Show()
return
}
// always show repos that have not been merged ?
if repo.GoState() == "merge to devel" {
repo.Show()
return
}
// hide read-only repos. These are repos that do not
// match things in the users config file (.config/autotypist)
if me.autoHideReadOnly.Checked() {
if repo.Status.ReadOnly() {
repo.Hide()
return
}
}
if me.autoHideReleased.Checked() {
if repo.Status.IsReleased() {
repo.Hide()
return
}
}
repo.Show()
}

View File

@ -94,7 +94,7 @@ func main() {
setTargetVersion()
// register a Show/Hide function for the repo list table
me.repos.View.RegisterHideFunction(showHideRepos)
me.repos.View.RegisterHideFunction(hideFunction)
// scan in the State of all the repos
// TODO: should not really be necessary directly after init()