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_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 */
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
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 new current time.
+ * @param time current time.
*/
void lttvwindow_report_current_time(Tab *tab,
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
} EventsRequest;
/* Maximum number of events to proceed at once in a chunk */
-#define CHUNK_NUM_EVENTS 500
+#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.
*/
-__inline__ TimeWindow lttvwindow_get_time_window(Tab *tab);
+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