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,197 @@
1
+ # Copyright (c) 2003-2005 Ruby-GNOME2 Project Team
2
+ # This program is licenced under the same licence as Ruby-GNOME2.
3
+ #
4
+ # $Id: images.rb,v 1.5 2006/04/08 12:30:03 mutoh Exp $
5
+ =begin
6
+ = Images
7
+
8
+ Gtk::Image is used to display an image; the image can be in a number of formats.
9
+ Typically, you load an image into a Gdk::Pixbuf, then display the pixbuf.
10
+
11
+ This demo code shows some of the more obscure cases, in the simple
12
+ case a call to Gtk::Image.new is all you need.
13
+
14
+ If you want to put image data in your program as a String variable,
15
+ use the make-inline-pixbuf program that comes with GTK+.
16
+ This way you won't need to depend on loading external files, your
17
+ application binary can be self-contained.
18
+ =end
19
+ require 'common'
20
+
21
+ module Demo
22
+ class Images < BasicWindow
23
+ def initialize
24
+ @pixbuf_loader = nil
25
+ @load_timeout = 0
26
+ @image_stream = nil
27
+
28
+ super('Images')
29
+ signal_connect('destroy') do
30
+ cleanup_callback
31
+ end
32
+
33
+ self.border_width = 8
34
+
35
+ vbox = Gtk::VBox.new(false, 8)
36
+ vbox.border_width = 8
37
+ add(vbox)
38
+
39
+ label = Gtk::Label.new
40
+ label.set_markup('<u>Image loaded from a file</u>')
41
+ vbox.pack_start(label, :expand => false, :fill => false, :padding => 0)
42
+
43
+ frame = Gtk::Frame.new
44
+ frame.shadow_type = :in
45
+
46
+ # The alignment keeps the frame from growing when users resize
47
+ # the window
48
+ align = Gtk::Alignment.new(0.5, 0.5, 0, 0)
49
+ align.add(frame)
50
+ vbox.pack_start(align, :expand => false, :fill => false, :padding => 0)
51
+
52
+ # demo_find_file looks in the the current directory first,
53
+ # so you can run gtk-demo without installing GTK, then looks
54
+ # in the location where the file is installed.
55
+ pixbuf = nil
56
+ begin
57
+ filename = Demo.find_file('gtk-logo-rgb.gif')
58
+ pixbuf = Gdk::Pixbuf.new(filename)
59
+ rescue
60
+ # This code shows off error handling. You can just use
61
+ # Gtk::Image.new instead if you don't want to report
62
+ # errors to the user. If the file doesn't load when using
63
+ # Gtk::Image.new, a 'missing image' icon will
64
+ # be displayed instead.
65
+ dialog = Gtk::MessageDialog.new(self,
66
+ Gtk::Dialog::DESTROY_WITH_PARENT,
67
+ Gtk::MessageDialog::ERROR,
68
+ Gtk::MessageDialog::BUTTONS_CLOSE,
69
+ "Unable to open image file 'gtk-logo-rgb.gif': #{$1}")
70
+
71
+ dialog.signal_connect('response') do |widget, data|
72
+ widget.destroy
73
+ end
74
+ dialog.show
75
+ end
76
+
77
+ image = Gtk::Image.new(pixbuf)
78
+ frame.add(image)
79
+
80
+
81
+ # Animation
82
+ label = Gtk::Label.new
83
+ label.set_markup('<u>Animation loaded from a file</u>')
84
+ vbox.pack_start(label, :expand => false, :fill => false, :padding => 0)
85
+
86
+ frame = Gtk::Frame.new
87
+ frame.shadow_type = :in
88
+
89
+ # The alignment keeps the frame from growing when users resize
90
+ # the window
91
+ align = Gtk::Alignment.new(0.5, 0.5, 0, 0)
92
+ align.add(frame)
93
+ vbox.pack_start(align, :expand => false, :fill => false, :padding => 0)
94
+
95
+ filename = Demo.find_file('floppybuddy.gif')
96
+ image = Gtk::Image.new(filename)
97
+ frame.add(image)
98
+
99
+
100
+ # Progressive
101
+ label = Gtk::Label.new
102
+ label.set_markup('<u>Progressive image loading</u>')
103
+ vbox.pack_start(label, :expand => false, :fill => false, :padding => 0)
104
+
105
+ frame = Gtk::Frame.new(nil)
106
+ frame.shadow_type = :in
107
+
108
+ # The alignment keeps the frame from growing when users resize
109
+ # the window
110
+ align = Gtk::Alignment.new(0.5, 0.5, 0, 0)
111
+ align.add(frame)
112
+ vbox.pack_start(align, :expand => false, :fill => false, :padding => 0)
113
+
114
+ # Create an empty image for now; the progressive loader
115
+ # will create the pixbuf and fill it in.
116
+ image = Gtk::Image.new
117
+ frame.add(image)
118
+
119
+ start_progressive_loading(image)
120
+
121
+ # Sensitivity control
122
+ button = Gtk::ToggleButton.new('_Insensitive', true)
123
+ vbox.pack_start(button, :expand => false, :fill => false, :padding => 0)
124
+
125
+ button.signal_connect('toggled') do |widget|
126
+ vbox.children.each do |widget|
127
+ if widget != button
128
+ widget.sensitive = ! button.active?
129
+ end
130
+ end
131
+ end
132
+ end
133
+
134
+ def start_progressive_loading(image)
135
+ @load_timeout = Gtk.timeout_add(150) do
136
+ progressive_timeout(image)
137
+ end
138
+ end
139
+
140
+ def progressive_timeout(image)
141
+ if @image_stream
142
+ buf = @image_stream.read(256)
143
+
144
+ @pixbuf_loader.write(buf)
145
+
146
+ if @image_stream.eof?
147
+ @image_stream.close
148
+ @image_stream = nil
149
+
150
+ @pixbuf_loader.close
151
+ @pixbuf_loader = nil
152
+ end
153
+ else
154
+ filename = Demo.find_file('alphatest.png')
155
+ @image_stream = File.open(filename, 'rb')
156
+
157
+ if @pixbuf_loader != nil
158
+ @pixbuf_loader.close
159
+ @pixbuf_loader = nil
160
+ end
161
+
162
+ @pixbuf_loader = Gdk::PixbufLoader.new
163
+
164
+ @pixbuf_loader.signal_connect('area_prepared') do |loader|
165
+ pixbuf = loader.pixbuf
166
+
167
+ # Avoid displaying random memory contents, since the pixbuf
168
+ # isn't filled in yet.
169
+ pixbuf.fill!(0xaaaaaaff)
170
+
171
+ image.pixbuf = pixbuf
172
+ end
173
+
174
+ @pixbuf_loader.signal_connect('area_updated') do
175
+ # We know the pixbuf inside the Gtk::Image has changed, but the image
176
+ # itself doesn't know this; so queue a redraw. If we wanted to be
177
+ # really efficient, we could use a drawing area or something
178
+ # instead of a Gtk::Image, so we could control the exact position of
179
+ # the pixbuf on the display, then we could queue a draw for only
180
+ # the updated area of the image.
181
+ image.queue_draw
182
+ end
183
+ end
184
+
185
+ # leave timeout installed
186
+ return true
187
+ end
188
+
189
+ def cleanup_callback
190
+ @pixbuf_loader.close if @pixbuf_loader
191
+ @pixbuf_loader = nil
192
+ if @load_timeout != 0
193
+ Gtk.timeout_remove(@load_timeout)
194
+ end
195
+ end
196
+ end
197
+ end
@@ -0,0 +1,78 @@
1
+ # Copyright (c) 2013 Ruby-GNOME2 Project Team
2
+ # This program is licenced under the same licence as Ruby-GNOME2.
3
+ #
4
+ =begin
5
+ = Info bar
6
+
7
+ Info bar widgets are used to report important messages to the user.
8
+ =end
9
+ require 'common'
10
+
11
+ module Demo
12
+ class InfoBar < BasicWindow
13
+ def initialize
14
+ super('Info Bars')
15
+
16
+ self.border_width = 8
17
+
18
+
19
+ vbox = Gtk::Box.new :vertical
20
+ self.add vbox
21
+
22
+ bar = Gtk::InfoBar.new
23
+ vbox.pack_start bar, :expand => false, :fill => false, :padding => 0
24
+ bar.message_type = :info
25
+ label = Gtk::Label.new 'This is an info bar with message type GTK_MESSAGE_INFO'
26
+ bar.content_area.pack_start label, :expand => false, :fill => false, :padding => 0
27
+
28
+ bar = Gtk::InfoBar.new
29
+ vbox.pack_start bar, :expand => false, :fill => false, :padding => 0
30
+ bar.message_type = :warning
31
+ label = Gtk::Label.new 'This is an info bar with message type GTK_MESSAGE_WARNING'
32
+ bar.content_area.pack_start label, :expand => false, :fill => false, :padding => 0
33
+
34
+ bar = Gtk::InfoBar.new [:ok, :ok]
35
+ bar.signal_connect(:response) {|widget, response_id| on_bar_response widget, response_id}
36
+ vbox.pack_start bar, :expand => false, :fill => false, :padding => 0
37
+ bar.message_type = :question
38
+ label = Gtk::Label.new 'This is an info bar with message type GTK_MESSAGE_QUESTION'
39
+ bar.content_area.pack_start label, :expand => false, :fill => false, :padding => 0
40
+
41
+ bar = Gtk::InfoBar.new
42
+ vbox.pack_start bar, :expand => false, :fill => false, :padding => 0
43
+ bar.message_type = :error
44
+ label = Gtk::Label.new 'This is an info bar with message type GTK_MESSAGE_ERROR'
45
+ bar.content_area.pack_start label, :expand => false, :fill => false, :padding => 0
46
+
47
+ bar = Gtk::InfoBar.new
48
+ vbox.pack_start bar, :expand => false, :fill => false, :padding => 0
49
+ bar.message_type = :other
50
+ label = Gtk::Label.new 'This is an info bar with message type GTK_MESSAGE_OTHER'
51
+ bar.content_area.pack_start label, :expand => false, :fill => false, :padding => 0
52
+
53
+
54
+ frame = Gtk::Frame.new 'Info bars'
55
+ vbox.pack_start frame, :expand => false, :fill => false, :padding => 8
56
+
57
+ vbox2 = Gtk::Box.new :vertical, 8
58
+ vbox2.border_width = 8
59
+ frame.add vbox2
60
+
61
+ # Standard message dialog
62
+ label = Gtk::Label.new 'An example of different info bars'
63
+ vbox2.pack_start label, :expand => false, :fill => false, :padding => 0
64
+ end
65
+
66
+ def on_bar_response info_bar, response_id
67
+ dialog = Gtk::MessageDialog.new :parent => self,
68
+ :flags => [:modal, :destroy_with_parent],
69
+ :type => :info,
70
+ :buttons_type => :ok,
71
+ :message => 'You clicked a button on an info bar'
72
+
73
+ dialog.set_secondary_text "Your response has id %d" % response_id
74
+ dialog.signal_connect(:response) {dialog.destroy}
75
+ dialog.show_all
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,94 @@
1
+ # Copyright (c) 2003-2005 Ruby-GNOME2 Project Team
2
+ # This program is licenced under the same licence as Ruby-GNOME2.
3
+ #
4
+ # $Id: item_factory.rb,v 1.4 2005/02/12 23:02:43 kzys Exp $
5
+ =begin
6
+ = Item Factory
7
+
8
+ The Gtk::ItemFactory object allows the easy creation of menus
9
+ from an array of descriptions of menu items.
10
+ =end
11
+ require 'common'
12
+
13
+ module Demo
14
+ class ItemFactory < BasicWindow
15
+ def initialize
16
+ super('Item Factory')
17
+
18
+ accel_group = Gtk::AccelGroup.new
19
+ item_factory = Gtk::ItemFactory.new(Gtk::ItemFactory::TYPE_MENU_BAR,
20
+ '<main>', accel_group)
21
+
22
+ add_accel_group(accel_group)
23
+ set_border_width(0)
24
+ ifactory_cb = proc do |data, widget|
25
+ puts "ItemFactory: activated \"#{Gtk::ItemFactory.path_from_widget(widget)}\""
26
+ end
27
+ menu_items = [
28
+ ['/_File'],
29
+ ['/File/tearoff1',
30
+ '<Tearoff>', nil, nil, ifactory_cb],
31
+ ['/File/_New',
32
+ '<Item>', '<control>N', nil, ifactory_cb],
33
+ ['/File/_Open',
34
+ '<Item>', '<control>O', nil, ifactory_cb],
35
+ ['/File/_Save',
36
+ '<Item>', '<control>S', nil, ifactory_cb],
37
+ ['/File/Save _As...',
38
+ '<Item>', nil, nil, ifactory_cb],
39
+ ['/File/sep1', '<Separator>'],
40
+ ['/File/_Quit',
41
+ '<Item>', '<control>Q', nil, ifactory_cb],
42
+
43
+ ['/_Preferences'],
44
+ ['/_Preferences/_Color'],
45
+ [ '/_Preferences/Color/_Red',
46
+ '<RadioItem>', nil, nil, ifactory_cb],
47
+ ['/_Preferences/Color/_Green',
48
+ '/Preferences/Color/Red', nil, nil, ifactory_cb],
49
+ ['/_Preferences/Color/_Blue',
50
+ '/Preferences/Color/Red', nil, nil, ifactory_cb],
51
+ ['/_Preferences/_Shape'],
52
+ ['/_Preferences/Shape/_Square',
53
+ '<RadioItem>', nil, nil, ifactory_cb],
54
+ [ '/_Preferences/Shape/_Rectangle',
55
+ '/Preferences/Shape/Square', nil, nil, ifactory_cb],
56
+ [ '/_Preferences/Shape/_Oval',
57
+ '/Preferences/Shape/Rectangle', nil, nil, ifactory_cb],
58
+
59
+ [ '/_Help', '<LastBranch>'],
60
+ [ '/Help/_About', '<Item>', nil, nil, ifactory_cb],
61
+ ]
62
+ item_factory.create_items(menu_items)
63
+
64
+ item_factory.get_item('/Preferences/Shape/Oval').set_active(true)
65
+
66
+ box1 = Gtk::VBox.new(false, 0)
67
+ add(box1)
68
+
69
+ box1.pack_start(item_factory.get_widget('<main>'), :expand => false, :fill => false, :padding => 0)
70
+
71
+ label = Gtk::Label.new("Type\n<alt>\nto start")
72
+ label.set_size_request(200, 200)
73
+ label.set_alignment(0.5, 0.5)
74
+ box1.pack_start(label, :expand => true, :fill => true, :padding => 0)
75
+
76
+ separator = Gtk::HSeparator.new
77
+ box1.pack_start(separator)
78
+
79
+
80
+ box2 = Gtk::VBox.new(false, 10)
81
+ box2.set_border_width(10)
82
+ box1.pack_start(box2, :expand => false, :fill => true, :padding => 0)
83
+
84
+ button = Gtk::Button.new('close')
85
+ # TODO: Need signal_connect_swapped?
86
+ button.signal_connect('clicked') do
87
+ quit
88
+ end
89
+ box2.pack_start(button, :expand => true, :fill => true, :padding => 0)
90
+ button.set_flags(Gtk::Widget::CAN_DEFAULT)
91
+ button.grab_default
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,53 @@
1
+ # Copyright (c) 2013 Ruby-GNOME2 Project Team
2
+ # This program is licenced under the same licence as Ruby-GNOME2.
3
+ #
4
+ =begin
5
+ = Links
6
+
7
+ GtkLabel can show hyperlinks. The default action is to call gtk_show_uri() on their URI, but it is possible to override this with a custom handler.
8
+ =end
9
+ require 'common'
10
+
11
+ module Demo
12
+ class Links < BasicWindow
13
+ def initialize
14
+ super('Links')
15
+
16
+ title = 'Links'
17
+ border_width = 12
18
+ signal_connect(:destroy) {self.destroy}
19
+
20
+ label = Gtk::Label.new "Some <a href=\"http://en.wikipedia.org/wiki/Text\"" +
21
+ "title=\"plain text\">text</a> may be marked up\n" +
22
+ "as hyperlinks, which can be clicked\n" +
23
+ "or activated via <a href=\"keynav\">keynav</a>\n" +
24
+ "and they work fine with other markup, like when\n" +
25
+ "searching on <a href=\"http://www.google.com/\">" +
26
+ "<span color=\"#0266C8\">G</span><span color=\"#F90101\">o</span>" +
27
+ "<span color=\"#F2B50F\">o</span><span color=\"#0266C8\">g</span>" +
28
+ "<span color=\"#00933B\">l</span><span color=\"#F90101\">e</span>" +
29
+ "</a>."
30
+ label.use_markup = true
31
+ label.signal_connect(:activate_link) {|widget, uri| activate_link uri}
32
+ add label
33
+ label.show
34
+ end
35
+
36
+ def activate_link uri
37
+ if uri == 'keynav'
38
+ dialog = Gtk::MessageDialog.new :parent => self,
39
+ :flags => :destroy_with_parent,
40
+ :type => :info,
41
+ :buttons_type => :ok
42
+
43
+ dialog.markup = "The term <i>keynav</i> is a shorthand for " +
44
+ "keyboard navigation and refers to the process of using " +
45
+ "a program (exclusively) via keyboard input."
46
+ dialog.present
47
+ dialog.signal_connect(:response) {dialog.destroy}
48
+ return true
49
+ end
50
+ false
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,138 @@
1
+ # Copyright (c) 2003-2005 Ruby-GNOME2 Project Team
2
+ # This program is licenced under the same licence as Ruby-GNOME2.
3
+ #
4
+ # $Id: list_store.rb,v 1.5 2005/02/06 18:25:13 kzys Exp $
5
+ =begin
6
+ = Tree View/List Store
7
+
8
+ The Gtk::ListStore is used to store data in list form, to be used
9
+ later on by a Gtk::TreeView to display it. This demo builds a
10
+ simple Gtk::ListStore and displays it. See the Stock Browser
11
+ demo for a more advanced example.
12
+ =end
13
+ require 'common'
14
+
15
+ module Demo
16
+ class ListStore < BasicWindow
17
+ Bug = Struct.new('Bug', :fixed, :number, :severity, :description)
18
+ COLUMN_FIXED, COLUMN_NUMBER, COLUMN_SEVERITY, COLUMN_DESCRIPTION,
19
+ NUM_COLUMNS = *(0..5).to_a
20
+ DATA = [
21
+ [ false, 60482, 'Normal', 'scrollable notebooks and hidden tabs' ],
22
+ [ false, 60620, 'Critical', 'gdk_window_clear_area (gdkwindow-win32.c) is not thread-safe' ],
23
+ [ false, 50214, 'Major', 'Xft support does not clean up correctly' ],
24
+ [ true, 52877, 'Major', 'GtkFileSelection needs a refresh method. ' ],
25
+ [ false, 56070, 'Normal', "Can't click button after setting in sensitive" ],
26
+ [ true, 56355, 'Normal', 'GtkLabel - Not all changes propagate correctly' ],
27
+ [ false, 50055, 'Normal', 'Rework width/height computations for TreeView' ],
28
+ [ false, 58278, 'Normal', "gtk_dialog_set_response_sensitive doesn't work" ],
29
+ [ false, 55767, 'Normal', 'Getters for all setters' ],
30
+ [ false, 56925, 'Normal', 'Gtkcalender size' ],
31
+ [ false, 56221, 'Normal', 'Selectable label needs right-click copy menu' ],
32
+ [ true, 50939, 'Normal', 'Add shift clicking to GtkTextView' ],
33
+ [ false, 6112, 'Enhancement','netscape-like collapsable toolbars' ],
34
+ [ false, 1, 'Normal', 'First bug :=)' ],
35
+ ].collect do |ary|
36
+ Bug.new(*ary)
37
+ end
38
+ def initialize
39
+ super('GtkListStore demo')
40
+ self.border_width = 8
41
+
42
+ vbox = Gtk::VBox.new(false, 8)
43
+ add(vbox)
44
+
45
+ label = Gtk::Label.new('This is the bug list (note: not based on real data, it would be nice to have a nice ODBC interface to bugzilla or so, though).')
46
+ vbox.pack_start(label, :expand => false, :fill => false, :padding => 0)
47
+
48
+ sw = Gtk::ScrolledWindow.new(nil, nil)
49
+ sw.shadow_type = Gtk::SHADOW_ETCHED_IN
50
+ sw.set_policy(Gtk::POLICY_NEVER, :automatic)
51
+ vbox.pack_start(sw, :expand => true, :fill => true, :padding => 0)
52
+
53
+ # create tree model
54
+ model = create_model
55
+
56
+ # create tree view
57
+ treeview = Gtk::TreeView.new(model)
58
+ treeview.rules_hint = true
59
+ treeview.search_column = COLUMN_DESCRIPTION
60
+
61
+ sw.add(treeview)
62
+
63
+ # add columns to the tree view
64
+ add_columns(treeview)
65
+
66
+ set_default_size(280, 250)
67
+ end
68
+
69
+ def create_model
70
+ # create list store
71
+ store = Gtk::ListStore.new(TrueClass, Integer, String, String)
72
+
73
+ # add data to the list store
74
+ DATA.each do |bug|
75
+ iter = store.append
76
+ bug.each_with_index do |value, index|
77
+ iter[index] = value
78
+ end
79
+ end
80
+ return store
81
+ end
82
+
83
+ def add_columns(treeview)
84
+ # column for fixed toggles
85
+ renderer = Gtk::CellRendererToggle.new
86
+ renderer.signal_connect('toggled') do |cell, path|
87
+ fixed_toggled(treeview.model, path)
88
+ end
89
+
90
+ column = Gtk::TreeViewColumn.new('Fixed?',
91
+ renderer,
92
+ 'active' => COLUMN_FIXED)
93
+
94
+ # set this column to a fixed sizing (of 50 pixels)
95
+ column.sizing = Gtk::TreeViewColumn::FIXED
96
+ column.fixed_width = 50
97
+ treeview.append_column(column)
98
+
99
+ # column for bug numbers
100
+ renderer = Gtk::CellRendererText.new
101
+ column = Gtk::TreeViewColumn.new('Bug number',
102
+ renderer,
103
+ 'text' => COLUMN_NUMBER)
104
+ column.set_sort_column_id(COLUMN_NUMBER)
105
+ treeview.append_column(column)
106
+
107
+ # column for severities
108
+ renderer = Gtk::CellRendererText.new
109
+ column = Gtk::TreeViewColumn.new('Severity',
110
+ renderer,
111
+ 'text' => COLUMN_SEVERITY)
112
+ column.set_sort_column_id(COLUMN_SEVERITY)
113
+ treeview.append_column(column)
114
+
115
+ # column for description
116
+ renderer = Gtk::CellRendererText.new
117
+ column = Gtk::TreeViewColumn.new('Description',
118
+ renderer,
119
+ 'text' => COLUMN_DESCRIPTION)
120
+ column.set_sort_column_id(COLUMN_DESCRIPTION)
121
+ treeview.append_column(column)
122
+ end
123
+
124
+ def fixed_toggled(model, path_str)
125
+ path = Gtk::TreePath.new(path_str)
126
+
127
+ # get toggled iter
128
+ iter = model.get_iter(path)
129
+ fixed =iter[COLUMN_FIXED]
130
+
131
+ # do something with the value
132
+ fixed ^= 1
133
+
134
+ # set new value
135
+ iter[COLUMN_FIXED] = fixed
136
+ end
137
+ end
138
+ end