gtk2 0.20.1 → 0.90.2

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 (443) hide show
  1. data/ChangeLog +30 -0
  2. data/Rakefile +60 -54
  3. data/ext/gtk2/Makefile +163 -0
  4. data/ext/gtk2/depend +10 -0
  5. data/ext/gtk2/extconf.rb +202 -0
  6. data/{src → ext/gtk2}/global.h +0 -0
  7. data/ext/gtk2/gtk2.def +27 -0
  8. data/{src → ext/gtk2}/init.c +0 -0
  9. data/{src → ext/gtk2}/rbgdk.c +0 -0
  10. data/{src → ext/gtk2}/rbgdk.h +0 -0
  11. data/{src → ext/gtk2}/rbgdkatom.c +0 -0
  12. data/{src → ext/gtk2}/rbgdkcairo.c +0 -0
  13. data/{src → ext/gtk2}/rbgdkcolor.c +0 -0
  14. data/{src → ext/gtk2}/rbgdkcolormap.c +0 -0
  15. data/{src → ext/gtk2}/rbgdkconst.c +0 -0
  16. data/{src → ext/gtk2}/rbgdkconversions.h +0 -0
  17. data/{src → ext/gtk2}/rbgdkcursor.c +0 -0
  18. data/{src → ext/gtk2}/rbgdkdevice.c +0 -0
  19. data/{src → ext/gtk2}/rbgdkdisplay.c +0 -0
  20. data/{src → ext/gtk2}/rbgdkdisplaymanager.c +0 -0
  21. data/{src → ext/gtk2}/rbgdkdragcontext.c +0 -0
  22. data/{src → ext/gtk2}/rbgdkdraw.c +0 -0
  23. data/{src → ext/gtk2}/rbgdkevent.c +0 -0
  24. data/{src → ext/gtk2}/rbgdkgc.c +0 -0
  25. data/{src → ext/gtk2}/rbgdkgeometry.c +0 -0
  26. data/{src → ext/gtk2}/rbgdkimage.c +0 -0
  27. data/{src → ext/gtk2}/rbgdkinput.c +0 -0
  28. data/{src → ext/gtk2}/rbgdkkeymap.c +0 -0
  29. data/{src → ext/gtk2}/rbgdkkeysyms.h +0 -466
  30. data/{src → ext/gtk2}/rbgdkkeyval.c +0 -0
  31. data/{src → ext/gtk2}/rbgdkpango.c +0 -0
  32. data/{src → ext/gtk2}/rbgdkpangorenderer.c +0 -0
  33. data/{src → ext/gtk2}/rbgdkpixbuf.c +0 -0
  34. data/{src → ext/gtk2}/rbgdkpixmap.c +0 -0
  35. data/{src → ext/gtk2}/rbgdkproperty.c +0 -0
  36. data/{src → ext/gtk2}/rbgdkrectangle.c +0 -0
  37. data/{src → ext/gtk2}/rbgdkregion.c +0 -0
  38. data/{src → ext/gtk2}/rbgdkrgb.c +0 -0
  39. data/{src → ext/gtk2}/rbgdkscreen.c +0 -0
  40. data/{src → ext/gtk2}/rbgdkselection.c +0 -0
  41. data/{src → ext/gtk2}/rbgdkthreads.c +0 -0
  42. data/{src → ext/gtk2}/rbgdktimecoord.c +0 -0
  43. data/{src → ext/gtk2}/rbgdkvisual.c +0 -0
  44. data/{src → ext/gtk2}/rbgdkwindow.c +0 -0
  45. data/{src → ext/gtk2}/rbgdkwindowattr.c +0 -0
  46. data/{src → ext/gtk2}/rbgdkx11.c +0 -0
  47. data/{src → ext/gtk2}/rbgtk.c +0 -0
  48. data/{src → ext/gtk2}/rbgtk.h +0 -4
  49. data/{src → ext/gtk2}/rbgtkaboutdialog.c +0 -0
  50. data/{src → ext/gtk2}/rbgtkaccelerator.c +0 -0
  51. data/{src → ext/gtk2}/rbgtkaccelgroup.c +0 -0
  52. data/{src → ext/gtk2}/rbgtkaccelgroupentry.c +0 -0
  53. data/{src → ext/gtk2}/rbgtkaccelkey.c +0 -0
  54. data/{src → ext/gtk2}/rbgtkaccellabel.c +0 -0
  55. data/{src → ext/gtk2}/rbgtkaccelmap.c +0 -0
  56. data/{src → ext/gtk2}/rbgtkaccessible.c +0 -0
  57. data/{src → ext/gtk2}/rbgtkaction.c +0 -0
  58. data/{src → ext/gtk2}/rbgtkactiongroup.c +0 -0
  59. data/{src → ext/gtk2}/rbgtkadjustment.c +0 -0
  60. data/{src → ext/gtk2}/rbgtkalignment.c +0 -0
  61. data/{src → ext/gtk2}/rbgtkallocation.c +0 -0
  62. data/{src → ext/gtk2}/rbgtkarrow.c +0 -0
  63. data/{src → ext/gtk2}/rbgtkaspectframe.c +0 -0
  64. data/{src → ext/gtk2}/rbgtkassistant.c +0 -0
  65. data/{src → ext/gtk2}/rbgtkbbox.c +0 -0
  66. data/{src → ext/gtk2}/rbgtkbin.c +0 -0
  67. data/{src → ext/gtk2}/rbgtkbindingset.c +0 -0
  68. data/{src → ext/gtk2}/rbgtkborder.c +0 -0
  69. data/{src → ext/gtk2}/rbgtkbox.c +0 -0
  70. data/{src → ext/gtk2}/rbgtkbuildable.c +0 -0
  71. data/{src → ext/gtk2}/rbgtkbuilder.c +0 -0
  72. data/{src → ext/gtk2}/rbgtkbutton.c +0 -0
  73. data/{src → ext/gtk2}/rbgtkcalendar.c +0 -0
  74. data/{src → ext/gtk2}/rbgtkcelleditable.c +0 -0
  75. data/{src → ext/gtk2}/rbgtkcelllayout.c +0 -0
  76. data/{src → ext/gtk2}/rbgtkcellrenderer.c +0 -0
  77. data/{src → ext/gtk2}/rbgtkcellrendereraccel.c +0 -0
  78. data/{src → ext/gtk2}/rbgtkcellrenderercombo.c +0 -0
  79. data/{src → ext/gtk2}/rbgtkcellrendererpixbuf.c +0 -0
  80. data/{src → ext/gtk2}/rbgtkcellrendererprogress.c +0 -0
  81. data/{src → ext/gtk2}/rbgtkcellrendererspin.c +0 -0
  82. data/{src → ext/gtk2}/rbgtkcellrenderertext.c +0 -0
  83. data/{src → ext/gtk2}/rbgtkcellrenderertoggle.c +0 -0
  84. data/{src → ext/gtk2}/rbgtkcellview.c +0 -0
  85. data/{src → ext/gtk2}/rbgtkcheckbutton.c +0 -0
  86. data/{src → ext/gtk2}/rbgtkcheckmenuitem.c +0 -0
  87. data/{src → ext/gtk2}/rbgtkclipboard.c +0 -0
  88. data/{src → ext/gtk2}/rbgtkcolorbutton.c +0 -0
  89. data/{src → ext/gtk2}/rbgtkcolorsel.c +0 -0
  90. data/{src → ext/gtk2}/rbgtkcolorselectiondialog.c +0 -0
  91. data/{src → ext/gtk2}/rbgtkcombo.c +0 -0
  92. data/{src → ext/gtk2}/rbgtkcombobox.c +0 -0
  93. data/{src → ext/gtk2}/rbgtkcomboboxentry.c +0 -0
  94. data/{src → ext/gtk2}/rbgtkconst.c +0 -0
  95. data/{src → ext/gtk2}/rbgtkcontainer.c +0 -0
  96. data/{src → ext/gtk2}/rbgtkconversions.h +0 -0
  97. data/{src → ext/gtk2}/rbgtkcurve.c +0 -0
  98. data/{src → ext/gtk2}/rbgtkdialog.c +0 -0
  99. data/{src → ext/gtk2}/rbgtkdrag.c +0 -0
  100. data/{src → ext/gtk2}/rbgtkdrawingarea.c +0 -0
  101. data/{src → ext/gtk2}/rbgtkeditable.c +0 -0
  102. data/{src → ext/gtk2}/rbgtkentry.c +0 -0
  103. data/{src → ext/gtk2}/rbgtkentrycompletion.c +0 -0
  104. data/{src → ext/gtk2}/rbgtkeventbox.c +0 -0
  105. data/{src → ext/gtk2}/rbgtkexpander.c +0 -0
  106. data/{src → ext/gtk2}/rbgtkfilechooser.c +0 -0
  107. data/{src → ext/gtk2}/rbgtkfilechooserbutton.c +0 -0
  108. data/{src → ext/gtk2}/rbgtkfilechooserdialog.c +0 -0
  109. data/{src → ext/gtk2}/rbgtkfilechooserwidget.c +0 -0
  110. data/{src → ext/gtk2}/rbgtkfilefilter.c +0 -0
  111. data/{src → ext/gtk2}/rbgtkfilesel.c +0 -0
  112. data/{src → ext/gtk2}/rbgtkfixed.c +0 -0
  113. data/{src → ext/gtk2}/rbgtkfontbutton.c +0 -0
  114. data/{src → ext/gtk2}/rbgtkfontselection.c +0 -0
  115. data/{src → ext/gtk2}/rbgtkfontselectiondialog.c +0 -0
  116. data/{src → ext/gtk2}/rbgtkframe.c +0 -0
  117. data/{src → ext/gtk2}/rbgtkgamma.c +0 -0
  118. data/{src → ext/gtk2}/rbgtkhandlebox.c +0 -0
  119. data/{src → ext/gtk2}/rbgtkhbbox.c +0 -0
  120. data/{src → ext/gtk2}/rbgtkhbox.c +0 -0
  121. data/{src → ext/gtk2}/rbgtkhpaned.c +0 -0
  122. data/{src → ext/gtk2}/rbgtkhruler.c +0 -0
  123. data/{src → ext/gtk2}/rbgtkhscale.c +0 -0
  124. data/{src → ext/gtk2}/rbgtkhscrollbar.c +0 -0
  125. data/{src → ext/gtk2}/rbgtkhseparator.c +0 -0
  126. data/{src → ext/gtk2}/rbgtkiconfactory.c +0 -0
  127. data/{src → ext/gtk2}/rbgtkiconinfo.c +0 -0
  128. data/{src → ext/gtk2}/rbgtkiconset.c +0 -0
  129. data/{src → ext/gtk2}/rbgtkiconsize.c +0 -0
  130. data/{src → ext/gtk2}/rbgtkiconsource.c +0 -0
  131. data/{src → ext/gtk2}/rbgtkicontheme.c +0 -0
  132. data/{src → ext/gtk2}/rbgtkiconview.c +0 -0
  133. data/{src → ext/gtk2}/rbgtkimage.c +0 -0
  134. data/{src → ext/gtk2}/rbgtkimagemenuitem.c +0 -0
  135. data/{src → ext/gtk2}/rbgtkimcontext.c +0 -0
  136. data/{src → ext/gtk2}/rbgtkimcontextsimple.c +0 -0
  137. data/{src → ext/gtk2}/rbgtkimmulticontext.c +0 -0
  138. data/{src → ext/gtk2}/rbgtkinits.c +2 -6
  139. data/{src → ext/gtk2}/rbgtkinputdialog.c +0 -0
  140. data/{src → ext/gtk2}/rbgtkinvisible.c +0 -0
  141. data/{src → ext/gtk2}/rbgtkitem.c +0 -0
  142. data/{src → ext/gtk2}/rbgtkitemfactory.c +0 -0
  143. data/{src → ext/gtk2}/rbgtklabel.c +0 -0
  144. data/{src → ext/gtk2}/rbgtklayout.c +0 -0
  145. data/{src → ext/gtk2}/rbgtklinkbutton.c +0 -0
  146. data/{src → ext/gtk2}/rbgtkliststore.c +0 -0
  147. data/{src → ext/gtk2}/rbgtkmacros.h +0 -0
  148. data/{src → ext/gtk2}/rbgtkmain.c +0 -0
  149. data/{src → ext/gtk2}/rbgtkmenu.c +0 -0
  150. data/{src → ext/gtk2}/rbgtkmenubar.c +0 -0
  151. data/{src → ext/gtk2}/rbgtkmenuitem.c +0 -0
  152. data/{src → ext/gtk2}/rbgtkmenushell.c +0 -0
  153. data/{src → ext/gtk2}/rbgtkmenutoolbutton.c +0 -0
  154. data/{src → ext/gtk2}/rbgtkmessagedialog.c +0 -0
  155. data/{src → ext/gtk2}/rbgtkmisc.c +0 -0
  156. data/{src → ext/gtk2}/rbgtknotebook.c +0 -0
  157. data/{src → ext/gtk2}/rbgtkobject.c +0 -0
  158. data/{src → ext/gtk2}/rbgtkoptionmenu.c +0 -0
  159. data/{src → ext/gtk2}/rbgtkpagesetup.c +0 -0
  160. data/{src → ext/gtk2}/rbgtkpagesetupunixdialog.c +0 -0
  161. data/{src → ext/gtk2}/rbgtkpaned.c +0 -0
  162. data/{src → ext/gtk2}/rbgtkpapersize.c +0 -0
  163. data/{src → ext/gtk2}/rbgtkplug.c +0 -0
  164. data/{src → ext/gtk2}/rbgtkprintcontext.c +0 -0
  165. data/{src → ext/gtk2}/rbgtkprinter.c +0 -0
  166. data/{src → ext/gtk2}/rbgtkprintjob.c +0 -0
  167. data/{src → ext/gtk2}/rbgtkprintoperation.c +0 -0
  168. data/{src → ext/gtk2}/rbgtkprintoperationpreview.c +0 -0
  169. data/{src → ext/gtk2}/rbgtkprintsettings.c +0 -0
  170. data/{src → ext/gtk2}/rbgtkprintunixdialog.c +0 -0
  171. data/{src → ext/gtk2}/rbgtkprogress.c +0 -0
  172. data/{src → ext/gtk2}/rbgtkprogressbar.c +0 -0
  173. data/{src → ext/gtk2}/rbgtkradioaction.c +0 -0
  174. data/{src → ext/gtk2}/rbgtkradiobutton.c +0 -0
  175. data/{src → ext/gtk2}/rbgtkradiomenuitem.c +0 -0
  176. data/{src → ext/gtk2}/rbgtkradiotoolbutton.c +0 -0
  177. data/{src → ext/gtk2}/rbgtkrange.c +0 -0
  178. data/{src → ext/gtk2}/rbgtkrc.c +0 -0
  179. data/{src → ext/gtk2}/rbgtkrcstyle.c +0 -0
  180. data/{src → ext/gtk2}/rbgtkrecentaction.c +0 -0
  181. data/{src → ext/gtk2}/rbgtkrecentchooser.c +0 -0
  182. data/{src → ext/gtk2}/rbgtkrecentchooserdialog.c +0 -0
  183. data/{src → ext/gtk2}/rbgtkrecentchoosermenu.c +0 -0
  184. data/{src → ext/gtk2}/rbgtkrecentchooserwidget.c +0 -0
  185. data/{src → ext/gtk2}/rbgtkrecentdata.c +0 -0
  186. data/{src → ext/gtk2}/rbgtkrecentfilter.c +0 -0
  187. data/{src → ext/gtk2}/rbgtkrecentfilterinfo.c +0 -0
  188. data/{src → ext/gtk2}/rbgtkrecentinfo.c +0 -0
  189. data/{src → ext/gtk2}/rbgtkrecentmanager.c +0 -0
  190. data/{src → ext/gtk2}/rbgtkruler.c +0 -0
  191. data/{src → ext/gtk2}/rbgtkscale.c +0 -0
  192. data/{src → ext/gtk2}/rbgtkscalebutton.c +0 -0
  193. data/{src → ext/gtk2}/rbgtkscrollbar.c +0 -0
  194. data/{src → ext/gtk2}/rbgtkscrolledwindow.c +0 -0
  195. data/{src → ext/gtk2}/rbgtkselection.c +0 -0
  196. data/{src → ext/gtk2}/rbgtkselectiondata.c +0 -0
  197. data/{src → ext/gtk2}/rbgtkseparator.c +0 -0
  198. data/{src → ext/gtk2}/rbgtkseparatormenuitem.c +0 -0
  199. data/{src → ext/gtk2}/rbgtkseparatortoolitem.c +0 -0
  200. data/{src → ext/gtk2}/rbgtksettings.c +0 -0
  201. data/{src → ext/gtk2}/rbgtksizegroup.c +0 -0
  202. data/{src → ext/gtk2}/rbgtksocket.c +0 -0
  203. data/{src → ext/gtk2}/rbgtkspinbutton.c +0 -0
  204. data/{src → ext/gtk2}/rbgtkstatusbar.c +0 -0
  205. data/{src → ext/gtk2}/rbgtkstatusicon.c +0 -0
  206. data/{src → ext/gtk2}/rbgtkstock.c +0 -0
  207. data/{src → ext/gtk2}/rbgtkstyle.c +0 -0
  208. data/{src → ext/gtk2}/rbgtktable.c +0 -0
  209. data/{src → ext/gtk2}/rbgtktargetlist.c +0 -0
  210. data/{src → ext/gtk2}/rbgtktearoffmenuitem.c +0 -0
  211. data/{src → ext/gtk2}/rbgtktextappearance.c +0 -0
  212. data/{src → ext/gtk2}/rbgtktextattributes.c +0 -0
  213. data/{src → ext/gtk2}/rbgtktextbuffer.c +0 -0
  214. data/{src → ext/gtk2}/rbgtktextchild.c +0 -0
  215. data/{src → ext/gtk2}/rbgtktextiter.c +0 -0
  216. data/{src → ext/gtk2}/rbgtktextmark.c +0 -0
  217. data/{src → ext/gtk2}/rbgtktexttag.c +0 -0
  218. data/{src → ext/gtk2}/rbgtktexttagtable.c +0 -0
  219. data/{src → ext/gtk2}/rbgtktextview.c +0 -0
  220. data/{src → ext/gtk2}/rbgtktoggleaction.c +0 -0
  221. data/{src → ext/gtk2}/rbgtktogglebutton.c +0 -0
  222. data/{src → ext/gtk2}/rbgtktoggletoolbutton.c +0 -0
  223. data/{src → ext/gtk2}/rbgtktoolbar.c +0 -0
  224. data/{src → ext/gtk2}/rbgtktoolbutton.c +0 -0
  225. data/{src → ext/gtk2}/rbgtktoolitem.c +0 -0
  226. data/{src → ext/gtk2}/rbgtktooltip.c +0 -0
  227. data/{src → ext/gtk2}/rbgtktooltips.c +0 -0
  228. data/{src → ext/gtk2}/rbgtktreedragdest.c +0 -0
  229. data/{src → ext/gtk2}/rbgtktreedragsource.c +0 -0
  230. data/{src → ext/gtk2}/rbgtktreeiter.c +0 -0
  231. data/{src → ext/gtk2}/rbgtktreemodel.c +0 -0
  232. data/{src → ext/gtk2}/rbgtktreemodelfilter.c +0 -0
  233. data/{src → ext/gtk2}/rbgtktreemodelsort.c +0 -0
  234. data/{src → ext/gtk2}/rbgtktreepath.c +0 -0
  235. data/{src → ext/gtk2}/rbgtktreerowreference.c +0 -0
  236. data/{src → ext/gtk2}/rbgtktreeselection.c +0 -0
  237. data/{src → ext/gtk2}/rbgtktreesortable.c +0 -0
  238. data/{src → ext/gtk2}/rbgtktreestore.c +0 -0
  239. data/{src → ext/gtk2}/rbgtktreeview.c +0 -0
  240. data/{src → ext/gtk2}/rbgtktreeviewcolumn.c +0 -0
  241. data/{src → ext/gtk2}/rbgtkuimanager.c +0 -0
  242. data/{src → ext/gtk2}/rbgtkvbbox.c +0 -0
  243. data/{src → ext/gtk2}/rbgtkvbox.c +0 -0
  244. data/{src → ext/gtk2}/rbgtkviewport.c +0 -0
  245. data/{src → ext/gtk2}/rbgtkvolumebutton.c +0 -0
  246. data/{src → ext/gtk2}/rbgtkvpaned.c +0 -0
  247. data/{src → ext/gtk2}/rbgtkvruler.c +0 -0
  248. data/{src → ext/gtk2}/rbgtkvscale.c +0 -0
  249. data/{src → ext/gtk2}/rbgtkvscrollbar.c +0 -0
  250. data/{src → ext/gtk2}/rbgtkvseparator.c +0 -0
  251. data/{src → ext/gtk2}/rbgtkwidget.c +0 -0
  252. data/{src → ext/gtk2}/rbgtkwindow.c +0 -0
  253. data/{src → ext/gtk2}/rbgtkwindowgroup.c +0 -0
  254. data/extconf.rb +48 -113
  255. data/{src/lib → lib}/gtk2.rb +0 -0
  256. data/{src/lib → lib}/gtk2/base.rb +12 -1
  257. data/sample/gtk-demo/README +7 -0
  258. data/sample/gtk-demo/alphatest.png +0 -0
  259. data/sample/gtk-demo/apple-red.png +0 -0
  260. data/sample/gtk-demo/appwindow.rb +233 -0
  261. data/sample/gtk-demo/background.jpg +0 -0
  262. data/sample/gtk-demo/builder.rb +51 -0
  263. data/sample/gtk-demo/button_box.rb +84 -0
  264. data/sample/gtk-demo/cairo-arc-negative.rb +41 -0
  265. data/sample/gtk-demo/cairo-arc.rb +41 -0
  266. data/sample/gtk-demo/cairo-clip-image.rb +51 -0
  267. data/sample/gtk-demo/cairo-clip-rectangle.rb +35 -0
  268. data/sample/gtk-demo/cairo-clip.rb +35 -0
  269. data/sample/gtk-demo/cairo-curve-rectangle.rb +76 -0
  270. data/sample/gtk-demo/cairo-curve-to.rb +43 -0
  271. data/sample/gtk-demo/cairo-dash.rb +39 -0
  272. data/sample/gtk-demo/cairo-fill-and-stroke.rb +32 -0
  273. data/sample/gtk-demo/cairo-fill-and-stroke2.rb +38 -0
  274. data/sample/gtk-demo/cairo-gradient.rb +35 -0
  275. data/sample/gtk-demo/cairo-image-pattern.rb +39 -0
  276. data/sample/gtk-demo/cairo-image.rb +49 -0
  277. data/sample/gtk-demo/cairo-line-cap.rb +53 -0
  278. data/sample/gtk-demo/cairo-line-join.rb +41 -0
  279. data/sample/gtk-demo/cairo-long-lines.rb +41 -0
  280. data/sample/gtk-demo/cairo-operator.rb +83 -0
  281. data/sample/gtk-demo/cairo-path.rb +28 -0
  282. data/sample/gtk-demo/cairo-pattern-fill.rb +88 -0
  283. data/sample/gtk-demo/cairo-self-intersect.rb +32 -0
  284. data/sample/gtk-demo/cairo-text-align-center.rb +45 -0
  285. data/sample/gtk-demo/cairo-text-extents.rb +46 -0
  286. data/sample/gtk-demo/cairo-text.rb +43 -0
  287. data/sample/gtk-demo/changedisplay.rb +408 -0
  288. data/sample/gtk-demo/clipboard.rb +72 -0
  289. data/sample/gtk-demo/colorsel.rb +84 -0
  290. data/sample/gtk-demo/common.rb +88 -0
  291. data/sample/gtk-demo/demo.ui +258 -0
  292. data/sample/gtk-demo/dialog.rb +137 -0
  293. data/sample/gtk-demo/drawingarea.rb +226 -0
  294. data/sample/gtk-demo/editable_cells.rb +172 -0
  295. data/sample/gtk-demo/entry_completion.rb +63 -0
  296. data/sample/gtk-demo/expander.rb +40 -0
  297. data/sample/gtk-demo/floppybuddy.gif +0 -0
  298. data/sample/gtk-demo/gnome-applets.png +0 -0
  299. data/sample/gtk-demo/gnome-calendar.png +0 -0
  300. data/sample/gtk-demo/gnome-foot.png +0 -0
  301. data/sample/gtk-demo/gnome-fs-directory.png +0 -0
  302. data/sample/gtk-demo/gnome-fs-regular.png +0 -0
  303. data/sample/gtk-demo/gnome-gimp.png +0 -0
  304. data/sample/gtk-demo/gnome-gmush.png +0 -0
  305. data/sample/gtk-demo/gnome-gsame.png +0 -0
  306. data/sample/gtk-demo/gnu-keys.png +0 -0
  307. data/sample/gtk-demo/gtk-logo-rgb.gif +0 -0
  308. data/sample/gtk-demo/hypertext.rb +211 -0
  309. data/sample/gtk-demo/iconview.rb +109 -0
  310. data/sample/gtk-demo/images.rb +197 -0
  311. data/sample/gtk-demo/item_factory.rb +94 -0
  312. data/sample/gtk-demo/list_store.rb +138 -0
  313. data/sample/gtk-demo/main.rb +380 -0
  314. data/sample/gtk-demo/menus.rb +172 -0
  315. data/sample/gtk-demo/panes.rb +156 -0
  316. data/sample/gtk-demo/pixbufs.rb +176 -0
  317. data/sample/gtk-demo/printing.rb +128 -0
  318. data/sample/gtk-demo/rotated_text.rb +84 -0
  319. data/sample/gtk-demo/ruby-gnome2-logo.png +0 -0
  320. data/sample/gtk-demo/sizegroup.rb +118 -0
  321. data/sample/gtk-demo/stock_browser.rb +235 -0
  322. data/sample/gtk-demo/textview.rb +435 -0
  323. data/sample/gtk-demo/tree_store.rb +270 -0
  324. data/sample/misc/aboutdialog.rb +42 -0
  325. data/sample/misc/aboutdialog2.rb +42 -0
  326. data/sample/misc/alpha-demo.rb +70 -0
  327. data/sample/misc/assistant.rb +347 -0
  328. data/sample/misc/bindings.rb +107 -0
  329. data/sample/misc/button.rb +69 -0
  330. data/sample/misc/button2.rb +28 -0
  331. data/sample/misc/buttonbox.rb +93 -0
  332. data/sample/misc/cairo-pong.rb +215 -0
  333. data/sample/misc/calendar.rb +62 -0
  334. data/sample/misc/checkbutton.rb +46 -0
  335. data/sample/misc/colorselection.rb +25 -0
  336. data/sample/misc/combo_check.rb +71 -0
  337. data/sample/misc/combobox.rb +86 -0
  338. data/sample/misc/composited-windows.rb +113 -0
  339. data/sample/misc/cursor.rb +32 -0
  340. data/sample/misc/dialog.rb +44 -0
  341. data/sample/misc/dialog2.rb +39 -0
  342. data/sample/misc/dnd.rb +65 -0
  343. data/sample/misc/dndtreeview.rb +56 -0
  344. data/sample/misc/drag-move.rb +131 -0
  345. data/sample/misc/drawing.rb +90 -0
  346. data/sample/misc/entry.rb +34 -0
  347. data/sample/misc/entrycompletion.rb +39 -0
  348. data/sample/misc/expander.rb +27 -0
  349. data/sample/misc/filechooser.rb +49 -0
  350. data/sample/misc/fileselection.rb +26 -0
  351. data/sample/misc/frame.rb +69 -0
  352. data/sample/misc/gc.rb +59 -0
  353. data/sample/misc/gdkscreen.rb +32 -0
  354. data/sample/misc/gnome-logo-icon.png +0 -0
  355. data/sample/misc/helloworld.rb +35 -0
  356. data/sample/misc/iconview.rb +38 -0
  357. data/sample/misc/image.rb +42 -0
  358. data/sample/misc/itemfactory.rb +73 -0
  359. data/sample/misc/itemfactory2.rb +74 -0
  360. data/sample/misc/keyboard_grab.rb +29 -0
  361. data/sample/misc/label.rb +33 -0
  362. data/sample/misc/linkbutton.rb +42 -0
  363. data/sample/misc/listview.rb +92 -0
  364. data/sample/misc/menu.rb +81 -0
  365. data/sample/misc/misc_button.rb +59 -0
  366. data/sample/misc/mouse-gesture.rb +465 -0
  367. data/sample/misc/pangorenderer.rb +66 -0
  368. data/sample/misc/pointer_grab.rb +34 -0
  369. data/sample/misc/print.rb +247 -0
  370. data/sample/misc/properties.rb +85 -0
  371. data/sample/misc/radiobutton.rb +47 -0
  372. data/sample/misc/recentchooserdialog.rb +59 -0
  373. data/sample/misc/rgtk+cairo.rb +44 -0
  374. data/sample/misc/scalebutton.rb +25 -0
  375. data/sample/misc/settings.rb +41 -0
  376. data/sample/misc/statusicon.rb +123 -0
  377. data/sample/misc/stock.rb +36 -0
  378. data/sample/misc/style_property.rb +67 -0
  379. data/sample/misc/style_property.rc +19 -0
  380. data/sample/misc/t-gtkplug.rb +58 -0
  381. data/sample/misc/t-gtksocket.rb +65 -0
  382. data/sample/misc/test.xpm +92 -0
  383. data/sample/misc/textbuffer_serialize.rb +130 -0
  384. data/sample/misc/threads.rb +72 -0
  385. data/sample/misc/to_drawable.rb +42 -0
  386. data/sample/misc/togglebutton.rb +34 -0
  387. data/sample/misc/toolbar.rb +55 -0
  388. data/sample/misc/tooltips.rb +204 -0
  389. data/sample/misc/tree_combo.rb +85 -0
  390. data/sample/misc/tree_progress.rb +69 -0
  391. data/sample/misc/treemodelfilter.rb +55 -0
  392. data/sample/misc/treeview.rb +71 -0
  393. data/sample/misc/uimanager.rb +148 -0
  394. data/sample/misc/uimanager2.rb +91 -0
  395. data/sample/misc/uimanager2.xml +36 -0
  396. data/sample/misc/window.rb +24 -0
  397. data/sample/misc/xbm_cursor.rb +43 -0
  398. data/sample/testgtk/3DRings.xpm +116 -0
  399. data/sample/testgtk/FilesQueue.xpm +98 -0
  400. data/sample/testgtk/Modeller.xpm +117 -0
  401. data/sample/testgtk/README +14 -0
  402. data/sample/testgtk/button.rb +133 -0
  403. data/sample/testgtk/buttonbox.rb +108 -0
  404. data/sample/testgtk/check-n.xpm +21 -0
  405. data/sample/testgtk/check-y.xpm +21 -0
  406. data/sample/testgtk/checkbutton.rb +67 -0
  407. data/sample/testgtk/circles.xbm +46 -0
  408. data/sample/testgtk/colorselect.rb +33 -0
  409. data/sample/testgtk/dialog.rb +47 -0
  410. data/sample/testgtk/entry.rb +73 -0
  411. data/sample/testgtk/filesel.rb +67 -0
  412. data/sample/testgtk/fontselection.rb +56 -0
  413. data/sample/testgtk/gammacurve.rb +70 -0
  414. data/sample/testgtk/labels.rb +73 -0
  415. data/sample/testgtk/layout.rb +108 -0
  416. data/sample/testgtk/marble.xpm +408 -0
  417. data/sample/testgtk/menu.rb +79 -0
  418. data/sample/testgtk/notebook.rb +281 -0
  419. data/sample/testgtk/pixmap.rb +58 -0
  420. data/sample/testgtk/progressbar.rb +181 -0
  421. data/sample/testgtk/radiobutton.rb +61 -0
  422. data/sample/testgtk/range.rb +65 -0
  423. data/sample/testgtk/reparent.rb +91 -0
  424. data/sample/testgtk/rulers.rb +46 -0
  425. data/sample/testgtk/sample.rb +80 -0
  426. data/sample/testgtk/savedposition.rb +87 -0
  427. data/sample/testgtk/scrolledwindow.rb +67 -0
  428. data/sample/testgtk/shapedwindow.rb +99 -0
  429. data/sample/testgtk/spinbutton.rb +181 -0
  430. data/sample/testgtk/statusbar.rb +89 -0
  431. data/sample/testgtk/test.xpm +92 -0
  432. data/sample/testgtk/testgtk.rb +179 -0
  433. data/sample/testgtk/testgtkrc +146 -0
  434. data/sample/testgtk/testgtkrc2 +21 -0
  435. data/sample/testgtk/togglebutton.rb +53 -0
  436. data/sample/testgtk/toolbar.rb +82 -0
  437. data/sample/testgtk/tooltips.rb +41 -0
  438. data/sample/testgtk/wmhints.rb +40 -0
  439. data/test/run-test.rb +10 -8
  440. data/test/test_gtk_builder.rb +1 -1
  441. metadata +495 -334
  442. data/src/makeinits.rb +0 -57
  443. data/src/makekeysyms.rb +0 -5
