package main import ( "bufio" "fmt" "os" "runtime/debug" "strconv" "strings" "github.com/faiface/pixel/pixelgl" "github.com/gookit/config" "go.wit.com/log" "go.wit.com/toolkits/tree" "go.wit.com/widget" ) func showOptions() { fmt.Println("") fmt.Println("Enter:") fmt.Println("") fmt.Println("This doesn't work because it's stalled in the toolkit init()") fmt.Println("opengl isn't happy if you try to run it as a goroutine and exits") fmt.Println("maybe there is someone that actually knows what the are doing that can fix that") fmt.Println("") fmt.Println("'l': list all widgets") fmt.Println("'b': for buttons") fmt.Println("'g': try opengl") fmt.Println("'a': load andlabs plugin") fmt.Println("'d': enable debugging") fmt.Println("'p': panic plugin") fmt.Println("'q': close plugin") fmt.Println("") fmt.Println("Enter the number of the widget to click:") fmt.Print("Option: ") fmt.Fprintf(os.Stderr, "Option:\n") fmt.Fprintf(os.Stderr, "Option: ") } func simpleStdin() { defer func() { if r := recover(); r != nil { log.Warn("nocui YAHOOOO Recovered in simpleStdin()", r) log.Println("Recovered from panic:", r) log.Println("Stack trace:") debug.PrintStack() me.myTree.SendToolkitPanic() os.Exit(0) return } }() scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { if me.exit { return } s := scanner.Text() s = strings.TrimSuffix(s, "\n") switch s { case "l": log.Log(NOW, "list widgets") tree.ListWidgets() case "b": log.Log(NOW, "show buttons") tree.ShowButtons() case "g": config.Set("width", 1024) config.Set("height", 768) config.Set("glDrift", 0.01) config.Set("filename", "seascape.glsl") pixelgl.Run(run) case "a": me.myTree.SendToolkitLoad("andlabs") case "d": me.myTree.SendEnableDebugger() case "p": debug.PrintStack() me.myTree.SendToolkitPanic() os.Exit(0) return case "q": return case "": showOptions() default: i, _ := strconv.Atoi(s) log.Log(NOW, "got input:", i) n := tree.FindWidgetId(i) if n != nil { n.DumpWidget("found node") for i, s := range n.State.Strings { log.Warn("n.State.Strings =", i, s) } switch n.WidgetType { case widget.Root: log.Warn("this is the root widget") case widget.Dropdown: log.Warn("print out dropdown values here") case widget.Button: me.myTree.SendUserEvent(n) case widget.Checkbox: me.myTree.SendUserEvent(n) default: log.Warn("you haven't defined an event for", n.WidgetType) } } } showOptions() } }