summaryrefslogtreecommitdiff
path: root/checkbox.go
diff options
context:
space:
mode:
Diffstat (limited to 'checkbox.go')
-rw-r--r--checkbox.go86
1 files changed, 86 insertions, 0 deletions
diff --git a/checkbox.go b/checkbox.go
new file mode 100644
index 0000000..1293dfc
--- /dev/null
+++ b/checkbox.go
@@ -0,0 +1,86 @@
+// 13 february 2014
+
+package ui
+
+// A Checkbox is a clickable square with a label. The square can be either checked or unchecked. Checkboxes start out unchecked.
+type Checkbox struct {
+ created bool
+ sysData *sysData
+ initText string
+ initCheck bool
+}
+
+// NewCheckbox creates a new checkbox with the specified text.
+func NewCheckbox(text string) (c *Checkbox) {
+ return &Checkbox{
+ sysData: mksysdata(c_checkbox),
+ initText: text,
+ }
+}
+
+// SetText sets the checkbox's text.
+func (c *Checkbox) SetText(text string) {
+ if c.created {
+ c.sysData.setText(text)
+ return
+ }
+ c.initText = text
+}
+
+// Text returns the checkbox's text.
+func (c *Checkbox) Text() string {
+ if c.created {
+ return c.sysData.text()
+ }
+ return c.initText
+}
+
+// SetChecked() changes the checked state of the Checkbox.
+func (c *Checkbox) SetChecked(checked bool) {
+ if c.created {
+ c.sysData.setChecked(checked)
+ return
+ }
+ c.initCheck = checked
+}
+
+// Checked() returns whether or not the Checkbox has been checked.
+func (c *Checkbox) Checked() bool {
+ if c.created {
+ return c.sysData.isChecked()
+ }
+ return c.initCheck
+}
+
+func (c *Checkbox) make(window *sysData) error {
+ err := c.sysData.make(window)
+ if err != nil {
+ return err
+ }
+ c.sysData.setText(c.initText)
+ c.sysData.setChecked(c.initCheck)
+ c.created = true
+ return nil
+}
+
+func (c *Checkbox) allocate(x int, y int, width int, height int, d *sysSizeData) []*allocation {
+ return []*allocation{&allocation{
+ x: x,
+ y: y,
+ width: width,
+ height: height,
+ this: c,
+ }}
+}
+
+func (c *Checkbox) preferredSize(d *sysSizeData) (width int, height int) {
+ return c.sysData.preferredSize(d)
+}
+
+func (c *Checkbox) commitResize(a *allocation, d *sysSizeData) {
+ c.sysData.commitResize(a, d)
+}
+
+func (c *Checkbox) getAuxResizeInfo(d *sysSizeData) {
+ c.sysData.getAuxResizeInfo(d)
+}