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,155 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /************************************************
3
+
4
+ rbgtkprinter.c -
5
+
6
+ $Author: sakai $
7
+ $Date: 2007/07/08 03:00:49 $
8
+
9
+ Copyright (C) 2006 Ruby-GNOME2 Project Team
10
+ ************************************************/
11
+
12
+ #include "global.h"
13
+
14
+ #ifdef HAVE_GTK_UNIX_PRINT
15
+ #include <gtk/gtkprinter.h>
16
+
17
+ #ifndef GTK_TYPE_PRINT_BACKEND
18
+ #define GTK_TYPE_PRINT_BACKEND (gtk_print_backend_get_type ())
19
+ #define GTK_PRINT_BACKEND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_PRINT_BACKEND, GtkPrintBackend))
20
+ GType gtk_print_backend_get_type (void) G_GNUC_CONST;
21
+ #endif
22
+
23
+ #define _SELF(s) (GTK_PRINTER(RVAL2GOBJ(s)))
24
+
25
+ static VALUE
26
+ p_initialize(VALUE self, VALUE name, VALUE backend, VALUE rb_virtual)
27
+ {
28
+ GtkPrinter *printer;
29
+
30
+ printer = gtk_printer_new(RVAL2CSTR(name),
31
+ GTK_PRINT_BACKEND(RVAL2GOBJ(backend)),
32
+ RVAL2CBOOL(rb_virtual));
33
+
34
+ G_INITIALIZE(self, printer);
35
+ return Qnil;
36
+ }
37
+
38
+ /* Defined as properties
39
+ gboolean gtk_printer_accepts_ps (GtkPrinter *printer);
40
+ gboolean gtk_printer_accepts_pdf (GtkPrinter *printer);
41
+ GtkPrintBackend* gtk_printer_get_backend (GtkPrinter *printer);
42
+ const gchar* gtk_printer_get_icon_name (GtkPrinter *printer);
43
+ gboolean gtk_printer_is_virtual (GtkPrinter *printer);
44
+ const gchar* gtk_printer_get_name (GtkPrinter *printer);
45
+ const gchar* gtk_printer_get_state_message (GtkPrinter *printer);
46
+ const gchar* gtk_printer_get_location (GtkPrinter *printer);
47
+ gint gtk_printer_get_job_count (GtkPrinter *printer);
48
+ */
49
+
50
+ static VALUE
51
+ p_get_description(VALUE self)
52
+ {
53
+ return CSTR2RVAL(gtk_printer_get_description(_SELF(self)));
54
+ }
55
+
56
+ static VALUE
57
+ p_is_active(VALUE self)
58
+ {
59
+ return CBOOL2RVAL(gtk_printer_is_default(_SELF(self)));
60
+ }
61
+
62
+ static VALUE
63
+ p_is_default(VALUE self)
64
+ {
65
+ return CBOOL2RVAL(gtk_printer_is_default(_SELF(self)));
66
+ }
67
+
68
+ static VALUE
69
+ p_compare(VALUE self, VALUE other)
70
+ {
71
+ if (rb_obj_is_kind_of(other, GTYPE2CLASS(GTK_TYPE_PRINTER))){
72
+ return INT2NUM(gtk_printer_compare(_SELF(self), _SELF(other)));
73
+ } else {
74
+ rb_raise(rb_eTypeError, "%s isn't a kind of Gtk::Printer", rb_class2name(other));
75
+ }
76
+ }
77
+
78
+ struct callback_arg
79
+ {
80
+ VALUE callback;
81
+ int argc;
82
+ VALUE *argv;
83
+ };
84
+
85
+ static VALUE
86
+ invoke_callback(VALUE data)
87
+ {
88
+ struct callback_arg *arg = (struct callback_arg *)data;
89
+
90
+ return rb_funcall2(arg->callback, id_call, arg->argc, arg->argv);
91
+ }
92
+
93
+ static gboolean
94
+ each_printer(GtkPrinter *printer, gpointer data)
95
+ {
96
+ VALUE result;
97
+ VALUE argv[1];
98
+ struct callback_arg arg;
99
+
100
+ argv[0] = GOBJ2RVAL(printer);
101
+
102
+ arg.callback = (VALUE)data;
103
+ arg.argc = 1;
104
+ arg.argv = argv;
105
+
106
+ result = G_PROTECT_CALLBACK(invoke_callback, &arg);
107
+ return NIL_P(rb_errinfo()) ? TRUE : RVAL2CBOOL(result);
108
+ }
109
+
110
+ static void
111
+ remove_callback_reference(gpointer data)
112
+ {
113
+ VALUE callback = (VALUE)data;
114
+ G_CHILD_REMOVE(mGtk, callback);
115
+ }
116
+
117
+ static VALUE
118
+ p_s_enumerate_printers(int argc, VALUE *argv, VALUE self)
119
+ {
120
+ VALUE wait, block;
121
+ rb_scan_args(argc, argv, "01", &wait);
122
+
123
+ block = rb_block_proc();
124
+ G_CHILD_ADD(mGtk, block);
125
+ gtk_enumerate_printers(each_printer, (gpointer)block,
126
+ remove_callback_reference, RVAL2CBOOL(wait));
127
+
128
+ return self;
129
+ }
130
+ #endif
131
+
132
+ void
133
+ Init_gtk_printer()
134
+ {
135
+ #ifdef HAVE_GTK_UNIX_PRINT
136
+ VALUE gPrinter = G_DEF_CLASS(GTK_TYPE_PRINTER, "Printer", mGtk);
137
+ rb_include_module(gPrinter, rb_mComparable);
138
+
139
+ G_DEF_CLASS(GTK_TYPE_PRINT_BACKEND, "PrintBackend", mGtk);
140
+
141
+ rb_define_singleton_method(gPrinter, "each", p_s_enumerate_printers, -1);
142
+
143
+ rb_define_method(gPrinter, "initialize", p_initialize, 3);
144
+ rb_define_method(gPrinter, "description", p_get_description, 0);
145
+ rb_define_method(gPrinter, "active?", p_is_active, 0);
146
+ rb_define_method(gPrinter, "default?", p_is_default, 0);
147
+ rb_define_method(gPrinter, "<=>", p_compare, 1);
148
+
149
+ G_DEF_CLASS3("GtkPrintBackendCups", "PrintBackendCups", mGtk);
150
+ G_DEF_CLASS3("GtkPrintBackendFile", "PrintBackendFile", mGtk);
151
+ G_DEF_CLASS3("GtkPrintBackendLpr", "PrintBackendLpr", mGtk);
152
+
153
+ G_DEF_SETTERS(gPrinter);
154
+ #endif
155
+ }
@@ -0,0 +1,151 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /************************************************
3
+
4
+ rbgtkprintjob.c -
5
+
6
+ $Author: sakai $
7
+ $Date: 2007/07/08 03:00:49 $
8
+
9
+ Copyright (C) 2006 Ruby-GNOME2 Project Team
10
+ ************************************************/
11
+
12
+ #include "global.h"
13
+
14
+ #ifdef HAVE_GTK_UNIX_PRINT
15
+ #include <gtk/gtkprintjob.h>
16
+ #ifndef GTK_TYPE_PRINT_CAPABILITIES
17
+ # define GTK_TYPE_PRINT_CAPABILITIES (gtk_print_capabilities_get_type())
18
+ #endif
19
+
20
+ #ifdef HAVE_RB_CAIRO_H
21
+ # include <rb_cairo.h>
22
+ #endif
23
+
24
+ #define _SELF(s) (GTK_PRINT_JOB(RVAL2GOBJ(s)))
25
+
26
+ static VALUE gPrintJob;
27
+
28
+ static VALUE
29
+ pj_initialize(VALUE self, VALUE title, VALUE printer,
30
+ VALUE settings, VALUE page_setup)
31
+ {
32
+ GtkPrintJob *job;
33
+
34
+ job = gtk_print_job_new(RVAL2CSTR(title),
35
+ GTK_PRINTER(RVAL2GOBJ(printer)),
36
+ GTK_PRINT_SETTINGS(RVAL2GOBJ(settings)),
37
+ GTK_PAGE_SETUP(RVAL2GOBJ(page_setup)));
38
+
39
+ G_INITIALIZE(self, job);
40
+ return Qnil;
41
+ }
42
+
43
+ /* Defined as properties.
44
+ GtkPrintSettings* gtk_print_job_get_settings
45
+ (GtkPrintJob *job);
46
+ GtkPrinter* gtk_print_job_get_printer (GtkPrintJob *job);
47
+ const gchar* gtk_print_job_get_title (GtkPrintJob *job);
48
+ void gtk_print_job_set_track_print_status
49
+ (GtkPrintJob *job,
50
+ gboolean track_status);
51
+ gboolean gtk_print_job_get_track_print_status
52
+ (GtkPrintJob *job);
53
+ */
54
+
55
+ static VALUE
56
+ pj_get_status(VALUE self)
57
+ {
58
+ return GENUM2RVAL(gtk_print_job_get_status(_SELF(self)), GTK_TYPE_PRINT_STATUS);
59
+ }
60
+
61
+ static VALUE
62
+ pj_set_source_file(VALUE self, VALUE filename)
63
+ {
64
+ GError *error = NULL;
65
+ gboolean result;
66
+
67
+ result = gtk_print_job_set_source_file(_SELF(self), RVAL2CSTR(filename),
68
+ &error);
69
+
70
+ if (!result)
71
+ RAISE_GERROR(error);
72
+
73
+ return Qnil;
74
+ }
75
+
76
+ #ifdef HAVE_RB_CAIRO_H
77
+ static VALUE
78
+ pj_get_surface(VALUE self)
79
+ {
80
+ cairo_surface_t *surface;
81
+ GError *error = NULL;
82
+
83
+ surface = gtk_print_job_get_surface(_SELF(self), &error);
84
+ if (error)
85
+ RAISE_GERROR(error);
86
+ return CRSURFACE2RVAL(surface);
87
+ }
88
+ #endif
89
+
90
+ struct callback_arg
91
+ {
92
+ VALUE callback;
93
+ VALUE job;
94
+ GError* error;
95
+ };
96
+
97
+ static VALUE
98
+ invoke_callback(VALUE data)
99
+ {
100
+ struct callback_arg *arg = (struct callback_arg *)data;
101
+
102
+ if (arg->error) RAISE_GERROR(arg->error);
103
+ rb_funcall(arg->callback, id_call, 1, arg->job);
104
+ return Qnil;
105
+ }
106
+ static void
107
+ complete_func(GtkPrintJob *job, gpointer data, GError *error)
108
+ {
109
+ struct callback_arg arg;
110
+
111
+ arg.callback = (VALUE)data;
112
+ arg.job = GOBJ2RVAL(job);
113
+ arg.error = error;
114
+ G_PROTECT_CALLBACK(invoke_callback, &arg);
115
+ }
116
+
117
+ static void
118
+ remove_callback_reference(gpointer data)
119
+ {
120
+ G_CHILD_REMOVE(gPrintJob, (VALUE)data);
121
+ }
122
+
123
+ static VALUE
124
+ pj_send(VALUE self)
125
+ {
126
+ VALUE block = rb_block_proc();
127
+ G_CHILD_ADD(gPrintJob, block);
128
+ gtk_print_job_send(_SELF(self), complete_func, (gpointer)block,
129
+ remove_callback_reference);
130
+ return self;
131
+ }
132
+ #endif
133
+
134
+ void
135
+ Init_gtk_print_job()
136
+ {
137
+ #ifdef HAVE_GTK_UNIX_PRINT
138
+ gPrintJob = G_DEF_CLASS(GTK_TYPE_PRINT_JOB, "PrintJob", mGtk);
139
+ G_DEF_CLASS(GTK_TYPE_PRINT_CAPABILITIES, "PrintCapabilities", mGtk);
140
+
141
+ rb_define_method(gPrintJob, "initialize", pj_initialize, 4);
142
+ rb_define_method(gPrintJob, "status", pj_get_status, 0);
143
+ rb_define_method(gPrintJob, "set_source_file", pj_set_source_file, 1);
144
+ #ifdef HAVE_RB_CAIRO_H
145
+ rb_define_method(gPrintJob, "surface", pj_get_surface, 0);
146
+ #endif
147
+ rb_define_method(gPrintJob, "send", pj_send, 0);
148
+
149
+ G_DEF_SETTERS(gPrintJob);
150
+ #endif
151
+ }
@@ -0,0 +1,152 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /************************************************
3
+
4
+ rbgtkprintoperation.c -
5
+
6
+ $Author: sakai $
7
+ $Date: 2007/07/08 03:00:49 $
8
+
9
+ Copyright (C) 2006 Ruby-GNOME2 Project Team
10
+ ************************************************/
11
+
12
+ #include "global.h"
13
+
14
+ #if GTK_CHECK_VERSION(2,10,0)
15
+ #define _SELF(s) (GTK_PRINT_OPERATION(RVAL2GOBJ(s)))
16
+
17
+ static VALUE gPrintOperation;
18
+
19
+ static VALUE
20
+ po_initialize(VALUE self)
21
+ {
22
+ G_INITIALIZE(self, gtk_print_operation_new());
23
+ return Qnil;
24
+ }
25
+
26
+ static VALUE
27
+ po_run(int argc, VALUE *argv, VALUE self)
28
+ {
29
+ VALUE action, parent, rb_result;
30
+ GtkPrintOperationResult result;
31
+ GError *error = NULL;
32
+
33
+ rb_scan_args(argc, argv, "11", &action, &parent);
34
+
35
+ result = gtk_print_operation_run(_SELF(self),
36
+ RVAL2GENUM(action, GTK_TYPE_PRINT_OPERATION_ACTION),
37
+ RVAL2GOBJ(parent), &error);
38
+
39
+ rb_result = GENUM2RVAL(result, GTK_TYPE_PRINT_OPERATION_RESULT);
40
+ if (rb_block_given_p()) {
41
+ return rb_yield(rb_result);
42
+ } else {
43
+ if (result == GTK_PRINT_OPERATION_RESULT_ERROR)
44
+ RAISE_GERROR(error);
45
+ return rb_result;
46
+ }
47
+ }
48
+
49
+ static VALUE
50
+ po_get_error(VALUE self)
51
+ {
52
+ GError *error = NULL;
53
+ gtk_print_operation_get_error(_SELF(self), &error);
54
+ return error ? rbgerr_gerror2exception(error) : Qnil;
55
+ }
56
+
57
+ static VALUE
58
+ po_is_finished(VALUE self)
59
+ {
60
+ return CBOOL2RVAL(gtk_print_operation_is_finished(_SELF(self)));
61
+ }
62
+
63
+ static VALUE
64
+ po_cancel(VALUE self)
65
+ {
66
+ gtk_print_operation_cancel(_SELF(self));
67
+ return self;
68
+ }
69
+
70
+ struct callback_arg
71
+ {
72
+ VALUE callback;
73
+ VALUE page_setup;
74
+ };
75
+
76
+ static VALUE
77
+ invoke_callback(VALUE arg_)
78
+ {
79
+ struct callback_arg *arg = (struct callback_arg *)arg_;
80
+ return rb_funcall(arg->callback, id_call, 1, arg->page_setup);
81
+ }
82
+
83
+ static void
84
+ page_setup_done_cb(GtkPageSetup *page_setup, gpointer data)
85
+ {
86
+ VALUE callback = (VALUE)data;
87
+ struct callback_arg arg;
88
+
89
+ G_CHILD_UNSET(gPrintOperation, rb_intern("setup_done_cb"));
90
+
91
+ arg.callback = callback;
92
+ arg.page_setup = GOBJ2RVAL(page_setup);
93
+
94
+ G_PROTECT_CALLBACK(invoke_callback, &arg);
95
+ }
96
+
97
+ static VALUE
98
+ po_run_page_setup_dialog(int argc, VALUE *argv, VALUE self)
99
+ {
100
+ VALUE parent, page_setup, settings;
101
+ rb_scan_args(argc, argv, "03", &parent, &page_setup, &settings);
102
+
103
+ if (rb_block_given_p()) {
104
+ volatile VALUE func = rb_block_proc();
105
+ G_CHILD_SET(gPrintOperation, rb_intern("setup_done_cb"), func);
106
+ gtk_print_run_page_setup_dialog_async(RVAL2GOBJ(parent),
107
+ RVAL2GOBJ(page_setup),
108
+ RVAL2GOBJ(settings),
109
+ page_setup_done_cb,
110
+ (gpointer)func);
111
+ return Qnil;
112
+ } else {
113
+ return GOBJ2RVALU(gtk_print_run_page_setup_dialog(RVAL2GOBJ(parent),
114
+ RVAL2GOBJ(page_setup),
115
+ RVAL2GOBJ(settings)));
116
+ }
117
+ }
118
+ #endif
119
+
120
+ void
121
+ Init_gtk_print_operation()
122
+ {
123
+ #if GTK_CHECK_VERSION(2,10,0)
124
+ gPrintOperation = G_DEF_CLASS(GTK_TYPE_PRINT_OPERATION, "PrintOperation", mGtk);
125
+
126
+ G_DEF_ERROR(GTK_PRINT_ERROR, "PrintError", mGtk, rb_eRuntimeError,
127
+ GTK_TYPE_PRINT_ERROR);
128
+
129
+ rb_define_method(gPrintOperation, "initialize", po_initialize, 0);
130
+ rb_define_method(gPrintOperation, "run", po_run, -1);
131
+ rb_define_method(gPrintOperation, "error", po_get_error, 0);
132
+ rb_define_method(gPrintOperation, "finished?", po_is_finished, 0);
133
+ rb_define_method(gPrintOperation, "cancel", po_cancel, 0);
134
+
135
+ rb_define_singleton_method(gPrintOperation, "run_page_setup_dialog",
136
+ po_run_page_setup_dialog, -1);
137
+
138
+ /* GtkPrintStatus */
139
+ G_DEF_CLASS(GTK_TYPE_PRINT_STATUS, "Status", gPrintOperation);
140
+ G_DEF_CONSTANTS(gPrintOperation, GTK_TYPE_PRINT_STATUS, "GTK_PRINT_");
141
+
142
+ /* GtkPrintOperationAction */
143
+ G_DEF_CLASS(GTK_TYPE_PRINT_OPERATION_ACTION,"Action", gPrintOperation);
144
+ G_DEF_CONSTANTS(gPrintOperation, GTK_TYPE_PRINT_OPERATION_ACTION, "GTK_PRINT_OPERATION_");
145
+
146
+ /* GtkPrintOperationResult */
147
+ G_DEF_CLASS(GTK_TYPE_PRINT_OPERATION_RESULT, "Result", gPrintOperation);
148
+ G_DEF_CONSTANTS(gPrintOperation, GTK_TYPE_PRINT_OPERATION_RESULT, "GTK_PRINT_OPERATION_");
149
+
150
+ G_DEF_SETTERS(gPrintOperation);
151
+ #endif
152
+ }