summaryrefslogtreecommitdiff
path: root/windowRepo.go
diff options
context:
space:
mode:
Diffstat (limited to 'windowRepo.go')
-rw-r--r--windowRepo.go73
1 files changed, 73 insertions, 0 deletions
diff --git a/windowRepo.go b/windowRepo.go
new file mode 100644
index 0000000..c934f55
--- /dev/null
+++ b/windowRepo.go
@@ -0,0 +1,73 @@
+package repostatus
+
+import (
+ "go.wit.com/lib/gadgets"
+ "go.wit.com/lib/protobuf/gitpb"
+
+ "go.wit.com/gui"
+)
+
+type repoWindow struct {
+ repo *gitpb.Repo // the repo protobuf
+ win *gadgets.BasicWindow // the patches window
+ stack *gui.Node // the top box set as vertical
+ //shelf *gui.Node // the first box in the stack, set as horizontal
+ //grid *gui.Node // the list of available patches
+ //setgrid *gui.Node // the list of each patchset
+}
+
+// todo: autogenerate these or make them standared 'gui' package functions
+// make this an go interface somehow
+
+// is the window hidden right now?
+func (w *repoWindow) Hidden() bool {
+ return w.win.Hidden()
+}
+
+// switches between the window being visable or hidden on the desktop
+func (w *repoWindow) Toggle() {
+ if w.Hidden() {
+ w.Show()
+ } else {
+ w.Hide()
+ }
+}
+
+// hides the window completely
+func (w *repoWindow) Show() {
+ w.win.Show()
+}
+
+func (w *repoWindow) Hide() {
+ w.win.Hide()
+}
+
+// should be the first box/widget in the window
+// greys out the window to the user
+func (w *repoWindow) Disable() {
+ w.stack.Disable()
+}
+
+func (w *repoWindow) Enable() {
+ w.stack.Enable()
+}
+
+// you can only have one of these
+func MakeRepoWindow(repo *gitpb.Repo) *repoWindow {
+ pw := new(repoWindow)
+
+ // sync.Once()
+ pw.win = gadgets.RawBasicWindow("Patcheset for " + repo.GetGoPath())
+ pw.win.Make()
+
+ pw.stack = pw.win.Box().NewBox("bw vbox", false)
+ // me.reposwin.Draw()
+ pw.win.Custom = func() {
+ // sets the hidden flag to false so Toggle() works
+ pw.win.Hide()
+ }
+
+ // grid := pw.stack.NewGrid("", 0, 0)
+
+ return pw
+}