diff options
Diffstat (limited to 'toolkit')
| -rw-r--r-- | toolkit/gocui/help.go | 3 | ||||
| -rw-r--r-- | toolkit/gocui/keybindings.go | 15 | ||||
| -rw-r--r-- | toolkit/gocui/main.go | 3 | ||||
| -rw-r--r-- | toolkit/gocui/plugin.go | 11 |
4 files changed, 28 insertions, 4 deletions
diff --git a/toolkit/gocui/help.go b/toolkit/gocui/help.go index d1206e7..cf4e84d 100644 --- a/toolkit/gocui/help.go +++ b/toolkit/gocui/help.go @@ -38,9 +38,10 @@ func helplayout(g *gocui.Gui) error { fmt.Fprintln(help, "d: show/hide debugging") fmt.Fprintln(help, "h: hide widgets") fmt.Fprintln(help, "s: show all widgets") + fmt.Fprintln(help, "q: quit()") fmt.Fprintln(help, "p: panic()") fmt.Fprintln(help, "STDOUT: /tmp/witgui.log") - fmt.Fprintln(help, "Ctrl-C or Q: Exit") + // fmt.Fprintln(help, "Ctrl-C: Exit") // TODO: fix ctrl-c handling if _, err := g.SetCurrentView("help"); err != nil { return err } diff --git a/toolkit/gocui/keybindings.go b/toolkit/gocui/keybindings.go index 8e8a8dc..23db0eb 100644 --- a/toolkit/gocui/keybindings.go +++ b/toolkit/gocui/keybindings.go @@ -70,9 +70,24 @@ func addDebugKeys(g *gocui.Gui) { return nil }) + // exit + g.SetKeybinding("", 'q', gocui.ModNone, + func(g *gocui.Gui, v *gocui.View) error { + me.baseGui.Close() + exit("forced exit() from within gocui") + return nil + }) + g.SetKeybinding("", gocui.KeyCtrlC, gocui.ModNone, + func(g *gocui.Gui, v *gocui.View) error { + me.baseGui.Close() + exit("forced exit() from within gocui") + return nil + }) + // panic g.SetKeybinding("", 'p', gocui.ModNone, func(g *gocui.Gui, v *gocui.View) error { + me.baseGui.Close() panic("forced panic in gocui") return nil }) diff --git a/toolkit/gocui/main.go b/toolkit/gocui/main.go index 6821a82..b115786 100644 --- a/toolkit/gocui/main.go +++ b/toolkit/gocui/main.go @@ -34,7 +34,7 @@ func Callback(guiCallback chan toolkit.Action) { } func Exit() { - // TODO: exit correctly + // TODO: send exit to the plugin me.baseGui.Close() } @@ -51,4 +51,5 @@ func Main(f func()) { log("This is a test log entry") MouseMain() + me.baseGui.Close() } diff --git a/toolkit/gocui/plugin.go b/toolkit/gocui/plugin.go index eb3f2af..1758690 100644 --- a/toolkit/gocui/plugin.go +++ b/toolkit/gocui/plugin.go @@ -15,8 +15,15 @@ func Action(a *toolkit.Action) { w := findWidget(a.WidgetId, me.rootNode) switch a.ActionType { case toolkit.Add: - w = makeWidget(a) - w.addWidget() + if (w == nil) { + w = makeWidget(a) + w.addWidget() + } else { + // this is done to protect the plugin being 'refreshed' with the + // widget binary tree. TODO: find a way to keep them in sync + log(logError, "Action() Add ignored for already defined widget", + a.WidgetId, a.ActionType, a.WidgetType, a.Name) + } case toolkit.Show: if (a.B) { w.drawView() |
