1
#include <libmergeant/libmergeant.h>
3
#include "mg-test-common.h"
5
gchar *source = NULL, *user = NULL;
6
GtkWidget *mainwin = NULL;
7
GtkWidget *canvas1, *canvas2;
9
static gboolean delete_event( GtkWidget *widget,
13
g_print ("Leaving test...\n");
18
static void destroy( GtkWidget *widget,
24
GtkWidget *build_menu (GtkWidget *mainwin);
25
GtkWidget *build_main (MgConf *conf, MgDataHandler *dh, GdaValueType type);
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);
32
main (int argc, char **argv)
34
GtkWidget *vbox, *canvas, *sw, *menu, *hbox, *bbox, *button;
40
/* Initialize i18n support */
43
/* Initialize the widget set */
44
gtk_init (&argc, &argv);
47
conf = MG_CONF (mg_conf_new ());
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);
57
vbox = gtk_vbox_new (FALSE, 0);
58
gtk_container_add (GTK_CONTAINER (mainwin), vbox);
59
gtk_widget_show (vbox);
62
menu = build_menu (mainwin);
63
gtk_widget_show (menu);
64
gtk_box_pack_start (GTK_BOX (vbox), menu, FALSE, FALSE, 0);
67
/* Data loading if available */
68
if (!mg_conf_load_xml_file (conf, "TEST_GRAPH.xml", &error)) {
70
g_print ("ERROR loading TEST_GRAPH.xml:%s\n", error->message);
74
source = get_first_datasource ();
77
g_print ("Can't execute tests, no datasource available\n");
80
user = get_datasource_user (source);
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));
90
if (!mg_server_open_connect (mg_conf_get_server (conf), &error)) {
91
g_print ("Can't open connection: %s\n", error->message);
95
hbox = gtk_hbox_new (FALSE, 0);
96
gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
97
gtk_widget_show (hbox);
100
graphs = mg_conf_get_graphs (conf);
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)));
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)));
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);
119
canvas = mg_canvas_db_relations_new (conf, graph);
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);
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);
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);
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);
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);
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");
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);
163
canvas = mg_canvas_db_relations_new (conf, graph);
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);
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);
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);
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);
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);
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");
201
/* Show the application window */
202
gtk_widget_show (mainwin);
203
gtk_widget_set_size_request (mainwin, 1000, 500);
207
mg_conf_save_xml_file (conf, "TEST_GRAPH.xml", NULL);
208
g_object_unref (G_OBJECT (conf));
217
zoom_in (GtkButton *btn, GtkWidget *canvas)
219
if ((canvas == canvas1) || (canvas == canvas2))
220
mg_canvas_set_zoom_factor (MG_CANVAS (canvas), GNOME_CANVAS (canvas)->pixels_per_unit + .05);
224
zoom_out (GtkButton *btn, GtkWidget *canvas)
226
if ((canvas == canvas1) || (canvas == canvas2))
227
mg_canvas_set_zoom_factor (MG_CANVAS (canvas), GNOME_CANVAS (canvas)->pixels_per_unit - .05);
231
zoom_fit (GtkButton *btn, GtkWidget *canvas)
233
if ((canvas == canvas1) || (canvas == canvas2))
234
mg_canvas_fit_zoom_factor (MG_CANVAS (canvas));
238
destroy_canvas (GtkButton *btn, GtkWidget *canvas)
240
if ((canvas == canvas1) || (canvas == canvas2))
241
gtk_object_destroy (GTK_OBJECT (canvas));
242
if (canvas == canvas1)
244
if (canvas == canvas2)
253
build_menu (GtkWidget *mainwin)
255
GtkWidget *menubar1, *menuitem1, *menuitem1_menu, *quit1;
256
GtkAccelGroup *accel_group;
258
accel_group = gtk_accel_group_new ();
260
menubar1 = gtk_menu_bar_new ();
261
gtk_widget_show (menubar1);
263
menuitem1 = gtk_menu_item_new_with_mnemonic (_("_Fichier"));
264
gtk_widget_show (menuitem1);
265
gtk_container_add (GTK_CONTAINER (menubar1), menuitem1);
267
menuitem1_menu = gtk_menu_new ();
268
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem1), menuitem1_menu);
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);
274
g_signal_connect ((gpointer) quit1, "activate",
275
G_CALLBACK (destroy), NULL);
277
gtk_window_add_accel_group (GTK_WINDOW (mainwin), accel_group);