Compare commits

..

No commits in common. "guimaster" and "v1.1.23" have entirely different histories.

10 changed files with 61 additions and 87 deletions

View File

@ -1,4 +1,4 @@
all: goimports vet
all:
@echo
@echo This defines the primitive widgets
@echo
@ -19,7 +19,3 @@ redomod:
rm -f go.*
GO111MODULE= go mod init
GO111MODULE= go mod tidy
vet:
@GO111MODULE=off go vet
@echo this go library builds okay

View File

@ -8,7 +8,6 @@ Principles:
* Make code using this package simple to use
* Widget names should try to match [Wikipedia Graphical widget]
* It's ok to guess. Try to do something sensible.
* TODO: use protobuf
```
### Links

View File

@ -7,13 +7,13 @@ type Action struct {
WidgetId int
ParentId int
State State
State State
// Text string // what is visable to the user
ProgName string // a name useful for programming
ProgName string // a name useful for programming
// most primitive widgets just store a single thing
Value any
Value any
// how to arrange widgets
Direction Orientation
@ -23,34 +23,31 @@ type Action struct {
// These must be unique
Strings []string
Range RangeType
Range RangeType
// RETHINK / REDO EVERYTHING BELOW HERE
// This is used for things like a slider(0,100)
X int
Y int
X int
Y int
// This is for the grid size & widget position
W int
H int
AtW int
AtH int
W int
H int
AtW int
AtH int
// Put space around elements to improve look & feel
// Margin bool avoided due to use of action types
// Pad bool
// Make widgets fill up the space available
Expand bool
TablePB []byte // a table protobuf
WidgetPB []byte // a tree of widgets
Expand bool
}
type ActionType int // Add, SetText, Click, Hide, Append, Delete, etc
const (
Add ActionType = iota + 1
Add ActionType = iota
Delete
SetText
AddText
@ -69,14 +66,14 @@ const (
Append
Move
Dump
User // the user did something (mouse, keyboard, etc)
ToolkitLoad // attempts to load a new toolkit
ToolkitInit // initializes the toolkit
User // the user did something (mouse, keyboard, etc)
ToolkitLoad // attempts to load a new toolkit
ToolkitInit // initializes the toolkit
ToolkitClose // closes the toolkit
ToolkitPanic
Heartbeat
CloseWindow
UserQuit // the user closed the GUI
UserQuit // the user closed the GUI
EnableDebug // open the debugging window
)
@ -112,22 +109,6 @@ func (s ActionType) String() string {
return "Move"
case Dump:
return "Dump"
case User:
return "User"
case ToolkitLoad:
return "ToolkitLoad"
case ToolkitInit:
return "ToolkitInit"
case ToolkitClose:
return "ToolkitClose"
case ToolkitPanic:
return "ToolkitPanic"
case Heartbeat:
return "Heartbeat"
case UserQuit:
return "UserQuit"
case EnableDebug:
return "EnableDebug"
}
return "gui ActionType.String() Error. must be missing something in the code here"
return "ActionType.String() Error"
}

2
doc.go
View File

@ -5,6 +5,7 @@ There are lots of issues when supporting multiple toolkit plugin
geometries. The geometries vary widely especially between the
graphical displays and the serial console ones. [Graphical Widget](http://en.wikipedia.org/Graphical_Widget)
To simplyfy this, we stick to using the concepts:
------------------------------ ^
@ -43,7 +44,6 @@ Horizontal means layout widgets like books on a bookshelf
---------------------------------
Vertical means layout widgets like books in a stack
----------
| Widget |
----------

10
geom.go
View File

@ -1,14 +1,14 @@
package widget
type Geom struct {
Left any
Right any
Top any
Left any
Right any
Top any
Bottom any
}
type Size struct {
Width any
Width any
Height any
}
@ -25,7 +25,6 @@ Horizontal means layout widgets like books on a bookshelf
---------------------------------
Vertical means layout widgets like books in a stack
----------
| Widget |
----------
@ -52,4 +51,5 @@ func (s Orientation) String() string {
default:
return "Horizontal"
}
return "Horizontal"
}

View File

@ -31,7 +31,7 @@ package widget
// --------------------------------------
type GridSize struct {
Width int
Width int
Height int
}

View File

@ -5,6 +5,6 @@ package widget
// seem to be a good idea to use 'type any' here as it
// just makes things more complicated for no good reason
type RangeType struct {
Low int
Low int
High int
}

View File

@ -56,6 +56,7 @@ func GetString(A any) string {
// log.Warn("getString uknown kind", k, "value =", A)
return ""
}
return ""
}
// work like unix os.Exec() ? everything other than 0 is false
@ -88,6 +89,7 @@ func GetBool(A any) bool {
// log.Warn("getString uknown kind", k, "value =", A)
return false
}
return false
}
// work like unix? everything other than 0 is false
@ -119,4 +121,5 @@ func GetInt(A any) int {
// log.Warn("getString uknown kind", k, "value =", A)
return -1
}
return -1
}

View File

@ -1,7 +1,5 @@
package widget
// TODO: redo this with protocol buffers
// This is the state of the widget
// The whole state of the widget is sent
@ -13,14 +11,14 @@ package widget
// just makes things more complicated for no good reason
type State struct {
// This is a unmodifiable string that is displayed to the user.
Label string
Label string
// most primitive widgets just store a single thing
// it is the default value
DefaultS string
CurrentS string
CurrentI int
NewString string
DefaultS string
CurrentS string
CurrentI int
NewString string
// most primitive widgets just store a single thing
// it is the default value
@ -66,19 +64,19 @@ type State struct {
Strings []string
// for widgets that use a range
Range RangeType
Range RangeType
Geom Geom
Size Size
Geom Geom
Size Size
GridSize GridSize
GridSize GridSize
GridOffset GridOffset
// This is for the grid size & widget position
W int
H int
AtW int
AtH int
W int
H int
AtW int
AtH int
// a name useful for programming and the debugger.
// It is not intended to be displayed to the user

View File

@ -16,32 +16,31 @@ package widget
type WidgetType int // Button, Menu, Checkbox, etc.
const (
Unknown WidgetType = iota + 1
Root // the master 'root' node of the binary tree
Flag // used to send configuration values to plugins
Window // in certain gui's (ncurses), these are tabs
Tab // internally, this is a window
Frame // deprecate?
Grid // like drawers in a chest
Group // like the 'Appetizers' section on a menu
Box // a vertical or horizontal stack of widgets
Unknown WidgetType = iota
Root // the master 'root' node of the binary tree
Flag // used to send configuration values to plugins
Window // in certain gui's (ncurses), these are tabs
Tab // internally, this is a window
Frame // deprecate?
Grid // like drawers in a chest
Group // like the 'Appetizers' section on a menu
Box // a vertical or horizontal stack of widgets
Button
Checkbox // select 'on' or 'off'
Dropdown
Combobox // dropdown with edit=true
Label
Textbox // is this a Label with edit=true
Slider // like a progress bar
Spinner // like setting the oven temperature
Table // a full window & table
Textbox // is this a Label with edit=true
Slider // like a progress bar
Spinner // like setting the oven temperature
Separator // TODO
Image // TODO
Area // TODO
Form // TODO
Font // TODO
Color // TODO
Dialog // TODO
Stdout // can be used to capture and display log output
Image // TODO
Area // TODO
Form // TODO
Font // TODO
Color // TODO
Dialog // TODO
Stdout // can be used to capture and display log output
)
func (s WidgetType) String() string {
@ -80,8 +79,6 @@ func (s WidgetType) String() string {
return "Spinner"
case Separator:
return "Separator"
case Table:
return "Table"
case Image:
return "Image"
case Area: