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,899 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
+ * Copyright (C) 2002-2005 Ruby-GNOME2 Project Team
5
+ * Copyright (C) 2002,2003 Masahiro Sakai
6
+ *
7
+ * This library is free software; you can redistribute it and/or
8
+ * modify it under the terms of the GNU Lesser General Public
9
+ * License as published by the Free Software Foundation; either
10
+ * version 2.1 of the License, or (at your option) any later version.
11
+ *
12
+ * This library is distributed in the hope that it will be useful,
13
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
+ * Lesser General Public License for more details.
16
+ *
17
+ * You should have received a copy of the GNU Lesser General Public
18
+ * License along with this library; if not, write to the Free Software
19
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
20
+ * MA 02110-1301 USA
21
+ */
22
+
23
+ #include "rbgtk3private.h"
24
+
25
+ #define RG_TARGET_NAMESPACE cTextBuffer
26
+ #define _SELF(s) (RVAL2GTKTEXTBUFFER(s))
27
+
28
+ static VALUE rb_mGtk;
29
+
30
+ #define RVAL2ITER(self, position) RVAL2GTKTEXTITER(rg_get_iter_at(self, position))
31
+ #define RVAL2STARTITER(self, iter, out) \
32
+ rval2iter_with_default(&(self), &(iter), &(out), gtk_text_buffer_get_start_iter)
33
+ #define RVAL2ENDITER(self, iter, out) \
34
+ rval2iter_with_default(&(self), &(iter), &(out), gtk_text_buffer_get_end_iter)
35
+
36
+ static VALUE
37
+ rg_get_iter_at(VALUE self, VALUE position)
38
+ {
39
+ GtkTextIter iter;
40
+
41
+ switch (TYPE(position)) {
42
+ case T_HASH:
43
+ {
44
+ VALUE line, offset, index, mark, anchor;
45
+ rbg_scan_options(position,
46
+ "line", &line,
47
+ "offset", &offset,
48
+ "index", &index,
49
+ "mark", &mark,
50
+ "anchor", &anchor,
51
+ NULL);
52
+
53
+ if (!NIL_P(line))
54
+ if (!NIL_P(offset))
55
+ gtk_text_buffer_get_iter_at_line_offset(_SELF(self),
56
+ &iter,
57
+ NUM2INT(line),
58
+ NUM2INT(offset));
59
+ else if (!NIL_P(index))
60
+ gtk_text_buffer_get_iter_at_line_index(_SELF(self),
61
+ &iter,
62
+ NUM2INT(line),
63
+ NUM2INT(index));
64
+ else
65
+ gtk_text_buffer_get_iter_at_line(_SELF(self),
66
+ &iter,
67
+ NUM2INT(line));
68
+ else if (!NIL_P(offset))
69
+ gtk_text_buffer_get_iter_at_offset(_SELF(self),
70
+ &iter,
71
+ NUM2INT(offset));
72
+ else if (!NIL_P(mark))
73
+ gtk_text_buffer_get_iter_at_mark(_SELF(self),
74
+ &iter,
75
+ RVAL2GTKTEXTMARK(mark));
76
+ else if (!NIL_P(anchor))
77
+ gtk_text_buffer_get_iter_at_child_anchor(_SELF(self),
78
+ &iter,
79
+ RVAL2GTKTEXTCHILDANCHOR(anchor));
80
+ else
81
+ rb_raise(rb_eArgError, "Invalid arguments.");
82
+ break;
83
+ }
84
+ case T_FIXNUM:
85
+ {
86
+ gtk_text_buffer_get_iter_at_offset(_SELF(self),
87
+ &iter,
88
+ NUM2INT(position));
89
+ break;
90
+ }
91
+ default:
92
+ {
93
+ GType gtype = RVAL2GTYPE(position);
94
+
95
+ if (g_type_is_a(gtype, GTK_TYPE_TEXT_ITER))
96
+ return position;
97
+ else if (g_type_is_a(gtype, GTK_TYPE_TEXT_MARK))
98
+ gtk_text_buffer_get_iter_at_mark(_SELF(self),
99
+ &iter,
100
+ RVAL2GTKTEXTMARK(position));
101
+ else if (g_type_is_a(gtype, GTK_TYPE_TEXT_CHILD_ANCHOR))
102
+ gtk_text_buffer_get_iter_at_child_anchor(_SELF(self),
103
+ &iter,
104
+ RVAL2GTKTEXTCHILDANCHOR(position));
105
+ else
106
+ rb_raise(rb_eArgError, "Invalid arguments.");
107
+ break;
108
+ }
109
+ }
110
+
111
+ return GTKTEXTITER2RVAL(&iter);
112
+ }
113
+
114
+ static GtkTextIter *
115
+ rval2iter_with_default(VALUE *self, VALUE *iter, GtkTextIter *out,
116
+ void (*default_func)(GtkTextBuffer *, GtkTextIter *))
117
+ {
118
+ if (NIL_P(*iter)) {
119
+ default_func(_SELF(*self), out);
120
+ return out;
121
+ } else {
122
+ return RVAL2ITER(*self, *iter);
123
+ }
124
+ }
125
+
126
+ static VALUE
127
+ rg_initialize(int argc, VALUE *argv, VALUE self)
128
+ {
129
+ VALUE table;
130
+ rb_scan_args(argc, argv, "01", &table);
131
+ if (NIL_P(table))
132
+ G_INITIALIZE(self, gtk_text_buffer_new(NULL));
133
+ else {
134
+ G_CHILD_SET(self, rb_intern("tagtable"), table);
135
+ G_INITIALIZE(self, gtk_text_buffer_new(RVAL2GTKTEXTTAGTABLE(table)));
136
+ }
137
+ return Qnil;
138
+ }
139
+
140
+ static VALUE
141
+ rg_line_count(VALUE self)
142
+ {
143
+ return INT2NUM(gtk_text_buffer_get_line_count(_SELF(self)));
144
+ }
145
+
146
+ static VALUE
147
+ rg_char_count(VALUE self)
148
+ {
149
+ return INT2NUM(gtk_text_buffer_get_char_count(_SELF(self)));
150
+ }
151
+
152
+ static VALUE
153
+ txt_set_text(VALUE self, VALUE text)
154
+ {
155
+ StringValue(text);
156
+ gtk_text_buffer_set_text(_SELF(self), RSTRING_PTR(text), RSTRING_LEN(text));
157
+ return self;
158
+ }
159
+
160
+ static VALUE
161
+ rg_backspace(VALUE self, VALUE iter, VALUE interactive, VALUE default_editable)
162
+ {
163
+ return CBOOL2RVAL(gtk_text_buffer_backspace(_SELF(self), RVAL2ITER(self, iter),
164
+ RVAL2CBOOL(interactive),
165
+ RVAL2CBOOL(default_editable)));
166
+ }
167
+
168
+ static VALUE
169
+ rg_insert_at_cursor(VALUE self, VALUE text)
170
+ {
171
+ StringValue(text);
172
+ gtk_text_buffer_insert_at_cursor(_SELF(self), RSTRING_PTR(text), RSTRING_LEN(text));
173
+ return self;
174
+ }
175
+
176
+ static VALUE
177
+ rg_insert_interactive(VALUE self, VALUE iter, VALUE text, VALUE editable)
178
+ {
179
+ StringValue(text);
180
+
181
+ return CBOOL2RVAL(gtk_text_buffer_insert_interactive(_SELF(self),
182
+ RVAL2ITER(self, iter),
183
+ RSTRING_PTR(text),
184
+ RSTRING_LEN(text),
185
+ RVAL2CBOOL(editable)));
186
+ }
187
+
188
+ static VALUE
189
+ rg_insert_interactive_at_cursor(VALUE self, VALUE text, VALUE editable)
190
+ {
191
+ StringValue(text);
192
+
193
+ return CBOOL2RVAL(gtk_text_buffer_insert_interactive_at_cursor(_SELF(self),
194
+ RSTRING_PTR(text),
195
+ RSTRING_LEN(text),
196
+ RVAL2CBOOL(editable)));
197
+ }
198
+
199
+ static VALUE
200
+ rg_insert_range(VALUE self, VALUE iter, VALUE start, VALUE end)
201
+ {
202
+ gtk_text_buffer_insert_range(_SELF(self), RVAL2ITER(self, iter),
203
+ RVAL2ITER(self, start), RVAL2ITER(self, end));
204
+ return self;
205
+ }
206
+
207
+ static VALUE
208
+ rg_insert_range_interactive(VALUE self, VALUE iter, VALUE start, VALUE end, VALUE editable)
209
+ {
210
+ return CBOOL2RVAL(gtk_text_buffer_insert_range_interactive(_SELF(self),
211
+ RVAL2ITER(self, iter),
212
+ RVAL2ITER(self, start),
213
+ RVAL2ITER(self, end),
214
+ RVAL2CBOOL(editable)));
215
+ }
216
+
217
+ static VALUE
218
+ rg_delete(int argc, VALUE *argv, VALUE self)
219
+ {
220
+ VALUE start, end;
221
+ GtkTextIter start_iter, end_iter;
222
+
223
+ rb_scan_args(argc, argv, "02", &start, &end);
224
+
225
+ gtk_text_buffer_delete(_SELF(self),
226
+ RVAL2STARTITER(self, start, start_iter),
227
+ RVAL2ENDITER(self, end, end_iter));
228
+
229
+ return self;
230
+ }
231
+
232
+ static VALUE
233
+ rg_delete_interactive(int argc, VALUE *argv, VALUE self)
234
+ {
235
+ VALUE start, end, editable;
236
+ GtkTextIter start_iter, end_iter;
237
+
238
+ rb_scan_args(argc, argv, "03", &start, &end, &editable);
239
+
240
+ return CBOOL2RVAL(gtk_text_buffer_delete_interactive(_SELF(self),
241
+ RVAL2STARTITER(self, start, start_iter),
242
+ RVAL2ENDITER(self, end, end_iter),
243
+ RVAL2CBOOL(editable)));
244
+ }
245
+
246
+ static VALUE
247
+ rg_get_text(int argc, VALUE *argv, VALUE self)
248
+ {
249
+ VALUE start, end, include_hidden_chars;
250
+ GtkTextIter start_iter, end_iter;
251
+ gchar* ret;
252
+
253
+ rb_scan_args(argc, argv, "03", &start, &end, &include_hidden_chars);
254
+
255
+ ret = gtk_text_buffer_get_text(_SELF(self),
256
+ RVAL2STARTITER(self, start, start_iter),
257
+ RVAL2ENDITER(self, end, end_iter),
258
+ RVAL2CBOOL(include_hidden_chars));
259
+
260
+ return CSTR2RVAL_FREE(ret);
261
+ }
262
+
263
+ static VALUE
264
+ txt_get_text_all(VALUE self)
265
+ {
266
+ return rg_get_text(0, NULL, self);
267
+ }
268
+
269
+ static VALUE
270
+ rg_get_slice(int argc, VALUE *argv, VALUE self)
271
+ {
272
+ VALUE start, end, include_hidden_chars;
273
+ GtkTextIter start_iter, end_iter;
274
+ gchar* ret;
275
+
276
+ rb_scan_args(argc, argv, "03", &start, &end, &include_hidden_chars);
277
+
278
+ ret = gtk_text_buffer_get_slice(_SELF(self),
279
+ RVAL2STARTITER(self, start, start_iter),
280
+ RVAL2ENDITER(self, end, end_iter),
281
+ RVAL2CBOOL(include_hidden_chars));
282
+
283
+ return CSTR2RVAL_FREE(ret);
284
+ }
285
+
286
+ static VALUE
287
+ rg_slice(VALUE self)
288
+ {
289
+ return rg_get_slice(0, NULL, self);
290
+ }
291
+
292
+ static VALUE
293
+ rg_create_child_anchor(VALUE self, VALUE iter)
294
+ {
295
+ VALUE ret = GOBJ2RVAL(gtk_text_buffer_create_child_anchor(_SELF(self), RVAL2ITER(self, iter)));
296
+ G_CHILD_ADD(self, ret);
297
+ return ret;
298
+ }
299
+
300
+ static VALUE
301
+ rg_create_mark(VALUE self, VALUE name, VALUE where, VALUE left_gravity)
302
+ {
303
+ VALUE ret = GOBJ2RVAL(gtk_text_buffer_create_mark(_SELF(self),
304
+ RVAL2CSTR_ACCEPT_NIL(name),
305
+ RVAL2ITER(self, where),
306
+ RVAL2CBOOL(left_gravity)));
307
+ G_CHILD_ADD(self, ret);
308
+ return ret;
309
+ }
310
+
311
+ static VALUE
312
+ rg_add_mark(VALUE self, VALUE mark, VALUE where)
313
+ {
314
+ gtk_text_buffer_add_mark(_SELF(self), RVAL2GTKTEXTMARK(mark), RVAL2ITER(self, where));
315
+ return self;
316
+ }
317
+
318
+ static VALUE
319
+ rg_delete_mark(VALUE self, VALUE mark)
320
+ {
321
+ if (rb_obj_is_kind_of(mark, GTYPE2CLASS(GTK_TYPE_TEXT_MARK))){
322
+ G_CHILD_REMOVE(self, mark);
323
+ gtk_text_buffer_delete_mark(_SELF(self), RVAL2GTKTEXTMARK(mark));
324
+ } else {
325
+ G_CHILD_REMOVE(self, GOBJ2RVAL(gtk_text_buffer_get_mark(_SELF(self), RVAL2CSTR(mark))));
326
+ gtk_text_buffer_delete_mark_by_name(_SELF(self), RVAL2CSTR(mark));
327
+ }
328
+ return self;
329
+ }
330
+
331
+ static VALUE
332
+ rg_get_mark(VALUE self, VALUE name)
333
+ {
334
+ return GOBJ2RVAL(gtk_text_buffer_get_mark(_SELF(self), RVAL2CSTR(name)));
335
+ }
336
+
337
+ /*
338
+ static VALUE
339
+ rg_get_insert(VALUE self)
340
+ {
341
+ return GOBJ2RVAL(gtk_text_buffer_get_insert(_SELF(self)));
342
+ }
343
+ */
344
+
345
+ static VALUE
346
+ rg_selection_bound(VALUE self)
347
+ {
348
+ return GOBJ2RVAL(gtk_text_buffer_get_selection_bound(_SELF(self)));
349
+ }
350
+
351
+ static VALUE
352
+ rg_place_cursor(VALUE self, VALUE where)
353
+ {
354
+ gtk_text_buffer_place_cursor(_SELF(self), RVAL2ITER(self, where));
355
+ return self;
356
+ }
357
+
358
+ static VALUE
359
+ rg_select_range(VALUE self, VALUE ins, VALUE bound)
360
+ {
361
+ gtk_text_buffer_select_range(_SELF(self), RVAL2ITER(self, ins), RVAL2ITER(self, bound));
362
+ return self;
363
+ }
364
+
365
+ static VALUE
366
+ rg_modified_p(VALUE self)
367
+ {
368
+ return CBOOL2RVAL(gtk_text_buffer_get_modified(_SELF(self)));
369
+ }
370
+
371
+ static VALUE
372
+ rg_set_modified(VALUE self, VALUE setting)
373
+ {
374
+ gtk_text_buffer_set_modified(_SELF(self), RVAL2CBOOL(setting));
375
+ return setting;
376
+ }
377
+
378
+ static VALUE
379
+ rg_add_selection_clipboard(VALUE self, VALUE clipboard)
380
+ {
381
+ G_CHILD_ADD(self, clipboard);
382
+ gtk_text_buffer_add_selection_clipboard(_SELF(self), RVAL2GTKCLIPBOARD(clipboard));
383
+ return self;
384
+ }
385
+
386
+ static VALUE
387
+ rg_remove_selection_clipboard(VALUE self, VALUE clipboard)
388
+ {
389
+ G_CHILD_REMOVE(self, clipboard);
390
+ gtk_text_buffer_remove_selection_clipboard(_SELF(self), RVAL2GTKCLIPBOARD(clipboard));
391
+ return self;
392
+ }
393
+
394
+ static VALUE
395
+ rg_deserialize(VALUE self, VALUE content_buffer, VALUE format, VALUE iter, VALUE data)
396
+ {
397
+ GError* error = NULL;
398
+ gboolean ret;
399
+
400
+ StringValue(data);
401
+ ret = gtk_text_buffer_deserialize(_SELF(self), _SELF(content_buffer),
402
+ RVAL2ATOM(format),
403
+ RVAL2ITER(self, iter),
404
+ (const guint8*)RSTRING_PTR(data),
405
+ (gsize)RSTRING_LEN(data),
406
+ &error);
407
+ if (! ret) RAISE_GERROR(error);
408
+ return self;
409
+ }
410
+
411
+ static VALUE
412
+ rg_deserialize_can_create_tags_p(VALUE self, VALUE format)
413
+ {
414
+ return CBOOL2RVAL(gtk_text_buffer_deserialize_get_can_create_tags(_SELF(self),
415
+ RVAL2ATOM(format)));
416
+
417
+ }
418
+
419
+ static VALUE
420
+ rg_deserialize_set_can_create_tags(VALUE self, VALUE format, VALUE can_create_tags)
421
+ {
422
+ gtk_text_buffer_deserialize_set_can_create_tags(_SELF(self),
423
+ RVAL2ATOM(format),
424
+ RVAL2CBOOL(can_create_tags));
425
+ return self;
426
+ }
427
+
428
+ static VALUE
429
+ rg_deserialize_formats(VALUE self)
430
+ {
431
+ gint i;
432
+ gint n_formats;
433
+ GdkAtom* atoms = gtk_text_buffer_get_deserialize_formats(_SELF(self), &n_formats);
434
+ VALUE ary = rb_ary_new();
435
+
436
+ for (i = 0; i < n_formats; i++){
437
+ rb_ary_push(ary, GDKATOM2RVAL(atoms[i]));
438
+ }
439
+ return ary;
440
+ }
441
+
442
+ static VALUE
443
+ rg_serialize_formats(VALUE self)
444
+ {
445
+ gint i;
446
+ gint n_formats;
447
+ GdkAtom* atoms = gtk_text_buffer_get_serialize_formats(_SELF(self), &n_formats);
448
+ VALUE ary = rb_ary_new();
449
+
450
+ for (i = 0; i < n_formats; i++){
451
+ rb_ary_push(ary, GDKATOM2RVAL(atoms[i]));
452
+ }
453
+ return ary;
454
+ }
455
+
456
+ struct callback_arg
457
+ {
458
+ VALUE callback;
459
+ int argc;
460
+ VALUE *argv;
461
+ };
462
+
463
+ static VALUE
464
+ invoke_callback(VALUE data)
465
+ {
466
+ struct callback_arg *arg = (struct callback_arg *)data;
467
+
468
+ return rb_funcall2(arg->callback, id_call, arg->argc, arg->argv);
469
+ }
470
+
471
+ static gboolean
472
+ deserialize_func(GtkTextBuffer *register_buffer,
473
+ GtkTextBuffer *content_buffer,
474
+ GtkTextIter *iter,
475
+ const guint8 *data,
476
+ gsize length,
477
+ gboolean create_tags,
478
+ gpointer func,
479
+ G_GNUC_UNUSED GError **error)
480
+ {
481
+ VALUE result;
482
+ VALUE argv[5];
483
+ struct callback_arg arg;
484
+
485
+ argv[0] = GOBJ2RVAL(register_buffer);
486
+ argv[1] = GOBJ2RVAL(content_buffer);
487
+ argv[2] = GTKTEXTITER2RVAL(iter);
488
+ argv[3] = RBG_STRING_SET_UTF8_ENCODING(rb_str_new((char*)data, length));
489
+ argv[4] = CBOOL2RVAL(create_tags);
490
+
491
+ arg.callback = (VALUE)func;
492
+ arg.argc = 5;
493
+ arg.argv = argv;
494
+
495
+ result = G_PROTECT_CALLBACK(invoke_callback, &arg);
496
+ return NIL_P(rb_errinfo()) ? RVAL2CBOOL(result) : FALSE;
497
+ }
498
+
499
+ static void
500
+ remove_callback_reference(gpointer callback)
501
+ {
502
+ G_CHILD_REMOVE(rb_mGtk, (VALUE)callback);
503
+ }
504
+
505
+ static VALUE
506
+ rg_register_deserialize_format(VALUE self, VALUE mime_type)
507
+ {
508
+ VALUE block = rb_block_proc();
509
+ GdkAtom atom;
510
+ G_CHILD_ADD(rb_mGtk, block);
511
+ atom = gtk_text_buffer_register_deserialize_format(_SELF(self),
512
+ (const gchar*)RVAL2CSTR(mime_type),
513
+ (GtkTextBufferDeserializeFunc)deserialize_func,
514
+ (gpointer)block,
515
+ (GDestroyNotify)remove_callback_reference);
516
+ return GDKATOM2RVAL(atom);
517
+ }
518
+
519
+ static VALUE
520
+ rg_register_deserialize_target(VALUE self, VALUE tagset_name)
521
+ {
522
+ return GDKATOM2RVAL(gtk_text_buffer_register_deserialize_tagset(_SELF(self),
523
+ RVAL2CSTR_ACCEPT_NIL(tagset_name)));
524
+ }
525
+
526
+ static guint8*
527
+ serialize_func(GtkTextBuffer *register_buffer, GtkTextBuffer *content_buffer, GtkTextIter *start, GtkTextIter *end, gsize *length, gpointer func)
528
+ {
529
+ VALUE result;
530
+ VALUE argv[4];
531
+ struct callback_arg arg;
532
+
533
+ argv[0] = GOBJ2RVAL(register_buffer);
534
+ argv[1] = GOBJ2RVAL(content_buffer);
535
+ argv[2] = GTKTEXTITER2RVAL(start);
536
+ argv[3] = GTKTEXTITER2RVAL(end);
537
+
538
+ arg.callback = (VALUE)func;
539
+ arg.argc = 4;
540
+ arg.argv = argv;
541
+
542
+ /* This should return data as String */
543
+ result = G_PROTECT_CALLBACK(invoke_callback, &arg);
544
+ StringValue(result);
545
+ *length = RSTRING_LEN(result);
546
+ return (guint8*)(NIL_P(rb_errinfo()) ? RSTRING_PTR(result) : NULL);
547
+ }
548
+
549
+ static VALUE
550
+ rg_register_serialize_format(VALUE self, VALUE mime_type)
551
+ {
552
+ VALUE block = rb_block_proc();
553
+ GdkAtom atom;
554
+ G_CHILD_ADD(rb_mGtk, block);
555
+ atom = gtk_text_buffer_register_serialize_format(_SELF(self),
556
+ (const gchar*)RVAL2CSTR(mime_type),
557
+ (GtkTextBufferSerializeFunc)serialize_func,
558
+ (gpointer)block,
559
+ (GDestroyNotify)remove_callback_reference);
560
+ return GDKATOM2RVAL(atom);
561
+ }
562
+
563
+ static VALUE
564
+ rg_register_serialize_target(VALUE self, VALUE tagset_name)
565
+ {
566
+ return GDKATOM2RVAL(gtk_text_buffer_register_serialize_tagset(_SELF(self),
567
+ RVAL2CSTR_ACCEPT_NIL(tagset_name)));
568
+ }
569
+
570
+ static VALUE
571
+ rg_serialize(VALUE self, VALUE content_buffer, VALUE format, VALUE start, VALUE end)
572
+ {
573
+ gsize length;
574
+ guint8* ret = gtk_text_buffer_serialize(_SELF(self), _SELF(content_buffer),
575
+ RVAL2ATOM(format),
576
+ RVAL2ITER(self, start), RVAL2ITER(self, end),
577
+ &length);
578
+ return RBG_STRING_SET_UTF8_ENCODING(rb_str_new((char*)ret, length));
579
+ }
580
+
581
+ static VALUE
582
+ rg_unregister_deserialize_format(VALUE self, VALUE format)
583
+ {
584
+ gtk_text_buffer_unregister_deserialize_format(_SELF(self), RVAL2ATOM(format));
585
+ return self;
586
+ }
587
+
588
+ static VALUE
589
+ rg_unregister_serialize_format(VALUE self, VALUE format)
590
+ {
591
+ gtk_text_buffer_unregister_serialize_format(_SELF(self), RVAL2ATOM(format));
592
+ return self;
593
+ }
594
+
595
+ static VALUE
596
+ rg_cut_clipboard(VALUE self, VALUE clipboard, VALUE default_editable)
597
+ {
598
+ G_CHILD_ADD(self, clipboard);
599
+ gtk_text_buffer_cut_clipboard(_SELF(self), RVAL2GTKCLIPBOARD(clipboard), RVAL2CBOOL(default_editable));
600
+ return self;
601
+ }
602
+
603
+ static VALUE
604
+ rg_copy_clipboard(VALUE self, VALUE clipboard)
605
+ {
606
+ G_CHILD_ADD(self, clipboard);
607
+ gtk_text_buffer_copy_clipboard(_SELF(self), RVAL2GTKCLIPBOARD(clipboard));
608
+ return self;
609
+ }
610
+
611
+ static VALUE
612
+ rg_paste_clipboard(VALUE self, VALUE clipboard, VALUE location, VALUE default_editable)
613
+ {
614
+ G_CHILD_ADD(self, clipboard);
615
+ gtk_text_buffer_paste_clipboard(_SELF(self), RVAL2GTKCLIPBOARD(clipboard),
616
+ NIL_P(location) ? NULL : RVAL2ITER(self, location),
617
+ RVAL2CBOOL(default_editable));
618
+ return self;
619
+ }
620
+
621
+ static VALUE
622
+ rg_selection_bounds(VALUE self)
623
+ {
624
+ GtkTextIter start, end;
625
+
626
+ gboolean ret = gtk_text_buffer_get_selection_bounds(_SELF(self), &start, &end);
627
+ return rb_ary_new3(3, GTKTEXTITER2RVAL(&start), GTKTEXTITER2RVAL(&end), CBOOL2RVAL(ret));
628
+ }
629
+
630
+ static VALUE
631
+ rg_delete_selection(int argc, VALUE *argv, VALUE self)
632
+ {
633
+ VALUE interactive, default_editable;
634
+ rb_scan_args(argc, argv, "20", &interactive, &default_editable);
635
+ return CBOOL2RVAL(gtk_text_buffer_delete_selection(_SELF(self),
636
+ RVAL2CBOOL(interactive), RVAL2CBOOL(default_editable)));
637
+ }
638
+
639
+ static VALUE
640
+ rg_end_user_action(VALUE self)
641
+ {
642
+ gtk_text_buffer_end_user_action(_SELF(self));
643
+ return self;
644
+ }
645
+
646
+ static VALUE
647
+ rg_begin_user_action(VALUE self)
648
+ {
649
+ gtk_text_buffer_begin_user_action(_SELF(self));
650
+ if (rb_block_given_p())
651
+ rb_ensure(rb_yield, self, rg_end_user_action, self);
652
+ return self;
653
+ }
654
+
655
+ static VALUE
656
+ rg_start_iter(VALUE self)
657
+ {
658
+ GtkTextIter iter;
659
+ gtk_text_buffer_get_start_iter(_SELF(self), &iter);
660
+ return GTKTEXTITER2RVAL(&iter);
661
+ }
662
+
663
+ static VALUE
664
+ rg_end_iter(VALUE self)
665
+ {
666
+ GtkTextIter iter;
667
+ gtk_text_buffer_get_end_iter(_SELF(self), &iter);
668
+ return GTKTEXTITER2RVAL(&iter);
669
+ }
670
+
671
+ static VALUE
672
+ rg_move_mark(VALUE self, VALUE mark, VALUE where)
673
+ {
674
+ if (rb_obj_is_kind_of(mark, GTYPE2CLASS(GTK_TYPE_TEXT_MARK)))
675
+ gtk_text_buffer_move_mark(_SELF(self), RVAL2GTKTEXTMARK(mark), RVAL2ITER(self, where));
676
+ else
677
+ gtk_text_buffer_move_mark_by_name(_SELF(self), RVAL2CSTR(mark), RVAL2ITER(self, where));
678
+ return self;
679
+ }
680
+
681
+ static VALUE
682
+ rg_create_tag(VALUE self, VALUE tag_name, VALUE properties)
683
+ {
684
+ GtkTextTag *tag;
685
+ VALUE ret;
686
+
687
+ tag = gtk_text_tag_new(RVAL2CSTR_ACCEPT_NIL(tag_name));
688
+ gtk_text_tag_table_add (gtk_text_buffer_get_tag_table(_SELF(self)), tag);
689
+
690
+ G_SET_PROPERTIES(GOBJ2RVAL(tag), properties);
691
+
692
+ ret = GOBJ2RVAL(tag);
693
+
694
+ G_CHILD_ADD(self, ret);
695
+
696
+ return ret;
697
+ }
698
+
699
+ static VALUE
700
+ rg_insert(int argc, VALUE *argv, VALUE self)
701
+ {
702
+ VALUE where, value, tags;
703
+ gint start_offset;
704
+ GtkTextIter start;
705
+ int i;
706
+
707
+ rb_scan_args(argc, argv, "2*", &where, &value, &tags);
708
+
709
+ G_CHILD_ADD(self, where);
710
+ G_CHILD_ADD(self, value);
711
+ if (rb_obj_is_kind_of(value, GTYPE2CLASS(GDK_TYPE_PIXBUF))){
712
+ gtk_text_buffer_insert_pixbuf(_SELF(self), RVAL2ITER(self, where),
713
+ RVAL2GDKPIXBUF(value));
714
+ } else if (rb_obj_is_kind_of(value, GTYPE2CLASS(GTK_TYPE_TEXT_CHILD_ANCHOR))){
715
+ gtk_text_buffer_insert_child_anchor(_SELF(self), RVAL2ITER(self, where),
716
+ RVAL2GTKTEXTCHILDANCHOR(value));
717
+ } else {
718
+ start_offset = gtk_text_iter_get_offset(RVAL2ITER(self, where));
719
+ StringValue(value);
720
+ gtk_text_buffer_insert(_SELF(self), RVAL2ITER(self, where),
721
+ RSTRING_PTR(value), RSTRING_LEN(value));
722
+
723
+ if (RARRAY_LEN(tags) == 0)
724
+ return self;
725
+
726
+ /* TODO: Do we really want to do this before we know that everything
727
+ * below passed without any errors? */
728
+ G_CHILD_ADD(self, tags);
729
+
730
+ gtk_text_buffer_get_iter_at_offset(_SELF(self), &start, start_offset);
731
+
732
+ for(i = 0; i < RARRAY_LEN(tags); i++) {
733
+ GtkTextTag *tag;
734
+
735
+ if (rb_obj_is_kind_of(RARRAY_PTR(tags)[i], GTYPE2CLASS(GTK_TYPE_TEXT_TAG))) {
736
+ tag = RVAL2GOBJ(RARRAY_PTR(tags)[i]);
737
+ } else {
738
+ tag = gtk_text_tag_table_lookup(gtk_text_buffer_get_tag_table(_SELF(self)),
739
+ RVAL2CSTR(RARRAY_PTR(tags)[i]));
740
+ if (tag == NULL) {
741
+ g_warning ("%s: no tag with name '%s'!",
742
+ G_STRLOC, RVAL2CSTR(RARRAY_PTR(tags)[i]));
743
+ return self;
744
+ }
745
+ }
746
+ gtk_text_buffer_apply_tag(_SELF(self), tag, &start, RVAL2ITER(self, where));
747
+ }
748
+ }
749
+ return self;
750
+ }
751
+
752
+ static VALUE
753
+ rg_apply_tag(int argc, VALUE *argv, VALUE self)
754
+ {
755
+ VALUE tag, start, end;
756
+ GtkTextIter start_iter, end_iter;
757
+
758
+ rb_scan_args(argc, argv, "12", &tag, &start, &end);
759
+
760
+ if (rb_obj_is_kind_of(tag, GTYPE2CLASS(GTK_TYPE_TEXT_TAG)))
761
+ gtk_text_buffer_apply_tag(_SELF(self),
762
+ RVAL2GTKTEXTTAG(tag),
763
+ RVAL2STARTITER(self, start, start_iter),
764
+ RVAL2ENDITER(self, end, end_iter));
765
+ else
766
+ gtk_text_buffer_apply_tag_by_name(_SELF(self),
767
+ RVAL2CSTR(tag),
768
+ RVAL2STARTITER(self, start, start_iter),
769
+ RVAL2ENDITER(self, end, end_iter));
770
+
771
+ return self;
772
+ }
773
+
774
+ static VALUE
775
+ rg_remove_tag(int argc, VALUE *argv, VALUE self)
776
+ {
777
+ VALUE tag, start, end;
778
+ GtkTextIter start_iter, end_iter;
779
+
780
+ rb_scan_args(argc, argv, "12", &tag, &start, &end);
781
+
782
+ if (rb_obj_is_kind_of(tag, GTYPE2CLASS(GTK_TYPE_TEXT_TAG)))
783
+ gtk_text_buffer_remove_tag(_SELF(self),
784
+ RVAL2GTKTEXTTAG(tag),
785
+ RVAL2STARTITER(self, start, start_iter),
786
+ RVAL2ENDITER(self, end, end_iter));
787
+ else
788
+ gtk_text_buffer_remove_tag_by_name(_SELF(self),
789
+ RVAL2CSTR(tag),
790
+ RVAL2STARTITER(self, start, start_iter),
791
+ RVAL2ENDITER(self, end, end_iter));
792
+
793
+ return self;
794
+ }
795
+
796
+ static VALUE
797
+ rg_remove_all_tags(int argc, VALUE *argv, VALUE self)
798
+ {
799
+ VALUE start, end;
800
+ GtkTextIter start_iter, end_iter;
801
+
802
+ rb_scan_args(argc, argv, "02", &start, &end);
803
+
804
+ gtk_text_buffer_remove_all_tags(_SELF(self),
805
+ RVAL2STARTITER(self, start, start_iter),
806
+ RVAL2ENDITER(self, end, end_iter));
807
+
808
+ return self;
809
+ }
810
+
811
+ static VALUE
812
+ rg_bounds(VALUE self)
813
+ {
814
+ GtkTextIter start, end;
815
+
816
+ gtk_text_buffer_get_bounds(_SELF(self), &start, &end);
817
+
818
+ return rb_ary_new3(2, GTKTEXTITER2RVAL(&start), GTKTEXTITER2RVAL(&end));
819
+ }
820
+
821
+ void
822
+ Init_gtk_textbuffer(VALUE mGtk)
823
+ {
824
+ rb_mGtk = mGtk;
825
+ VALUE RG_TARGET_NAMESPACE = G_DEF_CLASS(GTK_TYPE_TEXT_BUFFER, "TextBuffer", mGtk);
826
+
827
+ RG_DEF_METHOD(initialize, -1);
828
+ RG_DEF_METHOD(line_count, 0);
829
+ RG_DEF_METHOD(char_count, 0);
830
+
831
+ G_REPLACE_SET_PROPERTY(RG_TARGET_NAMESPACE, "text", txt_set_text, 1);
832
+ RG_DEF_METHOD(insert, -1);
833
+ RG_DEF_METHOD(backspace, 3);
834
+ RG_DEF_METHOD(insert_at_cursor, 1);
835
+ RG_DEF_METHOD(insert_interactive, 3);
836
+ RG_DEF_METHOD(insert_interactive_at_cursor, 2);
837
+ RG_DEF_METHOD(insert_range, 3);
838
+ RG_DEF_METHOD(insert_range_interactive, 4);
839
+
840
+ RG_DEF_METHOD(delete, -1);
841
+ RG_DEF_METHOD(delete_interactive, -1);
842
+
843
+ RG_DEF_METHOD(get_text, -1);
844
+ G_REPLACE_GET_PROPERTY(RG_TARGET_NAMESPACE, "text", txt_get_text_all, 0);
845
+ RG_DEF_METHOD(get_slice, -1);
846
+ RG_DEF_METHOD(slice, 0);
847
+
848
+ RG_DEF_METHOD(create_child_anchor, 1);
849
+
850
+ RG_DEF_METHOD(create_mark, 3);
851
+ RG_DEF_METHOD(add_mark, 2);
852
+ RG_DEF_METHOD(delete_mark, 1);
853
+
854
+ RG_DEF_METHOD(get_mark, 1);
855
+ /* Comment out because this method's name is very bad.
856
+ Use Gtk::TextBuffer#get_mark("insert") instead.
857
+ RG_DEF_METHOD(get_insert, 0);
858
+ */
859
+ RG_DEF_METHOD(selection_bound, 0);
860
+ RG_DEF_METHOD(place_cursor, 1);
861
+ RG_DEF_METHOD(select_range, 2);
862
+ RG_DEF_METHOD_P(modified, 0);
863
+ RG_DEF_METHOD(set_modified, 1);
864
+
865
+ RG_DEF_METHOD(add_selection_clipboard, 1);
866
+ RG_DEF_METHOD(remove_selection_clipboard, 1);
867
+ RG_DEF_METHOD(deserialize, 4);
868
+ RG_DEF_METHOD_P(deserialize_can_create_tags, 1);
869
+ RG_DEF_METHOD(deserialize_set_can_create_tags, 2);
870
+ RG_DEF_METHOD(deserialize_formats, 0);
871
+ RG_DEF_METHOD(serialize_formats, 0);
872
+ RG_DEF_METHOD(register_deserialize_format, 1);
873
+ RG_DEF_METHOD(register_deserialize_target, 1);
874
+ RG_DEF_METHOD(register_serialize_format, 1);
875
+ RG_DEF_METHOD(register_serialize_target, 1);
876
+ RG_DEF_METHOD(serialize, 4);
877
+ RG_DEF_METHOD(unregister_deserialize_format, 1);
878
+ RG_DEF_METHOD(unregister_serialize_format, 1);
879
+ RG_DEF_METHOD(cut_clipboard, 2);
880
+ RG_DEF_METHOD(copy_clipboard, 1);
881
+ RG_DEF_METHOD(paste_clipboard, 3);
882
+
883
+ RG_DEF_METHOD(selection_bounds, 0);
884
+ RG_DEF_METHOD(delete_selection, -1);
885
+
886
+ RG_DEF_METHOD(begin_user_action, 0);
887
+ RG_DEF_METHOD(end_user_action, 0);
888
+
889
+ RG_DEF_METHOD(start_iter, 0);
890
+ RG_DEF_METHOD(end_iter, 0);
891
+ RG_DEF_METHOD(get_iter_at, 1);
892
+ RG_DEF_METHOD(bounds, 0);
893
+ RG_DEF_METHOD(move_mark, 2);
894
+
895
+ RG_DEF_METHOD(create_tag, 2);
896
+ RG_DEF_METHOD(apply_tag, -1);
897
+ RG_DEF_METHOD(remove_tag, -1);
898
+ RG_DEF_METHOD(remove_all_tags, -1);
899
+ }