ImageMenuItem

A GtkImageMenuItem is a menu item which has an icon next to the text label.

This is functionally equivalent to:

GtkWidget *box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
GtkWidget *icon = gtk_image_new_from_icon_name ("folder-music-symbolic", GTK_ICON_SIZE_MENU);
GtkWidget *label = gtk_label_new ("Music");
GtkWidget *menu_item = gtk_menu_item_new ();

gtk_container_add (GTK_CONTAINER (box), icon);
gtk_container_add (GTK_CONTAINER (box), label);

gtk_container_add (GTK_CONTAINER (menu_item), box);

gtk_widget_show_all (menu_item);

Note that the user may disable display of menu icons using the gtk-menu-images setting, so make sure to still fill in the text label. If you want to ensure that your menu items show an icon you are strongly encouraged to use a gtk.MenuItem with a gtk.Image instead.

gtk.ImageMenuItem has been deprecated since GTK+ 3.10. If you want to display an icon in a menu item, you should use gtk.MenuItem and pack a gtk.Box with a gtk.Image and a gtk.Label instead. You should also consider using gtk.Builder and the XML gtk.Menu description for creating menus, by following the [GMenu guide]https://developer.gnome.org/GMenu/. You should consider using icons in menu items only sparingly, and for "objects" (or "nouns") elements only, like bookmarks, files, and links; "actions" (or "verbs") should not have icons.

Furthermore, if you would like to display keyboard accelerator, you must pack the accel label into the box using Box.packEnd and align the label, otherwise the accelerator will not display correctly. The following code snippet adds a keyboard accelerator to the menu item, with a key binding of Ctrl+M:

GtkWidget *box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
GtkWidget *icon = gtk_image_new_from_icon_name ("folder-music-symbolic", GTK_ICON_SIZE_MENU);
GtkWidget *label = gtk_accel_label_new ("Music");
GtkWidget *menu_item = gtk_menu_item_new ();
GtkAccelGroup *accel_group = gtk_accel_group_new ();

gtk_container_add (GTK_CONTAINER (box), icon);

gtk_label_set_use_underline (GTK_LABEL (label), TRUE);
gtk_label_set_xalign (GTK_LABEL (label), 0.0);

