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,72 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /************************************************
3
+
4
+ rbgtkfilechooserbutton.c -
5
+
6
+ $Author: mutoh $
7
+ $Date: 2006/10/21 16:58:00 $
8
+
9
+ Copyright (C) 2005 Masao Mutoh
10
+ ************************************************/
11
+
12
+ #include "global.h"
13
+
14
+ #if GTK_CHECK_VERSION(2,6,0)
15
+
16
+ static VALUE
17
+ filechooserbutton_initialize(argc, argv, self)
18
+ int argc;
19
+ VALUE* argv;
20
+ VALUE self;
21
+ {
22
+ VALUE title, action, backend;
23
+ GtkWidget* widget;
24
+
25
+ rb_scan_args(argc, argv, "12", &title, &action, &backend);
26
+
27
+ if (TYPE(title) == T_STRING) {
28
+ if (NIL_P(backend)){
29
+ widget = gtk_file_chooser_button_new(RVAL2CSTR(title),
30
+ RVAL2GENUM(action, GTK_TYPE_FILE_CHOOSER_ACTION));
31
+ } else {
32
+ widget = gtk_file_chooser_button_new_with_backend(RVAL2CSTR(title),
33
+ RVAL2GENUM(action,
34
+ GTK_TYPE_FILE_CHOOSER_ACTION),
35
+ RVAL2CSTR(backend));
36
+ }
37
+ } else {
38
+ widget = gtk_file_chooser_button_new_with_dialog(GTK_WIDGET(RVAL2GOBJ(title)));
39
+ }
40
+
41
+ RBGTK_INITIALIZE(self, widget);
42
+ return Qnil;
43
+ }
44
+
45
+ /* Defined as Properties
46
+ const gchar* gtk_file_chooser_button_get_title
47
+ (GtkFileChooserButton *button);
48
+ void gtk_file_chooser_button_set_title
49
+ (GtkFileChooserButton *button,
50
+ const gchar *title);
51
+ gint gtk_file_chooser_button_get_width_chars
52
+ (GtkFileChooserButton *button);
53
+ void gtk_file_chooser_button_set_width_chars
54
+ (GtkFileChooserButton *button,
55
+ gint n_chars);
56
+ gboolean gtk_file_chooser_button_get_focus_on_click
57
+ (GtkFileChooserButton *button);
58
+ void gtk_file_chooser_button_set_focus_on_click
59
+ (GtkFileChooserButton *button,
60
+ gboolean focus_on_click);
61
+ */
62
+
63
+ #endif
64
+
65
+ void
66
+ Init_gtk_filechooserbutton()
67
+ {
68
+ #if GTK_CHECK_VERSION(2,6,0)
69
+ VALUE gFCButton = G_DEF_CLASS(GTK_TYPE_FILE_CHOOSER_BUTTON, "FileChooserButton", mGtk);
70
+ rb_define_method(gFCButton, "initialize", filechooserbutton_initialize, -1);
71
+ #endif
72
+ }
@@ -0,0 +1,58 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /************************************************
3
+
4
+ rbgtkfilechooserdialog.c -
5
+
6
+ $Author: mutoh $
7
+ $Date: 2006/12/26 16:11:13 $
8
+
9
+ Copyright (C) 2004 Seiya Nishizawa, Masao Mutoh
10
+ ************************************************/
11
+
12
+ #include "global.h"
13
+
14
+ #if GTK_CHECK_VERSION(2,4,0)
15
+
16
+ #define _SELF(self) GTK_FILE_CHOOSER_DIALOG(RVAL2GOBJ(self))
17
+
18
+ static VALUE
19
+ fchodiag_initialize(argc, argv, self)
20
+ int argc;
21
+ VALUE* argv;
22
+ VALUE self;
23
+ {
24
+ VALUE title, parent, action, back, button_ary;
25
+ GtkWidget* dialog;
26
+ gchar* gtitle;
27
+ GtkWindow *gparent;
28
+ GtkFileChooserAction gaction;
29
+ gchar* gback;
30
+
31
+ rb_scan_args(argc, argv, "04*", &title, &parent, &action, &back, &button_ary);
32
+ gtitle = NIL_P(title) ? NULL : RVAL2CSTR(title);
33
+ gparent = NIL_P(parent) ? NULL : GTK_WINDOW(RVAL2GOBJ(parent));
34
+ gaction = NIL_P(action) ? GTK_FILE_CHOOSER_ACTION_OPEN : RVAL2GENUM(action, GTK_TYPE_FILE_CHOOSER_ACTION);
35
+ gback = NIL_P(back) ? NULL : RVAL2CSTR(back);
36
+ dialog = gtk_file_chooser_dialog_new_with_backend((const gchar*)gtitle,
37
+ gparent, gaction,
38
+ (const gchar*)gback,
39
+ (const gchar*)NULL, NULL);
40
+ RBGTK_INITIALIZE(self, dialog);
41
+ rbgtk_dialog_add_buttons_internal(self, button_ary);
42
+ return Qnil;
43
+ }
44
+
45
+ #endif
46
+
47
+ void
48
+ Init_gtk_file_chooser_dialog()
49
+ {
50
+ #if GTK_CHECK_VERSION(2,4,0)
51
+
52
+ VALUE gFileChoDiag = G_DEF_CLASS(GTK_TYPE_FILE_CHOOSER_DIALOG, "FileChooserDialog", mGtk);
53
+
54
+ rb_define_method(gFileChoDiag, "initialize", fchodiag_initialize, -1);
55
+
56
+ #endif
57
+ }
58
+
@@ -0,0 +1,50 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /************************************************
3
+
4
+ rbgtkfilechooserwidget.c -
5
+
6
+ $Author: mutoh $
7
+ $Date: 2004/05/30 16:41:13 $
8
+
9
+ Copyright (C) 2004 Seiya Nishizawa, Masao Mutoh
10
+ ************************************************/
11
+
12
+ #include "global.h"
13
+
14
+ #if GTK_CHECK_VERSION(2,4,0)
15
+
16
+ static VALUE
17
+ fchowidget_initialize(argc, argv, self)
18
+ int argc;
19
+ VALUE* argv;
20
+ VALUE self;
21
+ {
22
+ VALUE action, back;
23
+ GtkWidget* widget;
24
+
25
+ rb_scan_args(argc, argv, "11", &action, &back);
26
+
27
+ if (NIL_P(back)){
28
+ widget = gtk_file_chooser_widget_new(RVAL2GENUM(action, GTK_TYPE_FILE_CHOOSER_ACTION));
29
+ } else {
30
+ widget = gtk_file_chooser_widget_new_with_backend(RVAL2GENUM(action, GTK_TYPE_FILE_CHOOSER_ACTION),
31
+ RVAL2CSTR(back));
32
+ }
33
+
34
+ RBGTK_INITIALIZE(self, widget);
35
+ return Qnil;
36
+ }
37
+ #endif
38
+
39
+ void
40
+ Init_gtk_file_chooser_widget()
41
+ {
42
+ #if GTK_CHECK_VERSION(2,4,0)
43
+
44
+ VALUE gFileChoWidget = G_DEF_CLASS(GTK_TYPE_FILE_CHOOSER_WIDGET, "FileChooserWidget", mGtk);
45
+
46
+ rb_define_method(gFileChoWidget, "initialize", fchowidget_initialize, -1);
47
+
48
+ #endif
49
+ }
50
+
@@ -0,0 +1,139 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /************************************************
3
+
4
+ rbgtkfilefilter.c -
5
+
6
+ $Author: sakai $
7
+ $Date: 2007/07/08 03:00:49 $
8
+
9
+ Copyright (C) 2005 Ruby-GNOME2 Project Team
10
+ Copyright (C) 2004 Seiya Nishizawa, Masao Mutoh
11
+ ************************************************/
12
+
13
+ #include "global.h"
14
+
15
+ #if GTK_CHECK_VERSION(2,4,0)
16
+
17
+ #define _SELF(self) GTK_FILE_FILTER(RVAL2GOBJ(self))
18
+
19
+ static VALUE
20
+ ffil_initialize(self)
21
+ VALUE self;
22
+ {
23
+ RBGTK_INITIALIZE(self, gtk_file_filter_new());
24
+ return Qnil;
25
+ }
26
+
27
+ static VALUE
28
+ ffil_set_name(self, name)
29
+ VALUE self, name;
30
+ {
31
+ gtk_file_filter_set_name(_SELF(self), RVAL2CSTR(name));
32
+ return self;
33
+ }
34
+
35
+ static VALUE
36
+ ffil_get_name(self)
37
+ VALUE self;
38
+ {
39
+ return CSTR2RVAL(gtk_file_filter_get_name(_SELF(self)));
40
+ }
41
+
42
+ static VALUE
43
+ ffil_add_mime_type(self, mime)
44
+ VALUE self, mime;
45
+ {
46
+ gtk_file_filter_add_mime_type(_SELF(self), RVAL2CSTR(mime));
47
+ return self;
48
+ }
49
+
50
+ static VALUE
51
+ ffil_add_pattern(self, pattern)
52
+ VALUE self, pattern;
53
+ {
54
+ gtk_file_filter_add_pattern(_SELF(self), RVAL2CSTR(pattern));
55
+ return self;
56
+ }
57
+
58
+ /* Should return true/false */
59
+ static gboolean
60
+ filter_func(info, func)
61
+ const GtkFileFilterInfo* info;
62
+ gpointer func;
63
+ {
64
+ return CBOOL2RVAL(rb_funcall((VALUE)func, 5,
65
+ GFLAGS2RVAL(info->contains, GTK_TYPE_FILE_FILTER_FLAGS),
66
+ CSTR2RVAL(info->filename), CSTR2RVAL(info->uri),
67
+ CSTR2RVAL(info->display_name), CSTR2RVAL(info->mime_type)));
68
+ }
69
+
70
+ #if GTK_CHECK_VERSION(2,6,0)
71
+ static VALUE
72
+ ffil_add_pixbuf_formats(self)
73
+ VALUE self;
74
+ {
75
+ gtk_file_filter_add_pixbuf_formats(_SELF(self));
76
+ return self;
77
+ }
78
+ #endif
79
+
80
+ static VALUE
81
+ ffil_add_custom(self, needed)
82
+ VALUE self, needed;
83
+ {
84
+ VALUE func = rb_block_proc();
85
+ G_RELATIVE(self, func);
86
+ gtk_file_filter_add_custom(_SELF(self), RVAL2GFLAGS(needed, GTK_TYPE_FILE_FILTER_FLAGS),
87
+ (GtkFileFilterFunc)filter_func, (gpointer)func, NULL);
88
+ return self;
89
+ }
90
+
91
+ static VALUE
92
+ ffil_get_needed(self)
93
+ VALUE self;
94
+ {
95
+ return GFLAGS2RVAL(gtk_file_filter_get_needed(_SELF(self)), GTK_TYPE_FILE_FILTER_FLAGS);
96
+ }
97
+
98
+ static VALUE
99
+ ffil_filter(self, contains, filename, uri, display_name, mime_type)
100
+ VALUE self, contains, filename, uri, display_name, mime_type;
101
+ {
102
+ GtkFileFilterInfo info;
103
+ info.contains = RVAL2GFLAGS(contains, GTK_TYPE_FILE_FILTER_FLAGS);
104
+ info.filename = RVAL2CSTR(filename);
105
+ info.uri = RVAL2CSTR(uri);
106
+ info.display_name = RVAL2CSTR(display_name);
107
+ info.mime_type = RVAL2CSTR(mime_type);
108
+
109
+ return CBOOL2RVAL(gtk_file_filter_filter(_SELF(self), &info));
110
+ }
111
+ #endif
112
+
113
+ void
114
+ Init_gtk_file_filter()
115
+ {
116
+ #if GTK_CHECK_VERSION(2,4,0)
117
+
118
+ VALUE gFileFilter = G_DEF_CLASS(GTK_TYPE_FILE_FILTER, "FileFilter", mGtk);
119
+
120
+ rb_define_method(gFileFilter, "initialize", ffil_initialize, 0);
121
+ rb_define_method(gFileFilter, "set_name", ffil_set_name, 1);
122
+ rb_define_method(gFileFilter, "name", ffil_get_name, 0);
123
+ rb_define_method(gFileFilter, "add_mime_type", ffil_add_mime_type, 1);
124
+ rb_define_method(gFileFilter, "add_pattern", ffil_add_pattern, 1);
125
+ #if GTK_CHECK_VERSION(2,6,0)
126
+ rb_define_method(gFileFilter, "add_pixbuf_formats", ffil_add_pixbuf_formats, 0);
127
+ #endif
128
+ rb_define_method(gFileFilter, "add_custom", ffil_add_custom, 1);
129
+ rb_define_method(gFileFilter, "needed", ffil_get_needed, 0);
130
+ rb_define_method(gFileFilter, "filter?", ffil_filter, 5);
131
+
132
+ G_DEF_SETTERS(gFileFilter);
133
+
134
+ G_DEF_CLASS(GTK_TYPE_FILE_FILTER_FLAGS, "Flags", gFileFilter);
135
+ G_DEF_CONSTANTS(gFileFilter, GTK_TYPE_FILE_FILTER_FLAGS, "GTK_FILE_FILTER_");
136
+
137
+
138
+ #endif
139
+ }
@@ -0,0 +1,155 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /************************************************
3
+
4
+ rbgtkfilesel.c -
5
+
6
+ $Author: ktou $
7
+ $Date: 2007/03/22 02:57:12 $
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
+ #define _SELF(self) GTK_FILE_SELECTION(RVAL2GOBJ(self))
18
+
19
+ static VALUE
20
+ fsel_initialize(argc, argv, self)
21
+ int argc;
22
+ VALUE *argv;
23
+ VALUE self;
24
+ {
25
+ VALUE title;
26
+ rb_scan_args(argc, argv, "01", &title);
27
+ RBGTK_INITIALIZE(self, gtk_file_selection_new(NIL_P(title) ? NULL : RVAL2CSTR(title)));
28
+ return Qnil;
29
+ }
30
+
31
+ static VALUE
32
+ fsel_complete(self, pattern)
33
+ VALUE self, pattern;
34
+ {
35
+ gtk_file_selection_complete(_SELF(self), RVAL2CSTR(pattern));
36
+ return self;
37
+ }
38
+
39
+ static VALUE
40
+ fsel_show_fileop_buttons(self)
41
+ VALUE self;
42
+ {
43
+ gtk_file_selection_show_fileop_buttons(_SELF(self));
44
+ return Qnil;
45
+ }
46
+
47
+ static VALUE
48
+ fsel_hide_fileop_buttons(self)
49
+ VALUE self;
50
+ {
51
+ gtk_file_selection_hide_fileop_buttons(_SELF(self));
52
+ return Qnil;
53
+ }
54
+
55
+ static VALUE
56
+ fsel_get_selections(self)
57
+ VALUE self;
58
+ {
59
+ gchar** ptr = gtk_file_selection_get_selections(_SELF(self));
60
+ gchar** selections = ptr;
61
+ VALUE ary = rb_ary_new();
62
+ while(*selections){
63
+ rb_ary_push(ary, CSTR2RVAL(*selections));
64
+ selections++;
65
+ }
66
+ if (ptr)
67
+ g_strfreev(ptr);
68
+
69
+ return ary;
70
+ }
71
+
72
+ static VALUE
73
+ fsel_fileop_dialog(self)
74
+ VALUE self;
75
+ {
76
+ GtkWidget* widget = _SELF(self)->fileop_dialog;
77
+ return widget ? GOBJ2RVAL(widget) : Qnil;
78
+ }
79
+
80
+ static VALUE
81
+ fsel_dir_list(self)
82
+ VALUE self;
83
+ {
84
+ return GOBJ2RVAL(_SELF(self)->dir_list);
85
+ }
86
+
87
+ static VALUE
88
+ fsel_file_list(self)
89
+ VALUE self;
90
+ {
91
+ return GOBJ2RVAL(_SELF(self)->file_list);
92
+ }
93
+
94
+ static VALUE
95
+ fsel_ok_button(self)
96
+ VALUE self;
97
+ {
98
+ return GOBJ2RVAL(_SELF(self)->ok_button);
99
+ }
100
+
101
+ static VALUE
102
+ fsel_cancel_button(self)
103
+ VALUE self;
104
+ {
105
+ return GOBJ2RVAL(_SELF(self)->cancel_button);
106
+ }
107
+
108
+ static VALUE
109
+ fsel_history_pulldown(self)
110
+ VALUE self;
111
+ {
112
+ return GOBJ2RVAL(_SELF(self)->history_pulldown);
113
+ }
114
+
115
+ static VALUE
116
+ fsel_fileop_c_dir(self)
117
+ VALUE self;
118
+ {
119
+ return GOBJ2RVAL(_SELF(self)->fileop_c_dir);
120
+ }
121
+
122
+ static VALUE
123
+ fsel_fileop_del_file(self)
124
+ VALUE self;
125
+ {
126
+ return GOBJ2RVAL(_SELF(self)->fileop_del_file);
127
+ }
128
+
129
+ static VALUE
130
+ fsel_fileop_ren_file(self)
131
+ VALUE self;
132
+ {
133
+ return GOBJ2RVAL(_SELF(self)->fileop_ren_file);
134
+ }
135
+
136
+ void
137
+ Init_gtk_file_selection()
138
+ {
139
+ VALUE gFileSel = G_DEF_CLASS(GTK_TYPE_FILE_SELECTION, "FileSelection", mGtk);
140
+
141
+ rb_define_method(gFileSel, "initialize", fsel_initialize, -1);
142
+ rb_define_method(gFileSel, "complete", fsel_complete, 1);
143
+ rb_define_method(gFileSel, "show_fileop_buttons", fsel_show_fileop_buttons, 0);
144
+ rb_define_method(gFileSel, "hide_fileop_buttons", fsel_hide_fileop_buttons, 0);
145
+ rb_define_method(gFileSel, "selections", fsel_get_selections, 0);
146
+ rb_define_method(gFileSel, "fileop_dialog", fsel_fileop_dialog, 0);
147
+ rb_define_method(gFileSel, "ok_button", fsel_ok_button, 0);
148
+ rb_define_method(gFileSel, "cancel_button", fsel_cancel_button, 0);
149
+ rb_define_method(gFileSel, "dir_list", fsel_dir_list, 0);
150
+ rb_define_method(gFileSel, "file_list", fsel_file_list, 0);
151
+ rb_define_method(gFileSel, "history_pulldown", fsel_history_pulldown, 0);
152
+ rb_define_method(gFileSel, "fileop_c_dir", fsel_fileop_c_dir, 0);
153
+ rb_define_method(gFileSel, "fileop_del_file", fsel_fileop_del_file, 0);
154
+ rb_define_method(gFileSel, "fileop_ren_file", fsel_fileop_ren_file, 0);
155
+ }