module name change oops
[lttv.git] / ltt / branches / poly / lttv / modules / gui / controlflow / module.c
CommitLineData
f0d936c0 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
189a5d08 20#define g_info(format...) g_log (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, format)
21#define g_debug(format...) g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, format)
22
558aa013 23#include <glib.h>
f0d936c0 24#include <gmodule.h>
25#include <lttv/module.h>
1ab818de 26#include <lttv/gtkTraceSet.h>
558aa013 27
d66666fe 28#include "cfv.h"
29#include "eventhooks.h"
558aa013 30
d66666fe 31#include "../icons/hGuiControlFlowInsert.xpm"
558aa013 32
ae4e77e0 33static LttvModule *Main_Win_Module;
558aa013 34
35
36/** Array containing instanced objects. Used when module is unloaded */
68997a22 37GSList *g_control_flow_data_list = NULL ;
558aa013 38
39
f0d936c0 40
f0d936c0 41
42/*****************************************************************************
43 * Functions for module loading/unloading *
44 *****************************************************************************/
45/**
46 * plugin's init function
47 *
48 * This function initializes the Control Flow Viewer functionnality through the
49 * gtkTraceSet API.
50 */
558aa013 51G_MODULE_EXPORT void init(LttvModule *self, int argc, char *argv[]) {
52
a56a1ba4 53 Main_Win_Module = lttv_module_require(self, "mainwin", argc, argv);
54
55 if(Main_Win_Module == NULL)
56 {
57 g_critical("Can't load Control Flow Viewer : missing mainwin\n");
58 return;
59 }
60
61 g_info("GUI ControlFlow Viewer init()");
62
63 /* Register the toolbar insert button */
64 toolbar_item_reg(hGuiControlFlowInsert_xpm, "Insert Control Flow Viewer",
65 h_guicontrolflow);
66
67 /* Register the menu item insert entry */
68 menu_item_reg("/", "Insert Control Flow Viewer", h_guicontrolflow);
69
f0d936c0 70}
71
72void destroy_walk(gpointer data, gpointer user_data)
73{
a56a1ba4 74 g_info("Walk destroy GUI Control Flow Viewer");
75 guicontrolflow_destructor_full((ControlFlowData*)data);
f0d936c0 76}
77
78
79
80/**
81 * plugin's destroy function
82 *
83 * This function releases the memory reserved by the module and unregisters
84 * everything that has been registered in the gtkTraceSet API.
85 */
86G_MODULE_EXPORT void destroy() {
a56a1ba4 87 g_info("GUI Control Flow Viewer destroy()");
88 int i;
f0d936c0 89
68997a22 90 g_slist_foreach(g_control_flow_data_list, destroy_walk, NULL );
a56a1ba4 91
68997a22 92 g_slist_free(g_control_flow_data_list);
f7afe191 93
a56a1ba4 94 /* Unregister the toolbar insert button */
95 toolbar_item_unreg(h_guicontrolflow);
f0d936c0 96
a56a1ba4 97 /* Unregister the menu item insert entry */
98 menu_item_unreg(h_guicontrolflow);
99
558aa013 100}
This page took 0.027856 seconds and 4 git commands to generate.