Added checkboxes. You can't really do anything with them yet, though...
This commit is contained in:
parent
c36c863fe1
commit
f3c77bda6e
|
@ -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)
|
||||
}
|
8
main.go
8
main.go
|
@ -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 {
|
||||
|
|
|
@ -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
|
||||
)
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue