GTK+ Reference Manual
<<< Previous Page | Home | Up | Next Page >>>

# GtkAccelLabel

## Name

GtkAccelLabel -- a label which displays an accelerator key on the right of the text.

## Synopsis

    #include <gtk/gtk.h>

    struct      GtkAccelLabel;
    GtkWidget*  gtk_accel_label_new             (const gchar *string);
    void        gtk_accel_label_set_accel_widget
                                                (GtkAccelLabel *accel_label,
                                                 GtkWidget *accel_widget);
    guint       gtk_accel_label_get_accel_width (GtkAccelLabel *accel_label);
    gboolean    gtk_accel_label_refetch         (GtkAccelLabel *accel_label);

## Object Hierarchy

      GtkObject
       +----GtkWidget
             +----GtkMisc
                   +----GtkLabel
                         +----GtkAccelLabel

## Args

      "accel_widget"         GtkWidget            : Read / Write

## Description

The GtkAccelLabel widget is a subclass of GtkLabel that also displays an accelerator key on the right of the label text, e.g. 'Ctl+S'. It is commonly used in menus to show the keyboard short-cuts for commands.

The accelerator key to display is not set explicitly. Instead, the GtkAccelLabel displays the accelerators which have been added to a particular widget. This widget is set by calling gtk_accel_label_set_accel_widget().

For example, a GtkMenuItem widget may have an accelerator added to emit the "activate" signal when the 'Ctl+S' key combination is pressed. A GtkAccelLabel is created and added to the GtkMenuItem, and gtk_accel_label_set_accel_widget() is called with the GtkMenuItem as the second argument. The GtkAccelLabel will now display 'Ctl+S' after its label.

Note that creating a GtkMenuItem with gtk_menu_item_new_with_label() (or one of the similar functions for GtkCheckMenuItem and GtkRadioMenuItem) automatically adds a GtkAccelLabel to the GtkMenuItem and calls gtk_accel_label_set_accel_widget() to set it up for you.

A GtkAccelLabel will only display accelerators which have GTK_ACCEL_VISIBLE set (see GtkAccelFlags). A GtkAccelLabel can display multiple accelerators and even signal names, though it is almost always used to display just one accelerator key.

Example 1. Creating a simple menu item with an accelerator key.

      GtkWidget *save_item;
      GtkAccelGroup *accel_group;

      /* Create a GtkAccelGroup and add it to the window. */
      accel_group = gtk_accel_group_new();
      gtk_window_add_accel_group (GTK_WINDOW (window), accel_group);

      /* Create the menu item using the convenience function. */
      save_item = gtk_menu_item_new_with_label ("Save");
      gtk_widget_show (save_item);
      gtk_container_add (GTK_CONTAINER (menu), save_item);

      /* Now add the accelerator to the GtkMenuItem. Note that since we called
         gtk_menu_item_new_with_label() to create the GtkMenuItem the
         GtkAccelLabel is automatically set up to display the GtkMenuItem
         accelerators. We just need to make sure we use GTK_ACCEL_VISIBLE here. */
      gtk_widget_add_accelerator (save_item, "activate", accel_group,
                                  GDK_s, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);

## Details

### struct GtkAccelLabel

    struct GtkAccelLabel;

The GtkAccelLabel struct contains private data only, and should be accessed using the functions below.

### gtk_accel_label_new ()

    GtkWidget*  gtk_accel_label_new             (const gchar *string);

Creates a new GtkAccelLabel.

`string` : | the label string.
Returns : | a new GtkAccelLabel.

### gtk_accel_label_set_accel_widget ()

    void        gtk_accel_label_set_accel_widget
                                                (GtkAccelLabel *accel_label,
                                                 GtkWidget *accel_widget);

Sets the widget whose accelerators are to be shown.

`accel_label` : | a GtkAccelLabel.
`accel_widget` : | the widget whose accelerators are to be displayed.

### gtk_accel_label_get_accel_width ()

    guint       gtk_accel_label_get_accel_width (GtkAccelLabel *accel_label);

Returns the width needed to display the accelerator key(s). This is used by menus to align all of the GtkMenuItem widgets, and shouldn't be needed by applications.

`accel_label` : | a GtkAccelLabel.
Returns : |

### gtk_accel_label_refetch ()

    gboolean    gtk_accel_label_refetch         (GtkAccelLabel *accel_label);

Recreates the string representing the accelerator keys. This should not be needed since the string is automatically updated whenever accelerators are added or removed from the associated widget.

`accel_label` : | a GtkAccelLabel.
Returns : | always returns FALSE.

## Args

"`accel_widget`" (GtkWidget : Read / Write)

  The widget whose accelerators are to be shown by the GtkAccelLabel.

## See Also

Keyboard Accelerators

  installing and using keyboard short-cuts.

GtkItemFactory

  an easier way to create menus.

<<< Previous Page | Home | Up | Next Page >>>
GTK+ Widgets and Objects | GtkAdjustment