X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2Fgui%2FmainWin%2Fsrc%2Fcallbacks.c;h=6a50d79de536c942250a417933e7f8b7e791a54b;hb=182b38e3c4dfe6b5a762aeee8e56cc6800ca59fc;hp=9a62b515c331c19c982e32bf83518e3c9a9584fb;hpb=a8c0f09de06b94e9420d286e1541c39092fff434;p=lttv.git diff --git a/ltt/branches/poly/lttv/modules/gui/mainWin/src/callbacks.c b/ltt/branches/poly/lttv/modules/gui/mainWin/src/callbacks.c index 9a62b515..6a50d79d 100644 --- a/ltt/branches/poly/lttv/modules/gui/mainWin/src/callbacks.c +++ b/ltt/branches/poly/lttv/modules/gui/mainWin/src/callbacks.c @@ -17,6 +17,7 @@ #include #include #include +#include #define PATH_LENGTH 256 #define DEFAULT_TIME_WIDTH_S 1 @@ -70,10 +71,14 @@ LttvTracesetSelector * construct_traceset_selector(LttvTraceset * traceset) LttvTracesetSelector * s; LttvTraceSelector * trace; LttvTracefileSelector * tracefile; - int i, j, nb_trace, nb_tracefile, nb_control, nb_per_cpu; + LttvEventtypeSelector * eventtype; + int i, j, k, m; + int nb_trace, nb_tracefile, nb_control, nb_per_cpu, nb_facility, nb_event; LttvTrace * trace_v; LttTrace * t; LttTracefile *tf; + LttFacility * fac; + LttEventType * et; s = lttv_traceset_selector_new(lttv_traceset_name(traceset)); nb_trace = lttv_traceset_number(traceset); @@ -81,7 +86,19 @@ LttvTracesetSelector * construct_traceset_selector(LttvTraceset * traceset) trace_v = lttv_traceset_get(traceset, i); t = lttv_trace(trace_v); trace = lttv_trace_selector_new(t); - lttv_traceset_selector_add(s, trace); + lttv_traceset_selector_trace_add(s, trace); + + nb_facility = ltt_trace_facility_number(t); + for(k=0;kcurrent_tab) return; @@ -133,12 +151,16 @@ void insert_viewer(GtkWidget* widget, view_constructor constructor) time_window = mw_data->current_tab->time_window; time_interval = (TimeInterval*)g_object_get_data(G_OBJECT(viewer), TRACESET_TIME_SPAN); if(time_interval){ + t = time_window; time_window.start_time = time_interval->startTime; time_window.time_width = ltt_time_sub(time_interval->endTime,time_interval->startTime); } redraw_viewer(mw_data,&time_window); set_current_time(mw_data,&(mw_data->current_tab->current_time)); + if(time_interval){ + set_time_window(mw_data,&t); + } } } @@ -318,19 +340,34 @@ void redraw_viewer(MainWindow * mw_data, TimeWindow * time_window) void add_trace_into_traceset_selector(GtkMultiVPaned * paned, LttTrace * t) { - int j, nb_tracefile, nb_control, nb_per_cpu; + int j, k, m, nb_tracefile, nb_control, nb_per_cpu, nb_facility, nb_event; LttvTracesetSelector * s; LttvTraceSelector * trace; LttvTracefileSelector * tracefile; + LttvEventtypeSelector * eventtype; LttTracefile * tf; GtkWidget * w; + LttFacility * fac; + LttEventType * et; w = gtk_multi_vpaned_get_first_widget(paned); while(w){ s = g_object_get_data(G_OBJECT(w), "Traceset_Selector"); trace = lttv_trace_selector_new(t); - lttv_traceset_selector_add(s, trace); + lttv_traceset_selector_trace_add(s, trace); + + nb_facility = ltt_trace_facility_number(t); + for(k=0;kcurrent_tab->multi_vpaned); s = g_object_get_data(G_OBJECT(w), "Traceset_Selector"); - t = lttv_traceset_selector_get(s,i); + t = lttv_traceset_selector_trace_get(s,i); lttv_trace_selector_set_selected(t, FALSE); //check if other viewers select the trace w = gtk_multi_vpaned_get_first_widget(mw_data->current_tab->multi_vpaned); while(w){ s = g_object_get_data(G_OBJECT(w), "Traceset_Selector"); - t = lttv_traceset_selector_get(s,i); + t = lttv_traceset_selector_trace_get(s,i); selected = lttv_trace_selector_get_selected(t); if(selected)break; w = gtk_multi_vpaned_get_next_widget(mw_data->current_tab->multi_vpaned); @@ -1074,6 +1112,40 @@ on_MWindow_destroy (GtkObject *object, gtk_main_quit (); } +gboolean +on_MWindow_configure (GtkWidget *widget, + GdkEventConfigure *event, + gpointer user_data) +{ + MainWindow * mw_data = get_window_data_struct((GtkWidget*)widget); + float width = event->width; + Tab * tab = mw_data->tab; + TimeWindow time_win; + double ratio; + TimeInterval *time_span; + LttTime time; + + // MD : removed time width modification upon resizing of the main window. + // The viewers will redraw themselves completely, without time interval + // modification. +/* while(tab){ + if(mw_data->window_width){ + time_span = LTTV_TRACESET_CONTEXT(tab->traceset_info->traceset_context)->Time_Span ; + time_win = tab->time_window; + ratio = width / mw_data->window_width; + tab->time_window.time_width = ltt_time_mul(time_win.time_width,ratio); + time = ltt_time_sub(time_span->endTime, time_win.start_time); + if(ltt_time_compare(time, tab->time_window.time_width) < 0){ + tab->time_window.time_width = time; + } + } + tab = tab->next; + } + + mw_data->window_width = (int)width; + */ + return FALSE; +} void on_MNotebook_switch_page (GtkNotebook *notebook, @@ -1110,24 +1182,56 @@ void checkbox_changed(GtkTreeView *treeview, void update_filter(LttvTracesetSelector *s, GtkTreeStore *store ) { - GtkTreeIter iter, child_iter; - int i, j; + GtkTreeIter iter, child_iter, child_iter1, child_iter2; + int i, j, k, nb_eventtype; LttvTraceSelector * trace; LttvTracefileSelector * tracefile; - gboolean value, value1; + LttvEventtypeSelector * eventtype; + gboolean value, value1, value2; if(gtk_tree_model_get_iter_first((GtkTreeModel*)store, &iter)){ i = 0; do{ - trace = lttv_traceset_selector_get(s, i); + trace = lttv_traceset_selector_trace_get(s, i); + nb_eventtype = lttv_trace_selector_eventtype_number(trace); gtk_tree_model_get ((GtkTreeModel*)store, &iter, CHECKBOX_COLUMN, &value,-1); if(value){ j = 0; if(gtk_tree_model_iter_children ((GtkTreeModel*)store, &child_iter, &iter)){ do{ - tracefile = lttv_trace_selector_get(trace, j); - gtk_tree_model_get ((GtkTreeModel*)store, &child_iter, CHECKBOX_COLUMN, &value1,-1); - lttv_tracefile_selector_set_selected(tracefile,value1); + if(j<1){//eventtype selector for trace + gtk_tree_model_get ((GtkTreeModel*)store, &child_iter, CHECKBOX_COLUMN, &value2,-1); + if(value2){ + k=0; + if(gtk_tree_model_iter_children ((GtkTreeModel*)store, &child_iter1, &child_iter)){ + do{ + eventtype = lttv_trace_selector_eventtype_get(trace,k); + gtk_tree_model_get ((GtkTreeModel*)store, &child_iter1, CHECKBOX_COLUMN, &value2,-1); + lttv_eventtype_selector_set_selected(eventtype,value2); + k++; + }while(gtk_tree_model_iter_next((GtkTreeModel*)store, &child_iter1)); + } + } + }else{ //tracefile selector + tracefile = lttv_trace_selector_tracefile_get(trace, j - 1); + gtk_tree_model_get ((GtkTreeModel*)store, &child_iter, CHECKBOX_COLUMN, &value1,-1); + lttv_tracefile_selector_set_selected(tracefile,value1); + if(value1){ + gtk_tree_model_iter_children((GtkTreeModel*)store, &child_iter1, &child_iter); //eventtype selector + gtk_tree_model_get ((GtkTreeModel*)store, &child_iter1, CHECKBOX_COLUMN, &value2,-1); + if(value2){ + k = 0; + if(gtk_tree_model_iter_children ((GtkTreeModel*)store, &child_iter2, &child_iter1)){ + do{//eventtype selector for tracefile + eventtype = lttv_tracefile_selector_eventtype_get(tracefile,k); + gtk_tree_model_get ((GtkTreeModel*)store, &child_iter2, CHECKBOX_COLUMN, &value2,-1); + lttv_eventtype_selector_set_selected(eventtype,value2); + k++; + }while(gtk_tree_model_iter_next((GtkTreeModel*)store, &child_iter2)); + } + } + } + } j++; }while(gtk_tree_model_iter_next((GtkTreeModel*)store, &child_iter)); } @@ -1146,10 +1250,11 @@ gboolean get_filter_selection(LttvTracesetSelector *s,char *title, char * column GtkWidget * scroll_win; GtkCellRenderer * renderer; GtkTreeViewColumn * column; - GtkTreeIter iter, child_iter; - int i, j, id, nb_trace, nb_tracefile; + 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; @@ -1159,7 +1264,7 @@ gboolean get_filter_selection(LttvTracesetSelector *s,char *title, char * column GTK_STOCK_OK,GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL,GTK_RESPONSE_REJECT, NULL); - gtk_window_set_default_size((GtkWindow*)dialogue, 300, 100); + 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)); @@ -1201,9 +1306,9 @@ gboolean get_filter_selection(LttvTracesetSelector *s,char *title, char * column gtk_widget_show(scroll_win); gtk_widget_show(tree); - nb_trace = lttv_traceset_selector_number(s); + nb_trace = lttv_traceset_selector_trace_number(s); for(i=0;i