1 /*! \defgroup guiEvents libguiControlFlow: The GUI ControlFlow display plugin */
4 /*! \file guiControlFlow.c
5 * \brief Graphical plugin for showing control flow of a trace.
7 * This plugin adds a Control Flow Viewer functionnality to Linux TraceToolkit
8 * GUI when this plugin is loaded. The init and destroy functions add the
9 * viewer's insertion menu item and toolbar icon by calling gtkTraceSet's
10 * API functions. Then, when a viewer's object is created, the constructor
11 * creates ans register through API functions what is needed to interact
12 * with the TraceSet window.
14 * This plugin uses the gdk library to draw the events and gtk to interact
17 * Author : Mathieu Desnoyers, June 2003
22 #include <lttv/module.h>
23 #include <lttv/gtkTraceSet.h>
26 #include "Event_Hooks.h"
28 #include "../icons/hGuiControlFlowInsert.xpm"
30 static LttvModule
*Main_Win_Module
;
33 /** Array containing instanced objects. Used when module is unloaded */
34 GSList
*gControl_Flow_Data_List
= NULL
;
39 /*****************************************************************************
40 * Functions for module loading/unloading *
41 *****************************************************************************/
43 * plugin's init function
45 * This function initializes the Control Flow Viewer functionnality through the
48 G_MODULE_EXPORT
void init(LttvModule
*self
, int argc
, char *argv
[]) {
50 Main_Win_Module
= lttv_module_require(self
, "mainwin", argc
, argv
);
52 if(Main_Win_Module
== NULL
)
54 g_critical("Can't load Control Flow Viewer : missing mainwin\n");
58 g_critical("GUI ControlFlow Viewer init()");
60 /* Register the toolbar insert button */
61 ToolbarItemReg(hGuiControlFlowInsert_xpm
, "Insert Control Flow Viewer",
64 /* Register the menu item insert entry */
65 MenuItemReg("/", "Insert Control Flow Viewer", hGuiControlFlow
);
69 void destroy_walk(gpointer data
, gpointer user_data
)
71 GuiControlFlow_Destructor_Full((ControlFlowData
*)data
);
72 g_critical("Walk destroy GUI Control Flow Viewer");
78 * plugin's destroy function
80 * This function releases the memory reserved by the module and unregisters
81 * everything that has been registered in the gtkTraceSet API.
83 G_MODULE_EXPORT
void destroy() {
84 g_critical("GUI Control Flow Viewer destroy()");
87 g_slist_foreach(gControl_Flow_Data_List
, destroy_walk
, NULL
);
89 g_slist_free(gControl_Flow_Data_List
);
91 /* Unregister the toolbar insert button */
92 ToolbarItemUnreg(hGuiControlFlow
);
94 /* Unregister the menu item insert entry */
95 MenuItemUnreg(hGuiControlFlow
);