2 * Initial main.c file generated by Glade. Edit as required.
3 * Glade will not overwrite this file.
12 #include <lttv/lttv.h>
13 #include <lttv/attribute.h>
14 #include <lttv/hook.h>
15 #include <lttv/option.h>
16 #include <lttv/module.h>
17 #include <lttv/processTrace.h>
18 #include <lttv/state.h>
19 #include <lttv/stats.h>
20 #include <lttv/menu.h>
21 #include <lttv/toolbar.h>
23 #include "interface.h"
25 #include <lttv/mainWindow.h>
26 #include "callbacks.h"
29 systemView
* gSysView
;
31 LttvTracesetStats
* gTracesetContext
= NULL
;
32 static LttvTraceset
* traceset
;
34 /** Array containing instanced objects. */
35 GSList
* Main_Window_List
= NULL
;
50 void lttv_trace_option(void *hook_data
)
54 trace
= ltt_trace_open(a_trace
);
55 if(trace
== NULL
) g_critical("cannot open trace %s", a_trace
);
56 lttv_traceset_add(traceset
, trace
);
59 /*****************************************************************************
60 * Functions for module loading/unloading *
61 *****************************************************************************/
63 * plugin's init function
65 * This function initializes the GUI.
68 typedef struct _WindowCreationData
{
73 static gboolean
Window_Creation_Hook(void *hook_data
, void *call_data
)
77 view_constructor constructor
;
79 LttvToolbars
* toolbar
;
80 lttv_menu_closure
*menuItem
;
81 lttv_toolbar_closure
*toolbarItem
;
82 LttvAttributeValue value
;
83 LttvIAttribute
*attributes
= LTTV_IATTRIBUTE(lttv_global_attributes());
85 GtkWidget
* ToolMenuTitle_menu
, *insert_view
, *pixmap
;
87 mainWindow
* mw
= g_new(mainWindow
, 1);
88 gSysView
= g_new(systemView
, 1);
89 WindowCreationData
*Window_Creation_Data
= (WindowCreationData
*)call_data
;
91 /* Add the object's information to the module's array */
92 Main_Window_List
= g_slist_append(Main_Window_List
, mw
);
94 g_critical("GUI Window_Creation_Hook()");
96 bindtextdomain (GETTEXT_PACKAGE
, PACKAGE_LOCALE_DIR
);
97 bind_textdomain_codeset (GETTEXT_PACKAGE
, "UTF-8");
98 textdomain (GETTEXT_PACKAGE
);
102 gtk_init (&(Window_Creation_Data
->argc
), &(Window_Creation_Data
->argv
));
104 add_pixmap_directory (PACKAGE_DATA_DIR
"/" PACKAGE
"/pixmaps");
105 add_pixmap_directory ("pixmaps");
106 add_pixmap_directory ("modules/gui/mainWin/pixmaps");
109 * The following code was added by Glade to create one of each component
110 * (except popup menus), just so that you see something after building
111 * the project. Delete any components that you don't want shown initially.
113 window1
= create_MWindow ();
114 gtk_widget_show (window1
);
116 mw
->MWindow
= window1
;
117 mw
->SystemView
= gSysView
;
119 mw
->CurrentTab
= NULL
;
120 mw
->Attributes
= LTTV_IATTRIBUTE(g_object_new(LTTV_ATTRIBUTE_TYPE
, NULL
));
121 if(!gTracesetContext
){
122 gTracesetContext
= g_object_new(LTTV_TRACESET_STATS_TYPE
, NULL
);
123 //FIXME: lttv_context_fini should be called some where.
124 lttv_context_init(LTTV_TRACESET_CONTEXT(gTracesetContext
), traceset
);
126 mw
->traceset_context
= LTTV_TRACESET_CONTEXT(gTracesetContext
);
127 mw
->traceset
= (LTTV_TRACESET_CONTEXT(gTracesetContext
))->ts
;
128 g_object_ref(gTracesetContext
);
131 g_assert(lttv_iattribute_find_by_path(attributes
,
132 "viewers/menu", LTTV_POINTER
, &value
));
133 menu
= (LttvMenus
*)*(value
.v_pointer
);
136 for(i
=0;i
<menu
->len
;i
++){
137 menuItem
= &g_array_index(menu
, lttv_menu_closure
, i
);
138 constructor
= menuItem
->con
;
139 ToolMenuTitle_menu
= lookup_widget(mw
->MWindow
,"ToolMenuTitle_menu");
140 insert_view
= gtk_menu_item_new_with_mnemonic (menuItem
->menuText
);
141 gtk_widget_show (insert_view
);
142 gtk_container_add (GTK_CONTAINER (ToolMenuTitle_menu
), insert_view
);
143 g_signal_connect ((gpointer
) insert_view
, "activate",
144 G_CALLBACK (insertViewTest
),
149 g_assert(lttv_iattribute_find_by_path(attributes
,
150 "viewers/toolbar", LTTV_POINTER
, &value
));
151 toolbar
= (LttvToolbars
*)*(value
.v_pointer
);
154 for(i
=0;i
<toolbar
->len
;i
++){
155 toolbarItem
= &g_array_index(toolbar
, lttv_toolbar_closure
, i
);
156 constructor
= toolbarItem
->con
;
157 ToolMenuTitle_menu
= lookup_widget(mw
->MWindow
,"MToolbar2");
158 pixbuf
= gdk_pixbuf_new_from_xpm_data ((const char**)toolbarItem
->pixmap
);
159 pixmap
= gtk_image_new_from_pixbuf(pixbuf
);
160 insert_view
= gtk_toolbar_append_element (GTK_TOOLBAR (ToolMenuTitle_menu
),
161 GTK_TOOLBAR_CHILD_BUTTON
,
164 toolbarItem
->tooltip
, NULL
,
166 gtk_label_set_use_underline (GTK_LABEL (((GtkToolbarChild
*) (g_list_last (GTK_TOOLBAR (ToolMenuTitle_menu
)->children
)->data
))->label
), TRUE
);
167 gtk_widget_show (insert_view
);
168 gtk_container_set_border_width (GTK_CONTAINER (insert_view
), 1);
169 g_signal_connect ((gpointer
) insert_view
, "clicked",G_CALLBACK (insertViewTest
),constructor
);
175 gSysView
->EventDB
= NULL
;
176 gSysView
->SystemInfo
= NULL
;
177 gSysView
->Options
= NULL
;
178 gSysView
->Window
= mw
;
179 gSysView
->Next
= NULL
;
181 g_object_set_data(G_OBJECT(window1
), "systemView", (gpointer
)gSysView
);
182 g_object_set_data(G_OBJECT(window1
), "mainWindow", (gpointer
)mw
);
192 G_MODULE_EXPORT
void init(LttvModule
*self
, int argc
, char *argv
[]) {
194 LttvAttributeValue value
;
195 WindowCreationData
*Window_Creation_Data
= g_new(WindowCreationData
, 1);
197 LttvIAttribute
*attributes
= LTTV_IATTRIBUTE(lttv_global_attributes());
199 g_critical("GUI init()");
201 lttv_option_add("trace", 't',
202 "add a trace to the trace set to analyse",
203 "pathname of the directory containing the trace",
204 LTTV_OPT_STRING
, &a_trace
, lttv_trace_option
, NULL
);
206 traceset
= lttv_traceset_new();
208 before_traceset
= lttv_hooks_new();
209 after_traceset
= lttv_hooks_new();
210 before_trace
= lttv_hooks_new();
211 after_trace
= lttv_hooks_new();
212 before_tracefile
= lttv_hooks_new();
213 after_tracefile
= lttv_hooks_new();
214 before_event
= lttv_hooks_new();
215 after_event
= lttv_hooks_new();
217 g_assert(lttv_iattribute_find_by_path(attributes
, "hooks/traceset/before",
218 LTTV_POINTER
, &value
));
219 *(value
.v_pointer
) = before_traceset
;
220 g_assert(lttv_iattribute_find_by_path(attributes
, "hooks/traceset/after",
221 LTTV_POINTER
, &value
));
222 *(value
.v_pointer
) = after_traceset
;
223 g_assert(lttv_iattribute_find_by_path(attributes
, "hooks/trace/before",
224 LTTV_POINTER
, &value
));
225 *(value
.v_pointer
) = before_trace
;
226 g_assert(lttv_iattribute_find_by_path(attributes
, "hooks/trace/after",
227 LTTV_POINTER
, &value
));
228 *(value
.v_pointer
) = after_trace
;
229 g_assert(lttv_iattribute_find_by_path(attributes
, "hooks/tracefile/before",
230 LTTV_POINTER
, &value
));
231 *(value
.v_pointer
) = before_tracefile
;
232 g_assert(lttv_iattribute_find_by_path(attributes
, "hooks/tracefile/after",
233 LTTV_POINTER
, &value
));
234 *(value
.v_pointer
) = after_tracefile
;
235 g_assert(lttv_iattribute_find_by_path(attributes
, "hooks/event/before",
236 LTTV_POINTER
, &value
));
237 *(value
.v_pointer
) = before_event
;
238 g_assert(lttv_iattribute_find_by_path(attributes
, "hooks/event/after",
239 LTTV_POINTER
, &value
));
240 *(value
.v_pointer
) = after_event
;
242 g_assert(lttv_iattribute_find_by_path(attributes
, "hooks/main/before",
243 LTTV_POINTER
, &value
));
244 g_assert((main_hooks
= *(value
.v_pointer
)) != NULL
);
246 Window_Creation_Data
->argc
= argc
;
247 Window_Creation_Data
->argv
= argv
;
249 lttv_hooks_add(main_hooks
, Window_Creation_Hook
, Window_Creation_Data
);
253 void destroy_walk(gpointer data
, gpointer user_data
)
255 //GuiControlFlow_Destructor((ControlFlowData*)data);
261 * plugin's destroy function
263 * This function releases the memory reserved by the module and unregisters
264 * everything that has been registered in the gtkTraceSet API.
266 G_MODULE_EXPORT
void destroy() {
268 WindowCreationData
*Window_Creation_Data
;
269 LttvAttributeValue value
;
273 lttv_option_remove("trace");
275 lttv_hooks_destroy(before_traceset
);
276 lttv_hooks_destroy(after_traceset
);
277 lttv_hooks_destroy(before_trace
);
278 lttv_hooks_destroy(after_trace
);
279 lttv_hooks_destroy(before_tracefile
);
280 lttv_hooks_destroy(after_tracefile
);
281 lttv_hooks_destroy(before_event
);
282 lttv_hooks_destroy(after_event
);
283 lttv_hooks_remove_data(main_hooks
, Window_Creation_Hook
, NULL
);
285 nb
= lttv_traceset_number(traceset
);
286 for(i
= 0 ; i
< nb
; i
++) {
287 ltt_trace_close(lttv_traceset_get(traceset
, i
));
290 lttv_traceset_destroy(traceset
);
292 g_critical("GUI destroy()");
296 //ControlFlowData *Control_Flow_Data;
299 g_slist_foreach(Main_Window_List
, destroy_walk
, NULL
);
302 //lttv_hooks_remove_data(main_hooks,Window_Creation_Hook, NULL);
303 //lttv_hooks_remove_data(before_traceset, get_traceset_context, NULL);
305 // g_free(Window_Creation_Data);
307 g_object_unref(gTracesetContext
);