gtk3 2.2.5-x64-mingw32 → 3.0.0-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (582) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +1 -0
  3. data/ext/gtk3/depend +0 -5
  4. data/ext/gtk3/extconf.rb +43 -53
  5. data/ext/gtk3/rb-gtk3-container.c +159 -0
  6. data/ext/gtk3/{rbgtk3util.h → rb-gtk3-private.h} +9 -9
  7. data/ext/gtk3/rb-gtk3-widget.c +71 -0
  8. data/ext/gtk3/rb-gtk3.c +407 -0
  9. data/ext/gtk3/{rbgtk-orientable.c → rb-gtk3.h} +10 -7
  10. data/extconf.rb +25 -9
  11. data/lib/2.0/gtk3.so +0 -0
  12. data/lib/2.1/gtk3.so +0 -0
  13. data/lib/2.2/gtk3.so +0 -0
  14. data/lib/gtk3.rb +70 -9
  15. data/lib/gtk3/about-dialog.rb +34 -0
  16. data/lib/gtk3/action-group.rb +131 -0
  17. data/lib/gtk3/action.rb +27 -0
  18. data/lib/gtk3/binding-set.rb +31 -0
  19. data/lib/gtk3/border.rb +28 -0
  20. data/lib/gtk3/box.rb +40 -0
  21. data/lib/gtk3/builder.rb +91 -0
  22. data/lib/gtk3/button.rb +53 -0
  23. data/lib/gtk3/calendar.rb +24 -0
  24. data/lib/gtk3/cell-layout.rb +31 -0
  25. data/{test/test_gtk_accel_group_entry.rb → lib/gtk3/clipboard.rb} +8 -7
  26. data/lib/gtk3/color-chooser-dialog.rb +27 -0
  27. data/lib/gtk3/combo-box-text.rb +30 -0
  28. data/lib/gtk3/combo-box.rb +55 -0
  29. data/lib/gtk3/container.rb +51 -0
  30. data/lib/gtk3/css-provider.rb +38 -0
  31. data/lib/gtk3/deprecated.rb +193 -99
  32. data/lib/gtk3/dialog.rb +65 -0
  33. data/lib/gtk3/file-chooser-dialog.rb +36 -0
  34. data/lib/gtk3/font-chooser-dialog.rb +27 -0
  35. data/lib/gtk3/gdk-drag-context.rb +29 -0
  36. data/lib/gtk3/gesture-multi-press.rb +31 -0
  37. data/lib/gtk3/icon-theme.rb +28 -0
  38. data/lib/gtk3/icon-view.rb +45 -0
  39. data/lib/gtk3/image.rb +113 -0
  40. data/lib/gtk3/label.rb +54 -0
  41. data/{test/test_gtk_tree_selection.rb → lib/gtk3/level-bar.rb} +13 -12
  42. data/lib/gtk3/list-store.rb +81 -0
  43. data/lib/gtk3/loader.rb +403 -0
  44. data/lib/gtk3/menu-item.rb +33 -0
  45. data/lib/gtk3/message-dialog.rb +49 -0
  46. data/lib/gtk3/paned.rb +37 -0
  47. data/lib/gtk3/radio-action.rb +28 -0
  48. data/lib/gtk3/radio-button.rb +49 -0
  49. data/lib/gtk3/recent-chooser-dialog.rb +38 -0
  50. data/lib/gtk3/scale-button.rb +35 -0
  51. data/{test/test_gtk_allocation.rb → lib/gtk3/scrolled-window.rb} +7 -7
  52. data/lib/gtk3/search-bar.rb +27 -0
  53. data/lib/gtk3/selection-data.rb +42 -0
  54. data/lib/gtk3/spin-button.rb +34 -0
  55. data/lib/gtk3/stack.rb +54 -0
  56. data/lib/gtk3/stock.rb +70 -0
  57. data/lib/gtk3/style-context.rb +26 -0
  58. data/lib/gtk3/style-properties.rb +29 -0
  59. data/lib/gtk3/target-entry.rb +27 -0
  60. data/lib/gtk3/target-list.rb +31 -0
  61. data/lib/gtk3/text-buffer.rb +165 -0
  62. data/lib/gtk3/text-iter.rb +39 -0
  63. data/lib/gtk3/text-tag-table.rb +31 -0
  64. data/lib/gtk3/toggle-action.rb +27 -0
  65. data/lib/gtk3/toggle-button.rb +35 -0
  66. data/lib/gtk3/tool-button.rb +36 -0
  67. data/lib/gtk3/tree-iter.rb +52 -0
  68. data/lib/gtk3/tree-model-filter.rb +45 -0
  69. data/lib/gtk3/tree-model.rb +51 -0
  70. data/lib/gtk3/tree-path.rb +29 -0
  71. data/lib/gtk3/tree-selection.rb +30 -0
  72. data/lib/gtk3/tree-store.rb +59 -0
  73. data/lib/gtk3/tree-view-column.rb +35 -0
  74. data/lib/gtk3/tree-view.rb +41 -0
  75. data/lib/gtk3/ui-manager.rb +35 -0
  76. data/lib/gtk3/version.rb +28 -0
  77. data/lib/gtk3/widget.rb +127 -0
  78. data/lib/gtk3/window.rb +29 -0
  79. data/sample/gtk-demo/TODO +69 -0
  80. data/sample/gtk-demo/application.ui +107 -0
  81. data/sample/gtk-demo/builder.rb +2 -2
  82. data/sample/gtk-demo/{button_box.rb → button-box.rb} +16 -17
  83. data/sample/gtk-demo/common.rb +1 -1
  84. data/sample/gtk-demo/css_accordion.rb +5 -5
  85. data/sample/gtk-demo/css_basics.css +22 -0
  86. data/sample/gtk-demo/css_basics.rb +103 -0
  87. data/sample/gtk-demo/dialog.rb +3 -3
  88. data/sample/gtk-demo/entry_completion.rb +1 -1
  89. data/sample/gtk-demo/hypertext.rb +1 -1
  90. data/sample/gtk-demo/main.rb +65 -91
  91. data/sample/gtk-demo/menus.rb +4 -4
  92. data/sample/gtk-demo/menus.ui +107 -0
  93. data/sample/gtk-demo/sizegroup.rb +1 -1
  94. data/sample/misc/aboutdialog.rb +10 -18
  95. data/sample/misc/aboutdialog2.rb +4 -16
  96. data/sample/misc/alpha-demo.rb +17 -16
  97. data/sample/misc/application.rb +31 -0
  98. data/sample/misc/assistant.rb +3 -5
  99. data/sample/misc/bindings.rb +64 -50
  100. data/sample/misc/builder-from-resource.rb +53 -0
  101. data/sample/misc/builder.rb +29 -0
  102. data/sample/misc/builder.ui +46 -0
  103. data/sample/misc/button.rb +18 -19
  104. data/sample/misc/button2.rb +5 -5
  105. data/sample/misc/buttonbox.rb +2 -4
  106. data/sample/misc/cairo-cursor.rb +37 -0
  107. data/sample/misc/cairo-pong.rb +17 -17
  108. data/sample/misc/calendar.rb +18 -18
  109. data/sample/misc/checkbutton.rb +3 -4
  110. data/sample/misc/colorselection.rb +10 -9
  111. data/sample/misc/{combo_check.rb → combo-check.rb} +1 -3
  112. data/sample/misc/combobox-from-cellrender.rb +48 -0
  113. data/sample/misc/combobox.rb +10 -10
  114. data/sample/misc/cursor.rb +5 -5
  115. data/sample/misc/dialog.rb +3 -4
  116. data/sample/misc/dialog2.rb +5 -6
  117. data/sample/misc/dnd.rb +27 -23
  118. data/sample/misc/dndtreeview.rb +16 -18
  119. data/sample/misc/drag-move.rb +3 -6
  120. data/sample/misc/drawing.rb +74 -86
  121. data/sample/misc/entry.rb +2 -4
  122. data/sample/misc/entrycompletion.rb +5 -5
  123. data/sample/misc/eventbox.rb +58 -0
  124. data/sample/misc/expander.rb +6 -5
  125. data/sample/misc/filechooser.rb +5 -7
  126. data/sample/misc/flowbox.rb +86 -0
  127. data/sample/misc/frame.rb +10 -12
  128. data/sample/misc/gdkscreen.rb +3 -3
  129. data/sample/misc/gtkglarea1.rb +114 -0
  130. data/sample/misc/gtkglarea2.rb +194 -0
  131. data/sample/misc/helloworld.rb +2 -5
  132. data/sample/misc/iconview.rb +9 -9
  133. data/sample/misc/image.rb +7 -6
  134. data/sample/misc/keyboard-grab.rb +34 -0
  135. data/sample/misc/label.rb +10 -11
  136. data/sample/misc/linkbutton.rb +3 -10
  137. data/sample/misc/list-store-usage.rb +96 -0
  138. data/sample/misc/listview.rb +9 -11
  139. data/sample/misc/menu.rb +45 -25
  140. data/sample/misc/{misc_button.rb → misc-button.rb} +15 -14
  141. data/sample/misc/mouse-gesture.rb +35 -42
  142. data/sample/misc/pango-layout.rb +100 -0
  143. data/sample/misc/pointer-grab.rb +36 -0
  144. data/sample/misc/print.rb +202 -201
  145. data/sample/misc/properties.rb +16 -14
  146. data/sample/misc/radiobutton.rb +18 -20
  147. data/sample/misc/recentchooserdialog.rb +8 -10
  148. data/sample/misc/rgtk+cairo.rb +26 -27
  149. data/sample/misc/scalebutton.rb +19 -7
  150. data/sample/misc/simple_window.gresource.xml +6 -0
  151. data/sample/misc/simple_window.ui +16 -0
  152. data/sample/misc/statusicon.rb +11 -14
  153. data/sample/misc/stock.rb +14 -11
  154. data/sample/misc/style-property.rb +76 -0
  155. data/sample/misc/t-gtkplug.rb +11 -14
  156. data/sample/misc/t-gtksocket.rb +19 -18
  157. data/sample/misc/template-from-resource.rb +59 -0
  158. data/sample/misc/template.gresource.xml +6 -0
  159. data/sample/misc/template.ui +16 -0
  160. data/sample/misc/textbuffer-serialize.rb +133 -0
  161. data/sample/misc/threads.rb +54 -13
  162. data/sample/misc/to-drawable.rb +34 -0
  163. data/sample/misc/togglebutton.rb +6 -8
  164. data/sample/misc/toolbar.rb +39 -30
  165. data/sample/misc/tooltips.rb +95 -104
  166. data/sample/misc/{tree_combo.rb → tree-combo.rb} +21 -27
  167. data/sample/misc/{tree_progress.rb → tree-progress.rb} +12 -17
  168. data/sample/misc/treemodelfilter.rb +13 -10
  169. data/sample/misc/treeview.rb +18 -20
  170. data/sample/misc/window.rb +2 -4
  171. data/sample/misc/xbm-cursor.rb +86 -0
  172. data/sample/tutorial/README.md +338 -0
  173. data/sample/tutorial/builder.ui +66 -0
  174. data/sample/tutorial/example-0.rb +32 -0
  175. data/sample/tutorial/example-1.rb +47 -0
  176. data/sample/tutorial/example-2.rb +68 -0
  177. data/sample/tutorial/example-4.rb +41 -0
  178. data/sample/tutorial/exampleapp.desktop +6 -0
  179. data/sample/tutorial/exampleapp.png +0 -0
  180. data/sample/tutorial/exampleapp1/exampleapp.rb +57 -0
  181. data/sample/tutorial/exampleapp2/exampleapp.gresource.xml +6 -0
  182. data/sample/tutorial/exampleapp2/exampleapp.rb +87 -0
  183. data/sample/tutorial/exampleapp2/window.ui +32 -0
  184. data/sample/tutorial/exampleapp3/exampleapp.gresource.xml +6 -0
  185. data/sample/tutorial/exampleapp3/exampleapp.rb +106 -0
  186. data/sample/tutorial/exampleapp3/window.ui +32 -0
  187. data/sample/tutorial/exampleapp4/app-menu.ui +18 -0
  188. data/sample/tutorial/exampleapp4/exampleapp.gresource.xml +7 -0
  189. data/sample/tutorial/exampleapp4/exampleapp.rb +124 -0
  190. data/sample/tutorial/exampleapp4/window.ui +32 -0
  191. data/sample/tutorial/exampleapp5/app-menu.ui +18 -0
  192. data/sample/tutorial/exampleapp5/exampleapp.gresource.xml +7 -0
  193. data/sample/tutorial/exampleapp5/exampleapp.rb +135 -0
  194. data/sample/tutorial/exampleapp5/org.gtk.exampleapp.gschema.xml +20 -0
  195. data/sample/tutorial/exampleapp5/window.ui +32 -0
  196. data/sample/tutorial/exampleapp6/app-menu.ui +18 -0
  197. data/sample/tutorial/exampleapp6/exampleapp.gresource.xml +8 -0
  198. data/sample/tutorial/exampleapp6/exampleapp.rb +168 -0
  199. data/sample/tutorial/exampleapp6/org.gtk.exampleapp.gschema.xml +20 -0
  200. data/sample/tutorial/exampleapp6/prefs.ui +70 -0
  201. data/sample/tutorial/exampleapp6/window.ui +32 -0
  202. data/sample/tutorial/exampleapp7/app-menu.ui +18 -0
  203. data/sample/tutorial/exampleapp7/exampleapp.gresource.xml +8 -0
  204. data/sample/tutorial/exampleapp7/exampleapp.rb +200 -0
  205. data/sample/tutorial/exampleapp7/org.gtk.exampleapp.gschema.xml +20 -0
  206. data/sample/tutorial/exampleapp7/prefs.ui +70 -0
  207. data/sample/tutorial/exampleapp7/window.ui +63 -0
  208. data/sample/tutorial/exampleapp8/app-menu.ui +18 -0
  209. data/sample/tutorial/exampleapp8/exampleapp.gresource.xml +9 -0
  210. data/sample/tutorial/exampleapp8/exampleapp.rb +247 -0
  211. data/sample/tutorial/exampleapp8/gears-menu.ui +12 -0
  212. data/sample/tutorial/exampleapp8/org.gtk.exampleapp.gschema.xml +25 -0
  213. data/sample/tutorial/exampleapp8/prefs.ui +70 -0
  214. data/sample/tutorial/exampleapp8/window.ui +100 -0
  215. data/test/fixture/Rakefile +32 -0
  216. data/test/fixture/gnome-logo-icon.png +0 -0
  217. data/test/fixture/image.gresource +0 -0
  218. data/test/fixture/image.gresource.xml +6 -0
  219. data/test/fixture/simple_window.gresource.xml +6 -0
  220. data/test/fixture/simple_window.ui +16 -0
  221. data/test/gtk-test-utils.rb +46 -4
  222. data/test/run-test.rb +9 -1
  223. data/test/{test_gc.rb → test-gc.rb} +0 -0
  224. data/test/{test_gtk_css_provider.rb → test-gdk-display.rb} +6 -8
  225. data/test/test-gdk-event.rb +24 -0
  226. data/test/test-gdk-screen.rb +42 -0
  227. data/test/{test_gtk_about_dialog.rb → test-gtk-about-dialog.rb} +0 -0
  228. data/test/test-gtk-accel-group.rb +23 -0
  229. data/test/{test_gtk_accel_key.rb → test-gtk-accel-key.rb} +0 -0
  230. data/test/{test_gtk_accessible.rb → test-gtk-accessible.rb} +0 -0
  231. data/test/{test_gtk_action_group.rb → test-gtk-action-bar.rb} +20 -23
  232. data/test/test-gtk-action-group.rb +48 -0
  233. data/test/test-gtk-action.rb +41 -0
  234. data/test/test-gtk-assistant.rb +44 -0
  235. data/test/{test_gtk_border.rb → test-gtk-border.rb} +0 -0
  236. data/test/test-gtk-box.rb +28 -0
  237. data/test/{test_gtk_buildable.rb → test-gtk-buildable.rb} +6 -6
  238. data/test/{test_gtk_builder.rb → test-gtk-builder.rb} +45 -11
  239. data/test/test-gtk-button.rb +54 -0
  240. data/test/test-gtk-cell-layout.rb +35 -0
  241. data/test/test-gtk-color-chooser-dialog.rb +41 -0
  242. data/test/test-gtk-combo-box-text.rb +34 -0
  243. data/test/test-gtk-combo-box.rb +97 -0
  244. data/test/test-gtk-container.rb +171 -0
  245. data/test/test-gtk-css-provider.rb +101 -0
  246. data/test/test-gtk-dialog.rb +74 -0
  247. data/test/{test_gtk_entry.rb → test-gtk-entry.rb} +0 -0
  248. data/test/test-gtk-event-controller.rb +35 -0
  249. data/test/test-gtk-file-chooser-dialog.rb +52 -0
  250. data/test/test-gtk-flow-box.rb +64 -0
  251. data/test/test-gtk-font-chooser-dialog.rb +41 -0
  252. data/test/test-gtk-gesture-multi-press.rb +31 -0
  253. data/test/test-gtk-gesture-pan.rb +32 -0
  254. data/test/test-gtk-gesture-single.rb +40 -0
  255. data/test/test-gtk-gesture.rb +29 -0
  256. data/test/{test_gtk_header_bar.rb → test-gtk-header-bar.rb} +15 -1
  257. data/test/{test_gtk_icon_theme.rb → test-gtk-icon-theme.rb} +0 -0
  258. data/test/{test_gtk_icon_view.rb → test-gtk-icon-view.rb} +24 -3
  259. data/test/test-gtk-image.rb +52 -0
  260. data/test/test-gtk-label.rb +39 -0
  261. data/test/{test_gtk_level_bar.rb → test-gtk-level-bar.rb} +12 -0
  262. data/test/test-gtk-list-store.rb +204 -0
  263. data/test/{test_gtk_menu_button.rb → test-gtk-menu-button.rb} +0 -0
  264. data/test/{test_gtk_menu_item.rb → test-gtk-menu-item.rb} +0 -0
  265. data/test/test-gtk-message-dialog.rb +62 -0
  266. data/test/test-gtk-paned.rb +109 -0
  267. data/test/test-gtk-places-sidebar.rb +68 -0
  268. data/test/test-gtk-radio-action.rb +45 -0
  269. data/test/test-gtk-radio-button.rb +82 -0
  270. data/test/test-gtk-recent-chooser-dialog.rb +53 -0
  271. data/test/{test_gtk_recent_data.rb → test-gtk-recent-data.rb} +0 -0
  272. data/test/{test_gtk_recent_filter_info.rb → test-gtk-recent-filter-info.rb} +1 -1
  273. data/test/test-gtk-recent-info.rb +37 -0
  274. data/test/{test_gtk_revealer.rb → test-gtk-revealer.rb} +0 -0
  275. data/test/test-gtk-scale-button.rb +56 -0
  276. data/test/{test_gtk_search_bar.rb → test-gtk-search-bar.rb} +1 -1
  277. data/test/{test_gtk_search_entry.rb → test-gtk-search-entry.rb} +0 -0
  278. data/test/test-gtk-spin-button.rb +45 -0
  279. data/test/{test_gtk_stack_switcher.rb → test-gtk-stack-switcher.rb} +0 -0
  280. data/test/{test_gtk_stack.rb → test-gtk-stack.rb} +8 -1
  281. data/test/test-gtk-stock.rb +26 -0
  282. data/test/{test_gtk_style_context.rb → test-gtk-style-context.rb} +0 -0
  283. data/test/{test_gtk_style_properties.rb → test-gtk-style-properties.rb} +0 -0
  284. data/test/test-gtk-style-provider.rb +25 -0
  285. data/test/test-gtk-switch.rb +34 -0
  286. data/test/test-gtk-target-entry.rb +37 -0
  287. data/test/test-gtk-text-buffer.rb +151 -0
  288. data/test/{test_gtk_container.rb → test-gtk-text-tag-table.rb} +13 -11
  289. data/test/test-gtk-toggle-action.rb +41 -0
  290. data/test/test-gtk-toggle-button.rb +39 -0
  291. data/test/test-gtk-tool-button.rb +53 -0
  292. data/test/test-gtk-tree-iter.rb +53 -0
  293. data/test/test-gtk-tree-model-filter.rb +55 -0
  294. data/test/test-gtk-tree-path.rb +42 -0
  295. data/test/test-gtk-tree-selection.rb +61 -0
  296. data/test/test-gtk-tree-view-column.rb +71 -0
  297. data/test/test-gtk-tree-view.rb +105 -0
  298. data/test/test-gtk-version.rb +47 -0
  299. data/test/test-gtk-widget.rb +148 -0
  300. data/test/{test_gtk.rb → test-gtk.rb} +0 -0
  301. metadata +256 -332
  302. data/ext/gtk3/conversions.c +0 -34
  303. data/ext/gtk3/gtk3.def +0 -10
  304. data/ext/gtk3/init.c +0 -34
  305. data/ext/gtk3/rbgtk-about-dialog.c +0 -113
  306. data/ext/gtk3/rbgtk-accel-group-entry.c +0 -94
  307. data/ext/gtk3/rbgtk-accel-group.c +0 -199
  308. data/ext/gtk3/rbgtk-accel-key.c +0 -120
  309. data/ext/gtk3/rbgtk-accel-label.c +0 -55
  310. data/ext/gtk3/rbgtk-accel-map.c +0 -135
  311. data/ext/gtk3/rbgtk-accelerator.c +0 -78
  312. data/ext/gtk3/rbgtk-accessible.c +0 -40
  313. data/ext/gtk3/rbgtk-action-bar.c +0 -73
  314. data/ext/gtk3/rbgtk-action-group.c +0 -467
  315. data/ext/gtk3/rbgtk-action.c +0 -205
  316. data/ext/gtk3/rbgtk-activatable.c +0 -30
  317. data/ext/gtk3/rbgtk-adjustment.c +0 -98
  318. data/ext/gtk3/rbgtk-alignment.c +0 -75
  319. data/ext/gtk3/rbgtk-allocation.c +0 -166
  320. data/ext/gtk3/rbgtk-app-chooser-button.c +0 -70
  321. data/ext/gtk3/rbgtk-app-chooser-dialog.c +0 -68
  322. data/ext/gtk3/rbgtk-app-chooser-widget.c +0 -40
  323. data/ext/gtk3/rbgtk-app-chooser.c +0 -47
  324. data/ext/gtk3/rbgtk-application.c +0 -69
  325. data/ext/gtk3/rbgtk-arrow.c +0 -56
  326. data/ext/gtk3/rbgtk-aspect-frame.c +0 -56
  327. data/ext/gtk3/rbgtk-assistant.c +0 -218
  328. data/ext/gtk3/rbgtk-bin.c +0 -42
  329. data/ext/gtk3/rbgtk-binding-set.c +0 -154
  330. data/ext/gtk3/rbgtk-border.c +0 -119
  331. data/ext/gtk3/rbgtk-box.c +0 -146
  332. data/ext/gtk3/rbgtk-buildable.c +0 -96
  333. data/ext/gtk3/rbgtk-builder.c +0 -166
  334. data/ext/gtk3/rbgtk-button-box.c +0 -87
  335. data/ext/gtk3/rbgtk-button.c +0 -93
  336. data/ext/gtk3/rbgtk-calendar.c +0 -118
  337. data/ext/gtk3/rbgtk-cell-editable.c +0 -57
  338. data/ext/gtk3/rbgtk-cell-layout.c +0 -144
  339. data/ext/gtk3/rbgtk-cell-renderer-accel.c +0 -41
  340. data/ext/gtk3/rbgtk-cell-renderer-combo.c +0 -38
  341. data/ext/gtk3/rbgtk-cell-renderer-pixbuf.c +0 -41
  342. data/ext/gtk3/rbgtk-cell-renderer-progress.c +0 -38
  343. data/ext/gtk3/rbgtk-cell-renderer-spin.c +0 -39
  344. data/ext/gtk3/rbgtk-cell-renderer-spinner.c +0 -38
  345. data/ext/gtk3/rbgtk-cell-renderer-text.c +0 -48
  346. data/ext/gtk3/rbgtk-cell-renderer-toggle.c +0 -39
  347. data/ext/gtk3/rbgtk-cell-renderer.c +0 -119
  348. data/ext/gtk3/rbgtk-cell-view.c +0 -95
  349. data/ext/gtk3/rbgtk-check-button.c +0 -64
  350. data/ext/gtk3/rbgtk-check-menu-item.c +0 -64
  351. data/ext/gtk3/rbgtk-clip-board.c +0 -389
  352. data/ext/gtk3/rbgtk-color-button.c +0 -55
  353. data/ext/gtk3/rbgtk-color-selection-dialog.c +0 -56
  354. data/ext/gtk3/rbgtk-color-selection.c +0 -219
  355. data/ext/gtk3/rbgtk-combo-box-text.c +0 -138
  356. data/ext/gtk3/rbgtk-combo-box.c +0 -147
  357. data/ext/gtk3/rbgtk-const.c +0 -79
  358. data/ext/gtk3/rbgtk-container.c +0 -788
  359. data/ext/gtk3/rbgtk-css-provider.c +0 -110
  360. data/ext/gtk3/rbgtk-dialog.c +0 -206
  361. data/ext/gtk3/rbgtk-drag-gdk-drag-context.c +0 -108
  362. data/ext/gtk3/rbgtk-drag.c +0 -93
  363. data/ext/gtk3/rbgtk-drawing-area.c +0 -42
  364. data/ext/gtk3/rbgtk-editable.c +0 -149
  365. data/ext/gtk3/rbgtk-entry-buffer.c +0 -87
  366. data/ext/gtk3/rbgtk-entry-completion.c +0 -122
  367. data/ext/gtk3/rbgtk-entry.c +0 -184
  368. data/ext/gtk3/rbgtk-event-box.c +0 -42
  369. data/ext/gtk3/rbgtk-expander.c +0 -49
  370. data/ext/gtk3/rbgtk-file-chooser-button.c +0 -50
  371. data/ext/gtk3/rbgtk-file-chooser-dialog.c +0 -62
  372. data/ext/gtk3/rbgtk-file-chooser-widget.c +0 -40
  373. data/ext/gtk3/rbgtk-file-chooser.c +0 -381
  374. data/ext/gtk3/rbgtk-file-filter.c +0 -128
  375. data/ext/gtk3/rbgtk-file-system-error.c +0 -48
  376. data/ext/gtk3/rbgtk-fixed.c +0 -61
  377. data/ext/gtk3/rbgtk-font-button.c +0 -49
  378. data/ext/gtk3/rbgtk-font-chooser-dialog.c +0 -56
  379. data/ext/gtk3/rbgtk-font-chooser-widget.c +0 -45
  380. data/ext/gtk3/rbgtk-font-chooser.c +0 -78
  381. data/ext/gtk3/rbgtk-frame.c +0 -69
  382. data/ext/gtk3/rbgtk-gdk-event.c +0 -38
  383. data/ext/gtk3/rbgtk-grid.c +0 -105
  384. data/ext/gtk3/rbgtk-handle-box.c +0 -45
  385. data/ext/gtk3/rbgtk-header-bar.c +0 -58
  386. data/ext/gtk3/rbgtk-hsv.c +0 -102
  387. data/ext/gtk3/rbgtk-icon-factory.c +0 -85
  388. data/ext/gtk3/rbgtk-icon-info.c +0 -115
  389. data/ext/gtk3/rbgtk-icon-set.c +0 -84
  390. data/ext/gtk3/rbgtk-icon-size.c +0 -91
  391. data/ext/gtk3/rbgtk-icon-source.c +0 -184
  392. data/ext/gtk3/rbgtk-icon-theme.c +0 -268
  393. data/ext/gtk3/rbgtk-icon-view.c +0 -295
  394. data/ext/gtk3/rbgtk-im-multicontext.c +0 -48
  395. data/ext/gtk3/rbgtk-image-menu-item.c +0 -67
  396. data/ext/gtk3/rbgtk-image.c +0 -162
  397. data/ext/gtk3/rbgtk-imcon-text-simple.c +0 -69
  398. data/ext/gtk3/rbgtk-imcon-text.c +0 -133
  399. data/ext/gtk3/rbgtk-infobar.c +0 -121
  400. data/ext/gtk3/rbgtk-invisible.c +0 -49
  401. data/ext/gtk3/rbgtk-label.c +0 -139
  402. data/ext/gtk3/rbgtk-layout.c +0 -93
  403. data/ext/gtk3/rbgtk-level-bar.c +0 -88
  404. data/ext/gtk3/rbgtk-link-button.c +0 -49
  405. data/ext/gtk3/rbgtk-list-store.c +0 -399
  406. data/ext/gtk3/rbgtk-lock-button.c +0 -50
  407. data/ext/gtk3/rbgtk-menu-button.c +0 -41
  408. data/ext/gtk3/rbgtk-menu-item.c +0 -95
  409. data/ext/gtk3/rbgtk-menu-shell.c +0 -106
  410. data/ext/gtk3/rbgtk-menu-tool-button.c +0 -81
  411. data/ext/gtk3/rbgtk-menu.c +0 -168
  412. data/ext/gtk3/rbgtk-menubar.c +0 -43
  413. data/ext/gtk3/rbgtk-message-dialog.c +0 -74
  414. data/ext/gtk3/rbgtk-misc.c +0 -70
  415. data/ext/gtk3/rbgtk-notebook.c +0 -383
  416. data/ext/gtk3/rbgtk-numerable-icon.c +0 -50
  417. data/ext/gtk3/rbgtk-overlay.c +0 -53
  418. data/ext/gtk3/rbgtk-page-setup-unix-dialog.c +0 -94
  419. data/ext/gtk3/rbgtk-page-setup.c +0 -195
  420. data/ext/gtk3/rbgtk-paned.c +0 -114
  421. data/ext/gtk3/rbgtk-paper-size.c +0 -179
  422. data/ext/gtk3/rbgtk-plug.c +0 -85
  423. data/ext/gtk3/rbgtk-print-context.c +0 -125
  424. data/ext/gtk3/rbgtk-print-job.c +0 -148
  425. data/ext/gtk3/rbgtk-print-operation-preview.c +0 -59
  426. data/ext/gtk3/rbgtk-print-operation.c +0 -149
  427. data/ext/gtk3/rbgtk-print-settings.c +0 -807
  428. data/ext/gtk3/rbgtk-print-unix-dialog.c +0 -90
  429. data/ext/gtk3/rbgtk-printer.c +0 -155
  430. data/ext/gtk3/rbgtk-progress-bar.c +0 -72
  431. data/ext/gtk3/rbgtk-radio-action.c +0 -122
  432. data/ext/gtk3/rbgtk-radio-button.c +0 -89
  433. data/ext/gtk3/rbgtk-radio-menu-item.c +0 -147
  434. data/ext/gtk3/rbgtk-radio-tool-button.c +0 -131
  435. data/ext/gtk3/rbgtk-range.c +0 -68
  436. data/ext/gtk3/rbgtk-recent-action.c +0 -64
  437. data/ext/gtk3/rbgtk-recent-chooser-dialog.c +0 -66
  438. data/ext/gtk3/rbgtk-recent-chooser-menu.c +0 -50
  439. data/ext/gtk3/rbgtk-recent-chooser-widget.c +0 -48
  440. data/ext/gtk3/rbgtk-recent-chooser.c +0 -198
  441. data/ext/gtk3/rbgtk-recent-data.c +0 -188
  442. data/ext/gtk3/rbgtk-recent-filter-info.c +0 -201
  443. data/ext/gtk3/rbgtk-recent-filter.c +0 -169
  444. data/ext/gtk3/rbgtk-recent-info.c +0 -213
  445. data/ext/gtk3/rbgtk-recent-manager.c +0 -134
  446. data/ext/gtk3/rbgtk-revealer.c +0 -42
  447. data/ext/gtk3/rbgtk-scale-button.c +0 -84
  448. data/ext/gtk3/rbgtk-scale.c +0 -97
  449. data/ext/gtk3/rbgtk-scrollable.c +0 -31
  450. data/ext/gtk3/rbgtk-scrollbar.c +0 -52
  451. data/ext/gtk3/rbgtk-scrolled-window.c +0 -122
  452. data/ext/gtk3/rbgtk-search-bar.c +0 -59
  453. data/ext/gtk3/rbgtk-search-entry.c +0 -42
  454. data/ext/gtk3/rbgtk-selection-data.c +0 -281
  455. data/ext/gtk3/rbgtk-selection.c +0 -168
  456. data/ext/gtk3/rbgtk-separator-menu-item.c +0 -39
  457. data/ext/gtk3/rbgtk-separator-tool-item.c +0 -38
  458. data/ext/gtk3/rbgtk-separator.c +0 -44
  459. data/ext/gtk3/rbgtk-settings.c +0 -229
  460. data/ext/gtk3/rbgtk-size-group.c +0 -66
  461. data/ext/gtk3/rbgtk-socket.c +0 -82
  462. data/ext/gtk3/rbgtk-spin-button.c +0 -132
  463. data/ext/gtk3/rbgtk-spinner.c +0 -55
  464. data/ext/gtk3/rbgtk-stack-switcher.c +0 -41
  465. data/ext/gtk3/rbgtk-stack.c +0 -106
  466. data/ext/gtk3/rbgtk-status-bar.c +0 -77
  467. data/ext/gtk3/rbgtk-status-icon.c +0 -122
  468. data/ext/gtk3/rbgtk-stock.c +0 -213
  469. data/ext/gtk3/rbgtk-style-context-gdk-screen.c +0 -61
  470. data/ext/gtk3/rbgtk-style-context.c +0 -411
  471. data/ext/gtk3/rbgtk-style-properties.c +0 -118
  472. data/ext/gtk3/rbgtk-style-provider.c +0 -67
  473. data/ext/gtk3/rbgtk-switch.c +0 -40
  474. data/ext/gtk3/rbgtk-table.c +0 -190
  475. data/ext/gtk3/rbgtk-target-list.c +0 -125
  476. data/ext/gtk3/rbgtk-tearoff-menu-item.c +0 -41
  477. data/ext/gtk3/rbgtk-text-appearance.c +0 -236
  478. data/ext/gtk3/rbgtk-text-attributes.c +0 -326
  479. data/ext/gtk3/rbgtk-text-buffer.c +0 -899
  480. data/ext/gtk3/rbgtk-text-child-anchor.c +0 -56
  481. data/ext/gtk3/rbgtk-text-iter.c +0 -732
  482. data/ext/gtk3/rbgtk-text-mark.c +0 -71
  483. data/ext/gtk3/rbgtk-text-tag-table.c +0 -96
  484. data/ext/gtk3/rbgtk-text-tag.c +0 -68
  485. data/ext/gtk3/rbgtk-text-view.c +0 -336
  486. data/ext/gtk3/rbgtk-theming-engine.c +0 -257
  487. data/ext/gtk3/rbgtk-toggle-action.c +0 -61
  488. data/ext/gtk3/rbgtk-toggle-button.c +0 -87
  489. data/ext/gtk3/rbgtk-toggle-tool-button.c +0 -61
  490. data/ext/gtk3/rbgtk-tool-button.c +0 -66
  491. data/ext/gtk3/rbgtk-tool-item.c +0 -200
  492. data/ext/gtk3/rbgtk-tool-itemgroup.c +0 -70
  493. data/ext/gtk3/rbgtk-tool-shell.c +0 -96
  494. data/ext/gtk3/rbgtk-toolbar.c +0 -118
  495. data/ext/gtk3/rbgtk-tooltip-gdk-display.c +0 -39
  496. data/ext/gtk3/rbgtk-tooltip.c +0 -100
  497. data/ext/gtk3/rbgtk-tree-dragdest.c +0 -28
  498. data/ext/gtk3/rbgtk-tree-dragsource.c +0 -28
  499. data/ext/gtk3/rbgtk-tree-iter.c +0 -258
  500. data/ext/gtk3/rbgtk-tree-model.c +0 -246
  501. data/ext/gtk3/rbgtk-tree-modelfilter.c +0 -197
  502. data/ext/gtk3/rbgtk-tree-modelsort.c +0 -111
  503. data/ext/gtk3/rbgtk-tree-path.c +0 -191
  504. data/ext/gtk3/rbgtk-tree-rowreference.c +0 -140
  505. data/ext/gtk3/rbgtk-tree-selection.c +0 -190
  506. data/ext/gtk3/rbgtk-tree-sortable.c +0 -122
  507. data/ext/gtk3/rbgtk-tree-store.c +0 -330
  508. data/ext/gtk3/rbgtk-tree-view-column.c +0 -256
  509. data/ext/gtk3/rbgtk-tree-view.c +0 -716
  510. data/ext/gtk3/rbgtk-ui-manager.c +0 -189
  511. data/ext/gtk3/rbgtk-viewport.c +0 -44
  512. data/ext/gtk3/rbgtk-volume-button.c +0 -41
  513. data/ext/gtk3/rbgtk-widget-path.c +0 -229
  514. data/ext/gtk3/rbgtk-widget.c +0 -1554
  515. data/ext/gtk3/rbgtk-window-group.c +0 -80
  516. data/ext/gtk3/rbgtk-window.c +0 -565
  517. data/ext/gtk3/rbgtk.c +0 -783
  518. data/ext/gtk3/rbgtk3.h +0 -90
  519. data/ext/gtk3/rbgtk3conversions.h +0 -439
  520. data/ext/gtk3/rbgtk3private.h +0 -300
  521. data/ext/gtk3/rbgtk3util.c +0 -67
  522. data/lib/gtk3/base.rb +0 -67
  523. data/sample/gtk-demo/appwindow.rb +0 -233
  524. data/sample/misc/composited-windows.rb +0 -113
  525. data/sample/misc/itemfactory.rb +0 -73
  526. data/sample/misc/itemfactory2.rb +0 -74
  527. data/sample/misc/keyboard_grab.rb +0 -29
  528. data/sample/misc/pangorenderer.rb +0 -66
  529. data/sample/misc/pointer_grab.rb +0 -34
  530. data/sample/misc/settings.rb +0 -41
  531. data/sample/misc/style_property.rb +0 -67
  532. data/sample/misc/style_property.rc +0 -19
  533. data/sample/misc/textbuffer_serialize.rb +0 -130
  534. data/sample/misc/to_drawable.rb +0 -42
  535. data/sample/misc/uimanager.rb +0 -148
  536. data/sample/misc/uimanager2.rb +0 -91
  537. data/sample/misc/uimanager2.xml +0 -36
  538. data/sample/misc/xbm_cursor.rb +0 -43
  539. data/sample/testgtk/3DRings.xpm +0 -116
  540. data/sample/testgtk/FilesQueue.xpm +0 -98
  541. data/sample/testgtk/Modeller.xpm +0 -117
  542. data/sample/testgtk/README +0 -14
  543. data/sample/testgtk/button.rb +0 -124
  544. data/sample/testgtk/buttonbox.rb +0 -100
  545. data/sample/testgtk/check-n.xpm +0 -21
  546. data/sample/testgtk/check-y.xpm +0 -21
  547. data/sample/testgtk/checkbutton.rb +0 -67
  548. data/sample/testgtk/circles.xbm +0 -46
  549. data/sample/testgtk/colorselect.rb +0 -33
  550. data/sample/testgtk/dialog.rb +0 -48
  551. data/sample/testgtk/entry.rb +0 -73
  552. data/sample/testgtk/filesel.rb +0 -65
  553. data/sample/testgtk/fontselection.rb +0 -56
  554. data/sample/testgtk/labels.rb +0 -74
  555. data/sample/testgtk/layout.rb +0 -108
  556. data/sample/testgtk/marble.xpm +0 -408
  557. data/sample/testgtk/menu.rb +0 -79
  558. data/sample/testgtk/notebook.rb +0 -280
  559. data/sample/testgtk/pixmap.rb +0 -58
  560. data/sample/testgtk/progressbar.rb +0 -173
  561. data/sample/testgtk/radiobutton.rb +0 -61
  562. data/sample/testgtk/range.rb +0 -65
  563. data/sample/testgtk/reparent.rb +0 -91
  564. data/sample/testgtk/sample.rb +0 -80
  565. data/sample/testgtk/savedposition.rb +0 -87
  566. data/sample/testgtk/scrolledwindow.rb +0 -67
  567. data/sample/testgtk/shapedwindow.rb +0 -99
  568. data/sample/testgtk/spinbutton.rb +0 -181
  569. data/sample/testgtk/statusbar.rb +0 -89
  570. data/sample/testgtk/test.xpm +0 -92
  571. data/sample/testgtk/testgtk.rb +0 -176
  572. data/sample/testgtk/testgtkrc +0 -146
  573. data/sample/testgtk/testgtkrc2 +0 -21
  574. data/sample/testgtk/togglebutton.rb +0 -53
  575. data/sample/testgtk/toolbar.rb +0 -82
  576. data/sample/testgtk/tooltips.rb +0 -41
  577. data/sample/testgtk/wmhints.rb +0 -40
  578. data/test/test_gtk_image.rb +0 -8
  579. data/test/test_gtk_list_store.rb +0 -105
  580. data/test/test_gtk_tree_path.rb +0 -20
  581. data/test/test_gtk_unix_print.rb +0 -14
  582. data/test/test_gtk_widget.rb +0 -24
