From f3c77bda6e720fe7750fc3db2aa38f8b74faf585 Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Thu, 13 Feb 2014 12:26:43 -0500 Subject: Added checkboxes. You can't really do anything with them yet, though... --- checkbox.go | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 checkbox.go (limited to 'checkbox.go') 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) +} -- cgit v1.2.3