| Copyright | Will Thompson Iñaki García Etxebarria and Jonas Platte |
|---|---|
| License | LGPL-2.1 |
| Maintainer | Iñaki García Etxebarria (garetxe@gmail.com) |
| Safe Haskell | None |
| Language | Haskell2010 |
GI.Gtk.Objects.AccelLabel
Contents
Description
The AccelLabel widget is a subclass of Label 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 typically not set explicitly (although it
can be, with accelLabelSetAccel). Instead, the AccelLabel displays
the accelerators which have been added to a particular widget. This widget is
set by calling accelLabelSetAccelWidget.
For example, a MenuItem widget may have an accelerator added to emit
the “activate” signal when the “Ctl+S” key combination is pressed.
A AccelLabel is created and added to the MenuItem, and
accelLabelSetAccelWidget is called with the MenuItem as the
second argument. The AccelLabel will now display “Ctl+S” after its label.
Note that creating a MenuItem with menuItemNewWithLabel (or
one of the similar functions for CheckMenuItem and RadioMenuItem)
automatically adds a AccelLabel to the MenuItem and calls
accelLabelSetAccelWidget to set it up for you.
A AccelLabel will only display accelerators which have AccelFlagsVisible
set (see AccelFlags).
A AccelLabel can display multiple accelerators and even signal names,
though it is almost always used to display just one accelerator key.
Creating a simple menu item with an accelerator key.
C code
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_KEY_s, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);CSS nodes
plain code
label ╰── accelerator
Like Label, GtkAccelLabel has a main CSS node with the name label.
It adds a subnode with name accelerator.
- newtype AccelLabel = AccelLabel (ManagedPtr AccelLabel)
- class GObject o => IsAccelLabel o
- toAccelLabel :: (MonadIO m, IsAccelLabel o) => o -> m AccelLabel
- noAccelLabel :: Maybe AccelLabel
- accelLabelGetAccel :: (HasCallStack, MonadIO m, IsAccelLabel a) => a -> m (Word32, [ModifierType])
- accelLabelGetAccelWidget :: (HasCallStack, MonadIO m, IsAccelLabel a) => a -> m (Maybe Widget)
- accelLabelGetAccelWidth :: (HasCallStack, MonadIO m, IsAccelLabel a) => a -> m Word32
- accelLabelNew :: (HasCallStack, MonadIO m) => Text -> m AccelLabel
- accelLabelRefetch :: (HasCallStack, MonadIO m, IsAccelLabel a) => a -> m Bool
- accelLabelSetAccel :: (HasCallStack, MonadIO m, IsAccelLabel a) => a -> Word32 -> [ModifierType] -> m ()
- accelLabelSetAccelClosure :: (HasCallStack, MonadIO m, IsAccelLabel a) => a -> Closure -> m ()
- accelLabelSetAccelWidget :: (HasCallStack, MonadIO m, IsAccelLabel a, IsWidget b) => a -> b -> m ()
- constructAccelLabelAccelClosure :: IsAccelLabel o => Closure -> IO (GValueConstruct o)
- getAccelLabelAccelClosure :: (MonadIO m, IsAccelLabel o) => o -> m (Maybe Closure)
- setAccelLabelAccelClosure :: (MonadIO m, IsAccelLabel o) => o -> Closure -> m ()
- constructAccelLabelAccelWidget :: (IsAccelLabel o, IsWidget a) => a -> IO (GValueConstruct o)
- getAccelLabelAccelWidget :: (MonadIO m, IsAccelLabel o) => o -> m (Maybe Widget)
- setAccelLabelAccelWidget :: (MonadIO m, IsAccelLabel o, IsWidget a) => o -> a -> m ()
Exported types
newtype AccelLabel Source #
Constructors
| AccelLabel (ManagedPtr AccelLabel) |
class GObject o => IsAccelLabel o Source #
Instances
toAccelLabel :: (MonadIO m, IsAccelLabel o) => o -> m AccelLabel Source #
Methods
getAccel
Arguments
| :: (HasCallStack, MonadIO m, IsAccelLabel a) | |
| => a |
|
| -> m (Word32, [ModifierType]) |
Gets the keyval and modifier mask set with
accelLabelSetAccel.
Since: 3.12
getAccelWidget
accelLabelGetAccelWidget Source #
Arguments
| :: (HasCallStack, MonadIO m, IsAccelLabel a) | |
| => a |
|
| -> m (Maybe Widget) | Returns: the object monitored by the accelerator label, or |
Fetches the widget monitored by this accelerator label. See
accelLabelSetAccelWidget.
getAccelWidth
accelLabelGetAccelWidth Source #
Arguments
| :: (HasCallStack, MonadIO m, IsAccelLabel a) | |
| => a |
|
| -> m Word32 | Returns: the width needed to display the accelerator key(s). |
Returns the width needed to display the accelerator key(s).
This is used by menus to align all of the MenuItem widgets, and shouldn't
be needed by applications.
new
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Text |
|
| -> m AccelLabel | Returns: a new |
Creates a new AccelLabel.
refetch
Arguments
| :: (HasCallStack, MonadIO m, IsAccelLabel a) | |
| => a |
|
| -> m Bool | Returns: always returns |
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.
setAccel
Arguments
| :: (HasCallStack, MonadIO m, IsAccelLabel a) | |
| => a |
|
| -> Word32 |
|
| -> [ModifierType] |
|
| -> m () |
Manually sets a keyval and modifier mask as the accelerator rendered
by accelLabel.
If a keyval and modifier are explicitly set then these values are used regardless of any associated accel closure or widget.
Providing an acceleratorKey of 0 removes the manual setting.
Since: 3.6
setAccelClosure
accelLabelSetAccelClosure Source #
Arguments
| :: (HasCallStack, MonadIO m, IsAccelLabel a) | |
| => a |
|
| -> Closure |
|
| -> m () |
Sets the closure to be monitored by this accelerator label. The closure
must be connected to an accelerator group; see accelGroupConnect.
setAccelWidget
accelLabelSetAccelWidget Source #
Arguments
| :: (HasCallStack, MonadIO m, IsAccelLabel a, IsWidget b) | |
| => a |
|
| -> b |
|
| -> m () |
Sets the widget to be monitored by this accelerator label.
Properties
accelClosure
constructAccelLabelAccelClosure :: IsAccelLabel o => Closure -> IO (GValueConstruct o) Source #
getAccelLabelAccelClosure :: (MonadIO m, IsAccelLabel o) => o -> m (Maybe Closure) Source #
setAccelLabelAccelClosure :: (MonadIO m, IsAccelLabel o) => o -> Closure -> m () Source #
accelWidget
constructAccelLabelAccelWidget :: (IsAccelLabel o, IsWidget a) => a -> IO (GValueConstruct o) Source #
getAccelLabelAccelWidget :: (MonadIO m, IsAccelLabel o) => o -> m (Maybe Widget) Source #
setAccelLabelAccelWidget :: (MonadIO m, IsAccelLabel o, IsWidget a) => o -> a -> m () Source #