@@ -1,15 +1,13 @@
1
1
  =begin
2
- tree_combo.rb - Gtk::TreeView and Gtk::CellRendererCombo
2
+ tree_combo.rb - Gtk::TreeView and Gtk::CellRendererCombo
3
3
  sample script.
4
4
 
5
- Copyright (C) 2006 Masao Mutoh
5
+ Copyright (C) 2006-2015 Masao Mutoh
6
+ Copyright (c) 2006-2015 Ruby-GNOME2 Project Team
6
7
  This program is licenced under the same licence as Ruby-GNOME2.
7
-
8
- $Id: tree_combo.rb,v 1.3 2006/06/17 13:18:12 mutoh Exp $
9
8
  =end
10
9
 
11
-
12
- require 'gtk3'
10
+ require "gtk3"
13
11
 
14
12
  T_APPLICATION = 0
15
13
  T_COMBO_TEXT_COLUMN = 1
@@ -20,44 +18,42 @@ T_COMBO_TEXT = 5
20
18
 
21
19
  # The COMPUTER combo model
22
20
  combo_model = Gtk::ListStore.new(String)
23
-
24
- ["Ruby", "Perl", "Python", "Java"].each do |v|
21
+
22
+ %w(Ruby Perl Python Java).each do |v|
25
23
  iter = combo_model.append
