gtk3 2.2.4-x64-mingw32

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 (457) hide show
  1. checksums.yaml +7 -0
  2. data/Rakefile +20 -0
  3. data/ext/gtk3/conversions.c +34 -0
  4. data/ext/gtk3/depend +11 -0
  5. data/ext/gtk3/extconf.rb +99 -0
  6. data/ext/gtk3/gtk3.def +10 -0
  7. data/ext/gtk3/init.c +34 -0
  8. data/ext/gtk3/rbgtk-about-dialog.c +113 -0
  9. data/ext/gtk3/rbgtk-accel-group-entry.c +94 -0
  10. data/ext/gtk3/rbgtk-accel-group.c +199 -0
  11. data/ext/gtk3/rbgtk-accel-key.c +120 -0
  12. data/ext/gtk3/rbgtk-accel-label.c +55 -0
  13. data/ext/gtk3/rbgtk-accel-map.c +135 -0
  14. data/ext/gtk3/rbgtk-accelerator.c +78 -0
  15. data/ext/gtk3/rbgtk-accessible.c +40 -0
  16. data/ext/gtk3/rbgtk-action-bar.c +73 -0
  17. data/ext/gtk3/rbgtk-action-group.c +467 -0
  18. data/ext/gtk3/rbgtk-action.c +205 -0
  19. data/ext/gtk3/rbgtk-activatable.c +30 -0
  20. data/ext/gtk3/rbgtk-adjustment.c +98 -0
  21. data/ext/gtk3/rbgtk-alignment.c +75 -0
  22. data/ext/gtk3/rbgtk-allocation.c +166 -0
  23. data/ext/gtk3/rbgtk-app-chooser-button.c +70 -0
  24. data/ext/gtk3/rbgtk-app-chooser-dialog.c +68 -0
  25. data/ext/gtk3/rbgtk-app-chooser-widget.c +40 -0
  26. data/ext/gtk3/rbgtk-app-chooser.c +47 -0
  27. data/ext/gtk3/rbgtk-application.c +69 -0
  28. data/ext/gtk3/rbgtk-arrow.c +56 -0
  29. data/ext/gtk3/rbgtk-aspect-frame.c +56 -0
  30. data/ext/gtk3/rbgtk-assistant.c +218 -0
  31. data/ext/gtk3/rbgtk-bin.c +42 -0
  32. data/ext/gtk3/rbgtk-binding-set.c +154 -0
  33. data/ext/gtk3/rbgtk-border.c +119 -0
  34. data/ext/gtk3/rbgtk-box.c +146 -0
  35. data/ext/gtk3/rbgtk-buildable.c +96 -0
  36. data/ext/gtk3/rbgtk-builder.c +166 -0
  37. data/ext/gtk3/rbgtk-button-box.c +87 -0
  38. data/ext/gtk3/rbgtk-button.c +93 -0
  39. data/ext/gtk3/rbgtk-calendar.c +118 -0
  40. data/ext/gtk3/rbgtk-cell-editable.c +57 -0
  41. data/ext/gtk3/rbgtk-cell-layout.c +144 -0
  42. data/ext/gtk3/rbgtk-cell-renderer-accel.c +41 -0
  43. data/ext/gtk3/rbgtk-cell-renderer-combo.c +38 -0
  44. data/ext/gtk3/rbgtk-cell-renderer-pixbuf.c +41 -0
  45. data/ext/gtk3/rbgtk-cell-renderer-progress.c +38 -0
  46. data/ext/gtk3/rbgtk-cell-renderer-spin.c +39 -0
  47. data/ext/gtk3/rbgtk-cell-renderer-spinner.c +38 -0
  48. data/ext/gtk3/rbgtk-cell-renderer-text.c +48 -0
  49. data/ext/gtk3/rbgtk-cell-renderer-toggle.c +39 -0
  50. data/ext/gtk3/rbgtk-cell-renderer.c +119 -0
  51. data/ext/gtk3/rbgtk-cell-view.c +95 -0
  52. data/ext/gtk3/rbgtk-check-button.c +64 -0
  53. data/ext/gtk3/rbgtk-check-menu-item.c +64 -0
  54. data/ext/gtk3/rbgtk-clip-board.c +389 -0
  55. data/ext/gtk3/rbgtk-color-button.c +55 -0
  56. data/ext/gtk3/rbgtk-color-selection-dialog.c +56 -0
  57. data/ext/gtk3/rbgtk-color-selection.c +219 -0
  58. data/ext/gtk3/rbgtk-combo-box-text.c +138 -0
  59. data/ext/gtk3/rbgtk-combo-box.c +147 -0
  60. data/ext/gtk3/rbgtk-const.c +79 -0
  61. data/ext/gtk3/rbgtk-container.c +788 -0
  62. data/ext/gtk3/rbgtk-css-provider.c +110 -0
  63. data/ext/gtk3/rbgtk-dialog.c +206 -0
  64. data/ext/gtk3/rbgtk-drag-gdk-drag-context.c +108 -0
  65. data/ext/gtk3/rbgtk-drag.c +93 -0
  66. data/ext/gtk3/rbgtk-drawing-area.c +42 -0
  67. data/ext/gtk3/rbgtk-editable.c +149 -0
  68. data/ext/gtk3/rbgtk-entry-buffer.c +87 -0
  69. data/ext/gtk3/rbgtk-entry-completion.c +122 -0
  70. data/ext/gtk3/rbgtk-entry.c +184 -0
  71. data/ext/gtk3/rbgtk-event-box.c +42 -0
  72. data/ext/gtk3/rbgtk-expander.c +49 -0
  73. data/ext/gtk3/rbgtk-file-chooser-button.c +50 -0
  74. data/ext/gtk3/rbgtk-file-chooser-dialog.c +62 -0
  75. data/ext/gtk3/rbgtk-file-chooser-widget.c +40 -0
  76. data/ext/gtk3/rbgtk-file-chooser.c +381 -0
  77. data/ext/gtk3/rbgtk-file-filter.c +128 -0
  78. data/ext/gtk3/rbgtk-file-system-error.c +48 -0
  79. data/ext/gtk3/rbgtk-fixed.c +61 -0
  80. data/ext/gtk3/rbgtk-font-button.c +49 -0
  81. data/ext/gtk3/rbgtk-font-chooser-dialog.c +56 -0
  82. data/ext/gtk3/rbgtk-font-chooser-widget.c +45 -0
  83. data/ext/gtk3/rbgtk-font-chooser.c +78 -0
  84. data/ext/gtk3/rbgtk-frame.c +69 -0
  85. data/ext/gtk3/rbgtk-gdk-event.c +38 -0
  86. data/ext/gtk3/rbgtk-grid.c +105 -0
  87. data/ext/gtk3/rbgtk-handle-box.c +45 -0
  88. data/ext/gtk3/rbgtk-header-bar.c +58 -0
  89. data/ext/gtk3/rbgtk-hsv.c +102 -0
  90. data/ext/gtk3/rbgtk-icon-factory.c +85 -0
  91. data/ext/gtk3/rbgtk-icon-info.c +115 -0
  92. data/ext/gtk3/rbgtk-icon-set.c +84 -0
  93. data/ext/gtk3/rbgtk-icon-size.c +91 -0
  94. data/ext/gtk3/rbgtk-icon-source.c +184 -0
  95. data/ext/gtk3/rbgtk-icon-theme.c +268 -0
  96. data/ext/gtk3/rbgtk-icon-view.c +295 -0
  97. data/ext/gtk3/rbgtk-im-multicontext.c +48 -0
  98. data/ext/gtk3/rbgtk-image-menu-item.c +67 -0
  99. data/ext/gtk3/rbgtk-image.c +162 -0
  100. data/ext/gtk3/rbgtk-imcon-text-simple.c +69 -0
  101. data/ext/gtk3/rbgtk-imcon-text.c +133 -0
  102. data/ext/gtk3/rbgtk-infobar.c +121 -0
  103. data/ext/gtk3/rbgtk-invisible.c +49 -0
  104. data/ext/gtk3/rbgtk-label.c +139 -0
  105. data/ext/gtk3/rbgtk-layout.c +93 -0
  106. data/ext/gtk3/rbgtk-level-bar.c +88 -0
  107. data/ext/gtk3/rbgtk-link-button.c +49 -0
  108. data/ext/gtk3/rbgtk-list-store.c +399 -0
  109. data/ext/gtk3/rbgtk-lock-button.c +50 -0
  110. data/ext/gtk3/rbgtk-menu-button.c +41 -0
  111. data/ext/gtk3/rbgtk-menu-item.c +95 -0
  112. data/ext/gtk3/rbgtk-menu-shell.c +106 -0
  113. data/ext/gtk3/rbgtk-menu-tool-button.c +81 -0
  114. data/ext/gtk3/rbgtk-menu.c +168 -0
  115. data/ext/gtk3/rbgtk-menubar.c +43 -0
  116. data/ext/gtk3/rbgtk-message-dialog.c +74 -0
  117. data/ext/gtk3/rbgtk-misc.c +70 -0
  118. data/ext/gtk3/rbgtk-notebook.c +383 -0
  119. data/ext/gtk3/rbgtk-numerable-icon.c +50 -0
  120. data/ext/gtk3/rbgtk-orientable.c +27 -0
  121. data/ext/gtk3/rbgtk-overlay.c +53 -0
  122. data/ext/gtk3/rbgtk-page-setup-unix-dialog.c +94 -0
  123. data/ext/gtk3/rbgtk-page-setup.c +195 -0
  124. data/ext/gtk3/rbgtk-paned.c +114 -0
  125. data/ext/gtk3/rbgtk-paper-size.c +179 -0
  126. data/ext/gtk3/rbgtk-plug.c +85 -0
  127. data/ext/gtk3/rbgtk-print-context.c +125 -0
  128. data/ext/gtk3/rbgtk-print-job.c +148 -0
  129. data/ext/gtk3/rbgtk-print-operation-preview.c +59 -0
  130. data/ext/gtk3/rbgtk-print-operation.c +149 -0
  131. data/ext/gtk3/rbgtk-print-settings.c +807 -0
  132. data/ext/gtk3/rbgtk-print-unix-dialog.c +90 -0
  133. data/ext/gtk3/rbgtk-printer.c +155 -0
  134. data/ext/gtk3/rbgtk-progress-bar.c +72 -0
  135. data/ext/gtk3/rbgtk-radio-action.c +122 -0
  136. data/ext/gtk3/rbgtk-radio-button.c +89 -0
  137. data/ext/gtk3/rbgtk-radio-menu-item.c +147 -0
  138. data/ext/gtk3/rbgtk-radio-tool-button.c +131 -0
  139. data/ext/gtk3/rbgtk-range.c +68 -0
  140. data/ext/gtk3/rbgtk-recent-action.c +64 -0
  141. data/ext/gtk3/rbgtk-recent-chooser-dialog.c +66 -0
  142. data/ext/gtk3/rbgtk-recent-chooser-menu.c +50 -0
  143. data/ext/gtk3/rbgtk-recent-chooser-widget.c +48 -0
  144. data/ext/gtk3/rbgtk-recent-chooser.c +198 -0
  145. data/ext/gtk3/rbgtk-recent-data.c +188 -0
  146. data/ext/gtk3/rbgtk-recent-filter-info.c +201 -0
  147. data/ext/gtk3/rbgtk-recent-filter.c +169 -0
  148. data/ext/gtk3/rbgtk-recent-info.c +213 -0
  149. data/ext/gtk3/rbgtk-recent-manager.c +134 -0
  150. data/ext/gtk3/rbgtk-revealer.c +42 -0
  151. data/ext/gtk3/rbgtk-scale-button.c +84 -0
  152. data/ext/gtk3/rbgtk-scale.c +97 -0
  153. data/ext/gtk3/rbgtk-scrollable.c +31 -0
  154. data/ext/gtk3/rbgtk-scrollbar.c +52 -0
  155. data/ext/gtk3/rbgtk-scrolled-window.c +122 -0
  156. data/ext/gtk3/rbgtk-search-bar.c +59 -0
  157. data/ext/gtk3/rbgtk-search-entry.c +42 -0
  158. data/ext/gtk3/rbgtk-selection-data.c +281 -0
  159. data/ext/gtk3/rbgtk-selection.c +168 -0
  160. data/ext/gtk3/rbgtk-separator-menu-item.c +39 -0
  161. data/ext/gtk3/rbgtk-separator-tool-item.c +38 -0
  162. data/ext/gtk3/rbgtk-separator.c +44 -0
  163. data/ext/gtk3/rbgtk-settings.c +229 -0
  164. data/ext/gtk3/rbgtk-size-group.c +66 -0
  165. data/ext/gtk3/rbgtk-socket.c +82 -0
  166. data/ext/gtk3/rbgtk-spin-button.c +132 -0
  167. data/ext/gtk3/rbgtk-spinner.c +55 -0
  168. data/ext/gtk3/rbgtk-stack-switcher.c +41 -0
  169. data/ext/gtk3/rbgtk-stack.c +106 -0
  170. data/ext/gtk3/rbgtk-status-bar.c +77 -0
  171. data/ext/gtk3/rbgtk-status-icon.c +122 -0
  172. data/ext/gtk3/rbgtk-stock.c +213 -0
  173. data/ext/gtk3/rbgtk-style-context-gdk-screen.c +61 -0
  174. data/ext/gtk3/rbgtk-style-context.c +411 -0
  175. data/ext/gtk3/rbgtk-style-properties.c +118 -0
  176. data/ext/gtk3/rbgtk-style-provider.c +67 -0
  177. data/ext/gtk3/rbgtk-switch.c +40 -0
  178. data/ext/gtk3/rbgtk-table.c +190 -0
  179. data/ext/gtk3/rbgtk-target-list.c +125 -0
  180. data/ext/gtk3/rbgtk-tearoff-menu-item.c +41 -0
  181. data/ext/gtk3/rbgtk-text-appearance.c +236 -0
  182. data/ext/gtk3/rbgtk-text-attributes.c +326 -0
  183. data/ext/gtk3/rbgtk-text-buffer.c +899 -0
  184. data/ext/gtk3/rbgtk-text-child-anchor.c +56 -0
  185. data/ext/gtk3/rbgtk-text-iter.c +732 -0
  186. data/ext/gtk3/rbgtk-text-mark.c +71 -0
  187. data/ext/gtk3/rbgtk-text-tag-table.c +96 -0
  188. data/ext/gtk3/rbgtk-text-tag.c +68 -0
  189. data/ext/gtk3/rbgtk-text-view.c +336 -0
  190. data/ext/gtk3/rbgtk-theming-engine.c +257 -0
  191. data/ext/gtk3/rbgtk-toggle-action.c +61 -0
  192. data/ext/gtk3/rbgtk-toggle-button.c +87 -0
  193. data/ext/gtk3/rbgtk-toggle-tool-button.c +61 -0
  194. data/ext/gtk3/rbgtk-tool-button.c +66 -0
  195. data/ext/gtk3/rbgtk-tool-item.c +200 -0
  196. data/ext/gtk3/rbgtk-tool-itemgroup.c +70 -0
  197. data/ext/gtk3/rbgtk-tool-shell.c +96 -0
  198. data/ext/gtk3/rbgtk-toolbar.c +118 -0
  199. data/ext/gtk3/rbgtk-tooltip-gdk-display.c +39 -0
  200. data/ext/gtk3/rbgtk-tooltip.c +100 -0
  201. data/ext/gtk3/rbgtk-tree-dragdest.c +28 -0
  202. data/ext/gtk3/rbgtk-tree-dragsource.c +28 -0
  203. data/ext/gtk3/rbgtk-tree-iter.c +258 -0
  204. data/ext/gtk3/rbgtk-tree-model.c +246 -0
  205. data/ext/gtk3/rbgtk-tree-modelfilter.c +197 -0
  206. data/ext/gtk3/rbgtk-tree-modelsort.c +111 -0
  207. data/ext/gtk3/rbgtk-tree-path.c +191 -0
  208. data/ext/gtk3/rbgtk-tree-rowreference.c +140 -0
  209. data/ext/gtk3/rbgtk-tree-selection.c +190 -0
  210. data/ext/gtk3/rbgtk-tree-sortable.c +122 -0
  211. data/ext/gtk3/rbgtk-tree-store.c +330 -0
  212. data/ext/gtk3/rbgtk-tree-view-column.c +256 -0
  213. data/ext/gtk3/rbgtk-tree-view.c +716 -0
  214. data/ext/gtk3/rbgtk-ui-manager.c +189 -0
  215. data/ext/gtk3/rbgtk-viewport.c +44 -0
  216. data/ext/gtk3/rbgtk-volume-button.c +41 -0
  217. data/ext/gtk3/rbgtk-widget-path.c +229 -0
  218. data/ext/gtk3/rbgtk-widget.c +1554 -0
  219. data/ext/gtk3/rbgtk-window-group.c +80 -0
  220. data/ext/gtk3/rbgtk-window.c +565 -0
  221. data/ext/gtk3/rbgtk.c +783 -0
  222. data/ext/gtk3/rbgtk3.h +90 -0
  223. data/ext/gtk3/rbgtk3conversions.h +439 -0
  224. data/ext/gtk3/rbgtk3private.h +300 -0
  225. data/ext/gtk3/rbgtk3util.c +67 -0
  226. data/ext/gtk3/rbgtk3util.h +32 -0
  227. data/extconf.rb +49 -0
  228. data/lib/2.0/gtk3.so +0 -0
  229. data/lib/2.1/gtk3.so +0 -0
  230. data/lib/2.2/gtk3.so +0 -0
  231. data/lib/gtk3.rb +11 -0
  232. data/lib/gtk3/base.rb +67 -0
  233. data/lib/gtk3/deprecated.rb +1004 -0
  234. data/sample/gtk-demo/README +7 -0
  235. data/sample/gtk-demo/alphatest.png +0 -0
  236. data/sample/gtk-demo/apple-red.png +0 -0
  237. data/sample/gtk-demo/appwindow.rb +233 -0
  238. data/sample/gtk-demo/background.jpg +0 -0
  239. data/sample/gtk-demo/builder.rb +51 -0
  240. data/sample/gtk-demo/button_box.rb +83 -0
  241. data/sample/gtk-demo/cairo-arc-negative.rb +41 -0
  242. data/sample/gtk-demo/cairo-arc.rb +41 -0
  243. data/sample/gtk-demo/cairo-clip-image.rb +51 -0
  244. data/sample/gtk-demo/cairo-clip-rectangle.rb +35 -0
  245. data/sample/gtk-demo/cairo-clip.rb +35 -0
  246. data/sample/gtk-demo/cairo-curve-rectangle.rb +76 -0
  247. data/sample/gtk-demo/cairo-curve-to.rb +43 -0
  248. data/sample/gtk-demo/cairo-dash.rb +39 -0
  249. data/sample/gtk-demo/cairo-fill-and-stroke.rb +32 -0
  250. data/sample/gtk-demo/cairo-fill-and-stroke2.rb +38 -0
  251. data/sample/gtk-demo/cairo-gradient.rb +35 -0
  252. data/sample/gtk-demo/cairo-image-pattern.rb +39 -0
  253. data/sample/gtk-demo/cairo-image.rb +49 -0
  254. data/sample/gtk-demo/cairo-line-cap.rb +53 -0
  255. data/sample/gtk-demo/cairo-line-join.rb +41 -0
  256. data/sample/gtk-demo/cairo-long-lines.rb +41 -0
  257. data/sample/gtk-demo/cairo-operator.rb +83 -0
  258. data/sample/gtk-demo/cairo-path.rb +28 -0
  259. data/sample/gtk-demo/cairo-pattern-fill.rb +88 -0
  260. data/sample/gtk-demo/cairo-self-intersect.rb +32 -0
  261. data/sample/gtk-demo/cairo-text-align-center.rb +45 -0
  262. data/sample/gtk-demo/cairo-text-extents.rb +46 -0
  263. data/sample/gtk-demo/cairo-text.rb +43 -0
  264. data/sample/gtk-demo/changedisplay.rb +407 -0
  265. data/sample/gtk-demo/clipboard.rb +67 -0
  266. data/sample/gtk-demo/colorsel.rb +82 -0
  267. data/sample/gtk-demo/common.rb +87 -0
  268. data/sample/gtk-demo/css_accordion.css +53 -0
  269. data/sample/gtk-demo/css_accordion.rb +75 -0
  270. data/sample/gtk-demo/demo.ui +258 -0
  271. data/sample/gtk-demo/dialog.rb +137 -0
  272. data/sample/gtk-demo/drawingarea.rb +205 -0
  273. data/sample/gtk-demo/editable_cells.rb +173 -0
  274. data/sample/gtk-demo/entry_completion.rb +63 -0
  275. data/sample/gtk-demo/expander.rb +42 -0
  276. data/sample/gtk-demo/floppybuddy.gif +0 -0
  277. data/sample/gtk-demo/gnome-applets.png +0 -0
  278. data/sample/gtk-demo/gnome-calendar.png +0 -0
  279. data/sample/gtk-demo/gnome-foot.png +0 -0
  280. data/sample/gtk-demo/gnome-fs-directory.png +0 -0
  281. data/sample/gtk-demo/gnome-fs-regular.png +0 -0
  282. data/sample/gtk-demo/gnome-gimp.png +0 -0
  283. data/sample/gtk-demo/gnome-gmush.png +0 -0
  284. data/sample/gtk-demo/gnome-gsame.png +0 -0
  285. data/sample/gtk-demo/gnu-keys.png +0 -0
  286. data/sample/gtk-demo/gtk-logo-rgb.gif +0 -0
  287. data/sample/gtk-demo/hypertext.rb +211 -0
  288. data/sample/gtk-demo/iconview.rb +110 -0
  289. data/sample/gtk-demo/images.rb +197 -0
  290. data/sample/gtk-demo/infobar.rb +78 -0
  291. data/sample/gtk-demo/item_factory.rb +94 -0
  292. data/sample/gtk-demo/links.rb +53 -0
  293. data/sample/gtk-demo/list_store.rb +138 -0
  294. data/sample/gtk-demo/main.rb +384 -0
  295. data/sample/gtk-demo/menus.rb +172 -0
  296. data/sample/gtk-demo/panes.rb +156 -0
  297. data/sample/gtk-demo/pixbufs.rb +167 -0
  298. data/sample/gtk-demo/printing.rb +128 -0
  299. data/sample/gtk-demo/reset.css +69 -0
  300. data/sample/gtk-demo/rotated_text.rb +72 -0
  301. data/sample/gtk-demo/ruby-gnome2-logo.png +0 -0
  302. data/sample/gtk-demo/sizegroup.rb +118 -0
  303. data/sample/gtk-demo/spinner.rb +59 -0
  304. data/sample/gtk-demo/stock_browser.rb +233 -0
  305. data/sample/gtk-demo/textview.rb +436 -0
  306. data/sample/gtk-demo/theming.ui +319 -0
  307. data/sample/gtk-demo/theming_style_classes.rb +48 -0
  308. data/sample/gtk-demo/tree_store.rb +270 -0
  309. data/sample/misc/aboutdialog.rb +42 -0
  310. data/sample/misc/aboutdialog2.rb +42 -0
  311. data/sample/misc/alpha-demo.rb +70 -0
  312. data/sample/misc/assistant.rb +281 -0
  313. data/sample/misc/bindings.rb +97 -0
  314. data/sample/misc/button.rb +72 -0
  315. data/sample/misc/button2.rb +28 -0
  316. data/sample/misc/buttonbox.rb +93 -0
  317. data/sample/misc/cairo-pong.rb +217 -0
  318. data/sample/misc/calendar.rb +66 -0
  319. data/sample/misc/checkbutton.rb +49 -0
  320. data/sample/misc/colorselection.rb +22 -0
  321. data/sample/misc/combo_check.rb +79 -0
  322. data/sample/misc/combobox.rb +85 -0
  323. data/sample/misc/composited-windows.rb +113 -0
  324. data/sample/misc/cursor.rb +34 -0
  325. data/sample/misc/dialog.rb +44 -0
  326. data/sample/misc/dialog2.rb +36 -0
  327. data/sample/misc/dnd.rb +64 -0
  328. data/sample/misc/dndtreeview.rb +56 -0
  329. data/sample/misc/drag-move.rb +139 -0
  330. data/sample/misc/drawing.rb +109 -0
  331. data/sample/misc/entry.rb +34 -0
  332. data/sample/misc/entrycompletion.rb +33 -0
  333. data/sample/misc/expander.rb +27 -0
  334. data/sample/misc/filechooser.rb +41 -0
  335. data/sample/misc/frame.rb +69 -0
  336. data/sample/misc/gdkscreen.rb +32 -0
  337. data/sample/misc/gnome-logo-icon.png +0 -0
  338. data/sample/misc/helloworld.rb +35 -0
  339. data/sample/misc/iconview.rb +38 -0
  340. data/sample/misc/image.rb +42 -0
  341. data/sample/misc/itemfactory.rb +73 -0
  342. data/sample/misc/itemfactory2.rb +74 -0
  343. data/sample/misc/keyboard_grab.rb +29 -0
  344. data/sample/misc/label.rb +33 -0
  345. data/sample/misc/linkbutton.rb +42 -0
  346. data/sample/misc/listview.rb +92 -0
  347. data/sample/misc/menu.rb +81 -0
  348. data/sample/misc/misc_button.rb +49 -0
  349. data/sample/misc/mouse-gesture.rb +465 -0
  350. data/sample/misc/pangorenderer.rb +66 -0
  351. data/sample/misc/pointer_grab.rb +34 -0
  352. data/sample/misc/print.rb +247 -0
  353. data/sample/misc/properties.rb +86 -0
  354. data/sample/misc/radiobutton.rb +47 -0
  355. data/sample/misc/recentchooserdialog.rb +52 -0
  356. data/sample/misc/rgtk+cairo.rb +42 -0
  357. data/sample/misc/scalebutton.rb +19 -0
  358. data/sample/misc/settings.rb +41 -0
  359. data/sample/misc/statusicon.rb +106 -0
  360. data/sample/misc/stock.rb +36 -0
  361. data/sample/misc/style_property.rb +67 -0
  362. data/sample/misc/style_property.rc +19 -0
  363. data/sample/misc/t-gtkplug.rb +58 -0
  364. data/sample/misc/t-gtksocket.rb +65 -0
  365. data/sample/misc/test.xpm +92 -0
  366. data/sample/misc/textbuffer_serialize.rb +130 -0
  367. data/sample/misc/threads.rb +70 -0
  368. data/sample/misc/to_drawable.rb +42 -0
  369. data/sample/misc/togglebutton.rb +34 -0
  370. data/sample/misc/toolbar.rb +55 -0
  371. data/sample/misc/tooltips.rb +204 -0
  372. data/sample/misc/tree_combo.rb +79 -0
  373. data/sample/misc/tree_progress.rb +61 -0
  374. data/sample/misc/treemodelfilter.rb +49 -0
  375. data/sample/misc/treeview.rb +71 -0
  376. data/sample/misc/uimanager.rb +148 -0
  377. data/sample/misc/uimanager2.rb +91 -0
  378. data/sample/misc/uimanager2.xml +36 -0
  379. data/sample/misc/window.rb +24 -0
  380. data/sample/misc/xbm_cursor.rb +43 -0
  381. data/sample/testgtk/3DRings.xpm +116 -0
  382. data/sample/testgtk/FilesQueue.xpm +98 -0
  383. data/sample/testgtk/Modeller.xpm +117 -0
  384. data/sample/testgtk/README +14 -0
  385. data/sample/testgtk/button.rb +124 -0
  386. data/sample/testgtk/buttonbox.rb +100 -0
  387. data/sample/testgtk/check-n.xpm +21 -0
  388. data/sample/testgtk/check-y.xpm +21 -0
  389. data/sample/testgtk/checkbutton.rb +67 -0
  390. data/sample/testgtk/circles.xbm +46 -0
  391. data/sample/testgtk/colorselect.rb +33 -0
  392. data/sample/testgtk/dialog.rb +48 -0
  393. data/sample/testgtk/entry.rb +73 -0
  394. data/sample/testgtk/filesel.rb +65 -0
  395. data/sample/testgtk/fontselection.rb +56 -0
  396. data/sample/testgtk/labels.rb +74 -0
  397. data/sample/testgtk/layout.rb +108 -0
  398. data/sample/testgtk/marble.xpm +408 -0
  399. data/sample/testgtk/menu.rb +79 -0
  400. data/sample/testgtk/notebook.rb +280 -0
  401. data/sample/testgtk/pixmap.rb +58 -0
  402. data/sample/testgtk/progressbar.rb +173 -0
  403. data/sample/testgtk/radiobutton.rb +61 -0
  404. data/sample/testgtk/range.rb +65 -0
  405. data/sample/testgtk/reparent.rb +91 -0
  406. data/sample/testgtk/sample.rb +80 -0
  407. data/sample/testgtk/savedposition.rb +87 -0
  408. data/sample/testgtk/scrolledwindow.rb +67 -0
  409. data/sample/testgtk/shapedwindow.rb +99 -0
  410. data/sample/testgtk/spinbutton.rb +181 -0
  411. data/sample/testgtk/statusbar.rb +89 -0
  412. data/sample/testgtk/test.xpm +92 -0
  413. data/sample/testgtk/testgtk.rb +176 -0
  414. data/sample/testgtk/testgtkrc +146 -0
  415. data/sample/testgtk/testgtkrc2 +21 -0
  416. data/sample/testgtk/togglebutton.rb +53 -0
  417. data/sample/testgtk/toolbar.rb +82 -0
  418. data/sample/testgtk/tooltips.rb +41 -0
  419. data/sample/testgtk/wmhints.rb +40 -0
  420. data/test/gtk-test-utils.rb +15 -0
  421. data/test/run-test.rb +58 -0
  422. data/test/test_gc.rb +22 -0
  423. data/test/test_gtk.rb +23 -0
  424. data/test/test_gtk_about_dialog.rb +13 -0
  425. data/test/test_gtk_accel_group_entry.rb +24 -0
  426. data/test/test_gtk_accel_key.rb +24 -0
  427. data/test/test_gtk_accessible.rb +31 -0
  428. data/test/test_gtk_action_group.rb +46 -0
  429. data/test/test_gtk_allocation.rb +24 -0
  430. data/test/test_gtk_border.rb +24 -0
  431. data/test/test_gtk_buildable.rb +56 -0
  432. data/test/test_gtk_builder.rb +166 -0
  433. data/test/test_gtk_container.rb +32 -0
  434. data/test/test_gtk_css_provider.rb +27 -0
  435. data/test/test_gtk_entry.rb +52 -0
  436. data/test/test_gtk_header_bar.rb +66 -0
  437. data/test/test_gtk_icon_theme.rb +31 -0
  438. data/test/test_gtk_icon_view.rb +41 -0
  439. data/test/test_gtk_image.rb +8 -0
  440. data/test/test_gtk_level_bar.rb +82 -0
  441. data/test/test_gtk_list_store.rb +105 -0
  442. data/test/test_gtk_menu_button.rb +49 -0
  443. data/test/test_gtk_menu_item.rb +13 -0
  444. data/test/test_gtk_recent_data.rb +24 -0
  445. data/test/test_gtk_recent_filter_info.rb +26 -0
  446. data/test/test_gtk_revealer.rb +57 -0
  447. data/test/test_gtk_search_bar.rb +55 -0
  448. data/test/test_gtk_search_entry.rb +34 -0
  449. data/test/test_gtk_stack.rb +115 -0
  450. data/test/test_gtk_stack_switcher.rb +30 -0
  451. data/test/test_gtk_style_context.rb +30 -0
  452. data/test/test_gtk_style_properties.rb +38 -0
  453. data/test/test_gtk_tree_path.rb +20 -0
  454. data/test/test_gtk_tree_selection.rb +31 -0
  455. data/test/test_gtk_unix_print.rb +14 -0
  456. data/test/test_gtk_widget.rb +24 -0
  457. metadata +582 -0
