gtk2 1.0.3 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (255) hide show
  1. data/Rakefile +66 -1
  2. data/ext/gtk2/extconf.rb +0 -96
  3. data/ext/gtk2/global.h +274 -13
  4. data/ext/gtk2/gtk2.def +5 -3
  5. data/ext/gtk2/init.c +263 -19
  6. data/ext/gtk2/rbgdk.c +245 -89
  7. data/ext/gtk2/rbgdk.h +32 -6
  8. data/ext/gtk2/rbgdkatom.c +38 -28
  9. data/ext/gtk2/rbgdkcairo.c +32 -42
  10. data/ext/gtk2/rbgdkcolor.c +52 -42
  11. data/ext/gtk2/rbgdkcolormap.c +42 -37
  12. data/ext/gtk2/rbgdkconst.c +23 -13
  13. data/ext/gtk2/rbgdkconversions.h +19 -6
  14. data/ext/gtk2/rbgdkcursor.c +37 -25
  15. data/ext/gtk2/rbgdkdevice.c +77 -67
  16. data/ext/gtk2/rbgdkdisplay.c +158 -150
  17. data/ext/gtk2/rbgdkdisplaymanager.c +27 -15
  18. data/ext/gtk2/rbgdkdragcontext.c +121 -70
  19. data/ext/gtk2/rbgdkdraw.c +252 -160
  20. data/ext/gtk2/rbgdkevent.c +30 -20
  21. data/ext/gtk2/rbgdkgc.c +123 -116
  22. data/ext/gtk2/rbgdkgeometry.c +77 -68
  23. data/ext/gtk2/rbgdkimage.c +58 -47
  24. data/ext/gtk2/rbgdkinput.c +33 -26
  25. data/ext/gtk2/rbgdkkeymap.c +38 -27
  26. data/ext/gtk2/rbgdkkeyval.c +44 -32
  27. data/ext/gtk2/rbgdkpango.c +66 -39
  28. data/ext/gtk2/rbgdkpangorenderer.c +63 -35
  29. data/ext/gtk2/rbgdkpixbuf.c +36 -25
  30. data/ext/gtk2/rbgdkpixmap.c +65 -49
  31. data/ext/gtk2/rbgdkproperty.c +66 -60
  32. data/ext/gtk2/rbgdkrectangle.c +54 -46
  33. data/ext/gtk2/rbgdkregion.c +144 -79
  34. data/ext/gtk2/rbgdkrgb.c +74 -58
  35. data/ext/gtk2/rbgdkscreen.c +103 -97
  36. data/ext/gtk2/rbgdkselection.c +49 -39
  37. data/ext/gtk2/rbgdkthreads.c +32 -19
  38. data/ext/gtk2/rbgdktimecoord.c +60 -38
  39. data/ext/gtk2/rbgdkvisual.c +79 -71
  40. data/ext/gtk2/rbgdkwindow.c +284 -305
  41. data/ext/gtk2/rbgdkwindowattr.c +69 -58
  42. data/ext/gtk2/rbgdkx11.c +41 -28
  43. data/ext/gtk2/rbgtk.c +498 -19
  44. data/ext/gtk2/rbgtk.h +35 -20
  45. data/ext/gtk2/rbgtkaboutdialog.c +33 -80
  46. data/ext/gtk2/rbgtkaccelerator.c +36 -23
  47. data/ext/gtk2/rbgtkaccelgroup.c +50 -40
  48. data/ext/gtk2/rbgtkaccelgroupentry.c +32 -20
  49. data/ext/gtk2/rbgtkaccelkey.c +40 -28
  50. data/ext/gtk2/rbgtkaccellabel.c +30 -18
  51. data/ext/gtk2/rbgtkaccelmap.c +55 -42
  52. data/ext/gtk2/rbgtkaccessible.c +25 -14
  53. data/ext/gtk2/rbgtkaction.c +68 -68
  54. data/ext/gtk2/rbgtkactiongroup.c +317 -195
  55. data/ext/gtk2/rbgtkadjustment.c +33 -46
  56. data/ext/gtk2/rbgtkalignment.c +36 -24
  57. data/ext/gtk2/rbgtkallocation.c +53 -42
  58. data/ext/gtk2/rbgtkarrow.c +34 -22
  59. data/ext/gtk2/rbgtkaspectframe.c +32 -20
  60. data/ext/gtk2/rbgtkassistant.c +81 -61
  61. data/ext/gtk2/rbgtkbbox.c +32 -20
  62. data/ext/gtk2/rbgtkbin.c +28 -16
  63. data/ext/gtk2/rbgtkbindingset.c +42 -35
  64. data/ext/gtk2/rbgtkborder.c +34 -23
  65. data/ext/gtk2/rbgtkbox.c +40 -29
  66. data/ext/gtk2/rbgtkbuildable.c +57 -45
  67. data/ext/gtk2/rbgtkbuilder.c +53 -38
  68. data/ext/gtk2/rbgtkbutton.c +41 -55
  69. data/ext/gtk2/rbgtkcalendar.c +51 -40
  70. data/ext/gtk2/rbgtkcelleditable.c +28 -17
  71. data/ext/gtk2/rbgtkcelllayout.c +41 -30
  72. data/ext/gtk2/rbgtkcellrenderer.c +43 -32
  73. data/ext/gtk2/rbgtkcellrendereraccel.c +26 -18
  74. data/ext/gtk2/rbgtkcellrenderercombo.c +25 -17
  75. data/ext/gtk2/rbgtkcellrendererpixbuf.c +24 -17
  76. data/ext/gtk2/rbgtkcellrendererprogress.c +25 -17
  77. data/ext/gtk2/rbgtkcellrendererspin.c +24 -16
  78. data/ext/gtk2/rbgtkcellrendererspinner.c +23 -11
  79. data/ext/gtk2/rbgtkcellrenderertext.c +28 -21
  80. data/ext/gtk2/rbgtkcellrenderertoggle.c +24 -16
  81. data/ext/gtk2/rbgtkcellview.c +34 -33
  82. data/ext/gtk2/rbgtkcheckbutton.c +28 -16
  83. data/ext/gtk2/rbgtkcheckmenuitem.c +31 -19
  84. data/ext/gtk2/rbgtkclipboard.c +123 -77
  85. data/ext/gtk2/rbgtkcolorbutton.c +26 -31
  86. data/ext/gtk2/rbgtkcolorsel.c +109 -55
  87. data/ext/gtk2/rbgtkcolorselectiondialog.c +28 -19
  88. data/ext/gtk2/rbgtkcombo.c +43 -32
  89. data/ext/gtk2/rbgtkcombobox.c +44 -83
  90. data/ext/gtk2/rbgtkcomboboxentry.c +26 -21
  91. data/ext/gtk2/rbgtkconst.c +23 -13
  92. data/ext/gtk2/rbgtkcontainer.c +153 -100
  93. data/ext/gtk2/rbgtkconversions.h +19 -6
  94. data/ext/gtk2/rbgtkcurve.c +46 -36
  95. data/ext/gtk2/rbgtkdialog.c +104 -70
  96. data/ext/gtk2/rbgtkdrag.c +173 -121
  97. data/ext/gtk2/rbgtkdrawingarea.c +28 -16
  98. data/ext/gtk2/rbgtkeditable.c +63 -51
  99. data/ext/gtk2/rbgtkentry.c +48 -85
  100. data/ext/gtk2/rbgtkentrycompletion.c +42 -55
  101. data/ext/gtk2/rbgtkeventbox.c +28 -16
  102. data/ext/gtk2/rbgtkexpander.c +26 -35
  103. data/ext/gtk2/rbgtkfilechooser.c +87 -143
  104. data/ext/gtk2/rbgtkfilechooserbutton.c +26 -32
  105. data/ext/gtk2/rbgtkfilechooserdialog.c +25 -15
  106. data/ext/gtk2/rbgtkfilechooserwidget.c +26 -15
  107. data/ext/gtk2/rbgtkfilefilter.c +45 -35
  108. data/ext/gtk2/rbgtkfilesel.c +54 -43
  109. data/ext/gtk2/rbgtkfilesystemerror.c +51 -0
  110. data/ext/gtk2/rbgtkfixed.c +36 -25
  111. data/ext/gtk2/rbgtkfontbutton.c +26 -37
  112. data/ext/gtk2/rbgtkfontselection.c +27 -15
  113. data/ext/gtk2/rbgtkfontselectiondialog.c +43 -32
  114. data/ext/gtk2/rbgtkframe.c +39 -28
  115. data/ext/gtk2/rbgtkgamma.c +32 -20
  116. data/ext/gtk2/rbgtkhandlebox.c +31 -19
  117. data/ext/gtk2/rbgtkhbbox.c +28 -16
  118. data/ext/gtk2/rbgtkhbox.c +29 -17
  119. data/ext/gtk2/rbgtkhpaned.c +28 -16
  120. data/ext/gtk2/rbgtkhruler.c +28 -16
  121. data/ext/gtk2/rbgtkhscale.c +28 -16
  122. data/ext/gtk2/rbgtkhscrollbar.c +28 -16
  123. data/ext/gtk2/rbgtkhseparator.c +28 -16
  124. data/ext/gtk2/rbgtkiconfactory.c +35 -23
  125. data/ext/gtk2/rbgtkiconinfo.c +42 -30
  126. data/ext/gtk2/rbgtkiconset.c +31 -19
  127. data/ext/gtk2/rbgtkiconsize.c +38 -25
  128. data/ext/gtk2/rbgtkiconsource.c +62 -50
  129. data/ext/gtk2/rbgtkicontheme.c +95 -95
  130. data/ext/gtk2/rbgtkiconview.c +87 -121
  131. data/ext/gtk2/rbgtkimage.c +31 -40
  132. data/ext/gtk2/rbgtkimagemenuitem.c +26 -14
  133. data/ext/gtk2/rbgtkimcontext.c +46 -34
  134. data/ext/gtk2/rbgtkimcontextsimple.c +47 -24
  135. data/ext/gtk2/rbgtkimmulticontext.c +26 -14
  136. data/ext/gtk2/rbgtkinputdialog.c +28 -16
  137. data/ext/gtk2/rbgtkinvisible.c +24 -18
  138. data/ext/gtk2/rbgtkitem.c +32 -20
  139. data/ext/gtk2/rbgtkitemfactory.c +65 -57
  140. data/ext/gtk2/rbgtklabel.c +46 -57
  141. data/ext/gtk2/rbgtklayout.c +40 -29
  142. data/ext/gtk2/rbgtklinkbutton.c +26 -15
  143. data/ext/gtk2/rbgtkliststore.c +145 -102
  144. data/ext/gtk2/rbgtkmacros.h +19 -6
  145. data/ext/gtk2/rbgtkmenu.c +47 -59
  146. data/ext/gtk2/rbgtkmenubar.c +30 -30
  147. data/ext/gtk2/rbgtkmenuitem.c +34 -41
  148. data/ext/gtk2/rbgtkmenushell.c +43 -42
  149. data/ext/gtk2/rbgtkmenutoolbutton.c +27 -16
  150. data/ext/gtk2/rbgtkmessagedialog.c +31 -25
  151. data/ext/gtk2/rbgtkmisc.c +33 -22
  152. data/ext/gtk2/rbgtknotebook.c +98 -134
  153. data/ext/gtk2/rbgtkobject.c +46 -81
  154. data/ext/gtk2/rbgtkoptionmenu.c +35 -23
  155. data/ext/gtk2/rbgtkpagesetup.c +64 -54
  156. data/ext/gtk2/rbgtkpagesetupunixdialog.c +34 -27
  157. data/ext/gtk2/rbgtkpaned.c +46 -36
  158. data/ext/gtk2/rbgtkpapersize.c +60 -54
  159. data/ext/gtk2/rbgtkplug.c +32 -20
  160. data/ext/gtk2/rbgtkprintcontext.c +43 -35
  161. data/ext/gtk2/rbgtkprinter.c +36 -37
  162. data/ext/gtk2/rbgtkprintjob.c +36 -37
  163. data/ext/gtk2/rbgtkprintoperation.c +44 -33
  164. data/ext/gtk2/rbgtkprintoperationpreview.c +30 -18
  165. data/ext/gtk2/rbgtkprintsettings.c +248 -192
  166. data/ext/gtk2/rbgtkprintunixdialog.c +33 -45
  167. data/ext/gtk2/rbgtkprogress.c +23 -13
  168. data/ext/gtk2/rbgtkprogressbar.c +47 -46
  169. data/ext/gtk2/rbgtkradioaction.c +84 -39
  170. data/ext/gtk2/rbgtkradiobutton.c +33 -21
  171. data/ext/gtk2/rbgtkradiomenuitem.c +86 -45
  172. data/ext/gtk2/rbgtkradiotoolbutton.c +99 -53
  173. data/ext/gtk2/rbgtkrange.c +36 -56
  174. data/ext/gtk2/rbgtkrc.c +61 -49
  175. data/ext/gtk2/rbgtkrcstyle.c +59 -48
  176. data/ext/gtk2/rbgtkrecentaction.c +28 -16
  177. data/ext/gtk2/rbgtkrecentchooser.c +58 -92
  178. data/ext/gtk2/rbgtkrecentchooserdialog.c +29 -18
  179. data/ext/gtk2/rbgtkrecentchoosermenu.c +25 -21
  180. data/ext/gtk2/rbgtkrecentchooserwidget.c +24 -13
  181. data/ext/gtk2/rbgtkrecentdata.c +47 -36
  182. data/ext/gtk2/rbgtkrecentfilter.c +55 -46
  183. data/ext/gtk2/rbgtkrecentfilterinfo.c +51 -40
  184. data/ext/gtk2/rbgtkrecentinfo.c +66 -56
  185. data/ext/gtk2/rbgtkrecentmanager.c +47 -43
  186. data/ext/gtk2/rbgtkruler.c +35 -30
  187. data/ext/gtk2/rbgtkscale.c +29 -18
  188. data/ext/gtk2/rbgtkscalebutton.c +27 -27
  189. data/ext/gtk2/rbgtkscrollbar.c +23 -13
  190. data/ext/gtk2/rbgtkscrolledwindow.c +44 -60
  191. data/ext/gtk2/rbgtkselection.c +87 -67
  192. data/ext/gtk2/rbgtkselectiondata.c +74 -65
  193. data/ext/gtk2/rbgtkseparator.c +23 -13
  194. data/ext/gtk2/rbgtkseparatormenuitem.c +25 -13
  195. data/ext/gtk2/rbgtkseparatortoolitem.c +26 -21
  196. data/ext/gtk2/rbgtksettings.c +123 -103
  197. data/ext/gtk2/rbgtksizegroup.c +33 -30
  198. data/ext/gtk2/rbgtksocket.c +32 -20
  199. data/ext/gtk2/rbgtkspinbutton.c +48 -38
  200. data/ext/gtk2/rbgtkspinner.c +27 -14
  201. data/ext/gtk2/rbgtkstatusbar.c +36 -31
  202. data/ext/gtk2/rbgtkstatusicon.c +31 -44
  203. data/ext/gtk2/rbgtkstock.c +137 -125
  204. data/ext/gtk2/rbgtkstyle.c +177 -161
  205. data/ext/gtk2/rbgtktable.c +58 -47
  206. data/ext/gtk2/rbgtktargetlist.c +56 -36
  207. data/ext/gtk2/rbgtktearoffmenuitem.c +28 -16
  208. data/ext/gtk2/rbgtktextappearance.c +44 -34
  209. data/ext/gtk2/rbgtktextattributes.c +54 -42
  210. data/ext/gtk2/rbgtktextbuffer.c +188 -191
  211. data/ext/gtk2/rbgtktextchild.c +29 -18
  212. data/ext/gtk2/rbgtktextiter.c +153 -145
  213. data/ext/gtk2/rbgtktextmark.c +33 -30
  214. data/ext/gtk2/rbgtktexttag.c +34 -22
  215. data/ext/gtk2/rbgtktexttagtable.c +36 -25
  216. data/ext/gtk2/rbgtktextview.c +85 -73
  217. data/ext/gtk2/rbgtktoggleaction.c +27 -22
  218. data/ext/gtk2/rbgtktogglebutton.c +37 -26
  219. data/ext/gtk2/rbgtktoggletoolbutton.c +26 -20
  220. data/ext/gtk2/rbgtktoolbar.c +66 -69
  221. data/ext/gtk2/rbgtktoolbutton.c +27 -40
  222. data/ext/gtk2/rbgtktoolitem.c +60 -62
  223. data/ext/gtk2/rbgtktooltip.c +36 -25
  224. data/ext/gtk2/rbgtktooltips.c +42 -34
  225. data/ext/gtk2/rbgtktreedragdest.c +20 -11
  226. data/ext/gtk2/rbgtktreedragsource.c +20 -11
  227. data/ext/gtk2/rbgtktreeiter.c +58 -47
  228. data/ext/gtk2/rbgtktreemodel.c +83 -65
  229. data/ext/gtk2/rbgtktreemodelfilter.c +47 -35
  230. data/ext/gtk2/rbgtktreemodelsort.c +38 -27
  231. data/ext/gtk2/rbgtktreepath.c +55 -44
  232. data/ext/gtk2/rbgtktreerowreference.c +60 -42
  233. data/ext/gtk2/rbgtktreeselection.c +61 -52
  234. data/ext/gtk2/rbgtktreesortable.c +52 -42
  235. data/ext/gtk2/rbgtktreestore.c +88 -67
  236. data/ext/gtk2/rbgtktreeview.c +157 -185
  237. data/ext/gtk2/rbgtktreeviewcolumn.c +57 -62
  238. data/ext/gtk2/rbgtkuimanager.c +61 -61
  239. data/ext/gtk2/rbgtkvbbox.c +28 -16
  240. data/ext/gtk2/rbgtkvbox.c +29 -17
  241. data/ext/gtk2/rbgtkviewport.c +28 -16
  242. data/ext/gtk2/rbgtkvolumebutton.c +28 -16
  243. data/ext/gtk2/rbgtkvpaned.c +28 -16
  244. data/ext/gtk2/rbgtkvruler.c +28 -16
  245. data/ext/gtk2/rbgtkvscale.c +28 -16
  246. data/ext/gtk2/rbgtkvscrollbar.c +28 -16
  247. data/ext/gtk2/rbgtkvseparator.c +28 -16
  248. data/ext/gtk2/rbgtkwidget.c +284 -296
  249. data/ext/gtk2/rbgtkwindow.c +156 -214
  250. data/ext/gtk2/rbgtkwindowgroup.c +35 -24
  251. data/sample/testgtk/labels.rb +1 -0
  252. data/sample/testgtk/testgtk.rb +2 -0
  253. metadata +16 -17
  254. data/ChangeLog +0 -6902
  255. data/ext/gtk2/rbgtkmain.c +0 -493
