summaryrefslogtreecommitdiff
path: root/checkbox.go
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2014-02-13 12:26:43 -0500
committerPietro Gagliardi <[email protected]>2014-02-13 12:26:43 -0500
commitf3c77bda6e720fe7750fc3db2aa38f8b74faf585 (patch)
tree39179c1299e4a28717645776c208ccf1c28c4005 /checkbox.go
parentc36c863fe11d08b915aa51de96313d5d5049fd97 (diff)
Added checkboxes. You can't really do anything with them yet, though...
Diffstat (limited to 'checkbox.go')
-rw-r--r--checkbox.go57
1 files changed, 57 insertions, 0 deletions
diff --git a/checkbox.go b/checkbox.go
new file mode 100644
index 0000000..cd9a896
--- /dev/null
+++ b/checkbox.go
@@ -0,0 +1,57 @@
+// 13 february 2014
+//package ui
+package main
+
+import (
+ "sync"
+)
+
+// A Checkbox is a clickable square with a label. The square can be either checked or unchecked.
+type Checkbox struct {
+ // TODO provide a channel for broadcasting check changes
+
+ lock sync.Mutex
+ 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: &sysData{
+ cSysData: cSysData{
+ ctype: c_checkbox,
+ },
+ },
+ initText: text,
+ }
+}
+
+// SetText sets the checkbox's text.
+func (c *Checkbox) SetText(text string) (err error) {
+ c.lock.Lock()
+ defer c.lock.Unlock()
+
+ // TODO handle created
+ c.initText = text
+ return nil
+}
+
+// TODO Checked()
+
+func (c *Checkbox) apply(window *sysData) error {
+ c.lock.Lock()
+ defer c.lock.Unlock()
+
+ return c.sysData.make(c.initText, 300, 300, window)
+ // TODO size to parent size
+}
+
+func (c *Checkbox) setRect(x int, y int, width int, height int) error {
+ c.lock.Lock()
+ defer c.lock.Unlock()
+
+ return c.sysData.setRect(x, y, width, height)
+}