summaryrefslogtreecommitdiff
path: root/widget.go
blob: 2ff7773fce353b75fb2881eedfed962d080bbdd0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package widget

// passes information between the gui package and the toolkit plugins
//
// This is the only thing that is passed between the toolkit plugin
//
// what names should be used? This is not part of [[Graphical Widget]]
// Event() seems like a good name.
//	Event is used too much: web dev, cloud, etc
//	I'm using "Action". Maybe it should really be
//	"Interaction" as per wikipedia [[User interface]]
//
// TODO: convert this to a protobuf (?)
//

type WidgetType int // Button, Menu, Checkbox, etc.

const (
	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
	Separator // TODO
	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 {
	switch s {
	case Root:
		return "Root"
	case Flag:
		return "Flag"
	case Window:
		return "Window"
	case Tab:
		return "Tab"
	case Frame:
		return "Frame"
	case Grid:
		return "Grid"
	case Group:
		return "Group"
	case Box:
		return "Box"
	case Button:
		return "Button"
	case Checkbox:
		return "Checkbox"
	case Dropdown:
		return "Dropdown"
	case Combobox:
		return "Combobox"
	case Label:
		return "Label"
	case Textbox:
		return "Textbox"
	case Slider:
		return "Slider"
	case Spinner:
		return "Spinner"
	case Separator:
		return "Separator"
	case Image:
		return "Image"
	case Area:
		return "Area"
	case Form:
		return "Form"
	case Font:
		return "Font"
	case Color:
		return "Color"
	case Dialog:
		return "Dialog"
	case Stdout:
		return "Stdout"
	case Unknown:
		return "Unknown"
	}
	return "WidgetType.String() Error"
}