@@ -0,0 +1,147 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
+ * Copyright (C) 2004 Masao Mutoh
5
+ *
6
+ * This library is free software; you can redistribute it and/or
7
+ * modify it under the terms of the GNU Lesser General Public
8
+ * License as published by the Free Software Foundation; either
9
+ * version 2.1 of the License, or (at your option) any later version.
10
+ *
11
+ * This library is distributed in the hope that it will be useful,
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
+ * Lesser General Public License for more details.
15
+ *
16
+ * You should have received a copy of the GNU Lesser General Public
17
+ * License along with this library; if not, write to the Free Software
18
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
+ * MA 02110-1301 USA
20
+ */
21
+
22
+ #include "rbgtk3private.h"
23
+
24
+ #define RG_TARGET_NAMESPACE cComboBox
25
+ #define _SELF(self) (RVAL2GTKCOMBOBOX(self))
26
+
27
+ static VALUE
28
+ rg_initialize(int argc, VALUE *argv, VALUE self)
29
+ {
30
+ VALUE options, rb_entry, rb_model, rb_area;
31
+ gboolean entry;
32
+ GtkTreeModel *model;
33
+ GtkCellArea *area;
34
+ GtkWidget *widget;
35
+
36
+ rb_scan_args(argc, argv, "01", &options);
37
+ rbg_scan_options(options,
38
+ "entry", &rb_entry,
39
+ "model", &rb_model,
40
+ "area", &rb_area,
41
+ NULL);
42
+ entry = RVAL2CBOOL(rb_entry);
43
+ model = NIL_P(rb_model) ? NULL : RVAL2GTKTREEMODEL(rb_model);
44
+ area = NIL_P(rb_area) ? NULL : RVAL2GTKCELLAREA(rb_area);
45
+
46
+ if (entry) {
47
+ if (model)
48
+ widget = gtk_combo_box_new_with_model_and_entry(model);
49
+ else if (area)
50
+ widget = gtk_combo_box_new_with_area_and_entry(area);
51
+ else
52
+ widget = gtk_combo_box_new_with_entry();
53
+ } else {
54
+ if (model)
55
+ widget = gtk_combo_box_new_with_model(model);
56
+ else if (area)
57
+ widget = gtk_combo_box_new_with_area(area);
58
+ else
59
+ widget = gtk_combo_box_new();
60
+ }
61
+ RBGTK_INITIALIZE(self, widget);
62
+
63
+ return Qnil;
64
+ }
65
+
66
+ static VALUE
67
+ rg_active_iter(VALUE self)
68
+ {
69
+ GtkTreeIter iter;
70
+ VALUE val = Qnil;
71
+ gboolean ret = gtk_combo_box_get_active_iter(_SELF(self), &iter);
72
+ if (ret){
73
+ iter.user_data3 = (gpointer)gtk_combo_box_get_model(_SELF(self));
74
+ val = GTKTREEITER2RVAL(&iter);
75
+ }
76
+ return val;
77
+ }
78
+
79
+ static VALUE
80
+ rg_set_active_iter(VALUE self, VALUE iter)
81
+ {
82
+ gtk_combo_box_set_active_iter(_SELF(self), RVAL2GTKTREEITER(iter));
83
+ return self;
84
+ }
85
+
86
+ static VALUE
87
+ rg_popup_accessible(VALUE self)
88
+ {
89
+ return GOBJ2RVAL(gtk_combo_box_get_popup_accessible(_SELF(self)));
90
+ }
91
+
92
+ static gboolean
93
+ row_separator_func(GtkTreeModel *model, GtkTreeIter *iter, gpointer *func)
94
+ {
95
+ iter->user_data3 = model;
96
+ return RVAL2CBOOL(rb_funcall((VALUE)func, id_call, 2, GOBJ2RVAL(model),
97
+ GTKTREEITER2RVAL(iter)));
98
+ }
99
+
100
+ static VALUE
101
+ rg_set_row_separator_func(VALUE self)
102
+ {
103
+ VALUE func = rb_block_proc();
104
+ G_RELATIVE(self, func);
105
+ gtk_combo_box_set_row_separator_func(_SELF(self),
106
+ (GtkTreeViewRowSeparatorFunc)row_separator_func,
107
+ (gpointer)func, NULL);
108
+ return self;
109
+ }
110
+
111
+ static VALUE
112
+ rg_title(VALUE self)
113
+ {
114
+ return CSTR2RVAL(gtk_combo_box_get_title(_SELF(self)));
115
+ }
116
+
117
+ /* TODO: merge to popup? */
118
+ static VALUE
119
+ rg_popup_for_device(VALUE self, VALUE device)
120
+ {
121
+ gtk_combo_box_popup_for_device(_SELF(self), RVAL2GDKDEVICE(device));
122
+
123
+ return self;
124
+ }
125
+
126
+ static VALUE
127
+ rg_set_title(VALUE self, VALUE title)
128
+ {
129
+ gtk_combo_box_set_title(_SELF(self), RVAL2CSTR(title));
130
+
131
+ return self;
132
+ }
133
+
134
+ void
135
+ Init_gtk_combobox(VALUE mGtk)
136
+ {
137
+ VALUE RG_TARGET_NAMESPACE = G_DEF_CLASS(GTK_TYPE_COMBO_BOX, "ComboBox", mGtk);
138
+
139
+ RG_DEF_METHOD(initialize, -1);
140
+ RG_DEF_METHOD(active_iter, 0);
141
+ RG_DEF_METHOD(set_active_iter, 1);
142
+ RG_DEF_METHOD(popup_accessible, 0);
143
+ RG_DEF_METHOD(set_row_separator_func, 0);
144
+ RG_DEF_METHOD(title, 0);
145
+ RG_DEF_METHOD(popup_for_device, 1);
146
+ RG_DEF_METHOD(set_title, 1);
147
+ }
@@ -0,0 +1,79 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
+ * Copyright (C) 2002,2003 Ruby-GNOME2 Project Team
5
+ * Copyright (C) 1998-2000 Yukihiro Matsumoto,
6
+ * Daisuke Kanda,
7
+ * Hiroshi Igarashi
8
+ *
9
+ * This library is free software; you can redistribute it and/or
10
+ * modify it under the terms of the GNU Lesser General Public
11
+ * License as published by the Free Software Foundation; either
12
+ * version 2.1 of the License, or (at your option) any later version.
13
+ *
14
+ * This library is distributed in the hope that it will be useful,
15
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
+ * Lesser General Public License for more details.
18
+ *
19
+ * You should have received a copy of the GNU Lesser General Public
20
+ * License along with this library; if not, write to the Free Software
21
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
22
+ * MA 02110-1301 USA
23
+ */
24
+
25
+ #include "rbgtk3private.h"
26
+
27
+ void
28
+ Init_gtk_const(VALUE mGtk)
29
+ {
30
+ rb_define_const(mGtk, "BINDING_VERSION",
31
+ rb_ary_new3(3, INT2FIX(RBGTK_MAJOR_VERSION),
32
+ INT2FIX(RBGTK_MINOR_VERSION),
33
+ INT2FIX(RBGTK_MICRO_VERSION)));
34
+
35
+ rb_define_const(mGtk, "BUILD_VERSION",
36
+ rb_ary_new3(3, INT2FIX(GTK_MAJOR_VERSION),
37
+ INT2FIX(GTK_MINOR_VERSION),
38
+ INT2FIX(GTK_MICRO_VERSION)));
39
+
40
+ rb_define_const(mGtk, "VERSION",
41
+ rb_ary_new3(3, INT2FIX(gtk_major_version),
42
+ INT2FIX(gtk_minor_version),
43
+ INT2FIX(gtk_micro_version)));
44
+ rb_define_const(mGtk, "MAJOR_VERSION", INT2FIX(gtk_major_version));
45
+ rb_define_const(mGtk, "MINOR_VERSION", INT2FIX(gtk_minor_version));
46
+ rb_define_const(mGtk, "MICRO_VERSION", INT2FIX(gtk_micro_version));
47
+ rb_define_const(mGtk, "BINARY_AGE", INT2FIX(gtk_binary_age));
48
+ rb_define_const(mGtk, "INTERFACE_AGE", INT2FIX(gtk_interface_age));
49
+
50
+ G_DEF_CLASS(GTK_TYPE_ACCEL_FLAGS, "AccelFlags", mGtk);
51
+ G_DEF_CLASS(GTK_TYPE_ATTACH_OPTIONS, "AttachOptions", mGtk);
52
+ G_DEF_CLASS(GTK_TYPE_CORNER_TYPE, "CornerType", mGtk);
53
+ G_DEF_CLASS(GTK_TYPE_DELETE_TYPE, "DeleteType", mGtk);
54
+ G_DEF_CLASS(GTK_TYPE_DIRECTION_TYPE, "DirectionType", mGtk);
55
+ G_DEF_CLASS(GTK_TYPE_EXPANDER_STYLE, "ExpanderStyle", mGtk);
56
+ G_DEF_CLASS(GTK_TYPE_JUSTIFICATION, "Justification", mGtk);
57
+ G_DEF_CLASS(GTK_TYPE_MESSAGE_TYPE, "MessageType", mGtk);
58
+ G_DEF_CLASS(GTK_TYPE_MOVEMENT_STEP, "MovementStep", mGtk);
59
+ G_DEF_CLASS(GTK_TYPE_ORIENTATION, "Orientation", mGtk);
60
+ G_DEF_CLASS(GTK_TYPE_PACK_TYPE, "PackType", mGtk);
61
+ G_DEF_CLASS(GTK_TYPE_PATH_PRIORITY_TYPE, "PathPriorityType", mGtk);
62
+ G_DEF_CLASS(GTK_TYPE_PATH_TYPE, "PathType", mGtk);
63
+ G_DEF_CLASS(GTK_TYPE_POLICY_TYPE, "PolicyType", mGtk);
64
+ G_DEF_CLASS(GTK_TYPE_POSITION_TYPE, "PositionType", mGtk);
65
+ G_DEF_CLASS(GTK_TYPE_RELIEF_STYLE, "ReliefStyle", mGtk);
66
+ G_DEF_CLASS(GTK_TYPE_RESIZE_MODE, "ResizeMode", mGtk);
67
+ G_DEF_CLASS(GTK_TYPE_RESPONSE_TYPE, "ResponseType", mGtk);
68
+ G_DEF_CLASS(GTK_TYPE_SCROLL_STEP, "ScrollStep", mGtk);
69
+ G_DEF_CLASS(GTK_TYPE_SCROLL_TYPE, "ScrollType", mGtk);
70
+ G_DEF_CLASS(GTK_TYPE_SELECTION_MODE, "SelectionMode", mGtk);
71
+ G_DEF_CLASS(GTK_TYPE_SHADOW_TYPE, "ShadowType", mGtk);
72
+ G_DEF_CLASS(GTK_TYPE_STATE_FLAGS, "StateFlags", mGtk);
73
+ G_DEF_CLASS(GTK_TYPE_STATE_TYPE, "StateType", mGtk);
74
+ /* deprecated
75
+ G_DEF_CLASS(GTK_TYPE_SUBMENU_DIRECTION, "SubmenuDirection", mGtk);
76
+ G_DEF_CLASS(GTK_TYPE_SUBMENU_PLACEMENT, "SubmenuPlacement", mGtk);
77
+ */
78
+ G_DEF_CLASS(GTK_TYPE_SORT_TYPE, "SortType", mGtk);
79
+ }
@@ -0,0 +1,788 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
+ * Copyright (C) 2002-2006 Ruby-GNOME2 Project Team
5
+ * Copyright (C) 1998-2000 Yukihiro Matsumoto,
6
+ * Daisuke Kanda,
7
+ * Hiroshi Igarashi
8
+ *
9
+ * This library is free software; you can redistribute it and/or
10
+ * modify it under the terms of the GNU Lesser General Public
11
+ * License as published by the Free Software Foundation; either
12
+ * version 2.1 of the License, or (at your option) any later version.
13
+ *
14
+ * This library is distributed in the hope that it will be useful,
15
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
+ * Lesser General Public License for more details.
18
+ *
19
+ * You should have received a copy of the GNU Lesser General Public
20
+ * License along with this library; if not, write to the Free Software
21
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
22
+ * MA 02110-1301 USA
23
+ */
24
+
25
+ #include "rbgtk3private.h"
26
+
27
+ #define RG_TARGET_NAMESPACE cContainer
28
+ #define _SELF(self) (RVAL2GTKCONTAINER(self))
29
+
30
+ #define RubyGtkContainerHookModule "RubyGtkContainerHook__"
31
+
32
+ /*
33
+ We don't need this.
34
+ #define GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID(object, property_id, pspec)
35
+ */
36
+
37
+ static VALUE type_to_prop_setter_table;
38
+ static VALUE type_to_prop_getter_table;
39
+
40
+ static VALUE
41
+ rg_resize_container_p(VALUE self)
42
+ {
43
+ return CBOOL2RVAL(GTK_IS_RESIZE_CONTAINER(_SELF(self)));
44
+ }
45
+
46
+ static VALUE
47
+ rg_remove(VALUE self, VALUE other)
48
+ {
49
+ G_CHILD_REMOVE(self, other);
50
+ gtk_container_remove(_SELF(self), RVAL2GTKWIDGET(other));
51
+ return self;
52
+ }
53
+
54
+ static VALUE
55
+ rg_check_resize(VALUE self)
56
+ {
57
+ gtk_container_check_resize(_SELF(self));
58
+ return self;
59
+ }
60
+
61
+ static VALUE
62
+ rg_each(int argc, VALUE *argv, VALUE self)
63
+ {
64
+ VALUE callback;
65
+
66
+ rb_scan_args(argc, argv, "01", &callback);
67
+ if (NIL_P(callback)) {
68
+ callback = rb_block_proc();
69
+ }
70
+ gtk_container_foreach(_SELF(self), exec_callback, (gpointer)callback);
71
+ return self;
72
+ }
73
+
74
+ static VALUE
75
+ rg_each_forall(int argc, VALUE *argv, VALUE self)
76
+ {
77
+ VALUE callback;
78
+
79
+ rb_scan_args(argc, argv, "01", &callback);
80
+ if (NIL_P(callback)) {
81
+ callback = rb_block_proc();
82
+ }
83
+ gtk_container_forall(_SELF(self), exec_callback, (gpointer)callback);
84
+ return self;
85
+ }
86
+
87
+ static VALUE
88
+ rg_children(VALUE self)
89
+ {
90
+ return GOBJGLIST2RVAL_FREE(gtk_container_get_children(_SELF(self)),
91
+ g_list_free, NULL);
92
+ }
93
+
94
+ static VALUE
95
+ rg_set_reallocate_redraws(VALUE self, VALUE needs_redraws)
96
+ {
97
+ gtk_container_set_reallocate_redraws(_SELF(self), RVAL2CBOOL(needs_redraws));
98
+ return self;
99
+ }
100
+
101
+ static VALUE
102
+ rg_set_focus_child(VALUE self, VALUE child)
103
+ {
104
+ gtk_container_set_focus_child(_SELF(self), RVAL2GTKWIDGET(child));
105
+ return self;
106
+ }
107
+
108
+ static VALUE
109
+ rg_set_focus_vadjustment(VALUE self, VALUE adjustment)
110
+ {
111
+ gtk_container_set_focus_vadjustment(_SELF(self),
112
+ NIL_P(adjustment) ? NULL : RVAL2GTKADJUSTMENT(adjustment));
113
+ return self;
114
+ }
115
+
116
+ static VALUE
117
+ rg_set_focus_hadjustment(VALUE self, VALUE adjustment)
118
+ {
119
+ gtk_container_set_focus_hadjustment(_SELF(self),
120
+ NIL_P(adjustment) ? NULL : RVAL2GTKADJUSTMENT(adjustment));
121
+ return self;
122
+ }
123
+
124
+ static VALUE
125
+ rg_focus_vadjustment(VALUE self)
126
+ {
127
+ return GOBJ2RVAL(gtk_container_get_focus_vadjustment(_SELF(self)));
128
+ }
129
+
130
+ static VALUE
131
+ rg_focus_hadjustment(VALUE self)
132
+ {
133
+ return GOBJ2RVAL(gtk_container_get_focus_hadjustment(_SELF(self)));
134
+ }
135
+
136
+ static VALUE
137
+ rg_resize_children(VALUE self)
138
+ {
139
+ gtk_container_resize_children(_SELF(self));
140
+ return self;
141
+ }
142
+
143
+ static VALUE
144
+ rg_child_type(VALUE self)
145
+ {
146
+ return GTYPE2CLASS(gtk_container_child_type(_SELF(self)));
147
+ }
148
+
149
+ /*
150
+ void gtk_container_child_get (GtkContainer *container,
151
+ GtkWidget *child,
152
+ const gchar *first_prop_name,
153
+ ...);
154
+ void gtk_container_child_set (GtkContainer *container,
155
+ GtkWidget *child,
156
+ const gchar *first_prop_name,
157
+ ...);
158
+ */
159
+
160
+ static void
161
+ rbgtkcontainer_register_child_property_setter(GType gtype, const char *name, RValueToGValueFunc func)
162
+ {
163
+ GObjectClass* oclass;
164
+ GParamSpec* pspec;
165
+
166
+ VALUE table = rb_hash_aref(type_to_prop_setter_table, INT2FIX(gtype));
167
+ if (NIL_P(table)){
168
+ table = rb_hash_new();
169
+ rb_hash_aset(type_to_prop_setter_table, INT2FIX(gtype), table);
170
+ }
171
+
172
+ oclass = g_type_class_ref(gtype);
173
+ pspec = gtk_container_class_find_child_property(oclass, name);
174
+
175
+ rb_hash_aset(table, rb_intern(g_param_spec_get_name(pspec)),
176
+ Data_Wrap_Struct(rb_cData, NULL, NULL, func));
177
+
178
+ g_type_class_unref(oclass);
179
+ }
180
+
181
+ static void
182
+ rbgtkcontainer_register_child_property_getter(GType gtype, const char *name, GValueToRValueFunc func)
183
+ {
184
+ GObjectClass* oclass;
185
+ GParamSpec* pspec;
186
+
187
+ VALUE table = rb_hash_aref(type_to_prop_getter_table, INT2FIX(gtype));
188
+ if (NIL_P(table)){
189
+ table = rb_hash_new();
190
+ rb_hash_aset(type_to_prop_getter_table, INT2FIX(gtype), table);
191
+ }
192
+
193
+ oclass = g_type_class_ref(gtype);
194
+ pspec = gtk_container_class_find_child_property(oclass, name);
195
+
196
+ rb_hash_aset(table, rb_intern(g_param_spec_get_name(pspec)),
197
+ Data_Wrap_Struct(rb_cData, NULL, NULL, func));
198
+ }
199
+
200
+ static VALUE
201
+ rg_child_get_property(VALUE self, VALUE child, VALUE prop_name)
202
+ {
203
+ GParamSpec* pspec;
204
+ const char* name;
205
+
206
+ if (SYMBOL_P(prop_name)) {
207
+ name = rb_id2name(SYM2ID(prop_name));
208
+ } else {
209
+ name = RVAL2CSTR(prop_name);
210
+ }
211
+
212
+ pspec = gtk_container_class_find_child_property(
213
+ G_OBJECT_GET_CLASS(RVAL2GOBJ(self)), name);
214
+
215
+ if (!pspec)
216
+ rb_raise(rb_eArgError, "No such property: %s", name);
217
+ else {
218
+ GValueToRValueFunc getter = NULL;
219
+ GValue gval = G_VALUE_INIT;
220
+ VALUE ret;
221
+
222
+ {
223
+ VALUE table = rb_hash_aref(type_to_prop_getter_table,
224
+ INT2FIX(pspec->owner_type));
225
+ if (!NIL_P(table)){
226
+ VALUE obj = rb_hash_aref(table, rb_intern(g_param_spec_get_name(pspec)));
227
+ if (!NIL_P(obj))
228
+ Data_Get_Struct(obj, void, getter);
229
+ }
230
+ }
231
+ g_value_init(&gval, G_PARAM_SPEC_VALUE_TYPE(pspec));
232
+ gtk_container_child_get_property(RVAL2GTKCONTAINER(self),
233
+ RVAL2GTKWIDGET(child),
234
+ name , &gval);
235
+ ret = getter ? getter(&gval) : GVAL2RVAL(&gval);
236
+
237
+ G_CHILD_ADD(child, ret);
238
+
239
+ g_value_unset(&gval);
240
+ return ret;
241
+ }
242
+ }
243
+
244
+ static VALUE
245
+ rg_child_set_property(VALUE self, VALUE child, VALUE prop_name, VALUE val)
246
+ {
247
+ GParamSpec* pspec;
248
+ const char* name;
249
+
250
+ if (SYMBOL_P(prop_name)) {
251
+ name = rb_id2name(SYM2ID(prop_name));
252
+ } else {
253
+ name = RVAL2CSTR(prop_name);
254
+ }
255
+
256
+ pspec = gtk_container_class_find_child_property(
257
+ G_OBJECT_GET_CLASS(RVAL2GOBJ(self)), name);
258
+
259
+ if (!pspec)
260
+ rb_raise(rb_eArgError, "No such property: %s", name);
261
+ else {
262
+ RValueToGValueFunc setter = NULL;
263
+ GValue gval = G_VALUE_INIT;
264
+ g_value_init(&gval, G_PARAM_SPEC_VALUE_TYPE(pspec));
265
+
266
+ {
267
+ VALUE table = rb_hash_aref(type_to_prop_setter_table,
268
+ INT2FIX(pspec->owner_type));
269
+ if (!NIL_P(table)){
270
+ VALUE obj = rb_hash_aref(table, rb_intern(g_param_spec_get_name(pspec)));
271
+ if (!NIL_P(obj))
272
+ Data_Get_Struct(obj, void, setter);
273
+ }
274
+ }
275
+
276
+ if (setter)
277
+ setter(val, &gval);
278
+ else {
279
+ if (!NIL_P(val))
280
+ rbgobj_rvalue_to_gvalue(val, &gval);
281
+ }
282
+
283
+ G_CHILD_ADD(child, val);
284
+
285
+ gtk_container_child_set_property(RVAL2GTKCONTAINER(self),
286
+ RVAL2GTKWIDGET(child), name, &gval);
287
+
288
+ g_value_unset(&gval);
289
+ return self;
290
+ }
291
+ }
292
+
293
+ static VALUE
294
+ rg_add(int argc, VALUE *argv, VALUE self)
295
+ {
296
+ VALUE other, properties;
297
+ GtkWidget *child;
298
+
299
+ rb_scan_args(argc, argv, "11", &other, &properties);
300
+
301
+ child = RVAL2GTKWIDGET(other);
302
+ gtk_widget_freeze_child_notify(child);
303
+ gtk_container_add(_SELF(self), child);
304
+
305
+ G_CHILD_ADD(self, other);
306
+
307
+ if (gtk_widget_get_parent(child) && (! NIL_P(properties))){
308
+ int i;
309
+ VALUE ary;
310
+
311
+ Check_Type(properties, T_HASH);
312
+ ary = rb_funcall(properties, rb_intern("to_a"), 0);
313
+
314
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
315
+ rg_child_set_property(self, other,
316
+ RARRAY_PTR(RARRAY_PTR(ary)[i])[0],
317
+ RARRAY_PTR(RARRAY_PTR(ary)[i])[1]);
318
+ }
319
+ }
320
+ gtk_widget_thaw_child_notify(child);
321
+ return self;
322
+ }
323
+
324
+ /*
325
+ void gtk_container_child_get_valist (GtkContainer *container,
326
+ GtkWidget *child,
327
+ const gchar *first_property_name,
328
+ va_list var_args);
329
+ void gtk_container_child_set_valist (GtkContainer *container,
330
+ GtkWidget *child,
331
+ const gchar *first_property_name,
332
+ va_list var_args);
333
+ */
334
+
335
+ /* deprecated
336
+ static VALUE
337
+ rg_propagate_expose(VALUE self, VALUE child, VALUE event)
338
+ {
339
+ gtk_container_propagate_expose(_SELF(self), RVAL2GTKWIDGET(child),
340
+ (GdkEventExpose *)RVAL2GEV(event));
341
+ return self;
342
+ }
343
+ */
344
+
345
+ static VALUE
346
+ rg_focus_chain(VALUE self)
347
+ {
348
+ gboolean set_explicitly;
349
+ GList *glist = NULL;
350
+
351
+ set_explicitly = gtk_container_get_focus_chain(_SELF(self), &glist);
352
+ if (!set_explicitly) {
353
+ return Qnil;
354
+ }
355
+ return GOBJGLIST2RVAL_FREE(glist, g_list_free, NULL);
356
+ }
357
+
358
+ struct rval2gtkwidgetglist_args {
359
+ VALUE ary;
360
+ long n;
361
+ GList *result;
362
+ };
363
+
364
+ static VALUE
365
+ rbg_rval2gtkwidgetglist_body(VALUE value)
366
+ {
367
+ long i;
368
+ struct rval2gtkwidgetglist_args *args = (struct rval2gtkwidgetglist_args *)value;
369
+
370
+ for (i = 0; i < args->n; i++)
371
+ args->result = g_list_append(args->result, RVAL2GTKWIDGET(RARRAY_PTR(args->ary)[i]));
372
+
373
+ return Qnil;
374
+ }
375
+
376
+ static G_GNUC_NORETURN VALUE
377
+ rbg_rval2gtkwidgetglist_rescue(VALUE value)
378
+ {
379
+ g_list_free(((struct rval2gtkwidgetglist_args *)value)->result);
380
+
381
+ rb_exc_raise(rb_errinfo());
382
+ }
383
+
384
+ static GList *
385
+ rbg_rval2gtkwidgetglist(VALUE value)
386
+ {
387
+ struct rval2gtkwidgetglist_args args;
388
+
389
+ args.ary = rb_ary_to_ary(value);
390
+ args.n = RARRAY_LEN(args.ary);
391
+ args.result = NULL;
392
+
393
+ rb_rescue(rbg_rval2gtkwidgetglist_body, (VALUE)&args,
394
+ rbg_rval2gtkwidgetglist_rescue, (VALUE)&args);
395
+
396
+ return args.result;
397
+ }
398
+
399
+ #define RVAL2GTKWIDGETGLIST(value) rbg_rval2gtkwidgetglist(value)
400
+
401
+ static VALUE
402
+ rg_set_focus_chain(VALUE self, VALUE rbfocusable_widgets)
403
+ {
404
+ GtkContainer *container = _SELF(self);
405
+ GList *focusable_widgets = RVAL2GTKWIDGETGLIST(rbfocusable_widgets);
406
+
407
+ gtk_container_set_focus_chain(container, focusable_widgets);
408
+
409
+ g_list_free(focusable_widgets);
410
+
411
+ return self;
412
+ }
413
+
414
+ static VALUE
415
+ rg_unset_focus_chain(VALUE self)
416
+ {
417
+ gtk_container_unset_focus_chain(_SELF(self));
418
+ return self;
419
+ }
420
+
421
+ static VALUE
422
+ rg_s_child_property(VALUE self, VALUE property_name)
423
+ {
424
+ GObjectClass* oclass;
425
+ const char* name;
426
+ GParamSpec* prop;
427
+ VALUE result;
428
+
429
+ if (SYMBOL_P(property_name)) {
430
+ name = rb_id2name(SYM2ID(property_name));
431
+ } else {
432
+ name = RVAL2CSTR(property_name);
433
+ }
434
+
435
+ oclass = g_type_class_ref(CLASS2GTYPE(self));
436
+
437
+ prop = gtk_container_class_find_child_property(oclass, name);
438
+ if (!prop){
439
+ g_type_class_unref(oclass);
440
+ rb_raise(rb_eNameError, "no such property: %s", name);
441
+ }
442
+
443
+ result = GOBJ2RVAL(prop);
444
+ g_type_class_unref(oclass);
445
+ return result;
446
+ }
447
+
448
+ static VALUE
449
+ rg_s_install_child_property(int argc, VALUE *argv, VALUE self)
450
+ {
451
+ const RGObjClassInfo* cinfo = rbgobj_lookup_class(self);
452
+ GtkContainerClass* gclass;
453
+ VALUE spec, prop_id;
454
+ GParamSpec* pspec;
455
+
456
+ rb_scan_args(argc, argv, "11", &spec, &prop_id);
457
+
458
+ pspec = RVAL2GPARAMSPEC(spec);
459
+
460
+ if (cinfo->klass != self)
461
+ rb_raise(rb_eTypeError, "%s isn't registerd class",
462
+ rb_class2name(self));
463
+
464
+ gclass = GTK_CONTAINER_CLASS(g_type_class_ref(cinfo->gtype));
465
+ gtk_container_class_install_child_property(gclass,
466
+ NIL_P(prop_id) ? 1 : NUM2UINT(prop_id),
467
+ pspec);
468
+
469
+ return self;
470
+ }
471
+
472
+ static VALUE
473
+ rg_s_child_properties(int argc, VALUE *argv, VALUE self)
474
+ {
475
+ GObjectClass* oclass = g_type_class_ref(CLASS2GTYPE(self));
476
+ guint n_properties;
477
+ GParamSpec** props;
478
+ VALUE inherited_too;
479
+ VALUE ary;
480
+ guint i;
481
+
482
+ if (rb_scan_args(argc, argv, "01", &inherited_too) == 0)
483
+ inherited_too = Qtrue;
484
+
485
+ props = gtk_container_class_list_child_properties(oclass, &n_properties);
486
+
487
+ ary = rb_ary_new();
488
+ for (i = 0; i < n_properties; i++){
489
+ if (RVAL2CBOOL(inherited_too)
490
+ || GTYPE2CLASS(props[i]->owner_type) == self)
491
+ rb_ary_push(ary, CSTR2RVAL(props[i]->name));
492
+ }
493
+ g_free(props);
494
+ g_type_class_unref(oclass);
495
+ return ary;
496
+ }
497
+
498
+ /**********************************************************************/
499
+
500
+ static VALUE proc_mod_eval;
501
+ static GQuark q_ruby_setter;
502
+ static GQuark q_ruby_getter;
503
+
504
+ static VALUE
505
+ cont_initialize(int argc, VALUE *argv, VALUE self)
506
+ {
507
+ VALUE params_hash;
508
+ GObject* gobj;
509
+
510
+ rb_scan_args(argc, argv, "01", &params_hash);
511
+
512
+ if (!NIL_P(params_hash))
513
+ Check_Type(params_hash, T_HASH);
514
+
515
+ gobj = rbgobj_gobject_new(RVAL2GTYPE(self), params_hash);
516
+
517
+ RBGTK_INITIALIZE(self, gobj);
518
+ return Qnil;
519
+ }
520
+
521
+ // FIXME: use rb_protect
522
+ static void
523
+ get_prop_func(GObject* object,
524
+ G_GNUC_UNUSED guint property_id,
525
+ GValue* value,
526
+ GParamSpec* pspec)
527
+ {
528
+ ID ruby_getter = (ID)g_param_spec_get_qdata(pspec, q_ruby_getter);
529
+ if (!ruby_getter) {
530
+ gchar* name = g_strdup(g_param_spec_get_name(pspec));
531
+ gchar* p;
532
+ for (p = name; *p; p++) {
533
+ if (*p == '-')
534
+ *p = '_';
535
+ }
536
+ ruby_getter = rb_intern(name);
537
+ g_param_spec_set_qdata(pspec, q_ruby_getter, (gpointer)ruby_getter);
538
+ g_free(name);
539
+ }
540
+
541
+ {
542
+ VALUE ret = rb_funcall(GOBJ2RVAL(object), ruby_getter, 0);
543
+ rbgobj_rvalue_to_gvalue(ret, value);
544
+ }
545
+ }
546
+
547
+ // FIXME: use rb_protect
548
+ static void
549
+ set_prop_func(GObject* object,
550
+ G_GNUC_UNUSED guint property_id,
551
+ const GValue* value,
552
+ GParamSpec* pspec)
553
+ {
554
+ ID ruby_setter = (ID)g_param_spec_get_qdata(pspec, q_ruby_setter);
555
+ if (!ruby_setter) {
556
+ gchar* name = g_strconcat(g_param_spec_get_name(pspec), "=", NULL);
557
+ gchar* p;
558
+ for (p = name; *p; p++) {
559
+ if (*p == '-')
560
+ *p = '_';
561
+ }
562
+ ruby_setter = rb_intern(name);
563
+ g_param_spec_set_qdata(pspec, q_ruby_setter, (gpointer)ruby_setter);
564
+ g_free(name);
565
+ }
566
+
567
+ rb_funcall(GOBJ2RVAL(object), ruby_setter, 1, GVAL2RVAL(value));
568
+ }
569
+
570
+ // FIXME: use rb_protect
571
+ static void
572
+ get_child_prop_func(GtkContainer *container,
573
+ GtkWidget *child,
574
+ G_GNUC_UNUSED guint property_id,
575
+ GValue *value,
576
+ GParamSpec *pspec)
577
+ {
578
+ ID ruby_getter = (ID)g_param_spec_get_qdata(pspec, q_ruby_getter);
579
+ if (!ruby_getter) {
580
+ gchar* name = g_strconcat("get_", g_param_spec_get_name(pspec), NULL);
581
+ gchar* p;
582
+ for (p = name; *p; p++) {
583
+ if (*p == '-')
584
+ *p = '_';
585
+ }
586
+ ruby_getter = rb_intern(name);
587
+ g_param_spec_set_qdata(pspec, q_ruby_getter, (gpointer)ruby_getter);
588
+ g_free(name);
589
+ }
590
+
591
+ {
592
+ VALUE ret = rb_funcall(GOBJ2RVAL(container), ruby_getter, 1, GOBJ2RVAL(child));
593
+ rbgobj_rvalue_to_gvalue(ret, value);
594
+ }
595
+ }
596
+
597
+ // FIXME: use rb_protect
598
+ static void
599
+ set_child_prop_func(GtkContainer *container,
600
+ GtkWidget *child,
601
+ G_GNUC_UNUSED guint property_id,
602
+ const GValue *value,
603
+ GParamSpec *pspec)
604
+ {
605
+ ID ruby_setter = (ID)g_param_spec_get_qdata(pspec, q_ruby_setter);
606
+ if (!ruby_setter) {
607
+ gchar* name = g_strconcat("set_", g_param_spec_get_name(pspec), NULL);
608
+ gchar* p;
609
+ for (p = name; *p; p++) {
610
+ if (*p == '-')
611
+ *p = '_';
612
+ }
613
+ ruby_setter = rb_intern(name);
614
+ g_param_spec_set_qdata(pspec, q_ruby_setter, (gpointer)ruby_setter);
615
+ g_free(name);
616
+ }
617
+
618
+ rb_funcall(GOBJ2RVAL(container), ruby_setter, 2, GOBJ2RVAL(child), GVAL2RVAL(value));
619
+ }
620
+
621
+ // FIXME: use rb_protect
622
+ static void
623
+ class_init_func(gpointer g_class, G_GNUC_UNUSED gpointer class_data)
624
+ {
625
+ GObjectClass* g_class1 = G_OBJECT_CLASS(g_class);
626
+ GtkContainerClass* g_class2 = GTK_CONTAINER_CLASS(g_class);
627
+
628
+ g_class1->set_property = set_prop_func;
629
+ g_class1->get_property = get_prop_func;
630
+
631
+ g_class2->set_child_property = set_child_prop_func;
632
+ g_class2->get_child_property = get_child_prop_func;
633
+
634
+ #if 0
635
+ VALUE class_init_proc = (VALUE)class_data;
636
+ rb_funcall(proc_mod_eval, rb_intern("call"), 2,
637
+ GTYPE2CLASS(G_TYPE_FROM_CLASS(g_class)), class_init_proc);
638
+ #endif
639
+ }
640
+
641
+ static VALUE
642
+ rg_s_type_register(int argc, VALUE* argv, VALUE self)
643
+ {
644
+ VALUE type_name, flags;
645
+ volatile VALUE class_init_proc = Qnil;
646
+ GType parent_type;
647
+ GTypeInfo* info;
648
+
649
+ rb_scan_args(argc, argv, "03", &type_name, &info, &flags);
650
+
651
+ /* TODO: Replace this copy-paste job with the real thing in glib2. */
652
+ {
653
+ const RGObjClassInfo* cinfo = rbgobj_lookup_class(self);
654
+ if (cinfo->klass == self)
655
+ rb_raise(rb_eTypeError, "already registered");
656
+ }
657
+
658
+ {
659
+ VALUE superclass = rb_funcall(self, rb_intern("superclass"), 0);
660
+ const RGObjClassInfo* cinfo = CLASS2CINFO(superclass);
661
+ if (cinfo->klass != superclass)
662
+ rb_raise(rb_eTypeError, "super class must be registered to GLib");
663
+ parent_type = cinfo->gtype;
664
+ }
665
+
666
+ if (NIL_P(type_name)){
667
+ VALUE s = rb_funcall(self, rb_intern("name"), 0);
668
+
669
+ if (strlen(StringValuePtr(s)) == 0)
670
+ rb_raise(rb_eTypeError, "can't determine type name");
671
+
672
+ type_name = rb_funcall(
673
+ rb_eval_string("lambda{|x| x.gsub(/::/,'') }"),
674
+ rb_intern("call"), 1, s);
675
+ }
676
+
677
+ {
678
+ GTypeQuery query;
679
+ g_type_query(parent_type, &query);
680
+
681
+ /* TODO: This should not require a new GTypeInfo, as GLib doesn't
682
+ * retain a copy. */
683
+ info = g_new0(GTypeInfo, 1);
684
+ info->class_size = query.class_size;
685
+ info->base_init = NULL;
686
+ info->base_finalize = NULL;
687
+ info->class_init = class_init_func;
688
+ info->class_finalize = NULL;
689
+ info->class_data = (gpointer)class_init_proc;
690
+ info->instance_size = query.instance_size;
691
+ info->n_preallocs = 0;
692
+ info->instance_init = NULL;
693
+ info->value_table = NULL;
694
+ }
695
+
696
+ {
697
+ GType type = g_type_register_static(parent_type,
698
+ StringValuePtr(type_name),
699
+ info,
700
+ NIL_P(flags) ? 0 : NUM2INT(flags));
701
+ G_RELATIVE(self, class_init_proc);
702
+
703
+ rbgobj_register_class(self, type, TRUE, TRUE);
704
+
705
+ {
706
+ RGObjClassInfo* cinfo = (RGObjClassInfo*)rbgobj_lookup_class(self);
707
+ cinfo->flags |= RBGOBJ_DEFINED_BY_RUBY;
708
+ }
709
+
710
+ {
711
+ GType parent = g_type_parent(type);
712
+ const RGObjClassInfo* cinfo = GTYPE2CINFO(parent);
713
+ VALUE m = rb_define_module_under(self, RubyGtkContainerHookModule);
714
+
715
+ if (! (cinfo->flags & RBGOBJ_DEFINED_BY_RUBY)) {
716
+ rbg_define_method(m, "initialize", cont_initialize, -1);
717
+ }
718
+
719
+ rb_include_module(self, m);
720
+ }
721
+
722
+ return Qnil;
723
+ }
724
+ }
725
+ /**********************************************************************/
726
+
727
+ static void
728
+ cont_mark_callback(GtkWidget *w, G_GNUC_UNUSED gpointer data)
729
+ {
730
+ rbgobj_gc_mark_instance(w);
731
+ }
732
+
733
+ static void
734
+ cont_mark(void* p)
735
+ {
736
+ gtk_container_forall(GTK_CONTAINER(p), cont_mark_callback, NULL);
737
+ }
738
+
739
+ /**********************************************************************/
740
+
741
+ void
742
+ Init_gtk_container(VALUE mGtk)
743
+ {
744
+ VALUE RG_TARGET_NAMESPACE;
745
+
746
+ RG_TARGET_NAMESPACE = G_DEF_CLASS_WITH_GC_FUNC(GTK_TYPE_CONTAINER, "Container",
747
+ mGtk, cont_mark, NULL);
748
+ RG_DEF_METHOD_P(resize_container, 0);
749
+ RG_DEF_METHOD(add, -1);
750
+ RG_DEF_ALIAS("<<", "add");
751
+ RG_DEF_METHOD(remove, 1);
752
+ RG_DEF_METHOD(check_resize, 0);
753
+ RG_DEF_METHOD(each, -1);
754
+ RG_DEF_METHOD(each_forall, -1);
755
+ RG_DEF_METHOD(children, 0);
756
+ RG_DEF_METHOD(set_reallocate_redraws, 1);
757
+ RG_DEF_METHOD(set_focus_child, 1);
758
+ RG_DEF_METHOD(set_focus_vadjustment, 1);
759
+ RG_DEF_METHOD(set_focus_hadjustment, 1);
760
+ RG_DEF_METHOD(focus_vadjustment, 0);
761
+ RG_DEF_METHOD(focus_hadjustment, 0);
762
+ RG_DEF_METHOD(resize_children, 0);
763
+ RG_DEF_METHOD(child_type, 0);
764
+ RG_DEF_METHOD(child_get_property, 2);
765
+ RG_DEF_METHOD(child_set_property, 3);
766
+ /* deprecated
767
+ RG_DEF_METHOD(propagate_expose, 2);
768
+ */
769
+ RG_DEF_METHOD(focus_chain, 0);
770
+ RG_DEF_METHOD(set_focus_chain, 1);
771
+ RG_DEF_METHOD(unset_focus_chain, 0);
772
+ RG_DEF_SMETHOD(child_property, 1);
773
+ RG_DEF_SMETHOD(child_properties, -1);
774
+ RG_DEF_SMETHOD(install_child_property, -1);
775
+
776
+ q_ruby_getter = g_quark_from_static_string("__ruby_getter");
777
+ q_ruby_setter = g_quark_from_static_string("__ruby_setter");
778
+
779
+ RG_DEF_SMETHOD(type_register, -1);
780
+
781
+ rb_global_variable(&proc_mod_eval);
782
+ proc_mod_eval = rb_eval_string("lambda{|obj,proc| obj.module_eval(&proc)}");
783
+
784
+ rb_global_variable(&type_to_prop_setter_table);
785
+ rb_global_variable(&type_to_prop_getter_table);
786
+ type_to_prop_setter_table = rb_hash_new();
787
+ type_to_prop_getter_table = rb_hash_new();
788
+ }