summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2024-01-17 21:05:52 -0600
committerJeff Carr <[email protected]>2024-01-17 21:05:52 -0600
commitd91e80a9eabf79cc376c725aaf3a877856faa6b9 (patch)
treeda31050456b7c6f53de8e8a5748f94ee85343605
parent38595e75f2f35ecce9cc6a8d887f393d34975957 (diff)
works with new toolkit and gui changesv1.1.4
Signed-off-by: Jeff Carr <[email protected]>
-rw-r--r--action.go9
-rw-r--r--reflect.go5
-rw-r--r--state.go63
3 files changed, 74 insertions, 3 deletions
diff --git a/action.go b/action.go
index 9dfb6c8..7db5371 100644
--- a/action.go
+++ b/action.go
@@ -7,6 +7,8 @@ type Action struct {
WidgetId int
ParentId int
+ State State
+
// Text string // what is visable to the user
ProgName string // a name useful for programming
@@ -67,8 +69,11 @@ const (
Move
Dump
User // the user did something (mouse, keyboard, etc)
- InitToolkit // initializes the toolkit
- CloseToolkit // closes the toolkit
+ ToolkitLoad // attempts to load a new toolkit
+ ToolkitInit // initializes the toolkit
+ ToolkitClose // closes the toolkit
+ ToolkitPanic
+ CloseWindow
UserQuit // the user closed the GUI
EnableDebug // open the debugging window
)
diff --git a/reflect.go b/reflect.go
index 6336b2b..c2d301a 100644
--- a/reflect.go
+++ b/reflect.go
@@ -106,7 +106,10 @@ func GetInt(A any) int {
return A.(int)
case reflect.String:
tmp := A.(string)
- i, _ := strconv.Atoi(tmp)
+ i, err := strconv.Atoi(tmp)
+ if err != nil {
+ return -1
+ }
return i
case reflect.Bool:
if A.(bool) {
diff --git a/state.go b/state.go
new file mode 100644
index 0000000..bb460b4
--- /dev/null
+++ b/state.go
@@ -0,0 +1,63 @@
+package widget
+
+// This is the state of the widget
+
+// The whole state of the widget is sent
+// when the widget action is Add() or Show()
+
+// Range(1, 10) includes the values 1 and 10
+// almost all toolkits use integers so there doesn't
+// seem to be a good idea to use 'type any' here as it
+// 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
+
+ // most primitive widgets just store a single thing
+ // it is the default value
+ Value any
+
+ // how to arrange widgets
+ Direction Orientation
+
+ //
+ // This is complicated. We must send a list of all the widgets
+ // in the binary tree to the toolkits because some toolkits
+ // must make the widgets exist and then hide them.
+ //
+ // However, when a widget is not visable, no updates to the
+ // widget is sent to the toolkit and no events from the
+ // widget are valid back to the program
+ //
+ Visable bool
+
+ // if false, pack things as tightly as possible
+ Pad bool
+
+ // trys to fill up available space
+ Expand bool
+
+ // All the strings for things like dropdown menus
+ // They must be sent in display order
+ // These must be unique
+ Strings []string
+
+ // for widgets that use a range
+ Range RangeType
+
+ Geom Geom
+ Size Size
+
+ GridSize GridSize
+ GridOffset GridOffset
+
+ // This is for the grid size & widget position
+ 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
+ ProgName string
+}