Gtk2
view release on metacpan or search on metacpan
xs/GtkActionGroup.xs view on Meta::CPAN
action->tooltip = HFETCHPV (hv, "tooltip");
action->value = HFETCHIV (hv, "value");
}
break;
case SVt_PVAV:
{
AV * av = (AV*) SvRV (sv);
if (av_len (av) < 5)
croak ("not enough items in array form of radio action entry; expecting:\n"
" [ name, stock_id, label, accelerator, tooltip, value]\n"
" ");
action->name = AFETCHPV (av, 0);
action->stock_id = AFETCHPV (av, 1);
action->label = AFETCHPV (av, 2);
action->accelerator = AFETCHPV (av, 3);
action->tooltip = AFETCHPV (av, 4);
action->value = AFETCHIV (av, 5);
}
break;
default:
croak ("action entry must be a hash or an array");
}
}
MODULE = Gtk2::ActionGroup PACKAGE = Gtk2::ActionGroup PREFIX = gtk_action_group_
=for position DESCRIPTION
=head2 NOTE: Translation
In C, gtk+'s action groups can use the translation domain to ensure that action
labels and tooltips are translated along with the rest of the app. However,
the translation function was not available for calling B<by> the Perl bindings
until gtk+ 2.6; that is, setting the translation domain had no effect.
Translation of action groups is supported in Perl as of Gtk2 1.080 using
gtk+ 2.6.0 or later.
=cut
GtkActionGroup_noinc *gtk_action_group_new (class, const gchar *name);
C_ARGS:
name
const gchar *gtk_action_group_get_name (GtkActionGroup *action_group);
void gtk_action_group_set_sensitive (GtkActionGroup *action_group, gboolean sensitive);
gboolean gtk_action_group_get_sensitive (GtkActionGroup *action_group);
void gtk_action_group_set_visible (GtkActionGroup *action_group, gboolean sensitive);
gboolean gtk_action_group_get_visible (GtkActionGroup *action_group);
GtkAction *gtk_action_group_get_action (GtkActionGroup *action_group, const gchar *action_name);
void gtk_action_group_list_actions (GtkActionGroup *action_group);
PREINIT:
GList * actions, * i;
PPCODE:
actions = gtk_action_group_list_actions (action_group);
for (i = actions ; i != NULL ; i = i->next)
XPUSHs (sv_2mortal (newSVGtkAction (i->data)));
g_list_free (actions);
void gtk_action_group_add_action (GtkActionGroup *action_group, GtkAction *action);
void gtk_action_group_add_action_with_accel (GtkActionGroup *action_group, GtkAction *action, const gchar_ornull *accelerator);
void gtk_action_group_remove_action (GtkActionGroup *action_group, GtkAction *action);
##void gtk_action_group_add_actions (GtkActionGroup *action_group, GtkActionEntry *entries, guint n_entries, gpointer user_data);
##void gtk_action_group_add_actions_full (GtkActionGroup *action_group, GtkActionEntry *entries, guint n_entries, gpointer user_data, GDestroyNotify destroy);
void
gtk_action_group_add_actions (action_group, action_entries, user_data=NULL)
GtkActionGroup * action_group
SV * action_entries
SV * user_data
PREINIT:
AV * av;
GtkActionEntry * entries;
gint n_actions, i;
CODE:
if (!gperl_sv_is_array_ref (action_entries))
croak ("actions must be a reference to an array of action entries");
av = (AV*) SvRV (action_entries);
n_actions = av_len (av) + 1;
if (n_actions < 1)
croak ("action array is empty");
entries = gperl_alloc_temp (sizeof (GtkActionEntry) * n_actions);
for (i = 0 ; i < n_actions ; i++) {
SV ** svp = av_fetch (av, i, 0);
read_action_entry_from_sv (*svp, entries+i);
}
for (i = 0 ; i < n_actions ; i++) {
GtkAction * action;
gchar * accel_path;
const gchar * label;
const gchar * tooltip;
#if GTK_CHECK_VERSION (2, 6, 0)
label = gtk_action_group_translate_string (action_group,
entries[i].label);
tooltip =
gtk_action_group_translate_string (action_group,
entries[i].tooltip);
#else
label = entries[i].label;
tooltip = entries[i].tooltip;
#endif
action = gtk_action_new (entries[i].name,
label,
tooltip,
entries[i].stock_id);
if (entries[i].callback)
gperl_signal_connect (WRAPINSTANCE (action),
"activate",
(SV*)(entries[i].callback),
user_data, 0);
( run in 0.503 second using v1.01-cache-2.11-cpan-5511b514fd6 )