void activate_action_string(GmpvApplication *app, const gchar *str) { GActionMap *map = G_ACTION_MAP(app); GAction *action = NULL; gchar *name = NULL; GVariant *param = NULL; gboolean param_match = FALSE; g_action_parse_detailed_name(str, &name, ¶m, NULL); if(name) { const GVariantType *action_ptype; const GVariantType *given_ptype; action = g_action_map_lookup_action(map, name); action_ptype = g_action_get_parameter_type(action); given_ptype = param?g_variant_get_type(param):NULL; param_match = (action_ptype == given_ptype) || g_variant_type_is_subtype_of (action_ptype, given_ptype); } if(action && param_match) { g_debug("Activating action %s", str); g_action_activate(action, param); } else { g_warning("Failed to activate action \"%s\"", str); } }
static void photos_preview_nav_buttons_delete (PhotosPreviewNavButtons *self) { GList *items = NULL; PhotosBaseItem *item; PhotosWindowMode mode; mode = photos_mode_controller_get_window_mode (self->mode_cntrlr); if (mode != PHOTOS_WINDOW_MODE_PREVIEW) return; item = PHOTOS_BASE_ITEM (photos_base_manager_get_active_object (self->item_mngr)); if (item == NULL) return; if (self->enable_next) g_action_activate (self->load_next, NULL); else if (self->enable_prev) g_action_activate (self->load_previous, NULL); else photos_mode_controller_go_back (self->mode_cntrlr); items = g_list_prepend (items, g_object_ref (item)); photos_base_manager_remove_object (self->item_mngr, G_OBJECT (item)); photos_delete_notification_new (items); g_list_free_full (items, g_object_unref); }
static gboolean photos_main_window_handle_key_preview (PhotosMainWindow *self, GdkEventKey *event) { gboolean fullscreen; gboolean handled = FALSE; fullscreen = photos_mode_controller_get_fullscreen (self->mode_cntrlr); switch (event->keyval) { case GDK_KEY_Escape: if (fullscreen) photos_mode_controller_go_back (self->mode_cntrlr); break; case GDK_KEY_Left: g_action_activate (self->load_previous, NULL); handled = TRUE; break; case GDK_KEY_Right: g_action_activate (self->load_next, NULL); handled = TRUE; break; default: break; } return handled; }
static void activate_action (GSimpleAction *action, GVariant *parameter, gpointer data) { GAction *win_action = get_corresponding_window_action (GTK_APPLICATION (data), G_ACTION (action)); g_action_activate (win_action, parameter); if (parameter) g_action_change_state (G_ACTION (action), parameter); }
static gboolean accel_activate(GtkAccelGroup * accel_group, GObject * acceleratable, guint keyval, GdkModifierType modifier, gpointer user_data) { AccelInfo *info = user_data; g_action_activate(info->action, info->parameter); return TRUE; }
static gboolean key_press_cb(GtkWidget* widget, GdkEventKey* evt, gpointer udata) { GtWin* self = GT_WIN(udata); GtWinPrivate* priv = gt_win_get_instance_private(self); GdkModifierType modifiers = gtk_accelerator_get_default_mod_mask(); gboolean playing; GAction *action; g_object_get(self->player, "playing", &playing, NULL); if (MAIN_VISIBLE_CHILD == GTK_WIDGET(self->player)) { if (evt->keyval == GDK_KEY_Escape) { if (priv->fullscreen) g_object_set(self, "fullscreen", FALSE, NULL); else { action = g_action_map_lookup_action(G_ACTION_MAP(self), "close_player"); g_action_activate(action, NULL); } } else if (evt->keyval == GDK_KEY_f) { g_object_set(self, "fullscreen", !priv->fullscreen, NULL); } } else { if (evt->keyval == GDK_KEY_Escape) gt_browse_header_bar_stop_search(GT_BROWSE_HEADER_BAR(priv->browse_header_bar)); else if (evt->keyval == GDK_KEY_f && (evt->state & modifiers) == GDK_CONTROL_MASK) gt_browse_header_bar_toggle_search(GT_BROWSE_HEADER_BAR(priv->browse_header_bar)); else { GtkWidget* view = gtk_stack_get_visible_child(GTK_STACK(priv->browse_stack)); if (view == priv->channels_view) gt_channels_view_handle_event(GT_CHANNELS_VIEW(priv->channels_view), (GdkEvent*) evt); else if (view == priv->games_view) gt_games_view_handle_event(GT_GAMES_VIEW(priv->games_view), (GdkEvent*) evt); else if (view == priv->follows_view) gt_follows_view_handle_event(GT_FOLLOWS_VIEW(priv->follows_view), (GdkEvent* )evt); } } return FALSE; }
static gboolean key_press_handler( GtkWidget *widget, GdkEvent *event, gpointer data ) { gmpv_handle *ctx = data; guint keyval = ((GdkEventKey*)event)->keyval; guint state = ((GdkEventKey*)event)->state; gchar **command; const guint mod_mask = GDK_MODIFIER_MASK &~(GDK_SHIFT_MASK |GDK_LOCK_MASK |GDK_MOD2_MASK |GDK_MOD3_MASK |GDK_MOD4_MASK |GDK_MOD5_MASK); /* Ignore insignificant modifiers (eg. numlock) */ state &= mod_mask; command = keybind_get_command(ctx, FALSE, state, keyval); /* Try user-specified keys first, then fallback to hard-coded keys */ if(command) { mpv_command(ctx->mpv_ctx, (const char **)command); } else if((state&mod_mask) == 0) { /* Accept F11 and f for entering/exiting fullscreen mode. ESC is * only used for exiting fullscreen mode. F11 is handled via * accelrator. */ if((ctx->gui->fullscreen && keyval == GDK_KEY_Escape) || keyval == GDK_KEY_f) { GAction *action ; action = g_action_map_lookup_action (G_ACTION_MAP(ctx->app), "fullscreen"); g_action_activate(action, NULL); } else if(keyval == GDK_KEY_Delete && main_window_get_playlist_visible(ctx->gui)) { remove_current_playlist_entry(ctx); } } return FALSE; }
static void window_accelerator_activated_cb (GtkAccelGroup *accel_group, GObject *object, guint key, GdkModifierType mod, gpointer user_data) { AccelData *accel_data = user_data; GAction *action; action = g_action_map_lookup_action (G_ACTION_MAP (accel_data->window), accel_data->action_name); if (action != NULL) g_action_activate (action, accel_data->target); }
static void _back_button_cb (ClutterActor *actor, MexInfoBar *bar) { GList *actions, *l; actions = mex_action_manager_get_actions (mex_action_manager_get_default ()); /* find the back action */ for (l = actions; l; l = g_list_next (l)) { MxAction *action = l->data; if (!g_strcmp0 (mx_action_get_name (action), "go-back")) g_action_activate (G_ACTION (action), NULL); } g_list_free (actions); }