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,92 @@
1
+ #!/usr/bin/env ruby
2
+ =begin
3
+ listview.rb - Ruby/GTK sample script.
4
+
5
+ Copyright (c) 2002-2006 Ruby-GNOME2 Project Team
6
+ This program is licenced under the same licence as Ruby-GNOME2.
7
+
8
+ $Id: listview.rb,v 1.11 2006/06/17 13:18:12 mutoh Exp $
9
+ =end
10
+
11
+ require 'gtk3'
12
+
13
+ window = Gtk::Window.new("Gtk::ListStore sample")
14
+ window.border_width = 0
15
+
16
+ box1 = Gtk::Box.new(:vertical, 0)
17
+ window.add(box1)
18
+
19
+ box2 = Gtk::Box.new(:vertical, 10)
20
+ box2.border_width = 10
21
+ box1.pack_start(box2, true, true, 0)
22
+
23
+ scrolled_win = Gtk::ScrolledWindow.new
24
+ scrolled_win.set_policy(:automatic,:automatic)
25
+ box2.pack_start(scrolled_win, true, true, 0)
26
+
27
+ data = [
28
+ "hello",
29
+ "world",
30
+ "blah",
31
+ "foo",
32
+ "bar",
33
+ "argh",
34
+ "spencer",
35
+ "is a",
36
+ "wussy",
37
+ "programmer"
38
+ ]
39
+
40
+ model = Gtk::ListStore.new(String)
41
+ column = Gtk::TreeViewColumn.new("Data",
42
+ Gtk::CellRendererText.new, {:text => 0})
43
+ treeview = Gtk::TreeView.new(model)
44
+ treeview.append_column(column)
45
+ treeview.selection.set_mode(:single)
46
+ scrolled_win.add_with_viewport(treeview)
47
+
48
+ data.each do |v|
49
+ iter = model.append
50
+ iter[0] = v
51
+ end
52
+
53
+ button = Gtk::Button.new(:label => "add")
54
+ button.can_focus=true
55
+
56
+ i = 0
57
+ button.signal_connect("clicked") do
58
+ iter = model.append
59
+ iter[0] = "add item #{i}"
60
+ i += 1
61
+ end
62
+
63
+ box2.pack_start(button, false, true, 0)
64
+
65
+ button = Gtk::Button.new(:label => "remove")
66
+ button.can_focus=true
67
+ button.signal_connect("clicked") do
68
+ iter = treeview.selection.selected
69
+ model.remove(iter) if iter
70
+ end
71
+ box2.pack_start(button, false, true, 0)
72
+
73
+ separator = Gtk::Separator.new(:horizontal)
74
+ box1.pack_start(separator, false, true, 0)
75
+ separator.show
76
+
77
+ box2 = Gtk::Box.new(:vertical, 10)
78
+ box2.border_width = 10
79
+ box1.pack_start(box2, false, true, 0)
80
+
81
+ button = Gtk::Button.new(:label => "close")
82
+ button.signal_connect("clicked") do
83
+ Gtk.main_quit
84
+ end
85
+ box2.pack_start(button, true, true, 0)
86
+ button.can_default=true
87
+ button.grab_default
88
+
89
+ window.set_default_size(300, 300)
90
+ window.show_all
91
+
92
+ Gtk.main
@@ -0,0 +1,81 @@
1
+ #!/usr/bin/env ruby
2
+ =begin
3
+ menu.rb - Ruby/GTK2 sample script.
4
+
5
+ Copyright (c) 2002-2006 Ruby-GNOME2 Project Team
6
+ This program is licenced under the same licence as Ruby-GNOME2.
7
+
8
+ $Id: menu.rb,v 1.8 2006/06/17 13:18:12 mutoh Exp $
9
+ =end
10
+
11
+ require 'gtk3'
12
+
13
+ def create_menu(depth)
14
+ return nil if depth < 1
15
+
16
+ menu = Gtk::Menu.new
17
+ group = nil
18
+ submenu = nil
19
+
20
+ for i in 0..4
21
+ buf = sprintf("item %2d - %d", depth, i + 1)
22
+ menuitem = Gtk::RadioMenuItem.new(group, buf)
23
+ group = menuitem.group
24
+ menu.append(menuitem)
25
+ if depth > 1
26
+ menuitem.set_submenu create_menu(depth - 1)
27
+ end
28
+ end
29
+ menu
30
+ end
31
+
32
+ window = Gtk::Window.new("menus")
33
+ window.signal_connect("destroy") do
34
+ Gtk.main_quit
35
+ end
36
+ window.border_width = 0
37
+
38
+ box1 = Gtk::VBox.new(false, 0)
39
+ window.add(box1)
40
+
41
+ menubar = Gtk::MenuBar.new
42
+ box1.pack_start(menubar, false, true, 0)
43
+
44
+ menu = create_menu(2)
45
+ menuitem = Gtk::MenuItem.new("test\nline2")
46
+ menuitem.set_submenu(menu)
47
+ menubar.append(menuitem)
48
+
49
+ menuitem = Gtk::MenuItem.new("foo")
50
+ menuitem.set_submenu(create_menu(3))
51
+ menubar.append(menuitem)
52
+
53
+ menuitem = Gtk::MenuItem.new("bar")
54
+ menuitem.set_submenu(create_menu(4))
55
+ menubar.append(menuitem)
56
+
57
+ box2 = Gtk::VBox.new(false, 10)
58
+ box2.border_width = 10
59
+ box1.pack_start(box2, true, true, 0)
60
+
61
+ optionmenu = Gtk::OptionMenu.new
62
+ optionmenu.set_menu(create_menu(1))
63
+ optionmenu.set_history(4)
64
+ box2.pack_start(optionmenu, true, true, 0)
65
+
66
+ separator = Gtk::HSeparator.new
67
+ box1.pack_start(separator, false, true, 0)
68
+
69
+ box2 = Gtk::HBox.new(false, 10)
70
+ box2.border_width = 10
71
+ box1.pack_start(box2, false, true, 0)
72
+
73
+ button = Gtk::Button.new("close")
74
+ button.signal_connect("clicked") do
75
+ window.destroy
76
+ end
77
+ box2.pack_start(button, true, true, 0)
78
+
79
+ window.show_all
80
+
81
+ Gtk.main
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env ruby
2
+ =begin
3
+ misc_button.rb - Ruby/GTK sample script.
4
+
5
+ Copyright (c) 2004-2006 Ruby-GNOME2 Project Team
6
+ This program is licenced under the same licence as Ruby-GNOME2.
7
+
8
+ $Id: misc_button.rb,v 1.2 2006/06/17 13:18:12 mutoh Exp $
9
+ =end
10
+
11
+ require 'gtk3'
12
+
13
+ box = Gtk::Box.new(:vertical)
14
+
15
+ #Gtk::ColorButton
16
+ colorbutton = Gtk::ColorButton.new
17
+ colorbutton.signal_connect("color-set") do
18
+ p colorbutton.color.to_a
19
+ end
20
+ box.add(colorbutton)
21
+
22
+
23
+ #Gtk::FontButton
24
+ fontbutton = Gtk::FontButton.new
25
+ fontbutton.signal_connect("font-set") do
26
+ p fontbutton.font_name
27
+ end
28
+ box.add(fontbutton)
29
+
30
+ #Gtk::FileChooserButton
31
+ filebutton = Gtk::FileChooserButton.new("Gtk::FileChooserButton",
32
+ Gtk::FileChooser::Action::OPEN)
33
+ filebutton.filename = GLib.home_dir
34
+ filebutton.signal_connect("current-folder-changed") do |w, e|
35
+ p filebutton.filename
36
+ end
37
+
38
+ box.add(filebutton)
39
+
40
+ #Quit
41
+ quitbutton = Gtk::Button.new(:label => "Quit")
42
+ quitbutton.signal_connect("clicked") do
43
+ Gtk.main_quit
44
+ end
45
+ box.add(quitbutton)
46
+
47
+ Gtk::Window.new.add(box).set_default_size(200, 100).show_all
48
+
49
+ Gtk.main
@@ -0,0 +1,465 @@
1
+ =begin
2
+ mouse-gesture.rb - mouse gesture sample script.
3
+
4
+ Copyright (C) 2005,2006 Kouhei Sutou
5
+ This program is licenced under the same licence as Ruby-GNOME2.
6
+
7
+ $Date: 2006/06/17 13:18:12 $
8
+ $Id: mouse-gesture.rb,v 1.2 2006/06/17 13:18:12 mutoh Exp $
9
+ =end
10
+
11
+ require 'gtk3'
12
+
13
+ unless Gdk.cairo_available?
14
+ STDERR.puts("need cairo and rcairo support for this sample")
15
+ exit 1
16
+ end
17
+
18
+ class GestureProcessor
19
+ DEFAULT_THRESHOLD = 16
20
+ DEFAULT_SKEW_THRESHOLD_ANGLE = 30
21
+
22
+ attr_accessor :threshold, :skew_threshold_angle
23
+ attr_reader :motions
24
+
25
+ def initialize(threshold=nil, skew_threshold_angle=nil)
26
+ @threshold = threshold || DEFAULT_THRESHOLD
27
+ @skew_threshold_angle = skew_threshold_angle
28
+ @skew_threshold_angle ||= DEFAULT_SKEW_THRESHOLD_ANGLE
29
+ reset
30
+ end
31
+
32
+ def started?
33
+ @started
34
+ end
35
+
36
+ MOTIONS = %w(L R U D UL UR LL LR)
37
+
38
+ def available_motion?(motion)
39
+ MOTIONS.include?(motion)
40
+ end
41
+
42
+ def start(x, y)
43
+ @prev_x = @x = x
44
+ @prev_y = @y = y
45
+ @started = true
46
+ @motions = []
47
+ end
48
+
49
+ def update_position(x, y)
50
+ mx = x - @prev_x
51
+ my = y - @prev_y
52
+
53
+ motion = judge_motion(mx, my)
54
+ if motion
55
+ @prev_x = @x = x
56
+ @prev_y = @y = y
57
+ if @motions.last == motion
58
+ false
59
+ else
60
+ @motions << motion
61
+ true
62
+ end
63
+ else
64
+ false
65
+ end
66
+ end
67
+
68
+ def reset
69
+ @started = false
70
+ @x = @y = -1
71
+ @motions = []
72
+ end
73
+
74
+ def to_a
75
+ @motions
76
+ end
77
+
78
+ def position
79
+ [@x, @y]
80
+ end
81
+
82
+ private
83
+ def judge_motion(mx, my)
84
+ mxa = mx.abs
85
+ mya = my.abs
86
+ distance = Math.sqrt(mxa ** 2 + mya ** 2)
87
+ upper_theta = (45 + @skew_threshold_angle) * (Math::PI / 180.0)
88
+ lower_theta = (45 - @skew_threshold_angle) * (Math::PI / 180.0)
89
+ if distance > @threshold and
90
+ mya < Math.tan(upper_theta) * mxa and
91
+ mya > Math.tan(lower_theta) * mxa
92
+ judge_corner_motion(mx, my)
93
+ elsif mxa > @threshold or mya > @threshold
94
+ judge_cross_motion(mx, my)
95
+ else
96
+ nil
97
+ end
98
+ end
99
+
100
+ def judge_corner_motion(mx, my)
101
+ if mx < 0
102
+ if my < 0
103
+ "UL"
104
+ else
105
+ "LL"
106
+ end
107
+ else
108
+ if my < 0
109
+ "UR"
110
+ else
111
+ "LR"
112
+ end
113
+ end
114
+ end
115
+
116
+ def judge_cross_motion(mx, my)
117
+ if mx.abs > my.abs
118
+ if mx < 0
119
+ "L"
120
+ else
121
+ "R"
122
+ end
123
+ else
124
+ if my < 0
125
+ "U"
126
+ else
127
+ "D"
128
+ end
129
+ end
130
+ end
131
+ end
132
+
133
+ class Gesture < Gtk::EventBox
134
+ DEFAULT_BACK_RGBA = [0.2, 0.2, 0.2, 0.5]
135
+ DEFAULT_LINE_RGBA = [1, 0, 0, 1]
136
+ DEFAULT_NEXT_RGBA = [0, 1, 0, 0.8]
137
+ DEFAULT_CURRENT_RGBA = [1, 0, 1, 0.8]
138
+
139
+ def initialize(conf={})
140
+ super()
141
+ set_visible_window(false)
142
+ conf ||= {}
143
+ @back_rgba = conf[:back_rgba] || DEFAULT_BACK_RGBA
144
+ @line_rgba = conf[:line_rgba] || DEFAULT_LINE_RGBA
145
+ @next_rgba = conf[:next_rgba] || DEFAULT_NEXT_RGBA
146
+ @current_rgba = conf[:current_rgba] || DEFAULT_CURRENT_RGBA
147
+ @processor = GestureProcessor.new(conf[:threshold],
148
+ conf[:skew_threshold_angle])
149
+ @actions = []
150
+ set_expose_event
151
+ set_motion_notify_event
152
+ set_button_release_event
153
+ end
154
+
155
+ def add_action(sequence, action=Proc.new)
156
+ invalid_motion = sequence.find do |motion|
157
+ not @processor.available_motion?(motion)
158
+ end
159
+ raise "invalid motion: #{invalid_motion}" if invalid_motion
160
+ @actions << [sequence, action]
161
+ end
162
+
163
+ def start(widget, button, x, y, base_x, base_y)
164
+ Gtk.grab_add(self)
165
+ @widget = widget
166
+ @button = button
167
+ @processor.start(x, y)
168
+ @base_x = base_x
169
+ @base_y = base_y
170
+ @cr = window.create_cairo_context
171
+ @cr.set_source_rgba(@line_rgba)
172
+ @cr.move_to(x, y)
173
+ end
174
+
175
+ private
176
+ def perform_action
177
+ act = action
178
+ act.call(@widget) if act
179
+ @processor.reset
180
+ end
181
+
182
+ def action
183
+ motions = @processor.motions
184
+ @actions.each do |sequence, act|
185
+ return act if sequence == motions
186
+ end
187
+ nil
188
+ end
189
+
190
+ def available_motions
191
+ motions = @processor.motions
192
+ @actions.collect do |sequence, act|
193
+ if sequence == motions
194
+ sequence.last
195
+ else
196
+ nil
197
+ end
198
+ end.compact.uniq
199
+ end
200
+
201
+ def next_available_motions
202
+ motions = @processor.motions
203
+ @actions.collect do |sequence, act|
204
+ if sequence[0..-2] == motions
205
+ sequence.last
206
+ else
207
+ nil
208
+ end
209
+ end.compact.uniq
210
+ end
211
+
212
+ def match?
213
+ not action.nil?
214
+ end
215
+
216
+ def set_expose_event
217
+ signal_connect("draw") do |widget, event|
218
+ if @processor.started?
219
+ cr = widget.window.create_cairo_context
220
+
221
+ cr.rectangle(*widget.allocation.to_a)
222
+ cr.set_source_rgba(@back_rgba)
223
+ cr.fill
224
+
225
+ cr.set_source_rgba(@next_rgba)
226
+ draw_available_marks(cr, next_available_motions)
227
+
228
+ if action
229
+ cr.set_source_rgba(@current_rgba)
230
+ draw_mark(cr, *@processor.position)
231
+ end
232
+
233
+ @cr.stroke_preserve
234
+
235
+ true
236
+ else
237
+ false
238
+ end
239
+ end
240
+ end
241
+
242
+ def draw_mark(cr, x=nil, y=nil, radius=nil)
243
+ x ||= @processor.position[0]
244
+ y ||= @processor.position[1]
245
+ radius ||= @processor.threshold
246
+ cr.save do
247
+ cr.translate(x, y)
248
+ cr.scale(radius, radius)
249
+ cr.arc(0, 0, 0.5, 0, 2 * Math::PI)
250
+ cr.fill
251
+ end
252
+ end
253
+
254
+ def draw_available_marks(cr, motions)
255
+ motions.each do |motion|
256
+ adjust_x = calc_position_ratio(motion, %w(R), %w(L), %w(UR LR), %w(UL LL))
257
+ adjust_y = calc_position_ratio(motion, %w(D), %w(U), %w(LR LL), %w(UR UL))
258
+
259
+ threshold = @processor.threshold
260
+ x, y = @processor.position
261
+ x += threshold * adjust_x
262
+ y += threshold * adjust_y
263
+ draw_mark(cr, x, y, threshold)
264
+ end
265
+ end
266
+
267
+ def calc_position_ratio(motion, inc, dec, inc_skew, dec_skew)
268
+ case motion
269
+ when *inc
270
+ 1
271
+ when *inc_skew
272
+ 1 / Math.sqrt(2)
273
+ when *dec
274
+ -1
275
+ when *dec_skew
276
+ -1 / Math.sqrt(2)
277
+ else
278
+ 0
279
+ end
280
+ end
281
+
282
+ def set_motion_notify_event
283
+ signal_connect("motion_notify_event") do |widget, event|
284
+ if @processor.started?
285
+ x = @base_x + event.x
286
+ y = @base_y + event.y
287
+ @cr.line_to(x, y)
288
+ @cr.save do
289
+ if @processor.update_position(x, y)
290
+ queue_draw
291
+ end
292
+ end
293
+ @cr.stroke_preserve
294
+ true
295
+ else
296
+ false
297
+ end
298
+ end
299
+ end
300
+
301
+ def set_button_release_event
302
+ signal_connect("button_release_event") do |widget, event|
303
+ if event.button == @button and @processor.started?
304
+ Gtk.grab_remove(self)
305
+ perform_action
306
+ hide
307
+ true
308
+ else
309
+ false
310
+ end
311
+ end
312
+ end
313
+ end
314
+
315
+ class GesturedWidget < Gtk::EventBox
316
+ DEFAULT_GESTURE_BUTTON = 3
317
+
318
+ def initialize(gesture_button=nil)
319
+ super()
320
+ set_visible_window(false)
321
+ @gesture_button = gesture_button || DEFAULT_GESTURE_BUTTON
322
+ set_button_press_event
323
+ end
324
+
325
+ def layout
326
+ parent
327
+ end
328
+
329
+ def gesture(x, y, base_x, base_y)
330
+ if layout
331
+ layout.gesture(self, @gesture_button, x, y, base_x, base_y)
332
+ end
333
+ end
334
+
335
+ private
336
+ def set_button_press_event
337
+ signal_connect("button_press_event") do |widget, event|
338
+ if event.button == @gesture_button
339
+ x, y, w, h = widget.allocation.to_a
340
+ gesture(x + event.x, y + event.y, x, y)
341
+ else
342
+ false
343
+ end
344
+ end
345
+ end
346
+ end
347
+
348
+ class Layout < Gtk::Layout
349
+ def initialize()
350
+ super()
351
+ @gesture = Gesture.new()
352
+ put(@gesture, 0, 0)
353
+ end
354
+
355
+ def gesture(widget, button, x, y, base_x, base_y)
356
+ remove(@gesture)
357
+ put(@gesture, 0, 0)
358
+ _, _, w, h = allocation.to_a
359
+ @gesture.set_size_request(w, h)
360
+ @gesture.show
361
+ @gesture.start(widget, button, x, y, base_x, base_y)
362
+ end
363
+
364
+ def add_gesture_action(sequence, action=Proc.new)
365
+ @gesture.add_action(sequence, action)
366
+ end
367
+ end
368
+
369
+ window = Gtk::Window.new("Mouse Gesture sample")
370
+
371
+ layout = Layout.new
372
+
373
+ gestured_widget = GesturedWidget.new
374
+ gestured_widget.set_size_request(50, 50)
375
+ gestured_widget.signal_connect("draw") do |widget, event|
376
+ x, y, w, h = widget.allocation.to_a
377
+ cr = widget.window.create_cairo_context
378
+ cr.set_source_rgba([0.8, 0.8, 0.3, 1])
379
+ cr.translate(x, y)
380
+ cr.scale(w, h)
381
+ cr.arc(0.5, 0.5, 0.5, -0.1, 360)
382
+ cr.fill
383
+ false
384
+ end
385
+
386
+ layout.put(gestured_widget, 75, 75)
387
+
388
+
389
+ gestured_widget2 = GesturedWidget.new
390
+ gestured_widget2.set_size_request(100, 50)
391
+ gestured_widget2.signal_connect("draw") do |widget, event|
392
+ x, y, w, h = widget.allocation.to_a
393
+ cr = widget.window.create_cairo_context
394
+ cr.set_source_rgba([0.3, 0.3, 0.8, 1])
395
+ cr.translate(x, y)
396
+ cr.scale(w, h)
397
+ cr.arc(0.5, 0.5, 0.5, -0.1, 360)
398
+ cr.fill
399
+ false
400
+ end
401
+
402
+ layout.put(gestured_widget2, 0, 25)
403
+
404
+
405
+ # gesture handlers
406
+ expand_size = 20
407
+
408
+ expand_left = Proc.new do |widget|
409
+ x = layout.child_get_property(widget, :x)
410
+ y = layout.child_get_property(widget, :y)
411
+ w, h = widget.size_request
412
+ layout.move(widget, x - expand_size, y)
413
+ widget.set_size_request(w + expand_size, h)
414
+ end
415
+
416
+ expand_right = Proc.new do |widget|
417
+ x = layout.child_get_property(widget, :x)
418
+ y = layout.child_get_property(widget, :y)
419
+ w, h = widget.size_request
420
+ layout.move(widget, x, y)
421
+ widget.set_size_request(w + expand_size, h)
422
+ end
423
+
424
+ expand_top = Proc.new do |widget|
425
+ x = layout.child_get_property(widget, :x)
426
+ y = layout.child_get_property(widget, :y)
427
+ w, h = widget.size_request
428
+ layout.move(widget, x, y - expand_size)
429
+ widget.set_size_request(w, h + expand_size)
430
+ end
431
+
432
+ expand_bottom = Proc.new do |widget|
433
+ x = layout.child_get_property(widget, :x)
434
+ y = layout.child_get_property(widget, :y)
435
+ w, h = widget.size_request
436
+ layout.move(widget, x, y)
437
+ widget.set_size_request(w, h + expand_size)
438
+ end
439
+
440
+ layout.add_gesture_action(["L"]) do |widget|
441
+ expand_left.call(widget)
442
+ end
443
+
444
+ layout.add_gesture_action(["U"]) do |widget|
445
+ expand_top.call(widget)
446
+ end
447
+
448
+ layout.add_gesture_action(["LL"]) do |widget|
449
+ expand_left.call(widget)
450
+ expand_bottom.call(widget)
451
+ end
452
+
453
+ layout.add_gesture_action(["R", "LR"]) do |widget|
454
+ expand_right.call(widget)
455
+ expand_bottom.call(widget)
456
+ expand_right.call(widget)
457
+ end
458
+
459
+
460
+ window.add(layout)
461
+ window.signal_connect("destroy"){Gtk.main_quit}
462
+
463
+ window.show_all
464
+
465
+ Gtk.main