Added checkboxes. You can't really do anything with them yet, though...

This commit is contained in:
Pietro Gagliardi 2014-02-13 12:26:43 -05:00
parent c36c863fe1
commit f3c77bda6e
4 changed files with 71 additions and 0 deletions

57
checkbox.go Normal file
View File

@ -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)
}

View File

@ -9,6 +9,14 @@ func main() {
if err != nil {
panic(err)
}
w2 := NewWindow("Checkbox Window", 200, 100)
c := NewCheckbox("Check Me")
err = w2.Open(c)
if err != nil {
panic(err)
}
mainloop:
for {
select {

View File

@ -30,5 +30,6 @@ func (c *cSysData) setRect(x int, y int, width int, height int) error {
const (
c_window = iota
c_button
c_checkbox
nctypes
)

View File

@ -38,6 +38,11 @@ var classTypes = [nctypes]*classData{
style: _BS_PUSHBUTTON | controlstyle,
xstyle: 0 | controlxstyle,
},
c_checkbox: &classData{
name: "BUTTON",
style: _BS_AUTOCHECKBOX | controlstyle,
xstyle: 0 | controlxstyle,
},
}
func (s *sysData) addChild(child *sysData) _HMENU {