diff options
| author | Pietro Gagliardi <[email protected]> | 2014-02-16 16:23:49 -0500 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2014-02-16 16:23:49 -0500 |
| commit | c40b7b5599236a8e85f7bf610bfaebd4a609da0a (patch) | |
| tree | c449724ce99374be22ae5124d4c8e0a93cb7a52a /sysdata_unix.go | |
| parent | 21c1ec6f83fb2d5cb80c02c0cd7ed51bb4e06e3a (diff) | |
Added basic signal connection. I'm going to need to build a different callback system, though...
Diffstat (limited to 'sysdata_unix.go')
| -rw-r--r-- | sysdata_unix.go | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/sysdata_unix.go b/sysdata_unix.go index 363e3c8..3466a8a 100644 --- a/sysdata_unix.go +++ b/sysdata_unix.go @@ -18,12 +18,24 @@ type sysData struct { type classData struct { make func() *gtkWidget setText func(widget *gtkWidget, text string) + // ... + signals map[string]func(*sysData) interface{} } var classTypes = [nctypes]*classData{ c_window: &classData{ make: gtk_window_new, setText: gtk_window_set_title, + signals: map[string]func(*sysData) interface{}{ + "delete-event": func(w *sysData) interface{} { + return func(*gtkWidget, *gdkEvent, gpointer) bool { + if w.event != nil { + w.event <- struct{}{} + } + return true // do not close the window + } + }, + }, }, c_button: &classData{ // make: gtk_button_new, @@ -57,6 +69,9 @@ println(s.widget) uitask <- func() { fixed := gtk_fixed_new() gtk_container_add(s.widget, fixed) + for signal, generator := range ct.signals { + g_signal_connect(s.widget, signal, generator(s)) + } ret <- fixed } s.container = <-ret |
