summaryrefslogtreecommitdiff
path: root/windowMain.go
diff options
context:
space:
mode:
Diffstat (limited to 'windowMain.go')
-rw-r--r--windowMain.go93
1 files changed, 93 insertions, 0 deletions
diff --git a/windowMain.go b/windowMain.go
new file mode 100644
index 0000000..3a5f9da
--- /dev/null
+++ b/windowMain.go
@@ -0,0 +1,93 @@
+package repostatus
+
+import (
+ "os"
+
+ "go.wit.com/lib/gadgets"
+ "go.wit.com/lib/protobuf/gitpb"
+ "go.wit.com/log"
+)
+
+var windowMap map[string]*RepoStatus
+
+func init() {
+ windowMap = make(map[string]*RepoStatus)
+}
+
+// makes a window of the status of the repo
+// don't worry, you can think of it like Sierpinski carpet
+// it's doesn't need to be displayed so it'll work fine even in an embedded space
+func NewRepoStatusWindow(repo *gitpb.Repo) (*RepoStatus, error) {
+ path := repo.GetGoPath()
+ if windowMap[path] == nil {
+ log.Log(INFO, "NewRepoStatusWindow() adding new", path)
+ } else {
+ log.Warn("This already exists for path", path)
+ log.Warn("should return windowMap[path] here")
+ return windowMap[path], nil
+ }
+
+ rs := &RepoStatus{
+ ready: false,
+ }
+ rs.pb = repo
+ // realpath := repo.FullPath
+ // isGoLang := true
+
+ // rs.tags = make(map[string]string)
+ rs.window = gadgets.RawBasicWindow("GO Repo Details " + path)
+ rs.window.Horizontal()
+ rs.window.Make()
+ basebox := rs.window.Box()
+ group := basebox.NewGroup("stuff")
+ primarybox := group.Box()
+ primarybox.Horizontal()
+ // box2 := group.Box()
+ rs.ready = true
+ rs.window.Custom = func() {
+ rs.Hide()
+ log.Warn("repostatus user closed the window()")
+ }
+
+ // display the status of the git repository
+ rs.drawGitStatus(primarybox)
+
+ // display the git branches and options
+ rs.makeBranchesBox(primarybox)
+
+ // show standard git commit and merge controls
+ rs.drawGitCommands(primarybox)
+
+ // save ~/go/src & the whole path strings
+ rs.path.SetValue(path)
+ rs.goSrcPath.SetValue(os.Getenv("FORGE_GOSRC"))
+ rs.realPath.SetValue(rs.pb.GetFullPath())
+
+ // add all the tags
+ // rs.makeTagBox(box2)
+
+ // rs.readGitConfig()
+
+ if rs.pb.GetReadOnly() {
+ rs.readOnly.SetValue("true")
+ } else {
+ rs.readOnly.SetValue("false")
+ }
+ rs.mainWorkingName.SetText(rs.pb.GetMasterBranchName())
+ rs.mainBranchVersion.SetLabel(rs.pb.GetMasterBranchName())
+
+ rs.develWorkingName.SetText(rs.pb.GetDevelBranchName())
+ rs.develBranchVersion.SetLabel(rs.pb.GetDevelBranchName())
+
+ rs.userWorkingName.SetText(rs.pb.GetUserBranchName())
+ rs.userBranchVersion.SetLabel(rs.pb.GetUserBranchName())
+
+ if rs.pb.GetGoPath() == "" {
+ // not golang repo
+ } else {
+ rs.isGoLang.SetText("true")
+ rs.goPath.SetText(rs.pb.GetGoPath())
+ }
+ windowMap[path] = rs
+ return rs, nil
+}