widget/state.go

78 lines
1.9 KiB
Go

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
// for widgets that have on/off things
Checked bool
//
// 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
// this tells the toolkit to hide the widget from being displayed
// again, this is different than Visable. The hidden state is
// specifically ONLY for the gui toolkit
Hidden bool
// is the widget usable by the user?
Enable bool
// if false, pack things as tightly as possible
Pad bool
// trys to fill up available space
Expand bool
// for toolkits with borderless window options
Borderless 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
}