@@ -1,76 +1,117 @@
1
1
  /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
- /************************************************
2
+ /*
3
+ * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
+ * Copyright (C) 2002-2006 Ruby-GNOME2 Project Team
5
+ * Copyright (C) 1998-2000 Yukihiro Matsumoto,
6
+ * Daisuke Kanda,
7
+ * Hiroshi Igarashi,
8
+ * dellin
9
+ *
10
+ * This library is free software; you can redistribute it and/or
11
+ * modify it under the terms of the GNU Lesser General Public
12
+ * License as published by the Free Software Foundation; either
13
+ * version 2.1 of the License, or (at your option) any later version.
14
+ *
15
+ * This library is distributed in the hope that it will be useful,
16
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18
+ * Lesser General Public License for more details.
19
+ *
20
+ * You should have received a copy of the GNU Lesser General Public
21
+ * License along with this library; if not, write to the Free Software
22
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
23
+ * MA 02110-1301 USA
24
+ */
3
25
 
4
- rbgtkradiomenuitem.c -
5
-
6
- $Author: ggc $
7
- $Date: 2007/07/13 16:07:31 $
26
+ #include "global.h"
8
27
 
9
- Copyright (C) 2002-2006 Ruby-GNOME2 Project Team
10
- Copyright (C) 1998-2000 Yukihiro Matsumoto,
11
- Daisuke Kanda,
12
- Hiroshi Igarashi,
13
- dellin
14
- ************************************************/
28
+ #define RG_TARGET_NAMESPACE cRadioMenuItem
15
29
 
