Added Combobox.Delete() and Listbox.Delete() and added some TODOs.
This commit is contained in:
parent
3c25b58652
commit
14aaad6be3
12
combobox.go
12
combobox.go
|
@ -53,7 +53,17 @@ func (c *Combobox) InsertBefore(what string, before int) (err error) {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO Delete
|
// Delete removes the given item from the Combobox.
|
||||||
|
func (c *Combobox) Delete(index int) error {
|
||||||
|
c.lock.Lock()
|
||||||
|
defer c.lock.Unlock()
|
||||||
|
|
||||||
|
if c.created {
|
||||||
|
return c.sysData.delete(index)
|
||||||
|
}
|
||||||
|
c.initItems = append(c.initItems[:index], c.initItems[index + 1:]...)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// Selection returns the current selection.
|
// Selection returns the current selection.
|
||||||
func (c *Combobox) Selection() string {
|
func (c *Combobox) Selection() string {
|
||||||
|
|
12
listbox.go
12
listbox.go
|
@ -53,6 +53,18 @@ func (l *Listbox) InsertBefore(what string, before int) (err error) {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Delete removes the given item from the Listbox.
|
||||||
|
func (l *Listbox) Delete(index int) error {
|
||||||
|
l.lock.Lock()
|
||||||
|
defer l.lock.Unlock()
|
||||||
|
|
||||||
|
if l.created {
|
||||||
|
return l.sysData.delete(index)
|
||||||
|
}
|
||||||
|
l.initItems = append(l.initItems[:index], l.initItems[index + 1:]...)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// TODO Selection
|
// TODO Selection
|
||||||
|
|
||||||
// TODO SelectedIndices
|
// TODO SelectedIndices
|
||||||
|
|
9
main.go
9
main.go
|
@ -9,12 +9,14 @@ func main() {
|
||||||
w := NewWindow("Main Window", 320, 240)
|
w := NewWindow("Main Window", 320, 240)
|
||||||
w.Closing = make(chan struct{})
|
w.Closing = make(chan struct{})
|
||||||
b := NewButton("Click Me")
|
b := NewButton("Click Me")
|
||||||
|
b2 := NewButton("Or Me")
|
||||||
|
s2 := NewStack(Horizontal, b, b2)
|
||||||
c := NewCheckbox("Check Me")
|
c := NewCheckbox("Check Me")
|
||||||
cb1 := NewCombobox(true, "You can edit me!", "Yes you can!", "Yes you will!")
|
cb1 := NewCombobox(true, "You can edit me!", "Yes you can!", "Yes you will!")
|
||||||
cb2 := NewCombobox(false, "You can't edit me!", "No you can't!", "No you won't!")
|
cb2 := NewCombobox(false, "You can't edit me!", "No you can't!", "No you won't!")
|
||||||
e := NewLineEdit("Enter text here too")
|
e := NewLineEdit("Enter text here too")
|
||||||
l := NewLabel("This is a label")
|
l := NewLabel("This is a label")
|
||||||
s0 := NewStack(Vertical, b, c, cb1, cb2, e, l)
|
s0 := NewStack(Vertical, s2, c, cb1, cb2, e, l)
|
||||||
lb := NewListbox(true, "Select One", "Or More", "To Continue")
|
lb := NewListbox(true, "Select One", "Or More", "To Continue")
|
||||||
lb2 := NewListbox(false, "Select", "Only", "One", "Please")
|
lb2 := NewListbox(false, "Select", "Only", "One", "Please")
|
||||||
i := 0
|
i := 0
|
||||||
|
@ -48,6 +50,11 @@ mainloop:
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
doAdjustments()
|
doAdjustments()
|
||||||
|
case <-b2.Clicked:
|
||||||
|
cb1.Delete(1)
|
||||||
|
cb2.Delete(2)
|
||||||
|
lb.Delete(3)
|
||||||
|
lb2.Delete(4)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
w.Hide()
|
w.Hide()
|
||||||
|
|
|
@ -51,6 +51,9 @@ func (c *cSysData) selectedTexts() []string {
|
||||||
func (c *cSysData) setWindowSize(int, int) error {
|
func (c *cSysData) setWindowSize(int, int) error {
|
||||||
panic(runtime.GOOS + " sysData does not define setWindowSize()")
|
panic(runtime.GOOS + " sysData does not define setWindowSize()")
|
||||||
}
|
}
|
||||||
|
func (c *cSysData) delete(int) error {
|
||||||
|
panic(runtime.GOOS + " sysData does not define delete()")
|
||||||
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
c_window = iota
|
c_window = iota
|
||||||
|
|
|
@ -467,3 +467,23 @@ func (s *sysData) setWindowSize(width int, height int) error {
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *sysData) delete(index int) (err error) {
|
||||||
|
ret := make(chan uiret)
|
||||||
|
defer close(ret)
|
||||||
|
uitask <- &uimsg{
|
||||||
|
call: _sendMessage,
|
||||||
|
p: []uintptr{
|
||||||
|
uintptr(s.hwnd),
|
||||||
|
uintptr(classTypes[s.ctype].deleteMsg),
|
||||||
|
uintptr(_WPARAM(index)),
|
||||||
|
uintptr(0),
|
||||||
|
},
|
||||||
|
ret: ret,
|
||||||
|
}
|
||||||
|
r := <-ret
|
||||||
|
if r.ret == uintptr(classTypes[s.ctype].selectedIndexErr) {
|
||||||
|
return fmt.Errorf("failed to delete item from combobox/listbox (last error: %v)", r.err)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
1
todo.md
1
todo.md
|
@ -17,6 +17,7 @@ so I don't forget:
|
||||||
- Combobox/Listbox.DeleteAll
|
- Combobox/Listbox.DeleteAll
|
||||||
- Combobox/Listbox.Select (with Listbox.Select allowing bulk)
|
- Combobox/Listbox.Select (with Listbox.Select allowing bulk)
|
||||||
- Listbox.SelectAll
|
- Listbox.SelectAll
|
||||||
|
- have Combobox.InsertBefore, Listbox.InsertBefore, Combobox.Delete, and Listbox.Delete return an error on invalid index
|
||||||
|
|
||||||
super ultra important things:
|
super ultra important things:
|
||||||
- the windows build appears to be unstable:
|
- the windows build appears to be unstable:
|
||||||
|
|
Loading…
Reference in New Issue