diff options
| -rw-r--r-- | args.go | 14 | ||||
| -rw-r--r-- | doc.go | 89 | ||||
| -rw-r--r-- | main.go | 9 |
3 files changed, 14 insertions, 98 deletions
@@ -6,7 +6,10 @@ import ( var argGui ArgsGui -// This struct can be used with the go-arg package +/* +This struct can be used with the go-arg package. These +are the generic default command line arguments for the 'GUI' package +*/ type ArgsGui struct { GuiPlugin string `arg:"--gui" help:"Use this gui toolkit [andlabs,gocui,nocui]"` GuiVerbose bool `arg:"--gui-verbose" help:"enable all logging"` @@ -14,7 +17,14 @@ type ArgsGui struct { // GuiStdout bool `arg:"--gui-stdout" help:"send STDOUT and STDERR to /tmp/go-gui.log"` } -// returns the toolkit +/* +used for command line options. +This allows you to control the toolkit settings from the command line + + --debugger # opens the debugger + --gui andlabs # loads the GTK toolkit on linux or Cocoa on mac + --gui gocui # runs your program in the terminal in ncurses-like mode +*/ func ArgToolkit() string { return argGui.GuiPlugin } @@ -1,89 +0,0 @@ -/* -Package gui implements a abstraction layer for Go visual elements. - -Definitions: - - - Toolkit: the underlying GUI library (MacOS gui, Windows gui, gtk, qt, etc) - - Node: A binary tree of all the underlying widgets - -Principles: - - - 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) - - export GO111MODULE="off" - go get go.wit.com/gui - -When I am working on toolkit plugins, then I work -directly from ~/go/src/go.wit.com/gui/ - -Hello World Example - - // This creates a simple hello world window - package main - - import ( - "log" - "go.wit.com/gui" - ) - - var myGui *gui.Node // This is the beginning of the binary tree of widgets - - // go will sit here until the window exits - func main() { - myGui = gui.New().Default() - - helloworld() - } - - // This initializes the first window, a group and a button - func helloworld() { - window := myGui.NewWindow("hello world") - - group := window.NewGroup("foo bar") - group.NewButton("hello", func() { - log.Println("world") - }) - } - -Hopefully this code example will remain syntactically -consistant. - -External Toolkits - - - andlabs - https://github.com/andlabs/ui - - 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) -* [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.com/) Attempt to model go.uber.org -*/ -package gui @@ -8,13 +8,8 @@ import ( "go.wit.com/widget" ) -// TODO: make a fake 'plugin' channel of communication to andlabs for mswindows -// Windows doesn't support plugins. How can I keep andlabs and only compile it on windows? -// https://forum.heroiclabs.com/t/setting-up-goland-to-compile-plugins-on-windows/594/5 -// import toolkit "go.wit.com/gui/toolkit/andlabs" - -const Xaxis = 0 // stack things horizontally -const Yaxis = 1 // stack things vertically +// const Xaxis = 0 // stack things horizontally +// const Yaxis = 1 // stack things vertically func init() { log.Log(INFO, "init() has been run") |
