summaryrefslogtreecommitdiff
path: root/toolkit/gocui
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2022-11-09 08:38:50 -0600
committerJeff Carr <[email protected]>2022-11-09 08:38:50 -0600
commited382bec55be25039e4dcf020d1512139855c9bb (patch)
treefb3a671fd07c03a75cedb8d56b2241108cd792ff /toolkit/gocui
parentb410d0fd083ee89eed410cda2123a22cddcd3f44 (diff)
cleanup of the example commands. more plugin workv0.4.6
add a button in two plugins at the same time! added a button in andlabs/ui & gocui attempt a common widget struct between wit/gui & the plugins start handling missing plugins rename Makefile command examples remote examples used for testing filename improvements golang src code uses lowercase and _ in filenames fix crash when button click function == nil fix wrong name 'gocli' -> 'gocui' keep fighting with goreadme generated README.md Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'toolkit/gocui')
-rw-r--r--toolkit/gocui/Makefile4
-rw-r--r--toolkit/gocui/button.go48
-rwxr-xr-xtoolkit/gocui/gocuibin3409595 -> 0 bytes
-rw-r--r--toolkit/gocui/greeter.go23
-rw-r--r--toolkit/gocui/widget.go26
5 files changed, 93 insertions, 8 deletions
diff --git a/toolkit/gocui/Makefile b/toolkit/gocui/Makefile
index 42798cc..27f23ed 100644
--- a/toolkit/gocui/Makefile
+++ b/toolkit/gocui/Makefile
@@ -1,8 +1,8 @@
all: plugin
- ldd ../gocli.so
+ ldd ../gocui.so
build:
GO111MODULE="off" go build
plugin:
- GO111MODULE="off" go build -buildmode=plugin -o ../gocli.so
+ GO111MODULE="off" go build -buildmode=plugin -o ../gocui.so
diff --git a/toolkit/gocui/button.go b/toolkit/gocui/button.go
new file mode 100644
index 0000000..8fb6e05
--- /dev/null
+++ b/toolkit/gocui/button.go
@@ -0,0 +1,48 @@
+package main
+
+import (
+ "errors"
+ "fmt"
+ "log"
+ "strings"
+
+ "github.com/awesome-gocui/gocui"
+)
+
+func (w *Widget) AddButton() {
+// func (g greeting) AddButton() {
+ log.Println("gui.gocui.AddButton()", w.Name)
+ addButton2(w.Name, w.Event)
+}
+
+func addButton2(name string, e func(*Widget) *Widget) {
+ addButton(name)
+}
+
+func addButton(name string) error {
+ t := len(name)
+ v, err := baseGui.SetView(name, currentX, currentY, currentX+t+3, currentY+2, 0)
+ if err == nil {
+ return err
+ }
+ if !errors.Is(err, gocui.ErrUnknownView) {
+ return err
+ }
+
+ v.Wrap = true
+ fmt.Fprintln(v, " " + name)
+ fmt.Fprintln(v, strings.Repeat("foo\n", 2))
+
+ if _, err := baseGui.SetCurrentView(name); err != nil {
+ return err
+ }
+
+ views = append(views, name)
+ curView = len(views) - 1
+ idxView += 1
+ currentY += 3
+ if (groupSize < len(views)) {
+ groupSize = len(views)
+ }
+ return nil
+}
diff --git a/toolkit/gocui/gocui b/toolkit/gocui/gocui
deleted file mode 100755
index 094619c..0000000
--- a/toolkit/gocui/gocui
+++ /dev/null
Binary files differ
diff --git a/toolkit/gocui/greeter.go b/toolkit/gocui/greeter.go
index de6ee68..e3094e5 100644
--- a/toolkit/gocui/greeter.go
+++ b/toolkit/gocui/greeter.go
@@ -1,28 +1,37 @@
package main
import (
- "errors"
- "fmt"
"log"
- "strings"
- "github.com/awesome-gocui/gocui"
+ // "errors"
+ // "fmt"
+ // "strings"
+ // "github.com/awesome-gocui/gocui"
)
type greeting string
+// stores the raw toolkit internals
+type toolkit struct {
+ id string
+ Name string
+
+ OnChanged func(toolkit)
+}
+
// this is exported
var Greeter greeting
+var Toolkit toolkit
// func main() {
func (g greeting) Greet() {
- fmt.Println("Hello Universe")
+ log.Println("Hello Universe")
Init()
// ToolkitMain()
}
func (g greeting) JcarrButton() {
- fmt.Println("Hello GreetButton meet Universe")
+ log.Println("Hello GreetButton meet Universe")
addButton("Greet foo")
addButton("Greet foo 2")
}
@@ -39,6 +48,7 @@ func (g greeting) AddButton(name string) {
addButton(name)
}
+/*
func addButton(name string) error {
t := len(name)
v, err := baseGui.SetView(name, currentX, currentY, currentX+t+3, currentY+2, 0)
@@ -66,3 +76,4 @@ func addButton(name string) error {
}
return nil
}
+*/
diff --git a/toolkit/gocui/widget.go b/toolkit/gocui/widget.go
new file mode 100644
index 0000000..758ac38
--- /dev/null
+++ b/toolkit/gocui/widget.go
@@ -0,0 +1,26 @@
+package main
+
+// passes information between the toolkit library (plugin)
+
+// All Toolkit interactions should be done via a channel or Queue()
+
+// This is the only thing that is passed between the toolkit plugin
+
+// what names should be used? This is not part of [[Graphical Widget]]
+// Event() seems like a good name.
+// Could a protobuf be used here? (Can functions be passed?)
+type Widget struct {
+ i int
+ s string
+
+ Name string
+ Width int
+ Height int
+
+ Event func(*Widget) *Widget
+
+ // Probably deprecate these
+ OnChanged func(*Widget)
+ Custom func(*Widget)
+ OnExit func(*Widget)
+}