16
- #include "global.h"
30
+ struct rbgtk_rval2gtkradiomenuitemgslist_args {
31
+ VALUE ary;
32
+ long n;
33
+ GSList *result;
34
+ };
17
35
 
18
- static GSList*
19
- ary2gslist(VALUE ary)
36
+ static VALUE
37
+ rbgtk_rval2gtkradiomenuitemgslist_body(VALUE value)
20
38
  {
21
39
  long i;
22
- GSList *glist = NULL;
40
+ struct rbgtk_rval2gtkradiomenuitemgslist_args *args = (struct rbgtk_rval2gtkradiomenuitemgslist_args *)value;
23
41
 
24
- if (NIL_P(ary)) return NULL;
25
- Check_Type(ary, T_ARRAY);
26
- for (i=0; i<RARRAY_LEN(ary); i++) {
27
- glist = g_slist_append(glist,RVAL2GOBJ(RARRAY_PTR(ary)[i]));
28
- }
42
+ for (i = 0; i < args->n; i++)
43
+ args->result = g_slist_append(args->result, GTK_RADIO_MENU_ITEM(RVAL2GOBJ(RARRAY_PTR(args->ary)[i])));
44
+
45
+ return Qnil;
46
+ }
47
+
48
+ static G_GNUC_NORETURN VALUE
49
+ rbgtk_rval2gtkradiomenuitemgslist_rescue(VALUE value)
50
+ {
51
+ g_slist_free(((struct rbgtk_rval2gtkradiomenuitemgslist_args *)value)->result);
52
+
53
+ rb_exc_raise(rb_errinfo());
54
+ }
55
+
56
+ static GSList *
57
+ rbgtk_rval2gtkradiomenuitemgslist(VALUE value)
58
+ {
59
+ struct rbgtk_rval2gtkradiomenuitemgslist_args args;
60
+
61
+ args.ary = rb_ary_to_ary(value);
62
+ args.n = RARRAY_LEN(args.ary);
63
+ args.result = NULL;
29
64
 
30
- return glist;
65
+ rb_rescue(rbgtk_rval2gtkradiomenuitemgslist_body, (VALUE)&args,
66
+ rbgtk_rval2gtkradiomenuitemgslist_rescue, (VALUE)&args);
67
+
68
+ return args.result;
31
69
  }
