1 /* Forms/Read-only form
2  *
3  * The GdauiForm widget displays data stored in a GdaDataModel.
4  */
5 
6 #include <libgda-ui/libgda-ui.h>
7 #include <sql-parser/gda-sql-parser.h>
8 
9 extern GdaConnection *demo_cnc;
10 extern GdaSqlParser *demo_parser;
11 static GtkWidget *window = NULL;
12 
13 GtkWidget *
do_form(GtkWidget * do_widget)14 do_form (GtkWidget *do_widget)
15 {
16 	if (!window) {
17                 GdaStatement *stmt;
18 		GtkWidget *vbox;
19 		GtkWidget *label;
20 		GdaDataModel *model;
21 		GtkWidget *form;
22 
23 		window = gtk_dialog_new_with_buttons ("GdauiForm (RO)",
24 						      GTK_WINDOW (do_widget),
25 						      0,
26 						      GTK_STOCK_CLOSE,
27 						      GTK_RESPONSE_NONE,
28 						      NULL);
29 
30 		g_signal_connect (window, "response",
31 				  G_CALLBACK (gtk_widget_destroy), NULL);
32 		g_signal_connect (window, "destroy",
33 				  G_CALLBACK (gtk_widget_destroyed), &window);
34 
35 		vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
36 		gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (window))),
37 				    vbox, TRUE, TRUE, 0);
38 		gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
39 
40 		label = gtk_label_new ("The following GdauiForm widget displays data from the 'products' table.\n\n"
41 				       "As no modification query is provided, the data is read-only.");
42 		gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
43 
44 		/* Create the demo widget */
45 		stmt = gda_sql_parser_parse_string (demo_parser, "SELECT * FROM products", NULL, NULL);
46 		model = gda_connection_statement_execute_select (demo_cnc, stmt, NULL, NULL);
47 		g_object_unref (stmt);
48 		form = gdaui_form_new (model);
49 		g_object_unref (model);
50 
51 		gtk_box_pack_start (GTK_BOX (vbox), form, TRUE, TRUE, 0);
52 	}
53 
54 	gboolean visible;
55 	g_object_get (G_OBJECT (window), "visible", &visible, NULL);
56 	if (!visible)
57 		gtk_widget_show_all (window);
58 	else {
59 		gtk_widget_destroy (window);
60 		window = NULL;
61 	}
62 
63 	return window;
64 }
65 
66 
67