Compare commits

..

6 Commits

Author SHA1 Message Date
Jeff Carr 642929aca1 add missing widget Actions 2025-03-03 00:13:13 -06:00
Jeff Carr a7cc6fa5d3 stub in widgetpb 2025-03-02 20:06:07 -06:00
Jeff Carr 59f97be98c subbed in tables 2025-02-13 20:11:32 -06:00
Jeff Carr d4b7cd32d4 goimport lint 2025-02-02 15:04:07 -06:00
Jeff Carr ad6bb0f1c1 notes to trigger build to downgrade golang to 1.20 2024-12-02 09:00:51 -06:00
Jeff Carr 73a1babad4 suggesting from the golang uber people 2024-02-27 23:49:08 -06:00
10 changed files with 87 additions and 61 deletions

View File

@ -1,4 +1,4 @@
all:
all: goimports vet
@echo
@echo This defines the primitive widgets
@echo
@ -19,3 +19,7 @@ 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,6 +8,7 @@ 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

@ -42,12 +42,15 @@ type Action struct {
// Make widgets fill up the space available
Expand bool
TablePB []byte // a table protobuf
WidgetPB []byte // a tree of widgets
}
type ActionType int // Add, SetText, Click, Hide, Append, Delete, etc
const (
Add ActionType = iota
Add ActionType = iota + 1
Delete
SetText
AddText
@ -109,6 +112,22 @@ 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 "ActionType.String() Error"
return "gui ActionType.String() Error. must be missing something in the code here"
}

2
doc.go
View File

@ -5,7 +5,6 @@ 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:
------------------------------ ^
@ -44,6 +43,7 @@ Horizontal means layout widgets like books on a bookshelf
---------------------------------
Vertical means layout widgets like books in a stack
----------
| Widget |
----------

View File

@ -25,6 +25,7 @@ Horizontal means layout widgets like books on a bookshelf
---------------------------------
Vertical means layout widgets like books in a stack
----------
| Widget |
----------
@ -51,5 +52,4 @@ func (s Orientation) String() string {
default:
return "Horizontal"
}
return "Horizontal"
}

View File

@ -56,7 +56,6 @@ 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
@ -89,7 +88,6 @@ 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
@ -121,5 +119,4 @@ func GetInt(A any) int {
// log.Warn("getString uknown kind", k, "value =", A)
return -1
}
return -1
}

View File

@ -1,5 +1,7 @@
package widget
// TODO: redo this with protocol buffers
// This is the state of the widget
// The whole state of the widget is sent

View File

@ -16,7 +16,7 @@ package widget
type WidgetType int // Button, Menu, Checkbox, etc.
const (
Unknown WidgetType = iota
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
@ -33,6 +33,7 @@ const (
Textbox // is this a Label with edit=true
Slider // like a progress bar
Spinner // like setting the oven temperature
Table // a full window & table
Separator // TODO
Image // TODO
Area // TODO
@ -79,6 +80,8 @@ func (s WidgetType) String() string {
return "Spinner"
case Separator:
return "Separator"
case Table:
return "Table"
case Image:
return "Image"
case Area: