part 4
[lttv.git] / ltt / branches / poly / lttv / modules / gui / mainWin / src / gtkmultivpaned.c
index 9c59a319347a4de9fb92df2c83c68e3072da41ee..43d9d5c3481bfc528741c254b3371b64615afa5f 100644 (file)
@@ -66,6 +66,7 @@ gtk_multi_vpaned_init (GtkMultiVPaned * multi_vpaned)
   multi_vpaned->first_pane    = NULL;
   multi_vpaned->last_pane     = NULL;
   multi_vpaned->focused_pane  = NULL;
+  multi_vpaned->iter          = NULL;
   multi_vpaned->num_children  = 0;
 
   multi_vpaned->vbox         = NULL;
@@ -80,6 +81,39 @@ GtkWidget* gtk_multi_vpaned_new ()
   return GTK_WIDGET (g_object_new (gtk_multi_vpaned_get_type (), NULL));
 }
 
+GtkWidget * gtk_multi_vpaned_get_widget(GtkMultiVPaned * multi_vpaned)
+{
+  if(multi_vpaned->focused_pane == NULL)return NULL;
+  return (GtkWidget*)multi_vpaned->focused_pane->child2;
+}
+
+GtkWidget * gtk_multi_vpaned_get_first_widget(GtkMultiVPaned * multi_vpaned)
+{
+  if(multi_vpaned->first_pane == NULL)return NULL;
+  multi_vpaned->iter = multi_vpaned->first_pane;
+  return multi_vpaned->first_pane->child2;
+}
+
+GtkWidget * gtk_multi_vpaned_get_next_widget(GtkMultiVPaned * multi_vpaned)
+{
+  if(multi_vpaned->iter != multi_vpaned->last_pane){
+    multi_vpaned->iter = (GtkPaned *)multi_vpaned->iter->child1;
+    return multi_vpaned->iter->child2;
+  }else {
+    return NULL;
+  }
+}
+
+void gtk_multi_vpaned_set_data(GtkMultiVPaned * multi_vpaned,char * key, gpointer value)
+{
+  g_object_set_data(G_OBJECT(multi_vpaned->focused_pane), key, value);    
+}
+
+gpointer gtk_multi_vpaned_get_data(GtkMultiVPaned * multi_vpaned,char * key)
+{
+  if(multi_vpaned->focused_pane == NULL)return NULL;
+  return g_object_get_data(G_OBJECT(multi_vpaned->focused_pane), key);
+}
 
 void gtk_multi_vpaned_set_focus (GtkWidget * widget, gpointer user_data)
 {
@@ -167,7 +201,9 @@ void gtk_multi_vpaned_widget_add(GtkMultiVPaned * multi_vpaned, GtkWidget * widg
     gtk_multi_vpaned_set_adjust(multi_vpaned, TRUE);
 
     gtk_range_set_update_policy (GTK_RANGE(multi_vpaned->hscrollbar),
-                                  GTK_UPDATE_DISCONTINUOUS);
+                                                                                                                                GTK_UPDATE_CONTINUOUS);
+                                                                                                                                //changed by Mathieu Desnoyers, was :
+                                 // GTK_UPDATE_DISCONTINUOUS);
     g_signal_connect(G_OBJECT(multi_vpaned->hscrollbar), "value-changed",
                     G_CALLBACK(gtk_multi_vpaned_scroll_value_changed), multi_vpaned);
 
@@ -330,14 +366,40 @@ void gtk_multi_vpaned_widget_move_down(GtkMultiVPaned * multi_vpaned)
   g_object_unref(G_OBJECT(multi_vpaned->focused_pane));
 }
 
+void gtk_multi_vpaned_set_scroll_value(GtkMultiVPaned * multi_vpaned, double value)
+{
+  gtk_adjustment_set_value(multi_vpaned->hadjust, value);
+  g_signal_stop_emission_by_name(G_OBJECT(multi_vpaned->hscrollbar), "value-changed");  
+}
+
 void gtk_multi_vpaned_scroll_value_changed(GtkRange *range, gpointer multi_vpaned_arg)
 {
+  TimeWindow time_window;
+  TimeInterval *time_span;
   LttTime time;
   GtkMultiVPaned * multi_vpaned = (GtkMultiVPaned*)multi_vpaned_arg;
   gdouble value = gtk_range_get_value(range);
-  time = ltt_time_from_double(value / NANOSECONDS_PER_SECOND);
-  set_current_time(multi_vpaned->mw, &time);
-  g_warning("The current time is second :%d, nanosecond : %d\n", time.tv_sec, time.tv_nsec);
+  gdouble upper, lower, ratio;
+
+  time_window = multi_vpaned->mw->current_tab->time_window;
+
+  time_span = LTTV_TRACESET_CONTEXT(multi_vpaned->mw->current_tab->traceset_info->
+                                   traceset_context)->Time_Span ;
+  lower = multi_vpaned->hadjust->lower;
+  upper = multi_vpaned->hadjust->upper;
+  ratio = (value - lower) / (upper - lower);
+  
+  time = ltt_time_sub(time_span->endTime, time_span->startTime);
+  time = ltt_time_mul(time, (float)ratio);
+  time = ltt_time_add(time_span->startTime, time);
+
+  time_window.start_time = time;
+
+  time = ltt_time_sub(time_span->endTime, time);
+  if(ltt_time_compare(time,time_window.time_width) < 0){
+    time_window.time_width = time;
+  }
+  set_time_window(multi_vpaned->mw, &time_window); 
 }
 
 
This page took 0.024896 seconds and 4 git commands to generate.