summaryrefslogtreecommitdiff
path: root/cmds/gui-example/main.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2021-10-31 14:21:36 -0500
committerJeff Carr <[email protected]>2021-10-31 14:21:36 -0500
commit213c7d153b06d3e1211d1cdeae1e4f7833cb89f7 (patch)
tree53b489c9df4ea1784be0d626df1497b04183c9be /cmds/gui-example/main.go
parent36e2c6d2e3c266f32325985e98c3776755fdd511 (diff)
REFACTOR: refactor everything to gui.Node structv0.2
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'cmds/gui-example/main.go')
-rw-r--r--cmds/gui-example/main.go68
1 files changed, 68 insertions, 0 deletions
diff --git a/cmds/gui-example/main.go b/cmds/gui-example/main.go
new file mode 100644
index 0000000..8eae878
--- /dev/null
+++ b/cmds/gui-example/main.go
@@ -0,0 +1,68 @@
+package main
+
+import (
+ "log"
+ "os"
+ "time"
+
+ "git.wit.org/wit/gui"
+)
+
+// This initializes the first window
+//
+// Then starts a goroutine to demonstrate how to
+// inject things into the GUI
+func main() {
+ log.Println("Starting my Control Panel")
+
+ go gui.Main(initGUI)
+
+ watchGUI()
+}
+
+// This initializes the first window
+func initGUI() {
+ gui.Config.Title = "WIT GUI Window Demo 1"
+ gui.Config.Width = 640
+ gui.Config.Height = 480
+ gui.Config.Exit = myExit
+ node1 := gui.NewWindow()
+ addDemoTab(node1, "A Simple Tab Demo")
+
+ gui.Config.Title = "WIT GUI Window Demo 2"
+ gui.Config.Width = 640
+ gui.Config.Height = 240
+ gui.Config.Exit = myExit
+ node2 := gui.NewWindow()
+ node2.DemoAndlabsUiTab("A Simple andlabs/ui Tab Demo")
+}
+
+// This demonstrates how to properly interact with the GUI
+// You can not involke the GUI from external goroutines in most cases.
+func watchGUI() {
+ var i = 1
+ for {
+ log.Println("Waiting", i, "seconds")
+ i += 1
+ time.Sleep(1 * time.Second)
+ if i == 4 {
+ log.Println("Opening a Debug Window via the gui.Queue()")
+ gui.Config.Width = 800
+ gui.Config.Height = 300
+ gui.Config.Exit = myDebugExit
+ gui.Queue(gui.DebugWindow)
+ }
+ }
+}
+
+func myExit(n *gui.Node) {
+ log.Println()
+ log.Println("Entered myExit() on node.Name =", n.Name)
+ log.Println()
+ os.Exit(0)
+}
+
+func myDebugExit(n *gui.Node) {
+ log.Println("Entered myDebugExit() on node.Name =", n.Name)
+ log.Println("Don't actually os.Exit()")
+}