gtk_widget_add_accelerator (menu_item, "activate", accel_group,
GDK_KEY_m, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
gtk_accel_label_set_accel_widget (GTK_ACCEL_LABEL (label), menu_item);

gtk_box_pack_end (GTK_BOX (box), label, TRUE, TRUE, 0);

gtk_container_add (GTK_CONTAINER (menu_item), box);

gtk_widget_show_all (menu_item);

Constructors

this
this(GtkImageMenuItem* gtkImageMenuItem, bool ownedRef)

Sets our main struct and passes it to the parent class.

this
this(string label, bool mnemonic)

Creates a new GtkImageMenuItem containing a label. If mnemonic it true the label will be created using Label.newWithMnemonic, so underscores in label indicate the mnemonic for the menu item.

this
this(StockID stockID, AccelGroup accelGroup)

Creates a new GtkImageMenuItem containing the image and text from a stock item. If you want this menu item to have changeable accelerators, then pass in null for accelGroup. Next call setAccelPath() with an appropriate path for the menu item, use gtk.StockItem.StockItem.lookup() to look up the standard accelerator for the stock item, and if one is found, call gtk.AccelMap.AccelMap.addEntry() to register it.

this
this()

Creates a new gtk.ImageMenuItem with an empty label.

Members

Functions

getAlwaysShowImage
bool getAlwaysShowImage()

Returns whether the menu item will ignore the gtk-menu-images setting and always show the image, if available.

getImage
Widget getImage()

Gets the widget that is currently set as the image of image_menu_item. See Image.menuItemSetImage.

getImageMenuItemStruct
GtkImageMenuItem* getImageMenuItemStruct(bool transferOwnership)

Get the main Gtk struct

getStruct
void* getStruct()

the main Gtk struct as a void*

getUseStock
bool getUseStock()

Checks whether the label set in the menuitem is used as a stock id to select the stock item for the item.

setAccelGroup
void setAccelGroup(AccelGroup accelGroup)

Specifies an accel_group to add the menu items accelerator to (this only applies to stock items so a stock item must already be set, make sure to call Image.menuItemSetUseStock and Menu.itemSetLabel with a valid stock item first).

setAlwaysShowImage
void setAlwaysShowImage(bool alwaysShow)

If TRUE, the menu item will ignore the gtk-menu-images setting and always show the image, if available.

setImage
void setImage(Widget image)

Sets the image of image_menu_item to the given widget. Note that it depends on the show-menu-images setting whether the image will be displayed or not.

setUseStock
void setUseStock(bool useStock)

If TRUE, the label set in the menuitem is used as a stock id to select the stock item for the item.

Static functions

getType
GType getType()

Variables

gtkImageMenuItem
GtkImageMenuItem* gtkImageMenuItem;

the main Gtk struct

Inherited Members

From MenuItem

gtkMenuItem
GtkMenuItem* gtkMenuItem;

the main Gtk struct

getMenuItemStruct
GtkMenuItem* getMenuItemStruct(bool transferOwnership)

Get the main Gtk struct

getStruct
void* getStruct()

the main Gtk struct as a void*

getActionName
string getActionName()

Gets the application set action code

getType
GType getType()
itemActivate
void itemActivate()

Emits the activate signal on the given item

deselect
void deselect()

Emits the deselect signal on the given item.

getAccelPath
string getAccelPath()

Retrieve the accelerator path that was previously set on menu_item.

getLabel
string getLabel()

Sets text on the menu_item label

getReserveIndicator
bool getReserveIndicator()

Returns whether the menu_item reserves space for the submenu indicator, regardless if it has a submenu or not.

getRightJustified
bool getRightJustified()

Gets whether the menu item appears justified at the right side of the menu bar.

getSubmenu
Widget getSubmenu()

Gets the submenu underneath this menu item, if any. See Menu.itemSetSubmenu.

getUseUnderline
bool getUseUnderline()

Checks if an underline in the text indicates the next character should be used for the mnemonic accelerator key.

select
void select()

Emits the select signal on the given item.

setAccelPath
void setAccelPath(string accelPath)

Set the accelerator path on menu_item, through which runtime changes of the menu item’s accelerator caused by the user can be identified and saved to persistent storage (see AccelMap.save on this). To set up a default accelerator for this menu item, call AccelMap.addEntry with the same accel_path. See also AccelMap.addEntry on the specifics of accelerator paths, and Menu.setAccelPath for a more convenient variant of this function.

setLabel
void setLabel(string label)

Sets text on the menu_item label

setReserveIndicator
void setReserveIndicator(bool reserve)

Sets whether the menu_item should reserve space for the submenu indicator, regardless if it actually has a submenu or not.

setRightJustified
void setRightJustified(bool rightJustified)

Sets whether the menu item appears justified at the right side of a menu bar. This was traditionally done for “Help” menu items, but is now considered a bad idea. (If the widget layout is reversed for a right-to-left language like Hebrew or Arabic, right-justified-menu-items appear at the left.)

setSubmenu
void setSubmenu(Menu submenu)

Sets or replaces the menu item’s submenu, or removes it when a NULL submenu is passed.

setUseUnderline
void setUseUnderline(bool setting)

If true, an underline in the text indicates the next character should be used for the mnemonic accelerator key.

toggleSizeAllocate
void toggleSizeAllocate(int allocation)

Emits the toggle-size-allocate signal on the given item.

toggleSizeRequest
void toggleSizeRequest(int requisition)

Emits the toggle-size-request signal on the given item.

addOnActivate
gulong addOnActivate(void delegate(MenuItem) dlg, ConnectFlags connectFlags)

Emitted when the item is activated.

addOnActivateItem
gulong addOnActivateItem(void delegate(MenuItem) dlg, ConnectFlags connectFlags)

Emitted when the item is activated, but also if the menu item has a submenu. For normal applications, the relevant signal is activate.

addOnDeselect
gulong addOnDeselect(void delegate(MenuItem) dlg, ConnectFlags connectFlags)
addOnSelect
gulong addOnSelect(void delegate(MenuItem) dlg, ConnectFlags connectFlags)
addOnToggleSizeAllocate
gulong addOnToggleSizeAllocate(void delegate(int, MenuItem) dlg, ConnectFlags connectFlags)
addOnToggleSizeRequest
gulong addOnToggleSizeRequest(void delegate(void*, MenuItem) dlg, ConnectFlags connectFlags)