summaryrefslogtreecommitdiff
path: root/button.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2019-06-02 13:40:44 -0700
committerJeff Carr <[email protected]>2019-06-02 13:40:44 -0700
commitc7402944c58285a3fd38b2b4678fdc97ada768a2 (patch)
treefdab4570083eb3e8cbdd76818528f00450e9be63 /button.go
parent99792943c67cf580e066fe28c8b7f4796d304ce2 (diff)
finally cleaned out all protobuf references
this effort is almost done being 'cleaned' of the code I started with. This library is not perfect and lacks features from andlabs/ui but it will work for our purposes Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'button.go')
-rw-r--r--button.go94
1 files changed, 94 insertions, 0 deletions
diff --git a/button.go b/button.go
new file mode 100644
index 0000000..5211042
--- /dev/null
+++ b/button.go
@@ -0,0 +1,94 @@
+package gui
+
+import "log"
+
+import "github.com/andlabs/ui"
+import _ "github.com/andlabs/ui/winmanifest"
+
+import pb "git.wit.com/wit/witProtobuf"
+
+// import "github.com/davecgh/go-spew/spew"
+
+// THIS IS CLEAN
+
+// This is the default mouse click handler
+// Every mouse click that hasn't been assigned to
+// something specific will fall into this routine
+// By default, all it runs is the call back to
+// the main program that is using this library
+//
+// This routine MUST be here as this is how the andlabs/ui works
+// This is the raw routine passed to every button in andlabs libui / ui
+//
+// There is a []GuiButton which has all the buttons. We search
+// for the button and then call the function below
+//
+func defaultButtonClick(button *ui.Button) {
+ log.Println("gui.defaultButtonClick() LOOK FOR BUTTON button =", button)
+ for key, foo := range Data.AllButtons {
+ if (Data.Debug) {
+ log.Println("gui.defaultButtonClick() Data.AllButtons =", key, foo)
+ // spew.Dump(foo)
+ }
+ if Data.AllButtons[key].B == button {
+ log.Println("\tgui.defaultButtonClick() BUTTON MATCHED")
+ log.Println("\tgui.defaultButtonClick() Data.AllButtons[key].Action =", Data.AllButtons[key].Action)
+ if Data.AllButtons[key].custom != nil {
+ log.Println("\tgui.defaultButtonClick() DOING CUSTOM FUNCTION")
+ Data.AllButtons[key].custom(Data.AllButtons[key])
+ return
+ }
+ if (Data.MouseClick != nil) {
+ Data.MouseClick(Data.AllButtons[key])
+ } else {
+ log.Println("\tgui.defaultButtonClick() IGNORING BUTTON. MouseClick() is nil")
+ }
+ return
+ }
+ }
+ log.Println("\tgui.defaultButtonClick() BUTTON NOT FOUND")
+ if (Data.Debug) {
+ panic("gui.defaultButtonClick() SHOULD NOT HAVE UNMAPPED BUTTONS")
+ }
+}
+
+func CreateButton(box *GuiBox, a *pb.Account, vm *pb.Event_VM, name string, action string, custom func(*GuiButton)) *GuiButton {
+ newUiB := ui.NewButton(name)
+ newUiB.OnClicked(defaultButtonClick)
+
+ var newB *GuiButton
+ newB = new(GuiButton)
+ newB.B = newUiB
+ if (box.Window == nil) {
+ log.Println("CreateButton() box.Window == nil")
+ panic("crap")
+ }
+ newB.GW = box.Window
+ newB.Account = a
+ newB.VM = vm
+ newB.Box = box
+ newB.Action = action
+ newB.custom = custom
+ Data.AllButtons = append(Data.AllButtons, newB)
+
+ box.UiBox.Append(newB.B, false)
+ return newB
+}
+
+func CreateFontButton(box *GuiBox, action string) *GuiButton {
+
+ // create a 'fake' button entry for the mouse clicks
+ var newGB GuiButton
+ newGB.Action = action
+ newGB.FB = ui.NewFontButton()
+ newGB.Box = box
+ Data.AllButtons = append(Data.AllButtons, &newGB)
+
+ newGB.FB.OnChanged(func (*ui.FontButton) {
+ log.Println("FontButton.OnChanged() START mouseClick(&newBM)", newGB)
+ if (Data.MouseClick != nil) {
+ Data.MouseClick(&newGB)
+ }
+ })
+ return &newGB
+}