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,172 @@
1
+ # Copyright (c) 2003-2005 Ruby-GNOME2 Project Team
2
+ # This program is licenced under the same licence as Ruby-GNOME2.
3
+ #
4
+ # $Id: menus.rb,v 1.4 2005/02/12 23:02:43 kzys Exp $
5
+ =begin
6
+ = Menus
7
+
8
+ There are several widgets involved in displaying menus. The
9
+ Gtk::MenuBar widget is a horizontal menu bar, which normally appears
10
+ at the top of an application. The Gtk::Menu widget is the actual menu
11
+ that pops up. Both Gtk::MenuBar and Gtk::Menu are subclasses of
12
+ Gtk::MenuShell; a Gtk::MenuShell contains menu items
13
+ (Gtk::MenuItem). Each menu item contains text and/or images and can
14
+ be selected by the user.
15
+
16
+ There are several kinds of menu item, including plain Gtk::MenuItem,
17
+ Gtk::CheckMenuItem which can be checked/unchecked, Gtk::RadioMenuItem
18
+ which is a check menu item that's in a mutually exclusive group,
19
+ Gtk::SeparatorMenuItem which is a separator bar, Gtk::TearoffMenuItem
20
+ which allows a Gtk::Menu to be torn off, and Gtk::ImageMenuItem which
21
+ can place a Gtk::Image or other widget next to the menu text.
22
+
23
+ A Gtk::MenuItem can have a submenu, which is simply a Gtk::Menu to pop
24
+ up when the menu item is selected. Typically, all menu items in a menu bar
25
+ have submenus.
26
+
27
+ The Gtk::OptionMenu widget is a button that pops up a Gtk::Menu when clicked.
28
+ It's used inside dialogs and such.
29
+
30
+ Gtk::ItemFactory provides a higher-level interface for creating menu bars
31
+ and menus; while you can construct menus manually, most people don't
32
+ do that. There's a separate demo for Gtk::ItemFactory.
33
+ =end
34
+ require 'common'
35
+
36
+ module Demo
37
+ class Menus < BasicWindow
38
+ def initialize
39
+ super('menus')
40
+ self.border_width = 0
41
+
42
+ accel_group = Gtk::AccelGroup.new
43
+ add_accel_group(accel_group)
44
+
45
+
46
+ box1 = Gtk::VBox.new(false, 0)
47
+ add(box1)
48
+
49
+ menubar = Gtk::MenuBar.new
50
+ box1.pack_start(menubar, false, true, 0)
51
+
52
+ menu = create_menu(2, true)
53
+
54
+ menuitem = Gtk::MenuItem.new("test\nline2")
55
+ menuitem.submenu = menu
56
+ menubar.append(menuitem)
57
+ menuitem.show
58
+
59
+ menuitem = Gtk::MenuItem.new('foo')
60
+ menuitem.submenu = create_menu(3, true)
61
+ menubar.append(menuitem)
62
+ menuitem.show
63
+
64
+ menuitem = Gtk::MenuItem.new('bar')
65
+ menuitem.submenu = create_menu(4, true)
66
+ menuitem.right_justified = true
67
+ menubar.append(menuitem)
68
+ menuitem.show
69
+
70
+ box2 = Gtk::VBox.new(false, 10)
71
+ box2.border_width = 10
72
+ box1.pack_start(box2, true, true, 0)
73
+ box2.show
74
+
75
+ menu = create_menu(1, false)
76
+ # menu.accel_group = accel_group
77
+
78
+ menuitem = Gtk::SeparatorMenuItem.new
79
+ menu.append(menuitem)
80
+ menuitem.show
81
+
82
+ menuitem = Gtk::CheckMenuItem.new('Accelerate Me')
83
+ menu.append(menuitem)
84
+ menuitem.show
85
+ menuitem.add_accelerator('activate',
86
+ accel_group,
87
+ Gdk::Keyval::GDK_F1,
88
+ 0,
89
+ Gtk::ACCEL_VISIBLE)
90
+ menuitem = Gtk::CheckMenuItem.new('Accelerator Locked')
91
+ menu.append(menuitem)
92
+ menuitem.show
93
+ menuitem.add_accelerator('activate',
94
+ accel_group,
95
+ Gdk::Keyval::GDK_F2,
96
+ 0,
97
+ Gtk::ACCEL_VISIBLE | Gtk::ACCEL_LOCKED)
98
+ menuitem = Gtk::CheckMenuItem.new('Accelerators Frozen')
99
+ menu.append(menuitem)
100
+ menuitem.show
101
+ menuitem.add_accelerator('activate',
102
+ accel_group,
103
+ Gdk::Keyval::GDK_F2,
104
+ 0,
105
+ Gtk::ACCEL_VISIBLE)
106
+ menuitem.add_accelerator('activate',
107
+ accel_group,
108
+ Gdk::Keyval::GDK_F3,
109
+ 0,
110
+ Gtk::ACCEL_VISIBLE)
111
+
112
+ optionmenu = Gtk::OptionMenu.new
113
+ optionmenu.menu = menu
114
+ optionmenu.history = 3
115
+ box2.pack_start(optionmenu, true, true, 0)
116
+ optionmenu.show
117
+
118
+ separator = Gtk::HSeparator.new
119
+ box1.pack_start(separator, false, true, 0)
120
+ separator.show
121
+
122
+ box2 = Gtk::VBox.new(false, 10)
123
+ box2.border_width = 10
124
+ box1.pack_start(box2, false, true, 0)
125
+ box2.show
126
+
127
+ button = Gtk::Button.new('close')
128
+ button.signal_connect('clicked') do
129
+ quit
130
+ end
131
+ box2.pack_start(button, true, true, 0)
132
+ button.flags = Gtk::Widget::CAN_DEFAULT
133
+ button.grab_default
134
+ button.show
135
+ end
136
+
137
+
138
+ def create_menu (depth, tearoff)
139
+ if depth < 1
140
+ return nil
141
+ end
142
+
143
+ menu = Gtk::Menu.new
144
+ group = nil
145
+
146
+ if tearoff
147
+ menuitem = Gtk::TearoffMenuItem.new
148
+ menu.append(menuitem)
149
+ menuitem.show
150
+ end
151
+
152
+ 5.times do |i|
153
+ buf = sprintf('item %2d - %d', depth, i + 1)
154
+ menuitem = Gtk::RadioMenuItem.new(buf)
155
+ group = menuitem.group
156
+
157
+ menu.append(menuitem)
158
+ menuitem.show
159
+ if i == 3
160
+ menuitem.sensitive = false
161
+ end
162
+
163
+ if submenu = create_menu(depth - 1, true)
164
+ menuitem.submenu = submenu
165
+ end
166
+ end
167
+
168
+ menu.show
169
+ return menu
170
+ end
171
+ end
172
+ end
@@ -0,0 +1,156 @@
1
+ # Copyright (c) 2003-2005 Ruby-GNOME2 Project Team
2
+ # This program is licenced under the same licence as Ruby-GNOME2.
3
+ #
4
+ # $Id: panes.rb,v 1.5 2005/02/12 23:06:07 kzys Exp $
5
+ =begin
6
+ = Paned Widgets
7
+
8
+ The Gtk::HPaned and Gtk::VPaned Widgets divide their content
9
+ area into two panes with a divider in between that the
10
+ user can adjust. A separate child is placed into each
11
+ pane.
12
+
13
+ There are a number of options that can be set for each pane.
14
+ This test contains both a horizontal (HPaned) and a vertical
15
+ (VPaned) widget, and allows you to adjust the options for
16
+ each side of each widget.
17
+ =end
18
+ require 'common'
19
+
20
+ module Demo
21
+ class Panes < BasicWindow
22
+ def initialize
23
+ super('Panes')
24
+ self.border_width = 0
25
+
26
+ vbox = Gtk::VBox.new(false, 0)
27
+ add(vbox)
28
+
29
+ vpaned = Gtk::VPaned.new
30
+ vbox.pack_start(vpaned, true, true, 0)
31
+ vpaned.border_width = 5
32
+
33
+ hpaned = Gtk::HPaned.new
34
+ vpaned.add1(hpaned)
35
+
36
+ frame = Gtk::Frame.new
37
+ frame.shadow_type = Gtk::SHADOW_IN
38
+ frame.set_size_request(60, 60)
39
+ hpaned.add1(frame)
40
+
41
+ button = Gtk::Button.new('_Hi there', true)
42
+ frame.add(button)
43
+
44
+ frame = Gtk::Frame.new
45
+ frame.shadow_type = Gtk::SHADOW_IN
46
+ frame.set_size_request(80, 60)
47
+ hpaned.add2(frame)
48
+
49
+ frame = Gtk::Frame.new
50
+ frame.shadow_type = Gtk::SHADOW_IN
51
+ frame.set_size_request(60, 80)
52
+ vpaned.add2(frame)
53
+
54
+ # Now create toggle buttons to control sizing
55
+
56
+ vbox.pack_start(create_pane_options(hpaned,
57
+ 'Horizontal', 'Left', 'Right'),
58
+ false, false, 0)
59
+
60
+ vbox.pack_start(create_pane_options(vpaned,
61
+ 'Vertical', 'Top', 'Bottom'),
62
+ false, false, 0)
63
+ end
64
+
65
+ def create_pane_options(paned, frame_label, label1, label2)
66
+ frame = Gtk::Frame.new(frame_label)
67
+ frame.border_width = 4
68
+
69
+ table = Gtk::Table.new(3, 2, true)
70
+ frame.add(table)
71
+
72
+ label = Gtk::Label.new(label1)
73
+ table.attach_defaults(label, 0, 1, 0, 1)
74
+
75
+ check_button = Gtk::CheckButton.new('_Resize', true)
76
+ table.attach_defaults(check_button, 0, 1, 1, 2)
77
+ check_button.signal_connect('toggled') do
78
+ toggle_resize(paned.child1)
79
+ end
80
+
81
+ check_button = Gtk::CheckButton.new('_Shrink', true)
82
+ table.attach_defaults(check_button, 0, 1, 2, 3)
83
+ check_button.active = true
84
+ check_button.signal_connect('toggled') do
85
+ toggle_shrink(paned.child1)
86
+ end
87
+
88
+ label = Gtk::Label.new(label2)
89
+ table.attach_defaults(label, 1, 2, 0, 1)
90
+
91
+ check_button = Gtk::CheckButton.new('_Resize')
92
+ table.attach_defaults(check_button, 1, 2, 1, 2)
93
+ check_button.active = true
94
+ check_button.signal_connect('toggled') do
95
+ toggle_resize(paned.child2)
96
+ end
97
+
98
+ check_button = Gtk::CheckButton.new('_Shrink')
99
+ table.attach_defaults(check_button, 1, 2, 2, 3)
100
+ check_button.active = true
101
+ check_button.signal_connect('toggled') do
102
+ toggle_shrink(paned.child2)
103
+ end
104
+
105
+ return frame
106
+ end
107
+
108
+ def toggle_resize(child)
109
+ paned = child.parent
110
+ is_child1 = (child == paned.child1)
111
+
112
+ resize = if is_child1
113
+ paned.child1_resize?
114
+ else
115
+ paned.child2_resize?
116
+ end
117
+
118
+ shrink = if is_child1
119
+ paned.child1_shrink?
120
+ else
121
+ paned.child2_shrink?
122
+ end
123
+
124
+ child.parent.remove(child)
125
+ if is_child1
126
+ paned.pack1(child, !resize, shrink)
127
+ else
128
+ paned.pack2(child, !resize, shrink)
129
+ end
130
+ end
131
+
132
+ def toggle_shrink(child)
133
+ paned = child.parent
134
+ is_child1 = (child == paned.child1)
135
+
136
+ resize = if is_child1
137
+ paned.child1_resize?
138
+ else
139
+ paned.child2_resize?
140
+ end
141
+
142
+ shrink = if is_child1
143
+ paned.child1_shrink?
144
+ else
145
+ paned.child2_shrink?
146
+ end
147
+
148
+ child.parent.remove(child)
149
+ if is_child1
150
+ paned.pack1(child, resize, !shrink)
151
+ else
152
+ paned.pack2(child, resize, !shrink)
153
+ end
154
+ end
155
+ end
156
+ end
@@ -0,0 +1,176 @@
1
+ # Copyright (c) 2003-2005 Ruby-GNOME2 Project Team
2
+ # This program is licenced under the same licence as Ruby-GNOME2.
3
+ #
4
+ # $Id: pixbufs.rb,v 1.5 2005/02/12 23:02:43 kzys Exp $
5
+ =begin
6
+ = Pixbufs
7
+
8
+ A Gdk::Pixbuf represents an image, normally in RGB or RGBA format.
9
+ Pixbufs are normally used to load files from disk and perform
10
+ image scaling.
11
+
12
+ This demo is not all that educational, but looks cool. It was written
13
+ by Extreme Pixbuf Hacker Federico Mena Quintero. It also shows
14
+ off how to use Gtk::DrawingArea to do a simple animation.
15
+
16
+ Look at the Image demo for additional pixbuf usage examples.
17
+ =end
18
+
19
+ require 'common'
20
+
21
+ module Demo
22
+ class Pixbufs < BasicWindow
23
+ FRAME_DELAY = 50
24
+
25
+ BACKGROUND_NAME = 'background.jpg'
26
+
27
+ IMAGE_NAMES = [
28
+ 'apple-red.png',
29
+ 'gnome-applets.png',
30
+ 'gnome-calendar.png',
31
+ 'gnome-foot.png',
32
+ 'gnome-gmush.png',
33
+ 'gnome-gimp.png',
34
+ 'gnome-gsame.png',
35
+ 'gnu-keys.png',
36
+ 'ruby-gnome2-logo.png'
37
+ ]
38
+
39
+ CYCLE_LEN = 60
40
+ def initialize
41
+ super('Pixbufs')
42
+ set_resizable(false)
43
+
44
+ @background = nil
45
+ @frame = nil
46
+ @frame_num = 0
47
+ @images = []
48
+
49
+ begin
50
+ load_pixbufs
51
+
52
+ set_size_request(@background.width, @background.height)
53
+
54
+ @frame = Gdk::Pixbuf.new(Gdk::Pixbuf::COLORSPACE_RGB,
55
+ false, 8,
56
+ @background.width, @background.height)
57
+
58
+ @da = Gtk::DrawingArea.new
59
+
60
+ @da.signal_connect('expose_event') do |w, e|
61
+ expose_cb(w, e)
62
+ end
63
+
64
+ add(@da)
65
+
66
+ timeout_id = Gtk.timeout_add(FRAME_DELAY) do
67
+ timeout
68
+ end
69
+ signal_connect('destroy') do
70
+ Gtk.timeout_remove(timeout_id)
71
+ end
72
+ rescue
73
+ dialog = Gtk::MessageDialog.new(self,
74
+ Gtk::Dialog::DESTROY_WITH_PARENT,
75
+ Gtk::MessageDialog::ERROR,
76
+ Gtk::MessageDialog::BUTTONS_CLOSE,
77
+ "Failed to load an image: #{$!.message}")
78
+
79
+ dialog.signal_connect('response') do
80
+ dialog.destroy
81
+ end
82
+
83
+ dialog.show
84
+ end
85
+ end
86
+
87
+ def load_pixbufs
88
+ # Loads the images for the demo
89
+
90
+ if @background
91
+ return # already loaded earlier
92
+ end
93
+
94
+ # demo_find_file() looks in the the current directory first,
95
+ # so you can run gtk-demo without installing GTK, then looks
96
+ # in the location where the file is installed.
97
+ #
98
+ filename = Demo.find_file(BACKGROUND_NAME)
99
+ @background = Gdk::Pixbuf.new(filename)
100
+
101
+ IMAGE_NAMES.each_with_index do |basename, i|
102
+ filename = Demo.find_file(basename)
103
+
104
+ @images[i] = Gdk::Pixbuf.new(filename)
105
+ end
106
+ end
107
+
108
+ def expose_cb(widget, event)
109
+ rowstride = @frame.rowstride
110
+
111
+ pixels = @frame.pixels
112
+ pixels[0, rowstride * event.area.y + event.area.x * 3] = ''
113
+
114
+ Gdk::RGB.draw_rgb_image(widget.window,
115
+ widget.style.black_gc,
116
+ event.area.x, event.area.y,
117
+ event.area.width, event.area.height,
118
+ Gdk::RGB::Dither::NORMAL,
119
+ pixels, rowstride,
120
+ event.area.x, event.area.y)
121
+ true
122
+ end
123
+
124
+ # Timeout handler to regenerate the frame
125
+ def timeout
126
+ @background.copy_area(0, 0, @background.width, @background.height,
127
+ @frame, 0, 0)
128
+
129
+ f = Float(@frame_num % CYCLE_LEN) / CYCLE_LEN;
130
+
131
+ xmid = @background.width / 2.0
132
+ ymid = @background.height / 2.0
133
+
134
+ radius = [xmid, ymid].min / 2.0
135
+
136
+ @images.each_with_index do |image, i|
137
+ ang = 2.0 * Math::PI * Float(i) / IMAGE_NAMES.length - f * 2.0 * Math::PI
138
+
139
+ r = radius + (radius / 3.0) * Math.sin(f * 2.0 * Math::PI)
140
+
141
+ xpos = (xmid + r * Math.cos(ang) - image.width / 2.0 + 0.5).floor
142
+ ypos = (ymid + r * Math.sin(ang) - image.height / 2.0 + 0.5).floor
143
+
144
+ k = if (i & 1) == 1
145
+ Math.sin(f * 2.0 * Math::PI)
146
+ else
147
+ Math.cos(f * 2.0 * Math::PI)
148
+ end
149
+ k = [0.25, 2.0 * k * k].max
150
+
151
+ r1 = Gdk::Rectangle.new(xpos, ypos, image.width * k, image.height * k)
152
+ r2 = Gdk::Rectangle.new(0, 0, @background.width, @background.height)
153
+
154
+ dest = r1.intersect(r2)
155
+ if dest
156
+ @frame.composite!(image, dest.x, dest.y, dest.width, dest.height,
157
+ xpos, ypos, k, k, Gdk::Pixbuf::INTERP_NEAREST,
158
+ if (i & 1) == 1
159
+ [
160
+ 127,
161
+ (255 * Math.sin(f * 2.0 * Math::PI)).abs
162
+ ].max
163
+ else
164
+ [
165
+ 127,
166
+ (255 * Math.cos(f * 2.0 * Math::PI)).abs
167
+ ].max
168
+ end)
169
+ end
170
+ end
171
+ @da.queue_draw
172
+ @frame_num += 1
173
+ true
174
+ end
175
+ end
176
+ end