32
70
 
71
+ #define RVAL2GTKRADIOMENUITEMGSLIST(value) rbgtk_rval2gtkradiomenuitemgslist(value)
72
+
33
73
  static VALUE
34
- rmitem_initialize(int argc, VALUE *argv, VALUE self)
74
+ rg_initialize(int argc, VALUE *argv, VALUE self)
35
75
  {
36
76
  VALUE arg1, arg2, arg3;
37
77
  GtkWidget *widget;
38
78
  GSList *list = NULL;
39
79
  const gchar *label = NULL;
40
80
  const gchar *mnemonic = NULL;
41
-
81
+
42
82
  if (rb_scan_args(argc, argv, "03", &arg1, &arg2, &arg3) > 0 &&
43
83
  TYPE(arg1) == T_STRING) {
44
- if (NIL_P(arg2) || RVAL2CBOOL(arg2)){
84
+ if (NIL_P(arg2) || RVAL2CBOOL(arg2))
45
85
  mnemonic = RVAL2CSTR(arg1);
46
- } else {
86
+ else
47
87
  label = RVAL2CSTR(arg1);
48
- }
49
88
  } else {
50
89
  if (!NIL_P(arg2)) {
51
- if (NIL_P(arg3) || RVAL2CBOOL(arg3)){
90
+ if (NIL_P(arg3) || RVAL2CBOOL(arg3))
52
91
  mnemonic = RVAL2CSTR(arg2);
53
- } else {
92
+ else
54
93
  label = RVAL2CSTR(arg2);
55
- }
56
94
  }
57
- if (rb_obj_is_kind_of(arg1, GTYPE2CLASS(GTK_TYPE_RADIO_MENU_ITEM))){
58
- list = GTK_RADIO_MENU_ITEM(RVAL2GOBJ(arg1))->group;
59
- } else if (TYPE(arg1) == T_ARRAY){
60
- list = ary2gslist(arg1);
61
- } else if (! NIL_P(arg1)){
95
+
96
+ if (rb_obj_is_kind_of(arg1, GTYPE2CLASS(GTK_TYPE_RADIO_MENU_ITEM)))
97
+ list = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(RVAL2GOBJ(arg1)));
98
+ else if (TYPE(arg1) == T_ARRAY)
99
+ /* TODO: This might leak. */
100
+ list = RVAL2GTKRADIOMENUITEMGSLIST(arg1);
101
+ else if (!NIL_P(arg1))
62
102
  rb_raise(rb_eArgError, "invalid argument %s (expect Array or Gtk::RadioMenuItem)",
63
- rb_class2name(CLASS_OF(label)));
64
- }
103
+ rb_class2name(CLASS_OF(arg1)));
65
104
  }
