~ubuntu-branches/ubuntu/karmic/mergeant/karmic

« back to all changes in this revision

Viewing changes to libmergeant/sel-aggregates.c

  • Committer: Bazaar Package Importer
  • Author(s): Gustavo R. Montesino
  • Date: 2007-11-29 08:44:48 UTC
  • mfrom: (2.1.4 hardy)
  • Revision ID: james.westby@ubuntu.com-20071129084448-6aon73d22bv6hzfw
Tags: 0.67-3
* Re-enable installation of the mime files in mergeant.install
* mergeant.dirs: create usr/share/mime/packages to make dh_installmime add
  the update-mime-database code snippets

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* sel-aggregates.c
2
 
 *
3
 
 * Copyright (C) 2004 Vivien Malerba
4
 
 *
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.
9
 
 *
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.
14
 
 *
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
18
 
 * USA
19
 
 */
20
 
 
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"
26
 
 
27
 
 
28
 
/*
29
 
 *
30
 
 * Module for aggregates
31
 
 *
32
 
 */
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);
36
 
 
37
 
Module *
38
 
sel_module_aggregates_new (MgSelector *mgsel, gboolean insert_header, 
39
 
                           GtkTreeIter *iter, gpointer data)
40
 
{
41
 
        Module *module;
42
 
 
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;
51
 
        module->iter = NULL;
52
 
        module->parent_module = NULL;
53
 
        module->sub_modules = NULL;
54
 
 
55
 
        if (insert_header) {
56
 
                GdkPixbuf *pixbuf = NULL;
57
 
                GtkTreeModel *model = mgsel->priv->model;
58
 
 
59
 
                pixbuf = gnome_db_stock_get_icon_pixbuf (GNOME_DB_STOCK_AGGREGATES);
60
 
 
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);               
67
 
        }
68
 
        else {
69
 
                if (iter)
70
 
                        module->iter = gtk_tree_iter_copy (module->iter);
71
 
        }
72
 
 
73
 
        return module;
74
 
}
75
 
 
76
 
 
77
 
static GSList *module_aggregates_get_objects_list (Module *module);
78
 
static gchar  *module_aggregates_get_extended_name (GObject *obj);
79
 
static void
80
 
module_aggregates_fill_model (Module *module)
81
 
{
82
 
        MgServer *srv;
83
 
        GtkTreeModel *model;
84
 
        GdkPixbuf *pixbuf_agg = NULL;
85
 
 
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");
88
 
 
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;
96
 
        
97
 
        /* Initial model filling */
98
 
        model = module->selector->priv->model;
99
 
        name_group_init_model_fill (module, model);
100
 
 
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);
112
 
}
113
 
 
114
 
static GSList *
115
 
module_aggregates_get_objects_list (Module *module)
116
 
{
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);
119
 
 
120
 
        return mg_server_get_aggregates (MG_SERVER (GROUP_DATA (module)->manager));
121
 
}
122
 
 
123
 
static gchar *
124
 
module_aggregates_get_extended_name (GObject *obj)
125
 
{
126
 
        MgServerAggregate *agg;
127
 
        GString *string;
128
 
        MgServerDataType *arg;
129
 
        gchar *retval;
130
 
 
131
 
        g_return_val_if_fail (obj && IS_MG_SERVER_AGGREGATE (obj), NULL);
132
 
 
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, " (");
137
 
        if (arg)
138
 
                g_string_append (string, mg_server_data_type_get_sqlname (arg));
139
 
        else
140
 
                g_string_append (string, "*");
141
 
                        
142
 
        g_string_append (string, ")");
143
 
        retval = string->str;
144
 
        g_string_free (string, FALSE);
145
 
 
146
 
        return retval;
147
 
}
148
 
 
149
 
static void
150
 
module_aggregates_free (Module *module)
151
 
{
152
 
        MgServer *srv;
153
 
        srv = mg_conf_get_server (module->selector->priv->conf);
154
 
 
155
 
        if (srv) {
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);
166
 
        }
167
 
        if (module->iter)
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;
172
 
}
173
 
 
174
 
 
175
 
static const gchar *
176
 
module_aggregates_col_name (Module *module, guint colno)
177
 
{
178
 
        switch (colno) {
179
 
        case 0:
180
 
                return _("Aggregate");
181
 
                break;
182
 
        default:
183
 
                return NULL;
184
 
                break;
185
 
        }
186
 
}
187
 
 
188