summaryrefslogtreecommitdiff
path: root/toolkit/democui/plugin.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2023-03-12 08:47:16 -0500
committerJeff Carr <[email protected]>2023-03-12 08:47:16 -0500
commit20f13a4b5be1a986e1085214f492a0afe6db322f (patch)
tree35d633c45a36798126520269e13ae70dd70b5b20 /toolkit/democui/plugin.go
parent49202eeafdad8e5780fefdad3d2f87fd4354725e (diff)
Squashed commit of the following:
commit 448abc843e2241bab6c399f7a836dccba1defc18 Author: Jeff Carr <[email protected]> Date: Sun Mar 12 08:35:28 2023 -0500 this should probably be a new release now Signed-off-by: Jeff Carr <[email protected]> commit a4064f7a6c5ac67437768aa2bc67c75dafc91c4c Author: Jeff Carr <[email protected]> Date: Sat Mar 11 03:18:23 2023 -0600 able to work on add 'Box' and play with 'Image' Signed-off-by: Jeff Carr <[email protected]> commit 6e59573d85e82ecb005805f50711dddc2df50480 Author: Jeff Carr <[email protected]> Date: Sat Mar 11 03:04:34 2023 -0600 rearrange widget debugging Signed-off-by: Jeff Carr <[email protected]> commit e0570de75c6eb1b4f49e541d9ef5d83ae4434d3d Author: Jeff Carr <[email protected]> Date: Sat Mar 11 02:29:20 2023 -0600 debugging is lots smarter Signed-off-by: Jeff Carr <[email protected]> commit ece32a1e43d91cd197d0a8497ad2f034c46126e1 Author: Jeff Carr <[email protected]> Date: Fri Mar 10 21:38:23 2023 -0600 first pass on a node delete Signed-off-by: Jeff Carr <[email protected]> commit c91cb0eddb0f73f8dea9b21a16cd76c7e2c19a33 Author: Jeff Carr <[email protected]> Date: Fri Mar 10 21:06:29 2023 -0600 can recreate window list Signed-off-by: Jeff Carr <[email protected]> commit 470f9dc26aefd3626b319264fe151aa48d4d5377 Author: Jeff Carr <[email protected]> Date: Fri Mar 10 12:07:34 2023 -0600 attempt to ressurect mouse in the console plugin Signed-off-by: Jeff Carr <[email protected]> commit 747bb53e06dda458cc8cd77b665f4d9d07f5e925 Author: Jeff Carr <[email protected]> Date: Fri Mar 10 10:47:14 2023 -0600 jesus. gocui actually builds and works again as a plugin it didn't take too much to change it Signed-off-by: Jeff Carr <[email protected]> commit 9283c65c8e9b8d2630b251ad952b6b52caddb307 Author: Jeff Carr <[email protected]> Date: Fri Mar 10 07:26:53 2023 -0600 show/hide/etc for window widgets Signed-off-by: Jeff Carr <[email protected]> commit 5724cd7ffd8595ae049a7c9c21cb2f1a993c4b76 Author: Jeff Carr <[email protected]> Date: Fri Mar 10 06:40:36 2023 -0600 compiles and runs Signed-off-by: Jeff Carr <[email protected]> commit 44a5e69ce17cb506adfe24ca72cc86caa9ebcc70 Author: Jeff Carr <[email protected]> Date: Fri Mar 10 05:57:15 2023 -0600 more debugging improvements Signed-off-by: Jeff Carr <[email protected]> commit b86f145f0252e7545b2e7fa78e1d5960cacb7bad Author: Jeff Carr <[email protected]> Date: Fri Mar 10 03:42:32 2023 -0600 set margin on tab's works Signed-off-by: Jeff Carr <[email protected]> commit d2218c08cf44acd5f017a8faa1439ee6d2fd46d5 Author: Jeff Carr <[email protected]> Date: Thu Mar 9 16:26:21 2023 -0600 ignore all *.so files Signed-off-by: Jeff Carr <[email protected]> commit e21934fff3cfea30b04df01bf0714f6927aa78f4 Author: Jeff Carr <[email protected]> Date: Thu Mar 9 16:25:15 2023 -0600 can't embed the toolkit/*.so files here Signed-off-by: Jeff Carr <[email protected]> commit f1e6c5fc9c8ca36db3ad6109d64612b6850fa856 Author: Jeff Carr <[email protected]> Date: Thu Mar 9 16:21:14 2023 -0600 andlabs group widget has Show() and Hide() Signed-off-by: Jeff Carr <[email protected]> commit e8487504aa76ca99c4891b777585a428fda0ef62 Author: Jeff Carr <[email protected]> Date: Thu Mar 9 16:07:56 2023 -0600 pass the node id into the plugin to use in channels Signed-off-by: Jeff Carr <[email protected]> commit 3667940a77af4e3855facb9247771d595477302f Author: Jeff Carr <[email protected]> Date: Thu Mar 9 14:20:21 2023 -0600 fix SetText() on Label Signed-off-by: Jeff Carr <[email protected]> commit 311d6be66db84b63fb7124df64e2e9be0f0b76a4 Author: Jeff Carr <[email protected]> Date: Thu Mar 9 14:06:46 2023 -0600 still compiles and runs Signed-off-by: Jeff Carr <[email protected]> commit ee4e9b21ef59a97f902c6dae2a57ac7b3063fe3b Author: Jeff Carr <[email protected]> Date: Thu Mar 9 11:02:34 2023 -0600 compiles Signed-off-by: Jeff Carr <[email protected]> Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'toolkit/democui/plugin.go')
-rw-r--r--toolkit/democui/plugin.go113
1 files changed, 113 insertions, 0 deletions
diff --git a/toolkit/democui/plugin.go b/toolkit/democui/plugin.go
new file mode 100644
index 0000000..0b26f8f
--- /dev/null
+++ b/toolkit/democui/plugin.go
@@ -0,0 +1,113 @@
+package main
+
+import (
+ // if you include more than just this import
+ // then your plugin might be doing something un-ideal (just a guess from 2023/02/27)
+ "git.wit.org/wit/gui/toolkit"
+
+ "github.com/awesome-gocui/gocui"
+)
+
+// This is a map between the widgets in wit/gui and the internal structures of gocui
+var viewWidget map[*gocui.View]*toolkit.Widget
+var stringWidget map[string]*toolkit.Widget
+
+func Quit() {
+ g.Close()
+}
+
+// This lists out the know mappings
+func listMap() {
+ for v, w := range viewWidget {
+ log("view =", v.Name, "widget name =", w.Name)
+ }
+ for s, w := range stringWidget {
+ log("string =", s, "widget =", w)
+ }
+}
+
+
+//
+// This should be called ?
+// Pass() ?
+// This handles all interaction between the wit/gui package (what golang knows about)
+// and this plugin that talks to the OS and does scary and crazy things to make
+// a GUI on whatever OS or whatever GUI toolkit you might have (GTK, QT, WASM, libcurses)
+//
+// Once you are here, you should be in a protected goroutine created by the golang wit/gui package
+//
+// TODO: make sure you can't escape this goroutine
+//
+func Send(p *toolkit.Widget, c *toolkit.Widget) {
+ if (p == nil) {
+ log(debugPlugin, "Send() parent = nil")
+ } else {
+ log(debugPlugin, "Send() parent =", p.Name, ",", p.Type)
+ }
+ log(debugPlugin, "Send() child =", c.Name, ",", c.Action, ",", c.Type)
+
+ /*
+ if (c.Action == "SetMargin") {
+ log(debugError, "need to implement SetMargin here")
+ setMargin(c, c.B)
+ return
+ }
+ */
+
+ switch c.Type {
+ /*
+ case toolkit.Window:
+ // doWindow(c)
+ case toolkit.Tab:
+ // doTab(p, c)
+ case toolkit.Group:
+ newGroup(p, c)
+ case toolkit.Button:
+ newButton(p, c)
+ case toolkit.Checkbox:
+ // doCheckbox(p, c)
+ case toolkit.Label:
+ // doLabel(p, c)
+ case toolkit.Textbox:
+ // doTextbox(p, c)
+ case toolkit.Slider:
+ // doSlider(p, c)
+ case toolkit.Spinner:
+ // doSpinner(p, c)
+ case toolkit.Dropdown:
+ // doDropdown(p, c)
+ case toolkit.Combobox:
+ // doCombobox(p, c)
+ case toolkit.Grid:
+ // doGrid(p, c)
+ */
+ case toolkit.Flag:
+ // log(debugFlags, "plugin Send() flag parent =", p.Name, p.Type)
+ // log(debugFlags, "plugin Send() flag child =", c.Name, c.Type)
+ // log(debugFlags, "plugin Send() flag child.Action =", c.Action)
+ // log(debugFlags, "plugin Send() flag child.S =", c.S)
+ // log(debugFlags, "plugin Send() flag child.B =", c.B)
+ // log(debugFlags, "plugin Send() what to flag?")
+ // should set the checkbox to this value
+ switch c.S {
+ case "Toolkit":
+ debugToolkit = c.B
+ case "Change":
+ debugChange = c.B
+ case "Plugin":
+ debugPlugin = c.B
+ case "Flags":
+ debugFlags = c.B
+ case "Error":
+ debugError = c.B
+ case "Show":
+ ShowDebug()
+ default:
+ log(debugError, "Can't set unknown flag", c.S)
+ }
+ default:
+ log(debugError, "plugin Send() unknown parent =", p.Name, p.Type)
+ log(debugError, "plugin Send() unknown child =", c.Name, c.Type)
+ log(debugError, "plugin Send() Don't know how to do", c.Type, "yet")
+ }
+}