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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
package gui
import "log"
import "time"
import "fmt"
import "strings"
import "os/exec"
import "runtime"
import "github.com/andlabs/ui"
import _ "github.com/andlabs/ui/winmanifest"
import "github.com/davecgh/go-spew/spew"
// import pb "git.wit.com/wit/witProtobuf"
// can not pass any args to this (?)
/*
func setupCloudUI() {
Data.Window1.W = ui.NewWindow("Cloud Control Panel", Data.Width, Data.Height, false)
Data.Window1.W.OnClosing(func(*ui.Window) bool {
ui.Quit()
return true
})
ui.OnShouldQuit(func() bool {
Data.Window1.W.Destroy()
return true
})
Data.Window1.T = ui.NewTab()
Data.Window1.W.SetChild(Data.Window1.T)
Data.Window1.W.SetMargined(true)
// Data.tabcount = 0
Data.Window1.T.Append("Cloud Info", makeCloudInfoBox())
// Data.Window1.T.SetMargined(Data.tabcount, true)
Data.Window1.W.Show()
}
*/
func addTableTab() {
var parts []TableColumnData
for key, foo := range []string{"BG", "TEXTCOLOR", "BUTTON", "TEXTCOLOR", "TEXTCOLOR", "TEXT", "BUTTON", "TEXT", "BUTTON"} {
log.Println(key, foo)
var b TableColumnData
b.CellType = foo
b.Heading = fmt.Sprintf("heading%d", key)
parts = append(parts, b)
}
log.Println("Sleep for 2 seconds, then try to add new tabs")
time.Sleep(1 * 1000 * 1000 * 1000)
// AddTableTab(Data.Window1.T, 1, "test seven", 7, parts, nil)
}
func addDebuggingButtons(box *GuiBox) {
vbox := ui.NewVerticalBox()
vbox.SetPadded(true)
box.UiBox.Append(vbox, false)
vbox.Append(ui.NewLabel("Debugging:"), false)
vbox.Append(ui.NewColorButton(), false)
a := CreateButton(box, nil, nil, "Add Account", "ADD", nil)
vbox.Append(a.B, false)
a = CreateButton(box, nil, nil, "Quit", "QUIT", nil)
vbox.Append(a.B, false)
// ATTEMPT TO ADD THE TABLE HERE
add2button := ui.NewButton("Add a Test Table")
add2button.OnClicked(func(*ui.Button) {
log.Println("send over socket")
addTableTab()
})
vbox.Append(add2button, false)
// ATTEMPT TO ADD THE TABLE HERE END
a = CreateButton(box, nil, nil, "Hide & Show Box1&2", "HIDE", runTestHide)
vbox.Append(a.B, false)
a = CreateButton(box, nil, nil, "Close GUI", "QUIT", nil)
vbox.Append(a.B, false)
a = CreateButton(box, nil, nil, "DEBUG goroutines", "DEBUG", nil)
vbox.Append(a.B, false)
a = CreateButton(box, nil, nil, "xterm", "XTERM", runTestExecClick)
vbox.Append(a.B, false)
a = CreateButton(box, nil, nil, "Load test.json config file", "CONFIG", nil)
vbox.Append(a.B, false)
}
func runTestHide(b *GuiButton) {
/*
log.Println("runTestHide START")
Data.Window1.Box1.Hide()
Data.Window1.Box2.Hide()
// time.Sleep(2000 * time.Millisecond)
Data.State = "HIDE"
log.Println("runTestHide END")
*/
}
func runPingClick(b *GuiButton) {
log.Println("runPingClick START")
log.Println("runTestExecClick b.VM", b.VM)
hostname := "localhost"
if (b.VM != nil) {
hostname = b.VM.Hostname
}
spew.Dump(b)
var tmp []string
tmp = append(tmp, "xterm", "-geometry", "120x30", "-e", "ping " + hostname + ";sleep 3")
go runCommand(tmp)
log.Println("runPingClick END")
}
func runTestExecClick(b *GuiButton) {
log.Println("runTestExecClick START")
if runtime.GOOS == "linux" {
go runSimpleCommand("xterm -report-fonts")
} else if runtime.GOOS == "windows" {
go runSimpleCommand("mintty.exe")
} else {
go runSimpleCommand("xterm")
}
log.Println("runTestExecClick END")
}
func runSimpleCommand(s string) {
cmd := strings.TrimSpace(s) // this is like 'chomp' in perl
cmdArgs := strings.Fields(cmd)
runCommand(cmdArgs)
}
func runCommand(cmdArgs []string) {
log.Println("runCommand() START", cmdArgs)
process := exec.Command(cmdArgs[0], cmdArgs[1:len(cmdArgs)]...)
// process := exec.Command("xterm", "-e", "ping localhost")
log.Println("runCommand() process.Start()")
process.Start()
log.Println("runCommand() process.Wait()")
process.Wait()
log.Println("runCommand() NEED TO CHECK THE TIME HERE TO SEE IF THIS WORKED")
log.Println("runCommand() OTHERWISE INFORM THE USER")
log.Println("runCommand() END")
}
|