diff options
| author | Pietro Gagliardi <[email protected]> | 2014-08-20 21:30:23 -0400 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2014-08-20 21:30:23 -0400 |
| commit | 607b49482ee92cd18bd5ac4d3a5bbc4183efb2af (patch) | |
| tree | e62e684eda8f37ce89950657bd7bef9140f8d74a /redo/table_unix.go | |
| parent | b964c564e7a7d7a460dbcf922f4ceeb5368def50 (diff) | |
Implemented Table.OnSelected() on the GTK+ backend.
Diffstat (limited to 'redo/table_unix.go')
| -rw-r--r-- | redo/table_unix.go | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/redo/table_unix.go b/redo/table_unix.go index 95bafdf..8fa18bc 100644 --- a/redo/table_unix.go +++ b/redo/table_unix.go @@ -12,6 +12,7 @@ import ( // #include "gtk_unix.h" // extern void goTableModel_toggled(GtkCellRendererToggle *, gchar *, gpointer); +// extern void tableSelectionChanged(GtkTreeSelection *, gpointer); import "C" type table struct { @@ -27,6 +28,8 @@ type table struct { pixbufs []*C.GdkPixbuf + selected *event + // stuff required by GtkTreeModel nColumns C.gint old C.gint @@ -48,11 +51,17 @@ func finishNewTable(b *tablebase, ty reflect.Type) Table { _widget: widget, treeview: (*C.GtkTreeView)(unsafe.Pointer(widget)), crtocol: make(map[*C.GtkCellRendererToggle]int), + selected: newEvent(), } model := C.newTableModel(unsafe.Pointer(t)) t.model = model t.modelgtk = (*C.GtkTreeModel)(unsafe.Pointer(model)) t.selection = C.gtk_tree_view_get_selection(t.treeview) + g_signal_connect( + C.gpointer(unsafe.Pointer(t.selection)), + "changed", + C.GCallback(C.tableSelectionChanged), + C.gpointer(unsafe.Pointer(t))) C.gtk_tree_view_set_model(t.treeview, t.modelgtk) for i := 0; i < ty.NumField(); i++ { cname := togstr(ty.Field(i).Name) @@ -139,6 +148,10 @@ func (t *table) Select(index int) { C.gtk_tree_selection_select_path(t.selection, path) } +func (t *table) OnSelected(f func()) { + t.selected.set(f) +} + //export goTableModel_get_n_columns func goTableModel_get_n_columns(model *C.GtkTreeModel) C.gint { tm := (*C.goTableModel)(unsafe.Pointer(model)) @@ -204,6 +217,12 @@ func goTableModel_toggled(cr *C.GtkCellRendererToggle, pathstr *C.gchar, data C. datum.SetBool(!datum.Bool()) } +//export tableSelectionChanged +func tableSelectionChanged(sel *C.GtkTreeSelection, data C.gpointer) { + t := (*table)(unsafe.Pointer(data)) + t.selected.fire() +} + func (t *table) widget() *C.GtkWidget { return t._widget } |
