2022-11-13 08:53:03 -06:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
2023-03-12 08:47:16 -05:00
|
|
|
// if you include more than just this import
|
|
|
|
// then your plugin might be doing something un-ideal (just a guess from 2023/02/27)
|
2022-11-13 08:53:03 -06:00
|
|
|
"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() {
|
|
|
|
baseGui.Close()
|
|
|
|
}
|
|
|
|
|
|
|
|
// This lists out the know mappings
|
|
|
|
func listMap() {
|
|
|
|
for v, w := range viewWidget {
|
2023-03-12 08:47:16 -05:00
|
|
|
log("view =", v.Name, "widget name =", w.Name)
|
2022-11-13 08:53:03 -06:00
|
|
|
}
|
|
|
|
for s, w := range stringWidget {
|
2023-03-12 08:47:16 -05:00
|
|
|
log("string =", s, "widget =", w)
|
2022-11-13 08:53:03 -06:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-03-12 08:47:16 -05:00
|
|
|
|
|
|
|
//
|
|
|
|
// 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)
|
|
|
|
}
|
2023-03-23 12:35:12 -05:00
|
|
|
log(debugPlugin, "Send() child =", c.Name, ",", c.Type)
|
2023-03-12 08:47:16 -05:00
|
|
|
|
|
|
|
/*
|
|
|
|
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)
|
|
|
|
*/
|
2023-03-23 12:35:12 -05:00
|
|
|
/*
|
2023-03-12 08:47:16 -05:00
|
|
|
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)
|
|
|
|
}
|
2023-03-23 12:35:12 -05:00
|
|
|
*/
|
2023-03-12 08:47:16 -05:00
|
|
|
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")
|
|
|
|
}
|
|
|
|
}
|