summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--area.go8
-rw-r--r--mainCloudBox.go71
-rw-r--r--structs.go55
3 files changed, 72 insertions, 62 deletions
diff --git a/area.go b/area.go
index cbf129f..2d4ae59 100644
--- a/area.go
+++ b/area.go
@@ -13,24 +13,20 @@ func makeSplashArea() *ui.Area {
Data.fontButton = CreateFontButton("SplashFont", "DONE")
makeAttributedString()
- splashArea := ui.NewArea(myAH)
+ Data.splashArea = ui.NewArea(myAH)
// create a 'fake' button entry for the mouse clicks
var newmap ButtonMap
newmap.Action = "AREA"
- newmap.A = splashArea
-
+ newmap.A = Data.splashArea
myAH.button = &newmap
Data.AllButtons = append(Data.AllButtons, newmap)
- Data.splashArea = splashArea
if (Data.Debug) {
spew.Dump(Data.splashArea)
log.Println("DEBUGGING", Data.Debug)
} else {
log.Println("NOT DEBUGGING AREA mhAH.button =", myAH.button)
- log.Println("NOT DEBUGGING AREA mhAH.button =", myAH.button)
- log.Println("NOT DEBUGGING AREA mhAH.button =", myAH.button)
}
return Data.splashArea
}
diff --git a/mainCloudBox.go b/mainCloudBox.go
index 2b3d8b3..5d0b975 100644
--- a/mainCloudBox.go
+++ b/mainCloudBox.go
@@ -279,46 +279,59 @@ func AddVmConfigureTab(name string, pbVM *pb.Event_VM) {
}
// makeEntryBox(box, "hostname:", "blah.foo.org") {
-func makeEntryVbox(hbox *ui.Box, a string, b string, edit bool) {
+func makeEntryVbox(hbox *ui.Box, a string, startValue string, edit bool, action string) {
// Start 'Nickname' vertical box
vboxN := ui.NewVerticalBox()
vboxN.SetPadded(true)
vboxN.Append(ui.NewLabel(a), false)
- entryNick := ui.NewEntry()
- entryNick.SetText(b)
- if (edit == false) {
- entryNick.SetReadOnly(true)
- }
+ entryNick := defaultMakeEntry(startValue, edit, action)
vboxN.Append(entryNick, false)
-
- entryNick.OnChanged(func(*ui.Entry) {
- log.Println("OK. TEXT WAS CHANGED TO =", entryNick.Text())
- // Data.AccNick = entryNick.Text()
- })
hbox.Append(vboxN, false)
// End 'Nickname' vertical box
}
-func makeEntryHbox(hbox *ui.Box, a string, b string, edit bool) {
+func defaultEntryChange(e *ui.Entry) {
+ for key, foo := range Data.AllEntries {
+ if (Data.Debug) {
+ log.Println("\tdefaultEntryChange() Data.AllEntries =", key, foo)
+ }
+ if Data.AllEntries[key].E == e {
+ log.Println("defaultEntryChange() FOUND", "action =", Data.AllEntries[key].Action, "e.Text() =", e.Text())
+ return
+ }
+ }
+ log.Println("defaultEntryChange() ERROR. MISSING ENTRY MAP. e.Text() =", e.Text())
+}
+
+func defaultMakeEntry(startValue string, edit bool, action string) *ui.Entry {
+ e := ui.NewEntry()
+ e.SetText(startValue)
+ if (edit == false) {
+ e.SetReadOnly(true)
+ }
+ e.OnChanged(defaultEntryChange)
+
+ // add the entry field to the global map
+ var newEntryMap EntryMap
+ newEntryMap.E = e
+ newEntryMap.Edit = edit
+ newEntryMap.Action = action
+ Data.AllEntries = append(Data.AllEntries, newEntryMap)
+
+ return e
+}
+
+func makeEntryHbox(hbox *ui.Box, a string, startValue string, edit bool, action string) {
// Start 'Nickname' vertical box
hboxN := ui.NewHorizontalBox()
hboxN.SetPadded(true)
hboxN.Append(ui.NewLabel(a), false)
- entryNick := ui.NewEntry()
- entryNick.SetText(b)
- if (edit == false) {
- entryNick.SetReadOnly(true)
- }
-
+ entryNick := defaultMakeEntry(startValue, edit, action)
hboxN.Append(entryNick, false)
- entryNick.OnChanged(func(*ui.Entry) {
- log.Println("OK. TEXT WAS CHANGED TO =", entryNick.Text())
- // Data.AccNick = entryNick.Text()
- })
hbox.Append(hboxN, false)
// End 'Nickname' vertical box
}
@@ -343,12 +356,12 @@ func CreateVmBox(tab *ui.Tab, vm *pb.Event_VM) {
vbox.Append(hboxAccount, false)
// Add hostname entry box
- makeEntryVbox(hboxAccount, "hostname:", vm.Hostname, true)
- makeEntryVbox(hboxAccount, "IPv6:", vm.IPv6, true)
- makeEntryVbox(hboxAccount, "RAM:", fmt.Sprintf("%d",vm.Memory), true)
- makeEntryVbox(hboxAccount, "CPU:", fmt.Sprintf("%d",vm.Cpus), true)
- makeEntryVbox(hboxAccount, "Disk (GB):", fmt.Sprintf("%d",vm.Disk), true)
- makeEntryVbox(hboxAccount, "OS Image:", vm.BaseImage, true)
+ makeEntryVbox(hboxAccount, "hostname:", vm.Hostname, true, "Hostname")
+ makeEntryVbox(hboxAccount, "IPv6:", vm.IPv6, true, "IPv6")
+ makeEntryVbox(hboxAccount, "RAM:", fmt.Sprintf("%d",vm.Memory), true, "Memory")
+ makeEntryVbox(hboxAccount, "CPU:", fmt.Sprintf("%d",vm.Cpus), true, "Cpus")
+ makeEntryVbox(hboxAccount, "Disk (GB):",fmt.Sprintf("%d",vm.Disk), true, "Disk")
+ makeEntryVbox(hboxAccount, "OS Image:", vm.BaseImage, true, "BaseImage")
vbox.Append(ui.NewHorizontalSeparator(), false)
@@ -379,7 +392,7 @@ func createAddVmBox(tab *ui.Tab, name string, b *ButtonMap) {
vbox.Append(hboxAccount, false)
// Add hostname entry box
- makeEntryHbox(hboxAccount, "hostname:", "", true)
+ makeEntryHbox(hboxAccount, "hostname:", "", true, "Hostname")
vbox.Append(ui.NewHorizontalSeparator(), false)
diff --git a/structs.go b/structs.go
index b77aa76..a6a331e 100644
--- a/structs.go
+++ b/structs.go
@@ -15,24 +15,6 @@ import pb "git.wit.com/wit/witProtobuf"
var Data GuiDataStructure
var myAH areaHandler
-/*
-type GuiTabStructure struct {
- me *ui.Tab
- parentWindow *ui.Window
- firstBox *ui.Box
- tabOffset int
-
- // this means only one table per tab
- mh *TableData
-
- // stuff for the 'area'
- // this means only one area per tab
- fontButton *ui.FontButton
- attrstr *ui.AttributedString
- splashArea *ui.Area
-}
-*/
-
type GuiDataStructure struct {
State string
Width int
@@ -42,7 +24,10 @@ type GuiDataStructure struct {
// if nothing else is defined to handle them
MouseClick func(*ButtonMap)
- // general information
+ // account entry textboxes
+ Config *pb.Config
+
+ // general information on the App
Version string
GitCommit string
GoVersion string
@@ -55,22 +40,19 @@ type GuiDataStructure struct {
Hostname string
IPv6 string
- // account entry textboxes
- Config *pb.Config
-
// A map of all buttons everywhere on all
// windows, all tabs, across all goroutines
// This is "GLOBAL"
AllButtons []ButtonMap
+ // A map of all the entry boxes
+ AllEntries []EntryMap
+
// a VM (maybe the one the user is playing with?)
// if opening a new window, this is a trick to
// pass it in
CurrentVM *pb.Event_VM
- // All the tabs
-// Tabs []GuiTabStructure
-
EntryNick *ui.Entry
EntryUser *ui.Entry
EntryPass *ui.Entry
@@ -81,8 +63,8 @@ type GuiDataStructure struct {
cloudBox *ui.Box
smallBox *ui.Box
- mainwin *ui.Window
- maintab *ui.Tab
+// mainwin *ui.Window
+// maintab *ui.Tab
tabcount int
// stuff for the 'area'
@@ -99,6 +81,25 @@ type TableColumnData struct {
Color string
}
+type EntryMap struct {
+ E *ui.Entry
+ Edit bool
+
+ Account *pb.Account
+ VM *pb.Event_VM
+
+ B *ui.Button
+ FB *ui.FontButton
+ A *ui.Area
+ W *ui.Window
+ T *ui.Tab
+
+ Action string // what type of button
+
+ // custom callback function to your main application
+ custom func (*EntryMap)
+}
+
type ButtonMap struct {
B *ui.Button
FB *ui.FontButton