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,107 @@
1
+ #!/usr/bin/env ruby
2
+ =begin
3
+ bindings.rb - Ruby/GTK sample script.
4
+
5
+ Copyright (c) 2002-2006 Ruby-GNOME2 Project Team
6
+ This program is licenced under the same licence as Ruby-GNOME2.
7
+
8
+ $Id: bindings.rb,v 1.7 2006/06/17 13:18:12 mutoh Exp $
9
+ =end
10
+
11
+ =begin
12
+ Usage:
13
+ bindings.rb <filename>
14
+
15
+ Following key bindings are effective in the TextView area.
16
+
17
+ <space> : scroll down by one page
18
+ <backspace> : scroll up by one page
19
+ j : move cursor donw by one line
20
+ k : move cursor up by one line
21
+
22
+ clicking buttons cause following effect
23
+
24
+ "space" : same as pressing <space> in text view area.
25
+ "back_space" : same as pressing <backspace> in text view area.
26
+ "cancel j/k" : disable 'j' and 'k' binding
27
+ =end
28
+ require 'gtk2'
29
+
30
+ class Pager < Gtk::TextView
31
+ type_register
32
+
33
+ # widget's key binding can be defined like this
34
+ binding_set.add_signal(Gdk::Keyval::GDK_space, 0,
35
+ "move_cursor",
36
+ Gtk::MOVEMENT_PAGES, 1, false)
37
+ binding_set.add_signal(Gdk::Keyval::GDK_BackSpace, 0,
38
+ "move_cursor",
39
+ Gtk::MOVEMENT_PAGES, -1, false)
40
+
41
+ def initialize(path)
42
+ @path = path
43
+ super()
44
+ @buffer = self.buffer
45
+ load
46
+ set_editable(false)
47
+ set_size_request(400, 400)
48
+ end
49
+
50
+ def load
51
+ open(@path).read.each do |line|
52
+ @buffer.insert_at_cursor(line)
53
+ end
54
+ @buffer.place_cursor(@buffer.start_iter)
55
+ end
56
+ end
57
+
58
+ path = ARGV[0] || __FILE__
59
+
60
+ window = Gtk::Window.new
61
+ window.name = "pager_window"
62
+ sw = Gtk::ScrolledWindow.new
63
+ vbox = Gtk::VBox.new
64
+ hbox = Gtk::HBox.new
65
+ pager = Pager.new(path)
66
+
67
+ hbox.add(button1 = Gtk::Button.new("space"))
68
+ hbox.add(button2 = Gtk::Button.new("back_space"))
69
+ hbox.add(button3 = Gtk::Button.new("cancel j/k"))
70
+
71
+ button1.signal_connect("clicked") do
72
+ Pager.binding_set.activate(Gdk::Keyval::GDK_space, 0, pager)
73
+ end
74
+ button2.signal_connect("clicked") do
75
+ pager.bindings_activate(Gdk::Keyval::GDK_BackSpace, 0)
76
+ end
77
+
78
+ # Key bindings can be attached to any widget by
79
+ # Gtk::BindingSet#add_path
80
+ # see RC Files section of GTK+ documentation for more detail.
81
+ bset = Gtk::BindingSet.new("j_and_k")
82
+ bset.add_signal(Gdk::Keyval::GDK_j, 0,
83
+ "move_cursor",
84
+ Gtk::MOVEMENT_DISPLAY_LINES, 1, false)
85
+ bset.add_signal(Gdk::Keyval::GDK_k, 0,
86
+ "move_cursor",
87
+ Gtk::MOVEMENT_DISPLAY_LINES, -1, false)
88
+ bset.add_path(Gtk::PathType::WIDGET, "pager_window.*.Pager",
89
+ Gtk::PathPriorityType::APPLICATION)
90
+
91
+ button3.signal_connect("clicked") do
92
+ bset.entry_clear(Gdk::Keyval::GDK_j, 0)
93
+ bset.entry_clear(Gdk::Keyval::GDK_k, 0)
94
+ end
95
+
96
+ sw.add(pager)
97
+ vbox.add(hbox).add(sw)
98
+ window.add(vbox)
99
+ window.show_all
100
+
101
+ pager.grab_focus
102
+
103
+ window.signal_connect("destroy") { Gtk.main_quit }
104
+
105
+ Gtk.main
106
+
107
+
@@ -0,0 +1,69 @@
1
+ #!/usr/bin/env ruby
2
+ =begin
3
+ button.rb - Ruby/GTK sample script.
4
+
5
+ Copyright (c) 2002-2006 Ruby-GNOME2 Project Team
6
+ This program is licenced under the same licence as Ruby-GNOME2.
7
+
8
+ $Id: button.rb,v 1.10 2006/06/17 13:18:12 mutoh Exp $
9
+ =end
10
+
11
+ require 'gtk2'
12
+
13
+ window = Gtk::Window.new("buttons")
14
+ window.border_width = 0
15
+
16
+ box1 = Gtk::VBox.new(false, 0)
17
+ window.add(box1)
18
+
19
+ table = Gtk::Table.new(3, 3, false)
20
+ table.set_row_spacings(5)
21
+ table.set_column_spacings(5)
22
+ table.set_border_width(10)
23
+ box1.pack_start(table, true, true, 0)
24
+
25
+ button = []
26
+ 0.upto(8) do |i|
27
+ button.push Gtk::Button.new("button"+(i+1).to_s)
28
+ end
29
+ 0.upto(8) do |i|
30
+ button[i].signal_connect("clicked") do |w|
31
+ p [i]
32
+ j = (i + 1) % 9
33
+ if button[j].visible?
34
+ button[j].hide
35
+ else
36
+ button[j].show
37
+ end
38
+ end
39
+ button[i].show
40
+ end
41
+ table.attach(button[0], 0, 1, 0, 1, nil, nil, 0, 0)
42
+ table.attach(button[1], 1, 2, 1, 2, nil, nil, 0, 0)
43
+ table.attach(button[2], 2, 3, 2, 3, nil, nil, 0, 0)
44
+ table.attach(button[3], 0, 1, 2, 3, nil, nil, 0, 0)
45
+ table.attach(button[4], 2, 3, 0, 1, nil, nil, 0, 0)
46
+ table.attach(button[5], 1, 2, 2, 3, nil, nil, 0, 0)
47
+ table.attach(button[6], 1, 2, 0, 1, nil, nil, 0, 0)
48
+ table.attach(button[7], 2, 3, 1, 2, nil, nil, 0, 0)
49
+ table.attach(button[8], 0, 1, 1, 2, nil, nil, 0, 0)
50
+
51
+ separator = Gtk::HSeparator.new
52
+ box1.pack_start(separator, false, true, 0)
53
+
54
+ box2 = Gtk::VBox.new(false, 10)
55
+ box2.border_width = 10
56
+ box1.pack_start(box2, false, true, 0)
57
+
58
+ close = Gtk::Button.new("close")
59
+ close.signal_connect("clicked") do
60
+ Gtk.main_quit
61
+ end
62
+
63
+ box2.pack_start(close, true, true, 0)
64
+ close.can_default = true
65
+ close.grab_default
66
+
67
+ window.show_all
68
+
69
+ Gtk.main
@@ -0,0 +1,28 @@
1
+ #!/usr/local/bin/ruby
2
+ =begin
3
+ button2.rb - Ruby/GTK2 sample script.
4
+
5
+ Copyright (c) 2002-2006 Ruby-GNOME2 Project Team
6
+ This program is licenced under the same licence as Ruby-GNOME2.
7
+
8
+ $Id: button2.rb,v 1.4 2006/06/17 13:18:12 mutoh Exp $
9
+ =end
10
+
11
+ require 'gtk2'
12
+
13
+ window = Gtk::Window.new("Gtk::Button sample")
14
+
15
+ button1 = Gtk::Button.new("_HELLO")
16
+ button2 = Gtk::Button.new("_HELLO", false)
17
+ button3 = Gtk::Button.new(Gtk::Stock::QUIT)
18
+
19
+ button3.signal_connect("clicked"){ Gtk.main_quit }
20
+
21
+ box = Gtk::VBox.new
22
+ box.add(button1)
23
+ box.add(button2)
24
+ box.add(button3)
25
+
26
+ window.add(box).set_default_size(100,100).show_all
27
+
28
+ Gtk.main
@@ -0,0 +1,93 @@
1
+ #!/usr/bin/env ruby
2
+ =begin
3
+ buttonbox.rb - Ruby/GTK2 sample script.
4
+
5
+ Copyright (c) 2002-2006 Ruby-GNOME2 Project Team
6
+ This program is licenced under the same licence as Ruby-GNOME2.
7
+
8
+ $Id: buttonbox.rb,v 1.9 2006/06/17 13:18:12 mutoh Exp $
9
+ =end
10
+
11
+ require 'gtk2'
12
+
13
+ def create_bbox_window(horizontal, title, pos, spacing, layout)
14
+ window = Gtk::Window.new(title)
15
+ window.signal_connect("delete_event") do
16
+ window.destroy
17
+ end
18
+
19
+ box1 = Gtk::VBox.new(false, 0)
20
+ window.add(box1)
21
+
22
+ if horizontal
23
+ window.set_default_size(550, 60)
24
+ window.move(150, pos)
25
+ bbox = Gtk::HButtonBox.new
26
+ else
27
+ window.set_default_size(150, 400)
28
+ window.move(pos, 200)
29
+ bbox = Gtk::VButtonBox.new
30
+ end
31
+
32
+ bbox.layout_style = layout
33
+ bbox.spacing = spacing
34
+ box1.border_width = 25
35
+ box1.pack_start(bbox, true, true, 0)
36
+
37
+ button = Gtk::Button.new("OK")
38
+ bbox.add(button)
39
+ button.signal_connect("clicked") do
40
+ window.destroy
41
+ end
42
+
43
+ button = Gtk::Button.new("Cancel")
44
+ bbox.add(button)
45
+ button.signal_connect("clicked") do
46
+ window.destroy
47
+ end
48
+
49
+ button = Gtk::Button.new("Help")
50
+ bbox.add(button)
51
+ window.show_all
52
+ end
53
+
54
+ def test_hbbox
55
+ create_bbox_window(true, "Spread", 50, 40, Gtk::ButtonBox::SPREAD)
56
+ create_bbox_window(true, "Edge", 250, 40, Gtk::ButtonBox::EDGE)
57
+ create_bbox_window(true, "Start", 450, 40, Gtk::ButtonBox::START)
58
+ create_bbox_window(true, "End", 650, 15, Gtk::ButtonBox::END)
59
+ end
60
+
61
+ def test_vbbox
62
+ create_bbox_window(false, "Spread", 50, 40, Gtk::ButtonBox::SPREAD)
63
+ create_bbox_window(false, "Edge", 250, 40, Gtk::ButtonBox::EDGE)
64
+ create_bbox_window(false, "Start", 450, 40, Gtk::ButtonBox::START)
65
+ create_bbox_window(false, "End", 650, 15, Gtk::ButtonBox::END)
66
+ end
67
+
68
+ window = Gtk::Window.new("button box")
69
+ window.signal_connect("delete_event") do
70
+ Gtk.main_quit
71
+ end
72
+ window.border_width = 20
73
+
74
+ bbox = Gtk::HButtonBox.new
75
+ window.add(bbox)
76
+
77
+ button = Gtk::Button.new("Horizontal")
78
+
79
+ button.signal_connect("clicked") do
80
+ test_hbbox
81
+ end
82
+
83
+ bbox.add(button)
84
+
85
+ button = Gtk::Button.new("Vertical")
86
+ button.signal_connect("clicked") do
87
+ test_vbbox
88
+ end
89
+ bbox.add(button)
90
+
91
+ window.show_all
92
+
93
+ Gtk.main
@@ -0,0 +1,215 @@
1
+ #!/usr/bin/env ruby
2
+ =begin
3
+ cairo-pong.rb - Ruby/GTK with cairo sample script.
4
+
5
+ Original: gtkcairo sample by Evan Martins.
6
+
7
+ Copyright (c) 2005,2006 Ruby-GNOME2 Project Team
8
+ This program is licenced under the same licence as Ruby-GNOME2.
9
+
10
+ $Id: cairo-pong.rb,v 1.3 2006/06/17 13:18:12 mutoh Exp $
11
+ =end
12
+
13
+ require "gtk2"
14
+
15
+ unless Gdk::Drawable.instance_methods.include?("create_cairo_context")
16
+ raise "GTK+ 2.8.0 or later and cairo support are required."
17
+ end
18
+
19
+ module Pong
20
+ class CenteredItem
21
+ attr_accessor :x, :y
22
+ attr_reader :width, :height
23
+
24
+ def initialize(x, y, width, height)
25
+ @x = x
26
+ @y = y
27
+ @width = width
28
+ @height = height
29
+ end
30
+
31
+ def min_x
32
+ @x - @width / 2
33
+ end
34
+
35
+ def max_x
36
+ @x + @width / 2
37
+ end
38
+
39
+ def min_y
40
+ @y - @height / 2
41
+ end
42
+
43
+ def max_y
44
+ @y + @height / 2
45
+ end
46
+ end
47
+
48
+ class CenteredCircle < CenteredItem
49
+ def draw(cr)
50
+ cr.translate(min_x, min_y)
51
+ cr.scale(@width, @height)
52
+ cr.arc(0.5, 0.5, 0.5, 0, 2 * Math::PI)
53
+ cr.fill
54
+ end
55
+ end
56
+
57
+ class CenteredRect < CenteredItem
58
+ def draw(cr)
59
+ cr.translate(min_x, min_y)
60
+ cr.scale(@width, @height)
61
+ cr.rectangle(0, 0, 1, 1)
62
+ cr.fill
63
+ end
64
+ end
65
+
66
+ class Ball < CenteredCircle
67
+ attr_accessor :dx, :dy
68
+ def initialize(dx=0.02, dy=0.02)
69
+ super(0.8, 0.5, 0.04, 0.04)
70
+ @dx = dx
71
+ @dy = dy
72
+ end
73
+
74
+ def update
75
+ @x += @dx
76
+ @y += @dy
77
+
78
+ # ball bouncing
79
+ if max_y > 1
80
+ @y = 1 - (max_y - 1)
81
+ @dy *= -1
82
+ elsif min_y < 0
83
+ @y -= min_y
84
+ @dy *= -1
85
+ end
86
+
87
+ if max_x > 1
88
+ @x = 1 - (max_x - 1)
89
+ @dx *= -1
90
+ elsif min_x < 0
91
+ @x -= min_x
92
+ @dx *= -1
93
+ end
94
+ end
95
+ end
96
+
97
+ class Paddle < CenteredRect
98
+ def initialize(field, x, y)
99
+ super(x, y, 0.05, 0.3)
100
+ @field = field
101
+ end
102
+
103
+ def update(ball)
104
+ # is the ball coming towards us?
105
+ if (ball.x < @x and ball.dx > 0) or
106
+ (ball.x > @x and ball.dx < 0)
107
+ # move to intercept it
108
+ @y = ball.y
109
+ end
110
+ end
111
+
112
+ def ball_hit?(ball)
113
+ ball.y > min_y and ball.y < max_y
114
+ end
115
+
116
+ def update_ball(ball)
117
+ if ball_hit?(ball)
118
+ if ball.min_x < @x and ball.max_x > min_x # hit our left side
119
+ ball.x -= (ball.max_x - min_x)
120
+ ball.dx = -ball.dx
121
+ elsif ball.max_x > @x and ball.min_x < max_x # hit our right side
122
+ ball.x += (max_x - ball.min_x)
123
+ ball.dx = -ball.dx
124
+ end
125
+ end
126
+ end
127
+ end
128
+
129
+ class Field
130
+ attr_accessor :width, :height
131
+
132
+ def initialize(margin=0.05)
133
+ @margin = margin
134
+
135
+ @left_paddle = Paddle.new(self, @margin, 0.5)
136
+ @right_paddle = Paddle.new(self, 1 - @margin, 0.7)
137
+ @paddles = [@left_paddle, @right_paddle]
138
+ @ball = Ball.new
139
+ end
140
+
141
+ def update
142
+ @paddles.each do |paddle|
143
+ paddle.update(@ball)
144
+ end
145
+ @ball.update
146
+ @paddles.each do |paddle|
147
+ paddle.update_ball(@ball)
148
+ end
149
+ end
150
+
151
+ def draw(cr)
152
+ cr.set_source_rgba(1, 1, 1)
153
+ cr.rectangle(0, 0, 1, 1)
154
+ cr.fill
155
+
156
+ cr.save do
157
+ cr.set_source_rgba(0.8, 0.8, 0.8, 0.8)
158
+ cr.set_line_join(Cairo::LINE_JOIN_ROUND)
159
+ @paddles.each do |paddle|
160
+ cr.save {paddle.draw(cr)}
161
+ end
162
+ end
163
+
164
+ cr.set_source_rgba(0, 0, 0)
165
+ cr.save {@ball.draw(cr)}
166
+ end
167
+ end
168
+
169
+ class Window < Gtk::Window
170
+ def initialize(speed=30)
171
+ super()
172
+ @speed = speed
173
+
174
+ self.title = 'Pong Demonstration'
175
+ signal_connect('destroy') { Gtk.main_quit }
176
+ signal_connect("key_press_event") do |widget, event|
177
+ if event.state.control_mask? and event.keyval == Gdk::Keyval::GDK_q
178
+ destroy
179
+ true
180
+ else
181
+ false
182
+ end
183
+ end
184
+
185
+ set_default_size(260, 200)
186
+
187
+ @field = Field.new
188
+
189
+ @drawing_area = Gtk::DrawingArea.new
190
+ set_expose_event
191
+
192
+ vb = Gtk::VBox.new(false, 5)
193
+ vb.border_width = 10
194
+ vb.pack_start(@drawing_area, true, true, 0)
195
+ vb.show_all
196
+ add(vb)
197
+
198
+ Gtk.timeout_add(@speed) do
199
+ @field.update
200
+ @drawing_area.queue_draw unless @drawing_area.destroyed?
201
+ end
202
+ end
203
+
204
+ def set_expose_event
205
+ @drawing_area.signal_connect('expose_event') do |widget, event|
206
+ cr = widget.window.create_cairo_context
207
+ cr.scale(*widget.window.size)
208
+ @field.draw(cr)
209
+ end
210
+ end
211
+ end
212
+ end
213
+
214
+ Pong::Window.new.show_all
215
+ Gtk.main