]> git.cworth.org Git - wordgame/blob - rack-fancy.c
Add shell for rack-fancy (graphical version of rack)
[wordgame] / rack-fancy.c
1 /*
2  * Copyright © 2006 Carl Worth
3  *
4  * This program is free software; you can redistribute it and\/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2, or (at your option)
7  * any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA."
17  */
18 #include <stdlib.h>
19 #include <goocanvas.h>
20 #include "demo-item.h"
21
22 static gboolean
23 on_delete_event (GtkWidget *window,
24                  GdkEvent  *event,
25                  gpointer   unused_data)
26 {
27     exit (0);
28 }
29
30 static GtkWidget *
31 create_window (void)
32 {
33     GtkWidget *window, *scrolled_window;
34
35     window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
36     gtk_window_set_default_size (GTK_WINDOW (window), 500, 500);
37     gtk_widget_show (window);
38     g_signal_connect (window, "delete_event",
39                       (GtkSignalFunc) on_delete_event, NULL);
40
41     scrolled_window = gtk_scrolled_window_new (NULL, NULL);
42     gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window),
43                                          GTK_SHADOW_IN);
44     gtk_scrolled_window_set_policy  (GTK_SCROLLED_WINDOW (scrolled_window),
45                                      GTK_POLICY_AUTOMATIC,
46                                      GTK_POLICY_AUTOMATIC);
47     gtk_widget_show (scrolled_window);
48     gtk_container_add (GTK_CONTAINER (window), scrolled_window);
49
50     return scrolled_window;
51 }
52
53 static gboolean
54 on_button_press (GooCanvasItem  *item,
55                  GooCanvasItem  *target,
56                  GdkEventButton *event,
57                  gpointer        data)
58 {
59     g_print ("demo item received button press event\n");
60     return TRUE;
61 }
62
63 static void
64 create_canvas (GtkWidget *parent)
65 {
66     GtkWidget *canvas;
67     GooCanvasItem *root, *rect;
68
69     canvas = goo_canvas_new ();
70     gtk_widget_set_size_request (canvas, 400, 400);
71     goo_canvas_set_bounds (GOO_CANVAS (canvas), 0, 0, 400, 400);
72     gtk_widget_show (canvas);
73     gtk_container_add (GTK_CONTAINER (parent), canvas);
74
75     root = goo_canvas_get_root_item (GOO_CANVAS (canvas));
76
77     rect = goo_demo_item_new (root, 30, 20, 50, 30,
78                               "fill-color", "purple",
79                               NULL);
80
81     g_signal_connect (rect, "button_press_event",
82                       (GtkSignalFunc) on_button_press, NULL);
83
84 }
85
86 int
87 main (int argc, char *argv[])
88 {
89     GtkWidget *window;
90
91     gtk_init (&argc, &argv);
92
93     window = create_window ();
94
95     create_canvas (window);
96
97     gtk_main ();
98
99     return 0;
100 }