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

« back to all changes in this revision

Viewing changes to testing/mg-test-graph.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
 
#include <libmergeant/libmergeant.h>
2
 
#include <gtk/gtk.h>
3
 
#include "mg-test-common.h"
4
 
 
5
 
gchar *source = NULL, *user = NULL;
6
 
GtkWidget *mainwin = NULL;
7
 
GtkWidget *canvas1, *canvas2;
8
 
 
9
 
static gboolean delete_event( GtkWidget *widget,
10
 
                              GdkEvent  *event,
11
 
                              gpointer   data )
12
 
{
13
 
    g_print ("Leaving test...\n");
14
 
 
15
 
    return FALSE;
16
 
}
17
 
 
18
 
static void destroy( GtkWidget *widget,
19
 
                     gpointer   data )
20
 
{
21
 
    gtk_main_quit ();
22
 
}
23
 
 
24
 
GtkWidget *build_menu (GtkWidget *mainwin);
25
 
GtkWidget *build_main (MgConf *conf, MgDataHandler *dh, GdaValueType type);
26
 
 
27
 
static void zoom_in (GtkButton *btn, GtkWidget *canvas);
28
 
static void zoom_out (GtkButton *btn, GtkWidget *canvas);
29
 
static void zoom_fit (GtkButton *btn, GtkWidget *canvas);
30
 
static void destroy_canvas (GtkButton *btn, GtkWidget *canvas);
31
 
int 
32
 
main (int argc, char **argv)
33
 
{
34
 
        GtkWidget *vbox, *canvas, *sw, *menu, *hbox, *bbox, *button;
35
 
        MgConf *conf;
36
 
        MgGraph *graph;
37
 
        GError *error = NULL;
38
 
        GSList *graphs;
39
 
 
40
 
        /* Initialize i18n support */
41
 
        gtk_set_locale ();
42
 
        
43
 
        /* Initialize the widget set */
44
 
        gtk_init (&argc, &argv);
45
 
 
46
 
        /* tested objects */
47
 
        conf = MG_CONF (mg_conf_new ());
48
 
 
49
 
        /* Create the main window */
50
 
        mainwin = gtk_window_new (GTK_WINDOW_TOPLEVEL);
51
 
        gtk_container_set_border_width (GTK_CONTAINER (mainwin), 0);
52
 
        g_signal_connect (G_OBJECT (mainwin), "delete_event",
53
 
                          G_CALLBACK (delete_event), NULL);
54
 
        g_signal_connect (G_OBJECT (mainwin), "destroy",
55
 
                          G_CALLBACK (destroy), NULL);
56
 
 
57
 
        vbox = gtk_vbox_new (FALSE, 0);
58
 
        gtk_container_add (GTK_CONTAINER (mainwin), vbox);
59
 
        gtk_widget_show (vbox);
60
 
 
61
 
        /* menu */
62
 
        menu = build_menu (mainwin);
63
 
        gtk_widget_show (menu);
64
 
        gtk_box_pack_start (GTK_BOX (vbox), menu, FALSE, FALSE, 0);
65
 
 
66
 
 
67
 
        /* Data loading if available */
68
 
        if (!mg_conf_load_xml_file (conf, "TEST_GRAPH.xml", &error)) {
69
 
                if (error) {
70
 
                        g_print ("ERROR loading TEST_GRAPH.xml:%s\n", error->message);
71
 
                        g_error_free (error);
72
 
                }
73
 
                
74
 
                source = get_first_datasource ();
75
 
                
76
 
                if (!source) {
77
 
                        g_print ("Can't execute tests, no datasource available\n");
78
 
                        exit (1);
79
 
                }
80
 
                user = get_datasource_user (source);
81
 
                
82
 
                error = NULL;
83
 
        }
84
 
        else {
85
 
                g_print ("Using TEST_GRAPH.xml file\n\n");
86
 
                source = mg_server_get_datasource (mg_conf_get_server (conf));
87
 
                user = mg_server_get_user_name (mg_conf_get_server (conf));
88
 
        }
89
 
 
90
 
        if (!mg_server_open_connect (mg_conf_get_server (conf), &error)) {
91
 
                g_print ("Can't open connection: %s\n", error->message);
92
 
                g_error_free (error);
93
 
        }
94
 
        
95
 
        hbox = gtk_hbox_new (FALSE, 0);
96
 
        gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
97
 
        gtk_widget_show (hbox);
98
 
        
99
 
        /* MgGraph object */
100
 
        graphs = mg_conf_get_graphs (conf);
101
 
        if (graphs) {
102
 
                graph = MG_GRAPH (graphs->data);
103
 
                g_slist_free (graphs);
104
 
                g_print ("Using the first available graph (ID=%s)\n", mg_xml_storage_get_xml_id (MG_XML_STORAGE (graph)));
105
 
        }
106
 
        else {
107
 
                graph = MG_GRAPH (mg_graph_new (conf, MG_GRAPH_DB_RELATIONS));
108
 
                mg_conf_assume_graph (conf, graph);
109
 
                g_object_unref (G_OBJECT (graph));
110
 
                g_print ("Using new graph (ID=%s)\n", mg_xml_storage_get_xml_id (MG_XML_STORAGE (graph)));
111
 
        }
112
 
 
113
 
        /* canvas 1 */
114
 
        g_print ("Creating canvas 1...");
115
 
        vbox = gtk_vbox_new (FALSE, 0);
116
 
        gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0);
