ui/gtk/list.c

changeset 65
48f43130b4a2
parent 60
ee4e4742391e
equal deleted inserted replaced
64:98d0e2516f4e 65:48f43130b4a2
200 listview); 200 listview);
201 201
202 // bind var 202 // bind var
203 list->update = ui_listview_update; 203 list->update = ui_listview_update;
204 list->getselection = ui_listview_getselection; 204 list->getselection = ui_listview_getselection;
205 list->setselection = ui_listview_setselection;
205 list->obj = listview; 206 list->obj = listview;
206 207
207 // add callback 208 // add callback
209 UiTreeEventData *event = malloc(sizeof(UiTreeEventData));
210 event->obj = obj;
211 event->activate = args.onactivate;
212 event->activatedata = args.onactivatedata;
213 event->selection = args.onselection;
214 event->selectiondata = args.onselectiondata;
215 g_signal_connect(
216 view,
217 "destroy",
218 G_CALLBACK(ui_destroy_userdata),
219 event);
220
208 if(args.onactivate) { 221 if(args.onactivate) {
209 UiTreeEventData *event = ui_malloc(obj->ctx, sizeof(UiTreeEventData));
210 event->obj = obj;
211 event->activatedata = args.onactivatedata;
212 event->activate = args.onactivate;
213 event->selection = NULL;
214
215 g_signal_connect( 222 g_signal_connect(
216 view, 223 view,
217 "row-activated", 224 "row-activated",
218 G_CALLBACK(ui_listview_activate_event), 225 G_CALLBACK(ui_listview_activate_event),
219 event); 226 event);
220 } 227 }
228 if(args.onselection) {
229 GtkTreeSelection *selection = gtk_tree_view_get_selection(
230 GTK_TREE_VIEW(view));
231 g_signal_connect(
232 selection,
233 "changed",
234 G_CALLBACK(ui_listview_selection_event),
235 event);
236 }
237
221 238
222 // add widget to the current container 239 // add widget to the current container
223 GtkWidget *scroll_area = SCROLLEDWINDOW_NEW(); 240 GtkWidget *scroll_area = SCROLLEDWINDOW_NEW();
224 gtk_scrolled_window_set_policy( 241 gtk_scrolled_window_set_policy(
225 GTK_SCROLLED_WINDOW(scroll_area), 242 GTK_SCROLLED_WINDOW(scroll_area),
490 gtk_tree_view_get_selection(GTK_TREE_VIEW(view->widget)), 507 gtk_tree_view_get_selection(GTK_TREE_VIEW(view->widget)),
491 NULL); 508 NULL);
492 return selection; 509 return selection;
493 } 510 }
494 511
512 void ui_listview_setselection(UiList *list, UiListSelection selection) {
513 UiListView *view = list->obj;
514 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(view->widget));
515 GtkTreePath *path = gtk_tree_path_new_from_indicesv(selection.rows, selection.count);
516 gtk_tree_selection_select_path(sel, path);
517 //g_object_unref(path);
518 }
519
495 void ui_listview_destroy(GtkWidget *w, UiListView *v) { 520 void ui_listview_destroy(GtkWidget *w, UiListView *v) {
496 gtk_tree_view_set_model(GTK_TREE_VIEW(w), NULL); 521 gtk_tree_view_set_model(GTK_TREE_VIEW(w), NULL);
497 ui_destroy_boundvar(v->obj->ctx, v->var); 522 ui_destroy_boundvar(v->obj->ctx, v->var);
498 // TODO: destroy model? 523 // TODO: destroy model?
499 free(v); 524 free(v);

mercurial