gtk2 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. data/ChangeLog +6664 -0
  2. data/README +33 -0
  3. data/Rakefile +71 -0
  4. data/extconf.rb +116 -0
  5. data/src/global.h +33 -0
  6. data/src/init.c +39 -0
  7. data/src/lib/gtk2.rb +13 -0
  8. data/src/lib/gtk2/base.rb +95 -0
  9. data/src/makeinits.rb +57 -0
  10. data/src/makekeysyms.rb +5 -0
  11. data/src/rbgdk.c +395 -0
  12. data/src/rbgdk.h +50 -0
  13. data/src/rbgdkatom.c +122 -0
  14. data/src/rbgdkcairo.c +100 -0
  15. data/src/rbgdkcolor.c +151 -0
  16. data/src/rbgdkcolormap.c +142 -0
  17. data/src/rbgdkconst.c +29 -0
  18. data/src/rbgdkconversions.h +18 -0
  19. data/src/rbgdkcursor.c +115 -0
  20. data/src/rbgdkdevice.c +235 -0
  21. data/src/rbgdkdisplay.c +634 -0
  22. data/src/rbgdkdisplaymanager.c +50 -0
  23. data/src/rbgdkdragcontext.c +280 -0
  24. data/src/rbgdkdraw.c +487 -0
  25. data/src/rbgdkevent.c +1020 -0
  26. data/src/rbgdkgc.c +456 -0
  27. data/src/rbgdkgeometry.c +272 -0
  28. data/src/rbgdkimage.c +155 -0
  29. data/src/rbgdkinput.c +70 -0
  30. data/src/rbgdkkeymap.c +153 -0
  31. data/src/rbgdkkeysyms.h +2174 -0
  32. data/src/rbgdkkeyval.c +105 -0
  33. data/src/rbgdkpango.c +171 -0
  34. data/src/rbgdkpangorenderer.c +132 -0
  35. data/src/rbgdkpixbuf.c +178 -0
  36. data/src/rbgdkpixmap.c +255 -0
  37. data/src/rbgdkproperty.c +342 -0
  38. data/src/rbgdkrectangle.c +146 -0
  39. data/src/rbgdkregion.c +242 -0
  40. data/src/rbgdkrgb.c +197 -0
  41. data/src/rbgdkscreen.c +535 -0
  42. data/src/rbgdkselection.c +161 -0
  43. data/src/rbgdkthreads.c +68 -0
  44. data/src/rbgdktimecoord.c +118 -0
  45. data/src/rbgdkvisual.c +273 -0
  46. data/src/rbgdkwindow.c +1302 -0
  47. data/src/rbgdkwindowattr.c +213 -0
  48. data/src/rbgdkx11.c +256 -0
  49. data/src/rbgtk.c +93 -0
  50. data/src/rbgtk.h +121 -0
  51. data/src/rbgtkaboutdialog.c +195 -0
  52. data/src/rbgtkaccelerator.c +78 -0
  53. data/src/rbgtkaccelgroup.c +216 -0
  54. data/src/rbgtkaccelgroupentry.c +85 -0
  55. data/src/rbgtkaccelkey.c +116 -0
  56. data/src/rbgtkaccellabel.c +46 -0
  57. data/src/rbgtkaccelmap.c +162 -0
  58. data/src/rbgtkaccessible.c +29 -0
  59. data/src/rbgtkaction.c +277 -0
  60. data/src/rbgtkactiongroup.c +377 -0
  61. data/src/rbgtkadjustment.c +153 -0
  62. data/src/rbgtkalignment.c +71 -0
  63. data/src/rbgtkallocation.c +171 -0
  64. data/src/rbgtkarrow.c +47 -0
  65. data/src/rbgtkaspectframe.c +46 -0
  66. data/src/rbgtkassistant.c +230 -0
  67. data/src/rbgtkbbox.c +47 -0
  68. data/src/rbgtkbin.c +31 -0
  69. data/src/rbgtkbindingset.c +192 -0
  70. data/src/rbgtkborder.c +80 -0
  71. data/src/rbgtkbox.c +142 -0
  72. data/src/rbgtkbuildable.c +115 -0
  73. data/src/rbgtkbuilder.c +154 -0
  74. data/src/rbgtkbutton.c +151 -0
  75. data/src/rbgtkcalendar.c +159 -0
  76. data/src/rbgtkcelleditable.c +49 -0
  77. data/src/rbgtkcelllayout.c +144 -0
  78. data/src/rbgtkcellrenderer.c +139 -0
  79. data/src/rbgtkcellrendereraccel.c +42 -0
  80. data/src/rbgtkcellrenderercombo.c +37 -0
  81. data/src/rbgtkcellrendererpixbuf.c +33 -0
  82. data/src/rbgtkcellrendererprogress.c +37 -0
  83. data/src/rbgtkcellrendererspin.c +38 -0
  84. data/src/rbgtkcellrenderertext.c +45 -0
  85. data/src/rbgtkcellrenderertoggle.c +32 -0
  86. data/src/rbgtkcellview.c +134 -0
  87. data/src/rbgtkcheckbutton.c +55 -0
  88. data/src/rbgtkcheckmenuitem.c +56 -0
  89. data/src/rbgtkclipboard.c +473 -0
  90. data/src/rbgtkcolorbutton.c +63 -0
  91. data/src/rbgtkcolorsel.c +175 -0
  92. data/src/rbgtkcolorselectiondialog.c +72 -0
  93. data/src/rbgtkcombo.c +117 -0
  94. data/src/rbgtkcombobox.c +240 -0
  95. data/src/rbgtkcomboboxentry.c +60 -0
  96. data/src/rbgtkconst.c +163 -0
  97. data/src/rbgtkcontainer.c +776 -0
  98. data/src/rbgtkconversions.h +26 -0
  99. data/src/rbgtkcurve.c +105 -0
  100. data/src/rbgtkdialog.c +244 -0
  101. data/src/rbgtkdrag.c +436 -0
  102. data/src/rbgtkdrawingarea.c +31 -0
  103. data/src/rbgtkeditable.c +152 -0
  104. data/src/rbgtkentry.c +161 -0
  105. data/src/rbgtkentrycompletion.c +167 -0
  106. data/src/rbgtkeventbox.c +31 -0
  107. data/src/rbgtkexpander.c +67 -0
  108. data/src/rbgtkfilechooser.c +403 -0
  109. data/src/rbgtkfilechooserbutton.c +72 -0
  110. data/src/rbgtkfilechooserdialog.c +58 -0
  111. data/src/rbgtkfilechooserwidget.c +50 -0
  112. data/src/rbgtkfilefilter.c +139 -0
  113. data/src/rbgtkfilesel.c +155 -0
  114. data/src/rbgtkfixed.c +72 -0
  115. data/src/rbgtkfontbutton.c +69 -0
  116. data/src/rbgtkfontselection.c +30 -0
  117. data/src/rbgtkfontselectiondialog.c +106 -0
  118. data/src/rbgtkframe.c +64 -0
  119. data/src/rbgtkgamma.c +47 -0
  120. data/src/rbgtkhandlebox.c +42 -0
  121. data/src/rbgtkhbbox.c +31 -0
  122. data/src/rbgtkhbox.c +38 -0
  123. data/src/rbgtkhpaned.c +31 -0
  124. data/src/rbgtkhruler.c +31 -0
  125. data/src/rbgtkhscale.c +45 -0
  126. data/src/rbgtkhscrollbar.c +38 -0
  127. data/src/rbgtkhseparator.c +30 -0
  128. data/src/rbgtkiconfactory.c +80 -0
  129. data/src/rbgtkiconinfo.c +118 -0
  130. data/src/rbgtkiconset.c +87 -0
  131. data/src/rbgtkiconsize.c +90 -0
  132. data/src/rbgtkiconsource.c +176 -0
  133. data/src/rbgtkicontheme.c +309 -0
  134. data/src/rbgtkiconview.c +351 -0
  135. data/src/rbgtkimage.c +152 -0
  136. data/src/rbgtkimagemenuitem.c +52 -0
  137. data/src/rbgtkimcontext.c +134 -0
  138. data/src/rbgtkimcontextsimple.c +48 -0
  139. data/src/rbgtkimmulticontext.c +38 -0
  140. data/src/rbgtkinits.c +473 -0
  141. data/src/rbgtkinputdialog.c +30 -0
  142. data/src/rbgtkinvisible.c +68 -0
  143. data/src/rbgtkitem.c +51 -0
  144. data/src/rbgtkitemfactory.c +312 -0
  145. data/src/rbgtklabel.c +168 -0
  146. data/src/rbgtklayout.c +91 -0
  147. data/src/rbgtklinkbutton.c +68 -0
  148. data/src/rbgtkliststore.c +412 -0
  149. data/src/rbgtkmacros.h +26 -0
  150. data/src/rbgtkmain.c +532 -0
  151. data/src/rbgtkmenu.c +272 -0
  152. data/src/rbgtkmenubar.c +48 -0
  153. data/src/rbgtkmenuitem.c +171 -0
  154. data/src/rbgtkmenushell.c +128 -0
  155. data/src/rbgtkmenutoolbutton.c +74 -0
  156. data/src/rbgtkmessagedialog.c +102 -0
  157. data/src/rbgtkmisc.c +63 -0
  158. data/src/rbgtknotebook.c +484 -0
  159. data/src/rbgtkobject.c +186 -0
  160. data/src/rbgtkoptionmenu.c +65 -0
  161. data/src/rbgtkpagesetup.c +196 -0
  162. data/src/rbgtkpagesetupunixdialog.c +80 -0
  163. data/src/rbgtkpaned.c +114 -0
  164. data/src/rbgtkpapersize.c +186 -0
  165. data/src/rbgtkplug.c +84 -0
  166. data/src/rbgtkprintcontext.c +124 -0
  167. data/src/rbgtkprinter.c +155 -0
  168. data/src/rbgtkprintjob.c +151 -0
  169. data/src/rbgtkprintoperation.c +152 -0
  170. data/src/rbgtkprintoperationpreview.c +54 -0
  171. data/src/rbgtkprintsettings.c +794 -0
  172. data/src/rbgtkprintunixdialog.c +98 -0
  173. data/src/rbgtkprogress.c +21 -0
  174. data/src/rbgtkprogressbar.c +72 -0
  175. data/src/rbgtkradioaction.c +102 -0
  176. data/src/rbgtkradiobutton.c +83 -0
  177. data/src/rbgtkradiomenuitem.c +115 -0
  178. data/src/rbgtkradiotoolbutton.c +99 -0
  179. data/src/rbgtkrange.c +98 -0
  180. data/src/rbgtkrc.c +228 -0
  181. data/src/rbgtkrcstyle.c +184 -0
  182. data/src/rbgtkrecentaction.c +52 -0
  183. data/src/rbgtkrecentchooser.c +276 -0
  184. data/src/rbgtkrecentchooserdialog.c +59 -0
  185. data/src/rbgtkrecentchoosermenu.c +55 -0
  186. data/src/rbgtkrecentchooserwidget.c +45 -0
  187. data/src/rbgtkrecentdata.c +152 -0
  188. data/src/rbgtkrecentfilter.c +180 -0
  189. data/src/rbgtkrecentfilterinfo.c +197 -0
  190. data/src/rbgtkrecentinfo.c +232 -0
  191. data/src/rbgtkrecentmanager.c +164 -0
  192. data/src/rbgtkruler.c +82 -0
  193. data/src/rbgtkscale.c +47 -0
  194. data/src/rbgtkscalebutton.c +115 -0
  195. data/src/rbgtkscrollbar.c +21 -0
  196. data/src/rbgtkscrolledwindow.c +160 -0
  197. data/src/rbgtkselection.c +171 -0
  198. data/src/rbgtkselectiondata.c +333 -0
  199. data/src/rbgtkseparator.c +21 -0
  200. data/src/rbgtkseparatormenuitem.c +28 -0
  201. data/src/rbgtkseparatortoolitem.c +40 -0
  202. data/src/rbgtksettings.c +225 -0
  203. data/src/rbgtksizegroup.c +74 -0
  204. data/src/rbgtksocket.c +72 -0
  205. data/src/rbgtkspinbutton.c +138 -0
  206. data/src/rbgtkstatusbar.c +90 -0
  207. data/src/rbgtkstatusicon.c +120 -0
  208. data/src/rbgtkstock.c +264 -0
  209. data/src/rbgtkstyle.c +722 -0
  210. data/src/rbgtktable.c +190 -0
  211. data/src/rbgtktargetlist.c +148 -0
  212. data/src/rbgtktearoffmenuitem.c +30 -0
  213. data/src/rbgtktextappearance.c +173 -0
  214. data/src/rbgtktextattributes.c +209 -0
  215. data/src/rbgtktextbuffer.c +993 -0
  216. data/src/rbgtktextchild.c +49 -0
  217. data/src/rbgtktextiter.c +553 -0
  218. data/src/rbgtktextmark.c +87 -0
  219. data/src/rbgtktexttag.c +66 -0
  220. data/src/rbgtktexttagtable.c +94 -0
  221. data/src/rbgtktextview.c +351 -0
  222. data/src/rbgtktoggleaction.c +76 -0
  223. data/src/rbgtktogglebutton.c +84 -0
  224. data/src/rbgtktoggletoolbutton.c +70 -0
  225. data/src/rbgtktoolbar.c +373 -0
  226. data/src/rbgtktoolbutton.c +75 -0
  227. data/src/rbgtktoolitem.c +184 -0
  228. data/src/rbgtktooltip.c +76 -0
  229. data/src/rbgtktooltips.c +107 -0
  230. data/src/rbgtktreedragdest.c +19 -0
  231. data/src/rbgtktreedragsource.c +19 -0
  232. data/src/rbgtktreeiter.c +259 -0
  233. data/src/rbgtktreemodel.c +256 -0
  234. data/src/rbgtktreemodelfilter.c +214 -0
  235. data/src/rbgtktreemodelsort.c +113 -0
  236. data/src/rbgtktreepath.c +195 -0
  237. data/src/rbgtktreerowreference.c +168 -0
  238. data/src/rbgtktreeselection.c +235 -0
  239. data/src/rbgtktreesortable.c +127 -0
  240. data/src/rbgtktreestore.c +379 -0
  241. data/src/rbgtktreeview.c +881 -0
  242. data/src/rbgtktreeviewcolumn.c +331 -0
  243. data/src/rbgtkuimanager.c +210 -0
  244. data/src/rbgtkvbbox.c +31 -0
  245. data/src/rbgtkvbox.c +38 -0
  246. data/src/rbgtkviewport.c +33 -0
  247. data/src/rbgtkvolumebutton.c +36 -0
  248. data/src/rbgtkvpaned.c +31 -0
  249. data/src/rbgtkvruler.c +30 -0
  250. data/src/rbgtkvscale.c +45 -0
  251. data/src/rbgtkvscrollbar.c +38 -0
  252. data/src/rbgtkvseparator.c +30 -0
  253. data/src/rbgtkwidget.c +1414 -0
  254. data/src/rbgtkwindow.c +822 -0
  255. data/src/rbgtkwindowgroup.c +48 -0
  256. data/test/gtk-test-utils.rb +15 -0
  257. data/test/run-test.rb +30 -0
  258. data/test/test_gc.rb +25 -0
  259. data/test/test_gdk.rb +18 -0
  260. data/test/test_gdk_color.rb +10 -0
  261. data/test/test_gdk_display.rb +37 -0
  262. data/test/test_gdk_event.rb +11 -0
  263. data/test/test_gdk_gc.rb +7 -0
  264. data/test/test_gdk_keymap.rb +8 -0
  265. data/test/test_gdk_pango.rb +9 -0
  266. data/test/test_gdk_selection_data.rb +17 -0
  267. data/test/test_gdk_window.rb +29 -0
  268. data/test/test_gdk_window_attribute.rb +9 -0
  269. data/test/test_gtk_about_dialog.rb +14 -0
  270. data/test/test_gtk_buildable.rb +66 -0
  271. data/test/test_gtk_builder.rb +188 -0
  272. data/test/test_gtk_entry.rb +18 -0
  273. data/test/test_gtk_icon_theme.rb +30 -0
  274. data/test/test_gtk_image.rb +8 -0
  275. data/test/test_gtk_list_store.rb +65 -0
  276. data/test/test_gtk_menu_item.rb +13 -0
  277. data/test/test_gtk_rc_style.rb +14 -0
  278. data/test/test_gtk_tree_path.rb +20 -0
  279. data/test/test_gtk_unix_print.rb +14 -0
  280. data/test/test_gtk_widget.rb +32 -0
  281. metadata +393 -0
