Blame docs/tutorial/html/x743.html

Packit Service fb6fa5
Packit Service fb6fa5
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>Example
Packit Service fb6fa5
>
Packit Service fb6fa5
NAME="GENERATOR"
Packit Service fb6fa5
CONTENT="Modular DocBook HTML Stylesheet Version 1.79">
Packit Service fb6fa5
REL="HOME"
Packit Service fb6fa5
TITLE="GTK+ 2.0 Tutorial"
Packit Service fb6fa5
HREF="book1.html">
Packit Service fb6fa5
REL="UP"
Packit Service fb6fa5
TITLE="Range Widgets"
Packit Service fb6fa5
HREF="c633.html">
Packit Service fb6fa5
REL="PREVIOUS"
Packit Service fb6fa5
TITLE="Key and Mouse bindings"
Packit Service fb6fa5
HREF="x725.html">
Packit Service fb6fa5
REL="NEXT"
Packit Service fb6fa5
TITLE="Miscellaneous Widgets"
Packit Service fb6fa5
HREF="c753.html">
Packit Service fb6fa5
>
Packit Service fb6fa5
CLASS="SECT1"
Packit Service fb6fa5
BGCOLOR="#FFFFFF"
Packit Service fb6fa5
TEXT="#000000"
Packit Service fb6fa5
LINK="#0000FF"
Packit Service fb6fa5
VLINK="#840084"
Packit Service fb6fa5
ALINK="#0000FF"
Packit Service fb6fa5
>
Packit Service fb6fa5
CLASS="NAVHEADER"
Packit Service fb6fa5
>
Packit Service fb6fa5
SUMMARY="Header navigation table"
Packit Service fb6fa5
WIDTH="100%"
Packit Service fb6fa5
BORDER="0"
Packit Service fb6fa5
CELLPADDING="0"
Packit Service fb6fa5
CELLSPACING="0"
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
COLSPAN="3"
Packit Service fb6fa5
ALIGN="center"
Packit Service fb6fa5
>GTK+ 2.0 Tutorial
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
WIDTH="10%"
Packit Service fb6fa5
ALIGN="left"
Packit Service fb6fa5
VALIGN="bottom"
Packit Service fb6fa5
>
Packit Service fb6fa5
HREF="x725.html"
Packit Service fb6fa5
ACCESSKEY="P"
Packit Service fb6fa5
><<< Previous
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
WIDTH="80%"
Packit Service fb6fa5
ALIGN="center"
Packit Service fb6fa5
VALIGN="bottom"
Packit Service fb6fa5
>Range Widgets
Packit Service fb6fa5
>
Packit Service fb6fa5
WIDTH="10%"
Packit Service fb6fa5
ALIGN="right"
Packit Service fb6fa5
VALIGN="bottom"
Packit Service fb6fa5
>
Packit Service fb6fa5
HREF="c753.html"
Packit Service fb6fa5
ACCESSKEY="N"
Packit Service fb6fa5
>Next >>>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
ALIGN="LEFT"
Packit Service fb6fa5
WIDTH="100%">
Packit Service fb6fa5
>
Packit Service fb6fa5
CLASS="SECT1"
Packit Service fb6fa5
>
Packit Service fb6fa5
CLASS="SECT1"
Packit Service fb6fa5
>
Packit Service fb6fa5
NAME="SEC-RANGEWIDGETSEXAMPLE"
Packit Service fb6fa5
>Example
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>This example is a somewhat modified version of the "range controls"
Packit Service fb6fa5
test from 
Packit Service fb6fa5
CLASS="FILENAME"
Packit Service fb6fa5
>testgtk.c
Packit Service fb6fa5
>. It basically puts up a window with three
Packit Service fb6fa5
range widgets all connected to the same adjustment, and a couple of
Packit Service fb6fa5
controls for adjusting some of the parameters mentioned above and in
Packit Service fb6fa5
the section on adjustments, so you can see how they affect the way
Packit Service fb6fa5
these widgets work for the user.
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
CLASS="INLINEMEDIAOBJECT"
Packit Service fb6fa5
>
Packit Service fb6fa5
SRC="images/rangewidgets.png">
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
BORDER="0"
Packit Service fb6fa5
BGCOLOR="#E0E0E0"
Packit Service fb6fa5
WIDTH="100%"
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
CLASS="PROGRAMLISTING"
Packit Service fb6fa5
>
#include <gtk/gtk.h>
Packit Service fb6fa5
Packit Service fb6fa5
GtkWidget *hscale, *vscale;
Packit Service fb6fa5
Packit Service fb6fa5
static void cb_pos_menu_select( GtkWidget       *item,
Packit Service fb6fa5
                                GtkPositionType  pos )
