summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README-goreadme.md24
-rw-r--r--debug.go15
-rw-r--r--debugWidget.go8
-rw-r--r--debugWindow.go2
-rw-r--r--main.go14
-rw-r--r--node.go22
-rw-r--r--structs.go32
-rw-r--r--window.go8
8 files changed, 38 insertions, 87 deletions
diff --git a/README-goreadme.md b/README-goreadme.md
index e99ca1b..3e458b5 100644
--- a/README-goreadme.md
+++ b/README-goreadme.md
@@ -107,6 +107,12 @@ external things which might be useful
* [GO Style Guide]
```
+## Variables
+
+```golang
+var Config guiConfig
+```
+
## Functions
### func [DebugWidgetWindow](/debugWidget.go#L52)
@@ -123,7 +129,7 @@ Creates a window helpful for debugging this package
`func ExampleCatcher(f func())`
-### func [Indent](/debug.go#L126)
+### func [Indent](/debug.go#L127)
`func Indent(b bool, a ...interface{})`
@@ -139,7 +145,7 @@ Creates a window helpful for debugging this package
`func ShowDebugValues()`
-### func [StandardExit](/main.go#L231)
+### func [StandardExit](/main.go#L219)
`func StandardExit()`
@@ -163,24 +169,14 @@ This goroutine can be used like a watchdog timer
This struct can be used with the go-arg package
-### type [GuiConfig](/structs.go#L33)
-
-`type GuiConfig struct { ... }`
-
-#### Variables
-
-```golang
-var Config GuiConfig
-```
-
-### type [Node](/structs.go#L63)
+### type [Node](/structs.go#L55)
`type Node struct { ... }`
The Node is a binary tree. This is how all GUI elements are stored
simply the name and the size of whatever GUI element exists
-#### func [New](/main.go#L202)
+#### func [New](/main.go#L190)
`func New() *Node`
diff --git a/debug.go b/debug.go
index d25a656..6d05ab8 100644
--- a/debug.go
+++ b/debug.go
@@ -96,16 +96,12 @@ func ShowDebugValues() {
SetFlag("Show", true)
}
-func (n *Node) Dump(b bool) {
+func (n *Node) Dump() {
+ b := true
// log("Dump() dump =", b)
- if ! b {
- return
- }
Indent(b, "NODE DUMP START")
Indent(b, "id = ", n.id)
Indent(b, "Name = ", n.Name)
- Indent(b, "Width = ", n.Width)
- Indent(b, "Height = ", n.Height)
Indent(b, "(X,Y) = ", n.X, n.Y)
Indent(b, "Next (X,Y) = ", n.NextX, n.NextY)
@@ -121,6 +117,11 @@ func (n *Node) Dump(b bool) {
Indent(b, "Custom = ", n.Custom)
}
Indent(b, "NODE DUMP END")
+
+ var a toolkit.Action
+ a.ActionType = toolkit.Dump
+ a.WidgetId = n.id
+ newaction(&a, activeWidget, nil)
}
func Indent(b bool, a ...interface{}) {
@@ -154,7 +155,6 @@ func (n *Node) ListChildren(dump bool) {
}
n.dumpWidget(dump)
- // n.Dump(dump)
if len(n.children) == 0 {
if (n.parent == nil) {
return
@@ -181,7 +181,6 @@ func (n *Node) ListChildren(dump bool) {
// can all binary tree changes to Node.parent & Node.child be forced into a singular goroutine?
panic("something is wrong with the wit golang gui logic and the binary tree is broken. child has no parent")
}
- child.Dump(debugDump)
if (child.children == nil) {
log(debugNode, "\t\t", child.id, "has no children")
} else {
diff --git a/debugWidget.go b/debugWidget.go
index faa2ff9..6345625 100644
--- a/debugWidget.go
+++ b/debugWidget.go
@@ -105,11 +105,7 @@ func DebugWidgetWindow(w *Node) {
activeWidget.Hide()
})
g.NewButton("Dump()", func () {
- activeWidget.Dump(true)
-
- var a toolkit.Action
- a.ActionType = toolkit.Dump
- newaction(&a, activeWidget, nil)
+ activeWidget.Dump()
})
g = bugWidget.NewGroup("add things")
@@ -266,7 +262,7 @@ func (n *Node) debugAddWidgetButton() {
log("activeWidget.NextX =", activeWidget.NextX)
log("activeWidget.NextY =", activeWidget.NextY)
log(debugNow, "Add() size (X,Y)", activeWidget.X, activeWidget.Y, "put next thing at (X,Y) =", activeWidget.NextX, activeWidget.NextY)
- activeWidget.Dump(true)
+ activeWidget.Dump()
// activeWidget.X = newX
// activeWidget.Y = newY
diff --git a/debugWindow.go b/debugWindow.go
index 0c27a3f..febe961 100644
--- a/debugWindow.go
+++ b/debugWindow.go
@@ -121,7 +121,7 @@ func dropdownWindow(p *Node) {
// var last = ""
for _, child := range Config.rootNode.children {
- log(debugGui, "\t\t", child.id, child.Width, child.Height, child.Name)
+ log(logInfo, "\t\t", child.id, child.Name)
dd.AddDropdownName(child.Name)
// last = child.Name
mapWindows[child.Name] = child
diff --git a/main.go b/main.go
index 5d05974..877f4aa 100644
--- a/main.go
+++ b/main.go
@@ -14,23 +14,11 @@ import (
const Xaxis = 0 // stack things horizontally
const Yaxis = 1 // stack things vertically
-/*
- // TODO: 2023/03/03 rethink how to get a plugin or figure out how
- // golang packages can include a binary. Pull from /usr/go/go-gui/ ?
- // may this plugin work when all other plugins fail
-
- // if this is in the plugin, the packages can't work with go.mod builds
- # don't do this in the plugin // go:embed /usr/lib/go-gui/toolkit/gocui.so
- # don't do this in the plugin var res embed.FS
-*/
-
func init() {
log("init() has been run")
Config.counter = 0
Config.prefix = "wit"
- Config.Width = 640
- Config.Height = 480
// Populates the top of the binary tree
Config.rootNode = addNode("guiBinaryTree")
@@ -74,7 +62,7 @@ func watchCallback() {
}
// this maybe a good idea?
// TODO: Throttle user events somehow
- sleep(.1)
+ sleep(.01)
}
}
}
diff --git a/node.go b/node.go
index 85c7fb9..0cfec19 100644
--- a/node.go
+++ b/node.go
@@ -12,7 +12,7 @@ func (n *Node) newNode(title string, t toolkit.WidgetType, custom func()) *Node
newN.WidgetType = t
newN.Custom = custom
- n.Append(newN)
+ n.children = append(n.children, newN)
newN.parent = n
return newN
}
@@ -35,30 +35,14 @@ func (n *Node) Parent() *Node {
return n.parent
}
-/*
-func (n *Node) Window() *Node {
- return n.parent
-}
-*/
-
-func (n *Node) Append(child *Node) {
- n.children = append(n.children, child)
- if (debugNode) {
- log(debugNode, "child node:")
- child.Dump(debugDump)
- log(debugNode, "parent node:")
- n.Dump(debugDump)
- }
-}
-
func (n *Node) Delete(d *Node) {
for i, child := range n.children {
- log(debugNode, "\t", i, child.id, child.Width, child.Height, child.Name)
+ log(debugNode, "\t", i, child.id, child.Name)
if (child.id == d.id) {
log(debugNode, "\t\t Deleting this")
n.children = append(n.children[:i], n.children[i+1:]...)
return
}
}
- log(debugError, "did not find node to delete", d.id, d.Width, d.Height, d.Name)
+ log(debugError, "did not find node to delete", d.id, d.Name)
}
diff --git a/structs.go b/structs.go
index 491a99d..89ca66a 100644
--- a/structs.go
+++ b/structs.go
@@ -21,7 +21,7 @@ import (
// For example, a "Mouse Control Panel" not the GIMP or blender.
//
-var Config GuiConfig
+var Config guiConfig
// This struct can be used with the go-arg package
type GuiArgs struct {
@@ -30,32 +30,24 @@ type GuiArgs struct {
GuiVerbose bool `arg:"--gui-verbose" help:"enable all logging"`
}
-type GuiConfig struct {
+type guiConfig struct {
// This is the master node. The Binary Tree starts here
rootNode *Node
// A node off of rootNode for passing debugging flags
flag *Node
- // These are shortcuts to pass default values to make a new window
- Title string
- Width int
- Height int
- Exit func(*Node)
-
- // hacks
- depth int
- counter int // used to make unique ID's
- prefix string
-
- ActionCh1 chan int
- ActionCh2 chan int
+ counter int // used to make unique WidgetId's
// sets the chan for the plugins to call back too
guiChan chan toolkit.Action
// option to pass in compiled plugins as embedded files
resFS embed.FS
+
+ // used to beautify logging to Stdout
+ depth int
+ prefix string
}
// The Node is a binary tree. This is how all GUI elements are stored
@@ -64,18 +56,14 @@ type Node struct {
id int
initOnce sync.Once
- // widget toolkit.Widget
WidgetType toolkit.WidgetType
-// Title string // what is visable to the user
-// Desc string // a name useful for programming
-
Text string // what is visable to the user
Name string // a name useful for programming
- // used for Windows
- Width int
- Height int
+ // used for Windows in toolkits measured in pixels
+ width int
+ height int
// used for anything that needs a range
X int
diff --git a/window.go b/window.go
index 7189fcc..db254d4 100644
--- a/window.go
+++ b/window.go
@@ -10,14 +10,14 @@ func (n *Node) NewWindow(title string) *Node {
var newNode *Node
// Windows are created off of the master node of the Binary Tree
- newNode = n.newNode(Config.Title, toolkit.Window, StandardExit)
+ newNode = n.newNode(title, toolkit.Window, StandardExit)
- log(logInfo, "NewWindow()", Config.Title)
+ log(logInfo, "NewWindow()", title)
var a toolkit.Action
a.ActionType = toolkit.Add
- a.X = Config.Width
- a.Y = Config.Height
+ a.X = n.X
+ a.Y = n.Y
a.Name = title
a.Text = title
newaction(&a, newNode, n)