diff options
author | CDT 1998 Shawn T. Amundson <amundson@gtk.org> | 1998-06-12 00:49:11 +0000 |
---|---|---|
committer | Shawn Amundson <amundson@src.gnome.org> | 1998-06-12 00:49:11 +0000 |
commit | cab220ee8b2d539eeccb3967a11de2679b6b3bde (patch) | |
tree | 96ee9c3c2919cd008e194f1ca1b54af764e8fba9 /examples | |
parent | d0ff2dbc7905730b1ea8e885dfff4be494026592 (diff) | |
download | gtk+-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/Makefile | 8 | ||||
-rw-r--r-- | examples/packer/pack.c | 664 |
2 files changed, 672 insertions, 0 deletions
diff --git a/examples/packer/Makefile b/examples/packer/Makefile new file mode 100644 index 0000000000..27cbc80e74 --- /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 0000000000..2aafa1178a --- /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++; +} + |