summaryrefslogtreecommitdiff
path: root/cmds/buttonplugin
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 /cmds/buttonplugin
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 'cmds/buttonplugin')
-rw-r--r--cmds/buttonplugin/Makefile14
-rw-r--r--cmds/buttonplugin/log.go64
-rw-r--r--cmds/buttonplugin/main.go49
3 files changed, 127 insertions, 0 deletions
diff --git a/cmds/buttonplugin/Makefile b/cmds/buttonplugin/Makefile
new file mode 100644
index 0000000..cf60369
--- /dev/null
+++ b/cmds/buttonplugin/Makefile
@@ -0,0 +1,14 @@
+run: build
+ ./buttonplugin >/tmp/buttonplugin.log 2>&1
+
+build-release:
+ go get -v -u -x .
+ go build
+ ./buttonplugin
+
+build:
+ GO111MODULE="off" go get -v -x .
+ GO111MODULE="off" go build
+
+update:
+ GO111MODULE="off" go get -v -u -x .
diff --git a/cmds/buttonplugin/log.go b/cmds/buttonplugin/log.go
new file mode 100644
index 0000000..642ff7b
--- /dev/null
+++ b/cmds/buttonplugin/log.go
@@ -0,0 +1,64 @@
+// This creates a simple hello world window
+package main
+
+import (
+ "log"
+ "fmt"
+ "os"
+ "io"
+ "time"
+ "bufio"
+ arg "github.com/alexflint/go-arg"
+)
+
+
+var args struct {
+ Foo string
+ Bar bool
+ User string `arg:"env:USER"`
+ Demo bool `help:"run a demo"`
+}
+
+var f1 *os.File
+var f2 *os.File
+var err error
+
+func init() {
+ arg.MustParse(&args)
+ fmt.Println(args.Foo, args.Bar, args.User)
+
+ f1, err = os.OpenFile("/tmp/guilogfile", os.O_RDWR | os.O_CREATE | os.O_APPEND, 0666)
+ if err != nil {
+ log.Fatalf("error opening file: %v", err)
+ }
+ // hmm. is there a trick here or must this be in main()
+ // defer f.Close()
+
+ log.SetOutput(f1)
+ log.Println("This is a test log entry")
+}
+
+func captureSTDOUT() {
+ f2, _ = os.OpenFile("/tmp/my.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0664)
+ multiWriter := io.MultiWriter(os.Stderr, f2)
+ rd, wr, err := os.Pipe()
+ if err != nil {
+ os.Exit(1)
+ }
+
+ // overwrite os.Stdout
+ os.Stderr = wr
+
+ go func() {
+ scanner := bufio.NewScanner(rd)
+ for scanner.Scan() {
+ stdoutLine := scanner.Text()
+ multiWriter.Write([]byte(stdoutLine + "\n"))
+ }
+ }()
+
+ fmt.Println("foobar")
+
+ // hacky sleep to ensure the go routine can write before program exits
+ time.Sleep(time.Second)
+}
diff --git a/cmds/buttonplugin/main.go b/cmds/buttonplugin/main.go
new file mode 100644
index 0000000..cd4d770
--- /dev/null
+++ b/cmds/buttonplugin/main.go
@@ -0,0 +1,49 @@
+// This is a simple example
+package main
+
+import (
+ "log"
+ "strconv"
+ "git.wit.org/wit/gui"
+)
+
+func main() {
+ // this doesn't seem to work
+ captureSTDOUT()
+
+ gui.Main(buttonWindow)
+}
+
+var counter int = 10
+
+// This creates a window
+func buttonWindow() {
+ var w, g *gui.Node
+ gui.Config.Title = "Demo Plugin Window"
+ gui.Config.Width = 640
+ gui.Config.Height = 480
+
+ w = gui.NewWindow()
+ g = w.NewGroup("buttonGroup")
+
+ g.NewButton("hello", func () {
+ log.Println("world")
+ })
+
+ g.NewButton("RunGreet()", func () {
+ log.Println("world")
+ go gui.RunGreet()
+ })
+
+ g.NewButton("gui.LookupJcarrButton()", func () {
+ log.Println("gui.LookupJcarrButton()")
+ gui.LookupJcarrButton()
+ })
+
+ g.NewButton("new foobar 2", func () {
+ log.Println("new foobar 2. Adding button 'foobar 3'")
+ name := "foobar " + strconv.Itoa(counter)
+ counter += 1
+ g.NewButton(name, nil)
+ })
+}