From 88646445b02da6be218e7059b6c0ef72ab3cf98c Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Fri, 14 Feb 2014 16:25:39 -0500 Subject: Added Listboxes. You can't use the results just yet... --- listbox.go | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 listbox.go (limited to 'listbox.go') 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) +} -- cgit v1.2.3