66
- if (label) {
105
+
106
+ if (label != NULL)
67
107
  widget = gtk_radio_menu_item_new_with_label(list, label);
68
- } else if (mnemonic){
108
+ else if (mnemonic != NULL)
69
109
  widget = gtk_radio_menu_item_new_with_mnemonic(list, mnemonic);
70
- } else {
110
+ else
71
111
  widget = gtk_radio_menu_item_new(list);
72
- }
112
+
73
113
  RBGTK_INITIALIZE(self, widget);
114
+
74
115
  return Qnil;
75
116
  }
76
117
 
@@ -97,11 +138,11 @@ rmitem_set_group(VALUE self, VALUE grp_ary)
97
138
  }
98
139
 
99
140
  void
100
- Init_gtk_radio_menu_item()
141
+ Init_gtk_radio_menu_item(VALUE mGtk)
101
142
  {
102
- VALUE gRMenuItem = G_DEF_CLASS(GTK_TYPE_RADIO_MENU_ITEM, "RadioMenuItem", mGtk);
143
+ VALUE RG_TARGET_NAMESPACE = G_DEF_CLASS(GTK_TYPE_RADIO_MENU_ITEM, "RadioMenuItem", mGtk);
103
144
 
104
- rb_define_method(gRMenuItem, "initialize", rmitem_initialize, -1);
105
- G_REPLACE_GET_PROPERTY(gRMenuItem, "group", rmitem_get_group, 0);
106
- G_REPLACE_SET_PROPERTY(gRMenuItem, "group", rmitem_set_group, 1);
145
+ RG_DEF_METHOD(initialize, -1);
146
+ G_REPLACE_GET_PROPERTY(RG_TARGET_NAMESPACE, "group", rmitem_get_group, 0);
147
+ G_REPLACE_SET_PROPERTY(RG_TARGET_NAMESPACE, "group", rmitem_set_group, 1);
107
148
  }
