X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2Fgui%2Fcontrolflow%2Fcfv.c;h=082a8ff934e7f5b49d238b01ebf74b37e9579544;hb=0de51231df955953661f9bf712394961524092d9;hp=ee0b37fda9b6d158ec204435c2c4aeb4f0944f61;hpb=665f0e65e5bde15cc2f29e9587ebf332ad2cb4a5;p=lttv.git diff --git a/ltt/branches/poly/lttv/modules/gui/controlflow/cfv.c b/ltt/branches/poly/lttv/modules/gui/controlflow/cfv.c index ee0b37fd..082a8ff9 100644 --- a/ltt/branches/poly/lttv/modules/gui/controlflow/cfv.c +++ b/ltt/branches/poly/lttv/modules/gui/controlflow/cfv.c @@ -16,23 +16,35 @@ * MA 02111-1307, USA. */ +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include #include +#include +#include #include "cfv.h" #include "drawing.h" #include "processlist.h" #include "eventhooks.h" -#include "cfv-private.h" -#include extern GSList *g_control_flow_data_list; -static void control_flow_grab_focus(GtkWidget *widget, gpointer data){ - ControlFlowData * control_flow_data = (ControlFlowData *)data; - MainWindow * mw = control_flow_data->mw; - lttvwindow_report_focus(mw, control_flow_data->scrolled_window); +static gboolean +header_size_allocate(GtkWidget *widget, + GtkAllocation *allocation, + gpointer user_data) +{ + Drawing_t *drawing = (Drawing_t*)user_data; + + gtk_widget_set_size_request(drawing->ruler, -1, allocation->height); + //gtk_widget_queue_resize(drawing->padding); + //gtk_widget_queue_resize(drawing->ruler); + gtk_container_check_resize(GTK_CONTAINER(drawing->ruler_hbox)); + return 0; } @@ -54,6 +66,14 @@ guicontrolflow(void) ControlFlowData* control_flow_data = g_new(ControlFlowData,1) ; + control_flow_data->v_adjust = + GTK_ADJUSTMENT(gtk_adjustment_new( 0.0, /* Value */ + 0.0, /* Lower */ + 0.0, /* Upper */ + 0.0, /* Step inc. */ + 0.0, /* Page inc. */ + 0.0)); /* page size */ + /* Create the drawing */ control_flow_data->drawing = drawing_construct(control_flow_data); @@ -64,6 +84,7 @@ guicontrolflow(void) drawing_get_drawing_area(control_flow_data->drawing); control_flow_data->number_of_process = 0; + control_flow_data->background_info_waiting = 0; /* Create the Process list */ control_flow_data->process_list = processlist_construct(); @@ -71,53 +92,47 @@ guicontrolflow(void) process_list_widget = processlist_get_widget(control_flow_data->process_list); - //control_flow_data->Inside_HBox_V = gtk_hbox_new(0, 0); - control_flow_data->h_paned = gtk_hpaned_new(); - - gtk_paned_pack1(GTK_PANED(control_flow_data->h_paned), process_list_widget, FALSE, TRUE); - gtk_paned_pack2(GTK_PANED(control_flow_data->h_paned), drawing_widget, TRUE, TRUE); - - control_flow_data->v_adjust = - GTK_ADJUSTMENT(gtk_adjustment_new( 0.0, /* Value */ - 0.0, /* Lower */ - 0.0, /* Upper */ - 0.0, /* Step inc. */ - 0.0, /* Page inc. */ - 0.0)); /* page size */ - - control_flow_data->scrolled_window = - gtk_scrolled_window_new (NULL, - control_flow_data->v_adjust); - - gtk_scrolled_window_set_policy( - GTK_SCROLLED_WINDOW(control_flow_data->scrolled_window) , - GTK_POLICY_NEVER, - GTK_POLICY_AUTOMATIC); - - gtk_scrolled_window_add_with_viewport( - GTK_SCROLLED_WINDOW(control_flow_data->scrolled_window), - control_flow_data->h_paned); + gtk_tree_view_set_vadjustment(GTK_TREE_VIEW(process_list_widget), + GTK_ADJUSTMENT( + control_flow_data->v_adjust)); + + g_signal_connect (G_OBJECT(control_flow_data->process_list->button), + "size-allocate", + G_CALLBACK(header_size_allocate), + (gpointer)control_flow_data->drawing); +#if 0 /* not ready */ + g_signal_connect ( + // G_OBJECT(control_flow_data->process_list->process_list_widget), + G_OBJECT(control_flow_data->process_list->list_store), + "row-changed", + G_CALLBACK (tree_row_activated), + (gpointer)control_flow_data); +#endif //0 + control_flow_data->h_paned = gtk_hpaned_new(); + control_flow_data->box = gtk_event_box_new(); + control_flow_data->top_widget = control_flow_data->box; + gtk_container_add(GTK_CONTAINER(control_flow_data->box), + control_flow_data->h_paned); + + gtk_paned_pack1(GTK_PANED(control_flow_data->h_paned), + process_list_widget, FALSE, TRUE); + gtk_paned_pack2(GTK_PANED(control_flow_data->h_paned), + drawing_widget, TRUE, TRUE); + /* Set the size of the drawing area */ //drawing_Resize(drawing, h, w); /* Get trace statistics */ //control_flow_data->Trace_Statistics = get_trace_statistics(Trace); - /* Create reading hooks */ - control_flow_data->event = lttv_hooks_new(); - control_flow_data->after_event = lttv_hooks_new(); - control_flow_data->after_traceset = lttv_hooks_new(); - control_flow_data->event_request = g_new(EventRequest, 1); - - gtk_widget_show(drawing_widget); gtk_widget_show(process_list_widget); gtk_widget_show(control_flow_data->h_paned); - gtk_widget_show(control_flow_data->scrolled_window); + gtk_widget_show(control_flow_data->box); g_object_set_data_full( - G_OBJECT(control_flow_data->scrolled_window), + G_OBJECT(control_flow_data->top_widget), "control_flow_data", control_flow_data, (GDestroyNotify)guicontrolflow_destructor); @@ -135,11 +150,6 @@ guicontrolflow(void) //inserted in the main window before the drawing area //can be configured (and this must happend bedore sending //data) - - g_signal_connect (G_OBJECT (process_list_widget), "grab-focus", - G_CALLBACK (control_flow_grab_focus), - control_flow_data); - return control_flow_data; @@ -151,8 +161,8 @@ guicontrolflow_destructor_full(ControlFlowData *control_flow_data) { g_info("CFV.c : guicontrolflow_destructor_full, %p", control_flow_data); /* May already have been done by GTK window closing */ - if(GTK_IS_WIDGET(control_flow_data->scrolled_window)) - gtk_widget_destroy(control_flow_data->scrolled_window); + if(GTK_IS_WIDGET(guicontrolflow_get_widget(control_flow_data))) + gtk_widget_destroy(guicontrolflow_get_widget(control_flow_data)); //control_flow_data->mw = NULL; //FIXME guicontrolflow_destructor(control_flow_data); } @@ -161,45 +171,46 @@ guicontrolflow_destructor_full(ControlFlowData *control_flow_data) void guicontrolflow_destructor(ControlFlowData *control_flow_data) { - guint index; + Tab *tab = control_flow_data->tab; g_info("CFV.c : guicontrolflow_destructor, %p", control_flow_data); - g_info("%p, %p, %p", update_time_window_hook, control_flow_data, control_flow_data->mw); - if(GTK_IS_WIDGET(control_flow_data->scrolled_window)) + g_info("%p, %p, %p", update_time_window_hook, control_flow_data, tab); + if(GTK_IS_WIDGET(guicontrolflow_get_widget(control_flow_data))) g_info("widget still exists"); /* Process List is removed with it's widget */ //ProcessList_destroy(control_flow_data->process_list); - if(control_flow_data->mw != NULL) + if(tab != NULL) { /* Delete reading hooks */ - lttv_hooks_destroy(control_flow_data->event); - lttv_hooks_destroy(control_flow_data->after_event); - lttv_hooks_destroy(control_flow_data->after_traceset); - g_free(control_flow_data->event_request); - - lttvwindow_unregister_time_window_notify(control_flow_data->mw, + lttvwindow_unregister_traceset_notify(tab, + traceset_notify, + control_flow_data); + + lttvwindow_unregister_time_window_notify(tab, update_time_window_hook, control_flow_data); - lttvwindow_unregister_current_time_notify(control_flow_data->mw, + lttvwindow_unregister_current_time_notify(tab, update_current_time_hook, control_flow_data); - } - g_info("CFV.c : guicontrolflow_destructor, %p", control_flow_data); - g_slist_remove(g_control_flow_data_list,control_flow_data); - g_free(control_flow_data); -} -GtkWidget *guicontrolflow_get_widget(ControlFlowData *control_flow_data) -{ - return control_flow_data->scrolled_window ; -} + lttvwindow_unregister_redraw_notify(tab, redraw_notify, control_flow_data); + lttvwindow_unregister_continue_notify(tab, + continue_notify, + control_flow_data); + + lttvwindow_events_request_remove_all(control_flow_data->tab, + control_flow_data); -ProcessList *guicontrolflow_get_process_list - (ControlFlowData *control_flow_data) -{ - return control_flow_data->process_list ; + } + lttvwindowtraces_background_notify_remove(control_flow_data); + g_control_flow_data_list = + g_slist_remove(g_control_flow_data_list,control_flow_data); + + g_info("CFV.c : guicontrolflow_destructor end, %p", control_flow_data); + g_free(control_flow_data); + }