diff --git a/examples/buttons/Makefile b/examples/buttons/Makefile index 74b7728..7de8165 100644 --- a/examples/buttons/Makefile +++ b/examples/buttons/Makefile @@ -7,7 +7,10 @@ # run: build - ./buttons --gui andlabs + ./buttons + +debug: + ./buttons --gui andlabs --gui-debug --log-debug build-release: go get -v -u -x . diff --git a/examples/buttons/log.go b/examples/buttons/log.go deleted file mode 100644 index f8279af..0000000 --- a/examples/buttons/log.go +++ /dev/null @@ -1,98 +0,0 @@ -// This creates a simple hello world window -package main - -import ( - "fmt" - arg "github.com/alexflint/go-arg" - "go.wit.com/gui" - log "go.wit.com/gui/log" -) - - -var args struct { - Foo string - Bar bool - User string `arg:"env:USER"` - Demo bool `help:"run a demo"` - gui.GuiArgs - log.LogArgs -} - -/* -var f1 *os.File -var f2 *os.File -var err error -*/ - -/* from gocron: - -// DefaultLogger is used by Cron if none is specified. -var DefaultLogger Logger = PrintfLogger(log.New(os.Stdout, "cron: ", log.LstdFlags)) - -// DiscardLogger can be used by callers to discard all log messages. -var DiscardLogger Logger = PrintfLogger(log.New(ioutil.Discard, "", 0)) - -// Logger is the interface used in this package for logging, so that any backend -// can be plugged in. It is a subset of the github.com/go-logr/logr interface. -type Logger interface { - // Info logs routine messages about cron's operation. - Info(msg string, keysAndValues ...interface{}) - // Error logs an error condition. - Error(err error, msg string, keysAndValues ...interface{}) -} - -*/ - -func init() { - arg.MustParse(&args) - fmt.Println(args.Foo, args.Bar, args.User) - - if (args.Gui != "") { - gui.GuiArg.Gui = args.Gui - } - log.Log(true, "INIT() args.GuiArg.Gui =", gui.GuiArg.Gui) - -/* - // from: https://github.com/robfig/cron/blob/master/logger.go - log.Println() - log.Println("STDOUT is now at /tmp/guilogfile") - log.Println("STDOUT is now at /tmp/guilogfile") - log.Println() - f1, err = os.OpenFile(outfile, 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/examples/buttons/main.go b/examples/buttons/main.go index e76aaac..87841a7 100644 --- a/examples/buttons/main.go +++ b/examples/buttons/main.go @@ -2,20 +2,23 @@ package main import ( - "fmt" "log" "strconv" "go.wit.com/gui" + arg "github.com/alexflint/go-arg" ) var title string = "Demo Plugin Window" -var outfile string = "/tmp/guilogfile" var myGui *gui.Node var buttonCounter int = 5 var gridW int = 5 var gridH int = 3 +func init() { + arg.MustParse() +} + func main() { // This will turn on all debugging // gui.SetDebug(true) @@ -35,35 +38,21 @@ func buttonWindow() { log.Println("buttonWindow() START") w = myGui.NewWindow(title).SetText("Nueva Ventana de Botones") - t = w.NewTab("buttonTab is this thing") - g = t.NewGroup("buttonGroup") - g1 := t.NewGroup("buttonGroup 2") - more = g1.NewGroup("more") + t = w.NewTab("buttonTab is this thing").Pad() + g = t.NewGroup("buttonGroup").Pad() + g1 := t.NewGroup("buttonGroup 2").Pad() + more = g1.NewGroup("more").Pad() g1.NewButton("hello2", func () { log.Println("world2") }) - more2 = g1.NewGrid("gridnuts", gridW, gridH) + more2 = g1.NewGrid("gridnuts", gridW, gridH).Pad() more2.NewLabel("more2") - g.NewButton("this app is useful for plugin debuggin", func () { - }) - g.NewLabel("STDOUT is set to: " + outfile) - g.NewButton("hello", func () { log.Println("world") }) - g.NewButton("Load 'gocui'", func () { - // this set the xterm and mate-terminal window title. maybe works generally? - fmt.Println("\033]0;" + title + "blah \007") - myGui.LoadToolkit("gocui") - }) - - g.NewButton("Load 'andlabs'", func () { - myGui.LoadToolkit("andlabs") - }) - g.NewButton("NewButton(more)", func () { name := "foobar " + strconv.Itoa(buttonCounter) log.Println("NewButton(more) Adding button", name) @@ -95,10 +84,6 @@ func buttonWindow() { name := "neat " + strconv.Itoa(buttonCounter) log.Println("NewGroup() Adding button", name) buttonCounter += 1 - more.NewGroup(name) - }) - - g.NewButton("gui.DebugWindow()", func () { - gui.DebugWindow() + more.NewGroup(name).Pad() }) }