/* * Copyright (c) 2007 The Xfce Development Team * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ #if !defined(_LIBXFCE4UI_INSIDE_LIBXFCE4UI_H) && !defined(LIBXFCE4UI_COMPILATION) #error "Only can be included directly, this file is not part of the public API." #endif #ifndef __XFCE_GTK_EXTENSIONS_H__ #define __XFCE_GTK_EXTENSIONS_H__ #include G_BEGIN_DECLS /** * XfceGtkMenuItem: * @XFCE_GTK_MENU_ITEM: see #GtkMenuItem * @XFCE_GTK_IMAGE_MENU_ITEM: see #GtkImageMenuItem * @XFCE_GTK_CHECK_MENU_ITEM: see #GtkCheckMenuItem * @XFCE_GTK_RADIO_MENU_ITEM: see #GtkRadioMenuItem * * List of item types which are supported by the #XfceGtkActionEntry. * To be extended if required. **/ typedef enum { XFCE_GTK_MENU_ITEM, XFCE_GTK_IMAGE_MENU_ITEM, XFCE_GTK_CHECK_MENU_ITEM, XFCE_GTK_RADIO_MENU_ITEM, } XfceGtkMenuItem; /** * XfceGtkActionEntry: * @id: unique identifier for instances of this structure (you might want to use a enum) * @accel_path: the unique path, used to identify the accelerator * @default_accelerator: the default key and modifier to trigger the callback linked to the entry * @menu_item_type: the type of the item which should be used for creation * @menu_item_label_text: text which should be shown in the menu * @menu_item_tooltip_text: optional tooltip of the item * @menu_item_icon_name: optional icon name which will be used to find a image for the item * @callback: the callback which will be triggered on activation. The callback has to return %TRUE * to signal that the accelerator was activated and handled * * Replacement for the deprecated #GtkActionEntry. * The idea is to provide a fixed list of #XfceGtkActionEntrys: * - use xfce_gtk_translate_action_entries() once to translate the list * - use xfce_gtk_accel_map_add_entries() once to register the provided accelerators * - use xfce_gtk_get_action_entry_by_id() to find a single entry, e.g. by using a enumeration * - use xfce_gtk_*_new_from_action_entry() to create the specific menu- or tool-items from the entry **/ struct _XfceGtkActionEntry { guint id; const gchar *accel_path; const gchar *default_accelerator; /* menu_item data is optional, only relevant if there exists a menu_item for that accelerator */ XfceGtkMenuItem menu_item_type; gchar *menu_item_label_text; gchar *menu_item_tooltip_text; const gchar *menu_item_icon_name; GCallback callback; }; typedef struct _XfceGtkActionEntry XfceGtkActionEntry; GtkWidget * xfce_gtk_menu_item_new (const gchar *label_text, const gchar *tooltip_text, const gchar *accel_path, GCallback callback, GObject *callback_param, GtkMenuShell *menu_to_append_item); GtkWidget * xfce_gtk_image_menu_item_new (const gchar *label_text, const gchar *tooltip_text, const gchar *accel_path, GCallback callback, GObject *callback_param, GtkWidget *image, GtkMenuShell *menu_to_append_item); GtkWidget * xfce_gtk_image_menu_item_new_from_icon_name (const gchar *label_text, const gchar *tooltip_text, const gchar *accel_path, GCallback callback, GObject *callback_param, const gchar *icon_name, GtkMenuShell *menu_to_append_item); GtkWidget * xfce_gtk_check_menu_item_new (const gchar *label_text, const gchar *tooltip_text, const gchar *accel_path, GCallback callback, GObject *callback_param, gboolean active, GtkMenuShell *menu_to_append_item); GtkWidget * xfce_gtk_radio_menu_item_new (const gchar *label_text, const gchar *tooltip_text, const gchar *accel_path, GCallback callback, GObject *callback_param, gboolean active, GtkMenuShell *menu_to_append_item); GtkWidget * xfce_gtk_menu_item_new_from_action_entry (const XfceGtkActionEntry *action_entry, GObject *callback_param, GtkMenuShell *menu_to_append_item); GtkWidget * xfce_gtk_toggle_menu_item_new_from_action_entry (const XfceGtkActionEntry *action_entry, GObject *callback_param, gboolean active, GtkMenuShell *menu_to_append_item); GtkWidget * xfce_gtk_tool_button_new_from_action_entry (const XfceGtkActionEntry *action_entry, GObject *callback_param, GtkToolbar *toolbar_to_append_item); GtkWidget * xfce_gtk_toggle_tool_button_new_from_action_entry (const XfceGtkActionEntry *action_entry, GObject *callback_param, gboolean active, GtkToolbar *toolbar_to_append_item); void xfce_gtk_accel_map_add_entries (const XfceGtkActionEntry *action_entries, guint n_action_entries); void xfce_gtk_accel_group_connect_action_entries (GtkAccelGroup *accel_group, const XfceGtkActionEntry *action_entries, guint n_action_entries, gpointer callback_data); void xfce_gtk_accel_group_disconnect_action_entries (GtkAccelGroup *accel_group, const XfceGtkActionEntry *action_entries, guint n_action_entries); const XfceGtkActionEntry * xfce_gtk_get_action_entry_by_id (const XfceGtkActionEntry *action_entries, guint n_action_entries, guint id); void xfce_gtk_translate_action_entries (XfceGtkActionEntry *action_entries, guint n_action_entries); gboolean xfce_gtk_handle_tab_accels (GdkEventKey *key_event, GtkAccelGroup *accel_group, gpointer data, XfceGtkActionEntry *entries, size_t entry_count); gboolean xfce_gtk_execute_tab_accel (const gchar *accel_path, gpointer data, XfceGtkActionEntry *entries, size_t entry_count); void xfce_gtk_menu_append_seperator (GtkMenuShell *menu) G_GNUC_DEPRECATED_FOR (xfce_gtk_menu_append_separator ()); void xfce_gtk_menu_append_separator (GtkMenuShell *menu); GtkWidget * xfce_gtk_button_new_mixed (const gchar *stock_id, const gchar *label) G_GNUC_MALLOC; GtkWidget * xfce_gtk_frame_box_new (const gchar *label, GtkWidget **container_return) G_GNUC_MALLOC; GtkWidget * xfce_gtk_frame_box_new_with_content (const gchar *label, GtkWidget *content) G_GNUC_MALLOC; void xfce_gtk_window_center_on_active_screen (GtkWindow *window); gboolean xfce_gtk_menu_popup_until_mapped (GtkMenu *menu, GtkWidget *parent_menu_shell, GtkWidget *parent_menu_item, GtkMenuPositionFunc func, gpointer data, guint button, guint32 activate_time); gboolean xfce_widget_reparent (GtkWidget *widget, GtkWidget *new_parent); gchar * xfce_icon_name_from_desktop_id (const gchar *desktop_id); GIcon * xfce_gicon_from_name (const gchar *name); void xfce_gtk_menu_item_set_accel_label (GtkMenuItem *menu_item, const gchar *accel_path); gboolean xfce_has_gtk_frame_extents (GdkWindow *window, GtkBorder *extents); void xfce_gtk_label_set_a11y_relation (GtkLabel *label, GtkWidget *widget); G_END_DECLS #endif /* !__XFCE_GTK_EXTENSIONS_H__ */