main window call process_traceset for each viewer
[lttv.git] / ltt / branches / poly / lttv / modules / gui / mainWin / src / callbacks.c
index df9aa693072b9109ac23c9ec84b8c6e2ed1cf2b6..5fa2a787dff3d6f87cd1d53a51d6b154daf206bb 100644 (file)
@@ -16,6 +16,7 @@
 #include <lttv/gtkdirsel.h>
 #include <lttv/iattribute.h>
 #include <lttv/lttvfilter.h>
+#include <ltt/trace.h>
 
 #define PATH_LENGTH          256
 #define DEFAULT_TIME_WIDTH_S   1
@@ -48,6 +49,9 @@ void add_trace_into_traceset_selector(GtkMultiVPaned * paned, LttTrace * trace);
 
 LttvTracesetSelector * construct_traceset_selector(LttvTraceset * traceset);
 
+void redraw_viewer(MainWindow * mw_data, TimeWindow * time_window, unsigned nb_events);
+
+
 enum {
   CHECKBOX_COLUMN,
   NAME_COLUMN,
@@ -126,6 +130,9 @@ void insert_viewer(GtkWidget* widget, view_constructor constructor)
   MainWindow * mw_data;  
   GtkWidget * viewer;
   LttvTracesetSelector  * s;
+  unsigned * size;
+  TimeInterval * time_interval;
+  TimeWindow  time_window;
 
   mw_data = get_window_data_struct(widget);
   if(!mw_data->current_tab) return;
@@ -138,6 +145,19 @@ void insert_viewer(GtkWidget* widget, view_constructor constructor)
     gtk_multi_vpaned_widget_add(multi_vpaned, viewer); 
     // Added by MD
     //    g_object_unref(G_OBJECT(viewer));
+
+    size = (unsigned*)g_object_get_data(G_OBJECT(viewer), MAX_NUMBER_EVENT);
+    if(size == NULL) *size = G_MAXULONG;
+
+    time_window = mw_data->current_tab->time_window;
+    time_interval = (TimeInterval*)g_object_get_data(G_OBJECT(viewer), TRACESET_TIME_SPAN);
+    if(time_interval){
+      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, *size);
+    set_current_time(mw_data,&(mw_data->current_tab->current_time));
   }
 }
 
@@ -265,6 +285,19 @@ void open_traceset(GtkWidget * widget, gpointer user_data)
 
 }
 
+void redraw_viewer(MainWindow * mw_data, TimeWindow * time_window, unsigned nb_events)
+{
+  //update time window of each viewer, let viewer insert hooks needed by process_traceset
+  set_time_window(mw_data, time_window);
+
+  process_traceset_api(mw_data, time_window->start_time, 
+                      ltt_time_add(time_window->start_time,time_window->time_width),
+                      nb_events);
+
+  //call hooks to show each viewer and let them remove hooks
+  show_viewer(mw_data);  
+}
+
 void add_trace_into_traceset_selector(GtkMultiVPaned * paned, LttTrace * t)
 {
   int j, nb_tracefile, nb_control, nb_per_cpu;
@@ -333,7 +366,8 @@ void add_trace(GtkWidget * widget, gpointer user_data)
       gtk_widget_destroy((GtkWidget*)file_selector);
       
       //update current tab
-      //      set_current_time(mw_data, &(mw_data->current_tab->current_time));
+      redraw_viewer(mw_data, &(mw_data->current_tab->time_window), G_MAXULONG);
+      set_current_time(mw_data,&(mw_data->current_tab->current_time));
       break;
     case GTK_RESPONSE_REJECT:
     case GTK_RESPONSE_CANCEL:
@@ -378,7 +412,7 @@ void remove_trace(GtkWidget * widget, gpointer user_data)
     trace_v = lttv_traceset_get(mw_data->current_tab->
                                traceset_info->traceset, i);
     trace = lttv_trace(trace_v);
-    name[i] = trace->pathname;
+    name[i] = ltt_trace_name(trace);
   }
 
   remove_trace_name = get_remove_trace(name, nb_trace);
@@ -424,7 +458,8 @@ void remove_trace(GtkWidget * widget, gpointer user_data)
                            LTTV_TRACESET_CONTEXT(mw_data->current_tab->
                                      traceset_info->traceset_context),traceset);      
          //update current tab
-         //      set_current_time(mw_data, &(mw_data->current_tab->current_time));
+         redraw_viewer(mw_data, &(mw_data->current_tab->time_window), G_MAXULONG);
+         set_current_time(mw_data,&(mw_data->current_tab->current_time));
        }
        break;
       }
@@ -475,7 +510,8 @@ void zoom(GtkWidget * widget, double size)
     }
     time_window.start_time = time_s;    
   }
-  set_time_window(mw_data, &time_window);
+  redraw_viewer(mw_data, &time_window, G_MAXULONG);
+  set_current_time(mw_data,&(mw_data->current_tab->current_time));
   gtk_multi_vpaned_set_adjust(mw_data->current_tab->multi_vpaned, FALSE);
 }
 
This page took 0.02513 seconds and 4 git commands to generate.