static void drag_end_cb (GtkWidget *widget, GdkDragContext *context, EggEditableToolbar *etoolbar) { GtkAction *action; gint flags; if (gtk_widget_get_parent (widget) != NULL) { gtk_widget_show (widget); #if GTK_CHECK_VERSION (2, 16, 0) action = gtk_activatable_get_related_action (GTK_ACTIVATABLE (widget)); #else action = gtk_widget_get_action (widget); #endif if (action == NULL) return; flags = egg_toolbars_model_get_name_flags (etoolbar->priv->model, gtk_action_get_name (action)); if (!(flags & EGG_TB_MODEL_NAME_INFINITE)) { flags |= EGG_TB_MODEL_NAME_USED; egg_toolbars_model_set_name_flags (etoolbar->priv->model, gtk_action_get_name (action), flags); } } }
/** * _gtk_action_sync_menu_visible: * @action: (allow-none): a #GtkAction, or %NULL to determine the action from @proxy * @proxy: a proxy menu item * @empty: whether the submenu attached to @proxy is empty * * Updates the visibility of @proxy from the visibility of @action * according to the following rules: * <itemizedlist> * <listitem><para>if @action is invisible, @proxy is too * </para></listitem> * <listitem><para>if @empty is %TRUE, hide @proxy unless the "hide-if-empty" * property of @action indicates otherwise * </para></listitem> * </itemizedlist> * * This function is used in the implementation of #GtkUIManager. **/ void _gtk_action_sync_menu_visible (GtkAction *action, GtkWidget *proxy, gboolean empty) { gboolean visible = TRUE; gboolean hide_if_empty = TRUE; g_return_if_fail (GTK_IS_MENU_ITEM (proxy)); g_return_if_fail (action == NULL || GTK_IS_ACTION (action)); if (action == NULL) action = gtk_activatable_get_related_action (GTK_ACTIVATABLE (proxy)); if (action) { /* a GtkMenu for a <popup/> doesn't have to have an action */ visible = gtk_action_is_visible (action); hide_if_empty = action->private_data->hide_if_empty; } if (visible && !(empty && hide_if_empty)) gtk_widget_show (proxy); else gtk_widget_hide (proxy); }
static void mail_attachment_bar_update_status (EMailAttachmentBar *bar) { EAttachmentView *view; EAttachmentStore *store; GtkActivatable *activatable; GtkAction *action; GtkLabel *label; gint num_attachments; guint64 total_size; gchar *display_size; gchar *markup; view = E_ATTACHMENT_VIEW (bar); store = e_attachment_view_get_store (view); label = GTK_LABEL (bar->priv->status_label); num_attachments = e_attachment_store_get_num_attachments (store); total_size = e_attachment_store_get_total_size (store); display_size = g_format_size_for_display (total_size); if (total_size > 0) markup = g_strdup_printf ( "<b>%d</b> %s (%s)", num_attachments, ngettext ( "Attachment", "Attachments", num_attachments), display_size); else markup = g_strdup_printf ( "<b>%d</b> %s", num_attachments, ngettext ( "Attachment", "Attachments", num_attachments)); gtk_label_set_markup (label, markup); g_free (markup); activatable = GTK_ACTIVATABLE (bar->priv->save_all_button); action = gtk_activatable_get_related_action (activatable); gtk_action_set_visible (action, (num_attachments > 1)); activatable = GTK_ACTIVATABLE (bar->priv->save_one_button); action = gtk_activatable_get_related_action (activatable); gtk_action_set_visible (action, (num_attachments == 1)); g_free (display_size); }
static void button_clicked (GtkWidget *widget, GtkToolButton *button) { GtkAction *action; action = gtk_activatable_get_related_action (GTK_ACTIVATABLE (button)); if (action) gtk_action_activate (action); g_signal_emit_by_name (button, "clicked"); }
static void on_menu_item_selected (GtkWidget *item, LdWindowMain *window) { GtkAction *action; gchar *tooltip; action = gtk_activatable_get_related_action (GTK_ACTIVATABLE (item)); g_object_get (G_OBJECT (action), "tooltip", &tooltip, NULL); if (tooltip != NULL) gtk_statusbar_push (GTK_STATUSBAR (window->priv->statusbar), window->priv->statusbar_menu_context_id, tooltip); g_free (tooltip); }
static void gimp_ui_manager_menu_item_select (GtkWidget *widget, GimpUIManager *manager) { GtkAction *action = gtk_activatable_get_related_action (GTK_ACTIVATABLE (widget)); if (action) { const gchar *tooltip = gtk_action_get_tooltip (action); if (tooltip) g_signal_emit (manager, manager_signals[SHOW_TOOLTIP], 0, tooltip); } }
static void configure_item_tooltip (GtkToolItem *item) { GtkAction *action; #if GTK_CHECK_VERSION (2, 16, 0) action = gtk_activatable_get_related_action (GTK_ACTIVATABLE (item)); #else action = gtk_widget_get_action (GTK_WIDGET (item)); #endif if (action != NULL) { g_object_notify (G_OBJECT (action), "tooltip"); } }
static void button_clicked (GtkWidget *widget, GtkToolButton *button) { GtkAction *action; G_GNUC_BEGIN_IGNORE_DEPRECATIONS; action = gtk_activatable_get_related_action (GTK_ACTIVATABLE (button)); if (action) gtk_action_activate (action); G_GNUC_END_IGNORE_DEPRECATIONS; g_signal_emit_by_name (button, "clicked"); }
static void menu_item_select_cb (GtkMenuItem *proxy, AnjutaWindow *win) { GtkAction *action; char *message; action = gtk_activatable_get_related_action (GTK_ACTIVATABLE (proxy)); g_return_if_fail (action != NULL); g_object_get (G_OBJECT (action), "tooltip", &message, NULL); if (message) { anjuta_status_push (win->status, "%s", message); g_free (message); } }
static void menu_item_select_cb (GtkMenuItem *proxy, NautilusWindow *window) { GtkAction *action; char *message; action = gtk_activatable_get_related_action (GTK_ACTIVATABLE (proxy)); g_return_if_fail (action != NULL); g_object_get (G_OBJECT (action), "tooltip", &message, NULL); if (message) { gtk_statusbar_push (GTK_STATUSBAR (window->details->statusbar), window->details->help_message_cid, message); g_free (message); } }
static void menu_item_select_cb (GtkMenuItem *proxy, ProcData *procdata) { GtkAction *action; char *message; action = gtk_activatable_get_related_action (GTK_ACTIVATABLE(proxy)); g_assert(action); g_object_get (G_OBJECT (action), "tooltip", &message, NULL); if (message) { gtk_statusbar_push (GTK_STATUSBAR (procdata->statusbar), procdata->tip_message_cid, message); g_free (message); } }
static void menu_item_select_cb (GtkWidget * widget, GtkStatusbar * statusbar) { GtkAction *action; gchar *tooltip; guint context_id; context_id = gtk_statusbar_get_context_id (statusbar, "games-tooltip"); action = gtk_activatable_get_related_action (GTK_ACTIVATABLE (widget)); g_return_if_fail (action != NULL); g_object_get (action, "tooltip", &tooltip, NULL); if (tooltip) { gtk_statusbar_push (statusbar, context_id, tooltip); g_free (tooltip); } }
static void shell_window_menu_item_select_cb (EShellWindow *shell_window, GtkWidget *widget) { GtkAction *action; GtkActivatable *activatable; GtkLabel *label; const gchar *tooltip; activatable = GTK_ACTIVATABLE (widget); action = gtk_activatable_get_related_action (activatable); tooltip = gtk_action_get_tooltip (action); if (tooltip == NULL) return; label = GTK_LABEL (shell_window->priv->tooltip_label); gtk_label_set_text (label, tooltip); gtk_widget_show (shell_window->priv->tooltip_label); gtk_widget_hide (shell_window->priv->status_notebook); }
/* get the related action of the widget or walk up the parents to find one. * useful for example to get the related action of a tool item from its child. */ GtkAction * mousepad_util_find_related_action (GtkWidget *widget) { GtkAction *action; g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL); do { if (GTK_IS_ACTIVATABLE (widget)) action = gtk_activatable_get_related_action (GTK_ACTIVATABLE (widget)); if (G_UNLIKELY (action == NULL)) { if (gtk_widget_is_toplevel (widget)) break; widget = gtk_widget_get_parent (widget); } } while (action == NULL); return action; }
static void assign_tooltip_from_action(GtkWidget* widget) { GtkAction* action; const gchar * tooltip; action = gtk_activatable_get_related_action(GTK_ACTIVATABLE(widget)); if (!action) return; if (!gtk_activatable_get_use_action_appearance(GTK_ACTIVATABLE(widget))) return; tooltip = gtk_action_get_tooltip(action); if (tooltip) { gtk_widget_set_tooltip_text(widget, tooltip); gtk_widget_set_has_tooltip(widget, TRUE); } else { gtk_widget_set_has_tooltip(widget, FALSE); } }
static void mail_browser_menu_item_select_cb (EMailBrowser *browser, GtkWidget *widget) { GtkAction *action; GtkActivatable *activatable; GtkStatusbar *statusbar; const gchar *tooltip; guint context_id; gpointer data; activatable = GTK_ACTIVATABLE (widget); action = gtk_activatable_get_related_action (activatable); tooltip = gtk_action_get_tooltip (action); data = g_object_get_data (G_OBJECT (widget), "context-id"); context_id = GPOINTER_TO_UINT (data); if (tooltip == NULL) return; statusbar = GTK_STATUSBAR (browser->priv->statusbar); gtk_statusbar_push (statusbar, context_id, tooltip); }
static void _interface_tweaks_find_browser_locationbar_callback(GtkWidget *inWidget, gpointer inUserData) { g_return_if_fail(GTK_IS_WIDGET(inWidget)); if(GTK_IS_TOOL_ITEM(inWidget)) { GtkAction *action; action=gtk_activatable_get_related_action(GTK_ACTIVATABLE(inWidget)); if(g_strcmp0(gtk_action_get_name(action), "Location")==0) { InterfaceTweaksLocationbarLookup **item=(InterfaceTweaksLocationbarLookup**)inUserData; if(item) (*item)->action=action; gtk_container_foreach(GTK_CONTAINER(inWidget), _interface_tweaks_find_browser_locationbar_entry_callback, inUserData); } else if(g_strcmp0(gtk_action_get_name(action), "LocationSearch")==0) { InterfaceTweaksLocationbarLookup **item=(InterfaceTweaksLocationbarLookup**)inUserData; GtkWidget *locationChild; if(item) (*item)->action=action; locationChild=midori_paned_action_get_child_by_name(MIDORI_PANED_ACTION(action), "Location"); if(locationChild) { gtk_container_foreach(GTK_CONTAINER(locationChild), _interface_tweaks_find_browser_locationbar_entry_callback, inUserData); } } } else if(GTK_IS_CONTAINER(inWidget)) { gtk_container_foreach(GTK_CONTAINER(inWidget), _interface_tweaks_find_browser_locationbar_callback, inUserData); } }
static void nautilus_toolbar_constructed (GObject *obj) { NautilusToolbar *self = NAUTILUS_TOOLBAR (obj); GtkWidget *toolbar; GtkWidget *button; GtkWidget *menu; GtkWidget *box; GtkWidget *separator; GtkUIManager *ui_manager; gboolean rtl; G_OBJECT_CLASS (nautilus_toolbar_parent_class)->constructed (obj); gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET (self)), "header-bar"); self->priv->toolbar = toolbar = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); g_object_set (toolbar, "margin", 8, NULL); gtk_container_add (GTK_CONTAINER (self), toolbar); rtl = gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL; ui_manager = nautilus_window_get_ui_manager (self->priv->window); gtk_style_context_set_junction_sides (gtk_widget_get_style_context (GTK_WIDGET (self)), GTK_JUNCTION_BOTTOM); /* Back and Forward */ box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); /* Back */ button = toolbar_create_toolbutton (self, FALSE, FALSE, NAUTILUS_ACTION_BACK, NULL); gtk_widget_set_valign (button, GTK_ALIGN_CENTER); gtk_action_set_icon_name (gtk_activatable_get_related_action (GTK_ACTIVATABLE (button)), rtl ? "go-previous-rtl-symbolic" : "go-previous-symbolic"); navigation_button_setup_menu (self, button, NAUTILUS_NAVIGATION_DIRECTION_BACK); gtk_container_add (GTK_CONTAINER (box), button); /* Forward */ button = toolbar_create_toolbutton (self, FALSE, FALSE, NAUTILUS_ACTION_FORWARD, NULL); gtk_widget_set_valign (button, GTK_ALIGN_CENTER); gtk_action_set_icon_name (gtk_activatable_get_related_action (GTK_ACTIVATABLE (button)), rtl ? "go-next-rtl-symbolic" : "go-next-symbolic"); navigation_button_setup_menu (self, button, NAUTILUS_NAVIGATION_DIRECTION_FORWARD); gtk_container_add (GTK_CONTAINER (box), button); gtk_style_context_add_class (gtk_widget_get_style_context (box), GTK_STYLE_CLASS_RAISED); gtk_style_context_add_class (gtk_widget_get_style_context (box), GTK_STYLE_CLASS_LINKED); gtk_box_pack_start (GTK_BOX (toolbar), box, FALSE, FALSE, 0); if (rtl) { gtk_widget_set_margin_left (box, 12); } else { gtk_widget_set_margin_right (box, 12); } /* regular path bar */ box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); self->priv->path_bar = g_object_new (NAUTILUS_TYPE_PATH_BAR, NULL); gtk_box_pack_start (GTK_BOX (box), self->priv->path_bar, TRUE, TRUE, 0); /* entry-like location bar */ self->priv->location_entry = nautilus_location_entry_new (); gtk_box_pack_start (GTK_BOX (box), self->priv->location_entry, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (toolbar), box, TRUE, TRUE, 0); /* search */ button = toolbar_create_toolbutton (self, FALSE, TRUE, NAUTILUS_ACTION_SEARCH, NULL); gtk_widget_set_valign (button, GTK_ALIGN_CENTER); gtk_container_add (GTK_CONTAINER (toolbar), button); if (rtl) { gtk_widget_set_margin_right (button, 76); } else { gtk_widget_set_margin_left (button, 76); } /* View buttons */ box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); button = toolbar_create_toolbutton (self, FALSE, TRUE, NAUTILUS_ACTION_VIEW_LIST, NULL); gtk_widget_set_valign (button, GTK_ALIGN_CENTER); gtk_container_add (GTK_CONTAINER (box), button); button = toolbar_create_toolbutton (self, FALSE, TRUE, NAUTILUS_ACTION_VIEW_GRID, NULL); gtk_widget_set_valign (button, GTK_ALIGN_CENTER); gtk_container_add (GTK_CONTAINER (box), button); button = toolbar_create_toolbutton (self, TRUE, FALSE, "go-down-symbolic", _("View options")); gtk_widget_set_valign (button, GTK_ALIGN_CENTER); gtk_container_add (GTK_CONTAINER (box), button); menu = gtk_ui_manager_get_widget (ui_manager, "/ViewMenu"); gtk_menu_button_set_popup (GTK_MENU_BUTTON (button), menu); gtk_style_context_add_class (gtk_widget_get_style_context (box), GTK_STYLE_CLASS_RAISED); gtk_style_context_add_class (gtk_widget_get_style_context (box), GTK_STYLE_CLASS_LINKED); gtk_container_add (GTK_CONTAINER (toolbar), box); if (rtl) { gtk_widget_set_margin_right (box, 12); } else { gtk_widget_set_margin_left (box, 12); } /* Action Menu */ button = toolbar_create_toolbutton (self, TRUE, FALSE, "emblem-system-symbolic", _("Location options")); gtk_widget_set_valign (button, GTK_ALIGN_CENTER); menu = gtk_ui_manager_get_widget (ui_manager, "/ActionMenu"); gtk_widget_set_halign (menu, GTK_ALIGN_END); gtk_menu_button_set_popup (GTK_MENU_BUTTON (button), menu); gtk_actionable_set_action_name (GTK_ACTIONABLE (button), "win.gear-menu"); g_signal_connect (menu, "key-press-event", G_CALLBACK (gear_menu_key_press), self); gtk_container_add (GTK_CONTAINER (toolbar), button); if (rtl) { gtk_widget_set_margin_right (button, 12); } else { gtk_widget_set_margin_left (button, 12); } /* Separator and Close */ separator = gtk_separator_new (GTK_ORIENTATION_VERTICAL); gtk_container_add (GTK_CONTAINER (toolbar), separator); if (rtl) { gtk_widget_set_margin_right (separator, 8); } else { gtk_widget_set_margin_left (separator, 8); } button = gtk_button_new_from_icon_name ("window-close-symbolic", GTK_ICON_SIZE_MENU); gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE); g_signal_connect (button, "clicked", G_CALLBACK (close_button_clicked), self); gtk_container_add (GTK_CONTAINER (toolbar), button); if (rtl) { gtk_widget_set_margin_right (button, 6); } else { gtk_widget_set_margin_left (button, 6); } g_signal_connect_swapped (nautilus_preferences, "changed::" NAUTILUS_PREFERENCES_ALWAYS_USE_LOCATION_ENTRY, G_CALLBACK (toolbar_update_appearance), self); gtk_widget_show_all (toolbar); toolbar_update_appearance (self); }
static void browserWindowHistoryItemSelected(BrowserWindow *window, GtkMenuItem *item) { GtkAction *action = gtk_activatable_get_related_action(GTK_ACTIVATABLE(item)); browserWindowSetStatusText(window, action ? gtk_action_get_name(action) : NULL); }
static void gtk_radio_menu_item_activate (GtkMenuItem *menu_item) { GtkRadioMenuItem *radio_menu_item = GTK_RADIO_MENU_ITEM (menu_item); GtkRadioMenuItemPrivate *priv = radio_menu_item->priv; GtkCheckMenuItem *check_menu_item = GTK_CHECK_MENU_ITEM (menu_item); GtkCheckMenuItem *tmp_menu_item; GtkAction *action; GSList *tmp_list; gboolean active; gint toggled; G_GNUC_BEGIN_IGNORE_DEPRECATIONS; action = gtk_activatable_get_related_action (GTK_ACTIVATABLE (menu_item)); if (action && gtk_menu_item_get_submenu (menu_item) == NULL) gtk_action_activate (action); G_GNUC_END_IGNORE_DEPRECATIONS; toggled = FALSE; active = gtk_check_menu_item_get_active (check_menu_item); if (active) { tmp_menu_item = NULL; tmp_list = priv->group; while (tmp_list) { tmp_menu_item = tmp_list->data; tmp_list = tmp_list->next; if (gtk_check_menu_item_get_active (tmp_menu_item) && tmp_menu_item != check_menu_item) break; tmp_menu_item = NULL; } if (tmp_menu_item) { toggled = TRUE; _gtk_check_menu_item_set_active (check_menu_item, !active); } } else { toggled = TRUE; _gtk_check_menu_item_set_active (check_menu_item, !active); tmp_list = priv->group; while (tmp_list) { tmp_menu_item = tmp_list->data; tmp_list = tmp_list->next; if (gtk_check_menu_item_get_active (tmp_menu_item) && tmp_menu_item != check_menu_item) { gtk_menu_item_activate (GTK_MENU_ITEM (tmp_menu_item)); break; } } } if (toggled) { gtk_check_menu_item_toggled (check_menu_item); } gtk_widget_queue_draw (GTK_WIDGET (radio_menu_item)); }
static void gtk_radio_menu_item_activate (GtkMenuItem *menu_item) { GtkRadioMenuItem *radio_menu_item = GTK_RADIO_MENU_ITEM (menu_item); GtkCheckMenuItem *check_menu_item = GTK_CHECK_MENU_ITEM (menu_item); GtkCheckMenuItem *tmp_menu_item; GtkAction *action; GSList *tmp_list; gint toggled; action = gtk_activatable_get_related_action (GTK_ACTIVATABLE (menu_item)); if (action && gtk_menu_item_get_submenu (menu_item) == NULL) gtk_action_activate (action); toggled = FALSE; if (check_menu_item->active) { tmp_menu_item = NULL; tmp_list = radio_menu_item->group; while (tmp_list) { tmp_menu_item = tmp_list->data; tmp_list = tmp_list->next; if (tmp_menu_item->active && (tmp_menu_item != check_menu_item)) break; tmp_menu_item = NULL; } if (tmp_menu_item) { toggled = TRUE; check_menu_item->active = !check_menu_item->active; } } else { toggled = TRUE; check_menu_item->active = !check_menu_item->active; tmp_list = radio_menu_item->group; while (tmp_list) { tmp_menu_item = tmp_list->data; tmp_list = tmp_list->next; if (tmp_menu_item->active && (tmp_menu_item != check_menu_item)) { gtk_menu_item_activate (GTK_MENU_ITEM (tmp_menu_item)); break; } } } if (toggled) { gtk_check_menu_item_toggled (check_menu_item); } gtk_widget_queue_draw (GTK_WIDGET (radio_menu_item)); }