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,384 @@
1
+ #! /usr/bin/env ruby
2
+ =begin
3
+ main.rb - Main class of gtk-demo.
4
+
5
+ Copyright (c) 2003-2013 Ruby-GNOME2 Project Team
6
+ This program is licenced under the same licence as Ruby-GNOME2.
7
+
8
+ $Id: main.rb,v 1.20 2007/07/09 13:21:54 ggc Exp $
9
+ =end
10
+
11
+ require 'gtk3'
12
+
13
+ $:.unshift(File.dirname(__FILE__))
14
+
15
+ module Demo
16
+
17
+ class Main < Gtk::Window
18
+ TITLE_COLUMN, FILENAME_COLUMN, CLASS_COLUMN, ITALIC_COLUMN = 0, 1, 2, 3
19
+
20
+ def initialize
21
+ super()
22
+
23
+ @current_file = nil
24
+
25
+ @info_buffer = Gtk::TextBuffer.new
26
+ @source_buffer = Gtk::TextBuffer.new
27
+
28
+ set_title('Ruby/GTK+ Code Demos')
29
+ signal_connect('destroy') do
30
+ Gtk.main_quit
31
+ end
32
+
33
+ signal_connect("key_press_event") do |widget, event|
34
+ if event.state.control_mask? and event.keyval == Gdk::Keyval::GDK_KEY_q
35
+ destroy
36
+ true
37
+ else
38
+ false
39
+ end
40
+ end
41
+
42
+ hbox = Gtk::Box.new(:horizontal)
43
+ add(hbox)
44
+
45
+ tree = create_tree
46
+ scrolled_window = Gtk::ScrolledWindow.new
47
+ scrolled_window.set_policy :never, :automatic
48
+ scrolled_window.add(tree)
49
+ hbox.pack_start(scrolled_window, :expand => false, :fill => false, :padding => 0)
50
+
51
+ notebook = Gtk::Notebook.new
52
+ hbox.pack_start(notebook, :expand => true, :fill => true, :padding => 0)
53
+
54
+ notebook.append_page(create_text(@info_buffer, false),
55
+ Gtk::Label.new('_Info', true))
56
+
57
+ notebook.append_page(create_text(@source_buffer, true),
58
+ Gtk::Label.new('_Source', true))
59
+
60
+ @info_buffer.create_tag('title',
61
+ {'font' => 'Sans 18'})
62
+
63
+ @source_buffer.create_tag('comment',
64
+ {'foreground' => 'red'})
65
+ @source_buffer.create_tag('const',
66
+ {'foreground' => 'ForestGreen'})
67
+ @source_buffer.create_tag('string',
68
+ {
69
+ 'foreground' => 'RosyBrown',
70
+ 'weight' => Pango::FontDescription::WEIGHT_BOLD
71
+ })
72
+ @source_buffer.create_tag('reserved',
73
+ {'foreground' => 'purple'})
74
+ end
75
+
76
+ def script_info(path)
77
+ title = nil
78
+ klass = nil
79
+ depend = nil
80
+
81
+ file = File.open(path)
82
+ file.each do |ln|
83
+ if not title and ln =~ /^=\s+(.*)$/
84
+ title = $1
85
+ if title =~ /^(.*)\((.+?)\)$/
86
+ title = $1
87
+ depend = $2
88
+ end
89
+ elsif not klass and ln =~ /\s*class\s+([A-Z][A-Za-z0-9_]*)/
90
+ klass = $1
91
+ end
92
+
93
+ if title and klass
94
+ break
95
+ end
96
+ end
97
+
98
+ if not klass
99
+ raise "File not found: #{path}."
100
+ end
101
+
102
+ return title, klass.intern, depend
103
+ end
104
+
105
+ def generate_index
106
+ # Target scripts
107
+ scripts = Dir.glob(File.join(File.dirname(__FILE__), '*.rb'))
108
+
109
+ # Generate index tree
110
+ children = {}
111
+ index = []
112
+
113
+ scripts.each do |script|
114
+ next if ["common.rb", "main.rb"].include?(File.basename(script))
115
+ title, klass, depend = script_info(script)
116
+
117
+ if depend and not Gtk.const_defined?(depend)
118
+ next
119
+ end
120
+
121
+ if title =~ %r{^(.+?)/(.+)$}
122
+ parent = $1
123
+ child = $2
124
+
125
+ unless children[parent]
126
+ children[parent] = []
127
+ index += [[parent, nil, nil, []]]
128
+ end
129
+
130
+ children[parent] += [[child, script, klass]]
131
+ else
132
+ index += [[title, script, klass]]
133
+ end
134
+ end
135
+
136
+ # Sort children
137
+ children.each_key do |parent|
138
+ children[parent].sort! do |a, b|
139
+ a[0] <=> b[0]
140
+ end
141
+ end
142
+
143
+ # Expand children
144
+ index.collect! do |row|
145
+ if row[3]
146
+ row[3] = children[row[0]]
147
+ end
148
+
149
+ row
150
+ end
151
+
152
+ index.sort! do |a, b|
153
+ a[0] <=> b[0]
154
+ end
155
+
156
+ index
157
+ end
158
+
159
+ def create_tree
160
+ model = Gtk::TreeStore.new(String, String, String, TrueClass)
161
+
162
+ tree_view = Gtk::TreeView.new
163
+ tree_view.set_model(model)
164
+ selection = tree_view.selection
165
+
166
+ selection.set_mode(:browse)
167
+ tree_view.set_size_request(200, -1)
168
+
169
+ append_children(model, generate_index)
170
+
171
+ cell = Gtk::CellRendererText.new
172
+ cell.style = Pango::FontDescription::STYLE_ITALIC
173
+ column = Gtk::TreeViewColumn.new("Widget (double click for demo)", cell,
174
+ {
175
+ 'text' => TITLE_COLUMN,
176
+ 'style_set' => ITALIC_COLUMN,
177
+ })
178
+
179
+ tree_view.append_column(column)
180
+
181
+ selection.signal_connect('changed') do |selection|
182
+ iter = selection.selected
183
+ load_file(iter.get_value(FILENAME_COLUMN)) if iter
184
+ end
185
+ tree_view.signal_connect('row_activated') do |tree_view, path, column|
186
+ row_activated_cb(tree_view.model, path)
187
+ end
188
+
189
+ tree_view.expand_all
190
+ return tree_view
191
+ end
192
+
193
+ def append_children(model, source, parent = nil)
194
+ source.each do |title, filename, klass, children|
195
+ iter = model.append(parent)
196
+
197
+ [title, filename, klass].each_with_index do |value, i|
198
+ if value
199
+ iter.set_value(i, value)
200
+ end
201
+ end
202
+ iter.set_value(ITALIC_COLUMN, false)
203
+
204
+ if children
205
+ append_children(model, children, iter)
206
+ end
207
+ end
208
+ end
209
+
210
+ def row_activated_cb(model, path)
211
+ iter = model.get_iter(path)
212
+ iter.set_value(ITALIC_COLUMN, true)
213
+
214
+ lib = iter.get_value(FILENAME_COLUMN)
215
+ if lib
216
+ require(lib)
217
+
218
+ klass = Demo.const_get(iter.get_value(CLASS_COLUMN))
219
+ window = klass.new
220
+ window.signal_connect('destroy') do
221
+ iter.set_value(ITALIC_COLUMN, false)
222
+ end
223
+ window.show_all
224
+ @window = window
225
+ end
226
+ end
227
+
228
+ def create_text(buffer, is_source)
229
+ scrolled_window = Gtk::ScrolledWindow.new
230
+ scrolled_window.set_policy(:automatic,
231
+ :automatic)
232
+ scrolled_window.set_shadow_type(:in)
233
+
234
+ text_view = Gtk::TextView.new
235
+
236
+ text_view.set_buffer(buffer)
237
+ text_view.set_editable(false)
238
+ text_view.set_cursor_visible(false)
239
+
240
+ scrolled_window.add(text_view)
241
+
242
+ if is_source
243
+ font_desc = Pango::FontDescription.new('Monospace 12')
244
+ text_view.override_font(font_desc)
245
+
246
+ text_view.set_wrap_mode(:none)
247
+ else
248
+ text_view.set_wrap_mode(:word)
249
+ text_view.set_pixels_above_lines(2)
250
+ text_view.set_pixels_below_lines(2)
251
+ end
252
+
253
+ return scrolled_window
254
+ end
255
+
256
+ def fontify(start_iter = @source_buffer.start_iter,
257
+ end_iter = @source_buffer.end_iter)
258
+ str = @source_buffer.get_text(start_iter, end_iter, true)
259
+
260
+ tokenizer = RubyTokonizer.new
261
+ tokenizer.tokenize(str, start_iter.offset) do |tag, start, last|
262
+ @source_buffer.apply_tag(tag.to_s,
263
+ @source_buffer.get_iter_at(:offset => start),
264
+ @source_buffer.get_iter_at(:offset => last))
265
+ end
266
+ end
267
+
268
+
269
+ def load_file(filename)
270
+ if filename == @current_file
271
+ return
272
+ end
273
+
274
+ @info_buffer.delete(*@info_buffer.bounds)
275
+
276
+ @source_buffer.delete(*@source_buffer.bounds)
277
+
278
+ file = begin
279
+ File.open(filename)
280
+ rescue
281
+ $stderr.puts "Cannot open: #{$!}" if $DEBUG
282
+ return
283
+ end
284
+ start = @info_buffer.get_iter_at(:offset => 0)
285
+ state = :before_header
286
+
287
+ file.each do |line|
288
+ case state
289
+ when :before_header
290
+ if line =~ /^=begin$/
291
+ state = :in_header
292
+ end
293
+ when :in_header
294
+ if line =~ /^=end$/
295
+ state = :body
296
+ start = @source_buffer.get_iter_at(:offset => 0)
297
+ elsif line =~ /^=\s+(.*)$/
298
+ title = $1
299
+ title.gsub!(/\s*\(.*\)$/, '') # Delete depend field
300
+
301
+ last = start
302
+
303
+ @info_buffer.insert(last, title)
304
+ start = last.clone
305
+
306
+ start.backward_chars(title.length)
307
+ @info_buffer.apply_tag('title', start, last)
308
+
309
+ start = last
310
+ else
311
+ @info_buffer.insert(start, line)
312
+ end
313
+ when :body # Reading program body
314
+ @source_buffer.insert(start, line)
315
+ end
316
+ end
317
+
318
+ fontify
319
+
320
+ @current_file = filename
321
+ end
322
+ end
323
+
324
+ class RubyTokonizer
325
+ RESERVED_WORDS = %w(begin end module class def if then else while unless do case when require yield)
326
+ RESERVED_WORDS_PATTERN = Regexp.compile(/(^|\s+)(#{RESERVED_WORDS.collect do |pat| Regexp.quote(pat) end.join('|')})(\s+|$)/)
327
+
328
+ def tokenize(str, index = 0)
329
+ until str.empty?
330
+ tag = nil
331
+
332
+ case str
333
+ when /".+?"/, /'.+?'/
334
+ tag = :string
335
+ when /#.*$/
336
+ tag = :comment
337
+ when RESERVED_WORDS_PATTERN
338
+ tag = :reserved
339
+ when /[A-Z][A-Za-z0-9_]+/
340
+ tag = :const
341
+ end
342
+
343
+ if tag
344
+ tokenize($~.pre_match, index) do |*args|
345
+ yield(*args)
346
+ end
347
+ yield(tag, index + $~.begin(0), index + $~.end(0))
348
+ index += (str.length - $~.post_match.length)
349
+ str = $~.post_match
350
+ else
351
+ index += str.length
352
+ str = ''
353
+ end
354
+ end
355
+ end
356
+ end
357
+ end
358
+
359
+
360
+ target = ARGV.shift
361
+ if target
362
+ Demo::INDEX.each do |title, filename, klass_symbol, children|
363
+ if target == filename or target == klass_symbol.id2name
364
+ require filename
365
+
366
+ window = Demo.const_get(klass_symbol).new
367
+ window.show_all
368
+
369
+ class << window
370
+ def quit
371
+ Gtk.main_quit
372
+ end
373
+ end
374
+
375
+ break
376
+ end
377
+ end
378
+ else
379
+ main = Demo::Main.new
380
+ main.set_default_size(600, 400)
381
+ main.show_all
382
+ end
383
+
384
+ Gtk.main
@@ -0,0 +1,172 @@
1
+ # Copyright (c) 2003-2005 Ruby-GNOME2 Project Team
2
+ # This program is licenced under the same licence as Ruby-GNOME2.
3
+ #
4
+ # $Id: menus.rb,v 1.4 2005/02/12 23:02:43 kzys Exp $
5
+ =begin
6
+ = Menus
7
+
8
+ There are several widgets involved in displaying menus. The
9
+ Gtk::MenuBar widget is a horizontal menu bar, which normally appears
10
+ at the top of an application. The Gtk::Menu widget is the actual menu
11
+ that pops up. Both Gtk::MenuBar and Gtk::Menu are subclasses of
12
+ Gtk::MenuShell; a Gtk::MenuShell contains menu items
13
+ (Gtk::MenuItem). Each menu item contains text and/or images and can
14
+ be selected by the user.
15
+
16
+ There are several kinds of menu item, including plain Gtk::MenuItem,
17
+ Gtk::CheckMenuItem which can be checked/unchecked, Gtk::RadioMenuItem
18
+ which is a check menu item that's in a mutually exclusive group,
19
+ Gtk::SeparatorMenuItem which is a separator bar, Gtk::TearoffMenuItem
20
+ which allows a Gtk::Menu to be torn off, and Gtk::ImageMenuItem which
21
+ can place a Gtk::Image or other widget next to the menu text.
22
+
23
+ A Gtk::MenuItem can have a submenu, which is simply a Gtk::Menu to pop
24
+ up when the menu item is selected. Typically, all menu items in a menu bar
25
+ have submenus.
26
+
27
+ The Gtk::OptionMenu widget is a button that pops up a Gtk::Menu when clicked.
28
+ It's used inside dialogs and such.
29
+
30
+ Gtk::ItemFactory provides a higher-level interface for creating menu bars
31
+ and menus; while you can construct menus manually, most people don't
32
+ do that. There's a separate demo for Gtk::ItemFactory.
33
+ =end
34
+ require 'common'
35
+
36
+ module Demo
37
+ class Menus < BasicWindow
38
+ def initialize
39
+ super('menus')
40
+ self.border_width = 0
41
+
42
+ accel_group = Gtk::AccelGroup.new
43
+ add_accel_group(accel_group)
44
+
45
+
46
+ box1 = Gtk::VBox.new(false, 0)
47
+ add(box1)
48
+
49
+ menubar = Gtk::MenuBar.new
50
+ box1.pack_start(menubar, :expand => false, :fill => true, :padding => 0)
51
+
52
+ menu = create_menu(2, true)
53
+
54
+ menuitem = Gtk::MenuItem.new("test\nline2")
55
+ menuitem.submenu = menu
56
+ menubar.append(menuitem)
57
+ menuitem.show
58
+
59
+ menuitem = Gtk::MenuItem.new('foo')
60
+ menuitem.submenu = create_menu(3, true)
61
+ menubar.append(menuitem)
62
+ menuitem.show
63
+
64
+ menuitem = Gtk::MenuItem.new('bar')
65
+ menuitem.submenu = create_menu(4, true)
66
+ menuitem.right_justified = true
67
+ menubar.append(menuitem)
68
+ menuitem.show
69
+
70
+ box2 = Gtk::VBox.new(false, 10)
71
+ box2.border_width = 10
72
+ box1.pack_start(box2, :expand => true, :fill => true, :padding => 0)
73
+ box2.show
74
+
75
+ menu = create_menu(1, false)
76
+ # menu.accel_group = accel_group
77
+
78
+ menuitem = Gtk::SeparatorMenuItem.new
79
+ menu.append(menuitem)
80
+ menuitem.show
81
+
82
+ menuitem = Gtk::CheckMenuItem.new('Accelerate Me')
83
+ menu.append(menuitem)
84
+ menuitem.show
85
+ menuitem.add_accelerator('activate',
86
+ accel_group,
87
+ Gdk::Keyval::GDK_F1,
88
+ 0,
89
+ Gtk::ACCEL_VISIBLE)
90
+ menuitem = Gtk::CheckMenuItem.new('Accelerator Locked')
91
+ menu.append(menuitem)
92
+ menuitem.show
93
+ menuitem.add_accelerator('activate',
94
+ accel_group,
95
+ Gdk::Keyval::GDK_F2,
96
+ 0,
97
+ Gtk::ACCEL_VISIBLE | Gtk::ACCEL_LOCKED)
98
+ menuitem = Gtk::CheckMenuItem.new('Accelerators Frozen')
99
+ menu.append(menuitem)
100
+ menuitem.show
101
+ menuitem.add_accelerator('activate',
102
+ accel_group,
103
+ Gdk::Keyval::GDK_F2,
104
+ 0,
105
+ Gtk::ACCEL_VISIBLE)
106
+ menuitem.add_accelerator('activate',
107
+ accel_group,
108
+ Gdk::Keyval::GDK_F3,
109
+ 0,
110
+ Gtk::ACCEL_VISIBLE)
111
+
112
+ optionmenu = Gtk::OptionMenu.new
113
+ optionmenu.menu = menu
114
+ optionmenu.history = 3
115
+ box2.pack_start(optionmenu, :expand => true, :fill => true, :padding => 0)
116
+ optionmenu.show
117
+
118
+ separator = Gtk::HSeparator.new
119
+ box1.pack_start(separator, :expand => false, :fill => true, :padding => 0)
120
+ separator.show
121
+
122
+ box2 = Gtk::VBox.new(false, 10)
123
+ box2.border_width = 10
124
+ box1.pack_start(box2, :expand => false, :fill => true, :padding => 0)
125
+ box2.show
126
+
127
+ button = Gtk::Button.new('close')
128
+ button.signal_connect('clicked') do
129
+ quit
130
+ end
131
+ box2.pack_start(button, :expand => true, :fill => true, :padding => 0)
132
+ button.flags = Gtk::Widget::CAN_DEFAULT
133
+ button.grab_default
134
+ button.show
135
+ end
136
+
137
+
138
+ def create_menu (depth, tearoff)
139
+ if depth < 1
140
+ return nil
141
+ end
142
+
143
+ menu = Gtk::Menu.new
144
+ group = nil
145
+
146
+ if tearoff
147
+ menuitem = Gtk::TearoffMenuItem.new
148
+ menu.append(menuitem)
149
+ menuitem.show
150
+ end
151
+
152
+ 5.times do |i|
153
+ buf = sprintf('item %2d - %d', depth, i + 1)
154
+ menuitem = Gtk::RadioMenuItem.new(buf)
155
+ group = menuitem.group
156
+
157
+ menu.append(menuitem)
158
+ menuitem.show
159
+ if i == 3
160
+ menuitem.sensitive = false
161
+ end
162
+
163
+ if submenu = create_menu(depth - 1, true)
164
+ menuitem.submenu = submenu
165
+ end
166
+ end
167
+
168
+ menu.show
169
+ return menu
170
+ end
171
+ end
172
+ end