Packit Service fb6fa5
{
Packit Service fb6fa5
    /* Set the value position on both scale widgets */
Packit Service fb6fa5
    gtk_scale_set_value_pos (GTK_SCALE (hscale), pos);
Packit Service fb6fa5
    gtk_scale_set_value_pos (GTK_SCALE (vscale), pos);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void cb_update_menu_select( GtkWidget     *item,
Packit Service fb6fa5
                                   GtkUpdateType  policy )
Packit Service fb6fa5
{
Packit Service fb6fa5
    /* Set the update policy for both scale widgets */
Packit Service fb6fa5
    gtk_range_set_update_policy (GTK_RANGE (hscale), policy);
Packit Service fb6fa5
    gtk_range_set_update_policy (GTK_RANGE (vscale), policy);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void cb_digits_scale( GtkAdjustment *adj )
Packit Service fb6fa5
{
Packit Service fb6fa5
    /* Set the number of decimal places to which adj->value is rounded */
Packit Service fb6fa5
    gtk_scale_set_digits (GTK_SCALE (hscale), (gint) adj->value);
Packit Service fb6fa5
    gtk_scale_set_digits (GTK_SCALE (vscale), (gint) adj->value);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void cb_page_size( GtkAdjustment *get,
Packit Service fb6fa5
                          GtkAdjustment *set )
Packit Service fb6fa5
{
Packit Service fb6fa5
    /* Set the page size and page increment size of the sample
Packit Service fb6fa5
     * adjustment to the value specified by the "Page Size" scale */
Packit Service fb6fa5
    set->page_size = get->value;
Packit Service fb6fa5
    set->page_increment = get->value;
Packit Service fb6fa5
Packit Service fb6fa5
    /* This sets the adjustment and makes it emit the "changed" signal to 
Packit Service fb6fa5
       reconfigure all the widgets that are attached to this signal.  */
Packit Service fb6fa5
    gtk_adjustment_set_value (set, CLAMP (set->value,
Packit Service fb6fa5
					  set->lower,
Packit Service fb6fa5
					  (set->upper - set->page_size)));
Packit Service fb6fa5
    g_signal_emit_by_name(set, "changed");
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void cb_draw_value( GtkToggleButton *button )
Packit Service fb6fa5
{
Packit Service fb6fa5
    /* Turn the value display on the scale widgets off or on depending
Packit Service fb6fa5
     *  on the state of the checkbutton */
Packit Service fb6fa5
    gtk_scale_set_draw_value (GTK_SCALE (hscale), button->active);
Packit Service fb6fa5
    gtk_scale_set_draw_value (GTK_SCALE (vscale), button->active);  
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
/* Convenience functions */
Packit Service fb6fa5
Packit Service fb6fa5
static GtkWidget *make_menu_item ( gchar     *name,
Packit Service fb6fa5
                                   GCallback  callback,
Packit Service fb6fa5
                                   gpointer   data )
Packit Service fb6fa5
{
Packit Service fb6fa5
    GtkWidget *item;
Packit Service fb6fa5
  
Packit Service fb6fa5
    item = gtk_menu_item_new_with_label (name);
Packit Service fb6fa5
    g_signal_connect (item, "activate",
Packit Service fb6fa5
	              callback, (gpointer) data);
Packit Service fb6fa5
    gtk_widget_show (item);
Packit Service fb6fa5
Packit Service fb6fa5
    return item;
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
static void scale_set_default_values( GtkScale *scale )
Packit Service fb6fa5
{
Packit Service fb6fa5
    gtk_range_set_update_policy (GTK_RANGE (scale),
Packit Service fb6fa5
                                 GTK_UPDATE_CONTINUOUS);
Packit Service fb6fa5
    gtk_scale_set_digits (scale, 1);
Packit Service fb6fa5
    gtk_scale_set_value_pos (scale, GTK_POS_TOP);
Packit Service fb6fa5
    gtk_scale_set_draw_value (scale, TRUE);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
/* makes the sample window */
Packit Service fb6fa5
Packit Service fb6fa5
static void create_range_controls( void )
Packit Service fb6fa5
{
Packit Service fb6fa5
    GtkWidget *window;
Packit Service fb6fa5
    GtkWidget *box1, *box2, *box3;
Packit Service fb6fa5
    GtkWidget *button;
Packit Service fb6fa5
    GtkWidget *scrollbar;
Packit Service fb6fa5
    GtkWidget *separator;
Packit Service fb6fa5
    GtkWidget *opt, *menu, *item;
Packit Service fb6fa5
    GtkWidget *label;
Packit Service fb6fa5
    GtkWidget *scale;
Packit Service fb6fa5
    GtkObject *adj1, *adj2;
Packit Service fb6fa5
Packit Service fb6fa5
    /* Standard window-creating stuff */
Packit Service fb6fa5
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
Packit Service fb6fa5
    g_signal_connect (window, "destroy",
Packit Service fb6fa5
                      G_CALLBACK (gtk_main_quit),
Packit Service fb6fa5
                      NULL);
Packit Service fb6fa5
    gtk_window_set_title (GTK_WINDOW (window), "range controls");
Packit Service fb6fa5
Packit Service fb6fa5
    box1 = gtk_vbox_new (FALSE, 0);
Packit Service fb6fa5
    gtk_container_add (GTK_CONTAINER (window), box1);
Packit Service fb6fa5
    gtk_widget_show (box1);
Packit Service fb6fa5
Packit Service fb6fa5
    box2 = gtk_hbox_new (FALSE, 10);
Packit Service fb6fa5
    gtk_container_set_border_width (GTK_CONTAINER (box2), 10);
Packit Service fb6fa5
    gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
Packit Service fb6fa5
    gtk_widget_show (box2);
Packit Service fb6fa5
Packit Service fb6fa5
    /* value, lower, upper, step_increment, page_increment, page_size */
Packit Service fb6fa5
    /* Note that the page_size value only makes a difference for
Packit Service fb6fa5
     * scrollbar widgets, and the highest value you'll get is actually
Packit Service fb6fa5
     * (upper - page_size). */
Packit Service fb6fa5
    adj1 = gtk_adjustment_new (0.0, 0.0, 101.0, 0.1, 1.0, 1.0);
Packit Service fb6fa5
  
Packit Service fb6fa5
    vscale = gtk_vscale_new (GTK_ADJUSTMENT (adj1));
Packit Service fb6fa5
    scale_set_default_values (GTK_SCALE (vscale));
Packit Service fb6fa5
    gtk_box_pack_start (GTK_BOX (box2), vscale, TRUE, TRUE, 0);
Packit Service fb6fa5
    gtk_widget_show (vscale);
Packit Service fb6fa5
Packit Service fb6fa5
    box3 = gtk_vbox_new (FALSE, 10);
Packit Service fb6fa5
    gtk_box_pack_start (GTK_BOX (box2), box3, TRUE, TRUE, 0);
Packit Service fb6fa5
    gtk_widget_show (box3);
Packit Service fb6fa5
Packit Service fb6fa5
    /* Reuse the same adjustment */
Packit Service fb6fa5
    hscale = gtk_hscale_new (GTK_ADJUSTMENT (adj1));
Packit Service fb6fa5
    gtk_widget_set_size_request (GTK_WIDGET (hscale), 200, -1);
Packit Service fb6fa5
    scale_set_default_values (GTK_SCALE (hscale));
Packit Service fb6fa5
    gtk_box_pack_start (GTK_BOX (box3), hscale, TRUE, TRUE, 0);
Packit Service fb6fa5
    gtk_widget_show (hscale);
Packit Service fb6fa5
Packit Service fb6fa5
    /* Reuse the same adjustment again */
Packit Service fb6fa5
    scrollbar = gtk_hscrollbar_new (GTK_ADJUSTMENT (adj1));
Packit Service fb6fa5
    /* Notice how this causes the scales to always be updated
Packit Service fb6fa5
     * continuously when the scrollbar is moved */
Packit Service fb6fa5
    gtk_range_set_update_policy (GTK_RANGE (scrollbar), 
Packit Service fb6fa5
                                 GTK_UPDATE_CONTINUOUS);
Packit Service fb6fa5
    gtk_box_pack_start (GTK_BOX (box3), scrollbar, TRUE, TRUE, 0);
Packit Service fb6fa5
    gtk_widget_show (scrollbar);
Packit Service fb6fa5
Packit Service fb6fa5
    box2 = gtk_hbox_new (FALSE, 10);
Packit Service fb6fa5
    gtk_container_set_border_width (GTK_CONTAINER (box2), 10);
Packit Service fb6fa5
    gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
Packit Service fb6fa5
    gtk_widget_show (box2);
Packit Service fb6fa5
Packit Service fb6fa5
    /* A checkbutton to control whether the value is displayed or not */
Packit Service fb6fa5
    button = gtk_check_button_new_with_label("Display value on scale widgets");
Packit Service fb6fa5
    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
Packit Service fb6fa5
    g_signal_connect (button, "toggled",
Packit Service fb6fa5
                      G_CALLBACK (cb_draw_value), NULL);
Packit Service fb6fa5
    gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
Packit Service fb6fa5
    gtk_widget_show (button);
Packit Service fb6fa5
  
Packit Service fb6fa5
    box2 = gtk_hbox_new (FALSE, 10);
Packit Service fb6fa5
    gtk_container_set_border_width (GTK_CONTAINER (box2), 10);
Packit Service fb6fa5
Packit Service fb6fa5
    /* An option menu to change the position of the value */
Packit Service fb6fa5
    label = gtk_label_new ("Scale Value Position:");
Packit Service fb6fa5
    gtk_box_pack_start (GTK_BOX (box2), label, FALSE, FALSE, 0);
Packit Service fb6fa5
    gtk_widget_show (label);
Packit Service fb6fa5
  
Packit Service fb6fa5
    opt = gtk_option_menu_new ();
Packit Service fb6fa5
    menu = gtk_menu_new ();
Packit Service fb6fa5
Packit Service fb6fa5
    item = make_menu_item ("Top",
Packit Service fb6fa5
                           G_CALLBACK (cb_pos_menu_select),
Packit Service fb6fa5
                           GINT_TO_POINTER (GTK_POS_TOP));
Packit Service fb6fa5
    gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
Packit Service fb6fa5
  
Packit Service fb6fa5
    item = make_menu_item ("Bottom", G_CALLBACK (cb_pos_menu_select), 
Packit Service fb6fa5
                           GINT_TO_POINTER (GTK_POS_BOTTOM));
Packit Service fb6fa5
    gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
Packit Service fb6fa5
  
Packit Service fb6fa5
    item = make_menu_item ("Left", G_CALLBACK (cb_pos_menu_select),
Packit Service fb6fa5
                           GINT_TO_POINTER (GTK_POS_LEFT));
Packit Service fb6fa5
    gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
Packit Service fb6fa5
  
Packit Service fb6fa5
    item = make_menu_item ("Right", G_CALLBACK (cb_pos_menu_select),
Packit Service fb6fa5
                           GINT_TO_POINTER (GTK_POS_RIGHT));
Packit Service fb6fa5
    gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
Packit Service fb6fa5
  
Packit Service fb6fa5
    gtk_option_menu_set_menu (GTK_OPTION_MENU (opt), menu);
Packit Service fb6fa5
    gtk_box_pack_start (GTK_BOX (box2), opt, TRUE, TRUE, 0);
Packit Service fb6fa5
    gtk_widget_show (opt);
Packit Service fb6fa5
Packit Service fb6fa5
    gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
Packit Service fb6fa5
    gtk_widget_show (box2);
Packit Service fb6fa5
Packit Service fb6fa5
    box2 = gtk_hbox_new (FALSE, 10);
Packit Service fb6fa5
    gtk_container_set_border_width (GTK_CONTAINER (box2), 10);
Packit Service fb6fa5
Packit Service fb6fa5
    /* Yet another option menu, this time for the update policy of the
Packit Service fb6fa5
     * scale widgets */
Packit Service fb6fa5
    label = gtk_label_new ("Scale Update Policy:");
Packit Service fb6fa5
    gtk_box_pack_start (GTK_BOX (box2), label, FALSE, FALSE, 0);
Packit Service fb6fa5
    gtk_widget_show (label);
Packit Service fb6fa5
  
Packit Service fb6fa5
    opt = gtk_option_menu_new ();
Packit Service fb6fa5
    menu = gtk_menu_new ();
Packit Service fb6fa5
  
Packit Service fb6fa5
    item = make_menu_item ("Continuous",
Packit Service fb6fa5
                           G_CALLBACK (cb_update_menu_select),
Packit Service fb6fa5
                           GINT_TO_POINTER (GTK_UPDATE_CONTINUOUS));
Packit Service fb6fa5
    gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
Packit Service fb6fa5
  
Packit Service fb6fa5
    item = make_menu_item ("Discontinuous",
Packit Service fb6fa5
                           G_CALLBACK (cb_update_menu_select),
Packit Service fb6fa5
                           GINT_TO_POINTER (GTK_UPDATE_DISCONTINUOUS));
Packit Service fb6fa5
    gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
Packit Service fb6fa5
  
Packit Service fb6fa5
    item = make_menu_item ("Delayed",
Packit Service fb6fa5
                           G_CALLBACK (cb_update_menu_select),
Packit Service fb6fa5
                           GINT_TO_POINTER (GTK_UPDATE_DELAYED));
Packit Service fb6fa5
    gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
Packit Service fb6fa5
  
Packit Service fb6fa5
    gtk_option_menu_set_menu (GTK_OPTION_MENU (opt), menu);
Packit Service fb6fa5
    gtk_box_pack_start (GTK_BOX (box2), opt, TRUE, TRUE, 0);
Packit Service fb6fa5
    gtk_widget_show (opt);
Packit Service fb6fa5
  
Packit Service fb6fa5
    gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
Packit Service fb6fa5
    gtk_widget_show (box2);
Packit Service fb6fa5
Packit Service fb6fa5
    box2 = gtk_hbox_new (FALSE, 10);
Packit Service fb6fa5
    gtk_container_set_border_width (GTK_CONTAINER (box2), 10);
Packit Service fb6fa5
  
Packit Service fb6fa5
    /* An HScale widget for adjusting the number of digits on the
Packit Service fb6fa5
     * sample scales. */
Packit Service fb6fa5
    label = gtk_label_new ("Scale Digits:");
Packit Service fb6fa5
    gtk_box_pack_start (GTK_BOX (box2), label, FALSE, FALSE, 0);
Packit Service fb6fa5
    gtk_widget_show (label);
Packit Service fb6fa5
Packit Service fb6fa5
    adj2 = gtk_adjustment_new (1.0, 0.0, 5.0, 1.0, 1.0, 0.0);
Packit Service fb6fa5
    g_signal_connect (adj2, "value_changed",
Packit Service fb6fa5
                      G_CALLBACK (cb_digits_scale), NULL);
Packit Service fb6fa5
    scale = gtk_hscale_new (GTK_ADJUSTMENT (adj2));
Packit Service fb6fa5
    gtk_scale_set_digits (GTK_SCALE (scale), 0);
Packit Service fb6fa5
    gtk_box_pack_start (GTK_BOX (box2), scale, TRUE, TRUE, 0);
Packit Service fb6fa5
    gtk_widget_show (scale);
Packit Service fb6fa5
Packit Service fb6fa5
    gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
Packit Service fb6fa5
    gtk_widget_show (box2);
Packit Service fb6fa5
  
Packit Service fb6fa5
    box2 = gtk_hbox_new (FALSE, 10);
Packit Service fb6fa5
    gtk_container_set_border_width (GTK_CONTAINER (box2), 10);
Packit Service fb6fa5
  
Packit Service fb6fa5
    /* And, one last HScale widget for adjusting the page size of the
Packit Service fb6fa5
     * scrollbar. */
Packit Service fb6fa5
    label = gtk_label_new ("Scrollbar Page Size:");
Packit Service fb6fa5
    gtk_box_pack_start (GTK_BOX (box2), label, FALSE, FALSE, 0);
Packit Service fb6fa5
    gtk_widget_show (label);
Packit Service fb6fa5
Packit Service fb6fa5
    adj2 = gtk_adjustment_new (1.0, 1.0, 101.0, 1.0, 1.0, 0.0);
Packit Service fb6fa5
    g_signal_connect (adj2, "value_changed",
Packit Service fb6fa5
                      G_CALLBACK (cb_page_size), (gpointer) adj1);
Packit Service fb6fa5
    scale = gtk_hscale_new (GTK_ADJUSTMENT (adj2));
Packit Service fb6fa5
    gtk_scale_set_digits (GTK_SCALE (scale), 0);
Packit Service fb6fa5
    gtk_box_pack_start (GTK_BOX (box2), scale, TRUE, TRUE, 0);
Packit Service fb6fa5
    gtk_widget_show (scale);
Packit Service fb6fa5
Packit Service fb6fa5
    gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
Packit Service fb6fa5
    gtk_widget_show (box2);
Packit Service fb6fa5
Packit Service fb6fa5
    separator = gtk_hseparator_new ();
Packit Service fb6fa5
    gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
Packit Service fb6fa5
    gtk_widget_show (separator);
Packit Service fb6fa5
Packit Service fb6fa5
    box2 = gtk_vbox_new (FALSE, 10);
Packit Service fb6fa5
    gtk_container_set_border_width (GTK_CONTAINER (box2), 10);
Packit Service fb6fa5
    gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
Packit Service fb6fa5
    gtk_widget_show (box2);
Packit Service fb6fa5
Packit Service fb6fa5
    button = gtk_button_new_with_label ("Quit");
Packit Service fb6fa5
    g_signal_connect_swapped (button, "clicked",
Packit Service fb6fa5
                              G_CALLBACK (gtk_main_quit),
Packit Service fb6fa5
                              NULL);
Packit Service fb6fa5
    gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
Packit Service fb6fa5
    gtk_widget_set_can_default (button, TRUE);
Packit Service fb6fa5
    gtk_widget_grab_default (button);
Packit Service fb6fa5
    gtk_widget_show (button);
Packit Service fb6fa5
Packit Service fb6fa5
    gtk_widget_show (window);
Packit Service fb6fa5
}
Packit Service fb6fa5
Packit Service fb6fa5
int main( int   argc,
Packit Service fb6fa5
          char *argv[] )
Packit Service fb6fa5
{
Packit Service fb6fa5
    gtk_init (&argc, &argv);
Packit Service fb6fa5
Packit Service fb6fa5
    create_range_controls ();
Packit Service fb6fa5
Packit Service fb6fa5
    gtk_main ();
Packit Service fb6fa5
Packit Service fb6fa5
    return 0;
Packit Service fb6fa5
}
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>You will notice that the program does not call g_signal_connect()
Packit Service fb6fa5
for the "delete-event", but only for the "destroy" signal. This will
Packit Service fb6fa5
still perform the desired function, because an unhandled
Packit Service fb6fa5
"delete-event" will result in a "destroy" signal being given to the
Packit Service fb6fa5
window.
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
CLASS="NAVFOOTER"
Packit Service fb6fa5
>
Packit Service fb6fa5
ALIGN="LEFT"
Packit Service fb6fa5
WIDTH="100%">
Packit Service fb6fa5
SUMMARY="Footer navigation table"
Packit Service fb6fa5
WIDTH="100%"
Packit Service fb6fa5
BORDER="0"
Packit Service fb6fa5
CELLPADDING="0"
Packit Service fb6fa5
CELLSPACING="0"
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
WIDTH="33%"
Packit Service fb6fa5
ALIGN="left"
Packit Service fb6fa5
VALIGN="top"
Packit Service fb6fa5
>
Packit Service fb6fa5
HREF="x725.html"
Packit Service fb6fa5
ACCESSKEY="P"
Packit Service fb6fa5
><<< Previous
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
WIDTH="34%"
Packit Service fb6fa5
ALIGN="center"
Packit Service fb6fa5
VALIGN="top"
Packit Service fb6fa5
>
Packit Service fb6fa5
HREF="book1.html"
Packit Service fb6fa5
ACCESSKEY="H"
Packit Service fb6fa5
>Home
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
WIDTH="33%"
Packit Service fb6fa5
ALIGN="right"
Packit Service fb6fa5
VALIGN="top"
Packit Service fb6fa5
>
Packit Service fb6fa5
HREF="c753.html"
Packit Service fb6fa5
ACCESSKEY="N"
Packit Service fb6fa5
>Next >>>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
WIDTH="33%"
Packit Service fb6fa5
ALIGN="left"
Packit Service fb6fa5
VALIGN="top"
Packit Service fb6fa5
>Key and Mouse bindings
Packit Service fb6fa5
>
Packit Service fb6fa5
WIDTH="34%"
Packit Service fb6fa5
ALIGN="center"
Packit Service fb6fa5
VALIGN="top"
Packit Service fb6fa5
>
Packit Service fb6fa5
HREF="c633.html"
Packit Service fb6fa5
ACCESSKEY="U"
Packit Service fb6fa5
>Up
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
WIDTH="33%"
Packit Service fb6fa5
ALIGN="right"
Packit Service fb6fa5
VALIGN="top"
Packit Service fb6fa5
>Miscellaneous Widgets
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>
Packit Service fb6fa5
>