summaryrefslogtreecommitdiff
path: root/doc.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2022-10-11 11:59:42 -0500
committerJeff Carr <[email protected]>2022-10-11 11:59:42 -0500
commit3c899365154e48aefbc0b5ee48cd089f49339cb2 (patch)
tree13f3c0aa281d17c55306ed2e0323aa5188087e04 /doc.go
parent2294e22484be61a934ca8b523f4aeb40d20d6196 (diff)
parent770fa06a18652b30db0cd4ee64e8e89d06d7de2e (diff)
Merge branch 'master' into develv0.3.1
Diffstat (limited to 'doc.go')
-rw-r--r--doc.go81
1 files changed, 81 insertions, 0 deletions
diff --git a/doc.go b/doc.go
new file mode 100644
index 0000000..35c6a8f
--- /dev/null
+++ b/doc.go
@@ -0,0 +1,81 @@
+/*
+Package gui implements a abstraction layer for Go visual elements in
+a cross platform way.
+
+A quick overview of the features, some general design guidelines
+and principles for how this package should generally work:
+
+ * GUI elements are stored in a tree of nodes
+ * When in doubt, it's ok to guess. We will return something close.
+ * It tries to make your code simple
+
+Quick Start
+
+This section demonstrates how to quickly get started with spew. See the
+sections below for further details on formatting and configuration options.
+
+ // This creates a simple hello world window
+ package main
+
+ import (
+ "git.wit.org/wit/gui"
+ )
+
+ func main() {
+ gui.Main(initGUI)
+ }
+
+ // This initializes the first window
+ func initGUI() {
+ gui.Config.Title = "Hello World golang wit/gui Window"
+ gui.Config.Width = 640
+ gui.Config.Height = 480
+ node1 := gui.NewWindow()
+ addDemoTab(node1, "A Simple Tab Demo")
+ addDemoTab(node1, "A Second Tab")
+ }
+
+ func addDemoTab(n *gui.Node, title string) {
+ newNode := n.AddTab(title, nil)
+
+ groupNode1 := newNode.AddGroup("group 1")
+ groupNode1.AddComboBox("demoCombo2", "more 1", "more 2", "more 3")
+ }
+
+Configuration Options
+
+Configuration of the GUI is handled by fields in the ConfigType type. For
+convenience, all of the top-level functions use a global state available
+via the gui.Config global.
+
+The following configuration options are available:
+ * Width
+ When creating a new window, this is the width
+
+ * Height
+ When creating a new window, this is the height
+
+ * Debug
+ When 'true' log more output
+
+Toolkit Usage
+
+Right now, this abstraction is built on top of the go package 'andlabs/ui'
+which does the cross platform support.
+The next step is to intent is to allow this to work directly against GTK and QT.
+It should be able to add Fyne, WASM, native macos & windows, android, etc.
+
+Errors
+
+Since it is possible for custom Stringer/error interfaces to panic, spew
+detects them and handles them internally by printing the panic information
+inline with the output. Since spew is intended to provide deep pretty printing
+capabilities on structures, it intentionally does not return any errors.
+
+Debugging
+
+To dump variables with full newlines, indentation, type, and pointer
+information this uses spew.Dump()
+
+*/
+package gui