diff options
author | BST 1998 Tony Gale <gale@gtk.org> | 1998-04-04 11:31:51 +0000 |
---|---|---|
committer | Tony Gale <gale@src.gnome.org> | 1998-04-04 11:31:51 +0000 |
commit | e19f939b53c833ac2fc47d6fe18c88fcbb0b7e39 (patch) | |
tree | 6ab57b3d3285a18b09af62bcfb1ea3bd0a5e7260 /examples | |
parent | 977b13d37f44beff17830009bfc55d39848c3dc1 (diff) | |
download | gdk-pixbuf-e19f939b53c833ac2fc47d6fe18c88fcbb0b7e39.tar.gz |
subsections on Aspect Frames and Paned widgets.
Sat Apr 4 12:23:23 BST 1998 Tony Gale <gale@gtk.org>
* docs/gtk_tut.sgml: (gtk-crichton-980403-0) subsections on
Aspect Frames and Paned widgets.
* examples/paned examples/aspectframe: new examples
Diffstat (limited to 'examples')
-rw-r--r-- | examples/aspectframe/Makefile | 8 | ||||
-rw-r--r-- | examples/aspectframe/aspectframe.c | 43 | ||||
-rw-r--r-- | examples/paned/Makefile | 8 | ||||
-rw-r--r-- | examples/paned/paned.c | 136 |
4 files changed, 195 insertions, 0 deletions
diff --git a/examples/aspectframe/Makefile b/examples/aspectframe/Makefile new file mode 100644 index 000000000..fe8b11e28 --- /dev/null +++ b/examples/aspectframe/Makefile @@ -0,0 +1,8 @@ + +CC = gcc + +aspectframe: aspectframe.c + $(CC) `gtk-config --cflags` `gtk-config --libs` aspectframe.c -o aspectframe + +clean: + rm -f *.o aspectframe diff --git a/examples/aspectframe/aspectframe.c b/examples/aspectframe/aspectframe.c new file mode 100644 index 000000000..0376bf92b --- /dev/null +++ b/examples/aspectframe/aspectframe.c @@ -0,0 +1,43 @@ +/* aspectframe.c */ + +#include <gtk/gtk.h> + +int +main (int argc, char *argv[]) +{ + GtkWidget *window; + GtkWidget *aspect_frame; + GtkWidget *drawing_area; + gtk_init (&argc, &argv); + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_title (GTK_WINDOW (window), "Aspect Frame"); + gtk_signal_connect (GTK_OBJECT (window), "destroy", + GTK_SIGNAL_FUNC (gtk_main_quit), NULL); + gtk_container_border_width (GTK_CONTAINER (window), 10); + + /* Create an aspect_frame and add it to our toplevel window */ + + aspect_frame = gtk_aspect_frame_new ("2x1", /* label */ + 0.5, /* center x */ + 0.5, /* center y */ + 2, /* xsize/ysize = 2 */ + FALSE /* ignore child's aspect */); + + gtk_container_add (GTK_CONTAINER(window), aspect_frame); + gtk_widget_show (aspect_frame); + + /* Now add a child widget to the aspect frame */ + + drawing_area = gtk_drawing_area_new (); + + /* Ask for a 200x200 window, but the AspectFrame will give us a 200x100 + * window since we are forcing a 2x1 aspect ratio */ + gtk_widget_set_usize (drawing_area, 200, 200); + gtk_container_add (GTK_CONTAINER(aspect_frame), drawing_area); + gtk_widget_show (drawing_area); + + gtk_widget_show (window); + gtk_main (); + return 0; +} diff --git a/examples/paned/Makefile b/examples/paned/Makefile new file mode 100644 index 000000000..7e2c01086 --- /dev/null +++ b/examples/paned/Makefile @@ -0,0 +1,8 @@ + +CC = gcc + +paned: paned.c + $(CC) `gtk-config --cflags` `gtk-config --libs` paned.c -o paned + +clean: + rm -f *.o paned diff --git a/examples/paned/paned.c b/examples/paned/paned.c new file mode 100644 index 000000000..46b7c6e12 --- /dev/null +++ b/examples/paned/paned.c @@ -0,0 +1,136 @@ +/* paned.c */ + +#include <gtk/gtk.h> + +/* Create the list of "messages" */ +GtkWidget * +create_list (void) +{ + + GtkWidget *scrolled_window; + GtkWidget *list; + GtkWidget *list_item; + + int i; + char buffer[16]; + + /* Create a new scrolled window, with scrollbars only if needed */ + scrolled_window = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), + GTK_POLICY_AUTOMATIC, + GTK_POLICY_AUTOMATIC); + + /* Create a new list and put it in the scrolled window */ + list = gtk_list_new (); + gtk_container_add (GTK_CONTAINER(scrolled_window), list); + gtk_widget_show (list); + + /* Add some messages to the window */ + for (i=0; i<10; i++) { + + sprintf(buffer,"Message #%d",i); + list_item = gtk_list_item_new_with_label (buffer); + gtk_container_add (GTK_CONTAINER(list), list_item); + gtk_widget_show (list_item); + + } + + return scrolled_window; +} + +/* Add some text to our text widget - this is a callback that is invoked +when our window is realized. We could also force our window to be +realized with gtk_widget_realize, but it would have to be part of +a hierarchy first */ + +void +realize_text (GtkWidget *text, gpointer data) +{ + gtk_text_freeze (GTK_TEXT (text)); + gtk_text_insert (GTK_TEXT (text), NULL, &text->style->black, NULL, + "From: pathfinder@nasa.gov\n" + "To: mom@nasa.gov\n" + "Subject: Made it!\n" + "\n" + "We just got in this morning. The weather has been\n" + "great - clear but cold, and there are lots of fun sights.\n" + "Sojourner says hi. See you soon.\n" + " -Path\n", -1); + + gtk_text_thaw (GTK_TEXT (text)); +} + +/* Create a scrolled text area that displays a "message" */ +GtkWidget * +create_text (void) +{ + GtkWidget *table; + GtkWidget *text; + GtkWidget *hscrollbar; + GtkWidget *vscrollbar; + + /* Create a table to hold the text widget and scrollbars */ + table = gtk_table_new (2, 2, FALSE); + + /* Put a text widget in the upper left hand corner. Note the use of + * GTK_SHRINK in the y direction */ + text = gtk_text_new (NULL, NULL); + gtk_table_attach (GTK_TABLE (table), text, 0, 1, 0, 1, + GTK_FILL | GTK_EXPAND, + GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 0); + gtk_widget_show (text); + + /* Put a HScrollbar in the lower left hand corner */ + hscrollbar = gtk_hscrollbar_new (GTK_TEXT (text)->hadj); + gtk_table_attach (GTK_TABLE (table), hscrollbar, 0, 1, 1, 2, + GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show (hscrollbar); + + /* And a VScrollbar in the upper right */ + vscrollbar = gtk_vscrollbar_new (GTK_TEXT (text)->vadj); + gtk_table_attach (GTK_TABLE (table), vscrollbar, 1, 2, 0, 1, + GTK_FILL, GTK_EXPAND | GTK_FILL | GTK_SHRINK, 0, 0); + gtk_widget_show (vscrollbar); + + /* Add a handler to put a message in the text widget when it is realized */ + gtk_signal_connect (GTK_OBJECT (text), "realize", + GTK_SIGNAL_FUNC (realize_text), NULL); + + return table; +} + +int +main (int argc, char *argv[]) +{ + GtkWidget *window; + GtkWidget *vpaned; + GtkWidget *list; + GtkWidget *text; + + gtk_init (&argc, &argv); + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_title (GTK_WINDOW (window), "Paned Windows"); + gtk_signal_connect (GTK_OBJECT (window), "destroy", + GTK_SIGNAL_FUNC (gtk_main_quit), NULL); + gtk_container_border_width (GTK_CONTAINER (window), 10); + + /* create a vpaned widget and add it to our toplevel window */ + + vpaned = gtk_vpaned_new (); + gtk_container_add (GTK_CONTAINER(window), vpaned); + gtk_widget_show (vpaned); + + /* Now create the contents of the two halves of the window */ + + list = create_list (); + gtk_paned_add1 (GTK_PANED(vpaned), list); + gtk_widget_show (list); + + text = create_text (); + gtk_paned_add2 (GTK_PANED(vpaned), text); + gtk_widget_show (text); + gtk_widget_show (window); + gtk_main (); + return 0; +} |