lttvwindow_report_time_window : reports the new time window.
lttvwindow_report_current_time : reports the new current time.
lttvwindow_report_dividor : reports the new horizontal dividor's position.
-lttvwindow_report_focus : One on the widgets in the viewer has the keyboard's
- focus from GTK.
+lttvwindow_report_filter : reports the new filter object
*/
-#ifndef VIEWER_H
-#define VIEWER_H
+#ifndef LTTVWINDOW_H
+#define LTTVWINDOW_H
/*! \file lttvwindow.h
* \brief API used by the graphical viewers to interact with their top window.
#include <lttv/hook.h>
#include <lttv/tracecontext.h>
#include <lttv/stats.h>
+#include <lttv/filter.h>
#include <lttvwindow/mainwindow.h>
-#include <lttvwindow/lttvfilter.h>
-//FIXME (not ready yet) #include <lttv/filter.h>
/* Module Related API */
+/* GQuark containing constructors of viewers in global attributes */
+extern GQuark LTTV_VIEWER_CONSTRUCTORS;
/* constructor a the viewer */
-//FIXME explain LttvTracesetSelector and key
-typedef GtkWidget * (*lttvwindow_viewer_constructor)
- (Tab *tab, LttvTracesetSelector * s, char *key);
+typedef GtkWidget* (*lttvwindow_viewer_constructor)(Tab *tab);
/**
* window.
*
* It should be called by init function of the module.
- *
+ *
+ * @param name name of the viewer : mainly used as tag for constructor
* @param menu_path path of the menu item. NULL : no menu entry.
* @param menu_text text of the menu item.
* @param pixmap Image shown on the toolbar item. NULL : no button.
*/
void lttvwindow_register_constructor
- (char * menu_path,
+ (char * name,
+ char * menu_path,
char * menu_text,
char ** pixmap,
char * tooltip,
LttvHook hook,
gpointer hook_data);
+/**
+ * Function to register a hook function for a viewer to set/update its
+ * current position.
+ *
+ * @param tab the tab the viewer belongs to.
+ * @param hook hook function of the viewer that updates the current time. The
+ * call_data is a LttTime* representing the new current time.
+ * @param hook_data hook data associated with the hook function. It will
+ * be typically a pointer to the viewer's data structure.
+ */
+
+void lttvwindow_register_current_position_notify(Tab *tab,
+ LttvHook hook,
+ gpointer hook_data);
+
+
+/**
+ * Function to unregister a viewer's hook function which is used to
+ * set/update the current position of the viewer.
+ * @param tab the tab the viewer belongs to.
+ * @param hook hook function of the viewer that updates the current time. The
+ * call_data is a LttTime* representing the new current time.
+ * @param hook_data hook data associated with the hook function. It will
+ * be typically a pointer to the viewer's data structure.
+ */
+
+void lttvwindow_unregister_current_position_notify(Tab *tab,
+ LttvHook hook,
+ gpointer hook_data);
+
+
/**
* Function to register a hook function for a viewer to set/update the
* Function to set the time interval of the current tab.a
*
* @param tab the tab the viewer belongs to.
- * @param time_interval pointer to the time interval value.
+ * @param time_interval new time window.
*/
void lttvwindow_report_time_window(Tab *tab,
- const TimeWindow *time_window);
+ TimeWindow time_window);
/**
- * Function to set the current time/event of the current tab.
+ * Function to set the current time of the current tab.
* It will be called by a viewer's signal handle associated with
* the button-release-event signal
* @param tab the tab the viewer belongs to.
- * @param time a pointer where time is stored.
+ * @param time current time.
*/
void lttvwindow_report_current_time(Tab *tab,
- const LttTime *time);
+ LttTime time);
+/**
+ * Function to set the current event of the current tab.
+ * It will be called by a viewer's signal handle associated with
+ * the button-release-event signal
+ * @param tab the tab the viewer belongs to.
+ * @param pos the current position.
+ */
+
+void lttvwindow_report_current_position(Tab *tab,
+ LttvTracesetContextPosition *pos);
+
/**
* Function to set the position of the hpane's dividor (viewer).
* It will typically be called by a viewer's signal handle associated
void lttvwindow_report_dividor(Tab *tab, gint position);
-/**
- * Function to set the focused viewer of the tab.
- * It will be called by a viewer's signal handle associated with
- * the grab_focus signal of all widgets in the viewer.
- *
- * @param tab the tab the viewer belongs to.
- * @param top_widget the top widget containing all the other widgets of the
- * viewer.
- */
-void lttvwindow_report_focus(Tab *tab,
- GtkWidget *top_widget);
-
/* Structure sent to the events request hook */
- /* Value considered as empty */
+ /* Value considered as empty*/
typedef struct _EventsRequest {
gpointer owner; /* Owner of the request */
gpointer viewer_data; /* Unset : NULL */
- gboolean servicing; /* service in progress: TRUE */
- LttTime start_time;/* Unset : { G_MAXUINT, G_MAXUINT }*/
+ gboolean servicing; /* service in progress: TRUE*/
+ LttTime start_time; /* Unset : ltt_time_infinite*/
LttvTracesetContextPosition *start_position; /* Unset : NULL */
gboolean stop_flag; /* Continue:TRUE Stop:FALSE */
- LttTime end_time;/* Unset : { G_MAXUINT, G_MAXUINT } */
+ LttTime end_time; /* Unset : ltt_time_infinite*/
guint num_events; /* Unset : G_MAXUINT */
LttvTracesetContextPosition *end_position; /* Unset : NULL */
+ gint trace; /* unset : -1 */
+ GArray *hooks; /* Unset : NULL */
LttvHooks *before_chunk_traceset; /* Unset : NULL */
LttvHooks *before_chunk_trace; /* Unset : NULL */
LttvHooks *before_chunk_tracefile;/* Unset : NULL */
} EventsRequest;
/* Maximum number of events to proceed at once in a chunk */
-#define CHUNK_NUM_EVENTS 200
+#define CHUNK_NUM_EVENTS 6000
/**
/**
- * Function to get the current time window of the current tab.
- *
- * @param tab the tab the viewer belongs to.
- * @return the current tab's time interval.
+ * Function to get the current time interval shown on the current tab.
+ * It will be called by a viewer's hook function to update the
+ * shown time interval of the viewer and also be called by the constructor
+ * of the viewer.
+ * @param tab viewer's tab
+ * @return time window.
*/
TimeWindow lttvwindow_get_time_window(Tab *tab);
* @param filter, a pointer to a filter.
*/
-//FIXME
-typedef void lttv_filter;
-//FIXME
-const lttv_filter *lttvwindow_get_filter(Tab *tab);
+//LttvFilter *lttvwindow_get_filter(Tab *tab);
+
+/**
+ * Function to set the filter of the current tab.
+ * It should be called by the filter GUI to tell the
+ * main window to update the filter tab's lttv_filter.
+ *
+ * Notice : the lttv_filter object will be owned by the
+ * main window after the return of this function.
+ * Do NOT desallocate it.
+ *
+ * @param main_win, the main window the viewer belongs to.
+ * @param filter, a pointer to a filter.
+ */
+
+void lttvwindow_report_filter(Tab *tab, LttvFilter *filter);
+
/**
LttvTracesetContext* lttvwindow_get_traceset_context(Tab *tab);
-#endif //VIEWER_H
+/* set_time_window
+ *
+ * It updates the time window of the tab, then calls the updatetimewindow
+ * hooks of each viewer.
+ *
+ * This is called whenever the scrollbar value changes.
+ *
+ * This is mostly an internal function.
+ */
+
+void set_time_window(Tab *tab, const TimeWindow *time_window);
+
+
+/* set_current_time
+ *
+ * It updates the current time of the tab, then calls the updatetimewindow
+ * hooks of each viewer.
+ *
+ * This is called whenever the current time value changes.
+ *
+ * This is mostly an internal function.
+ */
+
+void set_current_time(Tab *tab, const LttTime *current_time);
+
+
+void events_request_free(EventsRequest *events_request);
+
+#endif //LTTVWINDOW_H