-gboolean get_filter_selection(LttvTracesetSelector *s,char *title, char * column_title)
-{
- GtkWidget * dialogue;
- GtkTreeStore * store;
- GtkWidget * tree;
- GtkWidget * scroll_win;
- GtkCellRenderer * renderer;
- GtkTreeViewColumn * column;
- GtkTreeIter iter, child_iter, child_iter1, child_iter2;
- int i, j, k, id, nb_trace, nb_tracefile, nb_eventtype;
- LttvTraceSelector * trace;
- LttvTracefileSelector * tracefile;
- LttvEventtypeSelector * eventtype;
- char * name;
- gboolean checked;
-
- dialogue = gtk_dialog_new_with_buttons(title,
- NULL,
- GTK_DIALOG_MODAL,
- GTK_STOCK_OK,GTK_RESPONSE_ACCEPT,
- GTK_STOCK_CANCEL,GTK_RESPONSE_REJECT,
- NULL);
- gtk_window_set_default_size((GtkWindow*)dialogue, 300, 500);
-
- store = gtk_tree_store_new (TOTAL_COLUMNS, G_TYPE_BOOLEAN, G_TYPE_STRING);
- tree = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store));
- g_object_unref (G_OBJECT (store));
- g_signal_connect (G_OBJECT (tree), "row-activated",
- G_CALLBACK (checkbox_changed),
- NULL);
-
-
- renderer = gtk_cell_renderer_toggle_new ();
- gtk_cell_renderer_toggle_set_radio((GtkCellRendererToggle *)renderer, FALSE);
-
- g_object_set (G_OBJECT (renderer),"activatable", TRUE, NULL);
-
- column = gtk_tree_view_column_new_with_attributes ("Checkbox",
- renderer,
- "active", CHECKBOX_COLUMN,
- NULL);
- gtk_tree_view_column_set_alignment (column, 0.5);
- gtk_tree_view_column_set_fixed_width (column, 20);
- gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column);
-
- renderer = gtk_cell_renderer_text_new ();
- column = gtk_tree_view_column_new_with_attributes (column_title,
- renderer,
- "text", NAME_COLUMN,
- NULL);
- gtk_tree_view_column_set_alignment (column, 0.0);
- gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column);
- gtk_tree_view_set_headers_visible(GTK_TREE_VIEW (tree), FALSE);
-
- scroll_win = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll_win),
- GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
- gtk_container_add (GTK_CONTAINER (scroll_win), tree);
-
- gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialogue)->vbox), scroll_win,TRUE, TRUE,0);
-
- gtk_widget_show(scroll_win);
- gtk_widget_show(tree);
-
- nb_trace = lttv_traceset_selector_trace_number(s);
- for(i=0;i<nb_trace;i++){
- trace = lttv_traceset_selector_trace_get(s, i);
- name = lttv_trace_selector_get_name(trace);
- gtk_tree_store_append (store, &iter, NULL);
- checked = lttv_trace_selector_get_selected(trace);
- gtk_tree_store_set (store, &iter,
- CHECKBOX_COLUMN,checked,
- NAME_COLUMN,name,
- -1);
-
- gtk_tree_store_append (store, &child_iter, &iter);
- gtk_tree_store_set (store, &child_iter,
- CHECKBOX_COLUMN, checked,
- NAME_COLUMN,"eventtype",
- -1);
-
- nb_eventtype = lttv_trace_selector_eventtype_number(trace);
- for(j=0;j<nb_eventtype;j++){
- eventtype = lttv_trace_selector_eventtype_get(trace,j);
- name = lttv_eventtype_selector_get_name(eventtype);
- checked = lttv_eventtype_selector_get_selected(eventtype);
- gtk_tree_store_append (store, &child_iter1, &child_iter);
- gtk_tree_store_set (store, &child_iter1,
- CHECKBOX_COLUMN, checked,
- NAME_COLUMN,name,
- -1);
- }
-
- nb_tracefile = lttv_trace_selector_tracefile_number(trace);
- for(j=0;j<nb_tracefile;j++){
- tracefile = lttv_trace_selector_tracefile_get(trace, j);
- name = lttv_tracefile_selector_get_name(tracefile);
- gtk_tree_store_append (store, &child_iter, &iter);
- checked = lttv_tracefile_selector_get_selected(tracefile);
- gtk_tree_store_set (store, &child_iter,
- CHECKBOX_COLUMN, checked,
- NAME_COLUMN,name,
- -1);
-
- gtk_tree_store_append (store, &child_iter1, &child_iter);
- gtk_tree_store_set (store, &child_iter1,
- CHECKBOX_COLUMN, checked,
- NAME_COLUMN,"eventtype",
- -1);
-
- for(k=0;k<nb_eventtype;k++){
- eventtype = lttv_tracefile_selector_eventtype_get(tracefile,k);
- name = lttv_eventtype_selector_get_name(eventtype);
- checked = lttv_eventtype_selector_get_selected(eventtype);
- gtk_tree_store_append (store, &child_iter2, &child_iter1);
- gtk_tree_store_set (store, &child_iter2,
- CHECKBOX_COLUMN, checked,
- NAME_COLUMN,name,
- -1);
- }
- }
- }
-
- id = gtk_dialog_run(GTK_DIALOG(dialogue));
- switch(id){
- case GTK_RESPONSE_ACCEPT:
- case GTK_RESPONSE_OK:
- update_filter(s, store);
- gtk_widget_destroy(dialogue);
- return TRUE;
- case GTK_RESPONSE_REJECT:
- case GTK_RESPONSE_CANCEL:
- default:
- gtk_widget_destroy(dialogue);
- break;
- }
- return FALSE;
-}
-
-