summaryrefslogtreecommitdiff
path: root/toolkit
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit')
-rw-r--r--toolkit/gocui/help.go3
-rw-r--r--toolkit/gocui/keybindings.go15
-rw-r--r--toolkit/gocui/main.go3
-rw-r--r--toolkit/gocui/plugin.go11
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()