diff options
Diffstat (limited to 'checkbox.go')
| -rw-r--r-- | checkbox.go | 57 |
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) +} |
