1 /*! \file gtkTraceSet.h
2 * \brief API used by the graphical viewers to interact with their top window.
4 * Main window (gui module) is the place to contain and display viewers.
5 * Viewers (lttv plugins) interacte with main window through this API and
7 * This header file should be included in each graphic module.
8 * This library is used by graphical modules to interact with the
15 #include <lttv/hook.h>
16 #include <lttv/common.h>
17 #include <lttv/stats.h>
20 * Function to register a view constructor so that main window can generate
21 * a toolbar item for the viewer in order to generate a new instance easily.
22 * It will be called by init function of the module.
23 * @param ButtonPixmap image shown on the toolbar item.
24 * @param tooltip tooltip of the toolbar item.
25 * @param view_constructor constructor of the viewer.
28 void toolbar_item_reg(char ** pixmap
, char *tooltip
, lttv_constructor view_constructor
);
32 * Function to unregister the viewer's constructor, release the space
33 * occupied by pixmap, tooltip and constructor of the viewer.
34 * It will be called when a module is unloaded.
35 * @param view_constructor constructor of the viewer which is used as
36 * a reference to find out where the pixmap and tooltip are.
39 void toolbar_item_unreg(lttv_constructor view_constructor
);
43 * Function to register a view constructor so that main window can generate
44 * a menu item for the viewer in order to generate a new instance easily.
45 * It will be called by init function of the module.
46 * @param menu_path path of the menu item.
47 * @param menu_text text of the menu item.
48 * @param view_constructor constructor of the viewer.
51 void menu_item_reg(char *menu_path
, char *menu_text
, lttv_constructor view_constructor
);
55 * Function to unregister the viewer's constructor, release the space
56 * occupied by menu_path, menu_text and constructor of the viewer.
57 * It will be called when a module is unloaded.
58 * @param view_constructor constructor of the viewer which is used as
59 * a reference to find out where the menu_path and menu_text are.
62 void menu_item_unreg(lttv_constructor view_constructor
);
66 * Update the status bar whenever something changed in the viewer.
67 * @param main_win the main window the viewer belongs to.
68 * @param info the message which will be shown in the status bar.
71 void update_status(MainWindow
*main_win
, char *info
);
75 * Function to get the current time window of the current tab.
76 * It will be called by a viewer's hook function to update the
77 * time window of the viewer and also be called by the constructor
79 * @param main_win the main window the viewer belongs to.
80 * @param time_interval a pointer where time interval will be stored.
83 void get_time_window(MainWindow
*main_win
, TimeWindow
*time_window
);
87 * Function to set the time interval of the current tab.
88 * It will be called by a viewer's signal handle associated with
89 * the move_slider signal
90 * @param main_win the main window the viewer belongs to.
91 * @param time_interval a pointer where time interval is stored.
94 void set_time_window(MainWindow
*main_win
, TimeWindow
*time_window
);
97 * Function to get the current time/event of the current tab.
98 * It will be called by a viewer's hook function to update the
99 * current time/event of the viewer.
100 * @param main_win the main window the viewer belongs to.
101 * @param time a pointer where time will be stored.
104 void get_current_time(MainWindow
*main_win
, LttTime
*time
);
108 * Function to set the current time/event of the current tab.
109 * It will be called by a viewer's signal handle associated with
110 * the button-release-event signal
111 * @param main_win the main window the viewer belongs to.
112 * @param time a pointer where time is stored.
115 void set_current_time(MainWindow
*main_win
, LttTime
*time
);
119 * Function to get the traceset from the current tab.
120 * It will be called by the constructor of the viewer and also be
121 * called by a hook funtion of the viewer to update its traceset.
122 * @param main_win the main window the viewer belongs to.
123 * @param traceset a pointer to a traceset.
126 //void get_traceset(MainWindow *main_win, Traceset *traceset);
130 * Function to get the filter of the current tab.
131 * It will be called by the constructor of the viewer and also be
132 * called by a hook funtion of the viewer to update its filter.
133 * @param main_win, the main window the viewer belongs to.
134 * @param filter, a pointer to a filter.
137 //void get_filter(MainWindow *main_win, Filter *filter);
141 * Function to register a hook function for a viewer to set/update its
143 * It will be called by the constructor of the viewer.
144 * @param hook hook function of the viewer. Takes a TimeInterval* as call_data.
145 * @param hook_data hook data associated with the hook function.
146 * @param main_win the main window the viewer belongs to.
149 void reg_update_time_window(LttvHook hook
, gpointer hook_data
,
150 MainWindow
* main_win
);
154 * Function to unregister a viewer's hook function which is used to
155 * set/update the time interval of the viewer.
156 * It will be called by the destructor of the viewer.
157 * @param hook hook function of the viewer. Takes a TimeInterval as call_data.
158 * @param hook_data hook data associated with the hook function.
159 * @param main_win the main window the viewer belongs to.
162 void unreg_update_time_window(LttvHook hook
, gpointer hook_data
,
163 MainWindow
* main_win
);
167 * Function to register a hook function for a viewer to set/update its
169 * It will be called by the constructor of the viewer.
170 * @param hook hook function of the viewer.
171 * @param hook_data hook data associated with the hook function.
172 * @param main_win the main window the viewer belongs to.
175 void reg_update_traceset(LttvHook hook
, gpointer hook_data
,
176 MainWindow
* main_win
);
180 * Function to unregister a viewer's hook function which is used to
181 * set/update the traceset of the viewer.
182 * It will be called by the destructor of the viewer.
183 * @param hook hook function of the viewer.
184 * @param hook_data hook data associated with the hook function.
185 * @param main_win the main window the viewer belongs to.
188 void unreg_update_traceset(LttvHook hook
, gpointer hook_data
,
189 MainWindow
* main_win
);
193 * Function to redraw each viewer belonging to the current tab
194 * @param main_win the main window the viewer belongs to.
197 void update_traceset(MainWindow
* main_win
);
201 * Function to register a hook function for a viewer to set/update its
203 * It will be called by the constructor of the viewer.
204 * @param hook hook function of the viewer.
205 * @param hook_data hook data associated with the hook function.
206 * @param main_win the main window the viewer belongs to.
209 void reg_update_filter(LttvHook hook
, gpointer hook_data
,
210 MainWindow
*main_win
);
214 * Function to unregister a viewer's hook function which is used to
215 * set/update the filter of the viewer.
216 * It will be called by the destructor of the viewer.
217 * @param hook hook function of the viewer.
218 * @param hook_data hook data associated with the hook function.
219 * @param main_win the main window the viewer belongs to.
222 void unreg_update_filter(LttvHook hook
, gpointer hook_data
,
223 MainWindow
* main_win
);
227 * Function to register a hook function for a viewer to set/update its
229 * It will be called by the constructor of the viewer.
230 * @param hook hook function of the viewer.
231 * @param hook_data hook data associated with the hook function.
232 * @param main_win the main window the viewer belongs to.
235 void reg_update_current_time(LttvHook hook
, gpointer hook_data
,
236 MainWindow
*main_win
);
240 * Function to unregister a viewer's hook function which is used to
241 * set/update the current time of the viewer.
242 * It will be called by the destructor of the viewer.
243 * @param hook hook function of the viewer.
244 * @param hook_data hook data associated with the hook function.
245 * @param main_win the main window the viewer belongs to.
248 void unreg_update_current_time(LttvHook hook
, gpointer hook_data
,
249 MainWindow
* main_win
);
253 * Function to register a hook function for a viewer to show
254 *the content of the viewer.
255 * It will be called by the constructor of the viewer.
256 * @param hook hook function of the viewer.
257 * @param hook_data hook data associated with the hook function.
258 * @param main_win the main window the viewer belongs to.
261 void reg_show_viewer(LttvHook hook
, gpointer hook_data
,
262 MainWindow
*main_win
);
266 * Function to unregister a viewer's hook function which is used to
267 * show the content of the viewer..
268 * It will be called by the destructor of the viewer.
269 * @param hook hook function of the viewer.
270 * @param hook_data hook data associated with the hook function.
271 * @param main_win the main window the viewer belongs to.
274 void unreg_show_viewer(LttvHook hook
, gpointer hook_data
,
275 MainWindow
* main_win
);
279 * Function to show each viewer in the current tab.
280 * It will be called by main window after it called process_traceset
281 * @param main_win the main window the viewer belongs to.
284 void show_viewer(MainWindow
*main_win
);
288 * Function to set the focused pane (viewer).
289 * It will be called by a viewer's signal handle associated with
290 * the grab_focus signal
291 * @param main_win the main window the viewer belongs to.
292 * @param paned a pointer to a pane where the viewer is contained.
295 void set_focused_pane(MainWindow
*main_win
, gpointer paned
);
299 * Function to register a hook function for a viewer to set/update the
300 * dividor of the hpane.
301 * It will be called by the constructor of the viewer.
302 * @param hook hook function of the viewer.
303 * @param hook_data hook data associated with the hook function.
304 * @param main_win the main window the viewer belongs to.
307 void reg_update_dividor(LttvHook hook
, gpointer hook_data
,
308 MainWindow
*main_win
);
312 * Function to unregister a viewer's hook function which is used to
313 * set/update hpane's dividor of the viewer.
314 * It will be called by the destructor of the viewer.
315 * @param hook hook function of the viewer.
316 * @param hook_data hook data associated with the hook function.
317 * @param main_win the main window the viewer belongs to.
320 void unreg_update_dividor(LttvHook hook
, gpointer hook_data
,
321 MainWindow
*main_win
);
325 * Function to set the position of the hpane's dividor (viewer).
326 * It will be called by a viewer's signal handle associated with
327 * the motion_notify_event event/signal
328 * @param main_win the main window the viewer belongs to.
329 * @param position position of the hpane's dividor.
332 void set_hpane_dividor(MainWindow
*main_win
, gint position
);
336 * Function to process traceset. It will call lttv_process_trace,
337 * each view will call this api to get events.
338 * @param main_win the main window the viewer belongs to.
339 * @param start the start time of the first event to be processed.
340 * @param end the end time of the last event to be processed.
343 void process_traceset_api(MainWindow
*main_win
, LttTime start
,
344 LttTime end
, unsigned maxNumEvents
);
348 * Function to add hooks into the context of a traceset,
349 * before reading events from traceset, viewer will call this api to
351 * @param main_win the main window the viewer belongs to.
352 * @param LttvHooks hooks to be registered.
355 void context_add_hooks_api(MainWindow
*main_win
,
356 LttvHooks
*before_traceset
,
357 LttvHooks
*after_traceset
,
358 LttvHooks
*check_trace
,
359 LttvHooks
*before_trace
,
360 LttvHooks
*after_trace
,
361 LttvHooks
*check_tracefile
,
362 LttvHooks
*before_tracefile
,
363 LttvHooks
*after_tracefile
,
364 LttvHooks
*check_event
,
365 LttvHooks
*before_event
,
366 LttvHooks
*after_event
);
370 * Function to remove hooks from the context of a traceset,
371 * before reading events from traceset, viewer will call this api to
373 * @param main_win the main window the viewer belongs to.
374 * @param LttvHooks hooks to be registered.
377 void context_remove_hooks_api(MainWindow
*main_win
,
378 LttvHooks
*before_traceset
,
379 LttvHooks
*after_traceset
,
380 LttvHooks
*check_trace
,
381 LttvHooks
*before_trace
,
382 LttvHooks
*after_trace
,
383 LttvHooks
*check_tracefile
,
384 LttvHooks
*before_tracefile
,
385 LttvHooks
*after_tracefile
,
386 LttvHooks
*check_event
,
387 LttvHooks
*before_event
,
388 LttvHooks
*after_event
);
392 * Function to get the life span of the traceset
393 * @param main_win the main window the viewer belongs to.
394 * @param start start time of the traceset.
395 * @param end end time of the traceset.
398 void get_traceset_time_span(MainWindow
*main_win
, TimeInterval
*time_span
);
402 * Function to add/remove event hooks for state
403 * @param main_win the main window the viewer belongs to.
406 void state_add_event_hooks_api(MainWindow
*main_win
);
407 void state_remove_event_hooks_api(MainWindow
*main_win
);
411 * Function to add/remove event hooks for stats
412 * @param main_win the main window the viewer belongs to.
415 void stats_add_event_hooks_api(MainWindow
*main_win
);
416 void stats_remove_event_hooks_api(MainWindow
*main_win
);
420 * Function to get the stats of the traceset
421 * @param main_win the main window the viewer belongs to.
424 LttvTracesetStats
* get_traceset_stats_api(MainWindow
*main_win
);
426 LttvTracesetContext
* get_traceset_context(MainWindow
*main_win
);