117
 
        gtk_widget_show (vbox);
118
 
 
119
 
        canvas = mg_canvas_db_relations_new (conf, graph);
120
 
        canvas1 = canvas;
121
 
 
122
 
        bbox = gtk_hbutton_box_new ();
123
 
        gtk_widget_show (bbox);
124
 
        gtk_box_pack_start (GTK_BOX (vbox), bbox, FALSE, TRUE, 0);
125
 
        gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_START);
126
 
 
127
 
        button = gtk_button_new_from_stock (GTK_STOCK_ZOOM_IN);
128
 
        gtk_widget_show (button);
129
 
        gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, TRUE, 0);
130
 
        g_signal_connect (G_OBJECT (button), "clicked",
131
 
                          G_CALLBACK (zoom_in), canvas);
132
 
 
133
 
        button = gtk_button_new_from_stock (GTK_STOCK_ZOOM_OUT);
134
 
        gtk_widget_show (button);
135
 
        gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, TRUE, 0);
136
 
        g_signal_connect (G_OBJECT (button), "clicked",
137
 
                          G_CALLBACK (zoom_out), canvas);
138
 
 
139
 
        button = gtk_button_new_from_stock (GTK_STOCK_ZOOM_FIT);
140
 
        gtk_widget_show (button);
141
 
        gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, TRUE, 0);
142
 
        g_signal_connect (G_OBJECT (button), "clicked",
143
 
                          G_CALLBACK (zoom_fit), canvas);
144
 
 
145
 
        button = gtk_button_new_from_stock (GTK_STOCK_DELETE);
146
 
        gtk_widget_show (button);
147
 
        gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, TRUE, 0);
148
 
        g_signal_connect (G_OBJECT (button), "clicked",
149
 
                          G_CALLBACK (destroy_canvas), canvas);
150
 
 
151
 
        sw = mg_canvas_set_in_scrolled_window (MG_CANVAS (canvas));
152
 
        gtk_box_pack_start (GTK_BOX (vbox), sw, TRUE, TRUE, 0);
153
 
        gtk_widget_show (sw);
154
 
        g_print (" Done.\n");
155
 
 
156
 
        if (1) {
157
 
                /* canvas 2 */
158
 
                g_print ("Creating canvas 2...");
159
 
                vbox = gtk_vbox_new (FALSE, 0);
160
 
                gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0);
161
 
                gtk_widget_show (vbox);
162
 
                
163
 
                canvas = mg_canvas_db_relations_new (conf, graph);
164
 
                canvas2 = canvas;
165
 
                
166
 
                bbox = gtk_hbutton_box_new ();
167
 
                gtk_widget_show (bbox);
168
 
                gtk_box_pack_start (GTK_BOX (vbox), bbox, FALSE, TRUE, 0);
169
 
                gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_START);
170
 
                
171
 
                button = gtk_button_new_from_stock (GTK_STOCK_ZOOM_IN);
172
 
                gtk_widget_show (button);
173
 
                gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, TRUE, 0);
174
 
                g_signal_connect (G_OBJECT (button), "clicked",
175
 
                                  G_CALLBACK (zoom_in), canvas);
176
 
                
177
 
                button = gtk_button_new_from_stock (GTK_STOCK_ZOOM_OUT);
178
 
                gtk_widget_show (button);
179
 
                gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, TRUE, 0);
180
 
                g_signal_connect (G_OBJECT (button), "clicked",
181
 
                                  G_CALLBACK (zoom_out), canvas);
182
 
                
183
 
                button = gtk_button_new_from_stock (GTK_STOCK_ZOOM_FIT);
