diff options
| author | Jeff Carr <[email protected]> | 2022-11-06 19:57:20 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2022-11-06 19:57:20 -0600 |
| commit | b410d0fd083ee89eed410cda2123a22cddcd3f44 (patch) | |
| tree | 3f1a637003629a3ec7d383b5db6beb0df9e5a97c /cmds | |
| parent | e55fb6675d692e3f44fa67b02b12661e476bd028 (diff) | |
Implement a early AddButton() via a golang pluginv0.4.5
pass a name to gocui.AddButton()
cleaner plugin usage
add the start to golang plugin
plugin stuff in a single file
added a button correctly
andlabs/ui added a button via plugin to gocli
hot diggity!
trying to invoke a gocli plugin function from the andlabs ui
load the plugin
hide more debugging output
turn off all output
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'cmds')
| -rw-r--r-- | cmds/buttonAsPlugin/Makefile | 2 | ||||
| -rw-r--r-- | cmds/buttonAsPlugin/log.go | 64 | ||||
| -rw-r--r-- | cmds/buttonAsPlugin/main.go | 31 |
3 files changed, 91 insertions, 6 deletions
diff --git a/cmds/buttonAsPlugin/Makefile b/cmds/buttonAsPlugin/Makefile index 431d956..d9a67bf 100644 --- a/cmds/buttonAsPlugin/Makefile +++ b/cmds/buttonAsPlugin/Makefile @@ -1,5 +1,5 @@ run: build - ./buttonAsPlugin + ./buttonAsPlugin >/tmp/buttonAsPlugin.log 2>&1 build-release: go get -v -u -x . diff --git a/cmds/buttonAsPlugin/log.go b/cmds/buttonAsPlugin/log.go new file mode 100644 index 0000000..642ff7b --- /dev/null +++ b/cmds/buttonAsPlugin/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/buttonAsPlugin/main.go b/cmds/buttonAsPlugin/main.go index 1c2eeaf..e26c75e 100644 --- a/cmds/buttonAsPlugin/main.go +++ b/cmds/buttonAsPlugin/main.go @@ -7,6 +7,12 @@ import ( ) func main() { + // go loadPlugin(plugHello, "../../toolkit/hello.so") + + // this doesn't seem to work + captureSTDOUT() + + // go loadPlugin("../../toolkit/gocli.so") gui.Main(buttonWindow) } @@ -17,9 +23,6 @@ func buttonWindow() { gui.Config.Width = 640 gui.Config.Height = 480 -// gui.Config.Exit = gui.StandardClose -// gui.SetDebug(true) - w = gui.NewWindow() g = w.NewGroup("buttonGroup") @@ -27,7 +30,25 @@ func buttonWindow() { log.Println("world") }) - g.NewButton("foo", func () { - log.Println("bar") + /* + g.NewButton("LoadPlugin()", func () { + log.Println("world") + gui.LoadPlugin("../../toolkit/gocli.so") + }) + */ + + g.NewButton("RunGreet()", func () { + log.Println("world") + go gui.RunGreet() + }) + + g.NewButton("gui.LookupJcarrButton()", func () { + log.Println("gui.LookupJcarrButton()") + gui.LookupJcarrButton() + }) + + g.NewButton("gui.GocuiAddButton()", func () { + log.Println("gui.GocuiAddButton()") + gui.GocuiAddButton("new foobar") }) } |
