mega modif by Mathieu Desnoyers. Independant main windows, multiple tracesets, contro...
[lttv.git] / ltt / branches / poly / lttv / modules / guiControlFlow / module.c
1 /*! \defgroup guiEvents libguiControlFlow: The GUI ControlFlow display plugin */
2 /*\@{*/
3
4 /*! \file guiControlFlow.c
5 * \brief Graphical plugin for showing control flow of a trace.
6 *
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.
13 *
14 * This plugin uses the gdk library to draw the events and gtk to interact
15 * with the user.
16 *
17 * Author : Mathieu Desnoyers, June 2003
18 */
19
20 #include <glib.h>
21 #include <gmodule.h>
22 #include <lttv/module.h>
23 #include <lttv/gtkTraceSet.h>
24
25 #include "CFV.h"
26 #include "Event_Hooks.h"
27
28 #include "../icons/hGuiControlFlowInsert.xpm"
29
30 static LttvModule *Main_Win_Module;
31
32
33 /** Array containing instanced objects. Used when module is unloaded */
34 GSList *gControl_Flow_Data_List = NULL ;
35
36
37
38
39 /*****************************************************************************
40 * Functions for module loading/unloading *
41 *****************************************************************************/
42 /**
43 * plugin's init function
44 *
45 * This function initializes the Control Flow Viewer functionnality through the
46 * gtkTraceSet API.
47 */
48 G_MODULE_EXPORT void init(LttvModule *self, int argc, char *argv[]) {
49
50 Main_Win_Module = lttv_module_require(self, "mainwin", argc, argv);
51
52 if(Main_Win_Module == NULL)
53 {
54 g_critical("Can't load Control Flow Viewer : missing mainwin\n");
55 return;
56 }
57
58 g_critical("GUI ControlFlow Viewer init()");
59
60 /* Register the toolbar insert button */
61 ToolbarItemReg(hGuiControlFlowInsert_xpm, "Insert Control Flow Viewer",
62 hGuiControlFlow);
63
64 /* Register the menu item insert entry */
65 MenuItemReg("/", "Insert Control Flow Viewer", hGuiControlFlow);
66
67 }
68
69 void destroy_walk(gpointer data, gpointer user_data)
70 {
71 GuiControlFlow_Destructor_Full((ControlFlowData*)data);
72 g_critical("Walk destroy GUI Control Flow Viewer");
73 }
74
75
76
77 /**
78 * plugin's destroy function
79 *
80 * This function releases the memory reserved by the module and unregisters
81 * everything that has been registered in the gtkTraceSet API.
82 */
83 G_MODULE_EXPORT void destroy() {
84 g_critical("GUI Control Flow Viewer destroy()");
85 int i;
86
87 g_slist_foreach(gControl_Flow_Data_List, destroy_walk, NULL );
88
89 g_slist_free(gControl_Flow_Data_List);
90
91 /* Unregister the toolbar insert button */
92 ToolbarItemUnreg(hGuiControlFlow);
93
94 /* Unregister the menu item insert entry */
95 MenuItemUnreg(hGuiControlFlow);
96
97 }
This page took 0.033008 seconds and 4 git commands to generate.