summaryrefslogtreecommitdiff
path: root/toolkit/nocui/stdin.go
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/nocui/stdin.go')
-rw-r--r--toolkit/nocui/stdin.go76
1 files changed, 76 insertions, 0 deletions
diff --git a/toolkit/nocui/stdin.go b/toolkit/nocui/stdin.go
new file mode 100644
index 0000000..ed71206
--- /dev/null
+++ b/toolkit/nocui/stdin.go
@@ -0,0 +1,76 @@
+package main
+
+import (
+ "os"
+ "fmt"
+ "bufio"
+ "strings"
+ "strconv"
+
+ "git.wit.org/wit/gui/toolkit"
+)
+
+func simpleStdin() {
+ scanner := bufio.NewScanner(os.Stdin)
+ for scanner.Scan() {
+ s := scanner.Text()
+ s = strings.TrimSuffix(s, "\n")
+ switch s {
+ case "l":
+ log(true, "list widgets")
+ rootNode.listWidgets()
+ case "b":
+ log(true, "show buttons")
+ rootNode.showButtons()
+ case "":
+ fmt.Println("")
+ fmt.Println("Enter:")
+ fmt.Println("'l': list all widgets")
+ fmt.Println("'b': for buttons")
+ fmt.Println("")
+ default:
+ i, _ := strconv.Atoi(s)
+ log(true, "got input:", i)
+ n := rootNode.findWidgetId(i)
+ if (n != nil) {
+ n.dumpWidget("found node")
+ n.doUserEvent()
+ }
+ }
+ }
+}
+
+func (n *node) showButtons() {
+ if n.WidgetType == toolkit.Button {
+ n.dumpWidget("Button:")
+ }
+
+ for _, child := range n.children {
+ child.showButtons()
+ }
+}
+
+func (n *node) dumpWidget(pad string) {
+ log(true, "node:", pad, n.WidgetId, ",", n.WidgetType, ",", n.Name)
+}
+
+var depth int = 0
+
+func (n *node) listWidgets() {
+ if (n == nil) {
+ return
+ }
+
+ var pad string
+ for i := 0; i < depth; i++ {
+ pad = pad + " "
+ }
+ n.dumpWidget(pad)
+
+ for _, child := range n.children {
+ depth += 1
+ child.listWidgets()
+ depth -= 1
+ }
+ return
+}