@@ -0,0 +1,333 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /************************************************
3
+
4
+ rbgtkselectiondata.c -
5
+
6
+ $Author: ggc $
7
+ $Date: 2007/07/13 16:07:32 $
8
+
9
+ Copyright (C) 2002-2005 Masao Mutoh
10
+ ************************************************/
11
+
12
+
13
+ #include "global.h"
14
+
15
+ #define _SELF(d) ((GtkSelectionData*)RVAL2BOXED(d, GTK_TYPE_SELECTION_DATA))
16
+
17
+ static GdkAtom compound_text;
18
+
19
+ /************************************************************************/
20
+ void
21
+ rbgtk_atom2selectiondata(VALUE type, VALUE size, VALUE src, GdkAtom *gtype,
22
+ void **data, gint *format, gint *length)
23
+ {
24
+ void* dat = NULL;
25
+ gint fmt, len;
26
+ GdkAtom ntype = RVAL2ATOM(type);
27
+
28
+ if(ntype == GDK_SELECTION_TYPE_INTEGER){
29
+ int *i;
30
+ i = ALLOC(int);
31
+ *i = NUM2INT(src);
32
+ dat = i;
33
+ fmt = sizeof(int) * 8;
34
+ len = 1;
35
+ } else if(ntype == GDK_SELECTION_TYPE_STRING) {
36
+ dat = RVAL2CSTR(src);
37
+ if (NIL_P(size)) {
38
+ fmt = sizeof(char) * 8;
39
+ len = RSTRING_LEN(src);
40
+ } else {
41
+ len = NUM2UINT(size);
42
+ fmt = (RSTRING_LEN(src) / len) * 8;
43
+ }
44
+ } else if(ntype == compound_text){
45
+ guchar* str = (guchar*)dat;
46
+ gdk_string_to_compound_text(RVAL2CSTR(src), &ntype, &fmt, &str, &len);
47
+ } else if(type != Qnil && size != Qnil && src != Qnil) {
48
+ dat = RVAL2CSTR(src);
49
+ fmt = NUM2INT(size);
50
+ len = (RSTRING_LEN(src) * sizeof(char) / fmt);
51
+ } else {
52
+ rb_raise(rb_eArgError, "no supported type.");
53
+ }
54
+
55
+ *gtype = ntype;
56
+ *data = dat;
57
+ *format = fmt;
58
+ *length = len;
59
+ }
60
+
61
+ void
62
+ rbgtk_atom2selectiondata_free(type, dat)
63
+ GdkAtom type;
64
+ void* dat;
65
+ {
66
+ if (type == GDK_SELECTION_TYPE_INTEGER ||
67
+ type == GDK_SELECTION_TYPE_ATOM) {
68
+ xfree(dat);
69
+ } else if(type == compound_text) {
70
+ gdk_free_compound_text(dat);
71
+ }
72
+ }
73
+ /************************************************************************/
74
+
75
+ static VALUE
76
+ gtkselectiondata_selection(self)
77
+ VALUE self;
78
+ {
79
+ GdkAtom selection = _SELF(self)->selection;
80
+ return BOXED2RVAL(&selection, GDK_TYPE_ATOM);
81
+ }
82
+
83
+ static VALUE
84
+ gtkselectiondata_target(self)
85
+ VALUE self;
86
+ {
87
+ return BOXED2RVAL(_SELF(self)->target, GDK_TYPE_ATOM);
88
+ }
89
+
90
+ static VALUE
91
+ gtkselectiondata_type(self)
92
+ VALUE self;
93
+ {
94
+ return BOXED2RVAL(_SELF(self)->type, GDK_TYPE_ATOM);
95
+ }
96
+
97
+ static VALUE
98
+ gtkselectiondata_format(self)
99
+ VALUE self;
100
+ {
101
+ return INT2NUM(_SELF(self)->format);
102
+ }
103
+
104
+ static VALUE
105
+ gtkselectiondata_data(self)
106
+ VALUE self;
107
+ {
108
+ return rb_str_new((const char*)_SELF(self)->data, _SELF(self)->length);
109
+ }
110
+
111
+ #if GTK_CHECK_VERSION(2,2,0)
112
+ static VALUE
113
+ gtkselectiondata_display(self)
114
+ VALUE self;
115
+ {
116
+ return BOXED2RVAL(_SELF(self)->display, GDK_TYPE_DISPLAY);
117
+ }
118
+ #endif
119
+
120
+ /* Instance Methods */
121
+ static VALUE
122
+ gtkselectiondata_set(argc, argv, self)
123
+ int argc;
124
+ VALUE* argv;
125
+ VALUE self;
126
+ {
127
+ void* dat;
128
+ VALUE type, src;
129
+ gint fmt, len;
130
+ GdkAtom ntype;
131
+ VALUE size = Qnil;
132
+
133
+ if(3 == argc)
134
+ rb_scan_args(argc, argv, "30", &type, &size, &src);
135
+ else
136
+ rb_scan_args(argc, argv, "20", &type, &src);
137
+
138
+ rbgtk_atom2selectiondata(type, size, src, &ntype, &dat, &fmt, &len);
139
+
140
+ gtk_selection_data_set(_SELF(self), ntype, fmt, dat, len);
141
+
142
+ rbgtk_atom2selectiondata_free(ntype, dat);
143
+
144
+ return self;
145
+ }
146
+
147
+ static VALUE
148
+ gtkselectiondata_set_text(self, str)
149
+ VALUE self, str;
150
+ {
151
+ gboolean ret;
152
+ StringValue(str);
153
+
154
+ ret = gtk_selection_data_set_text(_SELF(self), RVAL2CSTR(str),
155
+ RSTRING_LEN(str));
156
+
157
+ if (!ret)
158
+ rb_raise(rb_eRuntimeError, "the selection wasn't successfully.");
159
+
160
+ return self;
161
+ }
162
+
163
+ static VALUE
164
+ gtkselectiondata_get_text(self)
165
+ VALUE self;
166
+ {
167
+ VALUE ret = Qnil;
168
+ guchar* text = gtk_selection_data_get_text(_SELF(self));
169
+ if (text) {
170
+ ret = CSTR2RVAL((const char*)text);
171
+ g_free(text);
172
+ }
173
+ return ret;
174
+ }
175
+
176
+ #if GTK_CHECK_VERSION(2,6,0)
177
+ static VALUE
178
+ gtkselectiondata_set_pixbuf(self, pixbuf)
179
+ VALUE self, pixbuf;
180
+ {
181
+ gboolean ret = gtk_selection_data_set_pixbuf(_SELF(self),
182
+ GDK_PIXBUF(RVAL2GOBJ(pixbuf)));
183
+ if (!ret)
184
+ rb_raise(rb_eRuntimeError, "the selection wasn't successfully.");
185
+
186
+ return self;
187
+ }
188
+
189
+ static VALUE
190
+ gtkselectiondata_get_pixbuf(self)
191
+ VALUE self;
192
+ {
193
+ return GOBJ2RVAL(gtk_selection_data_get_pixbuf(_SELF(self)));
194
+ }
195
+
196
+ static VALUE
197
+ gtkselectiondata_set_uris(self, uris)
198
+ VALUE self, uris;
199
+ {
200
+ gboolean ret;
201
+ gchar** guris;
202
+ int i, n_targets;
203
+
204
+ Check_Type(uris, T_ARRAY);
205
+ n_targets = RARRAY_LEN(uris);
206
+
207
+ guris = g_new(gchar*, n_targets + 1);
208
+
209
+ for (i = 0; i < n_targets; i++) {
210
+ guris[i] = RVAL2CSTR(RARRAY_PTR(uris)[i]);
211
+ }
212
+ guris[n_targets] = NULL;
213
+
214
+ ret = gtk_selection_data_set_uris(_SELF(self), guris);
215
+
216
+ g_strfreev(guris);
217
+
218
+ if (!ret)
219
+ rb_raise(rb_eRuntimeError, "the selection wasn't successfully.");
220
+
221
+ return self;
222
+ }
223
+
224
+ static VALUE
225
+ gtkselectiondata_get_uris(self)
226
+ VALUE self;
227
+ {
228
+ VALUE ary = rb_ary_new();
229
+ gchar** uris = gtk_selection_data_get_uris(_SELF(self));
230
+
231
+ if (uris) {
232
+ gchar **uri = uris;
233
+ while (*uri) {
234
+ rb_ary_push(ary, CSTR2RVAL(*uri));
235
+ uri++;
236
+ }
237
+ g_strfreev(uris);
238
+ }
239
+ return ary;
240
+ }
241
+ #endif
242
+
243
+ static VALUE
244
+ gtkselectiondata_get_targets(self)
245
+ VALUE self;
246
+ {
247
+ GdkAtom* targets;
248
+ gint n_atoms;
249
+ VALUE result = Qnil;
250
+ gboolean ret = gtk_selection_data_get_targets(_SELF(self),
251
+ &targets, &n_atoms);
252
+ if (ret) {
253
+ int i;
254
+ result = rb_ary_new2(n_atoms);
255
+ for (i = 0; i < n_atoms; i++){
256
+ rb_ary_push(result, BOXED2RVAL(targets[i], GDK_TYPE_ATOM));
257
+ }
258
+ }
259
+ g_free(targets);
260
+ return result;
261
+ }
262
+ #if GTK_CHECK_VERSION(2,6,0)
263
+ static VALUE
264
+ gtkselectiondata_targets_include_image(self, writable)
265
+ VALUE self, writable;
266
+ {
267
+ return CBOOL2RVAL(gtk_selection_data_targets_include_image(_SELF(self), RVAL2CBOOL(writable)));
268
+ }
269
+ #endif
270
+
271
+ static VALUE
272
+ gtkselectiondata_targets_include_text(self)
273
+ VALUE self;
274
+ {
275
+ return CBOOL2RVAL(gtk_selection_data_targets_include_text(_SELF(self)));
276
+ }
277
+
278
+ #if GTK_CHECK_VERSION(2,10,0)
279
+ static VALUE
280
+ gtkselectiondata_targets_include_uri(self)
281
+ VALUE self;
282
+ {
283
+ return CBOOL2RVAL(gtk_selection_data_targets_include_uri(_SELF(self)));
284
+ }
285
+ static VALUE
286
+ gtkselectiondata_targets_include_rich_text(self, buffer)
287
+ VALUE self, buffer;
288
+ {
289
+ return CBOOL2RVAL(gtk_selection_data_targets_include_rich_text(_SELF(self),
290
+ GTK_TEXT_BUFFER(RVAL2GOBJ(buffer))));
291
+ }
292
+ #endif
293
+
294
+ void
295
+ Init_gtk_selectiondata()
296
+ {
297
+ VALUE gSelectionData = G_DEF_CLASS(GTK_TYPE_SELECTION_DATA, "SelectionData", mGtk);
298
+
299
+ rbgobj_boxed_not_copy_obj(GTK_TYPE_SELECTION_DATA);
300
+
301
+ compound_text = gdk_atom_intern("COMPOUND_TEXT", FALSE);
302
+
303
+ rb_define_method(gSelectionData, "selection", gtkselectiondata_selection, 0);
304
+ rb_define_method(gSelectionData, "target", gtkselectiondata_target, 0);
305
+ rb_define_method(gSelectionData, "type", gtkselectiondata_type, 0);
306
+ rb_define_method(gSelectionData, "format", gtkselectiondata_format, 0);
307
+ rb_define_method(gSelectionData, "data", gtkselectiondata_data, 0);
308
+ #if GTK_CHECK_VERSION(2,2,0)
309
+ rb_define_method(gSelectionData, "display", gtkselectiondata_display, 0);
310
+ #endif
311
+
312
+ rb_define_method(gSelectionData, "set", gtkselectiondata_set, -1);
313
+ rb_define_method(gSelectionData, "text", gtkselectiondata_get_text, 0);
314
+ rb_define_method(gSelectionData, "set_text", gtkselectiondata_set_text, 1);
315
+
316
+ #if GTK_CHECK_VERSION(2,6,0)
317
+ rb_define_method(gSelectionData, "pixbuf", gtkselectiondata_get_pixbuf, 0);
318
+ rb_define_method(gSelectionData, "set_pixbuf", gtkselectiondata_set_pixbuf, 1);
319
+ rb_define_method(gSelectionData, "uris", gtkselectiondata_get_uris, 0);
320
+ rb_define_method(gSelectionData, "set_uris", gtkselectiondata_set_uris, 1);
321
+ rb_define_method(gSelectionData, "targets_include_image", gtkselectiondata_targets_include_image, 1);
322
+ #endif
323
+ rb_define_method(gSelectionData, "targets", gtkselectiondata_get_targets, 0);
324
+ rb_define_method(gSelectionData, "targets_include_text", gtkselectiondata_targets_include_text, 0);
325
+ #if GTK_CHECK_VERSION(2,10,0)
326
+ rb_define_method(gSelectionData, "targets_include_uri", gtkselectiondata_targets_include_uri, 0);
327
+ rb_define_method(gSelectionData, "targets_include_rich_text", gtkselectiondata_targets_include_rich_text, 1);
328
+ #endif
329
+
330
+ G_DEF_SETTERS(gSelectionData);
331
+
332
+ }
333
+
@@ -0,0 +1,21 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /************************************************
3
+
4
+ rbgtkseparator.c -
5
+
6
+ $Author: mutoh $
7
+ $Date: 2003/02/01 16:46:24 $
8
+
9
+ Copyright (C) 2002,2003 Ruby-GNOME2 Project Team
10
+ Copyright (C) 1998-2000 Yukihiro Matsumoto,
11
+ Daisuke Kanda,
12
+ Hiroshi Igarashi
13
+ ************************************************/
14
+
15
+ #include "global.h"
16
+
17
+ void
18
+ Init_gtk_separator()
19
+ {
20
+ G_DEF_CLASS(GTK_TYPE_SEPARATOR, "Separator", mGtk);
21
+ }
@@ -0,0 +1,28 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /************************************************
3
+
4
+ rbgtkseparatormenuitem.c -
5
+
6
+ $Author: mutoh $
7
+ $Date: 2003/02/22 17:23:39 $
8
+
9
+ Copyright (C) 2002,2003 Masao Mutoh
10
+ ************************************************/
11
+
12
+ #include "global.h"
13
+
14
+ static VALUE
15
+ smitem_initialize(self)
16
+ VALUE self;
17
+ {
18
+ RBGTK_INITIALIZE(self, gtk_separator_menu_item_new());
19
+ return Qnil;
20
+ }
21
+
22
+ void
23
+ Init_gtk_separator_menu_item()
24
+ {
25
+ VALUE gSMenuItem = G_DEF_CLASS(GTK_TYPE_SEPARATOR_MENU_ITEM, "SeparatorMenuItem", mGtk);
26
+
27
+ rb_define_method(gSMenuItem, "initialize", smitem_initialize, 0);
28
+ }
@@ -0,0 +1,40 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /************************************************
3
+
4
+ rbgtkseparatortoolitem.c -
5
+
6
+ $Author: mutoh $
7
+ $Date: 2005/01/29 15:49:24 $
8
+
9
+ Copyright (C) 2004 Masao Mutoh
10
+ ************************************************/
11
+
12
+ #include "global.h"
13
+
14
+ #if GTK_CHECK_VERSION(2,4,0)
15
+
16
+ static VALUE
17
+ separatortoolitem_initialize(self)
18
+ VALUE self;
19
+ {
20
+ RBGTK_INITIALIZE(self, gtk_separator_tool_item_new());
21
+ return Qnil;
22
+ }
23
+
24
+ /* Defined as Property.
25
+ void gtk_separator_tool_item_set_draw
26
+ (GtkSeparatorToolItem *item,
27
+ gboolean draw);
28
+ gboolean gtk_separator_tool_item_get_draw
29
+ (GtkSeparatorToolItem *item);
30
+ */
31
+ #endif
32
+
33
+ void
34
+ Init_gtk_separatortoolitem()
35
+ {
36
+ #if GTK_CHECK_VERSION(2,4,0)
37
+ VALUE st = G_DEF_CLASS(GTK_TYPE_SEPARATOR_TOOL_ITEM, "SeparatorToolItem", mGtk);
38
+ rb_define_method(st, "initialize", separatortoolitem_initialize, 0);
39
+ #endif
40
+ }
@@ -0,0 +1,225 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /************************************************
3
+
4
+ rbgtksettings.c -
5
+
6
+ $Author: ggc $
7
+ $Date: 2007/07/13 16:07:32 $
8
+
9
+ Copyright (C) 2003,2004 Ruby-GNOME2 Project Team
10
+ Copyright (C) 2003 Masao Mutoh
11
+ ************************************************/
12
+
13
+ #include "global.h"
14
+
15
+ static VALUE prop_func_table;
16
+
17
+ static VALUE
18
+ settings_s_get_default(self)
19
+ VALUE self;
20
+ {
21
+ return GOBJ2RVAL(gtk_settings_get_default());
22
+ }
23
+
24
+ #if GTK_CHECK_VERSION(2,2,0)
25
+ static VALUE
26
+ settings_s_get_for_screen(self, screen)
27
+ VALUE self, screen;
28
+ {
29
+ return GOBJ2RVAL(gtk_settings_get_for_screen(GDK_SCREEN(RVAL2GOBJ(screen))));
30
+ }
31
+ #endif
32
+
33
+ /*
34
+ * Gtk::Settings.install_property(...) do |spec, str|
35
+ * #parse str
36
+ * new_val = .... # parse value from string.
37
+ * new_val # return new_val or nil if you can't convert the value.
38
+ * end
39
+ */
40
+ static gboolean
41
+ rc_property_parser(pspec, rc_string, property_value)
42
+ const GParamSpec *pspec;
43
+ const GString *rc_string;
44
+ GValue *property_value;
45
+ {
46
+ VALUE spec = GOBJ2RVAL((gpointer)pspec);
47
+ VALUE func = rb_hash_aref(prop_func_table, spec);
48
+ VALUE ret = rb_funcall(func, id_call, 2, spec, CSTR2RVAL(rc_string->str));
49
+ if (NIL_P(ret)) {
50
+ return FALSE;
51
+ } else if (RVAL2CBOOL(ret)){
52
+ rbgobj_rvalue_to_gvalue(ret, property_value);
53
+ return TRUE;
54
+ } else {
55
+ rb_raise(rb_eArgError, "Gtk::Settings#install_property() block should return new value or nil");
56
+ }
57
+ }
58
+
59
+ static VALUE
60
+ settings_s_install_property(self, spec)
61
+ VALUE self, spec;
62
+ {
63
+ GParamSpec* pspec = G_PARAM_SPEC(RVAL2GOBJ(spec));
64
+ if (rb_block_given_p()){
65
+ VALUE func = rb_block_proc();
66
+ rb_hash_aset(prop_func_table, spec, func);
67
+ gtk_settings_install_property_parser(pspec, (GtkRcPropertyParser)rc_property_parser);
68
+ } else {
69
+ gtk_settings_install_property(pspec);
70
+ }
71
+ return self;
72
+ }
73
+
74
+ static VALUE
75
+ settings_rc_property_parse_color(self, spec, str)
76
+ VALUE self, spec, str;
77
+ {
78
+ gboolean ret;
79
+ GValue prop = {0,};
80
+ VALUE val = Qnil;
81
+ GString* gstr = g_string_new(RVAL2CSTR(str));
82
+ g_value_init(&prop, GDK_TYPE_COLOR);
83
+ ret = gtk_rc_property_parse_color(G_PARAM_SPEC(RVAL2GOBJ(spec)),
84
+ gstr, &prop);
85
+ if (ret) val = GVAL2RVAL(&prop);
86
+
87
+ g_string_free(gstr, TRUE);
88
+ g_value_unset(&prop);
89
+ return val;
90
+ }
91
+
92
+ static VALUE
93
+ settings_rc_property_parse_enum(self, spec, str)
94
+ VALUE self, spec, str;
95
+ {
96
+ gboolean ret;
97
+ GValue prop = {0,};
98
+ VALUE val = Qnil;
99
+ GString* gstr = g_string_new(RVAL2CSTR(str));
100
+ GParamSpec* gspec = G_PARAM_SPEC(RVAL2GOBJ(spec));
101
+ g_value_init(&prop, gspec->value_type);
102
+ ret = gtk_rc_property_parse_enum(gspec, gstr, &prop);
103
+
104
+ if (ret) val = GVAL2RVAL(&prop);
105
+
106
+ g_string_free(gstr, TRUE);
107
+ g_value_unset(&prop);
108
+ return val;
109
+ }
110
+
111
+ static VALUE
112
+ settings_rc_property_parse_flags(self, spec, str)
113
+ VALUE self, spec, str;
114
+ {
115
+ gboolean ret;
116
+ GValue prop = {0,};
117
+ VALUE val = Qnil;
118
+ GString* gstr = g_string_new(RVAL2CSTR(str));
119
+ GParamSpec* gspec = G_PARAM_SPEC(RVAL2GOBJ(spec));
120
+ g_value_init(&prop, gspec->value_type);
121
+ ret = gtk_rc_property_parse_flags(gspec, gstr, &prop);
122
+
123
+ if (ret) val = GVAL2RVAL(&prop);
124
+
125
+ g_string_free(gstr, TRUE);
126
+ g_value_unset(&prop);
127
+ return val;
128
+ }
129
+
130
+ static VALUE
131
+ settings_rc_property_parse_requisition(self, spec, str)
132
+ VALUE self, spec, str;
133
+ {
134
+ gboolean ret;
135
+ GValue prop = {0,};
136
+ VALUE val = Qnil;
137
+ GString* gstr = g_string_new(RVAL2CSTR(str));
138
+ g_value_init(&prop, GTK_TYPE_REQUISITION);
139
+ ret = gtk_rc_property_parse_requisition(G_PARAM_SPEC(RVAL2GOBJ(spec)),
140
+ gstr, &prop);
141
+ if (ret){
142
+ GtkRequisition* req = g_value_get_boxed(&prop);
143
+ val = rb_assoc_new(INT2NUM(req->width), INT2NUM(req->height));
144
+ }
145
+ g_string_free(gstr, TRUE);
146
+ g_value_unset(&prop);
147
+ return val;
148
+ }
149
+
150
+ static VALUE
151
+ settings_rc_property_parse_border(self, spec, str)
152
+ VALUE self, spec, str;
153
+ {
154
+ gboolean ret;
155
+ GValue prop = {0,};
156
+ VALUE val = Qnil;
157
+ GString* gstr = g_string_new(RVAL2CSTR(str));
158
+ g_value_init(&prop, GTK_TYPE_BORDER);
159
+ ret = gtk_rc_property_parse_border(G_PARAM_SPEC(RVAL2GOBJ(spec)),
160
+ gstr, &prop);
161
+ if (ret){
162
+ GtkBorder* border = g_value_get_boxed(&prop);
163
+ val = BOXED2RVAL(border, GTK_TYPE_BORDER);
164
+ }
165
+ g_string_free(gstr, TRUE);
166
+ g_value_unset(&prop);
167
+ return val;
168
+ }
169
+
170
+ static VALUE
171
+ settings_set_property_value(self, name, value, origin)
172
+ VALUE self, name, value, origin;
173
+ {
174
+ GtkSettingsValue svalue = { NULL, { 0, }, };
175
+ g_value_init(&svalue.value, RVAL2GTYPE(value));
176
+ rbgobj_rvalue_to_gvalue(value, &svalue.value);
177
+
178
+ svalue.origin = RVAL2CSTR(origin);
179
+ gtk_settings_set_property_value(GTK_SETTINGS(RVAL2GOBJ(self)),
180
+ RVAL2CSTR(name), &svalue);
181
+ g_value_unset(&svalue.value);
182
+
183
+ return self;
184
+ }
185
+
186
+ /* We don't need them, Use set_property_value() instead.
187
+ void gtk_settings_set_string_property
188
+ (GtkSettings *settings,
189
+ const gchar *name,
190
+ const gchar *v_string,
191
+ const gchar *origin);
192
+ void gtk_settings_set_long_property (GtkSettings *settings,
193
+ const gchar *name,
194
+ glong v_long,
195
+ const gchar *origin);
196
+ void gtk_settings_set_double_property
197
+ (GtkSettings *settings,
198
+ const gchar *name,
199
+ gdouble v_double,
200
+ const gchar *origin);
201
+ */
202
+
203
+
204
+ void
205
+ Init_gtk_settings()
206
+ {
207
+ VALUE gSettings = G_DEF_CLASS(GTK_TYPE_SETTINGS, "Settings", mGtk);
208
+
209
+ rb_global_variable(&prop_func_table);
210
+ prop_func_table = rb_hash_new();
211
+
212
+ rb_define_singleton_method(gSettings, "default", settings_s_get_default, 0);
213
+ #if GTK_CHECK_VERSION(2,2,0)
214
+ rb_define_singleton_method(gSettings, "get_for_screen", settings_s_get_for_screen, 1);
215
+ #endif
216
+ rb_define_singleton_method(gSettings, "install_property", settings_s_install_property, 1);
217
+
218
+ rb_define_singleton_method(gSettings, "rc_property_parse_color", settings_rc_property_parse_color, 2);
219
+ rb_define_singleton_method(gSettings, "rc_property_parse_enum", settings_rc_property_parse_enum, 2);
220
+ rb_define_singleton_method(gSettings, "rc_property_parse_flags", settings_rc_property_parse_flags, 2);
221
+ rb_define_singleton_method(gSettings, "rc_property_parse_requisition", settings_rc_property_parse_requisition, 2);
222
+ rb_define_singleton_method(gSettings, "rc_property_parse_border", settings_rc_property_parse_border, 2);
223
+
224
+ rb_define_method(gSettings, "set_property_value", settings_set_property_value, 3);
225
+ }