summaryrefslogtreecommitdiff
path: root/sysdata_darwin.go
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2014-03-02 17:44:13 -0500
committerPietro Gagliardi <[email protected]>2014-03-02 17:44:13 -0500
commit234b724403bb93171a0eac72a8c24db3879c5900 (patch)
treec92f53c3757719cb58f671b049c06501428658c4 /sysdata_darwin.go
parent01e587174144ed4b6b5383346fdf2697f86f9423 (diff)
Added the other Combobox modification functions to the Mac OS X backend. Before continuing, I'll get messageboxes working...
Diffstat (limited to 'sysdata_darwin.go')
-rw-r--r--sysdata_darwin.go32
1 files changed, 30 insertions, 2 deletions
diff --git a/sysdata_darwin.go b/sysdata_darwin.go
index 311827e..88d9ddb 100644
--- a/sysdata_darwin.go
+++ b/sysdata_darwin.go
@@ -25,6 +25,9 @@ type classData struct {
textsel C.SEL
alttextsel C.SEL
append func(id C.id, what string, alternate bool)
+ insertBefore func(id C.id, what string, before int, alternate bool)
+ // TODO others
+ delete func(id C.id, index int)
}
var (
@@ -169,6 +172,17 @@ var classTypes = [nctypes]*classData{
C.objc_msgSend_id(id, _addItemWithTitle, str)
}
},
+ insertBefore: func(id C.id, what string, before int, alternate bool) {
+ str := toNSString(what)
+ if alternate {
+ C.objc_msgSend_id_int(id, _insertItemWithObjectValueAtIndex, str, C.intptr_t(before))
+ } else {
+ C.objc_msgSend_id_int(id, _insertItemWithTitleAtIndex, str, C.intptr_t(before))
+ }
+ },
+ delete: func(id C.id, index int) {
+ C.objc_msgSend_int(id, _removeItemAtIndex, C.intptr_t(index))
+ },
},
c_lineedit: &classData{
},
@@ -315,7 +329,14 @@ if classTypes[s.ctype].append == nil { return nil }
}
func (s *sysData) insertBefore(what string, before int) error {
- // TODO
+if classTypes[s.ctype].insertBefore == nil { return nil }
+ ret := make(chan struct{})
+ defer close(ret)
+ uitask <- func() {
+ classTypes[s.ctype].insertBefore(s.id, what, before, s.alternate)
+ ret <- struct{}{}
+ }
+ <-ret
return nil
}
@@ -350,7 +371,14 @@ func (s *sysData) setWindowSize(width int, height int) error {
}
func (s *sysData) delete(index int) error {
- // TODO
+if classTypes[s.ctype].delete == nil { return nil }
+ ret := make(chan struct{})
+ defer close(ret)
+ uitask <- func() {
+ classTypes[s.ctype].delete(s.id, index)
+ ret <- struct{}{}
+ }
+ <-ret
return nil
}