summaryrefslogtreecommitdiff
path: root/main.go
blob: 5811d8b62fa33a0398ab7453a5383f9afc42f241 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
// This is a simple example
package main

import 	(
	"os/user"

	"go.wit.com/log"

	"go.wit.com/gui/gui"
	"go.wit.com/gui/gadgets"
	"go.wit.com/gui/gadgets/repostatus"
)

func main() {
	myGui = gui.New().Default()

	repoworld()

	gui.Watchdog()
}

func addRepo(grid *gui.Node, path string, master string, devel string, user string) {
	newRepo := new(repo)

	if repostatus.VerifyLocalGoRepo(path) {
		log.Warn("newRepo actually exists", newRepo.getPath())
	} else {
		log.Warn("newRepo does not exist", newRepo.getPath())
		return
	}

	newRepo.path = path
	newRepo.pLabel = grid.NewLabel(path)
	newRepo.bLabel = grid.NewLabel("")
	newRepo.lastLabel = grid.NewLabel("")
	newRepo.vLabel = grid.NewLabel("")

	newRepo.masterVersion = grid.NewLabel("")
	newRepo.develVersion = grid.NewLabel("")
	newRepo.jcarrVersion = grid.NewLabel("")
	newRepo.dirtyLabel = grid.NewLabel("")

	newRepo.pButton = grid.NewButton("rescan", func () {
		newRepo.newScan()
	})

	grid.NewButton("Toggle()", func () {
		if newRepo.status == nil {
			log.Warn("status window doesn't exist")
			return
		}
		log.Warn("status window exists. trying Show() here")
		newRepo.status.Show()
	})
	grid.NewButton("TestDraw()", func () {
		if newRepo.status == nil {
			log.Warn("status window doesn't exist")
			return
		}
		log.Warn("status window exists. trying TestDraw() here")
		newRepo.status.TestDraw()
	})
	if path == "" {
		newRepo.cButton.Hide()
		newRepo.pButton.Hide()
	}
	newRepo.status = repostatus.New(myGui, newRepo.path)
	newRepo.status.SetMasterName(master)
	newRepo.status.SetDevelName(devel)
	newRepo.status.SetUserName(user)
	newRepo.status.Update()
	newRepo.newScan()
	allrepos = append(allrepos, newRepo)
}

// This creates a window
func repoworld() {
	win := gadgets.NewBasicWindow(myGui, "git autotypist. it types faster than you can.")

	box := win.Box().NewBox("bw vbox", false)
	// box2 := win.Box().NewBox("bw vbox", false)
	group := box.NewGroup("go repositories (read from ~/.config/myrepolist)")
	grid := group.NewGrid("test", 11, 1)
	grid.Margin()

	grid.NewLabel("")
	grid.NewLabel("branch")
	grid.NewLabel("last tag")
	grid.NewLabel("Current Version")
	// grid.NewLabel("tags")
	grid.NewLabel("master")
	grid.NewLabel("devel")
	grid.NewLabel("user")
	grid.NewLabel("Status")
	grid.NewLabel("commit")
	grid.NewLabel("Toggle()")
	grid.NewLabel("Draw()")

	repos := myrepolist()
	for _, line := range repos {
		log.Warn("repo =", line)
		path, mbranch, dbranch, ubranch := splitLine(line)
		if mbranch == "" { mbranch = "master" }
		if dbranch == "" { dbranch = "devel" }
		usr, _ := user.Current()
		if ubranch == "" { ubranch = usr.Username }
		addRepo(grid, path, mbranch, dbranch, ubranch)
	}

	box2 := win.Box().NewBox("bw vbox", false)
	box2.NewButton("grid.Pad()", func () {
		grid.Margin()
	})

	box2.NewButton("status.Update() all", func () {
		for _, repo := range allrepos {
			repo.status.Update()
		}
	})

	box2.NewButton("rescan all", func () {
		for _, repo := range allrepos {
			repo.newScan()
		}
	})

	win.Draw()
}