summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore18
-rw-r--r--Makefile57
-rw-r--r--README-goreadme.md200
-rw-r--r--README.md141
-rw-r--r--cmds/debug/Makefile6
-rw-r--r--cmds/debug/helloworld.go20
-rw-r--r--cmds/debug/main.go54
-rw-r--r--cmds/helloworld/main.go25
-rw-r--r--cmds/plugin-consoleonly/Makefile14
-rw-r--r--cmds/plugin-consoleonly/args.go31
-rw-r--r--cmds/plugin-consoleonly/main.go33
-rw-r--r--cmds/textbox/Makefile14
-rw-r--r--cmds/textbox/main.go96
-rw-r--r--common.go2
-rw-r--r--debug.go2
-rw-r--r--doc.go40
-rw-r--r--examples/buttons/Makefile (renamed from cmds/buttonplugin/Makefile)4
-rwxr-xr-xexamples/buttons/buttonpluginbin0 -> 6062120 bytes
-rwxr-xr-xexamples/buttons/buttonsbin0 -> 6062120 bytes
-rw-r--r--examples/buttons/log.go (renamed from cmds/buttonplugin/log.go)0
-rw-r--r--examples/buttons/main.go (renamed from cmds/buttonplugin/main.go)0
-rw-r--r--examples/cloudflare/Makefile (renamed from cmds/cloudflare/Makefile)0
-rw-r--r--examples/cloudflare/argv.go (renamed from cmds/cloudflare/argv.go)0
-rw-r--r--examples/cloudflare/dns.go (renamed from cmds/cloudflare/dns.go)107
-rw-r--r--examples/cloudflare/main.go (renamed from cmds/cloudflare/main.go)40
-rw-r--r--examples/console-ui-helloworld/Makefile (renamed from cmds/console-ui-helloworld/Makefile)0
-rw-r--r--examples/console-ui-helloworld/keybindings.go (renamed from cmds/console-ui-helloworld/keybindings.go)0
-rw-r--r--examples/console-ui-helloworld/log.go (renamed from cmds/console-ui-helloworld/log.go)0
-rw-r--r--examples/console-ui-helloworld/main.go (renamed from cmds/console-ui-helloworld/main.go)0
-rw-r--r--examples/console-ui-helloworld/newJ.go (renamed from cmds/console-ui-helloworld/newJ.go)0
-rw-r--r--examples/console-ui-helloworld/views.go (renamed from cmds/console-ui-helloworld/views.go)0
-rw-r--r--examples/example_test.go (renamed from example_test.go)0
-rw-r--r--examples/helloworld/Makefile (renamed from cmds/helloworld/Makefile)0
-rw-r--r--examples/helloworld/main.go23
-rw-r--r--go.mod11
-rw-r--r--go.sum17
-rw-r--r--plugin.go15
37 files changed, 240 insertions, 730 deletions
diff --git a/.gitignore b/.gitignore
index 03137f9..135bf8c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,14 +3,18 @@
# ignore compiled plugins
*.so
-cmds/buttonplugin/buttonplugin
-cmds/console-ui-helloworld/console-ui-helloworld
-cmds/debug/debug
-cmds/helloworld/helloworld
-cmds/textbox/textbox
-cmds/cloudflare/cloudflare
-cmds/*/helloconsole
+examples/buttonplugin/buttonplugin
+examples/console-ui-helloworld/console-ui-helloworld
+examples/debug/debug
+examples/helloworld/helloworld
+examples/textbox/textbox
+examples/cloudflare/cloudflare
+examples/*/helloconsole
# temporary files when building debian packages
/*.deb
/files
+/
+
+# ignore the generated readme
+/README-goreadme.md
diff --git a/Makefile b/Makefile
index 8e73c22..d0e7cfc 100644
--- a/Makefile
+++ b/Makefile
@@ -1,14 +1,21 @@
-.PHONY: README.md log
+.PHONY: README.md log examples
all: README.md
- reset
+ # reset
@echo
@echo "make examples # will run all the Example demos and commands"
@echo "make update # full git update of all the dependencies"
@echo
+ @echo This Requires working IPv6
+ @echo
+ @sleep 1
+ifeq (,$(wildcard go.mod))
+ go mod init gui
+ go mod tidy
+endif
make clean
make plugins
- make cmds-buttonplugin
+ make examples-buttons
build-dep:
apt install -f libgtk-3-dev
@@ -25,30 +32,30 @@ deb:
examples: \
all \
- cmds-helloworld \
- cmds-buttonplugin \
- cmds-console-ui-helloworld \
- cmds-textbox \
- cmds-debug
+ examples-helloworld \
+ examples-buttons \
+ examples-console-ui-helloworld \
+ examples-textbox \
+ examples-debug
-cmds-buttonplugin:
- make -C cmds/buttonplugin
+examples-buttons:
+ make -C examples/buttons
-cmds-console-ui-helloworld:
- make -C cmds/console-ui-helloworld
+examples-console-ui-helloworld:
+ make -C examples/console-ui-helloworld
# this is the most basic one. This syntax should always work
-cmds-helloworld:
- make -C cmds/helloworld
+examples-helloworld:
+ make -C examples/helloworld
-cmds-debug:
- -make -C cmds/debug
+examples-debug:
+ -make -C examples/debug
-cmds-textbox:
- make -C cmds/textbox
+examples-textbox:
+ make -C examples/textbox
-cmds-helloconsole:
- make -C cmds/plugin-consoleonly
+examples-helloconsole:
+ make -C examples/plugin-consoleonly
# sync repo to the github backup
# git remote add github [email protected]:witorg/gui.git
@@ -65,10 +72,10 @@ github:
@echo
doc:
- GO111MODULE="off" godoc -v
+ godoc -v
goget:
- GO111MODULE="off" go get -v -t -u
+ go get -v -t -u
make -C toolkit/gocui goget
make -C toolkit/andlabs goget
@@ -83,11 +90,11 @@ clean:
plugins: plugins-gocui plugins-andlabs
plugins-gocui:
- GO111MODULE="off" go build -C toolkit/gocui -v -buildmode=plugin -o ../gocui.so
- GO111MODULE="off" go build -C toolkit/nocui -v -buildmode=plugin -o ../nocui.so
+ go build -C toolkit/gocui -v -buildmode=plugin -o ../gocui.so
+ go build -C toolkit/nocui -v -buildmode=plugin -o ../nocui.so
plugins-andlabs:
- GO111MODULE="off" go build -C toolkit/andlabs -v -buildmode=plugin -o ../andlabs.so
+ go build -C toolkit/andlabs -v -buildmode=plugin -o ../andlabs.so
objdump:
objdump -t toolkit/andlabs.so |less
diff --git a/README-goreadme.md b/README-goreadme.md
deleted file mode 100644
index 454cfff..0000000
--- a/README-goreadme.md
+++ /dev/null
@@ -1,200 +0,0 @@
-# gui
-
-Package gui implements a abstraction layer for Go visual elements.
-
-Definitions:
-
-```go
-* Toolkit: the underlying GUI library (MacOS gui, Windows gui, gtk, qt, etc)
-* Node: A binary tree of all the underlying widgets
-```
-
-Principles:
-
-```go
-* Make code using this package simple to use
-* Hide complexity internally here
-* Isolate the GUI toolkit
-* Widget names should try to match [Wikipedia Graphical widget]
-* When in doubt, search upward in the binary tree
-* It's ok to guess. Try to do something sensible.
-```
-
-Quick Start
-
-```go
-// This creates a simple hello world window
-package main
-
-import (
- "log"
- "git.wit.org/wit/gui"
-)
-
-var window *gui.Node // This is the beginning of the binary tree of widgets
-
-// go will sit here until the window exits
-func main() {
- gui.Init()
- gui.Main(helloworld)
-}
-
-// This initializes the first window and 2 tabs
-func helloworld() {
- gui.Config.Title = "Hello World golang wit/gui Window"
- gui.Config.Width = 640
- gui.Config.Height = 480
-
- window := gui.NewWindow()
- addTab(window, "A Simple Tab Demo")
- addTab(window, "A Second Tab")
-}
-
-func addTab(w *gui.Node, title string) {
- tab := w.NewTab(title)
-
- group := tab.NewGroup("foo bar")
- group.NewButton("hello", func() {
- log.Println("world")
- })
-}
-```
-
-## Debian Build
-
-This worked on debian sid on 2022/10/20
-I didn't record the dependances needed
-
-```go
-GO111MODULE="off" go get -v -t -u git.wit.org/wit/gui
-cd ~/go/src/git.wit.org/wit/gui/cmds/helloworld/
-GO111MODULE="off" go build -v -x
-[./helloworld](./helloworld)
-```
-
-Toolkits
-
-```go
-* andlabs - [https://github.com/andlabs/ui](https://github.com/andlabs/ui)
-* gocui - [https://github.com/awesome-gocui/gocui](https://github.com/awesome-gocui/gocui)
-```
-
-The next step is to allow this to work against go-gtk and go-qt.
-
-TODO: Add Fyne, WASM, native macos & windows, android and
-hopefully also things like libSDL, faiface/pixel, slint
-
-## Bugs
-
-"The author's idea of friendly may differ to that of many other people."
-
--- quote from the minimalistic window manager 'evilwm'
-
-## References
-
-Useful links and other
-external things which might be useful
-
-[Wikipedia Graphical widget]: [https://en.wikipedia.org/wiki/Graphical_widget](https://en.wikipedia.org/wiki/Graphical_widget)
-[Github mirror]: [https://github.com/witorg/gui](https://github.com/witorg/gui)
-[Federated git pull]: [https://github.com/forgefed/forgefed](https://github.com/forgefed/forgefed)
-[GO Style Guide]: [https://google.github.io/styleguide/go/index](https://google.github.io/styleguide/go/index)
-
-```go
-* [Wikipedia Graphical widget]
-* [Github mirror]
-* [Federated git pull]
-* [GO Style Guide]
-```
-
-## Functions
-
-### func [DebugWidgetWindow](/debugWidget.go#L52)
-
-`func DebugWidgetWindow(w *Node)`
-
-### func [DebugWindow](/debugWindow.go#L21)
-
-`func DebugWindow()`
-
-Creates a window helpful for debugging this package
-
-### func [ExampleCatcher](/chan.go#L37)
-
-`func ExampleCatcher(f func())`
-
-### func [Indent](/debug.go#L124)
-
-`func Indent(b bool, a ...interface{})`
-
-### func [SetDebug](/debug.go#L28)
-
-`func SetDebug(s bool)`
-
-### func [SetFlag](/debug.go#L50)
-
-`func SetFlag(s string, b bool)`
-
-### func [ShowDebugValues](/debug.go#L82)
-
-`func ShowDebugValues()`
-
-### func [StandardExit](/main.go#L153)
-
-`func StandardExit()`
-
-The window is destroyed and the application exits
-TODO: properly exit the plugin since Quit() doesn't do it
-
-### func [Watchdog](/watchdog.go#L16)
-
-`func Watchdog()`
-
-This program sits here.
-If you exit here, the whole thing will os.Exit()
-TODO: use Ticker
-
-This goroutine can be used like a watchdog timer
-
-## Types
-
-### type [GuiArgs](/structs.go#L29)
-
-`type GuiArgs struct { ... }`
-
-This struct can be used with the go-arg package
-
-#### Variables
-
-```golang
-var GuiArg GuiArgs
-```
-
-### type [Node](/structs.go#L59)
-
-`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#L120)
-
-`func New() *Node`
-
-There should only be one of these per application
-This is due to restrictions by being cross platform
-some toolkit's on some operating systems don't support more than one
-Keep things simple. Do the default expected thing whenever possible
-
-### type [Symbol](/plugin.go#L17)
-
-`type Symbol any`
-
-## Sub Packages
-
-* [log](./log)
-
-* [toolkit](./toolkit)
-
----
-Readme created from Go doc with [goreadme](https://github.com/posener/goreadme)
diff --git a/README.md b/README.md
index 3ab8d30..775be32 100644
--- a/README.md
+++ b/README.md
@@ -4,19 +4,33 @@ Package gui implements a abstraction layer for Go visual elements.
Definitions:
+```go
* Toolkit: the underlying GUI library (MacOS gui, Windows gui, gtk, qt, etc)
* Node: A binary tree of all the underlying widgets
+```
Principles:
+```go
* Make code using this package simple to use
* Hide complexity internally here
* Isolate the GUI toolkit
* Widget names should try to match [Wikipedia Graphical widget]
* When in doubt, search upward in the binary tree
* It's ok to guess. Try to do something sensible.
+```
+
+## Debian Build
+
+This worked on debian sid (mate-desktop) on 2023/12/03
+I didn't record the dependances needed (gtk-dev)
+
+```go
+export GO111MODULE="off"
+make
+```
-Quick Start
+Hello World Example
```go
// This creates a simple hello world window
@@ -56,22 +70,12 @@ func addTab(w *gui.Node, title string) {
}
```
-## Debian Build
-
-This worked on debian sid on 2022/10/20
-I didn't record the dependances needed
+External Toolkits
```go
-GO111MODULE="off" go get -v -t -u git.wit.org/wit/gui
-cd ~/go/src/git.wit.org/wit/gui/cmds/helloworld/
-GO111MODULE="off" go build -v -x
-[./helloworld](./helloworld)
-```
-
-Toolkits
-
* andlabs - [https://github.com/andlabs/ui](https://github.com/andlabs/ui)
* gocui - [https://github.com/awesome-gocui/gocui](https://github.com/awesome-gocui/gocui)
+```
The next step is to allow this to work against go-gtk and go-qt.
@@ -89,75 +93,56 @@ hopefully also things like libSDL, faiface/pixel, slint
Useful links and other
external things which might be useful
-* [Wikipedia Graphical widget](https://en.wikipedia.org/wiki/Graphical_widget)
-* [GO Style Guide](https://google.github.io/styleguide/go/index) Code this way
-* [MS Windows Application Library Kit](https://github.com/lxn/walk)
-* [Federated git pull](https://github.com/forgefed/forgefed) Hopefully this will work for me with gitea
-* [Github mirror](https://github.com/wit-go/gui) This repo on mirror. Hopefully I won't have to use this.
-* [WIT GO projects](https://go.wit.org/) Attempt to model go.uber.org
-
-## Functions
-
-### func [GetDebug](/structs.go#L25)
-
-`func GetDebug() bool`
-
-### func [GetDebugToolkit](/structs.go#L37)
-
-`func GetDebugToolkit() bool`
-
-### func [IndentPrintln](/structs.go#L188)
+[Wikipedia Graphical widget]: [https://en.wikipedia.org/wiki/Graphical_widget](https://en.wikipedia.org/wiki/Graphical_widget)
+[Github mirror]: [https://github.com/witorg/gui](https://github.com/witorg/gui)
+[Federated git pull]: [https://github.com/forgefed/forgefed](https://github.com/forgefed/forgefed)
+[GO Style Guide]: [https://google.github.io/styleguide/go/index](https://google.github.io/styleguide/go/index)
-`func IndentPrintln(a ...interface{})`
-
-### func [Init](/main.go#L41)
+```go
+* [Wikipedia Graphical widget]
+* [Github mirror]
+* [Federated git pull]
+* [GO Style Guide]
+```
-`func Init()`
+## Functions
-### func [LoadToolkit](/plugin.go#L37)
+### func [DebugWidgetWindow](/debugWidget.go#L52)
-`func LoadToolkit(name string)`
+`func DebugWidgetWindow(w *Node)`
-loads and initializes a toolkit (andlabs/ui, gocui, etc)
+### func [DebugWindow](/debugWindow.go#L21)
-### func [Main](/main.go#L56)
+`func DebugWindow()`
-`func Main(f func())`
+Creates a window helpful for debugging this package
-### func [Queue](/main.go#L77)
+### func [ExampleCatcher](/chan.go#L37)
-`func Queue(f func())`
+`func ExampleCatcher(f func())`
-Other goroutines must use this to access the GUI
+### func [Indent](/debug.go#L124)
-You can not acess / process the GUI thread directly from
-other goroutines. This is due to the nature of how
-Linux, MacOS and Windows work (they all work differently. suprise. surprise.)
-For example: gui.Queue(NewWindow())
+`func Indent(b bool, a ...interface{})`
-### func [SetDebug](/structs.go#L29)
+### func [SetDebug](/debug.go#L28)
`func SetDebug(s bool)`
-### func [SetDebugToolkit](/structs.go#L41)
+### func [SetFlag](/debug.go#L50)
-`func SetDebugToolkit(s bool)`
+`func SetFlag(s string, b bool)`
-### func [ShowDebugValues](/structs.go#L45)
+### func [ShowDebugValues](/debug.go#L82)
`func ShowDebugValues()`
-### func [StandardClose](/main.go#L83)
+### func [StandardExit](/main.go#L153)
-`func StandardClose(n *Node)`
+`func StandardExit()`
-The window is destroyed but the application does not quit
-
-### func [StandardExit](/main.go#L90)
-
-`func StandardExit(n *Node)`
-
-The window is destroyed but the application does not quit
+The window is destroyed and the application exits
+TODO: properly exit the plugin since Quit() doesn't do it
### func [Watchdog](/watchdog.go#L16)
@@ -165,43 +150,39 @@ The window is destroyed but the application does not quit
This program sits here.
If you exit here, the whole thing will os.Exit()
+TODO: use Ticker
This goroutine can be used like a watchdog timer
## Types
-### type [GuiConfig](/structs.go#L68)
+### type [GuiArgs](/structs.go#L29)
-`type GuiConfig struct { ... }`
+`type GuiArgs struct { ... }`
+
+This struct can be used with the go-arg package
#### Variables
```golang
-var Config GuiConfig
+var GuiArg GuiArgs
```
-### type [GuiOptions](/structs.go#L56)
-
-`type GuiOptions struct { ... }`
-
-This struct can be used with go-arg
-
-### type [Node](/structs.go#L87)
+### type [Node](/structs.go#L59)
`type Node struct { ... }`
-The Node is simply the name and the size of whatever GUI element exists
+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 [NewWindow](/window.go#L15)
+#### func [New](/main.go#L120)
-`func NewWindow() *Node`
+`func New() *Node`
-This routine creates a blank window with a Title and size (W x H)
-
-This routine can not have any arguements due to the nature of how
-it can be passed via the 'andlabs/ui' queue which, because it is
-cross platform, must pass UI changes into the OS threads (that is
-my guess).
+There should only be one of these per application
+This is due to restrictions by being cross platform
+some toolkit's on some operating systems don't support more than one
+Keep things simple. Do the default expected thing whenever possible
### type [Symbol](/plugin.go#L17)
@@ -209,6 +190,8 @@ my guess).
## Sub Packages
+* [log](./log)
+
* [toolkit](./toolkit)
---
diff --git a/cmds/debug/Makefile b/cmds/debug/Makefile
deleted file mode 100644
index 5f979cc..0000000
--- a/cmds/debug/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-run: build
- ./debug
-
-build:
- # go build
- GO111MODULE="off" go build
diff --git a/cmds/debug/helloworld.go b/cmds/debug/helloworld.go
deleted file mode 100644
index d0998bf..0000000
--- a/cmds/debug/helloworld.go
+++ /dev/null
@@ -1,20 +0,0 @@
-// A simple helloworld window
-package main
-
-import (
- "log"
- "git.wit.org/wit/gui"
-)
-
-// This creates a window
-func helloworld() {
- var w *gui.Node
- gui.Config.Title = "helloworld golang wit/gui window"
- gui.Config.Width = 400
- gui.Config.Height = 100
-
- w = gui.NewWindow()
- w.NewButton("hello", func () {
- log.Println("world")
- })
-}
diff --git a/cmds/debug/main.go b/cmds/debug/main.go
deleted file mode 100644
index 375ccae..0000000
--- a/cmds/debug/main.go
+++ /dev/null
@@ -1,54 +0,0 @@
-package main
-
-import (
- "log"
- "os"
- "time"
-
- "git.wit.org/wit/gui"
-)
-
-// This initializes the first window
-//
-// BUG: THIS PROGRAM DOESN'T EXIT PROPERLY (NOT REALLY A BUG)
-//
-// Then starts a goroutine to demonstrate how to
-// inject things into the GUI
-func main() {
- log.Println("Starting my Control Panel")
-
-// gui.Init()
-// go gui.Main(helloworld)
- go gui.Main(gui.DebugWindow)
-// go gui.DemoToolkitWindow()
-
- watchGUI()
-}
-
-// 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 == 2 {
- log.Println("Opening a Debug Window via the gui.Queue()")
- gui.Config.Width = 800
- gui.Config.Height = 300
- gui.Config.Exit = myExit
- // gui.DebugWindow()
- time.Sleep(1 * time.Second)
- // gui.DebugTab()
- }
- }
-}
-
-// TODO: myExit isn't getting used anymore
-func myExit(n *gui.Node) {
- log.Println()
- log.Println("Entered myExit() on node.Name =", n.Name)
- log.Println()
- os.Exit(0)
-}
diff --git a/cmds/helloworld/main.go b/cmds/helloworld/main.go
deleted file mode 100644
index 5516340..0000000
--- a/cmds/helloworld/main.go
+++ /dev/null
@@ -1,25 +0,0 @@
-// This is a simple example
-package main
-
-import (
- "log"
- "git.wit.org/wit/gui"
-)
-
-func main() {
- // gui.Init()
- gui.Main(helloworld)
-}
-
-// This creates a window
-func helloworld() {
- var w *gui.Node
- gui.Config.Title = "helloworld golang wit/gui window"
- gui.Config.Width = 640
- gui.Config.Height = 480
-
- w = gui.NewWindow()
- w.NewButton("hello", func () {
- log.Println("world")
- })
-}
diff --git a/cmds/plugin-consoleonly/Makefile b/cmds/plugin-consoleonly/Makefile
deleted file mode 100644
index a8279f6..0000000
--- a/cmds/plugin-consoleonly/Makefile
+++ /dev/null
@@ -1,14 +0,0 @@
-run: build
- ./helloconsole
-
-build-release:
- go get -v -u -x .
- go install -v -o helloconsole
- helloconsole
-
-build:
- GO111MODULE="off" go get -v -x .
- GO111MODULE="off" go build -v -o helloconsole
-
-update:
- GO111MODULE="off" go get -v -u -x .
diff --git a/cmds/plugin-consoleonly/args.go b/cmds/plugin-consoleonly/args.go
deleted file mode 100644
index dc4a322..0000000
--- a/cmds/plugin-consoleonly/args.go
+++ /dev/null
@@ -1,31 +0,0 @@
-// This creates a simple hello world window
-package main
-
-import (
- "log"
- "git.wit.org/wit/gui"
- arg "github.com/alexflint/go-arg"
-)
-
-type LogOptions struct {
- LogFile string
- Verbose bool
- User string `arg:"env:USER"`
-}
-
-var args struct {
- LogOptions
- gui.GuiArgs
-}
-
-func init() {
- arg.MustParse(&args)
- log.Println("Toolkit = ", args.Toolkit)
-
- if (args.GuiDebug) {
- gui.DebugWindow()
- }
- if (args.GuiVerbose) {
- gui.SetDebug(true)
- }
-}
diff --git a/cmds/plugin-consoleonly/main.go b/cmds/plugin-consoleonly/main.go
deleted file mode 100644
index fa428d6..0000000
--- a/cmds/plugin-consoleonly/main.go
+++ /dev/null
@@ -1,33 +0,0 @@
-// This is a simple example
-package main
-
-import (
- "log"
- "git.wit.org/wit/gui"
-)
-
-func main() {
- gui.InitPlugins([]string{"gocui"})
- gui.Main(helloworld)
-}
-
-// This creates a window
-func helloworld() {
- var w *gui.Node
- gui.Config.Title = "helloworld golang wit/gui window"
- gui.Config.Width = 640
- gui.Config.Height = 480
-
- w = gui.NewWindow()
- w.NewButton("hello", func () {
- log.Println("world")
- })
- w.NewButton("Flags", func () {
- log.Println("the debugging flags window")
- w.DebugFlags(false)
- })
- w.NewButton("Widgets", func () {
- w.DebugWidgets(false)
- log.Println("debug the widgets window")
- })
-}
diff --git a/cmds/textbox/Makefile b/cmds/textbox/Makefile
deleted file mode 100644
index 5785c10..0000000
--- a/cmds/textbox/Makefile
+++ /dev/null
@@ -1,14 +0,0 @@
-run: build
- # GOTRACEBACK=all ./textbox --gui-debug
- GOTRACEBACK=all ./textbox --gui-debug >/tmp/witgui.log.stderr 2>&1
-
-build-release:
- go get -v -u -x .
- go build
-
-build:
- GO111MODULE="off" go get -v -x .
- GO111MODULE="off" GOTRACEBACK=all go build
-
-update:
- GO111MODULE="off" go get -v -u -x .
diff --git a/cmds/textbox/main.go b/cmds/textbox/main.go
deleted file mode 100644
index e02ff4a..0000000
--- a/cmds/textbox/main.go
+++ /dev/null
@@ -1,96 +0,0 @@
-// This creates a simple hello world window
-package main
-
-import (
- "os"
- "log"
- "git.wit.org/wit/gui"
- arg "github.com/alexflint/go-arg"
-)
-
-type LogOptions struct {
- LogFile string
- Verbose bool
- User string `arg:"env:USER"`
-}
-
-var args struct {
- LogOptions
- gui.GuiArgs
-}
-
-func main() {
- // this implements ./cmd --gui-debug --gui-toolkit, etc
- arg.MustParse(&args)
- log.Println("Toolkit = ", args.Toolkit)
-
- // gui.SetDebug(true)
- // gui.InitPlugins([]string{"gocui"})
- gui.Main(initGUI)
-}
-
-// This initializes the first window
-func initGUI() {
- var w *gui.Node
- gui.Config.Title = "Hello World"
- gui.Config.Width = 642
- gui.Config.Height = 481
- gui.Config.Exit = myDefaultExit
-
- w = gui.NewWindow()
- w.Custom = func () {
- log.Println("myDefaultExit(w)")
- myDefaultExit(w)
- }
- addDemoTab(w, "A Simple Tab Demo")
- addDemoTab(w, "A Second Tab")
-
- if (args.GuiDebug) {
- gui.DebugWindow()
- }
- if (args.GuiVerbose) {
- gui.SetDebug(true)
- }
-}
-
-func addDemoTab(window *gui.Node, title string) {
- var newNode, g *gui.Node
-
- newNode = window.NewTab(title)
- log.Println("addDemoTab() newNode START")
- // newNode.Dump(true)
-
- g = newNode.NewGroup("group 1")
-
- g1 := g.NewGrid("grid 1", 2, 2)
- g1.NewLabel("less")
- dd := g1.NewDropdown("more")
- dd.AddDropdownName("more 1")
- dd.AddDropdownName("more 2")
- dd.AddDropdownName("more 3")
-
- // g.SetNext(3,1)
- // g1.NewLabel("label (3,1)")
- // g.SetNext(3,2)
- // g1.NewLabel("label (3,2)")
-
- g2 := newNode.NewGroup("group 2")
- tb := g2.NewTextbox("tb")
- log.Println("tb =", tb.GetText())
- tb.Custom = func() {
- s := tb.GetText()
- log.Println("text =", s)
- }
-
- dd.Custom = func() {
- s := dd.GetText()
- log.Println("hello world " + args.User + "\n" + s + "\n")
- tb.SetText("hello world " + args.User + "\n" + s + "\n")
- }
-}
-
-func myDefaultExit(n *gui.Node) {
- log.Println("You can Do exit() things here")
- os.Exit(0)
-}
-
diff --git a/common.go b/common.go
index f9884d0..6f42ce4 100644
--- a/common.go
+++ b/common.go
@@ -187,7 +187,7 @@ func (n *Node) Standard() *Node {
return n
}
-func (n *Node) DoMargin() *Node {
+func (n *Node) SetMargin() *Node {
log(debugError, "DoMargin() not implemented yet")
return n
}
diff --git a/debug.go b/debug.go
index 955a246..acc249d 100644
--- a/debug.go
+++ b/debug.go
@@ -134,7 +134,7 @@ func (n *Node) dumpWidget(b bool) string {
}
info = n.WidgetType.String()
- d = strconv.Itoa(n.id) + " " + info
+ d = strconv.Itoa(n.id) + " " + info + " " + n.Name
var tabs string
for i := 0; i < listChildrenDepth; i++ {
diff --git a/doc.go b/doc.go
index 29f36db..14cb2f3 100644
--- a/doc.go
+++ b/doc.go
@@ -16,7 +16,16 @@ Principles:
* When in doubt, search upward in the binary tree
* It's ok to guess. Try to do something sensible.
-Quick Start
+Debian Build
+
+This worked on debian sid (mate-desktop) on 2023/12/03
+I didn't record the dependances needed (gtk-dev)
+
+ export GO111MODULE="off"
+ make
+
+
+Hello World Example
// This creates a simple hello world window
package main
@@ -54,18 +63,7 @@ Quick Start
})
}
-
-Debian Build
-
-This worked on debian sid on 2022/10/20
-I didn't record the dependances needed
-
- GO111MODULE="off" go get -v -t -u git.wit.org/wit/gui
- cd ~/go/src/git.wit.org/wit/gui/cmds/helloworld/
- GO111MODULE="off" go build -v -x
- ./helloworld
-
-Toolkits
+External Toolkits
* andlabs - https://github.com/andlabs/ui
* gocui - https://github.com/awesome-gocui/gocui
@@ -86,16 +84,12 @@ References
Useful links and other
external things which might be useful
-[Wikipedia Graphical widget]: https://en.wikipedia.org/wiki/Graphical_widget
-[Github mirror]: https://github.com/witorg/gui
-[Federated git pull]: https://github.com/forgefed/forgefed
-[GO Style Guide]: https://google.github.io/styleguide/go/index
-
- * [Wikipedia Graphical widget]
- * [Github mirror]
- * [Federated git pull]
- * [GO Style Guide]
-
+* [Wikipedia Graphical widget](https://en.wikipedia.org/wiki/Graphical_widget)
+* [GO Style Guide](https://google.github.io/styleguide/go/index) Code this way
+* [MS Windows Application Library Kit](https://github.com/lxn/walk)
+* [Federated git pull](https://github.com/forgefed/forgefed) Hopefully this will work for me with gitea
+* [Github mirror](https://github.com/wit-go/gui) This repo on mirror. Hopefully I won't have to use this.
+* [WIT GO projects](https://go.wit.org/) Attempt to model go.uber.org
*/
package gui
diff --git a/cmds/buttonplugin/Makefile b/examples/buttons/Makefile
index 74486e5..74b7728 100644
--- a/cmds/buttonplugin/Makefile
+++ b/examples/buttons/Makefile
@@ -7,12 +7,12 @@
#
run: build
- ./buttonplugin --gui gocui >/tmp/witgui.log.stderr 2>&1
+ ./buttons --gui andlabs
build-release:
go get -v -u -x .
go build
- ./buttonplugin
+ ./buttons
build:
GO111MODULE="off" go get -v -x .
diff --git a/examples/buttons/buttonplugin b/examples/buttons/buttonplugin
new file mode 100755
index 0000000..3f4dee3
--- /dev/null
+++ b/examples/buttons/buttonplugin
Binary files differ
diff --git a/examples/buttons/buttons b/examples/buttons/buttons
new file mode 100755
index 0000000..01ea9aa
--- /dev/null
+++ b/examples/buttons/buttons
Binary files differ
diff --git a/cmds/buttonplugin/log.go b/examples/buttons/log.go
index 7d65d05..7d65d05 100644
--- a/cmds/buttonplugin/log.go
+++ b/examples/buttons/log.go
diff --git a/cmds/buttonplugin/main.go b/examples/buttons/main.go
index 3200e9e..3200e9e 100644
--- a/cmds/buttonplugin/main.go
+++ b/examples/buttons/main.go
diff --git a/cmds/cloudflare/Makefile b/examples/cloudflare/Makefile
index bcd88c6..bcd88c6 100644
--- a/cmds/cloudflare/Makefile
+++ b/examples/cloudflare/Makefile
diff --git a/cmds/cloudflare/argv.go b/examples/cloudflare/argv.go
index 38579c7..38579c7 100644
--- a/cmds/cloudflare/argv.go
+++ b/examples/cloudflare/argv.go
diff --git a/cmds/cloudflare/dns.go b/examples/cloudflare/dns.go
index 6626843..eb8de23 100644
--- a/cmds/cloudflare/dns.go
+++ b/examples/cloudflare/dns.go
@@ -31,22 +31,46 @@ type DNSRecords struct {
func loadDNS(hostname string) {
log.Println("adding DNS record")
- // more2.NewButton(name, func () {
- // log.Println(name, "ip =", ip)
- // })
-
newt := mainWindow.NewTab(hostname)
newg := newt.NewGroup("more")
- more2 := newg.NewGrid("gridnuts", 5, gridH)
+ grid := newg.NewGrid("gridnuts", 5, gridH)
+
+// grid.NewButton("Type", func () {
+// log.Println("sort by Type")
+// })
+ typedrop := grid.NewDropdown("type")
+ typedrop.AddText("A")
+ typedrop.AddText("AAAA")
+ typedrop.AddText("CNAME")
+ typedrop.Custom = func () {
+ log.Println("custom dropdown() a =", typedrop.Name, typedrop.S)
+ }
+ grid.NewButton("Name", func () {
+ log.Println("sort by Name")
+ })
+ grid.NewButton("Protection", func () {
+ log.Println("sort proxied")
+ })
+ grid.NewButton("TTL", func () {
+ log.Println("sort by TTL")
+ })
+ grid.NewButton("Value", func () {
+ log.Println("sort by Value")
+ })
+
+ newt.NewButton("Save", func () {
+ log.Println("save stuff to cloudflare")
+ })
records := getRecords()
for _, record := range records.Result {
- more2.NewLabel(record.Type)
- more2.NewLabel(record.Name)
+ grid.NewLabel(record.Type)
+ textbox := grid.NewTextbox(record.Name)
+ textbox.SetText(record.Name)
if (record.Proxied) {
- more2.NewLabel("Proxied")
+ grid.NewLabel("Proxied")
} else {
- more2.NewLabel("DNS")
+ grid.NewLabel("DNS")
}
var ttl, short string
if (record.TTL == 1) {
@@ -54,62 +78,55 @@ func loadDNS(hostname string) {
} else {
ttl = strconv.Itoa(record.TTL)
}
- more2.NewLabel(ttl)
+ grid.NewLabel(ttl)
// short = fmt.Sprintf("%80s", record.Content)
short = record.Content
if len(short) > 40 {
short = short[:40] // Slice the first 20 characters
}
- more2.NewLabel(short)
+
+ namebox := grid.NewTextbox(short)
+ namebox.SetText(short)
fmt.Printf("ID: %s, Type: %s, Name: %s, short Content: %s\n", record.ID, record.Type, record.Name, short)
fmt.Printf("\tproxied: %b, %b, string TTL: %i\n", record.Proxied, record.Proxiable, ttl)
}
}
-
func getRecords() *DNSRecords {
var url string = os.Getenv("CLOUDFLARE_URL")
- req, err := http.NewRequest("GET", url, nil)
- if err != nil {
- fmt.Println(err)
- return nil
- }
+ req, err := http.NewRequest("GET", url, nil)
+ if err != nil {
+ fmt.Println(err)
+ return nil
+ }
var authKey string = os.Getenv("CLOUDFLARE_AUTHKEY")
var email string = os.Getenv("CLOUDFLARE_EMAIL")
- // Set headers
- req.Header.Set("X-Auth-Key", authKey)
- req.Header.Set("X-Auth-Email", email)
-
- client := &http.Client{}
- resp, err := client.Do(req)
- if err != nil {
- fmt.Println(err)
- return nil
- }
- defer resp.Body.Close()
+ // Set headers
+ req.Header.Set("X-Auth-Key", authKey)
+ req.Header.Set("X-Auth-Email", email)
- body, err := ioutil.ReadAll(resp.Body)
- if err != nil {
- fmt.Println(err)
- return nil
- }
+ client := &http.Client{}
+ resp, err := client.Do(req)
+ if err != nil {
+ fmt.Println(err)
+ return nil
+ }
+ defer resp.Body.Close()
- var records DNSRecords
- if err := json.Unmarshal(body, &records); err != nil {
- fmt.Println(err)
- return nil
- }
+ body, err := ioutil.ReadAll(resp.Body)
+ if err != nil {
+ fmt.Println(err)
+ return nil
+ }
- // Process the records as needed
- /*
- for _, record := range records.Result {
- fmt.Printf("ID: %s, Type: %s, Name: %s, Content: %s\n", record.ID, record.Type, record.Name, record.Content)
- fmt.Printf("\tproxied: %b, %b, TTL: %i\n", record.Proxied, record.Proxiable, record.TTL)
- }
- */
+ var records DNSRecords
+ if err := json.Unmarshal(body, &records); err != nil {
+ fmt.Println(err)
+ return nil
+ }
return &records
}
diff --git a/cmds/cloudflare/main.go b/examples/cloudflare/main.go
index 75ba448..b83d276 100644
--- a/cmds/cloudflare/main.go
+++ b/examples/cloudflare/main.go
@@ -5,7 +5,6 @@ import (
"os"
"fmt"
"log"
- "strconv"
"git.wit.org/wit/gui"
)
@@ -42,10 +41,7 @@ func buttonWindow() {
more = g1.NewGroup("more")
showCloudflareCredentials(more)
- g1.NewButton("hello", func () {
- log.Println("world")
- })
- more2 = g1.NewGrid("gridnuts", gridW, gridH)
+ // more2 = g1.NewGrid("gridnuts", gridW, gridH)
var domain string = os.Getenv("CLOUDFLARE_DOMAIN")
if (domain == "") {
@@ -66,40 +62,6 @@ func buttonWindow() {
myGui.LoadToolkit("andlabs")
})
- g.NewButton("NewButton(more)", func () {
- name := "foobar " + strconv.Itoa(buttonCounter)
- log.Println("NewButton(more) Adding button", name)
- buttonCounter += 1
- more.NewButton(name, func () {
- log.Println("Got all the way to main() name =", name)
- })
- })
-
- g.NewButton("NewButton(more2)", func () {
- name := "foobar " + strconv.Itoa(buttonCounter)
- log.Println("NewButton(more2) Adding button", name)
- buttonCounter += 1
- more2.NewButton(name, func () {
- log.Println("Got all the way to main() name =", name)
- })
- })
-
- g.NewButton("NewButton(more2 d)", func () {
- name := "d" + strconv.Itoa(buttonCounter)
- log.Println("NewButton(more2 d) Adding button", name)
- buttonCounter += 1
- more2.NewButton(name, func () {
- log.Println("Got all the way to main() name =", name)
- })
- })
-
- g.NewButton("NewGroup()", func () {
- name := "neat " + strconv.Itoa(buttonCounter)
- log.Println("NewGroup() Adding button", name)
- buttonCounter += 1
- more.NewGroup(name)
- })
-
g.NewButton("gui.DebugWindow()", func () {
gui.DebugWindow()
})
diff --git a/cmds/console-ui-helloworld/Makefile b/examples/console-ui-helloworld/Makefile
index f63c8a9..f63c8a9 100644
--- a/cmds/console-ui-helloworld/Makefile
+++ b/examples/console-ui-helloworld/Makefile
diff --git a/cmds/console-ui-helloworld/keybindings.go b/examples/console-ui-helloworld/keybindings.go
index 8c4623b..8c4623b 100644
--- a/cmds/console-ui-helloworld/keybindings.go
+++ b/examples/console-ui-helloworld/keybindings.go
diff --git a/cmds/console-ui-helloworld/log.go b/examples/console-ui-helloworld/log.go
index b05beaf..b05beaf 100644
--- a/cmds/console-ui-helloworld/log.go
+++ b/examples/console-ui-helloworld/log.go
diff --git a/cmds/console-ui-helloworld/main.go b/examples/console-ui-helloworld/main.go
index d16b805..d16b805 100644
--- a/cmds/console-ui-helloworld/main.go
+++ b/examples/console-ui-helloworld/main.go
diff --git a/cmds/console-ui-helloworld/newJ.go b/examples/console-ui-helloworld/newJ.go
index 47c7439..47c7439 100644
--- a/cmds/console-ui-helloworld/newJ.go
+++ b/examples/console-ui-helloworld/newJ.go
diff --git a/cmds/console-ui-helloworld/views.go b/examples/console-ui-helloworld/views.go
index 50287c2..50287c2 100644
--- a/cmds/console-ui-helloworld/views.go
+++ b/examples/console-ui-helloworld/views.go
diff --git a/example_test.go b/examples/example_test.go
index f65cad1..f65cad1 100644
--- a/example_test.go
+++ b/examples/example_test.go
diff --git a/cmds/helloworld/Makefile b/examples/helloworld/Makefile
index 961ed8c..961ed8c 100644
--- a/cmds/helloworld/Makefile
+++ b/examples/helloworld/Makefile
diff --git a/examples/helloworld/main.go b/examples/helloworld/main.go
new file mode 100644
index 0000000..3d8ba40
--- /dev/null
+++ b/examples/helloworld/main.go
@@ -0,0 +1,23 @@
+// This is a simple example
+package main
+
+import (
+ "log"
+ "git.wit.org/wit/gui"
+)
+
+func main() {
+ helloworld()
+ // This is just a optional goroutine to watch that things are alive
+ gui.Watchdog()
+}
+
+// This creates a window
+func helloworld() {
+ myGui := gui.New().Default()
+ myWindow := myGui.NewWindow("helloworld golang wit/gui window")
+
+ myWindow.NewButton("hello", func () {
+ log.Println("world")
+ })
+}
diff --git a/go.mod b/go.mod
index 83a8db6..b6c0a30 100644
--- a/go.mod
+++ b/go.mod
@@ -1,22 +1,25 @@
-module git.wit.org/wit/gui
+module gui
-go 1.18
+go 1.21.1
require (
+ git.wit.org/wit/gui v0.8.6
github.com/alexflint/go-arg v1.4.3
github.com/andlabs/ui v0.0.0-20200610043537-70a69d6ae31e
github.com/awesome-gocui/gocui v1.1.0
- github.com/davecgh/go-spew v1.1.1
- golang.org/x/image v0.0.0-20221017200508-ffcb3fe7d1bf
)
require (
github.com/alexflint/go-scalar v1.2.0 // indirect
+ github.com/davecgh/go-spew v1.1.1 // indirect
github.com/gdamore/encoding v1.0.0 // indirect
github.com/gdamore/tcell/v2 v2.6.0 // indirect
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
github.com/mattn/go-runewidth v0.0.14 // indirect
github.com/rivo/uniseg v0.4.4 // indirect
+ github.com/sourcegraph/conc v0.3.0 // indirect
+ go.uber.org/atomic v1.7.0 // indirect
+ go.uber.org/multierr v1.9.0 // indirect
golang.org/x/sys v0.5.0 // indirect
golang.org/x/term v0.5.0 // indirect
golang.org/x/text v0.7.0 // indirect
diff --git a/go.sum b/go.sum
index 820b861..460ca76 100644
--- a/go.sum
+++ b/go.sum
@@ -1,3 +1,5 @@
+git.wit.org/wit/gui v0.8.6 h1:n4V1eSm2LPmObGniX8kTQPT07xxumV5rPuDlXVGz/n8=
+git.wit.org/wit/gui v0.8.6/go.mod h1:Bzt8Nzznjmo4AjBZtMg+wJEFNdpGvP6amxacVLgVCWg=
github.com/alexflint/go-arg v1.4.3 h1:9rwwEBpMXfKQKceuZfYcwuc/7YY7tWJbFsgG5cAU/uo=
github.com/alexflint/go-arg v1.4.3/go.mod h1:3PZ/wp/8HuqRZMUUgu7I+e1qcpUbvmS258mRXkFH4IA=
github.com/alexflint/go-scalar v1.1.0/go.mod h1:LoFvNMqS1CPrMVltza4LvnGKhaSpc3oyLEBUZVhhS2o=
@@ -27,18 +29,19 @@ github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJ
github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis=
github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
+github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
+github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
+go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
+go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
+go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI=
+go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d h1:RNPAfi2nHY7C2srAV8A49jpsYr0ADedCk1wq6fTMTvs=
-golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=
-golang.org/x/image v0.0.0-20220902085622-e7cb96979f69 h1:Lj6HJGCSn5AjxRAH2+r35Mir4icalbqku+CLUtjnvXY=
-golang.org/x/image v0.0.0-20220902085622-e7cb96979f69/go.mod h1:doUCurBvlfPMKfmIpRIywoHmhN3VyhnoFDbvIEWF4hY=
-golang.org/x/image v0.0.0-20221017200508-ffcb3fe7d1bf h1:nq7IoIHc0jQHd2/cn0Oedp7Z9gH80pVTiDd9bF7u+O4=
-golang.org/x/image v0.0.0-20221017200508-ffcb3fe7d1bf/go.mod h1:iyPr49SD/G/TBxYVB/9RRtGUT5eNbo2u4NamWeQcD5c=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
@@ -59,9 +62,7 @@ golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
diff --git a/plugin.go b/plugin.go
index 42dc7cc..c43b4af 100644
--- a/plugin.go
+++ b/plugin.go
@@ -129,9 +129,10 @@ func searchPaths(name string) *aplug {
return p
}
} else {
- log(logError, filename, "was not embedded. Error:", err)
+ log(logError, filename, "was not embedded in the binary. Error:", err)
}
+ log(logError, "fuck off")
// attempt to write out the file from the internal resource
filename = "toolkit/" + name + ".so"
p := initToolkit(name, filename)
@@ -167,12 +168,20 @@ func searchPaths(name string) *aplug {
// load module
// 1. open the shared object file to load the symbols
func initToolkit(name string, filename string) *aplug {
+ if _, err := os.Stat(filename); err != nil {
+ if os.IsNotExist(err) {
+ log(true, "missing plugin", name, "as filename", filename)
+ return nil
+ }
+ }
+ log(true, "Found plugin", name, "as filename", filename)
+
plug, err := plugin.Open(filename)
if err != nil {
- log(debugGui, "plugin FAILED =", filename, err)
+ log(debugError, "plugin FAILED =", filename, err)
return nil
}
- log(debugGui, "initToolkit() loading plugin =", filename)
+ log(debugPlugin, "initToolkit() loading plugin =", filename)
var newPlug *aplug
newPlug = new(aplug)