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