184
 
                gtk_widget_show (button);
185
 
                gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, TRUE, 0);
186
 
                g_signal_connect (G_OBJECT (button), "clicked",
187
 
                                  G_CALLBACK (zoom_fit), canvas);
188
 
                
189
 
                button = gtk_button_new_from_stock (GTK_STOCK_DELETE);
190
 
                gtk_widget_show (button);
191
 
                gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, TRUE, 0);
192
 
                g_signal_connect (G_OBJECT (button), "clicked",
193
 
                                  G_CALLBACK (destroy_canvas), canvas);
194
 
                
195
 
                sw = mg_canvas_set_in_scrolled_window (MG_CANVAS (canvas));
196
 
                gtk_box_pack_start (GTK_BOX (vbox), sw, TRUE, TRUE, 0);
197
 
                gtk_widget_show (sw);
198
 
                g_print (" Done.\n");
199
 
        }
200
 
 
201
 
        /* Show the application window */
202
 
        gtk_widget_show (mainwin);
203
 
        gtk_widget_set_size_request (mainwin, 1000, 500);
204
 
        
205
 
        gtk_main ();
206
 
        
207
 
        mg_conf_save_xml_file (conf, "TEST_GRAPH.xml", NULL);
208
 
        g_object_unref (G_OBJECT (conf));
209
 
 
210
 
        g_free (source);
211
 
        g_free (user);
212
 
 
213
 
        return 0;
214
 
}
215
 
 
216
 
static void
217
 
zoom_in (GtkButton *btn, GtkWidget *canvas)
218
 
{
219
 
        if ((canvas == canvas1) || (canvas == canvas2))
220
 
                mg_canvas_set_zoom_factor (MG_CANVAS (canvas), GNOME_CANVAS (canvas)->pixels_per_unit + .05);
221
 
}
222
 
 
223
 
static void
224
 
zoom_out (GtkButton *btn, GtkWidget *canvas)
225
 
{
226
 
        if ((canvas == canvas1) || (canvas == canvas2))
227
 
                mg_canvas_set_zoom_factor (MG_CANVAS (canvas), GNOME_CANVAS (canvas)->pixels_per_unit - .05);
228
 
}
229
 
 
230
 
static void
231
 
zoom_fit (GtkButton *btn, GtkWidget *canvas)
232
 
{
233
 
        if ((canvas == canvas1) || (canvas == canvas2)) 
234
 
                mg_canvas_fit_zoom_factor (MG_CANVAS (canvas));
235
 
}
236
 
 
237
 
static void
238
 
destroy_canvas (GtkButton *btn, GtkWidget *canvas)
239
 
{
240
 
        if ((canvas == canvas1) || (canvas == canvas2))
241
 
                gtk_object_destroy (GTK_OBJECT (canvas));
242
 
        if (canvas == canvas1)
243
 
                canvas1 = NULL;
244
 
        if (canvas == canvas2)
245
 
                canvas2 = NULL;
246
 
}
247
 
 
248
 
 
249
 
/*
250
 
 * Menu
251
 
 */
252
 
GtkWidget *
253
 
build_menu (GtkWidget *mainwin)
254
 
{
255
 
        GtkWidget *menubar1, *menuitem1, *menuitem1_menu, *quit1;
256
 
        GtkAccelGroup *accel_group;
257
 
 
258
 
        accel_group = gtk_accel_group_new ();
259
 
 
260
 
        menubar1 = gtk_menu_bar_new ();
261
 
        gtk_widget_show (menubar1);
262
 
 
263
 
        menuitem1 = gtk_menu_item_new_with_mnemonic (_("_Fichier"));
264
 
        gtk_widget_show (menuitem1);
265
 
        gtk_container_add (GTK_CONTAINER (menubar1), menuitem1);
266
 
        
267
 
        menuitem1_menu = gtk_menu_new ();
268
 
        gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem1), menuitem1_menu);
269
 
        
270
 
        quit1 = gtk_image_menu_item_new_from_stock ("gtk-quit", accel_group);
271
 
        gtk_widget_show (quit1);
272
 
        gtk_container_add (GTK_CONTAINER (menuitem1_menu), quit1);
273
 
 
274
 
        g_signal_connect ((gpointer) quit1, "activate",
275
 
                          G_CALLBACK (destroy), NULL);
276
 
 
277
 
        gtk_window_add_accel_group (GTK_WINDOW (mainwin), accel_group);
278
 
 
279
 
        return menubar1;
280
 
}