26
24
  iter[0] = v
27
25
  end
28
26
 
29
-
30
27
  # The table model.
31
28
  model = Gtk::ListStore.new(String, # T_APPLICATION
32
- Integer, # T_COMBO_TEXT_COLUMN
33
- Gtk::ListStore, # T_COMBO_MODEL
34
- TrueClass, # T_COMBO_HAS_ENTRY
35
- TrueClass, # T_COMBO_EDITABLE
36
- String) # T_COMBO_TEXT
29
+ Integer, # T_COMBO_TEXT_COLUMN
30
+ Gtk::ListStore, # T_COMBO_MODEL
31
+ TrueClass, # T_COMBO_HAS_ENTRY
32
+ TrueClass, # T_COMBO_EDITABLE
33
+ String) # T_COMBO_TEXT
37
34
 
38
35
  view = Gtk::TreeView.new(model)
39
36
 
40
37
  # 1st column(Text)
41
38
  trenderer = Gtk::CellRendererText.new
42
39
  tcol = Gtk::TreeViewColumn.new("Application", trenderer,
43
- :text => T_APPLICATION)
40
+ :text => T_APPLICATION)
44
41
  view.append_column(tcol)
45
42
 
46
43
  # 2nd column(Combo)
47
44
  crenderer = Gtk::CellRendererCombo.new
