3
* Copyright (C) 2004 Vivien Malerba
5
* This program is free software; you can redistribute it and/or
6
* modify it under the terms of the GNU General Public License as
7
* published by the Free Software Foundation; either version 2 of the
8
* License, or (at your option) any later version.
10
* This program is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU General Public License for more details.
15
* You should have received a copy of the GNU General Public License
16
* along with this program; if not, write to the Free Software
17
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
21
#include "sel-aggregates.h"
22
#include <libgnomedb/libgnomedb.h>
23
#include "mg-server.h"
24
#include "mg-server-data-type.h"
25
#include "mg-server-aggregate.h"
30
* Module for aggregates
33
static void module_aggregates_fill_model (Module *module);
34
static void module_aggregates_free (Module *module);
35
static const gchar *module_aggregates_col_name (Module *module, guint colno);
38
sel_module_aggregates_new (MgSelector *mgsel, gboolean insert_header,
39
GtkTreeIter *iter, gpointer data)
43
module = g_new0 (Module, 1);
44
module->selector = mgsel;
45
module->fill_model = module_aggregates_fill_model;
46
module->free = module_aggregates_free;
47
module->col_name = module_aggregates_col_name;
48
module->obj_manager = NULL;
49
module->model_store_data = NULL;
50
module->mod_data = NULL;
52
module->parent_module = NULL;
53
module->sub_modules = NULL;
56
GdkPixbuf *pixbuf = NULL;
57
GtkTreeModel *model = mgsel->priv->model;
59
pixbuf = gnome_db_stock_get_icon_pixbuf (GNOME_DB_STOCK_AGGREGATES);
61
module->iter = g_new0 (GtkTreeIter, 1);
62
gtk_tree_store_append (GTK_TREE_STORE (model), module->iter, iter);
63
gtk_tree_store_set (GTK_TREE_STORE (model), module->iter, NAME_COLUMN,
64
_("Aggregates"), PIXBUF_COLUMN, pixbuf,
65
CONTENTS_COLUMN, CONTENTS_TOP_CATEGORY,
66
SUB_MODULE_COLUMN, NULL, -1);
70
module->iter = gtk_tree_iter_copy (module->iter);
77
static GSList *module_aggregates_get_objects_list (Module *module);
78
static gchar *module_aggregates_get_extended_name (GObject *obj);
80
module_aggregates_fill_model (Module *module)
84
GdkPixbuf *pixbuf_agg = NULL;
86
srv = mg_conf_get_server (module->selector->priv->conf);
87
pixbuf_agg = gnome_db_stock_get_icon_pixbuf_file ("gnome-db-aggregates_16x16.png");
89
/* Module's private data */
90
module->mod_data = g_new0 (ModNameGroupData, 1);
91
GROUP_DATA (module)->manager = G_OBJECT (srv);
92
GROUP_DATA (module)->manager_weak_refed = FALSE;
93
GROUP_DATA (module)->obj_pixbuf = pixbuf_agg;
94
GROUP_DATA (module)->get_objects_list = module_aggregates_get_objects_list;
95
GROUP_DATA (module)->get_extended_name = module_aggregates_get_extended_name;
97
/* Initial model filling */
98
model = module->selector->priv->model;
99
name_group_init_model_fill (module, model);
101
/* Signals handlers */
102
g_signal_connect (G_OBJECT (srv), "data_aggregate_added",
103
G_CALLBACK (name_group_obj_added_cb), module);
104
g_signal_connect (G_OBJECT (srv), "data_aggregate_removed",
105
G_CALLBACK (name_group_obj_removed_cb), module);
106
g_signal_connect (G_OBJECT (srv), "data_aggregate_updated",
107
G_CALLBACK (name_group_obj_updated_cb), module);
108
g_signal_connect (G_OBJECT (srv), "data_update_started",
109
G_CALLBACK (name_group_update_started_cb), module);
110
g_signal_connect (G_OBJECT (srv), "data_update_finished",
111
G_CALLBACK (name_group_update_finished_cb), module);
115
module_aggregates_get_objects_list (Module *module)
117
g_return_val_if_fail (GROUP_DATA (module)->manager, NULL);
118
g_return_val_if_fail (IS_MG_SERVER (GROUP_DATA (module)->manager), NULL);
120
return mg_server_get_aggregates (MG_SERVER (GROUP_DATA (module)->manager));
124
module_aggregates_get_extended_name (GObject *obj)
126
MgServerAggregate *agg;
128
MgServerDataType *arg;
131
g_return_val_if_fail (obj && IS_MG_SERVER_AGGREGATE (obj), NULL);
133
agg = MG_SERVER_AGGREGATE (obj);
134
string = g_string_new (mg_server_aggregate_get_sqlname (MG_SERVER_AGGREGATE (agg)));
135
arg = mg_server_aggregate_get_arg_type (agg);
136
g_string_append (string, " (");
138
g_string_append (string, mg_server_data_type_get_sqlname (arg));
140
g_string_append (string, "*");
142
g_string_append (string, ")");
143
retval = string->str;
144
g_string_free (string, FALSE);
150
module_aggregates_free (Module *module)
153
srv = mg_conf_get_server (module->selector->priv->conf);
156
g_signal_handlers_disconnect_by_func (G_OBJECT (srv),
157
G_CALLBACK (name_group_obj_added_cb), module);
158
g_signal_handlers_disconnect_by_func (G_OBJECT (srv),
159
G_CALLBACK (name_group_obj_removed_cb), module);
160
g_signal_handlers_disconnect_by_func (G_OBJECT (srv),
161
G_CALLBACK (name_group_obj_updated_cb), module);
162
g_signal_handlers_disconnect_by_func (G_OBJECT (srv),
163
G_CALLBACK (name_group_update_started_cb), module);
164
g_signal_handlers_disconnect_by_func (G_OBJECT (srv),
165
G_CALLBACK (name_group_update_finished_cb), module);
168
gtk_tree_iter_free (module->iter);
169
name_group_free_mod_data (module);
170
g_free (module->mod_data);
171
module->mod_data = NULL;
176
module_aggregates_col_name (Module *module, guint colno)
180
return _("Aggregate");