diff options
Diffstat (limited to 'toolkit/gocui/plugin.go')
| -rw-r--r-- | toolkit/gocui/plugin.go | 95 |
1 files changed, 91 insertions, 4 deletions
diff --git a/toolkit/gocui/plugin.go b/toolkit/gocui/plugin.go index 5be26f3..2b01acc 100644 --- a/toolkit/gocui/plugin.go +++ b/toolkit/gocui/plugin.go @@ -1,8 +1,8 @@ package main import ( - "log" - + // 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" @@ -19,10 +19,97 @@ func Quit() { // This lists out the know mappings func listMap() { for v, w := range viewWidget { - log.Println("view =", v.Name, "widget name =", w.Name) + log("view =", v.Name, "widget name =", w.Name) } for s, w := range stringWidget { - log.Println("string =", s, "widget =", w) + 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") + } +} |