48
- crenderer.signal_connect("edited") do |renderer, path, text|
45
+ crenderer.signal_connect("edited") do |_renderer, path, text|
49
46
  model.get_iter(path)[T_COMBO_TEXT] = text
50
47
  end
51
48
 
52
49
  ccol = Gtk::TreeViewColumn.new("Language", crenderer,
53
- :text_column => T_COMBO_TEXT_COLUMN,
54
- :model => T_COMBO_MODEL,
55
- :has_entry => T_COMBO_HAS_ENTRY,
56
- :editable => T_COMBO_EDITABLE,
57
- :text => T_COMBO_TEXT)
50
+ :text_column => T_COMBO_TEXT_COLUMN,
51
+ :model => T_COMBO_MODEL,
52
+ :has_entry => T_COMBO_HAS_ENTRY,
53
+ :editable => T_COMBO_EDITABLE,
54
+ :text => T_COMBO_TEXT)
58
55
  view.append_column(ccol)
59
56
 
60
-
61
57
  # Create rows.
62
58
  (1..2).each do |v|
63
59
  iter = model.append
@@ -69,11 +65,9 @@ view.append_column(ccol)
69
65
  end
70
66
 
71
67
  win = Gtk::Window.new
72
- win.signal_connect("delete_event"){
73
- Gtk.main_quit
74
- }
68
+ win.signal_connect("delete_event") { Gtk.main_quit }
75
69
 
