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 ToolbarItemReg(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 ToolbarItemUnreg(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 MenuItemReg(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 MenuItemUnreg(lttv_constructor view_constructor
);
66 * Attach a viewer to the current tab.
67 * It will be called in the constructor of the viewer.
68 * @param main_win the main window the viewer belongs to.
69 * @param viewer viewer to be attached to the current tab
72 // Not Needed : Main window add widget returned by constructor
73 //void AttachViewer(mainWindow *main_win, GtkWidget *viewer);
76 /* ?? Maybe we do not need this function, when a widget is destroyed,
77 * it will be removed automatically from its container
81 * Detach a viewer from the current tab.
82 * It will be called in the destructor of the viewer.
83 * @param main_win the main window the viewer belongs to.
84 * @param viewer viewer to be detached from the current tab.
87 //void DetachViewer(mainWindow *main_win, GtkWidget *viewer);
91 * Update the status bar whenever something changed in the viewer.
92 * @param main_win the main window the viewer belongs to.
93 * @param info the message which will be shown in the status bar.
96 void UpdateStatus(mainWindow
*main_win
, char *info
);
100 * Function to get the current time interval of the current tab.
101 * It will be called by a viewer's hook function to update the
102 * time interval of the viewer and also be called by the constructor
104 * @param main_win the main window the viewer belongs to.
105 * @param time_interval a pointer where time interval will be stored.
108 void GetTimeInterval(mainWindow
*main_win
, TimeInterval
*time_interval
);
112 * Function to set the time interval of the current tab.
113 * It will be called by a viewer's signal handle associated with
114 * the move_slider signal
115 * @param main_win the main window the viewer belongs to.
116 * @param time_interval a pointer where time interval is stored.
119 void SetTimeInterval(mainWindow
*main_win
, TimeInterval
*time_interval
);
123 * Function to get the current time/event of the current tab.
124 * It will be called by a viewer's hook function to update the
125 * current time/event of the viewer.
126 * @param main_win the main window the viewer belongs to.
127 * @param time a pointer where time will be stored.
130 void GetCurrentTime(mainWindow
*main_win
, LttTime
*time
);
134 * Function to set the current time/event of the current tab.
135 * It will be called by a viewer's signal handle associated with
136 * the button-release-event signal
137 * @param main_win the main window the viewer belongs to.
138 * @param time a pointer where time is stored.
141 void SetCurrentTime(mainWindow
*main_win
, LttTime
*time
);
145 * Function to get the traceset from the current tab.
146 * It will be called by the constructor of the viewer and also be
147 * called by a hook funtion of the viewer to update its traceset.
148 * @param main_win the main window the viewer belongs to.
149 * @param traceset a pointer to a traceset.
152 //void GetTraceset(mainWindow *main_win, Traceset *traceset);
156 * Function to get the filter of the current tab.
157 * It will be called by the constructor of the viewer and also be
158 * called by a hook funtion of the viewer to update its filter.
159 * @param main_win, the main window the viewer belongs to.
160 * @param filter, a pointer to a filter.
163 //void GetFilter(mainWindow *main_win, Filter *filter);
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 RegUpdateTimeInterval(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 time interval 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 UnregUpdateTimeInterval(LttvHook hook
, gpointer hook_data
,
189 mainWindow
* main_win
);
193 * Function to register a hook function for a viewer to set/update its
195 * It will be called by the constructor of the viewer.
196 * @param hook hook function of the viewer.
197 * @param hook_data hook data associated with the hook function.
198 * @param main_win the main window the viewer belongs to.
201 void RegUpdateTraceset(LttvHook hook
, gpointer hook_data
,
202 mainWindow
* main_win
);
206 * Function to unregister a viewer's hook function which is used to
207 * set/update the traceset of the viewer.
208 * It will be called by the destructor of the viewer.
209 * @param hook hook function of the viewer.
210 * @param hook_data hook data associated with the hook function.
211 * @param main_win the main window the viewer belongs to.
214 void UnregUpdateTraceset(LttvHook hook
, gpointer hook_data
,
215 mainWindow
* main_win
);
219 * Function to register a hook function for a viewer to set/update its
221 * It will be called by the constructor of the viewer.
222 * @param hook hook function of the viewer.
223 * @param hook_data hook data associated with the hook function.
224 * @param main_win the main window the viewer belongs to.
227 void RegUpdateFilter(LttvHook hook
, gpointer hook_data
,
228 mainWindow
*main_win
);
232 * Function to unregister a viewer's hook function which is used to
233 * set/update the filter of the viewer.
234 * It will be called by the destructor of the viewer.
235 * @param hook hook function of the viewer.
236 * @param hook_data hook data associated with the hook function.
237 * @param main_win the main window the viewer belongs to.
240 void UnregUpdateFilter(LttvHook hook
, gpointer hook_data
,
241 mainWindow
* main_win
);
245 * Function to register a hook function for a viewer to set/update its
247 * It will be called by the constructor of the viewer.
248 * @param hook hook function of the viewer.
249 * @param hook_data hook data associated with the hook function.
250 * @param main_win the main window the viewer belongs to.
253 void RegUpdateCurrentTime(LttvHook hook
, gpointer hook_data
,
254 mainWindow
*main_win
);
258 * Function to unregister a viewer's hook function which is used to
259 * set/update the current time of the viewer.
260 * It will be called by the destructor of the viewer.
261 * @param hook hook function of the viewer.
262 * @param hook_data hook data associated with the hook function.
263 * @param main_win the main window the viewer belongs to.
266 void UnregUpdateCurrentTime(LttvHook hook
, gpointer hook_data
,
267 mainWindow
* main_win
);
271 * Function to set the focused pane (viewer).
272 * It will be called by a viewer's signal handle associated with
273 * the grab_focus signal
274 * @param main_win the main window the viewer belongs to.
275 * @param paned a pointer to a pane where the viewer is contained.
278 void SetFocusedPane(mainWindow
*main_win
, gpointer paned
);
282 * Function to register a hook function for a viewer to set/update the
283 * dividor of the hpane.
284 * It will be called by the constructor of the viewer.
285 * @param hook hook function of the viewer.
286 * @param hook_data hook data associated with the hook function.
287 * @param main_win the main window the viewer belongs to.
290 void RegUpdateDividor(LttvHook hook
, gpointer hook_data
,
291 mainWindow
*main_win
);
295 * Function to unregister a viewer's hook function which is used to
296 * set/update hpane's dividor of the viewer.
297 * It will be called by the destructor of the viewer.
298 * @param hook hook function of the viewer.
299 * @param hook_data hook data associated with the hook function.
300 * @param main_win the main window the viewer belongs to.
303 void UnregUpdateDividor(LttvHook hook
, gpointer hook_data
,
304 mainWindow
*main_win
);
308 * Function to set the position of the hpane's dividor (viewer).
309 * It will be called by a viewer's signal handle associated with
310 * the motion_notify_event event/signal
311 * @param main_win the main window the viewer belongs to.
312 * @param position position of the hpane's dividor.
315 void SetHPaneDividor(mainWindow
*main_win
, gint position
);
319 * Function to process traceset. It will call lttv_process_trace,
320 * each view will call this api to get events.
321 * @param main_win the main window the viewer belongs to.
322 * @param start the start time of the first event to be processed.
323 * @param end the end time of the last event to be processed.
326 void processTraceset(mainWindow
*main_win
, LttTime start
,
327 LttTime end
, unsigned maxNumEvents
);
331 * Function to add hooks into the context of a traceset,
332 * before reading events from traceset, viewer will call this api to
334 * @param main_win the main window the viewer belongs to.
335 * @param LttvHooks hooks to be registered.
338 void contextAddHooks(mainWindow
*main_win
,
339 LttvHooks
*before_traceset
,
340 LttvHooks
*after_traceset
,
341 LttvHooks
*check_trace
,
342 LttvHooks
*before_trace
,
343 LttvHooks
*after_trace
,
344 LttvHooks
*check_tracefile
,
345 LttvHooks
*before_tracefile
,
346 LttvHooks
*after_tracefile
,
347 LttvHooks
*check_event
,
348 LttvHooks
*before_event
,
349 LttvHooks
*after_event
);
353 * Function to remove hooks from the context of a traceset,
354 * before reading events from traceset, viewer will call this api to
356 * @param main_win the main window the viewer belongs to.
357 * @param LttvHooks hooks to be registered.
360 void contextRemoveHooks(mainWindow
*main_win
,
361 LttvHooks
*before_traceset
,
362 LttvHooks
*after_traceset
,
363 LttvHooks
*check_trace
,
364 LttvHooks
*before_trace
,
365 LttvHooks
*after_trace
,
366 LttvHooks
*check_tracefile
,
367 LttvHooks
*before_tracefile
,
368 LttvHooks
*after_tracefile
,
369 LttvHooks
*check_event
,
370 LttvHooks
*before_event
,
371 LttvHooks
*after_event
);
375 * Function to get the life span of the traceset
376 * @param main_win the main window the viewer belongs to.
377 * @param start start time of the traceset.
378 * @param end end time of the traceset.
381 void getTracesetTimeSpan(mainWindow
*main_win
, LttTime
* start
, LttTime
* end
);
385 * Function to add/remove event hooks for state
386 * @param main_win the main window the viewer belongs to.
389 void stateAddEventHooks(mainWindow
*main_win
);
390 void stateRemoveEventHooks(mainWindow
*main_win
);
394 * Function to add/remove event hooks for stats
395 * @param main_win the main window the viewer belongs to.
398 void statsAddEventHooks(mainWindow
*main_win
);
399 void statsRemoveEventHooks(mainWindow
*main_win
);
403 * Function to get the stats of the traceset
404 * @param main_win the main window the viewer belongs to.
407 LttvTracesetStats
* getTracesetStats(mainWindow
*main_win
);