summaryrefslogtreecommitdiff
path: root/widget.go
blob: 6b9849bff6fbf3546d6c97451f470f00c2390601 (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 + 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
	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"
}