@@ -1,55 +1,104 @@
1
1
  /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
- /************************************************
3
-
4
- rbgtkradiotoolbutton.c -
5
-
6
- $Author: mutoh $
7
- $Date: 2006/06/17 06:59:32 $
8
-
9
- Copyright (C) 2004-2006 Masao Mutoh
10
- ************************************************/
2
+ /*
3
+ * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
+ * Copyright (C) 2004-2006 Masao Mutoh
5
+ *
6
+ * This library is free software; you can redistribute it and/or
7
+ * modify it under the terms of the GNU Lesser General Public
8
+ * License as published by the Free Software Foundation; either
9
+ * version 2.1 of the License, or (at your option) any later version.
10
+ *
11
+ * This library is distributed in the hope that it will be useful,
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
+ * Lesser General Public License for more details.
15
+ *
16
+ * You should have received a copy of the GNU Lesser General Public
17
+ * License along with this library; if not, write to the Free Software
18
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
+ * MA 02110-1301 USA
20
+ */
11
21
 
12
22
  #include "global.h"
13
-
23
+
14
24
  #if GTK_CHECK_VERSION(2,4,0)
15
25
 
26
+ #define RG_TARGET_NAMESPACE cRadioToolButton
16
27
  #define _SELF(self) (GTK_RADIO_TOOL_BUTTON(RVAL2GOBJ(self)))
17
28
 
18
- static VALUE gRToolButton;
29
+ static VALUE RG_TARGET_NAMESPACE;
30
+
31
+ struct rbgtk_rval2gtkradiotoolbuttongslist_args {
32
+ VALUE ary;
33
+ long n;
34
+ GSList *result;
35
+ };
19
36
 
20
37
  static VALUE
21
- rbtn_initialize(int argc, VALUE *argv, VALUE self)
38
+ rbgtk_rval2gtkradiotoolbuttongslist_body(VALUE value)
39
+ {
40
+ long i;
41
+ struct rbgtk_rval2gtkradiotoolbuttongslist_args *args = (struct rbgtk_rval2gtkradiotoolbuttongslist_args *)value;
42
+
43
+ for (i = 0; i < args->n; i++)
44
+ args->result = g_slist_append(args->result, GTK_RADIO_MENU_ITEM(RVAL2GOBJ(RARRAY_PTR(args->ary)[i])));
45
+
46
+ return Qnil;
47
+ }
48
+
49
+ static G_GNUC_NORETURN VALUE
50
+ rbgtk_rval2gtkradiotoolbuttongslist_rescue(VALUE value)
51
+ {
52
+ g_slist_free(((struct rbgtk_rval2gtkradiotoolbuttongslist_args *)value)->result);
53
+
54
+ rb_exc_raise(rb_errinfo());
55
+ }
56
+
57
+ static GSList *
58
+ rbgtk_rval2gtkradiotoolbuttongslist(VALUE value)
22
59
  {
23
- VALUE group_or_stock_id, stock_id;
60
+ struct rbgtk_rval2gtkradiotoolbuttongslist_args args;
61
+
62
+ args.ary = rb_ary_to_ary(value);
63
+ args.n = RARRAY_LEN(args.ary);
64
+ args.result = NULL;
65
+
66
+ rb_rescue(rbgtk_rval2gtkradiotoolbuttongslist_body, (VALUE)&args,
67
+ rbgtk_rval2gtkradiotoolbuttongslist_rescue, (VALUE)&args);
68
+
69
+ return args.result;
70
+ }
71
+
72
+ #define RVAL2GTKRADIOTOOLBUTTONGSLIST(value) rbgtk_rval2gtkradiotoolbuttongslist(value)
73
+
74
+ static VALUE
75
+ rg_initialize(int argc, VALUE *argv, VALUE self)
76
+ {
77
+ VALUE group_or_stock_id, rbstock_id;
24
78
  GtkToolItem *widget;
25
79
 
26
- if (rb_scan_args(argc, argv, "02", &group_or_stock_id, &stock_id) > 0) {
27
- GSList* list = NULL;
28
- if (TYPE(group_or_stock_id) == T_ARRAY){
29
- int i;
30
- Check_Type(group_or_stock_id, T_ARRAY);
31
- for (i = 0; i < RARRAY_LEN(group_or_stock_id); i++) {
32
- list = g_slist_append(list, RVAL2GOBJ(RARRAY_PTR(group_or_stock_id)[i]));
33
- }
34
- } else if (rb_obj_is_kind_of(group_or_stock_id, gRToolButton)){
35
- list = gtk_radio_tool_button_get_group(_SELF(group_or_stock_id));
36
- } else {
37
- list = NULL;
38
- }
39
- if (NIL_P(stock_id)){
40
- widget = gtk_radio_tool_button_new(list);
41
- } else {
42
- if (TYPE(stock_id) == T_SYMBOL){
43
- widget = gtk_radio_tool_button_new_from_stock(list, rb_id2name(SYM2ID(stock_id)));
44
- } else {
45
- widget = gtk_radio_tool_button_new_from_stock(list, RVAL2CSTR(stock_id));
46
- }
47
- }
80
+ if (rb_scan_args(argc, argv, "02", &group_or_stock_id, &rbstock_id) > 0) {
81
+ GSList *group = NULL;
82
+ const gchar *stock_id = TYPE(rbstock_id) == T_SYMBOL ?
83
+ rb_id2name(SYM2ID(rbstock_id)) :
84
+ RVAL2CSTR_ACCEPT_NIL(rbstock_id);
85
+
86
+ if (TYPE(group_or_stock_id) == T_ARRAY)
87
+ /* TODO: This has a potential for leaking. */
88
+ group = RVAL2GTKRADIOTOOLBUTTONGSLIST(group_or_stock_id);
89
+ else if (rb_obj_is_kind_of(group_or_stock_id, RG_TARGET_NAMESPACE))
90
+ group = gtk_radio_tool_button_get_group(_SELF(group_or_stock_id));
91
+
92
+ if (stock_id == NULL)
93
+ widget = gtk_radio_tool_button_new(group);
94
+ else
95
+ widget = gtk_radio_tool_button_new_from_stock(group, stock_id);
48
96
  } else {
49
97
  widget = gtk_radio_tool_button_new(NULL);
50
98
  }
51
-
99
+
52
100
  RBGTK_INITIALIZE(self, widget);
101
+
53
102
  return Qnil;
54
103
  }
55
104
 
@@ -61,32 +110,29 @@ rbtn_get_group(VALUE self)
61
110
  }