76
- win.add(view).show_all
70
+ win.add(view)
71
+ win.show_all
77
72
 
78
73
  Gtk.main
79
-
@@ -1,14 +1,12 @@
1
1
  =begin
2
- tree_progress.rb - Gtk::TreeView and Gtk::CellRendererProgress
2
+ tree_progress.rb - Gtk::TreeView and Gtk::CellRendererProgress
3
3
  sample script.
4
4
 
5
- Copyright (C) 2004-2006 Darren Willis, Masao Mutoh
5
+ Copyright (C) 2004-2015 Darren Willis, Masao Mutoh
6
+ Copyright (c) 2004-2015 Ruby-GNOME2 Project Team
6
7
  This program is licenced under the same licence as Ruby-GNOME2.
7
-
8
- $Id: tree_progress.rb,v 1.3 2006/06/17 13:18:12 mutoh Exp $
9
8
  =end
10
9
 
11
-
12
10
  require "gtk3"
13
11
 
14
12
  win = Gtk::Window.new("Gtk::CellRendererProgress sample")
@@ -44,18 +42,15 @@ win.add(view)
44
42
  win.show_all
45
43
 
46
44
  dir = 1
47
- thr = Thread.new do
48
- loop do
49
- value = prog2[1] + dir
50
- if value > 100
51
- dir = - dir
52
- end
53
- if value < 0
54
- dir = - dir
55
- end
56
- prog2[1] += dir
57
- sleep 0.1
58
- end
45
+ GLib::Timeout.add(100) do
46
+ value = prog2[1] + dir
47
+
48
+ dir = - dir if value > 100
49
+ dir = - dir if value < 0
50
+
51
+ prog2[1] += dir
52
+
53
+ GLib::Source::CONTINUE
59
54
  end
