summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go70
1 files changed, 70 insertions, 0 deletions
diff --git a/main.go b/main.go
new file mode 100644
index 0000000..c543f6e
--- /dev/null
+++ b/main.go
@@ -0,0 +1,70 @@
+package main
+
+import (
+ "runtime/debug"
+ "sync"
+
+ "go.wit.com/lib/widget"
+ "go.wit.com/log"
+ "go.wit.com/toolkits/tree"
+
+ "go.wit.com/dev/andlabs/ui"
+ // the _ means we only need this for the init()
+ _ "go.wit.com/dev/andlabs/ui/winmanifest"
+)
+
+var uiMainUndef bool = true
+var uiMain sync.Once
+var muAction sync.Mutex
+
+func queueMain(currentA widget.Action) {
+ defer func() {
+ if r := recover(); r != nil {
+ log.Warn("YAHOOOO Recovered in queueMain() application:", r)
+ log.Println("Recovered from panic:", r)
+ log.Println("Stack trace:")
+ debug.PrintStack()
+ me.myTree.DoToolkitPanic()
+ }
+ }()
+ ui.QueueMain(func() {
+ rawAction(&currentA)
+ })
+}
+
+func guiMain() {
+ defer func() {
+ if r := recover(); r != nil {
+ log.Warn("YAHOOOO Recovered in guiMain application:", r)
+ log.Println("Recovered from panic:", r)
+ log.Println("Stack trace:")
+ debug.PrintStack()
+ me.myTree.DoToolkitPanic()
+ }
+ }()
+ ui.Main(func() {
+ demoUI()
+ })
+}
+
+func Init() {
+ log.Warn("Init() TODO: move init() to here")
+}
+
+// This is important. This sets the defaults for the gui. Without this, there isn't correct padding, etc
+func init() {
+ log.Log(INFO, "Init() START")
+ log.Log(INFO, "Init()")
+ // Can you pass values to a plugin init() ? Otherwise, there is no way to safely print
+ // log.Log(INFO, "init() Setting defaultBehavior = true")
+ setDefaultBehavior(true)
+
+ me.myTree = tree.New()
+ me.myTree.PluginName = "andlabs"
+ me.myTree.ActionFromChannel = queueMain
+
+ // TODO: this is messed up. run ui.Main() from the first add? Initialize it with an empty thing first?
+ // fake out the OS toolkit by making a fake window. This is probably needed for macos & windows
+ // actually, this probably breaks the macos build
+ go guiMain()
+}