62
111
 
63
112
  static VALUE
64
- rbtn_set_group(VALUE self, VALUE group)
113
+ rbtn_set_group(VALUE self, VALUE rbgroup)
65
114
  {
66
- GSList* list = NULL;
67
- if (TYPE(group) == T_ARRAY){
68
- int i;
69
- for (i = 0; i < RARRAY_LEN(group); i++){
70
- list = g_slist_append(list, RVAL2GOBJ(RARRAY_PTR(group)[i]));
71
- }
72
- } else {
73
- list = gtk_radio_tool_button_get_group(_SELF(group));
74
- }
75
- gtk_radio_tool_button_set_group(_SELF(self), list);
76
-
115
+ GtkRadioToolButton *button = _SELF(self);
116
+ GSList *group = TYPE(rbgroup) == T_ARRAY ?
117
+ /* TODO: This might leak. */
118
+ RVAL2GTKRADIOTOOLBUTTONGSLIST(rbgroup) :
119
+ gtk_radio_tool_button_get_group(_SELF(rbgroup));
120
+
121
+ gtk_radio_tool_button_set_group(button, group);
122
+
77
123
  return self;
78
124
  }
79
125
 
80
126
  #endif
81
127
 
82
128
  void
83
- Init_gtk_radiotoolbutton()
129
+ Init_gtk_radiotoolbutton(VALUE mGtk)
84
130
  {
85
131
  #if GTK_CHECK_VERSION(2,4,0)
86
- gRToolButton = G_DEF_CLASS(GTK_TYPE_RADIO_TOOL_BUTTON, "RadioToolButton", mGtk);
132
+ RG_TARGET_NAMESPACE = G_DEF_CLASS(GTK_TYPE_RADIO_TOOL_BUTTON, "RadioToolButton", mGtk);
87
133
 
88
- rb_define_method(gRToolButton, "initialize", rbtn_initialize, -1);
89
- G_REPLACE_GET_PROPERTY(gRToolButton, "group", rbtn_get_group, 0);
90
- G_REPLACE_SET_PROPERTY(gRToolButton, "group", rbtn_set_group, 1);
134
+ RG_DEF_METHOD(initialize, -1);
135
+ G_REPLACE_GET_PROPERTY(RG_TARGET_NAMESPACE, "group", rbtn_get_group, 0);
136
+ G_REPLACE_SET_PROPERTY(RG_TARGET_NAMESPACE, "group", rbtn_set_group, 1);
91
137
  #endif
92
138
  }
@@ -1,93 +1,73 @@
1
1
  /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
- /************************************************
3
-
4
- rbgtkrange.c -
5
-
6
- $Author: ktou $
7
- $Date: 2006/11/13 12:53:21 $
8
-
9
- Copyright (C) 2002-2006 Ruby-GNOME2 Project Team
10
- Copyright (C) 1998-2000 Yukihiro Matsumoto,
11
- Daisuke Kanda,
12
- Hiroshi Igarashi
13
- ************************************************/
2
+ /*
3
+ * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
+ * Copyright (C) 2002-2006 Ruby-GNOME2 Project Team
5
+ * Copyright (C) 1998-2000 Yukihiro Matsumoto,
6
+ * Daisuke Kanda,
7
+ * Hiroshi Igarashi
8
+ *
9
+ * This library is free software; you can redistribute it and/or
10
+ * modify it under the terms of the GNU Lesser General Public
11
+ * License as published by the Free Software Foundation; either
12
+ * version 2.1 of the License, or (at your option) any later version.
13
+ *
14
+ * This library is distributed in the hope that it will be useful,
15
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
+ * Lesser General Public License for more details.
18
+ *
19
+ * You should have received a copy of the GNU Lesser General Public
20
+ * License along with this library; if not, write to the Free Software
21
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
22
+ * MA 02110-1301 USA
23
+ */
14
24
 