60
55
 
61
56
  Gtk.main
@@ -2,22 +2,24 @@
2
2
  =begin
3
3
  treemodelfilter.rb - Gtk::TreeModelFilter sample
4
4
 
5
- Copyright (c) 2004,2006 Ruby-GNOME2 Project Team
5
+ Copyright (c) 2004-2015 Ruby-GNOME2 Project Team
6
6
  This program is licenced under the same licence as Ruby-GNOME2.
7
-
8
- $Id: treemodelfilter.rb,v 1.3 2006/06/17 13:18:12 mutoh Exp $
9
7
  =end
10
- require 'gtk3'
8
+
9
+ require "gtk3"
11
10
 
12
11
  ls = Gtk::ListStore.new(String, Integer)
13
12
 
14
13
  column1 = Gtk::TreeViewColumn.new("data1",
15
- Gtk::CellRendererText.new, {:text => 0})
14
+ Gtk::CellRendererText.new,
15
+ :text => 0)
16
16
  column2 = Gtk::TreeViewColumn.new("data2",
17
- Gtk::CellRendererText.new, {:text => 1})
17
+ Gtk::CellRendererText.new,
18
+ :text => 1)
19
+
20
+ mf = Gtk::TreeModelFilter.new(:child_model => ls)
18
21
 
19
- mf = Gtk::TreeModelFilter.new(ls)
20
- mf.set_visible_func do |model, iter|
22
+ mf.set_visible_func do |_model, iter|
21
23
  /a/ =~ iter[0]
22
24
  end
23
25
 
@@ -44,6 +46,7 @@ treeview.append_column(column2)
44
46
  end
45
47
 
46
48
  win = Gtk::Window.new("Gtk::TreeModelFilter sample")
47
- win.signal_connect("destroy"){Gtk.main_quit}
48
- win.add(treeview).show_all.signal_connect("destroy"){Gtk.main_quit}
49
+ win.signal_connect("destroy") { Gtk.main_quit }
50
+ win.add(treeview)
51
+ win.show_all
49
52
  Gtk.main
@@ -2,47 +2,43 @@
2
2
  =begin
3
3
  treeview.rb - Gtk::TreeView sample
4
4
 
5
- Copyright (c) 2002-2006 Ruby-GNOME2 Project Team
5
+ Copyright (c) 2002-2015 Ruby-GNOME2 Project Team
6
6
  This program is licenced under the same licence as Ruby-GNOME2.
7
-
8
- $Id: treeview.rb,v 1.8 2006/06/17 13:18:12 mutoh Exp $
9
7
  =end
10
8
 
11
- require 'gtk3'
12
-
9
+ require "gtk3"
13
10
  window = Gtk::Window.new("Gtk::TreeView sample")
14
11
 
15
12
  # Create data
16
- model = Gtk::TreeStore.new(String, String, Gdk::Color, Float, Gdk::Pixbuf)
13
+ model = Gtk::TreeStore.new(String, String, Gdk::RGBA, Float, Gdk::Pixbuf)
17
14
 
18
15
  # column 1
19
16
  root_iter = model.append(nil)
20
17
  root_iter[0] = "Root"
21
18
  root_iter[1] = "red"
22
- root_iter[2] = Gdk::Color.new(0, 65535, 0)
19
+ root_iter[2] = Gdk::RGBA.new(0, 1, 0, 1)
23
20
  root_iter[3] = 5.0
24
-
21
+
25
22
  # column 2
26
- root_iter[4] = window.render_icon_pixbuf(Gtk::Stock::NEW, Gtk::IconSize::IconSize::DIALOG)
23
+ root_iter[4] = window.render_icon_pixbuf(Gtk::Stock::NEW, Gtk::IconSize::DIALOG)
27
24
 
28
25
  child_iter1 = model.append(root_iter)
29
26
  child_iter1[0] = "Child_Iter1"
30
27
  child_iter1[1] = "green"
31
- child_iter1[2] = Gdk::Color.new(65535, 0, 0)
28
+ child_iter1[2] = Gdk::RGBA.new(1, 0, 0, 1)
32
29
  child_iter1[3] = 3.0
33
30
 
34
31
  # column 2
35
- child_iter1[4] = window.render_icon_pixbuf(Gtk::Stock::OPEN, Gtk::IconSize::IconSize::MENU)
32
+ child_iter1[4] = window.render_icon_pixbuf(Gtk::Stock::OPEN, Gtk::IconSize::MENU)
36
33
 
37
34
  child_iter2 = model.append(root_iter)
38
35
  child_iter2[0] = "Child_Iter2"
39
36
  child_iter2[1] = "yellow"
40
- child_iter2[2] = Gdk::Color.new(0, 0, 65535)
37
+ child_iter2[2] = Gdk::RGBA.new(0, 0, 1, 1)
41
38
  child_iter2[3] = 0.9
42
39
 
43
40
  # column 2
44
- child_iter2[4] = window.render_icon_pixbuf(Gtk::Stock::QUIT, Gtk::IconSize::IconSize::BUTTON)
45
-
41
+ child_iter2[4] = window.render_icon_pixbuf(Gtk::Stock::QUIT, Gtk::IconSize::BUTTON)
46
42
 
47
43
  # Create view
48
44
  tv = Gtk::TreeView.new(model)
@@ -50,22 +46,24 @@ tv = Gtk::TreeView.new(model)
50
46
  # column 1
51
47
  renderer = Gtk::CellRendererText.new
52
48
  column = Gtk::TreeViewColumn.new("Gtk::CellRenderText", renderer, {
53
- :text => 0,
49
+ :text => 0,
54
50
  :background => 1,
55
- :foreground_gdk => 2,
56
- :scale => 3,
51
+ :foreground_rgba => 2,
52
+ :scale => 3
57
53
  })
58
54
  tv.append_column(column)
59
55
 
60
56
  # column 2
61
57
  renderer = Gtk::CellRendererPixbuf.new
62
58
  column = Gtk::TreeViewColumn.new("Gtk::CellRenderPixbuf", renderer, {
63
- :pixbuf => 4
59
+ :pixbuf => 4
64
60
  })
65
61
 
66
62
  tv.append_column(column)
67
63
 
68
- window.add(tv).set_default_size(300, 300).show_all
69
- window.signal_connect("destroy"){Gtk.main_quit}
64
+ window.add(tv)
65
+ window.set_default_size(300, 300)
66
+ window.show_all
67
+ window.signal_connect("destroy") { Gtk.main_quit }
70
68
 
71
69
  Gtk.main
@@ -2,13 +2,11 @@
2
2
  =begin
3
3
  window.rb - Gtk::Window sample.
4
4
 
5
- Copyright (c) 2002-2006 Ruby-GNOME2 Project Team
5
+ Copyright (c) 2002-2015 Ruby-GNOME2 Project Team
6
6
  This program is licenced under the same licence as Ruby-GNOME2.
7
-
8
- $Id: window.rb,v 1.9 2006/10/21 16:58:00 mutoh Exp $
9
7
  =end
10
8
 
11
- require 'gtk3'
9
+ require "gtk3"
12
10
 
13
11
  window = Gtk::Window.new("Gtk::Window sample")
14
12
  window.signal_connect("destroy"){Gtk.main_quit}
