diff options
| author | Pietro Gagliardi <[email protected]> | 2014-02-14 16:25:39 -0500 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2014-02-14 16:25:39 -0500 |
| commit | 88646445b02da6be218e7059b6c0ef72ab3cf98c (patch) | |
| tree | 4ffa4d51929f123001d41921eea899643c3f88ad /listbox.go | |
| parent | 61d7f285ac3ba1e2da84e1b8323cb45b0e8fd799 (diff) | |
Added Listboxes. You can't use the results just yet...
Diffstat (limited to 'listbox.go')
| -rw-r--r-- | listbox.go | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/listbox.go b/listbox.go new file mode 100644 index 0000000..6de4cb2 --- /dev/null +++ b/listbox.go @@ -0,0 +1,57 @@ +// 14 february 2014 +//package ui +package main + +import ( + "sync" +) + +// A Listbox is a vertical list of items, of which one or (optionally) more items can be selected at any given time. +type Listbox struct { + // TODO Select event + + lock sync.Mutex + created bool + sysData *sysData + initItems []string +} + +// NewCombobox makes a new combobox with the given items. If multiple is true, the listbox allows multiple selection. +func NewListbox(multiple bool, items ...string) (l *Listbox) { + l = &Listbox{ + sysData: mksysdata(c_listbox), + initItems: items, + } + l.sysData.alternate = multiple + return l +} + +// TODO Append, InsertBefore, Delete + +// TODO Selection + +// TODO SelectedIndices + +func (l *Listbox) make(window *sysData) (err error) { + l.lock.Lock() + defer l.lock.Unlock() + + err = l.sysData.make("", 300, 300, window) + if err != nil { + return err + } + for _, s := range l.initItems { + err = l.sysData.append(s) + if err != nil { + return err + } + } + return nil +} + +func (l *Listbox) setRect(x int, y int, width int, height int) error { + l.lock.Lock() + defer l.lock.Unlock() + + return l.sysData.setRect(x, y, width, height) +} |
