summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorCDT 1998 Shawn T. Amundson <amundson@gtk.org>1998-06-12 00:49:11 +0000
committerShawn Amundson <amundson@src.gnome.org>1998-06-12 00:49:11 +0000
commitcab220ee8b2d539eeccb3967a11de2679b6b3bde (patch)
tree96ee9c3c2919cd008e194f1ca1b54af764e8fba9 /examples
parentd0ff2dbc7905730b1ea8e885dfff4be494026592 (diff)
downloadgdk-pixbuf-cab220ee8b2d539eeccb3967a11de2679b6b3bde.tar.gz
Added gtkpacker
Thu Jun 11 14:38:33 CDT 1998 Shawn T. Amundson <amundson@gtk.org> * gtk/gtkpacker.c, gtk/gtkpacker.h, gtk/gtk.h, gtk/Makefile.am: Added gtkpacker * examples/packer/pack.c, examples/packer/Makefile: Added gtkpacker example
Diffstat (limited to 'examples')
-rw-r--r--examples/packer/Makefile8
-rw-r--r--examples/packer/pack.c664
2 files changed, 672 insertions, 0 deletions
diff --git a/examples/packer/Makefile b/examples/packer/Makefile
new file mode 100644
index 000000000..27cbc80e7
--- /dev/null
+++ b/examples/packer/Makefile
@@ -0,0 +1,8 @@
+
+CC = gcc
+
+pack: pack.c
+ $(CC) `gtk-config --cflags` `gtk-config --libs` pack.c -o pack
+
+clean:
+ rm -f pack
diff --git a/examples/packer/pack.c b/examples/packer/pack.c
new file mode 100644
index 000000000..2aafa1178
--- /dev/null
+++ b/examples/packer/pack.c
@@ -0,0 +1,664 @@
+/*
+ * This is a demo of gtkpacker.
+ */
+
+#include <gtk/gtk.h>
+
+void add_widget (GtkWidget *widget, gpointer data);
+void toggle_side (GtkWidget *widget, gpointer data);
+void toggle_anchor (GtkWidget *widget, gpointer data);
+void toggle_options (GtkWidget *widget, gpointer data);
+
+typedef struct {
+ GList *widgets;
+ GtkWidget *packer;
+ GtkWidget *current;
+ GtkPackerChild *pchild;
+
+ GtkWidget *button_top;
+ GtkWidget *button_bottom;
+ GtkWidget *button_left;
+ GtkWidget *button_right;
+
+ GtkWidget *button_n;
+ GtkWidget *button_ne;
+ GtkWidget *button_nw;
+ GtkWidget *button_e;
+ GtkWidget *button_w;
+ GtkWidget *button_s;
+ GtkWidget *button_se;
+ GtkWidget *button_sw;
+ GtkWidget *button_center;
+
+ GtkWidget *button_fillx;
+ GtkWidget *button_filly;
+ GtkWidget *button_expand;
+} Info;
+
+void destroy (GtkWidget *widget, gpointer data)
+{
+ gtk_main_quit ();
+}
+
+int
+main (int argv, char **argc)
+{
+ GtkWidget *window;
+ GtkWidget *window_pack;
+ GtkWidget *top_pack;
+ GtkWidget *frame;
+ GtkWidget *packer;
+ GtkWidget *button_pack;
+ GtkWidget *button_add;
+ GtkWidget *button_quit;
+ GtkWidget *bottom_pack;
+ GtkWidget *side_frame;
+ GtkWidget *side_pack;
+ GtkWidget *button_top;
+ GtkWidget *button_bottom;
+ GtkWidget *button_left;
+ GtkWidget *button_right;
+ GtkWidget *anchor_table;
+ GtkWidget *anchor_frame;
+ GtkWidget *button_n;
+ GtkWidget *button_ne;
+ GtkWidget *button_nw;
+ GtkWidget *button_e;
+ GtkWidget *button_w;
+ GtkWidget *button_center;
+ GtkWidget *button_s;
+ GtkWidget *button_se;
+ GtkWidget *button_sw;
+ GtkWidget *button_expand;
+ GtkWidget *button_fillx;
+ GtkWidget *button_filly;
+ GtkWidget *options_pack;
+ GtkWidget *options_frame;
+ GtkWidget *anchor_pack;
+ Info *info;
+
+ gtk_init(&argv, &argc);
+
+ info = g_malloc(sizeof(Info));
+
+ window = gtk_window_new(GTK_TOPLEVEL);
+ gtk_signal_connect (GTK_OBJECT (window), "destroy",
+ GTK_SIGNAL_FUNC (destroy), NULL);
+
+ window_pack = gtk_packer_new();
+ gtk_container_add(GTK_CONTAINER(window), window_pack);
+ gtk_container_border_width(GTK_CONTAINER(window), 4);
+
+ top_pack = gtk_packer_new();
+ gtk_packer_add_defaults(GTK_PACKER(window_pack),
+ top_pack,
+ GTK_SIDE_TOP,
+ GTK_ANCHOR_CENTER,
+ GTK_FILL_X | GTK_FILL_Y | GTK_EXPAND);
+
+ frame = gtk_frame_new("Packing Area");
+ gtk_widget_set_usize(frame, 400, 400);
+ gtk_packer_add(GTK_PACKER(top_pack),
+ frame,
+ GTK_SIDE_LEFT,
+ GTK_ANCHOR_CENTER,
+ GTK_FILL_X | GTK_FILL_Y | GTK_EXPAND,
+ 0, 8, 8, 0, 0);
+ packer = gtk_packer_new();
+ gtk_container_add(GTK_CONTAINER(frame), packer);
+
+ button_pack = gtk_packer_new();
+ gtk_packer_add(GTK_PACKER(top_pack),
+ button_pack,
+ GTK_SIDE_LEFT,
+ GTK_ANCHOR_N,
+ 0,
+ 0, 0, 0, 0, 0);
+
+ button_add = gtk_button_new_with_label("Add Button");
+ gtk_packer_add(GTK_PACKER(top_pack),
+ button_add,
+ GTK_SIDE_TOP,
+ GTK_ANCHOR_CENTER,
+ GTK_FILL_X,
+ 0, 8, 8, 8, 0);
+ gtk_signal_connect (GTK_OBJECT (button_add), "clicked",
+ GTK_SIGNAL_FUNC (add_widget), (gpointer) info);
+
+ button_quit = gtk_button_new_with_label("Quit");
+ gtk_packer_add(GTK_PACKER(top_pack),
+ button_quit,
+ GTK_SIDE_TOP,
+ GTK_ANCHOR_CENTER,
+ GTK_FILL_X,
+ 0, 8, 8, 0, 0);
+ gtk_signal_connect_object (GTK_OBJECT (button_quit), "clicked",
+ GTK_SIGNAL_FUNC (gtk_widget_destroy),
+ GTK_OBJECT (window));
+
+ bottom_pack = gtk_packer_new();
+ gtk_packer_add_defaults(GTK_PACKER(window_pack),
+ bottom_pack,
+ GTK_SIDE_TOP,
+ GTK_ANCHOR_CENTER,
+ GTK_FILL_X);
+
+ side_frame = gtk_frame_new("Side");
+ gtk_packer_add(GTK_PACKER(window_pack),
+ side_frame,
+ GTK_SIDE_LEFT,
+ GTK_ANCHOR_W,
+ GTK_FILL_Y,
+ 0, 10, 10, 0, 0);
+
+ side_pack = gtk_packer_new();
+ gtk_container_add(GTK_CONTAINER(side_frame), side_pack);
+
+ button_top = gtk_toggle_button_new_with_label("Top");
+ button_bottom = gtk_toggle_button_new_with_label("Bottom");
+ button_left = gtk_toggle_button_new_with_label("Left");
+ button_right = gtk_toggle_button_new_with_label("Right");
+
+ gtk_object_set_data(GTK_OBJECT(button_top), "side", (gpointer) GTK_SIDE_TOP);
+ gtk_object_set_data(GTK_OBJECT(button_bottom), "side", (gpointer) GTK_SIDE_BOTTOM);
+ gtk_object_set_data(GTK_OBJECT(button_left), "side", (gpointer) GTK_SIDE_LEFT);
+ gtk_object_set_data(GTK_OBJECT(button_right), "side", (gpointer) GTK_SIDE_RIGHT);
+
+ gtk_widget_set_usize(button_top, 50, -1);
+ gtk_widget_set_usize(button_bottom, 50, -1);
+ gtk_widget_set_usize(button_left, 50, -1);
+ gtk_widget_set_usize(button_right, 50, -1);
+ gtk_packer_add(GTK_PACKER(side_pack),
+ button_top,
+ GTK_SIDE_TOP,
+ GTK_ANCHOR_CENTER,
+ 0,
+ 0, 5, 5, 0, 0);
+ gtk_packer_add(GTK_PACKER(side_pack),
+ button_bottom,
+ GTK_SIDE_BOTTOM,
+ GTK_ANCHOR_CENTER,
+ 0,
+ 0, 5, 5, 0, 0);
+ gtk_packer_add(GTK_PACKER(side_pack),
+ button_left,
+ GTK_SIDE_LEFT,
+ GTK_ANCHOR_CENTER,
+ 0,
+ 0, 10, 5, 0, 0);
+ gtk_packer_add(GTK_PACKER(side_pack),
+ button_right,
+ GTK_SIDE_RIGHT,
+ GTK_ANCHOR_CENTER,
+ 0,
+ 0, 10, 5, 0, 0);
+ gtk_signal_connect (GTK_OBJECT (button_top), "toggled",
+ GTK_SIGNAL_FUNC (toggle_side), (gpointer) info);
+ gtk_signal_connect (GTK_OBJECT (button_bottom), "toggled",
+ GTK_SIGNAL_FUNC (toggle_side), (gpointer) info);
+ gtk_signal_connect (GTK_OBJECT (button_left), "toggled",
+ GTK_SIGNAL_FUNC (toggle_side), (gpointer) info);
+ gtk_signal_connect (GTK_OBJECT (button_right), "toggled",
+ GTK_SIGNAL_FUNC (toggle_side), (gpointer) info);
+
+ anchor_frame = gtk_frame_new("Anchor");
+ gtk_packer_add(GTK_PACKER(window_pack),
+ anchor_frame,
+ GTK_SIDE_LEFT,
+ GTK_ANCHOR_W,
+ GTK_FILL_Y,
+ 0, 10, 10, 0, 0);
+
+ anchor_pack = gtk_packer_new();
+ gtk_container_add(GTK_CONTAINER(anchor_frame), anchor_pack);
+
+ anchor_table = gtk_table_new(3,3,TRUE);
+ gtk_packer_add(GTK_PACKER(anchor_pack),
+ anchor_table,
+ GTK_SIDE_TOP,
+ GTK_ANCHOR_CENTER,
+ GTK_FILL_Y | GTK_FILL_X | GTK_PACK_EXPAND,
+ 0, 10, 5, 0, 0);
+
+ button_n = gtk_toggle_button_new_with_label("N");
+ button_s = gtk_toggle_button_new_with_label("S");
+ button_w = gtk_toggle_button_new_with_label("W");
+ button_e = gtk_toggle_button_new_with_label("E");
+ button_ne = gtk_toggle_button_new_with_label("NE");
+ button_nw = gtk_toggle_button_new_with_label("NW");
+ button_se = gtk_toggle_button_new_with_label("SE");
+ button_sw = gtk_toggle_button_new_with_label("SW");
+ button_center = gtk_toggle_button_new_with_label("");
+
+ gtk_object_set_data(GTK_OBJECT(button_n), "anchor", (gpointer) GTK_ANCHOR_N);
+ gtk_object_set_data(GTK_OBJECT(button_nw), "anchor", (gpointer) GTK_ANCHOR_NW);
+ gtk_object_set_data(GTK_OBJECT(button_ne), "anchor", (gpointer) GTK_ANCHOR_NE);
+ gtk_object_set_data(GTK_OBJECT(button_s), "anchor", (gpointer) GTK_ANCHOR_S);
+ gtk_object_set_data(GTK_OBJECT(button_sw), "anchor", (gpointer) GTK_ANCHOR_SW);
+ gtk_object_set_data(GTK_OBJECT(button_se), "anchor", (gpointer) GTK_ANCHOR_SE);
+ gtk_object_set_data(GTK_OBJECT(button_w), "anchor", (gpointer) GTK_ANCHOR_W);
+ gtk_object_set_data(GTK_OBJECT(button_e), "anchor", (gpointer) GTK_ANCHOR_E);
+ gtk_object_set_data(GTK_OBJECT(button_center), "anchor", (gpointer) GTK_ANCHOR_CENTER);
+
+ gtk_signal_connect (GTK_OBJECT (button_n), "toggled",
+ GTK_SIGNAL_FUNC (toggle_anchor), (gpointer) info);
+ gtk_signal_connect (GTK_OBJECT (button_nw), "toggled",
+ GTK_SIGNAL_FUNC (toggle_anchor), (gpointer) info);
+ gtk_signal_connect (GTK_OBJECT (button_ne), "toggled",
+ GTK_SIGNAL_FUNC (toggle_anchor), (gpointer) info);
+ gtk_signal_connect (GTK_OBJECT (button_s), "toggled",
+ GTK_SIGNAL_FUNC (toggle_anchor), (gpointer) info);
+ gtk_signal_connect (GTK_OBJECT (button_sw), "toggled",
+ GTK_SIGNAL_FUNC (toggle_anchor), (gpointer) info);
+ gtk_signal_connect (GTK_OBJECT (button_se), "toggled",
+ GTK_SIGNAL_FUNC (toggle_anchor), (gpointer) info);
+ gtk_signal_connect (GTK_OBJECT (button_w), "toggled",
+ GTK_SIGNAL_FUNC (toggle_anchor), (gpointer) info);
+ gtk_signal_connect (GTK_OBJECT (button_e), "toggled",
+ GTK_SIGNAL_FUNC (toggle_anchor), (gpointer) info);
+ gtk_signal_connect (GTK_OBJECT (button_center), "toggled",
+ GTK_SIGNAL_FUNC (toggle_anchor), (gpointer) info);
+
+ gtk_table_attach_defaults(GTK_TABLE(anchor_table),
+ button_nw,
+ 0, 1, 0, 1);
+ gtk_table_attach_defaults(GTK_TABLE(anchor_table),
+ button_n,
+ 1, 2, 0, 1);
+ gtk_table_attach_defaults(GTK_TABLE(anchor_table),
+ button_ne,
+ 2, 3, 0, 1);
+ gtk_table_attach_defaults(GTK_TABLE(anchor_table),
+ button_w,
+ 0, 1, 1, 2);
+ gtk_table_attach_defaults(GTK_TABLE(anchor_table),
+ button_center,
+ 1, 2, 1, 2);
+ gtk_table_attach_defaults(GTK_TABLE(anchor_table),
+ button_e,
+ 2, 3, 1, 2);
+ gtk_table_attach_defaults(GTK_TABLE(anchor_table),
+ button_sw,
+ 0, 1, 2, 3);
+ gtk_table_attach_defaults(GTK_TABLE(anchor_table),
+ button_s,
+ 1, 2, 2, 3);
+ gtk_table_attach_defaults(GTK_TABLE(anchor_table),
+ button_se,
+ 2, 3, 2, 3);
+
+ options_frame = gtk_frame_new("Options");
+ gtk_packer_add(GTK_PACKER(window_pack),
+ options_frame,
+ GTK_SIDE_LEFT,
+ GTK_ANCHOR_W,
+ GTK_FILL_Y,
+ 0, 10, 10, 0, 0);
+
+ options_pack = gtk_packer_new();
+ gtk_container_add(GTK_CONTAINER(options_frame), options_pack);
+
+ button_fillx = gtk_toggle_button_new_with_label("Fill X");
+ button_filly = gtk_toggle_button_new_with_label("Fill Y");
+ button_expand = gtk_toggle_button_new_with_label("Expand");
+
+ gtk_packer_add(GTK_PACKER(options_pack),
+ button_fillx,
+ GTK_SIDE_TOP,
+ GTK_ANCHOR_N,
+ GTK_FILL_X | GTK_PACK_EXPAND,
+ 0, 10, 5, 0, 0);
+ gtk_packer_add(GTK_PACKER(options_pack),
+ button_filly,
+ GTK_SIDE_TOP,
+ GTK_ANCHOR_CENTER,
+ GTK_FILL_X | GTK_PACK_EXPAND,
+ 0, 10, 5, 0, 0);
+ gtk_packer_add(GTK_PACKER(options_pack),
+ button_expand,
+ GTK_SIDE_TOP,
+ GTK_ANCHOR_S,
+ GTK_FILL_X | GTK_PACK_EXPAND,
+ 0, 10, 5, 0, 0);
+
+ gtk_object_set_data(GTK_OBJECT(button_fillx), "option", (gpointer) GTK_FILL_X);
+ gtk_object_set_data(GTK_OBJECT(button_filly), "option", (gpointer) GTK_FILL_Y);
+ gtk_object_set_data(GTK_OBJECT(button_expand), "option", (gpointer) GTK_PACK_EXPAND);
+
+ gtk_signal_connect (GTK_OBJECT (button_fillx), "toggled",
+ GTK_SIGNAL_FUNC (toggle_options), (gpointer) info);
+ gtk_signal_connect (GTK_OBJECT (button_filly), "toggled",
+ GTK_SIGNAL_FUNC (toggle_options), (gpointer) info);
+ gtk_signal_connect (GTK_OBJECT (button_expand), "toggled",
+ GTK_SIGNAL_FUNC (toggle_options), (gpointer) info);
+
+
+
+ info->widgets = NULL;
+ info->packer = packer;
+ info->button_top = button_top;
+ info->button_bottom = button_bottom;
+ info->button_left = button_left;
+ info->button_right = button_right;
+ info->button_n = button_n;
+ info->button_nw = button_nw;
+ info->button_ne = button_ne;
+ info->button_e = button_e;
+ info->button_w = button_w;
+ info->button_center = button_center;
+ info->button_s = button_s;
+ info->button_sw = button_sw;
+ info->button_se = button_se;
+ info->button_fillx = button_fillx;
+ info->button_filly = button_filly;
+ info->button_expand = button_expand;
+
+ add_widget(NULL, (gpointer) info);
+
+ gtk_widget_show_all(window);
+
+ gtk_main();
+
+ return 0;
+}
+
+void
+toggle_options (GtkWidget *widget, gpointer data)
+{
+ Info *info;
+ gint option;
+ GList *list;
+ GtkPackerChild *pchild;
+ gint fillx, filly, expand;
+
+ info = (Info*) data;
+
+ option = (gint) gtk_object_get_data(GTK_OBJECT(widget), "option");
+
+ pchild = info->pchild;
+ if (pchild == NULL) {
+ abort();
+ };
+
+ fillx = filly = expand = 0;
+
+ if (GTK_TOGGLE_BUTTON(info->button_fillx)->active)
+ fillx = GTK_FILL_X;
+ if (GTK_TOGGLE_BUTTON(info->button_filly)->active)
+ filly = GTK_FILL_Y;
+ if (GTK_TOGGLE_BUTTON(info->button_expand)->active)
+ expand = GTK_PACK_EXPAND;
+
+ gtk_packer_configure(GTK_PACKER(info->packer),
+ info->current,
+ pchild->side,
+ pchild->anchor,
+ fillx | filly | expand,
+ pchild->border_width,
+ pchild->padX,
+ pchild->padY,
+ pchild->iPadX,
+ pchild->iPadY);
+}
+
+void
+toggle_anchor (GtkWidget *widget, gpointer data)
+{
+ Info *info;
+ gint anchor;
+ GList *list;
+ GtkPackerChild *pchild;
+
+ info = (Info*) data;
+
+ if (GTK_TOGGLE_BUTTON(widget)->active) {
+ anchor = (gint) gtk_object_get_data(GTK_OBJECT(widget), "anchor");
+
+ pchild = info->pchild;
+ if (pchild == NULL) {
+ abort();
+ };
+
+ gtk_packer_configure(GTK_PACKER(info->packer),
+ info->current,
+ pchild->side,
+ anchor,
+ pchild->options,
+ pchild->border_width,
+ pchild->padX,
+ pchild->padY,
+ pchild->iPadX,
+ pchild->iPadY);
+
+ if (info->button_n != widget) {
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_n),0);
+ gtk_widget_set_sensitive(info->button_n, 1);
+ }
+ if (info->button_nw != widget) {
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_nw),0);
+ gtk_widget_set_sensitive(info->button_nw, 1);
+ }
+ if (info->button_ne != widget) {
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_ne),0);
+ gtk_widget_set_sensitive(info->button_ne, 1);
+ }
+ if (info->button_s != widget) {
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_s),0);
+ gtk_widget_set_sensitive(info->button_s, 1);
+ }
+ if (info->button_sw != widget) {
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_sw),0);
+ gtk_widget_set_sensitive(info->button_sw, 1);
+ }
+ if (info->button_se != widget) {
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_se),0);
+ gtk_widget_set_sensitive(info->button_se, 1);
+ }
+ if (info->button_e != widget) {
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_e),0);
+ gtk_widget_set_sensitive(info->button_e, 1);
+ }
+ if (info->button_w != widget) {
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_w),0);
+ gtk_widget_set_sensitive(info->button_w, 1);
+ }
+ if (info->button_center != widget) {
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_center),0);
+ gtk_widget_set_sensitive(info->button_center, 1);
+ }
+
+ gtk_widget_set_sensitive(widget, 0);
+ }
+}
+
+void
+toggle_side (GtkWidget *widget, gpointer data)
+{
+ Info *info;
+ gint side;
+ GList *list;
+ GtkPackerChild *pchild;
+
+ info = (Info*) data;
+
+ if (GTK_TOGGLE_BUTTON(widget)->active) {
+
+ side = (gint) gtk_object_get_data(GTK_OBJECT(widget), "side");
+
+ pchild = info->pchild;
+ if (pchild == NULL) {
+ abort();
+ };
+ gtk_packer_configure(GTK_PACKER(info->packer),
+ info->current,
+ side,
+ pchild->anchor,
+ pchild->options,
+ pchild->border_width,
+ pchild->padX,
+ pchild->padY,
+ pchild->iPadX,
+ pchild->iPadY);
+
+ if (info->button_top != widget) {
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_top),0);
+ gtk_widget_set_sensitive(info->button_top, 1);
+ }
+
+ if (info->button_bottom != widget) {
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_bottom),0);
+ gtk_widget_set_sensitive(info->button_bottom, 1);
+ }
+
+ if (info->button_left != widget) {
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_left),0);
+ gtk_widget_set_sensitive(info->button_left, 1);
+ }
+
+ if (info->button_right != widget) {
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_right),0);
+ gtk_widget_set_sensitive(info->button_right, 1);
+ }
+
+ gtk_widget_set_sensitive(widget, 0);
+ }
+}
+
+void
+set_widget (GtkWidget *w, gpointer data) {
+ Info *info;
+ GList *list;
+ GtkWidget *widget;
+ GtkPackerChild *pchild;
+ gint options;
+
+ if (GTK_TOGGLE_BUTTON(w)->active) {
+
+ info = (Info*) data;
+ info->current = w;
+
+ pchild = NULL;
+ list = g_list_first(GTK_PACKER(info->packer)->children);
+ while (list) {
+ if (((GtkPackerChild*)(list->data))->widget == info->current) {
+ pchild = (GtkPackerChild*)(list->data);
+ break;
+ }
+ list = g_list_next(list);
+ }
+ if (pchild == NULL) {
+ abort();
+ };
+
+ info->pchild = pchild;
+
+ switch (pchild->side) {
+ case GTK_SIDE_TOP:
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_top),1);
+ break;
+ case GTK_SIDE_BOTTOM:
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_bottom),1);
+ break;
+ case GTK_SIDE_LEFT:
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_left),1);
+ break;
+ case GTK_SIDE_RIGHT:
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_right),1);
+ break;
+ default:
+ printf("foo... side == %d\n", pchild->side);
+ };
+
+ switch (pchild->anchor) {
+ case GTK_ANCHOR_N:
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_n),1);
+ break;
+ case GTK_ANCHOR_NW:
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_nw),1);
+ break;
+ case GTK_ANCHOR_NE:
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_ne),1);
+ break;
+ case GTK_ANCHOR_S:
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_s),1);
+ break;
+ case GTK_ANCHOR_SW:
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_sw),1);
+ break;
+ case GTK_ANCHOR_SE:
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_se),1);
+ break;
+ case GTK_ANCHOR_W:
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_w),1);
+ break;
+ case GTK_ANCHOR_E:
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_e),1);
+ break;
+ case GTK_ANCHOR_CENTER:
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_center),1);
+ break;
+ default:
+ };
+
+ options = pchild->options;
+ if (options & GTK_PACK_EXPAND) {
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_expand),1);
+ } else {
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_expand),0);
+ }
+ if (options & GTK_FILL_X) {
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_fillx),1);
+ } else {
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_fillx),0);
+ }
+ if (options & GTK_FILL_Y) {
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_filly),1);
+ } else {
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(info->button_filly),0);
+ }
+
+
+ gtk_widget_set_sensitive(w, 0);
+
+ list = g_list_first(info->widgets);
+ while (list) {
+ widget = (GtkWidget*)(list->data);
+ if (widget != info->current) {
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(widget),0);
+ gtk_widget_set_sensitive(widget, 1);
+ }
+
+ list = g_list_next(list);
+ }
+ }
+
+}
+
+void
+add_widget (GtkWidget *w, gpointer data)
+{
+ static gint n = 0;
+ GtkPacker *packer;
+ GtkWidget *widget;
+ gchar str[255];
+ Info *info;
+
+ info = (Info*) data;
+ packer = GTK_PACKER(info->packer);
+
+ sprintf(str, "%d", n);
+ widget = gtk_toggle_button_new_with_label(str);
+ gtk_widget_set_usize(widget, 50, 50);
+ gtk_container_add(GTK_CONTAINER(packer), widget);
+ gtk_widget_show(widget);
+
+ gtk_signal_connect (GTK_OBJECT (widget), "toggled",
+ GTK_SIGNAL_FUNC (set_widget), (gpointer) info);
+
+ info->widgets = g_list_append(info->widgets, (gpointer) widget);
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(widget),1);
+ set_widget(widget, info);
+
+ n++;
+}
+