@@ -0,0 +1,86 @@
1
+ =begin
2
+ xbm_cursor.rb - Gdk::Cursor sample script.
3
+
4
+ Copyright (C) 2001-2006 Masao Mutoh
5
+ Copyright (c) 2001-2015 Ruby-GNOME2 Project Team
6
+ This program is licenced under the same licence as Ruby-GNOME2.
7
+ =end
8
+
9
+ require "gtk3"
10
+
11
+ window = Gtk::Window.new("xbm Cursor example")
12
+ window.signal_connect("destroy") { Gtk.main_quit }
13
+
14
+ width = 19
15
+ height = 19
16
+ format = Cairo::FORMAT_A1
17
+ stride = Cairo::Format.stride_for_width(format, width)
18
+
19
+ cursor_xbm_data = [
20
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
21
+ 0xf0, 0x3f, 0x00, 0xe0, 0x78, 0x00, 0xe0, 0x70, 0x00, 0xe0, 0x70, 0x00,
22
+ 0xe0, 0x38, 0x00, 0xe0, 0x1f, 0x00, 0xe0, 0x1d, 0x00, 0xe0, 0x38, 0x00,
23
+ 0xe0, 0x78, 0x00, 0xe0, 0xf0, 0x00, 0xf0, 0xf3, 0x01, 0xf0, 0xe3, 0x01,
24
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
25
+ ].pack("C*")
26
+
27
+ cursor_mask_xbm_data = [
28
+ 0x63, 0x8e, 0x0f, 0x67, 0x8e, 0x0f, 0x06, 0xc6, 0x07, 0x04, 0x00, 0x00,
29
+ 0xf0, 0x3f, 0x08, 0xe7, 0x78, 0x0e, 0xe7, 0x70, 0x0f, 0xe4, 0x70, 0x03,
30
+ 0xe0, 0x38, 0x00, 0xe7, 0x1f, 0x0c, 0xe7, 0x1d, 0x0f, 0xe0, 0x38, 0x0e,
31
+ 0xe0, 0x78, 0x08, 0xe7, 0xf0, 0x00, 0xf7, 0xf3, 0x01, 0xf0, 0xe3, 0x01,
32
+ 0x04, 0x00, 0x00, 0x46, 0x24, 0x06, 0x67, 0x66, 0x0e, 0x67, 0x66, 0x0e
33
+ ].pack("C*")
34
+
35
+ background_color = [0, 1, 0, 1]
36
+ foreground_color = [1, 0, 0, 1]
37
+
38
+ def xbm_data_to_cairo_data(data, width, stride)
39
+ n_bytes_per_row = (width / 8.0).ceil
40
+
41
+ cairo_data_bytes = []
42
+ data.unpack("C*").each_slice(n_bytes_per_row) do |row|
43
+ row.each do |byte|
44
+ cairo_data_bytes << byte
45
+ end
46
+ (stride - n_bytes_per_row).times do
47
+ cairo_data_bytes << 0b0
48
+ end
49
+ end
50
+ cairo_data_bytes.pack("C*")
51
+ end
52
+
53
+ cursor_data = xbm_data_to_cairo_data(cursor_xbm_data,
54
+ width, stride)
55
+
56
+ cursor_mask_data = xbm_data_to_cairo_data(cursor_mask_xbm_data,
57
+ width, stride)
58
+
59
+ source = Cairo::ImageSurface.new(cursor_data, format, width, height, stride)
60
+ mask = Cairo::ImageSurface.new(cursor_mask_data, format, width, height, stride)
61
+
62
+ # Append mask on the source
63
+ Cairo::Context.new(source) do |context|
64
+ context.mask(mask, 0, 0)
65
+ end
66
+
67
+ # Convert the xbm FORMAT_A1 to FORMAT_ARGB32
68
+ cursor_surface = Cairo::ImageSurface.new(Cairo::FORMAT_ARGB32, width, height)
69
+ Cairo::Context.new(cursor_surface) do |context|
70
+ context.set_source(*background_color)
71
+ context.paint
72
+ context.set_source(*foreground_color)
73
+ context.mask(source, 0, 0)
74
+ end
75
+
76
+ offset_x = 10
77
+ offset_y = 10
78
+
79
+ cursor = Gdk::Cursor.new(cursor_surface, offset_x, offset_y)
80
+ window.realize
81
+ window.window.set_cursor(cursor)
82
+ window.add(Gtk::Label.new("Put your cursor on this window."))
83
+ window.set_default_size(200, 100)
84
+ window.show_all
85
+
86
+ Gtk.main
@@ -0,0 +1,338 @@
1
+ # Getting started with GTK+ with the ruby-gnome2 Gtk3 module.
2
+
3
+ This is a ruby adaptation of the official tutorial for the C language that you can find at https://developer.gnome.org/gtk3/stable/gtk-getting-started.html.
4
+
5
+ GTK+ is a widget toolkit. Each user interface created by GTK+ consists of widgets. The Gtk3 module of the ruby-gnome2 project is an implementation of the ruby bindings for GTK+.
6
+
7
+ With Gtk3, Widgets are organized in a hierachy. The Gtk::Window widget is the main container. The user interface is then built by adding buttons, drop-down menus, input fields, and other widgets to the window.
8
+
9
+ If you are creating complex user interfaces it is recommended to use Gtk::Builder and its GTK-specific markup description language, instead of assembling the interface manually. You can also use a visual user interface editor, like Glade.
10
+
11
+ GTK+ is event-driven. The toolkit listens for events such as a click on a button, and passes the event to your application.
12
+
13
+ Here is the most basic example that illustrate the principles of widget hierarchy and events management:
14
+
15
+ ```ruby
16
+ require "gtk3"
17
+
18
+ window = Gtk::Window.new("First example")
19
+ window.set_request_size(400, 400)
20
+ window.set_border_width(10)
21
+
22
+ button = Gtk::Button.new(:label => "Say hello")
23
+ button.signal_connect "clicked" do |_widget|
24
+ puts "Hello World!!"
25
+ end
26
+
27
+ window.add(button)
28
+ window.signal_connect("delete-event") { |_widget| Gtk.main_quit }
29
+ window.show_all
30
+
31
+ Gtk.main
32
+ ```
33
+ This tutorial will mainly be focused on the use of Gtk::Application, which is the best way to create an application.
34
+
35
+ ## Basics
36
+ https://developer.gnome.org/gtk3/stable/gtk-getting-started.html#id-1.2.3.5
37
+
38
+ To begin our introduction to GTK, we'll start with a simple signal-based Gtk application. This program will create an empty 200 × 200 pixel window.
39
+
40
+ * example-0.rb
41
+ ```ruby
42
+ require "gtk3"
43
+
44
+ app = Gtk::Application.new("org.gtk.example", :flags_none)
45
+
46
+ app.signal_connect "activate" do |application|
47
+ window = Gtk::ApplicationWindow.new(application)
48
+ window.set_title("Window")
49
+ window.set_default_size(200, 200)
50
+ window.show_all
51
+ end
52
+
53
+ puts app.run
54
+
55
+ ```
56
+ When creating a Gtk::Application you need to pick an application identifier (a name) and input to `Gtk::Application#new` as parameter. For this example *org.gtk.example* is used but for choosing an identifier for your application see this [guide](https://wiki.gnome.org/HowDoI/ChooseApplicationID).
57
+ Lastly `Gtk::Application#new` takes a `Gio::ApplicationFlags` constants as input for your application, if your application would have special needs (those constants can be replaced by theirs respective symbol ie. `Gio::ApplicationFlags::NONE` == `:flags_none`).
58
+
59
+ Next we add instructions for the "activate" event of the `Gtk::Application` instance we created. The activate signal will be sent when your application is launched with the method `Gtk::Application#run` on the line below. This method also takes as arguments a ruby array of string. This allows GTK+ to parse specific command line arguments that control the behavior of GTK+ itself. The parsed arguments will be removed from the array, leaving the unrecognized ones for your application to parse.
60
+
61
+ Inside the "activate" event block, we want to construct our GTK window, so that a window is shown when the application is launched. The call to `Gtk::ApplicationWindow#new` will create a new `Gtk::Window`. The window will have a frame, a title bar, and window controls depending on the platform.
62
+
63
+ A window title is set using `Gtk::Window#set_title`. This function takes a string as input. Finally the window size is set using `Gtk::Window#set_default_size` and the window is then shown by GTK via `Gtk::Widget#show_all`.
64
+
65
+ When you exit the window, by for example pressing the X, the `Gtk::Application#run` in the main loop returns with a number which is the exit status.
66
+
67
+ While the program is running, GTK+ is receiving *events*. These are typically input events caused by the user interacting with your program, but also things like messages from the window manager or other applications. GTK+ processes these and as a result, signals may be emitted on your widgets. Connecting handlers for these signals is how you normally make your program do something in response to user input.
68
+ The following example is slightly more complex, and tries to showcase some of the capabilities of GTK+.
69
+
70
+ In the long tradition of programming languages and libraries, it is called *Hello, World*.
71
+ * example-1.rb
72
+ ```ruby
73
+ require "gtk3"
74
+ app = Gtk::Application.new("org.gtk.example", :flags_none)
75
+
76
+ app.signal_connect "activate" do |application|
77
+ window = Gtk::ApplicationWindow.new(application)
78
+ window.set_title("Window")
79
+ window.set_default_size(200, 200)
80
+
81
+ button_box = Gtk::ButtonBox.new(:horizontal)
82
+ window.add(button_box)
83
+
84
+ button = Gtk::Button.new(label: "Hello World")
85
+ button.signal_connect "clicked" do |widget|
86
+ puts "Hello World"
87
+ window.destroy
88
+ end
89
+
90
+ button_box.add(button)
91
+
92
+ window.show_all
93
+ end
94
+
95
+ # Gtk::Application#run need C style argv ([prog, arg1, arg2, ...,argn]).
96
+ # The ARGV ruby variable only contains the arguments ([arg1, arg2, ...,argb])
97
+ # and not the program name. We have to add it explicitly.
98
+
99
+ puts app.run([$0] + ARGV)
100
+ ```
101
+ As seen above, example-1.rb builds further upon example-0.rb by adding a button to our window, with the label "Hello World". Two new variables are created to accomplish this, button and button_box.
102
+
103
+ The button_box variable stores a `Gtk::ButtonBox` object, which is GTK+'s way of controlling the size and layout of buttons. The `Gtk::ButtonBox` is created with the method `Gtk::ButtonBox#new` which takes a `Gtk::Orientation `constant as parameter or the related symbols (`:vertical` or `:horizontal`).
104
+
105
+ The buttons which this box will contain can either be stored horizontally or vertically but this does not matter in this particular case as we are dealing with only one button. After initializing button_box with horizontal orientation, the code adds the button_box widget to the window widget using `Gtk::ButtonBox#add`.
106
+
107
+ Next the button variable is initialized in similar manner. The method `Gtk::Button#new` is called which returns a GtkButton to be stored inside button. A label is set using a ruby hash as argument :`:label => "Hello World"`.
108
+
109
+ Afterwards button is added to our button_box. Using the method "Gtk::Button#signal_connect" we add instructions, so that when the button is clicked, a message will be displayed in the terminal if the GTK application was started from one.
110
+
111
+ After that, `Gtk::Window#destroy` is called. This method is herited from `Gtk::Widget`. This has the effect that when the button is clicked, the whole GTK window is destroyed. More information about creating buttons can be found [here](https://wiki.gnome.org/HowDoI/Buttons).
112
+ The rest of the code in example-1.rb is identical to example-0.rb. Next section will elaborate further on how to add several GtkWidgets to your GTK application.
113
+
114
+ ## Packing
115
+ https://developer.gnome.org/gtk3/stable/ch01s02.html
116
+
117
+ When creating an application, you'll want to put more than one widget inside a window. When you want to put more than one widget into a window, it it becomes important to control how each widget is positioned and sized. This is where packing comes in.
118
+
119
+ GTK+ comes with a large variety of layout containers whose purpose it is to control the layout of the child widgets that are added to them. See [Layout Containers](https://developer.gnome.org/gtk3/stable/LayoutContainers.html) for an overview.
120
+
121
+ The following example shows how the `Gtk::Grid` container lets you arrange several buttons:
122
+ * example-2.rb
123
+
124
+ ```ruby
125
+ require "gtk3"
126
+
127
+ app = Gtk::Application.new("org.gtk.example", :flags_none)
128
+
129
+ app.signal_connect "activate" do |application|
130
+ # create a new window, and set its title
131
+ window = Gtk::ApplicationWindow.new(application)
132
+ window.set_title("Window")
133
+ window.set_border_width(10)
134
+
135
+ # Here we construct the container that is going pack our buttons
136
+ grid = Gtk::Grid.new
137
+
138
+ # Pack the container in the window
139
+ window.add(grid)
140
+
141
+ button = Gtk::Button.new(:label => "Button 1")
142
+ button.signal_connect("clicked") { puts "Hello World" }
143
+ # Place the first button in the grid cell (0, 0), and make it fill
144
+ # just 1 cell horizontally and vertically (ie no spanning)
145
+ grid.attach(button, 0, 0, 1, 1)
146
+
147
+ button = Gtk::Button.new(:label => "Button 2")
148
+ button.signal_connect("clicked") { puts "Hello World" }
149
+ # Place the second button in the grid cell (1, 0), and make it fill
150
+ # just 1 cell horizontally and vertically (ie no spanning)
151
+ grid.attach(button, 1, 0, 1, 1)
152
+
153
+ button = Gtk::Button.new(:label => "Quit")
154
+ button.signal_connect("clicked") { window.destroy }
155
+ # Place the Quit button in the grid cell (0, 1), and make it
156
+ # span 2 columns.
157
+ grid.attach(button, 0, 1, 2, 1)
158
+
159
+ # Now that we are done packing our widgets, we show them all
160
+ # in one go, by calling Gtk::Widget#show_all on the window.
161
+ # This call recursively calls Gtk::Widget#show on all widgets
162
+ # that are contained in the window, directly or indirectly
163
+ window.show_all
164
+ end
165
+
166
+ # Gtk::Application#run need C style argv ([prog, arg1, arg2, ...,argn]).
167
+ # The ARGV ruby variable only contains the arguments ([arg1, arg2, ...,argb])
168
+ # and not the program name. We have to add it explicitly.
169
+
170
+ status = app.run([$0] + ARGV)
171
+
172
+ puts status
173
+ ```
174
+ ## Building user interfaces
175
+ https://developer.gnome.org/gtk3/stable/ch01s03.html
176
+
177
+ When construcing a more complicated user interface, with dozens or hundreds of widgets, doing all the setup work in code is cumbersome, and making changes becomes next to impossible.
178
+ Thankfully, GTK+ supports the separation of user interface layout from your business logic, by using UI descriptions in an XML format that can be parsed by the `Gtk::Builder` class.
179
+
180
+ * example-4.rb : Packing buttons with GtkBuilder
181
+
182
+ ```ruby
183
+ require "gtk3"
184
+
185
+ builder_file = "#{File.expand_path(File.dirname(__FILE__))}/builder.ui"
186
+
187
+ # Construct a Gtk::Builder instance and load our UI description
188
+ builder = Gtk::Builder.new(:file => builder_file)
189
+
190
+ # Connect signal handlers to the constructed widgets
191
+ window = builder.get_object("window")
192
+ window.signal_connect("destroy") { Gtk.main_quit }
193
+
194
+ button = builder.get_object("button1")
195
+ button.signal_connect("clicked") { puts "Hello World" }
196
+
197
+ button = builder.get_object("button2")
198
+ button.signal_connect("clicked") { puts "Hello World" }
199
+
200
+ button = builder.get_object("quit")
201
+ button.signal_connect("clicked") { Gtk.main_quit }
202
+
203
+ Gtk.main
204
+ ```
205
+
206
+ Here is the "builder.ui" file that describes the interface:
207
+
208
+ ```xml
209
+ <interface>
210
+ <object id="window" class="GtkWindow">
211
+ <property name="visible">True</property>
212
+ <property name="title">Grid</property>
213
+ <property name="border-width">10</property>
214
+ <child>
215
+ <object id="grid" class="GtkGrid">
216
+ <property name="visible">True</property>
217
+ <child>
218
+ <object id="button1" class="GtkButton">
219
+ <property name="visible">True</property>
220
+ <property name="label">Button 1</property>
221
+ </object>
222
+ <packing>
223
+ <property name="left-attach">0</property>
224
+ <property name="top-attach">0</property>
225
+ </packing>
226
+ </child>
227
+ <child>
228
+ <object id="button2" class="GtkButton">
229
+ <property name="visible">True</property>
230
+ <property name="label">Button 2</property>
231
+ </object>
232
+ <packing>
233
+ <property name="left-attach">1</property>
234
+ <property name="top-attach">0</property>
235
+ </packing>
236
+ </child>
237
+ <child>
238
+ <object id="quit" class="GtkButton">
239
+ <property name="visible">True</property>
240
+ <property name="label">Quit</property>
241
+ </object>
242
+ <packing>
243
+ <property name="left-attach">0</property>
244
+ <property name="top-attach">1</property>
245
+ <property name="width">2</property>
246
+ </packing>
247
+ </child>
248
+ </object>
249
+ <packing>
250
+ </packing>
251
+ </child>
252
+ </object>
253
+ </interface>
254
+ ```
255
+
256
+ The usage of the `Gtk::Builder` is really easy, we just create an instance from the
257
+ file "builder.ui" with `Gtk::Builder.new(:file => builder_file)`. Then you can access every widget or part of the interface thanks to its name: `window = builder.get_object("window")`. Note that `Gtk::Builder` can also be used to construct objects that are not widgets, such as tree models, adjustments, etc.
258
+
259
+ The XML definition of the interface can be loaded from a file, a string or a path in a gresource binary. More informations related to this XML definition can be found [here](https://developer.gnome.org/gtk3/stable/GtkBuilder.html#BUILDER-UI). Those files are generally built with [glade](https://glade.gnome.org/).
260
+
261
+
262
+ ## Building applications
263
+
264
+ ### A trivial application
265
+ https://developer.gnome.org/gtk3/stable/ch01s04.html#id-1.2.3.12.5
266
+
267
+ * exampleapp1/exampleapp.rb
268
+ ```ruby
269
+ require "gtk3"
270
+
271
+ class ExampleAppWindow < Gtk::ApplicationWindow
272
+
273
+ def open(file)
274
+
275
+ end
276
+ end
277
+
278
+ class ExampleApp < Gtk::Application
279
+ def initialize
280
+ super("org.gtk.exampleapp", :handles_open)
281
+
282
+ signal_connect "activate" do |application|
283
+ window = ExampleAppWindow.new(application)
284
+ window.present
285
+ end
286
+ signal_connect "open" do |application, files, hin|
287
+ windows = application.windows
288
+ win = nil
289
+ unless windows.empty?
290
+ win = windows.first
291
+ else
292
+ win = ExampleAppWindow.new(application)
293
+ end
294
+
295
+ files.each { |file| win.open(file) }
296
+
297
+ win.present
298
+ end
299
+ end
300
+ end
301
+
302
+ app = ExampleApp.new
303
+
304
+ puts app.run([$0]+ARGV)
305
+ ```
306
+
307
+ In this example we create a subclass of `Gtk::Application` called ExampleApp. In the `ExampleApp#initialize` method, we add instructions for two signals *activate* and *open*. Every `Gtk::Application` object or its subclass object can react to 4 signals:
308
+
309
+ * startup : sets up the application when it first start
310
+ * shutdown : preforms shutdown tasks
311
+ * activate : shows the default first window of the application
312
+ * open : opens files and shows them in a new window
313
+
314
+ For more informations, see [here](https://wiki.gnome.org/HowDoI/GtkApplication).
315
+ In this case, the signal "*activate*" will be triggered if no arguments are given to the `ExampleApp#run` method. And a default window will be created and will be presented to the user ( [see](https://developer.gnome.org/gtk3/stable/GtkWindow.html#gtk-window-present).
316
+
317
+ If file names are given to the `ExampleApp#run` method, then it is the "*open*" signal that is called.
318
+ Trought this event, you can manage the files that are stored in an array of `Gio::File` objects.
319
+
320
+ In this example, each files are used by an `ExampleAppWindow#open` method. The `ExampleAppWindow` class is derived from the `Gtk::ApplicationWindow`.
321
+
322
+ This does not look very impressive yet, but our application is already presenting itself on the session bus, and it accepts files as commandline arguments.
323
+
324
+
325
+ ### Populating the window
326
+ https://developer.gnome.org/gtk3/stable/ch01s04.html#id-1.2.3.12.6
327
+
328
+ * exampleapp2/exampleapp.rb
329
+
330
+ ### Opening files
331
+ https://developer.gnome.org/gtk3/stable/ch01s04.html#id-1.2.3.12.7
332
+
333
+ * exampleapp3/exampleapp.rb
334
+
335
+ ### An application menu
336
+ https://developer.gnome.org/gtk3/stable/ch01s04.html#id-1.2.3.12.8
337
+
338
+ * exampleapp4/exampleapp.rb