From 20f13a4b5be1a986e1085214f492a0afe6db322f Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Sun, 12 Mar 2023 08:47:16 -0500 Subject: Squashed commit of the following: commit 448abc843e2241bab6c399f7a836dccba1defc18 Author: Jeff Carr Date: Sun Mar 12 08:35:28 2023 -0500 this should probably be a new release now Signed-off-by: Jeff Carr commit a4064f7a6c5ac67437768aa2bc67c75dafc91c4c Author: Jeff Carr Date: Sat Mar 11 03:18:23 2023 -0600 able to work on add 'Box' and play with 'Image' Signed-off-by: Jeff Carr commit 6e59573d85e82ecb005805f50711dddc2df50480 Author: Jeff Carr Date: Sat Mar 11 03:04:34 2023 -0600 rearrange widget debugging Signed-off-by: Jeff Carr commit e0570de75c6eb1b4f49e541d9ef5d83ae4434d3d Author: Jeff Carr Date: Sat Mar 11 02:29:20 2023 -0600 debugging is lots smarter Signed-off-by: Jeff Carr commit ece32a1e43d91cd197d0a8497ad2f034c46126e1 Author: Jeff Carr Date: Fri Mar 10 21:38:23 2023 -0600 first pass on a node delete Signed-off-by: Jeff Carr commit c91cb0eddb0f73f8dea9b21a16cd76c7e2c19a33 Author: Jeff Carr Date: Fri Mar 10 21:06:29 2023 -0600 can recreate window list Signed-off-by: Jeff Carr commit 470f9dc26aefd3626b319264fe151aa48d4d5377 Author: Jeff Carr Date: Fri Mar 10 12:07:34 2023 -0600 attempt to ressurect mouse in the console plugin Signed-off-by: Jeff Carr commit 747bb53e06dda458cc8cd77b665f4d9d07f5e925 Author: Jeff Carr 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 commit 9283c65c8e9b8d2630b251ad952b6b52caddb307 Author: Jeff Carr Date: Fri Mar 10 07:26:53 2023 -0600 show/hide/etc for window widgets Signed-off-by: Jeff Carr commit 5724cd7ffd8595ae049a7c9c21cb2f1a993c4b76 Author: Jeff Carr Date: Fri Mar 10 06:40:36 2023 -0600 compiles and runs Signed-off-by: Jeff Carr commit 44a5e69ce17cb506adfe24ca72cc86caa9ebcc70 Author: Jeff Carr Date: Fri Mar 10 05:57:15 2023 -0600 more debugging improvements Signed-off-by: Jeff Carr commit b86f145f0252e7545b2e7fa78e1d5960cacb7bad Author: Jeff Carr Date: Fri Mar 10 03:42:32 2023 -0600 set margin on tab's works Signed-off-by: Jeff Carr commit d2218c08cf44acd5f017a8faa1439ee6d2fd46d5 Author: Jeff Carr Date: Thu Mar 9 16:26:21 2023 -0600 ignore all *.so files Signed-off-by: Jeff Carr commit e21934fff3cfea30b04df01bf0714f6927aa78f4 Author: Jeff Carr Date: Thu Mar 9 16:25:15 2023 -0600 can't embed the toolkit/*.so files here Signed-off-by: Jeff Carr commit f1e6c5fc9c8ca36db3ad6109d64612b6850fa856 Author: Jeff Carr Date: Thu Mar 9 16:21:14 2023 -0600 andlabs group widget has Show() and Hide() Signed-off-by: Jeff Carr commit e8487504aa76ca99c4891b777585a428fda0ef62 Author: Jeff Carr 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 commit 3667940a77af4e3855facb9247771d595477302f Author: Jeff Carr Date: Thu Mar 9 14:20:21 2023 -0600 fix SetText() on Label Signed-off-by: Jeff Carr commit 311d6be66db84b63fb7124df64e2e9be0f0b76a4 Author: Jeff Carr Date: Thu Mar 9 14:06:46 2023 -0600 still compiles and runs Signed-off-by: Jeff Carr commit ee4e9b21ef59a97f902c6dae2a57ac7b3063fe3b Author: Jeff Carr Date: Thu Mar 9 11:02:34 2023 -0600 compiles Signed-off-by: Jeff Carr Signed-off-by: Jeff Carr --- toolkit/democui/plugin.go | 113 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 toolkit/democui/plugin.go (limited to 'toolkit/democui/plugin.go') 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") + } +} -- cgit v1.2.3