8 #include "Process_List.h"
9 #include "Event_Hooks.h"
10 #include "CFV-private.h"
13 #define g_info(format...) g_log (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, format)
14 #define g_debug(format...) g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, format)
16 extern GSList
*g_control_flow_data_list
;
18 /*****************************************************************************
19 * Control Flow Viewer class implementation *
20 *****************************************************************************/
22 * Control Flow Viewer's constructor
24 * This constructor is given as a parameter to the menuitem and toolbar button
25 * registration. It creates the drawing widget.
26 * @param ParentWindow A pointer to the parent window.
27 * @return The widget created.
32 GtkWidget
*process_list_widget
, *drawing_widget
;
34 ControlFlowData
* control_flow_data
= g_new(ControlFlowData
,1) ;
36 /* Create the drawing */
37 control_flow_data
->drawing
= drawing_construct(control_flow_data
);
40 drawing_get_widget(control_flow_data
->drawing
);
42 control_flow_data
->number_of_process
= 0;
44 /* Create the Process list */
45 control_flow_data
->process_list
= processlist_construct();
48 processlist_get_widget(control_flow_data
->process_list
);
50 //control_flow_data->Inside_HBox_V = gtk_hbox_new(0, 0);
51 control_flow_data
->h_paned
= gtk_hpaned_new();
53 gtk_paned_pack1(GTK_PANED(control_flow_data
->h_paned
), process_list_widget
, FALSE
, TRUE
);
54 gtk_paned_pack2(GTK_PANED(control_flow_data
->h_paned
), drawing_widget
, TRUE
, TRUE
);
56 control_flow_data
->v_adjust
=
57 GTK_ADJUSTMENT(gtk_adjustment_new( 0.0, /* Value */
62 0.0)); /* page size */
64 control_flow_data
->scrolled_window
=
65 gtk_scrolled_window_new (NULL
,
66 control_flow_data
->v_adjust
);
68 gtk_scrolled_window_set_policy(
69 GTK_SCROLLED_WINDOW(control_flow_data
->scrolled_window
) ,
71 GTK_POLICY_AUTOMATIC
);
73 gtk_scrolled_window_add_with_viewport(
74 GTK_SCROLLED_WINDOW(control_flow_data
->scrolled_window
),
75 control_flow_data
->h_paned
);
77 /* Set the size of the drawing area */
78 //drawing_Resize(drawing, h, w);
80 /* Get trace statistics */
81 //control_flow_data->Trace_Statistics = get_trace_statistics(Trace);
84 gtk_widget_show(drawing_widget
);
85 gtk_widget_show(process_list_widget
);
86 gtk_widget_show(control_flow_data
->h_paned
);
87 gtk_widget_show(control_flow_data
->scrolled_window
);
89 g_object_set_data_full(
90 G_OBJECT(control_flow_data
->scrolled_window
),
93 (GDestroyNotify
)guicontrolflow_destructor
);
96 G_OBJECT(drawing_widget
),
100 g_control_flow_data_list
= g_slist_append(
101 g_control_flow_data_list
,
104 //WARNING : The widget must be
105 //inserted in the main window before the drawing area
106 //can be configured (and this must happend bedore sending
109 return control_flow_data
;
113 /* Destroys widget also */
115 guicontrolflow_destructor_full(ControlFlowData
*control_flow_data
)
117 g_info("CFV.c : guicontrolflow_destructor_full, %p", control_flow_data
);
118 /* May already have been done by GTK window closing */
119 if(GTK_IS_WIDGET(control_flow_data
->scrolled_window
))
120 gtk_widget_destroy(control_flow_data
->scrolled_window
);
121 //control_flow_data->mw = NULL;
122 //FIXME guicontrolflow_destructor(control_flow_data);
125 /* When this destructor is called, the widgets are already disconnected */
127 guicontrolflow_destructor(ControlFlowData
*control_flow_data
)
131 g_info("CFV.c : guicontrolflow_destructor, %p", control_flow_data
);
132 g_info("%p, %p, %p", update_time_window_hook
, control_flow_data
, control_flow_data
->mw
);
133 if(GTK_IS_WIDGET(control_flow_data
->scrolled_window
))
134 g_info("widget still exists");
136 /* Process List is removed with it's widget */
137 //ProcessList_destroy(control_flow_data->process_list);
138 if(control_flow_data
->mw
!= NULL
)
140 unreg_update_time_window(update_time_window_hook
,
142 control_flow_data
->mw
);
144 unreg_update_current_time(update_current_time_hook
,
146 control_flow_data
->mw
);
148 g_info("CFV.c : guicontrolflow_destructor, %p", control_flow_data
);
149 g_slist_remove(g_control_flow_data_list
,control_flow_data
);
150 g_free(control_flow_data
);
153 GtkWidget
*guicontrolflow_get_widget(ControlFlowData
*control_flow_data
)
155 return control_flow_data
->scrolled_window
;
158 ProcessList
*guicontrolflow_get_process_list
159 (ControlFlowData
*control_flow_data
)
161 return control_flow_data
->process_list
;
164 TimeWindow
*guicontrolflow_get_time_window(ControlFlowData
*control_flow_data
)
166 return &control_flow_data
->time_window
;
168 LttTime
*guicontrolflow_get_current_time(ControlFlowData
*control_flow_data
)
170 return &control_flow_data
->current_time
;