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,162 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /************************************************
3
+
4
+ rbgtkaccelmap.c -
5
+
6
+ $Author: ggc $
7
+ $Date: 2007/07/13 16:07:31 $
8
+
9
+ Copyright (C) 2002,2003 OGASAWARA, Takeshi
10
+ ************************************************/
11
+ #include "global.h"
12
+
13
+ #define RVAL2MOD(mods) (NIL_P(mods) ? 0 : RVAL2GFLAGS(mods, GDK_TYPE_MODIFIER_TYPE))
14
+
15
+ static VALUE
16
+ accel_map_add_entry(self, path, key, mods)
17
+ VALUE self, path, key, mods;
18
+ {
19
+ gtk_accel_map_add_entry(RVAL2CSTR(path), NUM2UINT(key), RVAL2MOD(mods));
20
+ return self;
21
+ }
22
+
23
+ static VALUE
24
+ accel_map_lookup_entry(self, path)
25
+ VALUE self, path;
26
+ {
27
+ GtkAccelKey key;
28
+ if(gtk_accel_map_lookup_entry(RVAL2CSTR(path), &key))
29
+ return BOXED2RVAL(&key, GTK_TYPE_ACCEL_KEY);
30
+ else
31
+ return self;
32
+ }
33
+
34
+ static VALUE
35
+ accel_map_change_entry(self, path, key, mods, replace)
36
+ VALUE self, path, key, mods, replace;
37
+ {
38
+ return CBOOL2RVAL(gtk_accel_map_change_entry(RVAL2CSTR(path), NUM2UINT(key),
39
+ RVAL2MOD(mods), RVAL2CBOOL(replace)));
40
+ }
41
+
42
+ static VALUE
43
+ accel_map_load(self, filename)
44
+ VALUE self, filename;
45
+ {
46
+ gtk_accel_map_load(RVAL2CSTR(filename));
47
+ return self;
48
+ }
49
+
50
+ static VALUE
51
+ accel_map_save(self, filename)
52
+ VALUE self, filename;
53
+ {
54
+ gtk_accel_map_save(RVAL2CSTR(filename));
55
+ return self;
56
+ }
57
+
58
+ static VALUE
59
+ accel_map_add_filter(self, pattern)
60
+ VALUE self, pattern;
61
+ {
62
+ gtk_accel_map_add_filter(RVAL2CSTR(pattern));
63
+ return self;
64
+ }
65
+
66
+ static void
67
+ accel_map_foreach_func(func, path, key, mods, changed)
68
+ gpointer func;
69
+ const gchar *path;
70
+ guint key;
71
+ GdkModifierType mods;
72
+ gboolean changed;
73
+ {
74
+ rb_funcall((VALUE)func, id_call, 4,
75
+ CSTR2RVAL(path), UINT2NUM(key), GFLAGS2RVAL(mods, GDK_TYPE_MODIFIER_TYPE),
76
+ CBOOL2RVAL(changed));
77
+ }
78
+
79
+ static VALUE
80
+ accel_map_foreach(self)
81
+ VALUE self;
82
+ {
83
+ volatile VALUE func = rb_block_proc();
84
+ gtk_accel_map_foreach((gpointer)func,
85
+ (GtkAccelMapForeach)accel_map_foreach_func);
86
+ return self;
87
+ }
88
+
89
+ static VALUE
90
+ accel_map_foreach_unfilterd(self)
91
+ VALUE self;
92
+ {
93
+ volatile VALUE func = rb_block_proc();
94
+ gtk_accel_map_foreach_unfiltered((gpointer)func,
95
+ (GtkAccelMapForeach)accel_map_foreach_func);
96
+ return self;
97
+ }
98
+
99
+ /*
100
+ void gtk_accel_map_load_scanner (GScanner *scanner);
101
+ */
102
+
103
+ /* We don't need them.
104
+ void gtk_accel_map_load_fd (gint fd);
105
+ void gtk_accel_map_save_fd (gint fd);
106
+ */
107
+
108
+ #if GTK_CHECK_VERSION(2,4,0)
109
+ static VALUE
110
+ accel_map_get(self)
111
+ VALUE self;
112
+ {
113
+ return GOBJ2RVAL(gtk_accel_map_get());
114
+ }
115
+
116
+ static VALUE
117
+ accel_map_lock_path(self, accel_path)
118
+ VALUE self, accel_path;
119
+ {
120
+ gtk_accel_map_lock_path(RVAL2CSTR(accel_path));
121
+ return self;
122
+ }
123
+
124
+ static VALUE
125
+ accel_map_unlock_path(self, accel_path)
126
+ VALUE self, accel_path;
127
+ {
128
+ gtk_accel_map_unlock_path(RVAL2CSTR(accel_path));
129
+ return self;
130
+ }
131
+ #endif
132
+
133
+ void
134
+ Init_accel_map()
135
+ {
136
+ #if GTK_CHECK_VERSION(2,4,0)
137
+ VALUE mAccelMap = G_DEF_CLASS(GTK_TYPE_ACCEL_MAP, "AccelMap", mGtk);
138
+
139
+ rb_define_singleton_method(mAccelMap, "add_entry", accel_map_add_entry, 3);
140
+ rb_define_singleton_method(mAccelMap, "lookup_entry", accel_map_lookup_entry, 1);
141
+ rb_define_singleton_method(mAccelMap, "change_entry", accel_map_change_entry, 4);
142
+ rb_define_singleton_method(mAccelMap, "load", accel_map_load, 1);
143
+ rb_define_singleton_method(mAccelMap, "save", accel_map_save, 1);
144
+ rb_define_singleton_method(mAccelMap, "add_filter", accel_map_add_filter, 1);
145
+ rb_define_singleton_method(mAccelMap, "each", accel_map_foreach, 0);
146
+ rb_define_singleton_method(mAccelMap, "each_unfilterd", accel_map_foreach_unfilterd, 0);
147
+ rb_define_singleton_method(mAccelMap, "get", accel_map_get, 0);
148
+ rb_define_singleton_method(mAccelMap, "lock_path", accel_map_lock_path, 1);
149
+ rb_define_singleton_method(mAccelMap, "unlock_path", accel_map_unlock_path, 1);
150
+ #else
151
+ VALUE mAccelMap = rb_define_module_under(mGtk, "AccelMap");
152
+
153
+ rb_define_module_function(mAccelMap, "add_entry", accel_map_add_entry, 3);
154
+ rb_define_module_function(mAccelMap, "lookup_entry", accel_map_lookup_entry, 1);
155
+ rb_define_module_function(mAccelMap, "change_entry", accel_map_change_entry, 4);
156
+ rb_define_module_function(mAccelMap, "load", accel_map_load, 1);
157
+ rb_define_module_function(mAccelMap, "save", accel_map_save, 1);
158
+ rb_define_module_function(mAccelMap, "add_filter", accel_map_add_filter, 1);
159
+ rb_define_module_function(mAccelMap, "each", accel_map_foreach, 0);
160
+ rb_define_module_function(mAccelMap, "each_unfilterd", accel_map_foreach_unfilterd, 0);
161
+ #endif
162
+ }
@@ -0,0 +1,29 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /************************************************
3
+
4
+ rbgtkaccessible.c -
5
+
6
+ $Author: mutoh $
7
+ $Date: 2003/05/24 03:27:02 $
8
+
9
+ Copyright (C) 2003 Masao Mutoh
10
+ ************************************************/
11
+
12
+ #include "global.h"
13
+
14
+ static VALUE
15
+ access_connect_widget_destroyed(self)
16
+ VALUE self;
17
+ {
18
+ gtk_accessible_connect_widget_destroyed(GTK_ACCESSIBLE(RVAL2GOBJ(self)));
19
+ return self;
20
+ }
21
+
22
+ void
23
+ Init_gtk_accessible()
24
+ {
25
+ VALUE gAccess = G_DEF_CLASS(GTK_TYPE_ACCESSIBLE, "Accessible", mGtk);
26
+
27
+ rb_define_method(gAccess, "connect_widget_destroyed", access_connect_widget_destroyed, 0);
28
+ }
29
+
@@ -0,0 +1,277 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /************************************************
3
+
4
+ rbgtkaction.c -
5
+
6
+ $Author: ggc $
7
+ $Date: 2007/07/13 16:07:31 $
8
+
9
+ Copyright (C) 2004-2006 Masao Mutoh
10
+ ************************************************/
11
+
12
+ #include "global.h"
13
+
14
+ #if GTK_CHECK_VERSION(2,4,0)
15
+
16
+ #define _SELF(self) (GTK_ACTION(RVAL2GOBJ(self)))
17
+ #define RVAL2WIDGET(w) (GTK_WIDGET(RVAL2GOBJ(w)))
18
+
19
+ static VALUE
20
+ action_initialize(argc, argv, self)
21
+ int argc;
22
+ VALUE *argv;
23
+ VALUE self;
24
+ {
25
+ VALUE name, label, tooltip, stock_id;
26
+ const gchar *stock = NULL;
27
+
28
+ rb_scan_args(argc, argv, "22", &name, &label, &tooltip, &stock_id);
29
+
30
+ if (TYPE(stock_id) == T_SYMBOL) {
31
+ stock = rb_id2name(SYM2ID(stock_id));
32
+ } else if (TYPE(stock_id) == T_STRING){
33
+ stock = RVAL2CSTR(stock_id);
34
+ }
35
+
36
+ G_INITIALIZE(self, gtk_action_new(RVAL2CSTR(name), RVAL2CSTR(label),
37
+ NIL_P(tooltip) ? NULL : RVAL2CSTR(tooltip),
38
+ stock));
39
+ return Qnil;
40
+ }
41
+
42
+ static VALUE
43
+ action_is_sensitive(self)
44
+ VALUE self;
45
+ {
46
+ return CBOOL2RVAL(gtk_action_is_sensitive(_SELF(self)));
47
+ }
48
+
49
+ static VALUE
50
+ action_is_visible(self)
51
+ VALUE self;
52
+ {
53
+ return CBOOL2RVAL(gtk_action_is_visible(_SELF(self)));
54
+ }
55
+
56
+ /* Defined as property.
57
+ const gchar* gtk_action_get_name (GtkAction *action);
58
+ gboolean gtk_action_get_sensitive (GtkAction *action);
59
+ gboolean gtk_action_get_visible (GtkAction *action);
60
+ */
61
+
62
+ static VALUE
63
+ action_activate(self)
64
+ VALUE self;
65
+ {
66
+ gtk_action_activate(_SELF(self));
67
+ return self;
68
+ }
69
+
70
+ static VALUE
71
+ action_create_icon(self, icon_size)
72
+ VALUE self, icon_size;
73
+ {
74
+ return GOBJ2RVAL(gtk_action_create_icon(_SELF(self),
75
+ RVAL2GENUM(icon_size, GTK_TYPE_ICON_SIZE)));
76
+ }
77
+
78
+ static VALUE
79
+ action_create_menu_item(self)
80
+ VALUE self;
81
+ {
82
+ return GOBJ2RVAL(gtk_action_create_menu_item(_SELF(self)));
83
+ }
84
+
85
+ #if GTK_CHECK_VERSION(2, 12, 0)
86
+ static VALUE
87
+ action_create_menu(VALUE self)
88
+ {
89
+ return GOBJ2RVAL(gtk_action_create_menu(_SELF(self)));
90
+ }
91
+ #endif
92
+
93
+ static VALUE
94
+ action_create_tool_item(self)
95
+ VALUE self;
96
+ {
97
+ return GOBJ2RVAL(gtk_action_create_tool_item(_SELF(self)));
98
+ }
99
+
100
+ static VALUE
101
+ action_connect_proxy(self, proxy)
102
+ VALUE self, proxy;
103
+ {
104
+ gtk_action_connect_proxy(_SELF(self), RVAL2WIDGET(proxy));
105
+ return self;
106
+ }
107
+
108
+ static VALUE
109
+ action_disconnect_proxy(self, proxy)
110
+ VALUE self, proxy;
111
+ {
112
+ gtk_action_disconnect_proxy(_SELF(self), RVAL2WIDGET(proxy));
113
+ return self;
114
+ }
115
+
116
+ static VALUE
117
+ action_get_proxies(self)
118
+ VALUE self;
119
+ {
120
+ /* Owned by GTK+ */
121
+ return GSLIST2ARY(gtk_action_get_proxies(_SELF(self)));
122
+ }
123
+
124
+ static VALUE
125
+ action_connect_accelerator(self)
126
+ VALUE self;
127
+ {
128
+ gtk_action_connect_accelerator(_SELF(self));
129
+ return self;
130
+ }
131
+
132
+ static VALUE
133
+ action_disconnect_accelerator(self)
134
+ VALUE self;
135
+ {
136
+ gtk_action_disconnect_accelerator(_SELF(self));
137
+ return self;
138
+ }
139
+
140
+ static VALUE
141
+ action_block_activate_from(self, proxy)
142
+ VALUE self, proxy;
143
+ {
144
+ gtk_action_block_activate_from(_SELF(self), RVAL2WIDGET(proxy));
145
+ return self;
146
+ }
147
+
148
+ static VALUE
149
+ action_unblock_activate_from(self, proxy)
150
+ VALUE self, proxy;
151
+ {
152
+ gtk_action_unblock_activate_from(_SELF(self), RVAL2WIDGET(proxy));
153
+ return self;
154
+ }
155
+
156
+ static VALUE
157
+ action_set_accel_path(self, accel_path)
158
+ VALUE self, accel_path;
159
+ {
160
+ gtk_action_set_accel_path(_SELF(self), RVAL2CSTR(accel_path));
161
+ return self;
162
+ }
163
+ static VALUE
164
+ action_set_accel_group(self, accel_group)
165
+ VALUE self, accel_group;
166
+ {
167
+ gtk_action_set_accel_group(_SELF(self), RVAL2GOBJ(accel_group));
168
+ return self;
169
+ }
170
+
171
+ #if GTK_CHECK_VERSION(2,6,0)
172
+ /* This set "sensitive" value and call g_object_notify with "sensitive".
173
+ If you want not to call g_object_notify,()
174
+ Use GLib::Object#set_property("sensitive", val) instead.
175
+ */
176
+ static VALUE
177
+ action_set_sensitive(self, sensitive)
178
+ VALUE self, sensitive;
179
+ {
180
+ gtk_action_set_sensitive(_SELF(self), RVAL2CBOOL(sensitive));
181
+ return self;
182
+ }
183
+
184
+ /* This set "visible" value and call g_object_notify with "visible".
185
+ If you want not to call g_object_notify(),
186
+ Use GLib::Object#set_property("visible", val) instead.
187
+ */
188
+ static VALUE
189
+ action_set_visible(self, visible)
190
+ VALUE self, visible;
191
+ {
192
+ gtk_action_set_visible(_SELF(self), RVAL2CBOOL(visible));
193
+ return self;
194
+ }
195
+
196
+ static VALUE
197
+ action_get_accel_path(self)
198
+ VALUE self;
199
+ {
200
+ return CSTR2RVAL(gtk_action_get_accel_path(_SELF(self)));
201
+ }
202
+ #endif
203
+
204
+ #if GTK_CHECK_VERSION(2,8,0)
205
+ static VALUE
206
+ action_get_accel_closure(self)
207
+ VALUE self;
208
+ {
209
+ return BOXED2RVAL(gtk_action_get_accel_closure(_SELF(self)), G_TYPE_CLOSURE);
210
+ }
211
+ #endif
212
+
213
+ static void
214
+ action_mark(void *p)
215
+ {
216
+ GtkAction *action;
217
+ GSList *node;
218
+
219
+ action = GTK_ACTION(p);
220
+ for (node = gtk_action_get_proxies(action);
221
+ node;
222
+ node = g_slist_next(node)) {
223
+ GtkWidget *proxy = node->data;
224
+ rbgobj_gc_mark_instance(proxy);
225
+ }
226
+ }
227
+ #endif
228
+
229
+ void
230
+ Init_gtk_action()
231
+ {
232
+ #if GTK_CHECK_VERSION(2,4,0)
233
+ VALUE gAction;
234
+
235
+ gAction = G_DEF_CLASS_WITH_GC_FUNC(GTK_TYPE_ACTION, "Action", mGtk,
236
+ action_mark, NULL);
237
+
238
+ rb_define_method(gAction, "initialize", action_initialize, -1);
239
+ /* (NOTICE) Gtk::Action#is_sensitive?, #is_visible are special.
240
+ Because there are also Gtk::Action#sensitive?, #visible? as property
241
+ accessors.
242
+ Gtk::Action#is_sensitive?, #is_visible? check its associated
243
+ action group.
244
+ Gtk::Action#sensitive?, #visible? returns the value of the properties.
245
+ */
246
+ rb_define_method(gAction, "is_sensitive?", action_is_sensitive, 0);
247
+ rb_define_method(gAction, "is_visible?", action_is_visible, 0);
248
+ rb_define_method(gAction, "activate", action_activate, 0);
249
+ rb_define_method(gAction, "create_icon", action_create_icon, 1);
250
+ rb_define_method(gAction, "create_menu_item", action_create_menu_item, 0);
251
+ #if GTK_CHECK_VERSION(2, 12, 0)
252
+ rb_define_method(gAction, "create_menu", action_create_menu, 0);
253
+ #endif
254
+ rb_define_method(gAction, "create_tool_item", action_create_tool_item, 0);
255
+ rb_define_method(gAction, "connect_proxy", action_connect_proxy, 1);
256
+ rb_define_method(gAction, "disconnect_proxy", action_disconnect_proxy, 1);
257
+ rb_define_method(gAction, "proxies", action_get_proxies, 0);
258
+ rb_define_method(gAction, "connect_accelerator", action_connect_accelerator, 0);
259
+ rb_define_method(gAction, "disconnect_accelerator", action_disconnect_accelerator, 0);
260
+ rb_define_method(gAction, "block_activate_from", action_block_activate_from, 1);
261
+ rb_define_method(gAction, "unblock_activate_from", action_unblock_activate_from, 1);
262
+ rb_define_method(gAction, "set_accel_path", action_set_accel_path, 1);
263
+ rb_define_method(gAction, "set_accel_group", action_set_accel_group, 1);
264
+
265
+ #if GTK_CHECK_VERSION(2,6,0)
266
+ rb_define_method(gAction, "set_sensitive", action_set_sensitive, 1);
267
+ rb_define_method(gAction, "set_visible", action_set_visible, 1);
268
+ rb_define_method(gAction, "accel_path", action_get_accel_path, 0);
269
+ #endif
270
+
271
+ #if GTK_CHECK_VERSION(2,8,0)
272
+ rb_define_method(gAction, "accel_closure", action_get_accel_closure, 0);
273
+ #endif
274
+
275
+ G_DEF_SETTERS(gAction);
276
+ #endif
277
+ }