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,137 @@
1
+ # Copyright (c) 2003-2005 Ruby-GNOME2 Project Team
2
+ # This program is licenced under the same licence as Ruby-GNOME2.
3
+ #
4
+ # $Id: dialog.rb,v 1.5 2005/02/12 23:02:43 kzys Exp $
5
+ =begin
6
+ = Dialog and Message Boxes
7
+
8
+ Dialog widgets are used to pop up a transient window for user feedback.
9
+ =end
10
+
11
+ require 'common'
12
+
13
+ module Demo
14
+ class Dialog < Demo::BasicWindow
15
+ def initialize
16
+ @count = 1
17
+
18
+ super('Dialogs')
19
+ set_border_width(8)
20
+
21
+ frame = Gtk::Frame.new('Dialogs')
22
+ add(frame)
23
+
24
+ vbox = Gtk::VBox.new(false, 8)
25
+ vbox.set_border_width(8)
26
+ frame.add(vbox)
27
+
28
+ # Standard message dialog
29
+ hbox = Gtk::Box.new(:horizontal, 0)
30
+ vbox.pack_start(hbox, :expand => false, :fill => false, :padding => 0)
31
+ button = Gtk::Button.new('_Message Dialog', true)
32
+ button.signal_connect('clicked') do
33
+ message_dialog_clicked
34
+ end
35
+ hbox.pack_start(button, :expand => false, :fill => false, :padding => 0)
36
+
37
+ vbox.pack_start(Gtk::HSeparator.new, :expand => false, :fill => false, :padding => 0)
38
+
39
+ # Interactive dialog
40
+ hbox = Gtk::Box.new(:horizontal, 8)
41
+ vbox.pack_start(hbox, :expand => false, :fill => false, :padding => 0)
42
+ vbox2 = Gtk::VBox.new(false, 0)
43
+
44
+ button = Gtk::Button.new('_Interactive Dialog')
45
+ button.signal_connect('clicked') do
46
+ interactive_dialog_clicked
47
+ end
48
+ hbox.pack_start(vbox2, :expand => false, :fill => false, :padding => 0)
49
+ vbox2.pack_start(button, :expand => false, :fill => false, :padding => 0)
50
+
51
+ table = Gtk::Table.new(2, 2, false)
52
+ table.set_row_spacings(4)
53
+ table.set_column_spacings(4)
54
+ hbox.pack_start(table, :expand => false, :fill => false, :padding => 0)
55
+
56
+ label = Gtk::Label.new('_Entry 1', true)
57
+ table.attach_defaults(label, 0, 1, 0, 1)
58
+
59
+ @entry1 = Gtk::Entry.new
60
+ table.attach_defaults(@entry1, 1, 2, 0, 1)
61
+ label.set_mnemonic_widget(@entry1)
62
+
63
+ label = Gtk::Label.new('E_ntry 2', true)
64
+
65
+ table.attach_defaults(label, 0, 1, 1, 2)
66
+
67
+ @entry2 = Gtk::Entry.new
68
+ table.attach_defaults(@entry2, 1, 2, 1, 2)
69
+ label.set_mnemonic_widget(@entry2)
70
+ end
71
+
72
+ def message_dialog_clicked
73
+ dialog = Gtk::MessageDialog.new(self,
74
+ Gtk::Dialog::MODAL |
75
+ Gtk::Dialog::DESTROY_WITH_PARENT,
76
+ Gtk::MessageDialog::INFO,
77
+ Gtk::MessageDialog::BUTTONS_OK,
78
+ <<EOS)
79
+ This message box has been popped up the following
80
+ number of times:
81
+
82
+ #{@count}
83
+ EOS
84
+ dialog.run
85
+ dialog.destroy
86
+ @count += 1
87
+ end
88
+
89
+ def interactive_dialog_clicked
90
+ dialog = Gtk::Dialog.new('Interactive Dialog',
91
+ self,
92
+ Gtk::Dialog::MODAL |
93
+ Gtk::Dialog::DESTROY_WITH_PARENT,
94
+ [Gtk::Stock::OK, Gtk::Dialog::RESPONSE_OK],
95
+ ["_Non-stock Button", Gtk::Dialog::RESPONSE_CANCEL]
96
+ )
97
+
98
+ hbox = Gtk::Box.new(:horizontal, 0)
99
+ hbox.set_border_width(8)
100
+ dialog.vbox.pack_start(hbox, :expand => false, :fill => false, :padding => 0)
101
+
102
+ stock = Gtk::Image.new(Gtk::Stock::DIALOG_QUESTION, Gtk::IconSize::DIALOG)
103
+ hbox.pack_start(stock, :expand => false, :fill => false, :padding => 0)
104
+
105
+ table = Gtk::Table.new(2, 2, false)
106
+ table.set_row_spacings(4)
107
+ table.set_column_spacings(4)
108
+ hbox.pack_start(table, :expand => true, :fill => true, :padding => 0)
109
+ label = Gtk::Label.new('_Entry 1', true)
110
+ table.attach_defaults(label,
111
+ 0, 1, 0, 1)
112
+ local_entry1 = Gtk::Entry.new
113
+ local_entry1.text = @entry1.text
114
+ table.attach_defaults(local_entry1, 1, 2, 0, 1)
115
+ label.set_mnemonic_widget(local_entry1)
116
+
117
+ label = Gtk::Label.new('E_ntry 2', true)
118
+ table.attach_defaults(label,
119
+ 0, 1, 1, 2)
120
+
121
+ local_entry2 = Gtk::Entry.new
122
+ local_entry2.text = @entry2.text
123
+ table.attach_defaults(local_entry2, 1, 2, 1, 2)
124
+ label.set_mnemonic_widget(local_entry2)
125
+
126
+ hbox.show_all
127
+ response = dialog.run
128
+
129
+ if response == Gtk::Dialog::RESPONSE_OK
130
+ @entry1.text = local_entry1.text
131
+ @entry2.text = local_entry2.text
132
+ end
133
+ dialog.destroy
134
+ end
135
+ end
136
+ end
137
+
@@ -0,0 +1,205 @@
1
+ # Copyright (c) 2003-2014 Ruby-GNOME2 Project Team
2
+ # This program is licenced under the same licence as Ruby-GNOME2.
3
+ #
4
+ # $Id: drawingarea.rb,v 1.5 2005/02/12 23:02:43 kzys Exp $
5
+ =begin
6
+ = Drawing Area
7
+
8
+ Gtk::DrawingArea is a blank area where you can draw custom displays
9
+ of various kinds.
10
+
11
+ This demo has two drawing areas. The checkerboard area shows
12
+ how you can just draw something; all you have to do is write
13
+ a signal handler for expose_event, as shown here.
14
+
15
+ The 'scribble' area is a bit more advanced, and shows how to handle
16
+ events such as button presses and mouse motion. Click the mouse
17
+ and drag in the scribble area to draw squiggles. Resize the window
18
+ to clear the area.
19
+ =end
20
+
21
+ require "common"
22
+
23
+ module Demo
24
+ class DrawingArea < BasicWindow
25
+ def initialize
26
+ # Pixmap for scribble area, to store current scribbles
27
+ @cairo_context = nil
28
+ super("Drawing Area")
29
+
30
+ self.border_width = 8
31
+
32
+ vbox = Gtk::Box.new(:vertical, 8)
33
+ vbox.border_width = 8
34
+ add(vbox)
35
+
36
+ ## Create the checkerboard area
37
+ label = Gtk::Label.new
38
+ label.set_markup("<u>Checkerboard pattern</u>")
39
+ vbox.pack_start(label, :expand => false, :fill => false, :padding => 0)
40
+
41
+ frame = Gtk::Frame.new
42
+ frame.shadow_type = :in
43
+ vbox.pack_start(frame, :expand => true, :fill => true, :padding => 0)
44
+
45
+ da = Gtk::DrawingArea.new
46
+ # set a minimum size
47
+ da.set_size_request(100, 100)
48
+
49
+ frame.add(da)
50
+
51
+ da.signal_connect("draw") do |widget, event|
52
+ checkerboard_draw(widget, event)
53
+ end
54
+
55
+ ## Create the scribble area
56
+ label = Gtk::Label.new
57
+ label.set_markup("<u>Scribble area</u>")
58
+ vbox.pack_start(label, :expand => false, :fill => false, :padding => 0)
59
+
60
+ frame = Gtk::Frame.new
61
+ frame.shadow_type = :in
62
+ vbox.pack_start(frame, :expand => true, :fill => true, :padding => 0)
63
+
64
+ da = Gtk::DrawingArea.new
65
+ # set a minimum size
66
+ da.set_size_request(100, 100)
67
+
68
+ frame.add(da)
69
+
70
+ # Signals used to handle backing pixmap
71
+ da.signal_connect("draw") do |*args|
72
+ scribble_draw(*args)
73
+ end
74
+ da.signal_connect("configure-event") do |widget, event|
75
+ scribble_configure_event(widget)
76
+ end
77
+
78
+ # Event signals
79
+ da.signal_connect("motion-notify-event") do |*args|
80
+ scribble_motion_notify_event(*args)
81
+ end
82
+ da.signal_connect("button-press-event") do |*args|
83
+ scribble_button_press_event(*args)
84
+ end
85
+
86
+ # Ask to receive events the drawing area doesn't normally
87
+ # subscribe to
88
+ da.events |= (Gdk::Event::LEAVE_NOTIFY_MASK |
89
+ Gdk::Event::BUTTON_PRESS_MASK |
90
+ Gdk::Event::POINTER_MOTION_MASK |
91
+ Gdk::Event::POINTER_MOTION_HINT_MASK)
92
+ end
93
+
94
+ # Create a new surface of the appropriate size to store our scribbles
95
+ def scribble_configure_event(widget)
96
+ allocation = widget.allocation
97
+ surface = widget.window.create_similar_surface(:color,
98
+ allocation.width,
99
+ allocation.height)
100
+ @cairo_context = Cairo::Context.new(surface)
101
+ @cairo_context.set_source_rgb(1, 1, 1)
102
+ @cairo_context.paint
103
+
104
+ # We've handled the configure event, no need for further processing.
105
+ return true
106
+ end
107
+
108
+ CHECK_SIZE = 10
109
+ SPACING = 2
110
+ def checkerboard_draw(da, cairo_context)
111
+ # At the start of a draw handler, a clip region of event.area
112
+ # is set on the window, and event.area has been cleared to the
113
+ # widget's background color. The docs for
114
+ # gdk_window_begin_paint_region give more details on how this
115
+ # works.
116
+
117
+ xcount = 0
118
+ width = da.allocated_width
119
+ height = da.allocated_height
120
+ SPACING.step(da.allocation.width, CHECK_SIZE + SPACING) do |i|
121
+ ycount = xcount % 2; # start with even/odd depending on row
122
+ SPACING.step(da.allocation.height, CHECK_SIZE + SPACING) do |j|
123
+ if ycount % 2 == 1
124
+ cairo_context.set_source_rgb(0.45777, 0, 0.45777)
125
+ else
126
+ cairo_context.set_source_rgb(1, 1, 1)
127
+ end
128
+
129
+ # If we're outside the clip, this will do nothing.
130
+ cairo_context.fill do
131
+ cairo_context.rectangle(i, j, CHECK_SIZE, CHECK_SIZE)
132
+ end
133
+ ycount += 1
134
+ end
135
+ xcount += 1
136
+ end
137
+ # return true because we've handled this event, so no
138
+ # further processing is required.
139
+ #
140
+ return true
141
+ end
142
+
143
+ # Redraw the screen from the surface
144
+ def scribble_draw(widget, event)
145
+ event.set_source(@cairo_context.target)
146
+ event.paint
147
+ return false
148
+ end
149
+
150
+ # Draw a rectangle on the screen
151
+ def draw_brush(widget, x, y)
152
+ update_rect = Gdk::Rectangle.new(x - 3, y - 3, 6, 6)
153
+
154
+ # Paint to the surface, where we store our state
155
+ @cairo_context.fill do
156
+ @cairo_context.set_source_rgb(0, 0, 0)
157
+ @cairo_context.rectangle(update_rect.x,
158
+ update_rect.y,
159
+ update_rect.width,
160
+ update_rect.height)
161
+ end
162
+
163
+ # Now invalidate the affected region of the drawing area.
164
+ widget.window.invalidate(update_rect, false)
165
+ end
166
+
167
+ def scribble_button_press_event(widget, event)
168
+ # paranoia check, in case we haven't gotten a configure event
169
+ return false unless @cairo_context
170
+
171
+ if event.button == 1
172
+ draw_brush(widget, event.x, event.y)
173
+ end
174
+
175
+ # We've handled the event, stop processing
176
+ return true
177
+ end
178
+
179
+ def scribble_motion_notify_event(widget, event)
180
+ # paranoia check, in case we haven't gotten a configure event
181
+ return false unless @cairo_context
182
+
183
+ # This call is very important; it requests the next motion event.
184
+ # If you don't call Gdk::Window#pointer you'll only get
185
+ # a single motion event. The reason is that we specified
186
+ # Gdk::POINTER_MOTION_HINT_MASK to Gtk::Widget#set_events.
187
+ # If we hadn't specified that, we could just use event.x, event.y
188
+ # as the pointer location. But we'd also get deluged in events.
189
+ # By requesting the next event as we handle the current one,
190
+ # we avoid getting a huge number of events faster than we
191
+ # can cope.
192
+
193
+ # NOTE: Gdk::EventMotion#window will be restored from Ruby/GDK3 2.1.1.
194
+ # win, x, y, state = event.window.get_device_position(event.device)
195
+ win, x, y, state = widget.window.get_device_position(event.device)
196
+
197
+ if (state & :button1_mask) != 0
198
+ draw_brush(widget, x, y)
199
+ end
200
+
201
+ # We've handled it, stop processing
202
+ return true
203
+ end
204
+ end
205
+ end
@@ -0,0 +1,173 @@
1
+ # Copyright (c) 2003-2005 Ruby-GNOME2 Project Team
2
+ # This program is licenced under the same licence as Ruby-GNOME2.
3
+ #
4
+ # $Id: editable_cells.rb,v 1.7 2005/02/06 18:25:13 kzys Exp $
5
+ =begin
6
+ = Tree View/Editable Cells
7
+
8
+ This demo demonstrates the use of editable cells in a Gtk::TreeView. If
9
+ you're new to the Gtk::TreeView widgets and associates, look into
10
+ the Gtk::ListStore example first.
11
+ =end
12
+ require 'common'
13
+
14
+ module Demo
15
+ class EditableCells < BasicWindow
16
+ Item = Struct.new('Item', :number, :product, :editable)
17
+ COLUMN_NUMBER, COLUMN_PRODUCT, COLUMN_EDITABLE, NUM_COLUMNS = *(0..4).to_a
18
+
19
+ def initialize
20
+ super('Shopping list')
21
+ self.border_width = 5
22
+
23
+ vbox = Gtk::VBox.new(false, 5)
24
+ add(vbox)
25
+
26
+ vbox.pack_start(Gtk::Label.new('Shopping list (you can edit the cells!)'),
27
+ :expand => false, :fill => false, :padding => 0)
28
+
29
+ sw = Gtk::ScrolledWindow.new
30
+ sw.shadow_type = Gtk::SHADOW_ETCHED_IN
31
+ sw.set_policy(:automatic, :automatic)
32
+ vbox.pack_start(sw, :expand => true, :fill => true, :padding => 0)
33
+
34
+ # create model
35
+ model = create_model
36
+
37
+ # create tree view
38
+ treeview = Gtk::TreeView.new(model)
39
+ treeview.rules_hint = true
40
+ treeview.selection.mode = Gtk::SELECTION_SINGLE
41
+
42
+ add_columns(treeview)
43
+
44
+ sw.add(treeview)
45
+
46
+ # some buttons
47
+ hbox = Gtk::Box.new(:horizontal, 4)
48
+ hbox.homogeneous = true
49
+ vbox.pack_start(hbox, :expand => false, :fill => false, :padding => 0)
50
+
51
+ button = Gtk::Button.new('Add item')
52
+ button.signal_connect('clicked') do
53
+ add_item(model)
54
+ end
55
+ hbox.pack_start(button, :expand => true, :fill => true, :padding => 0)
56
+
57
+ button = Gtk::Button.new('Remove item')
58
+ button.signal_connect('clicked') do
59
+ remove_item(treeview)
60
+ end
61
+ hbox.pack_start(button, :expand => true, :fill => true, :padding => 0)
62
+
63
+ set_default_size(320, 200)
64
+ end
65
+
66
+ def create_model
67
+ # create array
68
+ @articles = []
69
+
70
+ add_items
71
+
72
+ # create list store
73
+ model = Gtk::ListStore.new(Integer, String, TrueClass)
74
+
75
+ # add items
76
+ @articles.each do |article|
77
+ iter = model.append
78
+
79
+ article.each_with_index do |value, index|
80
+ iter.set_value(index, value)
81
+ end
82
+ end
83
+ return model
84
+ end
85
+
86
+ def add_items
87
+ item = Item.new(3, 'bottles of coke', true)
88
+ @articles.push(item)
89
+
90
+ item = Item.new(5, 'packages of noodles', true)
91
+ @articles.push(item)
92
+
93
+ item = Item.new(2, 'packages of chocolate chip cookies', true)
94
+ @articles.push(item)
95
+
96
+ item = Item.new(1, 'can vanilla ice cream', true)
97
+ @articles.push(item)
98
+
99
+ item = Item.new(6, 'eggs', true)
100
+ @articles.push(item)
101
+ end
102
+
103
+ def add_columns(treeview)
104
+ model = treeview.model
105
+
106
+ # number column
107
+ renderer = Gtk::CellRendererText.new
108
+ renderer.signal_connect('edited') do |*args|
109
+ cell_edited(*args.push(model))
110
+ end
111
+ treeview.insert_column(-1, 'Number', renderer,
112
+ {
113
+ :text => COLUMN_NUMBER,
114
+ :editable => COLUMN_EDITABLE,
115
+ })
116
+ def renderer.column
117
+ COLUMN_NUMBER
118
+ end
119
+
120
+ # product column
121
+ renderer = Gtk::CellRendererText.new
122
+ renderer.signal_connect('edited') do |*args|
123
+ cell_edited(*args.push(model))
124
+ end
125
+ def renderer.column
126
+ COLUMN_PRODUCT
127
+ end
128
+ treeview.insert_column(-1, 'Product', renderer,
129
+ {
130
+ :text => COLUMN_PRODUCT,
131
+ :editable => COLUMN_EDITABLE,
132
+ })
133
+ end
134
+
135
+ def cell_edited(cell, path_string, new_text, model)
136
+ path = Gtk::TreePath.new(path_string)
137
+
138
+ column = cell.column
139
+
140
+ iter = model.get_iter(path)
141
+ case column
142
+ when COLUMN_NUMBER
143
+ i = iter.path.indices[0]
144
+ @articles[i].number = new_text.to_i
145
+ iter.set_value(column, @articles[i].number)
146
+ when COLUMN_PRODUCT
147
+ i = iter.path.indices[0]
148
+ @articles[i].product = new_text
149
+ iter.set_value(column, @articles[i].product)
150
+ end
151
+ end
152
+
153
+ def add_item(model)
154
+ foo = Item.new(0, 'Description here', true)
155
+ @articles.concat([foo])
156
+
157
+ iter = model.append
158
+ foo.each_with_index do |value, index|
159
+ iter.set_value(index, value)
160
+ end
161
+ end
162
+
163
+ def remove_item(treeview)
164
+ model = treeview.model
165
+ selection = treeview.selection
166
+
167
+ if iter = selection.selected
168
+ @articles.delete_at(iter.path.indices[0])
169
+ model.remove(iter)
170
+ end
171
+ end
172
+ end
173
+ end