15
25
  #include "global.h"
16
26
 
27
+ #define RG_TARGET_NAMESPACE cRange
17
28
  #define _SELF(self) (GTK_RANGE(RVAL2GOBJ(self)))
18
29
 
19
- /* Defined as Properties
20
- GtkAdjustment* gtk_range_get_adjustment (GtkRange *range);
21
- void gtk_range_set_adjustment (GtkRange *range,
22
- GtkAdjustment *adjustment);
23
- void gtk_range_set_update_policy (GtkRange *range,
24
- GtkUpdateType policy);
25
- GtkUpdateType gtk_range_get_update_policy (GtkRange *range);
26
- gboolean gtk_range_get_inverted (GtkRange *range);
27
- void gtk_range_set_inverted (GtkRange *range,
28
- gboolean setting);
29
- void gtk_range_set_upper_stepper_sensitivity
30
- (GtkRange *range,
31
- GtkSensitivityType sensitivity);
32
- GtkSensitivityType gtk_range_get_upper_stepper_sensitivity
33
- (GtkRange *range);
34
- void gtk_range_set_lower_stepper_sensitivity
35
- (GtkRange *range,
36
- GtkSensitivityType sensitivity);
37
- GtkSensitivityType gtk_range_get_lower_stepper_sensitivity
38
- (GtkRange *range);
39
- void gtk_range_set_show_fill_level (GtkRange *range,
40
- gboolean show_fill_level);
41
- gboolean gtk_range_get_show_fill_level (GtkRange *range);
42
- void gtk_range_set_restrict_to_fill_level (GtkRange *range,
43
- gboolean restrict_to_fill_level);
44
- gboolean gtk_range_get_restrict_to_fill_level (GtkRange *range);
45
- void gtk_range_set_fill_level (GtkRange *range,
46
- gdouble fill_level);
47
- gdouble gtk_range_get_fill_level (GtkRange *range);
48
- */
49
-
50
30
  static VALUE
51
- range_get_value(VALUE self)
31
+ rg_value(VALUE self)
52
32
  {
53
33
  return rb_float_new(gtk_range_get_value(_SELF(self)));
54
34
  }
55
35
 
56
36
  static VALUE
57
- range_set_increments(VALUE self, VALUE step, VALUE page)
37
+ rg_set_increments(VALUE self, VALUE step, VALUE page)
58
38
  {
59
39
  gtk_range_set_increments(_SELF(self), NUM2DBL(step), NUM2DBL(page));
60
40
  return self;
61
41
  }
62
42
 
63
43
  static VALUE
64
- range_set_range(VALUE self, VALUE min, VALUE max)
44
+ rg_set_range(VALUE self, VALUE min, VALUE max)
65
45
  {
66
46
  gtk_range_set_range(_SELF(self), NUM2DBL(min), NUM2DBL(max));
67
47
  return self;
68
48
  }
69
49
 
70
50
  static VALUE
71
- range_set_value(VALUE self, VALUE value)
51
+ rg_set_value(VALUE self, VALUE value)
72
52
  {
73
53
  gtk_range_set_value(_SELF(self), NUM2DBL(value));
74
54
  return self;
75
55
  }
76
56
 
77
57
  void
78
- Init_gtk_range()
58
+ Init_gtk_range(VALUE mGtk)
79
59
  {
80
- VALUE gRange = G_DEF_CLASS(GTK_TYPE_RANGE, "Range", mGtk);
60
+ VALUE RG_TARGET_NAMESPACE = G_DEF_CLASS(GTK_TYPE_RANGE, "Range", mGtk);
81
61
 
82
- rb_define_method(gRange, "value", range_get_value, 0);
83
- rb_define_method(gRange, "set_increments", range_set_increments, 2);
84
- rb_define_method(gRange, "set_range", range_set_range, 2);
85
- rb_define_method(gRange, "set_value", range_set_value, 1);
86
- G_DEF_SETTER(gRange, "value");
62
+ RG_DEF_METHOD(value, 0);
63
+ RG_DEF_METHOD(set_increments, 2);
64
+ RG_DEF_METHOD(set_range, 2);
65
+ RG_DEF_METHOD(set_value, 1);
66
+ G_DEF_SETTER(RG_TARGET_NAMESPACE, "value");
87
67
 
88
68
  #if GTK_CHECK_VERSION(2,10,0)
89
69
  /* GtkSensitivityType */
90
- G_DEF_CLASS(GTK_TYPE_SENSITIVITY_TYPE, "SensitivityType", gRange);
91
- G_DEF_CONSTANTS(gRange, GTK_TYPE_SENSITIVITY_TYPE, "GTK_");
70
+ G_DEF_CLASS(GTK_TYPE_SENSITIVITY_TYPE, "SensitivityType", RG_TARGET_NAMESPACE);
71
+ G_DEF_CONSTANTS(RG_TARGET_NAMESPACE, GTK_TYPE_SENSITIVITY_TYPE, "GTK_");
92
72
  #endif
93
73
  }