Integrate adding files with the file manager
[anjuta-git-plugin.git] / plugins / profiler / gprof-view-manager.c
blobbfca2065d116ff2a301232909b0d5ef96c8da2ab
1 /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
2 /*
3 * gprof-view-manager.c
4 * Copyright (C) James Liggett 2006 <jrliggett@cox.net>
5 *
6 * gprof-view-manager.c is free software.
7 *
8 * You may redistribute it and/or modify it under the terms of the
9 * GNU General Public License, as published by the Free Software
10 * Foundation; either version 2, or (at your option) any later version.
12 * plugin.c is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15 * See the GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with plugin.c. See the file "COPYING". If not,
19 * write to: The Free Software Foundation, Inc.,
20 * 51 Franklin Street, Fifth Floor,
21 * Boston, MA 02110-1301, USA.
24 #include "gprof-view-manager.h"
26 struct _GProfViewManagerPriv
28 GtkWidget *notebook;
29 GList *views;
32 static void
33 gprof_view_manager_init (GProfViewManager *self)
35 self->priv = g_new0 (GProfViewManagerPriv, 1);
37 self->priv->notebook = gtk_notebook_new ();
38 self->priv->views = NULL;
41 static void
42 gprof_view_manager_finalize (GObject *obj)
44 GProfViewManager *self;
45 GList *current;
47 self = (GProfViewManager *) obj;
48 current = self->priv->views;
50 while (current)
52 g_object_unref (current->data);
53 current = g_list_next (current);
56 g_list_free (self->priv->views);
58 /* Don't destroy notebook widget--will be destroyed with container */
60 g_free (self->priv);
63 static void
64 gprof_view_manager_class_init (GProfViewManagerClass *klass)
66 GObjectClass *object_class;
68 object_class = (GObjectClass *) klass;
69 object_class->finalize = gprof_view_manager_finalize;
72 GType
73 gprof_view_manager_get_type (void)
75 static GType obj_type = 0;
77 if (!obj_type)
79 static const GTypeInfo obj_info =
81 sizeof (GProfViewManagerClass),
82 (GBaseInitFunc) NULL,
83 (GBaseFinalizeFunc) NULL,
84 (GClassInitFunc) gprof_view_manager_class_init,
85 (GClassFinalizeFunc) NULL,
86 NULL, /* class_data */
87 sizeof (GProfViewManager),
88 0, /* n_preallocs */
89 (GInstanceInitFunc) gprof_view_manager_init,
90 NULL /* value_table */
92 obj_type = g_type_register_static (G_TYPE_OBJECT,
93 "GProfViewManager", &obj_info, 0);
95 return obj_type;
98 GProfViewManager *
99 gprof_view_manager_new (void)
101 return g_object_new (GPROF_VIEW_MANAGER_TYPE, NULL);
104 void
105 gprof_view_manager_free (GProfViewManager *self)
107 g_object_unref (self);
110 void
111 gprof_view_manager_add_view (GProfViewManager *self, GProfView *view,
112 const gchar *label)
114 GtkWidget *new_tab_label;
115 GtkWidget *new_view_widget;
116 GtkWidget *new_view_parent;
118 self->priv->views = g_list_append (self->priv->views, view);
120 new_tab_label = gtk_label_new (label);
121 new_view_widget = gprof_view_get_widget (view);
122 new_view_parent = gtk_widget_get_parent (new_view_widget);
123 g_object_ref (new_view_widget);
125 if (new_view_parent)
126 gtk_container_remove (GTK_CONTAINER (new_view_parent), new_view_widget);
128 gtk_notebook_append_page (GTK_NOTEBOOK (self->priv->notebook), new_view_widget,
129 new_tab_label);
131 g_object_unref (new_view_widget);
135 void
136 gprof_view_manager_refresh_views (GProfViewManager *self)
138 GList *current;
139 GProfView *view;
141 current = self->priv->views;
143 while (current)
145 view = GPROF_VIEW (current->data);
146 gprof_view_refresh (view);
148 current = g_list_next (current);
152 GtkWidget *
153 gprof_view_manager_get_notebook (GProfViewManager *self)
155 return self->priv->notebook;