diff options
Diffstat (limited to 'toolkit/andlabs/plugin.go')
| -rw-r--r-- | toolkit/andlabs/plugin.go | 253 |
1 files changed, 202 insertions, 51 deletions
diff --git a/toolkit/andlabs/plugin.go b/toolkit/andlabs/plugin.go index 8cac830..60cdbfa 100644 --- a/toolkit/andlabs/plugin.go +++ b/toolkit/andlabs/plugin.go @@ -19,73 +19,224 @@ import "git.wit.org/wit/gui/toolkit" // 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() goodbye. not used anymore") +} + +func Action(a *toolkit.Action) { + if (a == nil) { + log(debugPlugin, "Action = nil") + return + } + f := func() { + rawAction(a) } - 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) + // f() + Queue(f) +} + +func rawAction(a *toolkit.Action) { + + log(debugAction, "Action() START a.Type =", a.Type) + log(debugAction, "Action() START a.S =", a.S) + log(debugAction, "Action() START a.Widget =", a.Widget) + + switch a.Type { + case toolkit.Add: + add(a) + case toolkit.Show: + a.Widget.B = true + show(a.Widget) + case toolkit.Hide: + a.Widget.B = false + show(a.Widget) + case toolkit.Enable: + a.Widget.B = true + enable(a.Widget) + case toolkit.Disable: + a.Widget.B = false + enable(a.Widget) + case toolkit.Get: + setText(a) + case toolkit.GetText: + switch a.Widget.Type { + case toolkit.Textbox: + t := mapToolkits[a.Widget] + a.S = t.s + } + case toolkit.Set: + setText(a) + case toolkit.SetFlag: + flag(a) + case toolkit.SetText: + setText(a) + case toolkit.AddText: + setText(a) + case toolkit.Margin: + pad(a) + case toolkit.Unmargin: + pad(a) + case toolkit.Pad: + pad(a) + case toolkit.Unpad: + pad(a) + case toolkit.Delete: + uiDelete(a) + case toolkit.Flag: + flag(a) + case toolkit.Move: + log(debugNow, "attempt to move() =", a.Type, a.Widget) + move(a) + default: + log(debugError, "Action() Unknown =", a.Type, a.Widget) + } + log(debugAction, "Action() END =", a.Type, a.Widget) +} + +func flag(a *toolkit.Action) { + // 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 a.S { + case "Toolkit": + debugToolkit = a.B + case "Change": + debugChange = a.B + case "Plugin": + debugPlugin = a.B + case "Flags": + debugFlags = a.B + case "Error": + debugError = a.B + case "Now": + debugNow = a.B + case "Show": + ShowDebug() + default: + log(debugError, "Can't set unknown flag", a.S) + } +} + +func setText(a *toolkit.Action) { + w := a.Widget + if (w == nil) { + log(debugError, "setText error. w.Widget == nil") + actionDump(debugError, a) return } - */ + t := mapToolkits[w] + log(debugChange, "setText() Attempt on", w.Type, "with", a.S) - switch c.Type { + switch w.Type { case toolkit.Window: - doWindow(c) + t.uiWindow.SetTitle(a.S) case toolkit.Tab: - doTab(p, c) case toolkit.Group: - doGroup(p, c) - case toolkit.Button: - doButton(p, c) + t.uiGroup.SetTitle(a.S) case toolkit.Checkbox: - doCheckbox(p, c) - case toolkit.Label: - doLabel(p, c) + switch a.Type { + case toolkit.SetText: + t.uiCheckbox.SetText(a.S) + case toolkit.Get: + w.B = t.uiCheckbox.Checked() + case toolkit.Set: + t.uiCheckbox.SetChecked(a.B) + w.B = a.B + default: + log(debugError, "setText() unknown", a.Type, "on checkbox", w.Name) + } case toolkit.Textbox: - doTextbox(p, c) + switch a.Type { + case toolkit.Set: + t.uiMultilineEntry.SetText(a.S) + case toolkit.SetText: + t.uiMultilineEntry.SetText(a.S) + case toolkit.Get: + w.S = t.s + case toolkit.GetText: + w.S = t.s + default: + log(debugError, "setText() unknown", a.Type, "on checkbox", w.Name) + } + case toolkit.Label: + t.uiLabel.SetText(a.S) + case toolkit.Button: + t.uiButton.SetText(a.S) case toolkit.Slider: - doSlider(p, c) + switch a.Type { + case toolkit.Get: + w.I = t.uiSlider.Value() + case toolkit.Set: + t.uiSlider.SetValue(a.I) + default: + log(debugError, "setText() unknown", a.Type, "on checkbox", w.Name) + } case toolkit.Spinner: - doSpinner(p, c) + switch a.Type { + case toolkit.Get: + w.I = t.uiSpinbox.Value() + case toolkit.Set: + t.uiSpinbox.SetValue(a.I) + default: + log(debugError, "setText() unknown", a.Type, "on checkbox", w.Name) + } case toolkit.Dropdown: - doDropdown(p, c) + switch a.Type { + case toolkit.AddText: + AddDropdownName(a) + case toolkit.Set: + var orig int + var i int = -1 + var s string + orig = t.uiCombobox.Selected() + log(debugChange, "try to set the Dropdown to", a.S, "from", orig) + // try to find the string + for i, s = range t.val { + log(debugChange, "i, s", i, s) + if (a.S == s) { + t.uiCombobox.SetSelected(i) + log(debugChange, "setText() Dropdown worked.", w.S) + return + } + } + log(debugError, "setText() Dropdown did not find:", a.S) + // if i == -1, then there are not any things in the menu to select + if (i == -1) { + return + } + // if the string was never set, then set the dropdown to the last thing added to the menu + if (orig == -1) { + t.uiCombobox.SetSelected(i) + } + case toolkit.Get: + w.S = t.s + case toolkit.GetText: + w.S = t.s + default: + log(debugError, "setText() unknown", a.Type, "on checkbox", w.Name) + } 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() + switch a.Type { + case toolkit.AddText: + t.AddComboboxName(a.S) + case toolkit.Set: + t.uiEditableCombobox.SetText(a.S) + t.s = a.S + case toolkit.SetText: + t.uiEditableCombobox.SetText(a.S) + t.s = a.S + case toolkit.Get: + w.S = t.s + case toolkit.GetText: + w.S = t.s default: - log(debugError, "Can't set unknown flag", c.S) + log(debugError, "setText() unknown", a.Type, "on checkbox", w.Name) } 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") + log(debugError, "plugin Send() Don't know how to setText on", w.Type, "yet", a.Type) } } |
