static void gpview_device_ctrl_update_ids_cb(GObject *unused, GParamSpec *pspec, GPViewDeviceCtrl *ctrl) { GPViewDeviceCtrlPrivate *privat = GPVIEW_DEVICE_CTRL_GET_PRIVATE(ctrl); if (privat != NULL) { gboolean visible = (privat->current_view != NULL); GStrv ids = gpview_device_view_get_ids(privat->current_view); gboolean sensitive_1 = visible && (ids != NULL) && (g_strv_length(ids) == 1); gboolean sensitive_n = visible && (ids != NULL) && (g_strv_length(ids) > 0); g_strfreev(ids); gtk_action_group_set_sensitive( privat->action_group_multiple, sensitive_n ); gtk_action_group_set_visible( privat->action_group_multiple, visible ); gtk_action_group_set_sensitive( privat->action_group_single, sensitive_1 ); gtk_action_group_set_visible( privat->action_group_single, visible ); } }
static void update_menu_items (GObject *gobject, GParamSpec *pspec, gpointer user_data) { BluetoothApplet *applet = BLUETOOTH_APPLET (gobject); gboolean enabled; GObject *object; enabled = bluetooth_applet_get_show_full_menu (applet); object = gtk_builder_get_object (xml, "adapter-action-group"); gtk_action_group_set_visible (GTK_ACTION_GROUP (object), enabled); gtk_action_group_set_visible (devices_action_group, enabled); if (enabled == FALSE) return; gtk_action_group_set_sensitive (GTK_ACTION_GROUP (object), TRUE); }
static void update_menu_items (void) { gboolean enabled; GObject *object; if (num_adapters_present == 0) enabled = FALSE; else enabled = (num_adapters_present - num_adapters_powered) <= 0; object = gtk_builder_get_object (xml, "adapter-action-group"); gtk_action_group_set_visible (GTK_ACTION_GROUP (object), enabled); gtk_action_group_set_visible (devices_action_group, enabled); if (enabled == FALSE) return; gtk_action_group_set_sensitive (GTK_ACTION_GROUP (object), TRUE); }
static void attachment_button_menu_deactivate_cb (EAttachmentButton *button) { EAttachmentView *view; GtkActionGroup *action_group; GtkToggleButton *toggle_button; view = e_attachment_button_get_view (button); action_group = e_attachment_view_get_action_group (view, "inline"); toggle_button = GTK_TOGGLE_BUTTON (button->priv->toggle_button); gtk_toggle_button_set_active (toggle_button, FALSE); gtk_action_group_set_visible (action_group, FALSE); }
int clip_GTK_ACTIONGROUPSETVISIBLE(ClipMachine * ClipMachineMemory) { C_object *cagroup = _fetch_co_arg(ClipMachineMemory); gboolean visible = _clip_parl(ClipMachineMemory, 2); CHECKARG2(1, MAP_type_of_ClipVarType, NUMERIC_type_of_ClipVarType); CHECKCOBJ(cagroup, GTK_IS_ACTION_GROUP(cagroup->object)); CHECKARG(2, LOGICAL_type_of_ClipVarType); gtk_action_group_set_visible(GTK_ACTION_GROUP(cagroup->object), visible); return 0; err: return 1; }
static void mail_attachment_handler_update_actions (EAttachmentView *view, EAttachmentHandler *handler) { EAttachment *attachment; CamelMimePart *mime_part; GtkActionGroup *action_group; GList *selected; gboolean visible = FALSE; selected = e_attachment_view_get_selected_attachments (view); if (g_list_length (selected) != 1) goto exit; attachment = E_ATTACHMENT (selected->data); if (e_attachment_get_loading (attachment) || e_attachment_get_saving (attachment)) goto exit; mime_part = e_attachment_ref_mime_part (attachment); if (mime_part != NULL) { CamelMedium *medium; CamelDataWrapper *content; medium = CAMEL_MEDIUM (mime_part); content = camel_medium_get_content (medium); visible = CAMEL_IS_MIME_MESSAGE (content); g_object_unref (mime_part); } exit: action_group = e_attachment_view_get_action_group (view, "mail"); gtk_action_group_set_visible (action_group, visible); g_list_foreach (selected, (GFunc) g_object_unref, NULL); g_list_free (selected); }
static void attachment_button_show_popup_menu (EAttachmentButton *button, GdkEventButton *event) { EAttachmentView *view; GtkActionGroup *action_group; GtkToggleButton *toggle_button; view = e_attachment_button_get_view (button); action_group = e_attachment_view_get_action_group (view, "inline"); toggle_button = GTK_TOGGLE_BUTTON (button->priv->toggle_button); attachment_button_select_path (button); gtk_toggle_button_set_active (toggle_button, TRUE); e_attachment_view_show_popup_menu ( view, event, (GtkMenuPositionFunc) attachment_button_menu_position, button); gtk_action_group_set_visible (action_group, TRUE); }
void gtkhtml_editor_update_context (GtkhtmlEditor *editor) { GtkHTML *html; HTMLType type; HTMLObject *object; GtkUIManager *manager; GtkActionGroup *action_group; GList *list; gboolean visible; guint merge_id; html = gtkhtml_editor_get_html (editor); manager = gtkhtml_editor_get_ui_manager (editor); gtk_html_update_styles (html); /* Update context menu item visibility. */ object = html->engine->cursor->object; if (object != NULL) type = HTML_OBJECT_TYPE (object); else type = HTML_TYPE_NONE; visible = (type == HTML_TYPE_IMAGE); gtk_action_set_visible (ACTION (CONTEXT_PROPERTIES_IMAGE), visible); visible = (type == HTML_TYPE_LINKTEXT); gtk_action_set_visible (ACTION (CONTEXT_PROPERTIES_LINK), visible); visible = (type == HTML_TYPE_RULE); gtk_action_set_visible (ACTION (CONTEXT_PROPERTIES_RULE), visible); visible = (type == HTML_TYPE_TEXT); gtk_action_set_visible (ACTION (CONTEXT_PROPERTIES_TEXT), visible); visible = gtk_action_get_visible (ACTION (CONTEXT_PROPERTIES_IMAGE)) || gtk_action_get_visible (ACTION (CONTEXT_PROPERTIES_LINK)) || gtk_action_get_visible (ACTION (CONTEXT_PROPERTIES_TEXT)); gtk_action_set_visible (ACTION (CONTEXT_PROPERTIES_PARAGRAPH), visible); /* Set to visible if any of these are true: * - Selection is active and contains a link. * - Cursor is on a link. * - Cursor is on an image that has a URL or target. */ visible = (html_engine_is_selection_active (html->engine) && html_engine_selection_contains_link (html->engine)) || (type == HTML_TYPE_LINKTEXT) || (type == HTML_TYPE_IMAGE && (HTML_IMAGE (object)->url != NULL || HTML_IMAGE (object)->target != NULL)); gtk_action_set_visible (ACTION (CONTEXT_REMOVE_LINK), visible); /* Get the parent object. */ object = (object != NULL) ? object->parent : NULL; /* Get the grandparent object. */ object = (object != NULL) ? object->parent : NULL; if (object != NULL) type = HTML_OBJECT_TYPE (object); else type = HTML_TYPE_NONE; visible = (type == HTML_TYPE_TABLECELL); gtk_action_set_visible (ACTION (CONTEXT_DELETE_CELL), visible); gtk_action_set_visible (ACTION (CONTEXT_DELETE_COLUMN), visible); gtk_action_set_visible (ACTION (CONTEXT_DELETE_ROW), visible); gtk_action_set_visible (ACTION (CONTEXT_DELETE_TABLE), visible); gtk_action_set_visible (ACTION (CONTEXT_INSERT_COLUMN_AFTER), visible); gtk_action_set_visible (ACTION (CONTEXT_INSERT_COLUMN_BEFORE), visible); gtk_action_set_visible (ACTION (CONTEXT_INSERT_ROW_ABOVE), visible); gtk_action_set_visible (ACTION (CONTEXT_INSERT_ROW_BELOW), visible); gtk_action_set_visible (ACTION (CONTEXT_INSERT_TABLE), visible); gtk_action_set_visible (ACTION (CONTEXT_PROPERTIES_CELL), visible); /* Get the great grandparent object. */ object = (object != NULL) ? object->parent : NULL; if (object != NULL) type = HTML_OBJECT_TYPE (object); else type = HTML_TYPE_NONE; /* Note the |= (cursor must be in a table cell). */ visible |= (type == HTML_TYPE_TABLE); gtk_action_set_visible (ACTION (CONTEXT_PROPERTIES_TABLE), visible); /********************** Spell Check Suggestions **********************/ object = html->engine->cursor->object; action_group = editor->priv->suggestion_actions; /* Remove the old content from the context menu. */ merge_id = editor->priv->spell_suggestions_merge_id; if (merge_id > 0) { gtk_ui_manager_remove_ui (manager, merge_id); editor->priv->spell_suggestions_merge_id = 0; } /* Clear the action group for spelling suggestions. */ list = gtk_action_group_list_actions (action_group); while (list != NULL) { GtkAction *action = list->data; gtk_action_group_remove_action (action_group, action); list = g_list_delete_link (list, list); } /* Decide if we should show spell checking items. */ visible = !html_engine_is_selection_active (html->engine) && object != NULL && html_object_is_text (object) && !html_engine_spell_word_is_valid (html->engine); action_group = editor->priv->spell_check_actions; gtk_action_group_set_visible (action_group, visible); /* Exit early if spell checking items are invisible. */ if (!visible) return; list = editor->priv->active_spell_checkers; merge_id = gtk_ui_manager_new_merge_id (manager); editor->priv->spell_suggestions_merge_id = merge_id; /* Handle a single active language as a special case. */ if (g_list_length (list) == 1) { editor_inline_spelling_suggestions (editor, list->data); return; } /* Add actions and context menu content for active languages. */ g_list_foreach (list, (GFunc) editor_spell_checkers_foreach, editor); }