1 /* 2 * Copyright (c) 2003, 2010 by the gtk2-perl team (see the file AUTHORS) 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Library General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Library General Public License for more details. 13 * 14 * You should have received a copy of the GNU Library General Public 15 * License along with this library; if not, write to the 16 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 17 * Boston, MA 02110-1301 USA. 18 * 19 * $Id$ 20 */ 21 22 #include "gtk2perl.h" 23 24 MODULE = Gtk2::RadioMenuItem PACKAGE = Gtk2::RadioMenuItem PREFIX = gtk_radio_menu_item_ 25 26 GtkWidget * 27 gtk_radio_menu_item_new (class, member_or_listref=NULL, label=NULL) 28 SV * member_or_listref 29 const gchar * label 30 ALIAS: 31 Gtk2::RadioMenuItem::new_with_mnemonic = 1 32 Gtk2::RadioMenuItem::new_with_label = 2 33 PREINIT: 34 GSList * group = NULL; 35 GtkRadioMenuItem * member = NULL; 36 CODE: 37 if( gperl_sv_is_defined (member_or_listref) 38 && SvROK (member_or_listref) 39 && SvRV (member_or_listref) != &PL_sv_undef ) 40 { 41 if( gperl_sv_is_array_ref (member_or_listref) ) 42 { 43 AV * av = (AV*)SvRV(member_or_listref); 44 SV ** svp = av_fetch(av, 0, 0); 45 if( svp && gperl_sv_is_defined(*svp) ) 46 member = SvGtkRadioMenuItem(*svp); 47 } 48 else 49 member = SvGtkRadioMenuItem_ornull(member_or_listref); 50 if( member ) 51 group = member->group; 52 } 53 54 if (label) { 55 if (ix == 2) 56 RETVAL = gtk_radio_menu_item_new_with_label (group, label); 57 else 58 RETVAL = gtk_radio_menu_item_new_with_mnemonic (group, label); 59 } else 60 RETVAL = gtk_radio_menu_item_new (group); 61 OUTPUT: 62 RETVAL 63 64 #if GTK_CHECK_VERSION (2, 4, 0) 65 66 GtkWidget * 67 gtk_radio_menu_item_new_from_widget (class, group, label=NULL) 68 GtkRadioMenuItem * group 69 const gchar * label 70 ALIAS: 71 Gtk2::RadioMenuItem::new_with_mnemonic_from_widget = 1 72 Gtk2::RadioMenuItem::new_with_label_from_widget = 2 73 CODE: 74 if (label) { 75 if (ix == 2) 76 RETVAL = gtk_radio_menu_item_new_with_label_from_widget (group, label); 77 else 78 RETVAL = gtk_radio_menu_item_new_with_mnemonic_from_widget (group, label); 79 } else 80 RETVAL = gtk_radio_menu_item_new_from_widget (group); 81 OUTPUT: 82 RETVAL 83 84 #endif 85 86 # GSList * gtk_radio_menu_item_get_group (GtkRadioMenuItem *radio_menu_item) 87 =for apidoc 88 Return a reference to an array of C<Gtk2::RadioMenuItem>s, the group members. 89 =cut 90 AV * 91 gtk_radio_menu_item_get_group (radio_menu_item) 92 GtkRadioMenuItem * radio_menu_item 93 PREINIT: 94 GSList * group; 95 GSList * i; 96 CODE: 97 group = gtk_radio_menu_item_get_group (radio_menu_item); 98 RETVAL = newAV(); 99 sv_2mortal ((SV*) RETVAL); /* typemap expects RETVAL mortalized */ 100 for( i = group; i ; i = i->next ) 101 { 102 av_push(RETVAL, newSVGtkRadioMenuItem(GTK_RADIO_MENU_ITEM(i->data))); 103 } 104 OUTPUT: 105 RETVAL 106 107 void 108 gtk_radio_menu_item_set_group (radio_menu_item, member_or_listref) 109 GtkRadioMenuItem * radio_menu_item 110 SV * member_or_listref 111 PREINIT: 112 GSList * group = NULL; 113 GtkRadioMenuItem * member = NULL; 114 CODE: 115 if( gperl_sv_is_defined (member_or_listref) ) 116 { 117 if( gperl_sv_is_array_ref (member_or_listref) ) 118 { 119 AV * av = (AV*)SvRV(member_or_listref); 120 SV ** svp = av_fetch(av, 0, 0); 121 if( svp && gperl_sv_is_defined(*svp) ) 122 { 123 member = SvGtkRadioMenuItem(*svp); 124 } 125 } 126 else 127 member = SvGtkRadioMenuItem_ornull(member_or_listref); 128 if( member ) 129 group = member->group; 130 } 131 gtk_radio_menu_item_set_group(radio_menu_item, group); 132 133