summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gui.go9
-rw-r--r--mainCloudBox.go88
-rw-r--r--structs.go2
3 files changed, 82 insertions, 17 deletions
diff --git a/gui.go b/gui.go
index 40e42da..5c20a9a 100644
--- a/gui.go
+++ b/gui.go
@@ -199,6 +199,15 @@ func defaultButtonClick(button *ui.Button) {
mouseClick(nil)
}
+func AddButton(b *ButtonMap, name string) *ui.Button {
+ newB := ui.NewButton(name)
+ newB.OnClicked(defaultButtonClick)
+
+ b.B = newB
+ Data.AllButtons = append(Data.AllButtons, *b)
+ return newB
+}
+
func CreateButton(a *pb.Account, vm *pb.Event_VM,
name string, action string, custom func(*ButtonMap)) *ui.Button {
newB := ui.NewButton(name)
diff --git a/mainCloudBox.go b/mainCloudBox.go
index 5d0b975..b7c2b3a 100644
--- a/mainCloudBox.go
+++ b/mainCloudBox.go
@@ -3,6 +3,7 @@ package gui
import "log"
import "time"
import "fmt"
+import "regexp"
// import "os"
import "github.com/andlabs/ui"
@@ -285,27 +286,69 @@ func makeEntryVbox(hbox *ui.Box, a string, startValue string, edit bool, action
vboxN.SetPadded(true)
vboxN.Append(ui.NewLabel(a), false)
- entryNick := defaultMakeEntry(startValue, edit, action)
+ e := defaultMakeEntry(startValue, edit, action)
- vboxN.Append(entryNick, false)
+ vboxN.Append(e.E, false)
hbox.Append(vboxN, false)
// End 'Nickname' vertical box
}
+/*
+// string handling examples that might be helpful for normalizeInt()
+isAlpha := regexp.MustCompile(`^[A-Za-z]+$`).MatchString
+
+for _, username := range []string{"userone", "user2", "user-three"} {
+ if !isAlpha(username) {
+ fmt.Printf("%q is not valid\n", username)
+ }
+}
+
+const alpha = "abcdefghijklmnopqrstuvwxyz"
+
+func alphaOnly(s string) bool {
+ for _, char := range s {
+ if !strings.Contains(alpha, strings.ToLower(string(char))) {
+ return false
+ }
+ }
+ return true
+}
+*/
+
+func normalizeInt(s string) string {
+ // reg, err := regexp.Compile("[^a-zA-Z0-9]+")
+ reg, err := regexp.Compile("[^0-9]+")
+ if err != nil {
+ log.Println("normalizeInt() regexp.Compile() ERROR =", err)
+ return s
+ }
+ clean := reg.ReplaceAllString(s, "")
+ log.Println("normalizeInt() s =", clean)
+ return clean
+}
+
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())
+ log.Println("defaultEntryChange() FOUND",
+ "action =", Data.AllEntries[key].Action,
+ "Last =", Data.AllEntries[key].Last,
+ "e.Text() =", e.Text())
+ Data.AllEntries[key].Last = e.Text()
+ if Data.AllEntries[key].Normalize != nil {
+ fixed := Data.AllEntries[key].Normalize(e.Text())
+ e.SetText(fixed)
+ }
return
}
}
log.Println("defaultEntryChange() ERROR. MISSING ENTRY MAP. e.Text() =", e.Text())
}
-func defaultMakeEntry(startValue string, edit bool, action string) *ui.Entry {
+func defaultMakeEntry(startValue string, edit bool, action string) *EntryMap {
e := ui.NewEntry()
e.SetText(startValue)
if (edit == false) {
@@ -318,22 +361,27 @@ func defaultMakeEntry(startValue string, edit bool, action string) *ui.Entry {
newEntryMap.E = e
newEntryMap.Edit = edit
newEntryMap.Action = action
+ if (action == "Memory") {
+ newEntryMap.Normalize = normalizeInt
+ }
Data.AllEntries = append(Data.AllEntries, newEntryMap)
- return e
+ return &newEntryMap
}
-func makeEntryHbox(hbox *ui.Box, a string, startValue string, edit bool, action string) {
+func makeEntryHbox(hbox *ui.Box, a string, startValue string, edit bool, action string) *EntryMap {
// Start 'Nickname' vertical box
hboxN := ui.NewHorizontalBox()
hboxN.SetPadded(true)
hboxN.Append(ui.NewLabel(a), false)
- entryNick := defaultMakeEntry(startValue, edit, action)
- hboxN.Append(entryNick, false)
+ e := defaultMakeEntry(startValue, edit, action)
+ hboxN.Append(e.E, false)
hbox.Append(hboxN, false)
// End 'Nickname' vertical box
+
+ return e
}
func AddBoxToTab(name string, tab *ui.Tab, box *ui.Box) {
@@ -378,8 +426,6 @@ func CreateVmBox(tab *ui.Tab, vm *pb.Event_VM) {
hboxButtons.Append(CreateButton(nil, vm, "Done", "DONE", nil), false)
AddBoxToTab(Data.CurrentVM.Name, tab, vbox)
-// tab.Append(Data.CurrentVM.Name, vbox)
-// tab.SetMargined(0, true)
}
func createAddVmBox(tab *ui.Tab, name string, b *ButtonMap) {
@@ -387,12 +433,16 @@ func createAddVmBox(tab *ui.Tab, name string, b *ButtonMap) {
vbox := ui.NewVerticalBox()
vbox.SetPadded(true)
- hboxAccount := ui.NewHorizontalBox()
- hboxAccount.SetPadded(true)
- vbox.Append(hboxAccount, false)
+ hbox := ui.NewHorizontalBox()
+ hbox.SetPadded(true)
+ vbox.Append(hbox, false)
// Add hostname entry box
- makeEntryHbox(hboxAccount, "hostname:", "", true, "Hostname")
+ hostname := makeEntryHbox(vbox, "Hostname:", "testhost", true, "Hostname")
+ memory := makeEntryHbox(vbox, "Memory:", "512", true, "Memory")
+ disk := makeEntryHbox(vbox, "Disk:", "20", true, "Disk")
+
+ log.Println("createAddVmBox() hostname, memory, disk =", hostname, memory, disk)
vbox.Append(ui.NewHorizontalSeparator(), false)
@@ -400,11 +450,15 @@ func createAddVmBox(tab *ui.Tab, name string, b *ButtonMap) {
hboxButtons.SetPadded(true)
vbox.Append(hboxButtons, false)
- hboxButtons.Append(CreateButton(nil, nil, "Add Virtual Machine","CREATE",nil), false)
+ var newb ButtonMap
+ newb.Action = "CREATE"
+ newb.VM = b.VM
+ newb.T = tab
+ hboxButtons.Append(AddButton(&newb, "Add Virtual Machine"), false)
+
+ // hboxButtons.Append(CreateButton(nil, nil, "Add Virtual Machine","CREATE",nil), false)
hboxButtons.Append(CreateButton(nil, nil, "Cancel", "CLOSE", nil), false)
name += " (" + b.Account.Nick + ")"
AddBoxToTab(name, tab, vbox)
-// tab.Append(name, vbox)
-// tab.SetMargined(0, true)
}
diff --git a/structs.go b/structs.go
index a6a331e..c2d9744 100644
--- a/structs.go
+++ b/structs.go
@@ -84,6 +84,8 @@ type TableColumnData struct {
type EntryMap struct {
E *ui.Entry
Edit bool
+ Last string // the last value
+ Normalize func (string) string // function to 'normalize' the data
Account *pb.Account
VM *pb.Event_VM