@@ -0,0 +1,128 @@
1
+ # Copyright (c) 2008 Ruby-GNOME2 Project Team
2
+ # This program is licenced under the same licence as Ruby-GNOME2.
3
+ =begin
4
+ = Printing
5
+
6
+ Gtk::PrintOperation offers a simple API to support printing
7
+ in a cross-platform way.
8
+ =end
9
+
10
+ require 'common'
11
+
12
+ module Demo
13
+ class Printing < BasicWindow
14
+ Data = Struct.new(:font_size, :lines_per_page, :lines, :n_pages)
15
+ HEADER_HEIGHT = 10 * 72 / 25.4
16
+ HEADER_GAP = 3 * 72 / 25.4
17
+
18
+ def initialize
19
+ super('Printing')
20
+
21
+ button = Gtk::Button.new("Print...")
22
+ button.signal_connect("clicked") do
23
+ begin
24
+ run_print_operation
25
+ rescue
26
+ dialog = Gtk::MessageDialog.new(self, :destroy_with_parent, :error,
27
+ :close, $!.message)
28
+ dialog.signal_connect("response") do
29
+ dialog.destroy
30
+ true
31
+ end
32
+ dialog.show
33
+ end
34
+ true
35
+ end
36
+ add(button)
37
+ end
38
+
39
+ private
40
+ def run_print_operation
41
+ operation = Gtk::PrintOperation.new
42
+
43
+ data = Data.new
44
+ data.font_size = 12.0
45
+ operation.signal_connect("begin-print") do |_operation, context|
46
+ on_begin_print(_operation, context, data)
47
+ end
48
+ operation.signal_connect("draw-page") do |_operation, context, page_number|
49
+ on_draw_page(_operation, context, page_number, data)
50
+ end
51
+ operation.signal_connect("end-print") do |_operation, context|
52
+ on_end_print(_operation, context, data)
53
+ end
54
+
55
+ operation.use_full_page = false
56
+ operation.unit = :points
57
+
58
+ operation.run(:print_dialog, self)
59
+ end
60
+
61
+ def on_begin_print(operation, context, data)
62
+ height = context.height - HEADER_HEIGHT - HEADER_GAP
63
+ data.lines_per_page = (height / data.font_size).floor
64
+ data.lines = File.readlines(__FILE__)
65
+ data.n_pages = (data.lines.size - 1) / data.lines_per_page + 1
66
+ operation.set_n_pages(data.n_pages)
67
+ end
68
+
69
+ def on_draw_page(operation, context, page_number, data)
70
+ cr = context.cairo_context
71
+ draw_header(cr, operation, context, page_number, data)
72
+ draw_body(cr, operation, context, page_number, data)
73
+ end
74
+
75
+ def draw_header(cr, operation, context, page_number, data)
76
+ width = context.width
77
+
78
+ cr.rectangle(0, 0, width, HEADER_HEIGHT)
79
+ cr.set_source_rgb(0.8, 0.8, 0.8)
80
+ cr.fill_preserve
81
+
82
+ cr.set_source_rgb(0, 0, 0)
83
+ cr.line_width = 1
84
+ cr.stroke
85
+
86
+ layout = context.create_pango_layout
87
+ layout.font_description = "sans 14"
88
+
89
+ layout.text = File.basename(__FILE__)
90
+ text_width, text_height = layout.pixel_size
91
+
92
+ if (text_width > width)
93
+ layout.width = width
94
+ layout.ellipsize = :start
95
+ text_width, text_height = layout.pixel_size
96
+ end
97
+
98
+ y = (HEADER_HEIGHT - text_height) / 2
99
+
100
+ cr.move_to((width - text_width) / 2, y)
101
+ cr.show_pango_layout(layout)
102
+
103
+ layout.text = "#{page_number + 1}/#{data.n_pages}"
104
+ layout.width = -1
105
+ text_width, text_height = layout.pixel_size
106
+ cr.move_to(width - text_width - 4, y)
107
+ cr.show_pango_layout(layout)
108
+ end
109
+
110
+ def draw_body(cr, operation, context, page_number, data)
111
+ layout = context.create_pango_layout
112
+ description = Pango::FontDescription.new("monosapce")
113
+ description.size = data.font_size * Pango::SCALE
114
+ layout.font_description = description
115
+
116
+ cr.move_to(0, HEADER_HEIGHT + HEADER_GAP)
117
+ start_line = page_number * data.lines_per_page
118
+ data.lines[start_line, data.lines_per_page].each do |line|
119
+ layout.text = line
120
+ cr.show_pango_layout(layout)
121
+ cr.rel_move_to(0, data.font_size)
122
+ end
123
+ end
124
+
125
+ def on_end_print(operation, context, data)
126
+ end
127
+ end
128
+ end
@@ -0,0 +1,84 @@
1
+ # Copyright (c) 2005 Ruby-GNOME2 Project Team
2
+ # This program is licenced under the same licence as Ruby-GNOME2.
3
+ #
4
+ # $Id: rotated_text.rb,v 1.2 2005/03/05 15:01:16 mutoh Exp $
5
+ =begin
6
+ = Rotated Text
7
+
8
+ This demo shows how to use GDK and Pango to draw rotated and transformed text.
9
+ The use of Gdk::PangoRenderer in this example is a somewhat advanced technique; most applications can simply use Gdk::Drawable#draw_layout.
10
+ We use it here mostly because that allows us to work in user coordinates - that is, coordinates prior to the application of the transformation matrix, rather than device coordinates.
11
+ As of GTK+-2.6, the ability to draw transformed and anti-aliased graphics as shown in this example is only present for text.
12
+ With GTK+-2.8, a new graphics system called "Cairo" will be introduced that provides these capabilities and many more for all types of graphics.
13
+ =end
14
+ require 'common'
15
+
16
+ module Demo
17
+ class RotatedText < BasicWindow
18
+ RADIUS = 150
19
+ N_WORDS = 10
20
+ FONT = "Sans Bold 27"
21
+
22
+ def initialize
23
+ super('Rotated Text')
24
+
25
+ unless Gtk.check_version?(2, 6, 0)
26
+ add(Gtk::Label.new("This sample requires GTK+ 2.6.0 or later"))
27
+ return
28
+ end
29
+
30
+ drawing_area = Gtk::DrawingArea.new
31
+ add(drawing_area)
32
+ drawing_area.modify_bg(Gtk::STATE_NORMAL, Gdk::Color.new(65535, 65535, 65535))
33
+
34
+ drawing_area.signal_connect("expose_event") do
35
+ matrix = Pango::Matrix.new
36
+
37
+ # Get the default renderer for the screen, and set it up for drawing
38
+ renderer = Gdk::PangoRenderer.get_default(drawing_area.screen)
39
+ renderer.drawable = drawing_area.window
40
+ renderer.gc = style.black_gc
41
+ width = drawing_area.allocation.width
42
+ height = drawing_area.allocation.height
43
+
44
+ # Set up a transformation matrix so that the user space coordinates for
45
+ # the centered square where we draw are [-RADIUS, RADIUS], [-RADIUS, RADIUS]
46
+ # We first center, then change the scale
47
+ device_radius = [width, height].min / 2.0
48
+
49
+ matrix.translate!(device_radius + (width - 2 * device_radius) / 2.0,
50
+ device_radius + (height - 2 * device_radius) / 2.0)
51
+ matrix.scale!(device_radius / RADIUS, device_radius / RADIUS)
52
+
53
+ # Create a PangoLayout, set the font and text
54
+ context = Gdk::Pango.context
55
+ layout = Pango::Layout.new(context)
56
+ layout.text = "Text"
57
+ layout.font_description = Pango::FontDescription.new(FONT)
58
+
59
+ # Draw the layout N_WORDS times in a circle
60
+ (0...N_WORDS).each do |i|
61
+ rotated_matrix = matrix.dup
62
+ angle = 360 * i / N_WORDS.to_f
63
+
64
+ # Gradient from red at angle == 60 to blue at angle == 300
65
+ red = 65535 * (1 + Math.cos((angle - 60) * Math::PI / 180.0)) / 2
66
+ color = Gdk::Color.new(red, 0, 65535 - red)
67
+ renderer.set_override_color(Pango::Renderer::PART_FOREGROUND, color)
68
+
69
+ rotated_matrix.rotate!(angle)
70
+ context.matrix = rotated_matrix
71
+
72
+ # Inform Pango to re-layout the text with the new transformation matrix
73
+ layout.context_changed
74
+ width, height = layout.size
75
+ renderer.draw_layout(layout, - width / 2, - RADIUS * Pango::SCALE)
76
+ end
77
+ # Clean up default renderer, since it is shared
78
+ renderer.set_override_color(Gdk::PangoRenderer::PART_FOREGROUND, nil)
79
+ renderer.drawable = nil
80
+ renderer.gc = nil
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,118 @@
1
+ # Copyright (c) 2003-2005 Ruby-GNOME2 Project Team
2
+ # This program is licenced under the same licence as Ruby-GNOME2.
3
+ #
4
+ # $Id: sizegroup.rb,v 1.5 2005/02/12 23:02:43 kzys Exp $
5
+ =begin
6
+ = Size Groups
7
+
8
+ Gtk::SizeGroup provides a mechanism for grouping a number of
9
+ widgets together so they all request the same amount of space.
10
+ This is typically useful when you want a column of widgets to
11
+ have the same size, but you can't use a Gtk::Table widget.
12
+
13
+ Note that size groups only affect the amount of space requested,
14
+ not the size that the widgets finally receive. If you want the
15
+ widgets in a Gtk::SizeGroup to actually be the same size, you need
16
+ to pack them in such a way that they get the size they request
17
+ and not more. For example, if you are packing your widgets
18
+ into a table, you would not include the Gtk::FILL flag.
19
+ =end
20
+ require 'common'
21
+
22
+ module Demo
23
+ class SizeGroup < Gtk::Dialog
24
+ def initialize
25
+ super('GtkSizeGroup', nil, 0,
26
+ [Gtk::Stock::CLOSE, Gtk::Dialog::RESPONSE_NONE])
27
+
28
+ color_options = %w(Red Green Blue)
29
+ dash_options = %w(Solid Dashed Dotted)
30
+ end_options = %w(Square Round Arrow)
31
+
32
+ set_resizable(false)
33
+
34
+ signal_connect('response') do
35
+ destroy
36
+ end
37
+
38
+ vbox = Gtk::VBox.new(false, 5)
39
+ self.vbox.pack_start(vbox, true, true, 0)
40
+ vbox.set_border_width(5)
41
+
42
+ size_group = Gtk::SizeGroup.new(Gtk::SizeGroup::HORIZONTAL)
43
+
44
+ ## Create one frame holding color options
45
+ frame = Gtk::Frame.new('Color Options')
46
+ vbox.pack_start(frame, true, true, 0)
47
+
48
+ table = Gtk::Table.new(2, 2, false)
49
+ table.set_border_width(5)
50
+ table.set_row_spacings(5)
51
+ table.set_column_spacings(10)
52
+ frame.add(table)
53
+
54
+ add_row(table, 0, size_group, '_Foreground', color_options)
55
+ add_row(table, 1, size_group, '_Background', color_options)
56
+
57
+ ## And another frame holding line style options
58
+ frame = Gtk::Frame.new('Line Options')
59
+ vbox.pack_start(frame, false, false, 0)
60
+
61
+ table = Gtk::Table.new(2, 2, false)
62
+ table.set_border_width(5)
63
+ table.set_row_spacings(5)
64
+ table.set_column_spacings(10)
65
+ frame.add(table)
66
+
67
+ add_row(table, 0, size_group, '_Dashing', dash_options)
68
+ add_row(table, 1, size_group, '_Line ends', end_options)
69
+
70
+ # And a check button to turn grouping on and off
71
+ check_button = Gtk::CheckButton.new('_Enable grouping', true)
72
+ vbox.pack_start(check_button, false, false, 0)
73
+
74
+ check_button.set_active(true)
75
+ check_button.signal_connect('toggled', size_group) do |check_button, size_group|
76
+ new_mode = if check_button.active?
77
+ Gtk::SizeGroup::HORIZONTAL
78
+ else
79
+ Gtk::SizeGroup::VERTICAL
80
+ end
81
+ size_group.set_mode(new_mode)
82
+ end
83
+ end
84
+
85
+ def add_row(table, row, size_group, label_text, options)
86
+ label = Gtk::Label.new(label_text, true)
87
+ label.set_alignment(0, 1)
88
+ table.attach(label,
89
+ 0, 1, row, row + 1,
90
+ Gtk::EXPAND | Gtk::FILL, 0,
91
+ 0, 0)
92
+
93
+ option_menu = create_option_menu(options)
94
+ label.set_mnemonic_widget(option_menu)
95
+ size_group.add_widget(option_menu)
96
+ table.attach(option_menu,
97
+ 1, 2, row, row + 1,
98
+ 0, 0,
99
+ 0, 0)
100
+ end
101
+
102
+ def create_option_menu(strings)
103
+ menu = Gtk::Menu.new
104
+
105
+ strings.each do |str|
106
+ menu_item = Gtk::MenuItem.new(str)
107
+ menu_item.show
108
+
109
+ menu.append(menu_item)
110
+ end
111
+
112
+ option_menu = Gtk::OptionMenu.new
113
+ option_menu.set_menu(menu)
114
+
115
+ return option_menu
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,235 @@
1
+ # Copyright (c) 2003-2005 Ruby-GNOME2 Project Team
2
+ # This program is licenced under the same licence as Ruby-GNOME2.
3
+ #
4
+ # $Id: stock_browser.rb,v 1.5 2005/02/12 23:02:43 kzys Exp $
5
+ =begin
6
+ = Stock Item and Icon Browser
7
+
8
+ This source code for this demo doesn't demonstrate anything
9
+ particularly useful in applications. The purpose of the 'demo' is
10
+ just to provide a handy place to browse the available stock icons
11
+ and stock items.
12
+ =end
13
+ require 'common'
14
+
15
+ module Demo
16
+ class StockBrowser < BasicWindow
17
+ Item =
18
+ Struct.new('Item',
19
+ :stock_id, :label, :modifier, :keyval, :translation_domain)
20
+ ItemInfo =
21
+ Struct.new('ItemInfo', :id, :item, :small_icon, :const, :accel_str)
22
+ ItemDisplay =
23
+ Struct.new('ItemDisplay',
24
+ :type_label, :const_label, :id_label, :label_accel_label,
25
+ :icon_image)
26
+
27
+ def initialize
28
+ super('Stock Icons and Items')
29
+ set_default_size(-1, 500)
30
+
31
+ self.border_width = 8
32
+
33
+ hbox = Gtk::HBox.new(false, 8)
34
+ add(hbox)
35
+
36
+ sw = Gtk::ScrolledWindow.new
37
+ sw.set_policy(Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC)
38
+ hbox.pack_start(sw, false, false, 0)
39
+
40
+ model = create_model
41
+
42
+ treeview = Gtk::TreeView.new(model)
43
+ sw.add(treeview)
44
+
45
+ column = Gtk::TreeViewColumn.new
46
+ column.title = 'Const'
47
+
48
+ cell_renderer = Gtk::CellRendererPixbuf.new
49
+ column.pack_start(cell_renderer, false)
50
+ column.set_attributes(cell_renderer, "stock_id" => 1)
51
+
52
+ cell_renderer = Gtk::CellRendererText.new
53
+ column.pack_start(cell_renderer, true)
54
+ column.set_cell_data_func(cell_renderer) do |column, cell, model, iter|
55
+ cell.text = iter[0].const
56
+ end
57
+
58
+ treeview.append_column(column)
59
+
60
+ cell_renderer = Gtk::CellRendererText.new
61
+ treeview.insert_column(-1, 'Label', cell_renderer) do |col, cell, model, iter|
62
+ info = iter[0]
63
+ cell.text = info.item.label if info
64
+ end
65
+
66
+ cell_renderer = Gtk::CellRendererText.new
67
+ treeview.insert_column(-1, 'Accel', cell_renderer) do |col, cell, model, iter|
68
+ info = iter[0]
69
+ cell.text = info.accel_str if info
70
+ end
71
+
72
+ cell_renderer = Gtk::CellRendererText.new
73
+ treeview.insert_column(-1, 'ID', cell_renderer) do |col, cell, model, iter|
74
+ info = iter[0]
75
+ cell.text = info.id if info
76
+ end
77
+
78
+ align = Gtk::Alignment.new(0.5, 0.0, 0.0, 0.0)
79
+ hbox.pack_end(align, false, false, 0)
80
+
81
+ frame = Gtk::Frame.new('Selected Item')
82
+ align.add(frame)
83
+
84
+ vbox = Gtk::VBox.new(false, 8)
85
+ vbox.border_width = 4
86
+ frame.add(vbox)
87
+
88
+ display = ItemDisplay.new
89
+ class << treeview
90
+ @display = nil
91
+ attr_accessor :display
92
+ end
93
+ treeview.display = display
94
+
95
+ display.type_label = Gtk::Label.new
96
+ display.const_label = Gtk::Label.new
97
+ display.id_label = Gtk::Label.new
98
+ display.label_accel_label = Gtk::Label.new
99
+ display.icon_image = Gtk::Image.new # empty image
100
+
101
+ vbox.pack_start(display.type_label, false, false, 0)
102
+
103
+ vbox.pack_start(display.icon_image, false, false, 0)
104
+
105
+ vbox.pack_start(display.label_accel_label, false, false, 0)
106
+ vbox.pack_start(display.const_label, false, false, 0)
107
+ vbox.pack_start(display.id_label, false, false, 0)
108
+
109
+ selection = treeview.selection
110
+ selection.mode = Gtk::SELECTION_SINGLE
111
+
112
+ selection.signal_connect('changed') do |s|
113
+ selection_changed(s)
114
+ end
115
+ end
116
+
117
+ def create_model
118
+ store = Gtk::ListStore.new(ItemInfo, String, String, String)
119
+
120
+ list_ids = Gtk::Stock.ids
121
+ list_ids.sort! do |a, b|
122
+ a.to_s <=> b.to_s
123
+ end
124
+ list_ids.each do |stock_id|
125
+ info = ItemInfo.new
126
+
127
+ info.id = stock_id
128
+
129
+ begin
130
+ info.item = Item.new(*Gtk::Stock.lookup(stock_id))
131
+ rescue ArgumentError
132
+ info.item = Item.new
133
+ end
134
+
135
+ # only show icons for stock IDs that have default icons
136
+ icon_set = Gtk::IconFactory.lookup_default(info.id.to_s)
137
+ if icon_set
138
+ # See what sizes this stock icon really exists at
139
+ sizes = icon_set.sizes
140
+
141
+ # Use menu size if it exists, otherwise first size found
142
+ size = sizes.find do |s| s == Gtk::IconSize::MENU end || sizes.first
143
+
144
+ info.small_icon = render_icon(info.id, size, '')
145
+
146
+ unless size == Gtk::IconSize::MENU
147
+ # Make the result the proper size for our thumbnail
148
+ w, h = Gtk::IconSize.lookup(size)
149
+
150
+ scaled = info.small_icon.scale(w, h, Gdk::Pixbuf::INTERP_BILINEAR)
151
+ info.small_icon = scaled
152
+ end
153
+
154
+ else
155
+ info.small_icon = nil
156
+ end
157
+
158
+ if info.item.keyval
159
+ info.accel_str = Gtk::Accelerator.to_name(info.item.keyval,
160
+ info.item.modifier)
161
+ else
162
+ info.accel_str = ''
163
+ end
164
+
165
+ info.const = id_to_const(info.id)
166
+
167
+ iter = store.append
168
+ iter[0] = info
169
+ iter[1] = info.id
170
+ end
171
+
172
+ return store
173
+ end
174
+
175
+ def selection_changed(selection)
176
+ treeview = selection.tree_view
177
+ display = treeview.display
178
+
179
+ iter = selection.selected
180
+ info = iter[0]
181
+
182
+ display.type_label.label = if info.small_icon and info.item.label
183
+ 'Icon and Item'
184
+ elsif info.small_icon
185
+ 'Icon Only'
186
+ elsif info.item.label
187
+ 'Item Only'
188
+ else
189
+ '???????'
190
+ end
191
+ display.const_label.label = info.const
192
+ display.id_label.label = info.id
193
+
194
+ if info.item.label
195
+ str = "%s %s" % [info.item.label, info.accel_str]
196
+ display.label_accel_label.set_text(str, true)
197
+ else
198
+ display.label_accel_label.set_text('')
199
+ end
200
+
201
+ if info.small_icon
202
+ display.icon_image.set(info.id, get_largest_size(info.id))
203
+ else
204
+ display.icon_image.pixbuf = nil
205
+ end
206
+ end
207
+
208
+ def get_largest_size(symbol)
209
+ set = Gtk::IconFactory.lookup_default(symbol.id2name)
210
+ best_size = Gtk::IconSize::INVALID
211
+ best_pixels = 0
212
+
213
+ sizes = set.sizes
214
+ sizes.collect! do |i|
215
+ width, height = Gtk::IconSize.lookup(i)
216
+ [i, width * height]
217
+ end
218
+ return (sizes.max do |a, b| a[1] <=> b[1] end)[0]
219
+ end
220
+
221
+ def id_to_const(id)
222
+ const = ''
223
+
224
+ s = id.id2name
225
+ if s =~ /^gtk-/
226
+ const += 'Gtk::Stock::'
227
+ s[0,4] = ''
228
+ end
229
+
230
+ const += s.upcase.gsub(/-/, '_')
231
+
232
+ const
233
+ end
234
+ end
235
+ end