tk 0.1.0

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 (1060) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.travis.yml +6 -0
  4. data/BSDL +22 -0
  5. data/ChangeLog.tkextlib +949 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +56 -0
  8. data/MANUAL_tcltklib.eng +467 -0
  9. data/MANUAL_tcltklib.ja +578 -0
  10. data/README.1st +19 -0
  11. data/README.ActiveTcl +62 -0
  12. data/README.fork +34 -0
  13. data/README.macosx-aqua +67 -0
  14. data/README.md +33 -0
  15. data/README.tcltklib +152 -0
  16. data/Rakefile +16 -0
  17. data/bin/console +14 -0
  18. data/bin/setup +8 -0
  19. data/ext/tk/config_list.in +41 -0
  20. data/ext/tk/extconf.rb +2098 -0
  21. data/ext/tk/old-extconf.rb +441 -0
  22. data/ext/tk/stubs.c +592 -0
  23. data/ext/tk/stubs.h +33 -0
  24. data/ext/tk/tcltklib.c +11066 -0
  25. data/ext/tk/tkutil/extconf.rb +14 -0
  26. data/ext/tk/tkutil/tkutil.c +1900 -0
  27. data/lib/README +30 -0
  28. data/lib/multi-tk.rb +3743 -0
  29. data/lib/remote-tk.rb +527 -0
  30. data/lib/tcltk.rb +369 -0
  31. data/lib/tk.rb +5758 -0
  32. data/lib/tk/after.rb +7 -0
  33. data/lib/tk/autoload.rb +763 -0
  34. data/lib/tk/bgerror.rb +30 -0
  35. data/lib/tk/bindtag.rb +139 -0
  36. data/lib/tk/busy.rb +119 -0
  37. data/lib/tk/button.rb +32 -0
  38. data/lib/tk/canvas.rb +847 -0
  39. data/lib/tk/canvastag.rb +460 -0
  40. data/lib/tk/checkbutton.rb +33 -0
  41. data/lib/tk/clipboard.rb +76 -0
  42. data/lib/tk/clock.rb +72 -0
  43. data/lib/tk/composite.rb +485 -0
  44. data/lib/tk/console.rb +53 -0
  45. data/lib/tk/dialog.rb +327 -0
  46. data/lib/tk/encodedstr.rb +188 -0
  47. data/lib/tk/entry.rb +121 -0
  48. data/lib/tk/event.rb +563 -0
  49. data/lib/tk/font.rb +2352 -0
  50. data/lib/tk/fontchooser.rb +181 -0
  51. data/lib/tk/frame.rb +133 -0
  52. data/lib/tk/grid.rb +280 -0
  53. data/lib/tk/image.rb +396 -0
  54. data/lib/tk/itemconfig.rb +1222 -0
  55. data/lib/tk/itemfont.rb +328 -0
  56. data/lib/tk/kinput.rb +72 -0
  57. data/lib/tk/label.rb +23 -0
  58. data/lib/tk/labelframe.rb +32 -0
  59. data/lib/tk/listbox.rb +285 -0
  60. data/lib/tk/macpkg.rb +81 -0
  61. data/lib/tk/menu.rb +719 -0
  62. data/lib/tk/menubar.rb +138 -0
  63. data/lib/tk/menuspec.rb +457 -0
  64. data/lib/tk/message.rb +25 -0
  65. data/lib/tk/mngfocus.rb +34 -0
  66. data/lib/tk/msgcat.rb +300 -0
  67. data/lib/tk/namespace.rb +547 -0
  68. data/lib/tk/optiondb.rb +372 -0
  69. data/lib/tk/optionobj.rb +213 -0
  70. data/lib/tk/pack.rb +108 -0
  71. data/lib/tk/package.rb +144 -0
  72. data/lib/tk/palette.rb +56 -0
  73. data/lib/tk/panedwindow.rb +261 -0
  74. data/lib/tk/place.rb +129 -0
  75. data/lib/tk/radiobutton.rb +74 -0
  76. data/lib/tk/root.rb +96 -0
  77. data/lib/tk/scale.rb +113 -0
  78. data/lib/tk/scrollable.rb +83 -0
  79. data/lib/tk/scrollbar.rb +184 -0
  80. data/lib/tk/scrollbox.rb +40 -0
  81. data/lib/tk/selection.rb +87 -0
  82. data/lib/tk/spinbox.rb +145 -0
  83. data/lib/tk/tagfont.rb +44 -0
  84. data/lib/tk/text.rb +1605 -0
  85. data/lib/tk/textimage.rb +89 -0
  86. data/lib/tk/textmark.rb +205 -0
  87. data/lib/tk/texttag.rb +322 -0
  88. data/lib/tk/textwindow.rb +155 -0
  89. data/lib/tk/timer.rb +666 -0
  90. data/lib/tk/tk_mac.rb +159 -0
  91. data/lib/tk/toplevel.rb +265 -0
  92. data/lib/tk/ttk_selector.rb +99 -0
  93. data/lib/tk/txtwin_abst.rb +40 -0
  94. data/lib/tk/validation.rb +398 -0
  95. data/lib/tk/variable.rb +1797 -0
  96. data/lib/tk/virtevent.rb +140 -0
  97. data/lib/tk/winfo.rb +393 -0
  98. data/lib/tk/winpkg.rb +157 -0
  99. data/lib/tk/wm.rb +553 -0
  100. data/lib/tk/xim.rb +123 -0
  101. data/lib/tkafter.rb +5 -0
  102. data/lib/tkbgerror.rb +5 -0
  103. data/lib/tkcanvas.rb +5 -0
  104. data/lib/tkclass.rb +48 -0
  105. data/lib/tkconsole.rb +5 -0
  106. data/lib/tkdialog.rb +5 -0
  107. data/lib/tkentry.rb +5 -0
  108. data/lib/tkextlib/ICONS.rb +14 -0
  109. data/lib/tkextlib/ICONS/icons.rb +130 -0
  110. data/lib/tkextlib/ICONS/setup.rb +9 -0
  111. data/lib/tkextlib/SUPPORT_STATUS +193 -0
  112. data/lib/tkextlib/blt.rb +190 -0
  113. data/lib/tkextlib/blt/barchart.rb +80 -0
  114. data/lib/tkextlib/blt/bitmap.rb +113 -0
  115. data/lib/tkextlib/blt/busy.rb +84 -0
  116. data/lib/tkextlib/blt/component.rb +2219 -0
  117. data/lib/tkextlib/blt/container.rb +29 -0
  118. data/lib/tkextlib/blt/cutbuffer.rb +24 -0
  119. data/lib/tkextlib/blt/dragdrop.rb +270 -0
  120. data/lib/tkextlib/blt/eps.rb +33 -0
  121. data/lib/tkextlib/blt/graph.rb +68 -0
  122. data/lib/tkextlib/blt/htext.rb +113 -0
  123. data/lib/tkextlib/blt/setup.rb +9 -0
  124. data/lib/tkextlib/blt/spline.rb +24 -0
  125. data/lib/tkextlib/blt/stripchart.rb +75 -0
  126. data/lib/tkextlib/blt/table.rb +413 -0
  127. data/lib/tkextlib/blt/tabnotebook.rb +111 -0
  128. data/lib/tkextlib/blt/tabset.rb +505 -0
  129. data/lib/tkextlib/blt/ted.rb +69 -0
  130. data/lib/tkextlib/blt/tile.rb +26 -0
  131. data/lib/tkextlib/blt/tile/button.rb +17 -0
  132. data/lib/tkextlib/blt/tile/checkbutton.rb +18 -0
  133. data/lib/tkextlib/blt/tile/frame.rb +17 -0
  134. data/lib/tkextlib/blt/tile/label.rb +17 -0
  135. data/lib/tkextlib/blt/tile/radiobutton.rb +18 -0
  136. data/lib/tkextlib/blt/tile/scrollbar.rb +17 -0
  137. data/lib/tkextlib/blt/tile/toplevel.rb +17 -0
  138. data/lib/tkextlib/blt/tree.rb +1059 -0
  139. data/lib/tkextlib/blt/treeview.rb +1288 -0
  140. data/lib/tkextlib/blt/unix_dnd.rb +142 -0
  141. data/lib/tkextlib/blt/vector.rb +257 -0
  142. data/lib/tkextlib/blt/watch.rb +176 -0
  143. data/lib/tkextlib/blt/win_printer.rb +62 -0
  144. data/lib/tkextlib/blt/winop.rb +108 -0
  145. data/lib/tkextlib/bwidget.rb +154 -0
  146. data/lib/tkextlib/bwidget/arrowbutton.rb +22 -0
  147. data/lib/tkextlib/bwidget/bitmap.rb +22 -0
  148. data/lib/tkextlib/bwidget/button.rb +32 -0
  149. data/lib/tkextlib/bwidget/buttonbox.rb +91 -0
  150. data/lib/tkextlib/bwidget/combobox.rb +63 -0
  151. data/lib/tkextlib/bwidget/dialog.rb +195 -0
  152. data/lib/tkextlib/bwidget/dragsite.rb +32 -0
  153. data/lib/tkextlib/bwidget/dropsite.rb +40 -0
  154. data/lib/tkextlib/bwidget/dynamichelp.rb +64 -0
  155. data/lib/tkextlib/bwidget/entry.rb +44 -0
  156. data/lib/tkextlib/bwidget/label.rb +42 -0
  157. data/lib/tkextlib/bwidget/labelentry.rb +81 -0
  158. data/lib/tkextlib/bwidget/labelframe.rb +53 -0
  159. data/lib/tkextlib/bwidget/listbox.rb +362 -0
  160. data/lib/tkextlib/bwidget/mainframe.rb +133 -0
  161. data/lib/tkextlib/bwidget/messagedlg.rb +193 -0
  162. data/lib/tkextlib/bwidget/notebook.rb +167 -0
  163. data/lib/tkextlib/bwidget/pagesmanager.rb +74 -0
  164. data/lib/tkextlib/bwidget/panedwindow.rb +43 -0
  165. data/lib/tkextlib/bwidget/panelframe.rb +68 -0
  166. data/lib/tkextlib/bwidget/passwddlg.rb +45 -0
  167. data/lib/tkextlib/bwidget/progressbar.rb +21 -0
  168. data/lib/tkextlib/bwidget/progressdlg.rb +59 -0
  169. data/lib/tkextlib/bwidget/scrollableframe.rb +41 -0
  170. data/lib/tkextlib/bwidget/scrolledwindow.rb +49 -0
  171. data/lib/tkextlib/bwidget/scrollview.rb +26 -0
  172. data/lib/tkextlib/bwidget/selectcolor.rb +74 -0
  173. data/lib/tkextlib/bwidget/selectfont.rb +92 -0
  174. data/lib/tkextlib/bwidget/separator.rb +21 -0
  175. data/lib/tkextlib/bwidget/setup.rb +9 -0
  176. data/lib/tkextlib/bwidget/spinbox.rb +99 -0
  177. data/lib/tkextlib/bwidget/statusbar.rb +63 -0
  178. data/lib/tkextlib/bwidget/titleframe.rb +34 -0
  179. data/lib/tkextlib/bwidget/tree.rb +501 -0
  180. data/lib/tkextlib/bwidget/widget.rb +130 -0
  181. data/lib/tkextlib/itcl.rb +14 -0
  182. data/lib/tkextlib/itcl/incr_tcl.rb +179 -0
  183. data/lib/tkextlib/itcl/setup.rb +14 -0
  184. data/lib/tkextlib/itk.rb +14 -0
  185. data/lib/tkextlib/itk/incr_tk.rb +447 -0
  186. data/lib/tkextlib/itk/setup.rb +14 -0
  187. data/lib/tkextlib/iwidgets.rb +95 -0
  188. data/lib/tkextlib/iwidgets/buttonbox.rb +122 -0
  189. data/lib/tkextlib/iwidgets/calendar.rb +126 -0
  190. data/lib/tkextlib/iwidgets/canvasprintbox.rb +54 -0
  191. data/lib/tkextlib/iwidgets/canvasprintdialog.rb +39 -0
  192. data/lib/tkextlib/iwidgets/checkbox.rb +131 -0
  193. data/lib/tkextlib/iwidgets/combobox.rb +105 -0
  194. data/lib/tkextlib/iwidgets/dateentry.rb +21 -0
  195. data/lib/tkextlib/iwidgets/datefield.rb +59 -0
  196. data/lib/tkextlib/iwidgets/dialog.rb +21 -0
  197. data/lib/tkextlib/iwidgets/dialogshell.rb +122 -0
  198. data/lib/tkextlib/iwidgets/disjointlistbox.rb +51 -0
  199. data/lib/tkextlib/iwidgets/entryfield.rb +186 -0
  200. data/lib/tkextlib/iwidgets/extbutton.rb +41 -0
  201. data/lib/tkextlib/iwidgets/extfileselectionbox.rb +47 -0
  202. data/lib/tkextlib/iwidgets/extfileselectiondialog.rb +34 -0
  203. data/lib/tkextlib/iwidgets/feedback.rb +36 -0
  204. data/lib/tkextlib/iwidgets/fileselectionbox.rb +47 -0
  205. data/lib/tkextlib/iwidgets/fileselectiondialog.rb +34 -0
  206. data/lib/tkextlib/iwidgets/finddialog.rb +43 -0
  207. data/lib/tkextlib/iwidgets/hierarchy.rb +366 -0
  208. data/lib/tkextlib/iwidgets/hyperhelp.rb +51 -0
  209. data/lib/tkextlib/iwidgets/labeledframe.rb +40 -0
  210. data/lib/tkextlib/iwidgets/labeledwidget.rb +46 -0
  211. data/lib/tkextlib/iwidgets/mainwindow.rb +68 -0
  212. data/lib/tkextlib/iwidgets/menubar.rb +213 -0
  213. data/lib/tkextlib/iwidgets/messagebox.rb +94 -0
  214. data/lib/tkextlib/iwidgets/messagedialog.rb +21 -0
  215. data/lib/tkextlib/iwidgets/notebook.rb +176 -0
  216. data/lib/tkextlib/iwidgets/optionmenu.rb +93 -0
  217. data/lib/tkextlib/iwidgets/panedwindow.rb +135 -0
  218. data/lib/tkextlib/iwidgets/promptdialog.rb +132 -0
  219. data/lib/tkextlib/iwidgets/pushbutton.rb +36 -0
  220. data/lib/tkextlib/iwidgets/radiobox.rb +122 -0
  221. data/lib/tkextlib/iwidgets/scopedobject.rb +25 -0
  222. data/lib/tkextlib/iwidgets/scrolledcanvas.rb +354 -0
  223. data/lib/tkextlib/iwidgets/scrolledframe.rb +60 -0
  224. data/lib/tkextlib/iwidgets/scrolledhtml.rb +59 -0
  225. data/lib/tkextlib/iwidgets/scrolledlistbox.rb +208 -0
  226. data/lib/tkextlib/iwidgets/scrolledtext.rb +569 -0
  227. data/lib/tkextlib/iwidgets/scrolledwidget.rb +21 -0
  228. data/lib/tkextlib/iwidgets/selectionbox.rb +103 -0
  229. data/lib/tkextlib/iwidgets/selectiondialog.rb +93 -0
  230. data/lib/tkextlib/iwidgets/setup.rb +9 -0
  231. data/lib/tkextlib/iwidgets/shell.rb +39 -0
  232. data/lib/tkextlib/iwidgets/spindate.rb +49 -0
  233. data/lib/tkextlib/iwidgets/spinint.rb +31 -0
  234. data/lib/tkextlib/iwidgets/spinner.rb +170 -0
  235. data/lib/tkextlib/iwidgets/spintime.rb +49 -0
  236. data/lib/tkextlib/iwidgets/tabnotebook.rb +182 -0
  237. data/lib/tkextlib/iwidgets/tabset.rb +146 -0
  238. data/lib/tkextlib/iwidgets/timeentry.rb +26 -0
  239. data/lib/tkextlib/iwidgets/timefield.rb +59 -0
  240. data/lib/tkextlib/iwidgets/toolbar.rb +113 -0
  241. data/lib/tkextlib/iwidgets/watch.rb +57 -0
  242. data/lib/tkextlib/pkg_checker.rb +185 -0
  243. data/lib/tkextlib/setup.rb +9 -0
  244. data/lib/tkextlib/tcllib.rb +106 -0
  245. data/lib/tkextlib/tcllib/README +135 -0
  246. data/lib/tkextlib/tcllib/autoscroll.rb +159 -0
  247. data/lib/tkextlib/tcllib/calendar.rb +56 -0
  248. data/lib/tkextlib/tcllib/canvas_sqmap.rb +37 -0
  249. data/lib/tkextlib/tcllib/canvas_zoom.rb +22 -0
  250. data/lib/tkextlib/tcllib/chatwidget.rb +152 -0
  251. data/lib/tkextlib/tcllib/crosshair.rb +118 -0
  252. data/lib/tkextlib/tcllib/ctext.rb +161 -0
  253. data/lib/tkextlib/tcllib/cursor.rb +98 -0
  254. data/lib/tkextlib/tcllib/dateentry.rb +63 -0
  255. data/lib/tkextlib/tcllib/datefield.rb +58 -0
  256. data/lib/tkextlib/tcllib/diagrams.rb +225 -0
  257. data/lib/tkextlib/tcllib/dialog.rb +85 -0
  258. data/lib/tkextlib/tcllib/getstring.rb +135 -0
  259. data/lib/tkextlib/tcllib/history.rb +74 -0
  260. data/lib/tkextlib/tcllib/ico.rb +147 -0
  261. data/lib/tkextlib/tcllib/ip_entry.rb +76 -0
  262. data/lib/tkextlib/tcllib/khim.rb +69 -0
  263. data/lib/tkextlib/tcllib/menuentry.rb +48 -0
  264. data/lib/tkextlib/tcllib/ntext.rb +147 -0
  265. data/lib/tkextlib/tcllib/panelframe.rb +79 -0
  266. data/lib/tkextlib/tcllib/plotchart.rb +1405 -0
  267. data/lib/tkextlib/tcllib/ruler.rb +66 -0
  268. data/lib/tkextlib/tcllib/screenruler.rb +69 -0
  269. data/lib/tkextlib/tcllib/scrolledwindow.rb +58 -0
  270. data/lib/tkextlib/tcllib/scrollwin.rb +62 -0
  271. data/lib/tkextlib/tcllib/setup.rb +9 -0
  272. data/lib/tkextlib/tcllib/statusbar.rb +80 -0
  273. data/lib/tkextlib/tcllib/style.rb +62 -0
  274. data/lib/tkextlib/tcllib/superframe.rb +52 -0
  275. data/lib/tkextlib/tcllib/swaplist.rb +151 -0
  276. data/lib/tkextlib/tcllib/tablelist.rb +29 -0
  277. data/lib/tkextlib/tcllib/tablelist_core.rb +1073 -0
  278. data/lib/tkextlib/tcllib/tablelist_tile.rb +44 -0
  279. data/lib/tkextlib/tcllib/tkpiechart.rb +315 -0
  280. data/lib/tkextlib/tcllib/toolbar.rb +176 -0
  281. data/lib/tkextlib/tcllib/tooltip.rb +105 -0
  282. data/lib/tkextlib/tcllib/validator.rb +66 -0
  283. data/lib/tkextlib/tcllib/widget.rb +83 -0
  284. data/lib/tkextlib/tclx.rb +14 -0
  285. data/lib/tkextlib/tclx/setup.rb +9 -0
  286. data/lib/tkextlib/tclx/tclx.rb +75 -0
  287. data/lib/tkextlib/tile.rb +450 -0
  288. data/lib/tkextlib/tile/dialog.rb +103 -0
  289. data/lib/tkextlib/tile/setup.rb +9 -0
  290. data/lib/tkextlib/tile/sizegrip.rb +33 -0
  291. data/lib/tkextlib/tile/style.rb +337 -0
  292. data/lib/tkextlib/tile/tbutton.rb +35 -0
  293. data/lib/tkextlib/tile/tcheckbutton.rb +39 -0
  294. data/lib/tkextlib/tile/tcombobox.rb +56 -0
  295. data/lib/tkextlib/tile/tentry.rb +50 -0
  296. data/lib/tkextlib/tile/tframe.rb +35 -0
  297. data/lib/tkextlib/tile/tlabel.rb +35 -0
  298. data/lib/tkextlib/tile/tlabelframe.rb +39 -0
  299. data/lib/tkextlib/tile/tmenubutton.rb +39 -0
  300. data/lib/tkextlib/tile/tnotebook.rb +148 -0
  301. data/lib/tkextlib/tile/tpaned.rb +246 -0
  302. data/lib/tkextlib/tile/tprogressbar.rb +58 -0
  303. data/lib/tkextlib/tile/tradiobutton.rb +39 -0
  304. data/lib/tkextlib/tile/treeview.rb +1337 -0
  305. data/lib/tkextlib/tile/tscale.rb +57 -0
  306. data/lib/tkextlib/tile/tscrollbar.rb +64 -0
  307. data/lib/tkextlib/tile/tseparator.rb +35 -0
  308. data/lib/tkextlib/tile/tspinbox.rb +108 -0
  309. data/lib/tkextlib/tile/tsquare.rb +31 -0
  310. data/lib/tkextlib/tkDND.rb +19 -0
  311. data/lib/tkextlib/tkDND/setup.rb +9 -0
  312. data/lib/tkextlib/tkDND/shape.rb +126 -0
  313. data/lib/tkextlib/tkDND/tkdnd.rb +183 -0
  314. data/lib/tkextlib/tkHTML.rb +14 -0
  315. data/lib/tkextlib/tkHTML/htmlwidget.rb +454 -0
  316. data/lib/tkextlib/tkHTML/setup.rb +9 -0
  317. data/lib/tkextlib/tkimg.rb +37 -0
  318. data/lib/tkextlib/tkimg/README +26 -0
  319. data/lib/tkextlib/tkimg/bmp.rb +34 -0
  320. data/lib/tkextlib/tkimg/dted.rb +34 -0
  321. data/lib/tkextlib/tkimg/gif.rb +34 -0
  322. data/lib/tkextlib/tkimg/ico.rb +34 -0
  323. data/lib/tkextlib/tkimg/jpeg.rb +34 -0
  324. data/lib/tkextlib/tkimg/pcx.rb +34 -0
  325. data/lib/tkextlib/tkimg/pixmap.rb +45 -0
  326. data/lib/tkextlib/tkimg/png.rb +34 -0
  327. data/lib/tkextlib/tkimg/ppm.rb +34 -0
  328. data/lib/tkextlib/tkimg/ps.rb +34 -0
  329. data/lib/tkextlib/tkimg/raw.rb +34 -0
  330. data/lib/tkextlib/tkimg/setup.rb +9 -0
  331. data/lib/tkextlib/tkimg/sgi.rb +34 -0
  332. data/lib/tkextlib/tkimg/sun.rb +34 -0
  333. data/lib/tkextlib/tkimg/tga.rb +34 -0
  334. data/lib/tkextlib/tkimg/tiff.rb +34 -0
  335. data/lib/tkextlib/tkimg/window.rb +34 -0
  336. data/lib/tkextlib/tkimg/xbm.rb +34 -0
  337. data/lib/tkextlib/tkimg/xpm.rb +34 -0
  338. data/lib/tkextlib/tktable.rb +15 -0
  339. data/lib/tkextlib/tktable/setup.rb +9 -0
  340. data/lib/tkextlib/tktable/tktable.rb +967 -0
  341. data/lib/tkextlib/tktrans.rb +15 -0
  342. data/lib/tkextlib/tktrans/setup.rb +9 -0
  343. data/lib/tkextlib/tktrans/tktrans.rb +65 -0
  344. data/lib/tkextlib/treectrl.rb +14 -0
  345. data/lib/tkextlib/treectrl/setup.rb +9 -0
  346. data/lib/tkextlib/treectrl/tktreectrl.rb +2523 -0
  347. data/lib/tkextlib/trofs.rb +14 -0
  348. data/lib/tkextlib/trofs/setup.rb +9 -0
  349. data/lib/tkextlib/trofs/trofs.rb +52 -0
  350. data/lib/tkextlib/version.rb +7 -0
  351. data/lib/tkextlib/vu.rb +49 -0
  352. data/lib/tkextlib/vu/bargraph.rb +62 -0
  353. data/lib/tkextlib/vu/charts.rb +54 -0
  354. data/lib/tkextlib/vu/dial.rb +103 -0
  355. data/lib/tkextlib/vu/pie.rb +287 -0
  356. data/lib/tkextlib/vu/setup.rb +9 -0
  357. data/lib/tkextlib/vu/spinbox.rb +23 -0
  358. data/lib/tkextlib/winico.rb +15 -0
  359. data/lib/tkextlib/winico/setup.rb +9 -0
  360. data/lib/tkextlib/winico/winico.rb +225 -0
  361. data/lib/tkfont.rb +5 -0
  362. data/lib/tkmacpkg.rb +5 -0
  363. data/lib/tkmenubar.rb +5 -0
  364. data/lib/tkmngfocus.rb +5 -0
  365. data/lib/tkpalette.rb +5 -0
  366. data/lib/tkscrollbox.rb +5 -0
  367. data/lib/tktext.rb +5 -0
  368. data/lib/tkvirtevent.rb +5 -0
  369. data/lib/tkwinpkg.rb +5 -0
  370. data/old-README.tcltklib.ja +159 -0
  371. data/sample/24hr_clock.rb +287 -0
  372. data/sample/binding_sample.rb +88 -0
  373. data/sample/bindtag_sample.rb +128 -0
  374. data/sample/binstr_usage.rb +46 -0
  375. data/sample/btn_with_frame.rb +21 -0
  376. data/sample/cd_timer.rb +82 -0
  377. data/sample/cmd_res_test.rb +18 -0
  378. data/sample/cmd_resource +5 -0
  379. data/sample/demos-en/ChangeLog +64 -0
  380. data/sample/demos-en/ChangeLog.prev +9 -0
  381. data/sample/demos-en/README +138 -0
  382. data/sample/demos-en/README.1st +18 -0
  383. data/sample/demos-en/README.tkencoding +29 -0
  384. data/sample/demos-en/anilabel.rb +175 -0
  385. data/sample/demos-en/aniwave.rb +119 -0
  386. data/sample/demos-en/arrow.rb +250 -0
  387. data/sample/demos-en/bind.rb +128 -0
  388. data/sample/demos-en/bitmap.rb +76 -0
  389. data/sample/demos-en/browse1 +63 -0
  390. data/sample/demos-en/browse2 +82 -0
  391. data/sample/demos-en/button.rb +85 -0
  392. data/sample/demos-en/check.rb +73 -0
  393. data/sample/demos-en/check2.rb +110 -0
  394. data/sample/demos-en/clrpick.rb +88 -0
  395. data/sample/demos-en/colors.rb +159 -0
  396. data/sample/demos-en/combo.rb +97 -0
  397. data/sample/demos-en/cscroll.rb +137 -0
  398. data/sample/demos-en/ctext.rb +208 -0
  399. data/sample/demos-en/dialog1.rb +39 -0
  400. data/sample/demos-en/dialog2.rb +42 -0
  401. data/sample/demos-en/doc.org/README +7 -0
  402. data/sample/demos-en/doc.org/README.JP +14 -0
  403. data/sample/demos-en/doc.org/README.tk80 +46 -0
  404. data/sample/demos-en/doc.org/license.terms +39 -0
  405. data/sample/demos-en/doc.org/license.terms.tk80 +39 -0
  406. data/sample/demos-en/entry1.rb +59 -0
  407. data/sample/demos-en/entry2.rb +94 -0
  408. data/sample/demos-en/entry3.rb +221 -0
  409. data/sample/demos-en/filebox.rb +103 -0
  410. data/sample/demos-en/floor.rb +1724 -0
  411. data/sample/demos-en/floor2.rb +1723 -0
  412. data/sample/demos-en/form.rb +65 -0
  413. data/sample/demos-en/goldberg.rb +2007 -0
  414. data/sample/demos-en/hello +14 -0
  415. data/sample/demos-en/hscale.rb +76 -0
  416. data/sample/demos-en/icon.rb +106 -0
  417. data/sample/demos-en/image1.rb +66 -0
  418. data/sample/demos-en/image2.rb +108 -0
  419. data/sample/demos-en/image3.rb +126 -0
  420. data/sample/demos-en/items.rb +382 -0
  421. data/sample/demos-en/ixset +333 -0
  422. data/sample/demos-en/ixset2 +367 -0
  423. data/sample/demos-en/knightstour.rb +272 -0
  424. data/sample/demos-en/label.rb +73 -0
  425. data/sample/demos-en/labelframe.rb +96 -0
  426. data/sample/demos-en/mclist.rb +118 -0
  427. data/sample/demos-en/menu.rb +197 -0
  428. data/sample/demos-en/menu84.rb +216 -0
  429. data/sample/demos-en/menubu.rb +238 -0
  430. data/sample/demos-en/msgbox.rb +91 -0
  431. data/sample/demos-en/msgbox2.rb +92 -0
  432. data/sample/demos-en/paned1.rb +48 -0
  433. data/sample/demos-en/paned2.rb +95 -0
  434. data/sample/demos-en/pendulum.rb +241 -0
  435. data/sample/demos-en/plot.rb +125 -0
  436. data/sample/demos-en/puzzle.rb +135 -0
  437. data/sample/demos-en/radio.rb +87 -0
  438. data/sample/demos-en/radio2.rb +110 -0
  439. data/sample/demos-en/radio3.rb +118 -0
  440. data/sample/demos-en/rmt +268 -0
  441. data/sample/demos-en/rolodex +320 -0
  442. data/sample/demos-en/ruler.rb +206 -0
  443. data/sample/demos-en/sayings.rb +107 -0
  444. data/sample/demos-en/search.rb +188 -0
  445. data/sample/demos-en/spin.rb +66 -0
  446. data/sample/demos-en/square +81 -0
  447. data/sample/demos-en/states.rb +81 -0
  448. data/sample/demos-en/style.rb +232 -0
  449. data/sample/demos-en/tcolor +526 -0
  450. data/sample/demos-en/text.rb +129 -0
  451. data/sample/demos-en/textpeer.rb +77 -0
  452. data/sample/demos-en/timer +136 -0
  453. data/sample/demos-en/tkencoding.rb +43 -0
  454. data/sample/demos-en/toolbar.rb +131 -0
  455. data/sample/demos-en/tree.rb +120 -0
  456. data/sample/demos-en/ttkbut.rb +140 -0
  457. data/sample/demos-en/ttkmenu.rb +86 -0
  458. data/sample/demos-en/ttknote.rb +90 -0
  459. data/sample/demos-en/ttkpane.rb +214 -0
  460. data/sample/demos-en/ttkprogress.rb +67 -0
  461. data/sample/demos-en/twind.rb +292 -0
  462. data/sample/demos-en/twind2.rb +385 -0
  463. data/sample/demos-en/unicodeout.rb +115 -0
  464. data/sample/demos-en/vscale.rb +80 -0
  465. data/sample/demos-en/widget +1087 -0
  466. data/sample/demos-jp/README +54 -0
  467. data/sample/demos-jp/README.1st +20 -0
  468. data/sample/demos-jp/anilabel.rb +178 -0
  469. data/sample/demos-jp/aniwave.rb +121 -0
  470. data/sample/demos-jp/arrow.rb +248 -0
  471. data/sample/demos-jp/bind.rb +126 -0
  472. data/sample/demos-jp/bitmap.rb +75 -0
  473. data/sample/demos-jp/browse1 +63 -0
  474. data/sample/demos-jp/browse2 +82 -0
  475. data/sample/demos-jp/button.rb +84 -0
  476. data/sample/demos-jp/check.rb +71 -0
  477. data/sample/demos-jp/check2.rb +111 -0
  478. data/sample/demos-jp/clrpick.rb +85 -0
  479. data/sample/demos-jp/colors.rb +156 -0
  480. data/sample/demos-jp/combo.rb +99 -0
  481. data/sample/demos-jp/cscroll.rb +135 -0
  482. data/sample/demos-jp/ctext.rb +205 -0
  483. data/sample/demos-jp/dialog1.rb +40 -0
  484. data/sample/demos-jp/dialog2.rb +44 -0
  485. data/sample/demos-jp/doc.org/README +7 -0
  486. data/sample/demos-jp/doc.org/README.JP +14 -0
  487. data/sample/demos-jp/doc.org/README.tk80 +46 -0
  488. data/sample/demos-jp/doc.org/license.terms +39 -0
  489. data/sample/demos-jp/doc.org/license.terms.tk80 +39 -0
  490. data/sample/demos-jp/entry1.rb +61 -0
  491. data/sample/demos-jp/entry2.rb +92 -0
  492. data/sample/demos-jp/entry3.rb +226 -0
  493. data/sample/demos-jp/filebox.rb +103 -0
  494. data/sample/demos-jp/floor.rb +1722 -0
  495. data/sample/demos-jp/floor2.rb +1720 -0
  496. data/sample/demos-jp/form.rb +67 -0
  497. data/sample/demos-jp/goldberg.rb +2012 -0
  498. data/sample/demos-jp/hello +10 -0
  499. data/sample/demos-jp/hscale.rb +79 -0
  500. data/sample/demos-jp/icon.rb +104 -0
  501. data/sample/demos-jp/image1.rb +65 -0
  502. data/sample/demos-jp/image2.rb +107 -0
  503. data/sample/demos-jp/image3.rb +128 -0
  504. data/sample/demos-jp/items.rb +380 -0
  505. data/sample/demos-jp/ixset +333 -0
  506. data/sample/demos-jp/ixset2 +369 -0
  507. data/sample/demos-jp/knightstour.rb +274 -0
  508. data/sample/demos-jp/label.rb +70 -0
  509. data/sample/demos-jp/labelframe.rb +103 -0
  510. data/sample/demos-jp/mclist.rb +122 -0
  511. data/sample/demos-jp/menu.rb +202 -0
  512. data/sample/demos-jp/menu84.rb +214 -0
  513. data/sample/demos-jp/menu8x.rb +234 -0
  514. data/sample/demos-jp/menubu.rb +239 -0
  515. data/sample/demos-jp/msgbox.rb +90 -0
  516. data/sample/demos-jp/msgbox2.rb +91 -0
  517. data/sample/demos-jp/paned1.rb +53 -0
  518. data/sample/demos-jp/paned2.rb +101 -0
  519. data/sample/demos-jp/pendulum.rb +243 -0
  520. data/sample/demos-jp/plot.rb +127 -0
  521. data/sample/demos-jp/puzzle.rb +132 -0
  522. data/sample/demos-jp/radio.rb +85 -0
  523. data/sample/demos-jp/radio2.rb +113 -0
  524. data/sample/demos-jp/radio3.rb +120 -0
  525. data/sample/demos-jp/rmt +268 -0
  526. data/sample/demos-jp/rolodex +320 -0
  527. data/sample/demos-jp/rolodex-j +300 -0
  528. data/sample/demos-jp/ruler.rb +204 -0
  529. data/sample/demos-jp/sayings.rb +104 -0
  530. data/sample/demos-jp/search.rb +185 -0
  531. data/sample/demos-jp/spin.rb +72 -0
  532. data/sample/demos-jp/square +81 -0
  533. data/sample/demos-jp/states.rb +75 -0
  534. data/sample/demos-jp/style.rb +271 -0
  535. data/sample/demos-jp/tcolor +534 -0
  536. data/sample/demos-jp/text.rb +121 -0
  537. data/sample/demos-jp/textpeer.rb +83 -0
  538. data/sample/demos-jp/timer +136 -0
  539. data/sample/demos-jp/toolbar.rb +137 -0
  540. data/sample/demos-jp/tree.rb +121 -0
  541. data/sample/demos-jp/ttkbut.rb +146 -0
  542. data/sample/demos-jp/ttkmenu.rb +92 -0
  543. data/sample/demos-jp/ttknote.rb +98 -0
  544. data/sample/demos-jp/ttkpane.rb +217 -0
  545. data/sample/demos-jp/ttkprogress.rb +72 -0
  546. data/sample/demos-jp/twind.rb +293 -0
  547. data/sample/demos-jp/twind2.rb +385 -0
  548. data/sample/demos-jp/unicodeout.rb +120 -0
  549. data/sample/demos-jp/vscale.rb +81 -0
  550. data/sample/demos-jp/widget +1122 -0
  551. data/sample/editable_listbox.rb +149 -0
  552. data/sample/encstr_usage.rb +31 -0
  553. data/sample/figmemo_sample.rb +457 -0
  554. data/sample/images/earth.gif +0 -0
  555. data/sample/images/earthris.gif +0 -0
  556. data/sample/images/face.xbm +173 -0
  557. data/sample/images/flagdown.xbm +27 -0
  558. data/sample/images/flagup.xbm +27 -0
  559. data/sample/images/gray25.xbm +6 -0
  560. data/sample/images/grey.25 +6 -0
  561. data/sample/images/grey.5 +6 -0
  562. data/sample/images/letters.xbm +27 -0
  563. data/sample/images/noletter.xbm +27 -0
  564. data/sample/images/pattern.xbm +6 -0
  565. data/sample/images/tcllogo.gif +0 -0
  566. data/sample/images/teapot.ppm +31 -0
  567. data/sample/irbtk.rb +31 -0
  568. data/sample/irbtkw.rbw +156 -0
  569. data/sample/iso2022-kr.txt +2 -0
  570. data/sample/menubar1.rb +52 -0
  571. data/sample/menubar2.rb +57 -0
  572. data/sample/menubar3.rb +73 -0
  573. data/sample/msgs_rb/README +3 -0
  574. data/sample/msgs_rb/cs.msg +84 -0
  575. data/sample/msgs_rb/de.msg +88 -0
  576. data/sample/msgs_rb/el.msg +98 -0
  577. data/sample/msgs_rb/en.msg +83 -0
  578. data/sample/msgs_rb/en_gb.msg +7 -0
  579. data/sample/msgs_rb/eo.msg +87 -0
  580. data/sample/msgs_rb/es.msg +84 -0
  581. data/sample/msgs_rb/fr.msg +84 -0
  582. data/sample/msgs_rb/it.msg +84 -0
  583. data/sample/msgs_rb/ja.msg +13 -0
  584. data/sample/msgs_rb/nl.msg +123 -0
  585. data/sample/msgs_rb/pl.msg +87 -0
  586. data/sample/msgs_rb/ru.msg +87 -0
  587. data/sample/msgs_rb2/README +5 -0
  588. data/sample/msgs_rb2/de.msg +88 -0
  589. data/sample/msgs_rb2/ja.msg +85 -0
  590. data/sample/msgs_tk/README +4 -0
  591. data/sample/msgs_tk/cs.msg +84 -0
  592. data/sample/msgs_tk/de.msg +88 -0
  593. data/sample/msgs_tk/el.msg +103 -0
  594. data/sample/msgs_tk/en.msg +83 -0
  595. data/sample/msgs_tk/en_gb.msg +7 -0
  596. data/sample/msgs_tk/eo.msg +87 -0
  597. data/sample/msgs_tk/es.msg +84 -0
  598. data/sample/msgs_tk/fr.msg +84 -0
  599. data/sample/msgs_tk/it.msg +84 -0
  600. data/sample/msgs_tk/ja.msg +13 -0
  601. data/sample/msgs_tk/license.terms +39 -0
  602. data/sample/msgs_tk/nl.msg +123 -0
  603. data/sample/msgs_tk/pl.msg +87 -0
  604. data/sample/msgs_tk/ru.msg +87 -0
  605. data/sample/multi-ip_sample.rb +104 -0
  606. data/sample/multi-ip_sample2.rb +30 -0
  607. data/sample/optobj_sample.rb +68 -0
  608. data/sample/propagate.rb +31 -0
  609. data/sample/remote-ip_sample.rb +34 -0
  610. data/sample/remote-ip_sample2.rb +57 -0
  611. data/sample/resource.en +13 -0
  612. data/sample/resource.ja +13 -0
  613. data/sample/safe-tk.rb +132 -0
  614. data/sample/scrollframe.rb +250 -0
  615. data/sample/tcltklib/batsu.gif +0 -0
  616. data/sample/tcltklib/lines0.tcl +42 -0
  617. data/sample/tcltklib/lines1.rb +51 -0
  618. data/sample/tcltklib/lines2.rb +55 -0
  619. data/sample/tcltklib/lines3.rb +55 -0
  620. data/sample/tcltklib/lines4.rb +55 -0
  621. data/sample/tcltklib/maru.gif +0 -0
  622. data/sample/tcltklib/safeTk.rb +23 -0
  623. data/sample/tcltklib/sample0.rb +40 -0
  624. data/sample/tcltklib/sample1.rb +635 -0
  625. data/sample/tcltklib/sample2.rb +452 -0
  626. data/sample/tkalignbox.rb +236 -0
  627. data/sample/tkballoonhelp.rb +221 -0
  628. data/sample/tkbiff.rb +156 -0
  629. data/sample/tkbrowse.rb +80 -0
  630. data/sample/tkcombobox.rb +498 -0
  631. data/sample/tkdialog.rb +62 -0
  632. data/sample/tkextlib/ICONS/Orig_LICENSE.txt +61 -0
  633. data/sample/tkextlib/ICONS/tkIcons +195 -0
  634. data/sample/tkextlib/ICONS/tkIcons-sample.kde +658 -0
  635. data/sample/tkextlib/ICONS/tkIcons.kde +195 -0
  636. data/sample/tkextlib/ICONS/viewIcons.rb +330 -0
  637. data/sample/tkextlib/blt/barchart5.rb +102 -0
  638. data/sample/tkextlib/blt/calendar.rb +118 -0
  639. data/sample/tkextlib/blt/graph6.rb +2223 -0
  640. data/sample/tkextlib/blt/graph7.rb +41 -0
  641. data/sample/tkextlib/blt/graph7a.rb +64 -0
  642. data/sample/tkextlib/blt/graph7b.rb +42 -0
  643. data/sample/tkextlib/blt/graph7c.rb +46 -0
  644. data/sample/tkextlib/blt/images/buckskin.gif +0 -0
  645. data/sample/tkextlib/blt/images/chalk.gif +0 -0
  646. data/sample/tkextlib/blt/images/qv100.t.gif +0 -0
  647. data/sample/tkextlib/blt/images/rain.gif +0 -0
  648. data/sample/tkextlib/blt/images/sample.gif +0 -0
  649. data/sample/tkextlib/blt/pareto.rb +91 -0
  650. data/sample/tkextlib/blt/plot1.rb +10 -0
  651. data/sample/tkextlib/blt/plot1b.rb +11 -0
  652. data/sample/tkextlib/blt/readme.txt +2 -0
  653. data/sample/tkextlib/blt/scripts/stipples.rb +157 -0
  654. data/sample/tkextlib/blt/winop1.rb +41 -0
  655. data/sample/tkextlib/blt/winop2.rb +29 -0
  656. data/sample/tkextlib/bwidget/Orig_LICENSE.txt +53 -0
  657. data/sample/tkextlib/bwidget/basic.rb +199 -0
  658. data/sample/tkextlib/bwidget/bwidget.xbm +46 -0
  659. data/sample/tkextlib/bwidget/demo.rb +244 -0
  660. data/sample/tkextlib/bwidget/dnd.rb +47 -0
  661. data/sample/tkextlib/bwidget/manager.rb +151 -0
  662. data/sample/tkextlib/bwidget/select.rb +83 -0
  663. data/sample/tkextlib/bwidget/tmpldlg.rb +222 -0
  664. data/sample/tkextlib/bwidget/tree.rb +290 -0
  665. data/sample/tkextlib/bwidget/x1.xbm +2258 -0
  666. data/sample/tkextlib/iwidgets/catalog_demo/Orig_LICENSE.txt +42 -0
  667. data/sample/tkextlib/iwidgets/catalog_demo/images/box.xbm +14 -0
  668. data/sample/tkextlib/iwidgets/catalog_demo/images/clear.gif +0 -0
  669. data/sample/tkextlib/iwidgets/catalog_demo/images/close.gif +0 -0
  670. data/sample/tkextlib/iwidgets/catalog_demo/images/copy.gif +0 -0
  671. data/sample/tkextlib/iwidgets/catalog_demo/images/cut.gif +0 -0
  672. data/sample/tkextlib/iwidgets/catalog_demo/images/exit.gif +0 -0
  673. data/sample/tkextlib/iwidgets/catalog_demo/images/find.gif +0 -0
  674. data/sample/tkextlib/iwidgets/catalog_demo/images/help.gif +0 -0
  675. data/sample/tkextlib/iwidgets/catalog_demo/images/line.xbm +14 -0
  676. data/sample/tkextlib/iwidgets/catalog_demo/images/mag.gif +0 -0
  677. data/sample/tkextlib/iwidgets/catalog_demo/images/new.gif +0 -0
  678. data/sample/tkextlib/iwidgets/catalog_demo/images/open.gif +0 -0
  679. data/sample/tkextlib/iwidgets/catalog_demo/images/oval.xbm +14 -0
  680. data/sample/tkextlib/iwidgets/catalog_demo/images/paste.gif +0 -0
  681. data/sample/tkextlib/iwidgets/catalog_demo/images/points.xbm +14 -0
  682. data/sample/tkextlib/iwidgets/catalog_demo/images/poly.gif +0 -0
  683. data/sample/tkextlib/iwidgets/catalog_demo/images/print.gif +0 -0
  684. data/sample/tkextlib/iwidgets/catalog_demo/images/ruler.gif +0 -0
  685. data/sample/tkextlib/iwidgets/catalog_demo/images/save.gif +0 -0
  686. data/sample/tkextlib/iwidgets/catalog_demo/images/select.gif +0 -0
  687. data/sample/tkextlib/iwidgets/catalog_demo/images/text.xbm +14 -0
  688. data/sample/tkextlib/iwidgets/sample/buttonbox.rb +23 -0
  689. data/sample/tkextlib/iwidgets/sample/calendar.rb +11 -0
  690. data/sample/tkextlib/iwidgets/sample/canvasprintbox.rb +9 -0
  691. data/sample/tkextlib/iwidgets/sample/canvasprintdialog.rb +9 -0
  692. data/sample/tkextlib/iwidgets/sample/checkbox.rb +13 -0
  693. data/sample/tkextlib/iwidgets/sample/combobox.rb +33 -0
  694. data/sample/tkextlib/iwidgets/sample/dateentry.rb +8 -0
  695. data/sample/tkextlib/iwidgets/sample/datefield.rb +9 -0
  696. data/sample/tkextlib/iwidgets/sample/dialog.rb +21 -0
  697. data/sample/tkextlib/iwidgets/sample/dialogshell.rb +15 -0
  698. data/sample/tkextlib/iwidgets/sample/disjointlistbox.rb +17 -0
  699. data/sample/tkextlib/iwidgets/sample/entryfield-1.rb +40 -0
  700. data/sample/tkextlib/iwidgets/sample/entryfield-2.rb +45 -0
  701. data/sample/tkextlib/iwidgets/sample/entryfield-3.rb +41 -0
  702. data/sample/tkextlib/iwidgets/sample/extbutton.rb +21 -0
  703. data/sample/tkextlib/iwidgets/sample/extfileselectionbox.rb +9 -0
  704. data/sample/tkextlib/iwidgets/sample/extfileselectiondialog.rb +30 -0
  705. data/sample/tkextlib/iwidgets/sample/feedback.rb +11 -0
  706. data/sample/tkextlib/iwidgets/sample/fileselectionbox.rb +9 -0
  707. data/sample/tkextlib/iwidgets/sample/fileselectiondialog.rb +29 -0
  708. data/sample/tkextlib/iwidgets/sample/finddialog.rb +16 -0
  709. data/sample/tkextlib/iwidgets/sample/hierarchy.rb +26 -0
  710. data/sample/tkextlib/iwidgets/sample/hyperhelp.rb +15 -0
  711. data/sample/tkextlib/iwidgets/sample/labeledframe.rb +15 -0
  712. data/sample/tkextlib/iwidgets/sample/labeledwidget.rb +14 -0
  713. data/sample/tkextlib/iwidgets/sample/mainwindow.rb +65 -0
  714. data/sample/tkextlib/iwidgets/sample/menubar.rb +125 -0
  715. data/sample/tkextlib/iwidgets/sample/menubar2.rb +45 -0
  716. data/sample/tkextlib/iwidgets/sample/messagebox1.rb +20 -0
  717. data/sample/tkextlib/iwidgets/sample/messagebox2.rb +20 -0
  718. data/sample/tkextlib/iwidgets/sample/messagedialog.rb +45 -0
  719. data/sample/tkextlib/iwidgets/sample/notebook.rb +31 -0
  720. data/sample/tkextlib/iwidgets/sample/notebook2.rb +31 -0
  721. data/sample/tkextlib/iwidgets/sample/optionmenu.rb +15 -0
  722. data/sample/tkextlib/iwidgets/sample/panedwindow.rb +23 -0
  723. data/sample/tkextlib/iwidgets/sample/panedwindow2.rb +23 -0
  724. data/sample/tkextlib/iwidgets/sample/promptdialog.rb +18 -0
  725. data/sample/tkextlib/iwidgets/sample/pushbutton.rb +10 -0
  726. data/sample/tkextlib/iwidgets/sample/radiobox.rb +14 -0
  727. data/sample/tkextlib/iwidgets/sample/scrolledcanvas.rb +14 -0
  728. data/sample/tkextlib/iwidgets/sample/scrolledframe.rb +19 -0
  729. data/sample/tkextlib/iwidgets/sample/scrolledhtml.rb +16 -0
  730. data/sample/tkextlib/iwidgets/sample/scrolledlistbox.rb +23 -0
  731. data/sample/tkextlib/iwidgets/sample/scrolledtext.rb +12 -0
  732. data/sample/tkextlib/iwidgets/sample/selectionbox.rb +20 -0
  733. data/sample/tkextlib/iwidgets/sample/selectiondialog.rb +13 -0
  734. data/sample/tkextlib/iwidgets/sample/shell.rb +18 -0
  735. data/sample/tkextlib/iwidgets/sample/spindate.rb +8 -0
  736. data/sample/tkextlib/iwidgets/sample/spinint.rb +11 -0
  737. data/sample/tkextlib/iwidgets/sample/spinner.rb +34 -0
  738. data/sample/tkextlib/iwidgets/sample/spintime.rb +8 -0
  739. data/sample/tkextlib/iwidgets/sample/tabnotebook.rb +27 -0
  740. data/sample/tkextlib/iwidgets/sample/tabnotebook2.rb +31 -0
  741. data/sample/tkextlib/iwidgets/sample/tabset.rb +35 -0
  742. data/sample/tkextlib/iwidgets/sample/timeentry.rb +8 -0
  743. data/sample/tkextlib/iwidgets/sample/timefield.rb +9 -0
  744. data/sample/tkextlib/iwidgets/sample/toolbar.rb +153 -0
  745. data/sample/tkextlib/iwidgets/sample/watch.rb +19 -0
  746. data/sample/tkextlib/tcllib/Orig_LICENSE.txt +46 -0
  747. data/sample/tkextlib/tcllib/datefield.rb +30 -0
  748. data/sample/tkextlib/tcllib/plotdemos1.rb +159 -0
  749. data/sample/tkextlib/tcllib/plotdemos2.rb +72 -0
  750. data/sample/tkextlib/tcllib/plotdemos3.rb +84 -0
  751. data/sample/tkextlib/tcllib/xyplot.rb +18 -0
  752. data/sample/tkextlib/tile/Orig_LICENSE.txt +30 -0
  753. data/sample/tkextlib/tile/demo.rb +984 -0
  754. data/sample/tkextlib/tile/iconlib.tcl +110 -0
  755. data/sample/tkextlib/tile/readme.txt +2 -0
  756. data/sample/tkextlib/tile/repeater.tcl +117 -0
  757. data/sample/tkextlib/tile/themes/blue/blue.tcl +149 -0
  758. data/sample/tkextlib/tile/themes/blue/blue/arrowdown-h.gif +0 -0
  759. data/sample/tkextlib/tile/themes/blue/blue/arrowdown-p.gif +0 -0
  760. data/sample/tkextlib/tile/themes/blue/blue/arrowdown.gif +0 -0
  761. data/sample/tkextlib/tile/themes/blue/blue/arrowleft-h.gif +0 -0
  762. data/sample/tkextlib/tile/themes/blue/blue/arrowleft-p.gif +0 -0
  763. data/sample/tkextlib/tile/themes/blue/blue/arrowleft.gif +0 -0
  764. data/sample/tkextlib/tile/themes/blue/blue/arrowright-h.gif +0 -0
  765. data/sample/tkextlib/tile/themes/blue/blue/arrowright-p.gif +0 -0
  766. data/sample/tkextlib/tile/themes/blue/blue/arrowright.gif +0 -0
  767. data/sample/tkextlib/tile/themes/blue/blue/arrowup-h.gif +0 -0
  768. data/sample/tkextlib/tile/themes/blue/blue/arrowup-p.gif +0 -0
  769. data/sample/tkextlib/tile/themes/blue/blue/arrowup.gif +0 -0
  770. data/sample/tkextlib/tile/themes/blue/blue/button-h.gif +0 -0
  771. data/sample/tkextlib/tile/themes/blue/blue/button-n.gif +0 -0
  772. data/sample/tkextlib/tile/themes/blue/blue/button-n.xcf +0 -0
  773. data/sample/tkextlib/tile/themes/blue/blue/button-p.gif +0 -0
  774. data/sample/tkextlib/tile/themes/blue/blue/check-hc.gif +0 -0
  775. data/sample/tkextlib/tile/themes/blue/blue/check-hu.gif +0 -0
  776. data/sample/tkextlib/tile/themes/blue/blue/check-nc.gif +0 -0
  777. data/sample/tkextlib/tile/themes/blue/blue/check-nu.gif +0 -0
  778. data/sample/tkextlib/tile/themes/blue/blue/radio-hc.gif +0 -0
  779. data/sample/tkextlib/tile/themes/blue/blue/radio-hu.gif +0 -0
  780. data/sample/tkextlib/tile/themes/blue/blue/radio-nc.gif +0 -0
  781. data/sample/tkextlib/tile/themes/blue/blue/radio-nu.gif +0 -0
  782. data/sample/tkextlib/tile/themes/blue/blue/sb-thumb-p.gif +0 -0
  783. data/sample/tkextlib/tile/themes/blue/blue/sb-thumb.gif +0 -0
  784. data/sample/tkextlib/tile/themes/blue/blue/sb-vthumb-p.gif +0 -0
  785. data/sample/tkextlib/tile/themes/blue/blue/sb-vthumb.gif +0 -0
  786. data/sample/tkextlib/tile/themes/blue/blue/slider-p.gif +0 -0
  787. data/sample/tkextlib/tile/themes/blue/blue/slider.gif +0 -0
  788. data/sample/tkextlib/tile/themes/blue/blue/vslider-p.gif +0 -0
  789. data/sample/tkextlib/tile/themes/blue/blue/vslider.gif +0 -0
  790. data/sample/tkextlib/tile/themes/blue/pkgIndex.tcl +6 -0
  791. data/sample/tkextlib/tile/themes/keramik/keramik.tcl +194 -0
  792. data/sample/tkextlib/tile/themes/keramik/keramik/arrowdown-n.gif +0 -0
  793. data/sample/tkextlib/tile/themes/keramik/keramik/arrowdown-p.gif +0 -0
  794. data/sample/tkextlib/tile/themes/keramik/keramik/arrowleft-n.gif +0 -0
  795. data/sample/tkextlib/tile/themes/keramik/keramik/arrowleft-p.gif +0 -0
  796. data/sample/tkextlib/tile/themes/keramik/keramik/arrowright-n.gif +0 -0
  797. data/sample/tkextlib/tile/themes/keramik/keramik/arrowright-p.gif +0 -0
  798. data/sample/tkextlib/tile/themes/keramik/keramik/arrowup-n.gif +0 -0
  799. data/sample/tkextlib/tile/themes/keramik/keramik/arrowup-p.gif +0 -0
  800. data/sample/tkextlib/tile/themes/keramik/keramik/button-d.gif +0 -0
  801. data/sample/tkextlib/tile/themes/keramik/keramik/button-h.gif +0 -0
  802. data/sample/tkextlib/tile/themes/keramik/keramik/button-n.gif +0 -0
  803. data/sample/tkextlib/tile/themes/keramik/keramik/button-p.gif +0 -0
  804. data/sample/tkextlib/tile/themes/keramik/keramik/button-s.gif +0 -0
  805. data/sample/tkextlib/tile/themes/keramik/keramik/check-c.gif +0 -0
  806. data/sample/tkextlib/tile/themes/keramik/keramik/check-u.gif +0 -0
  807. data/sample/tkextlib/tile/themes/keramik/keramik/hsb-n.gif +0 -0
  808. data/sample/tkextlib/tile/themes/keramik/keramik/hsb-p.gif +0 -0
  809. data/sample/tkextlib/tile/themes/keramik/keramik/hslider-n.gif +0 -0
  810. data/sample/tkextlib/tile/themes/keramik/keramik/mbut-a.gif +0 -0
  811. data/sample/tkextlib/tile/themes/keramik/keramik/mbut-arrow-n.gif +0 -0
  812. data/sample/tkextlib/tile/themes/keramik/keramik/mbut-d.gif +0 -0
  813. data/sample/tkextlib/tile/themes/keramik/keramik/mbut-n.gif +0 -0
  814. data/sample/tkextlib/tile/themes/keramik/keramik/radio-c.gif +0 -0
  815. data/sample/tkextlib/tile/themes/keramik/keramik/radio-u.gif +0 -0
  816. data/sample/tkextlib/tile/themes/keramik/keramik/tab-n.gif +0 -0
  817. data/sample/tkextlib/tile/themes/keramik/keramik/tab-p.gif +0 -0
  818. data/sample/tkextlib/tile/themes/keramik/keramik/tbar-a.gif +0 -0
  819. data/sample/tkextlib/tile/themes/keramik/keramik/tbar-n.gif +0 -0
  820. data/sample/tkextlib/tile/themes/keramik/keramik/tbar-p.gif +0 -0
  821. data/sample/tkextlib/tile/themes/keramik/keramik/vsb-n.gif +0 -0
  822. data/sample/tkextlib/tile/themes/keramik/keramik/vsb-p.gif +0 -0
  823. data/sample/tkextlib/tile/themes/keramik/keramik/vslider-n.gif +0 -0
  824. data/sample/tkextlib/tile/themes/keramik/pkgIndex.tcl +15 -0
  825. data/sample/tkextlib/tile/themes/kroc.rb +227 -0
  826. data/sample/tkextlib/tile/themes/kroc/kroc.tcl +163 -0
  827. data/sample/tkextlib/tile/themes/kroc/kroc/button-h.gif +0 -0
  828. data/sample/tkextlib/tile/themes/kroc/kroc/button-n.gif +0 -0
  829. data/sample/tkextlib/tile/themes/kroc/kroc/button-p.gif +0 -0
  830. data/sample/tkextlib/tile/themes/kroc/kroc/check-hc.gif +0 -0
  831. data/sample/tkextlib/tile/themes/kroc/kroc/check-hu.gif +0 -0
  832. data/sample/tkextlib/tile/themes/kroc/kroc/check-nc.gif +0 -0
  833. data/sample/tkextlib/tile/themes/kroc/kroc/check-nu.gif +0 -0
  834. data/sample/tkextlib/tile/themes/kroc/kroc/radio-hc.gif +0 -0
  835. data/sample/tkextlib/tile/themes/kroc/kroc/radio-hu.gif +0 -0
  836. data/sample/tkextlib/tile/themes/kroc/kroc/radio-nc.gif +0 -0
  837. data/sample/tkextlib/tile/themes/kroc/kroc/radio-nu.gif +0 -0
  838. data/sample/tkextlib/tile/themes/kroc/pkgIndex.tcl +15 -0
  839. data/sample/tkextlib/tile/themes/plastik/pkgIndex.tcl +16 -0
  840. data/sample/tkextlib/tile/themes/plastik/plastik.tcl +125 -0
  841. data/sample/tkextlib/tile/themes/plastik/plastik/arrowdown-n.gif +0 -0
  842. data/sample/tkextlib/tile/themes/plastik/plastik/arrowdown-p.gif +0 -0
  843. data/sample/tkextlib/tile/themes/plastik/plastik/arrowleft-n.gif +0 -0
  844. data/sample/tkextlib/tile/themes/plastik/plastik/arrowleft-p.gif +0 -0
  845. data/sample/tkextlib/tile/themes/plastik/plastik/arrowright-n.gif +0 -0
  846. data/sample/tkextlib/tile/themes/plastik/plastik/arrowright-p.gif +0 -0
  847. data/sample/tkextlib/tile/themes/plastik/plastik/arrowup-n.gif +0 -0
  848. data/sample/tkextlib/tile/themes/plastik/plastik/arrowup-p.gif +0 -0
  849. data/sample/tkextlib/tile/themes/plastik/plastik/button-h.gif +0 -0
  850. data/sample/tkextlib/tile/themes/plastik/plastik/button-n.gif +0 -0
  851. data/sample/tkextlib/tile/themes/plastik/plastik/button-p.gif +0 -0
  852. data/sample/tkextlib/tile/themes/plastik/plastik/check-hc.gif +0 -0
  853. data/sample/tkextlib/tile/themes/plastik/plastik/check-hu.gif +0 -0
  854. data/sample/tkextlib/tile/themes/plastik/plastik/check-nc.gif +0 -0
  855. data/sample/tkextlib/tile/themes/plastik/plastik/check-nu.gif +0 -0
  856. data/sample/tkextlib/tile/themes/plastik/plastik/check-pc.gif +0 -0
  857. data/sample/tkextlib/tile/themes/plastik/plastik/hsb-n.gif +0 -0
  858. data/sample/tkextlib/tile/themes/plastik/plastik/hslider-n.gif +0 -0
  859. data/sample/tkextlib/tile/themes/plastik/plastik/radio-hc.gif +0 -0
  860. data/sample/tkextlib/tile/themes/plastik/plastik/radio-hu.gif +0 -0
  861. data/sample/tkextlib/tile/themes/plastik/plastik/radio-nc.gif +0 -0
  862. data/sample/tkextlib/tile/themes/plastik/plastik/radio-nu.gif +0 -0
  863. data/sample/tkextlib/tile/themes/plastik/plastik/radio-pc.gif +0 -0
  864. data/sample/tkextlib/tile/themes/plastik/plastik/vsb-n.gif +0 -0
  865. data/sample/tkextlib/tile/themes/plastik/plastik/vslider-n.gif +0 -0
  866. data/sample/tkextlib/tile/toolbutton.tcl +152 -0
  867. data/sample/tkextlib/tkHTML/Orig_COPYRIGHT.txt +12 -0
  868. data/sample/tkextlib/tkHTML/README +12 -0
  869. data/sample/tkextlib/tkHTML/hv.rb +314 -0
  870. data/sample/tkextlib/tkHTML/page1/image1 +0 -0
  871. data/sample/tkextlib/tkHTML/page1/image10 +0 -0
  872. data/sample/tkextlib/tkHTML/page1/image11 +0 -0
  873. data/sample/tkextlib/tkHTML/page1/image12 +0 -0
  874. data/sample/tkextlib/tkHTML/page1/image13 +0 -0
  875. data/sample/tkextlib/tkHTML/page1/image14 +0 -0
  876. data/sample/tkextlib/tkHTML/page1/image2 +0 -0
  877. data/sample/tkextlib/tkHTML/page1/image3 +0 -0
  878. data/sample/tkextlib/tkHTML/page1/image4 +0 -0
  879. data/sample/tkextlib/tkHTML/page1/image5 +0 -0
  880. data/sample/tkextlib/tkHTML/page1/image6 +0 -0
  881. data/sample/tkextlib/tkHTML/page1/image7 +0 -0
  882. data/sample/tkextlib/tkHTML/page1/image8 +0 -0
  883. data/sample/tkextlib/tkHTML/page1/image9 +0 -0
  884. data/sample/tkextlib/tkHTML/page1/index.html +115 -0
  885. data/sample/tkextlib/tkHTML/page2/image1 +0 -0
  886. data/sample/tkextlib/tkHTML/page2/image10 +0 -0
  887. data/sample/tkextlib/tkHTML/page2/image11 +0 -0
  888. data/sample/tkextlib/tkHTML/page2/image12 +0 -0
  889. data/sample/tkextlib/tkHTML/page2/image13 +0 -0
  890. data/sample/tkextlib/tkHTML/page2/image14 +0 -0
  891. data/sample/tkextlib/tkHTML/page2/image15 +0 -0
  892. data/sample/tkextlib/tkHTML/page2/image16 +0 -0
  893. data/sample/tkextlib/tkHTML/page2/image17 +0 -0
  894. data/sample/tkextlib/tkHTML/page2/image18 +0 -0
  895. data/sample/tkextlib/tkHTML/page2/image19 +0 -0
  896. data/sample/tkextlib/tkHTML/page2/image2 +0 -0
  897. data/sample/tkextlib/tkHTML/page2/image20 +0 -0
  898. data/sample/tkextlib/tkHTML/page2/image21 +0 -0
  899. data/sample/tkextlib/tkHTML/page2/image22 +0 -0
  900. data/sample/tkextlib/tkHTML/page2/image23 +0 -0
  901. data/sample/tkextlib/tkHTML/page2/image24 +0 -0
  902. data/sample/tkextlib/tkHTML/page2/image25 +0 -0
  903. data/sample/tkextlib/tkHTML/page2/image26 +0 -0
  904. data/sample/tkextlib/tkHTML/page2/image27 +0 -0
  905. data/sample/tkextlib/tkHTML/page2/image28 +0 -0
  906. data/sample/tkextlib/tkHTML/page2/image29 +0 -0
  907. data/sample/tkextlib/tkHTML/page2/image3 +0 -0
  908. data/sample/tkextlib/tkHTML/page2/image30 +0 -0
  909. data/sample/tkextlib/tkHTML/page2/image31 +0 -0
  910. data/sample/tkextlib/tkHTML/page2/image32 +0 -0
  911. data/sample/tkextlib/tkHTML/page2/image33 +0 -0
  912. data/sample/tkextlib/tkHTML/page2/image34 +0 -0
  913. data/sample/tkextlib/tkHTML/page2/image35 +0 -0
  914. data/sample/tkextlib/tkHTML/page2/image36 +0 -0
  915. data/sample/tkextlib/tkHTML/page2/image37 +0 -0
  916. data/sample/tkextlib/tkHTML/page2/image38 +0 -0
  917. data/sample/tkextlib/tkHTML/page2/image39 +0 -0
  918. data/sample/tkextlib/tkHTML/page2/image4 +0 -0
  919. data/sample/tkextlib/tkHTML/page2/image5 +0 -0
  920. data/sample/tkextlib/tkHTML/page2/image6 +0 -0
  921. data/sample/tkextlib/tkHTML/page2/image7 +0 -0
  922. data/sample/tkextlib/tkHTML/page2/image8 +0 -0
  923. data/sample/tkextlib/tkHTML/page2/image9 +0 -0
  924. data/sample/tkextlib/tkHTML/page2/index.html +433 -0
  925. data/sample/tkextlib/tkHTML/page3/image1 +0 -0
  926. data/sample/tkextlib/tkHTML/page3/image10 +0 -0
  927. data/sample/tkextlib/tkHTML/page3/image11 +0 -0
  928. data/sample/tkextlib/tkHTML/page3/image12 +0 -0
  929. data/sample/tkextlib/tkHTML/page3/image13 +0 -0
  930. data/sample/tkextlib/tkHTML/page3/image14 +0 -0
  931. data/sample/tkextlib/tkHTML/page3/image2 +0 -0
  932. data/sample/tkextlib/tkHTML/page3/image3 +0 -0
  933. data/sample/tkextlib/tkHTML/page3/image4 +0 -0
  934. data/sample/tkextlib/tkHTML/page3/image5 +0 -0
  935. data/sample/tkextlib/tkHTML/page3/image6 +0 -0
  936. data/sample/tkextlib/tkHTML/page3/image7 +0 -0
  937. data/sample/tkextlib/tkHTML/page3/image8 +0 -0
  938. data/sample/tkextlib/tkHTML/page3/image9 +0 -0
  939. data/sample/tkextlib/tkHTML/page3/index.html +2787 -0
  940. data/sample/tkextlib/tkHTML/page4/image1 +0 -0
  941. data/sample/tkextlib/tkHTML/page4/image2 +0 -0
  942. data/sample/tkextlib/tkHTML/page4/image3 +0 -0
  943. data/sample/tkextlib/tkHTML/page4/image4 +0 -0
  944. data/sample/tkextlib/tkHTML/page4/image5 +0 -0
  945. data/sample/tkextlib/tkHTML/page4/image6 +0 -0
  946. data/sample/tkextlib/tkHTML/page4/image7 +0 -0
  947. data/sample/tkextlib/tkHTML/page4/image8 +0 -0
  948. data/sample/tkextlib/tkHTML/page4/image9 +0 -0
  949. data/sample/tkextlib/tkHTML/page4/index.html +768 -0
  950. data/sample/tkextlib/tkHTML/ss.rb +437 -0
  951. data/sample/tkextlib/tkimg/demo.rb +1479 -0
  952. data/sample/tkextlib/tkimg/license_terms_of_Img_extension +41 -0
  953. data/sample/tkextlib/tkimg/readme.txt +3 -0
  954. data/sample/tkextlib/tktable/Orig_LICENSE.txt +52 -0
  955. data/sample/tkextlib/tktable/basic.rb +61 -0
  956. data/sample/tkextlib/tktable/buttons.rb +77 -0
  957. data/sample/tkextlib/tktable/command.rb +90 -0
  958. data/sample/tkextlib/tktable/debug.rb +102 -0
  959. data/sample/tkextlib/tktable/dynarows.rb +100 -0
  960. data/sample/tkextlib/tktable/maxsize.rb +68 -0
  961. data/sample/tkextlib/tktable/spreadsheet.rb +138 -0
  962. data/sample/tkextlib/tktable/tcllogo.gif +0 -0
  963. data/sample/tkextlib/tktable/valid.rb +89 -0
  964. data/sample/tkextlib/treectrl/bitmaps.rb +77 -0
  965. data/sample/tkextlib/treectrl/demo.rb +1306 -0
  966. data/sample/tkextlib/treectrl/explorer.rb +431 -0
  967. data/sample/tkextlib/treectrl/help.rb +405 -0
  968. data/sample/tkextlib/treectrl/imovie.rb +131 -0
  969. data/sample/tkextlib/treectrl/layout.rb +160 -0
  970. data/sample/tkextlib/treectrl/mailwasher.rb +270 -0
  971. data/sample/tkextlib/treectrl/outlook-folders.rb +125 -0
  972. data/sample/tkextlib/treectrl/outlook-newgroup.rb +449 -0
  973. data/sample/tkextlib/treectrl/pics/big-dll.gif +0 -0
  974. data/sample/tkextlib/treectrl/pics/big-exe.gif +0 -0
  975. data/sample/tkextlib/treectrl/pics/big-file.gif +0 -0
  976. data/sample/tkextlib/treectrl/pics/big-folder.gif +0 -0
  977. data/sample/tkextlib/treectrl/pics/big-txt.gif +0 -0
  978. data/sample/tkextlib/treectrl/pics/checked.gif +0 -0
  979. data/sample/tkextlib/treectrl/pics/file.gif +0 -0
  980. data/sample/tkextlib/treectrl/pics/folder-closed.gif +0 -0
  981. data/sample/tkextlib/treectrl/pics/folder-open.gif +0 -0
  982. data/sample/tkextlib/treectrl/pics/help-book-closed.gif +0 -0
  983. data/sample/tkextlib/treectrl/pics/help-book-open.gif +0 -0
  984. data/sample/tkextlib/treectrl/pics/help-page.gif +0 -0
  985. data/sample/tkextlib/treectrl/pics/imovie-01.gif +0 -0
  986. data/sample/tkextlib/treectrl/pics/imovie-02.gif +0 -0
  987. data/sample/tkextlib/treectrl/pics/imovie-03.gif +0 -0
  988. data/sample/tkextlib/treectrl/pics/imovie-04.gif +0 -0
  989. data/sample/tkextlib/treectrl/pics/imovie-05.gif +0 -0
  990. data/sample/tkextlib/treectrl/pics/imovie-06.gif +0 -0
  991. data/sample/tkextlib/treectrl/pics/imovie-07.gif +0 -0
  992. data/sample/tkextlib/treectrl/pics/internet-check-off.gif +0 -0
  993. data/sample/tkextlib/treectrl/pics/internet-check-on.gif +0 -0
  994. data/sample/tkextlib/treectrl/pics/internet-print.gif +0 -0
  995. data/sample/tkextlib/treectrl/pics/internet-radio-off.gif +0 -0
  996. data/sample/tkextlib/treectrl/pics/internet-radio-on.gif +0 -0
  997. data/sample/tkextlib/treectrl/pics/internet-search.gif +0 -0
  998. data/sample/tkextlib/treectrl/pics/internet-security.gif +0 -0
  999. data/sample/tkextlib/treectrl/pics/mac-collapse.gif +0 -0
  1000. data/sample/tkextlib/treectrl/pics/mac-expand.gif +0 -0
  1001. data/sample/tkextlib/treectrl/pics/outlook-arrow.gif +0 -0
  1002. data/sample/tkextlib/treectrl/pics/outlook-clip.gif +0 -0
  1003. data/sample/tkextlib/treectrl/pics/outlook-deleted.gif +0 -0
  1004. data/sample/tkextlib/treectrl/pics/outlook-draft.gif +0 -0
  1005. data/sample/tkextlib/treectrl/pics/outlook-folder.gif +0 -0
  1006. data/sample/tkextlib/treectrl/pics/outlook-group.gif +0 -0
  1007. data/sample/tkextlib/treectrl/pics/outlook-inbox.gif +0 -0
  1008. data/sample/tkextlib/treectrl/pics/outlook-local.gif +0 -0
  1009. data/sample/tkextlib/treectrl/pics/outlook-main.gif +0 -0
  1010. data/sample/tkextlib/treectrl/pics/outlook-outbox.gif +0 -0
  1011. data/sample/tkextlib/treectrl/pics/outlook-read-2.gif +0 -0
  1012. data/sample/tkextlib/treectrl/pics/outlook-read.gif +0 -0
  1013. data/sample/tkextlib/treectrl/pics/outlook-sent.gif +0 -0
  1014. data/sample/tkextlib/treectrl/pics/outlook-server.gif +0 -0
  1015. data/sample/tkextlib/treectrl/pics/outlook-unread.gif +0 -0
  1016. data/sample/tkextlib/treectrl/pics/outlook-watch.gif +0 -0
  1017. data/sample/tkextlib/treectrl/pics/sky.gif +0 -0
  1018. data/sample/tkextlib/treectrl/pics/small-dll.gif +0 -0
  1019. data/sample/tkextlib/treectrl/pics/small-exe.gif +0 -0
  1020. data/sample/tkextlib/treectrl/pics/small-file.gif +0 -0
  1021. data/sample/tkextlib/treectrl/pics/small-folder.gif +0 -0
  1022. data/sample/tkextlib/treectrl/pics/small-txt.gif +0 -0
  1023. data/sample/tkextlib/treectrl/pics/unchecked.gif +0 -0
  1024. data/sample/tkextlib/treectrl/random.rb +509 -0
  1025. data/sample/tkextlib/treectrl/readme.txt +2 -0
  1026. data/sample/tkextlib/treectrl/www-options.rb +304 -0
  1027. data/sample/tkextlib/vu/Orig_LICENSE.txt +51 -0
  1028. data/sample/tkextlib/vu/README.txt +50 -0
  1029. data/sample/tkextlib/vu/canvItems.rb +91 -0
  1030. data/sample/tkextlib/vu/canvSticker.rb +83 -0
  1031. data/sample/tkextlib/vu/canvSticker2.rb +102 -0
  1032. data/sample/tkextlib/vu/dial_demo.rb +114 -0
  1033. data/sample/tkextlib/vu/m128_000.xbm +174 -0
  1034. data/sample/tkextlib/vu/oscilloscope.rb +69 -0
  1035. data/sample/tkextlib/vu/pie.rb +57 -0
  1036. data/sample/tkextlib/vu/vu_demo.rb +68 -0
  1037. data/sample/tkfrom.rb +133 -0
  1038. data/sample/tkhello.rb +11 -0
  1039. data/sample/tkline.rb +48 -0
  1040. data/sample/tkmenubutton.rb +136 -0
  1041. data/sample/tkmsgcat-load_rb.rb +103 -0
  1042. data/sample/tkmsgcat-load_rb2.rb +103 -0
  1043. data/sample/tkmsgcat-load_tk.rb +119 -0
  1044. data/sample/tkmulticolumnlist.rb +744 -0
  1045. data/sample/tkmultilistbox.rb +655 -0
  1046. data/sample/tkmultilistframe.rb +941 -0
  1047. data/sample/tkoptdb-safeTk.rb +74 -0
  1048. data/sample/tkoptdb.rb +107 -0
  1049. data/sample/tkrttimer.rb +78 -0
  1050. data/sample/tksleep_sample.rb +30 -0
  1051. data/sample/tktextframe.rb +282 -0
  1052. data/sample/tktextio.rb +1061 -0
  1053. data/sample/tktimer.rb +51 -0
  1054. data/sample/tktimer2.rb +48 -0
  1055. data/sample/tktimer3.rb +60 -0
  1056. data/sample/tktree.rb +104 -0
  1057. data/sample/tktree.tcl +305 -0
  1058. data/sample/ttk_wrapper.rb +155 -0
  1059. data/tk.gemspec +24 -0
  1060. metadata +1144 -0
@@ -0,0 +1,115 @@
1
+ # frozen_string_literal: false
2
+ # unicodeout.rb --
3
+ #
4
+ # This demonstration script shows how you can produce output (in label
5
+ # widgets) using many different alphabets.
6
+ #
7
+ # based on Tcl/Tk8.4.4 widget demos
8
+
9
+ if defined?($unicodeout_demo) && $unicodeout_demo
10
+ $unicodeout_demo.destroy
11
+ $unicodeout_demo = nil
12
+ end
13
+
14
+ $unicodeout_demo = TkToplevel.new {|w|
15
+ title("Unicode Label Demonstration")
16
+ iconname("unicodeout")
17
+ positionWindow(w)
18
+ }
19
+
20
+ base_frame = TkFrame.new($unicodeout_demo).pack(:fill=>:both, :expand=>true)
21
+
22
+ TkLabel.new(base_frame,
23
+ :font=>$font, :wraplength=>'5.4i', :justify=>:left,
24
+ :text=><<EOL).pack(:side=>:top)
25
+ This is a sample of Tk's support for languages that use non-Western \
26
+ character sets. However, what you will actually see below depends \
27
+ largely on what character sets you have installed, and what you see \
28
+ for characters that are not present varies greatly between platforms as well. \
29
+ Please try to click the 'See Code' button, \
30
+ and click the 'Rerun Demo' button after editing \
31
+ (the source file is not changed) \
32
+ the definition of @@font on the Unicodeout_SampleFrame class.
33
+ The strings are written in Tcl using UNICODE characters \
34
+ using the \\uXXXX escape so as to do so in a portable fashion.
35
+
36
+ ATTENTION:
37
+ The strings are converted to the encoded string objects \
38
+ (completed to rewrite Tcl's escapes) by Tk::UTF8_String method. \
39
+ And the Tk::UTF8_String objects are passed to the label widgets.
40
+ EOL
41
+
42
+ TkFrame.new(base_frame){|f|
43
+ pack(:side=>:bottom, :fill=>:x, :pady=>'2m')
44
+
45
+ TkButton.new(f, :text=>'Dismiss', :width=>15, :command=>proc{
46
+ $unicodeout_demo.destroy
47
+ $unicodeout_demo = nil
48
+ }).pack(:side=>:left, :expand=>true)
49
+
50
+ TkButton.new(f, :text=>'See Code', :width=>15, :command=>proc{
51
+ showCode 'unicodeout'
52
+ }).pack(:side=>:left, :expand=>true)
53
+ }
54
+
55
+ wait_msg = TkLabel.new(base_frame,
56
+ :text=>"Please wait while loading fonts...",
57
+ :font=>"Helvetica 12 italic").pack
58
+
59
+ class Unicodeout_SampleFrame < TkFrame
60
+ @@font = $font
61
+ # @@font = 'Helvetica 14'
62
+ # @@font = 'Courier 12'
63
+ # @@font = 'clearlyu 16'
64
+ # @@font = 'fixed 12'
65
+ # @@font = 'Times 12'
66
+ # @@font = 'Newspaper 12'
67
+ # @@font = '{New century schoolbook} 12'
68
+
69
+ def initialize(base)
70
+ super(base)
71
+ grid_columnconfig(1, :weight=>1)
72
+ end
73
+
74
+ def add_sample(lang, *args)
75
+ sample_txt = Tk::UTF8_String(args.join(''))
76
+ l = TkLabel.new(self, :font=>@@font, :text=>lang+':',
77
+ :anchor=>:nw, :pady=>0)
78
+ #s = TkLabel.new(self, :font=>@@font, :text=>sample_txt,
79
+ s = TkLabel.new(self, :font=>TkFont.new(@@font), :text=>sample_txt,
80
+ :anchor=>:nw, :width=>30, :pady=>0)
81
+ Tk.grid(l, s, :sticky=>:ew, :pady=>0)
82
+ l.grid_config(:padx, '1m')
83
+ end
84
+ end
85
+ f = Unicodeout_SampleFrame.new(base_frame)
86
+ f.pack(:expand=>true, :fill=>:both, :padx=>'2m', :pady=>'1m')
87
+
88
+ # Processing when some characters are missing might take a while, so make
89
+ # sure we're displaying something in the meantime...
90
+
91
+ oldCursor = $unicodeout_demo.cursor
92
+ $unicodeout_demo.cursor('watch')
93
+ Tk.update
94
+
95
+ f.add_sample('Arabic',
96
+ '\uFE94\uFEF4\uFE91\uFEAE\uFECC\uFEDF\uFE8D\uFE94',
97
+ '\uFEE4\uFEE0\uFEDC\uFEDF\uFE8D')
98
+ f.add_sample('Trad. Chinese', '\u4E2D\u570B\u7684\u6F22\u5B57')
99
+ f.add_sample('Simpl. Chinese', '\u6C49\u8BED')
100
+ f.add_sample('Greek',
101
+ '\u0395\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AE ',
102
+ '\u03B3\u03BB\u03CE\u03C3\u03C3\u03B1')
103
+ f.add_sample('Hebrew',
104
+ '\u05DD\u05D9\u05DC\u05E9\u05D5\u05E8\u05D9 ',
105
+ '\u05DC\u05D9\u05D0\u05E8\u05E9\u05D9')
106
+ f.add_sample('Japanese',
107
+ '\u65E5\u672C\u8A9E\u306E\u3072\u3089\u304C\u306A, ',
108
+ '\u6F22\u5B57\u3068\u30AB\u30BF\u30AB\u30CA')
109
+ f.add_sample('Korean', '\uB300\uD55C\uBBFC\uAD6D\uC758 \uD55C\uAE00')
110
+ f.add_sample('Russian',
111
+ '\u0420\u0443\u0441\u0441\u043A\u0438\u0439 ',
112
+ '\u044F\u0437\u044B\u043A')
113
+
114
+ wait_msg.destroy
115
+ $unicodeout_demo.cursor(oldCursor)
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: false
2
+ # vscale.rb
3
+ #
4
+ # This demonstration script shows an example with a vertical scale.
5
+
6
+ require "tkcanvas"
7
+
8
+ if defined?($vscale_demo) && $vscale_demo
9
+ $vscale_demo.destroy
10
+ $vscale_demo = nil
11
+ end
12
+
13
+ $vscale_demo = TkToplevel.new {|w|
14
+ title("Vertical Scale Demonstration")
15
+ iconname("vscale")
16
+ }
17
+ positionWindow($vscale_demo)
18
+
19
+ base_frame = TkFrame.new($vscale_demo).pack(:fill=>:both, :expand=>true)
20
+
21
+ msg = TkLabel.new(base_frame) {
22
+ font $font
23
+ wraplength '3.5i'
24
+ justify 'left'
25
+ text "An arrow and a vertical scale are displayed below. If you click or drag mouse button 1 in the scale, you can change the size of the arrow."
26
+ }
27
+ msg.pack('side'=>'top', 'padx'=>'.5c')
28
+
29
+ TkFrame.new(base_frame) {|frame|
30
+ TkButton.new(frame) {
31
+ text 'Dismiss'
32
+ command proc {
33
+ tmppath = $vscale_demo
34
+ $vscale_demo = nil
35
+ tmppath.destroy
36
+ }
37
+ }.pack('side'=>'left', 'expand'=>'yes')
38
+
39
+ TkButton.new(frame) {
40
+ text 'Show Code'
41
+ command proc { showCode 'vscale' }
42
+ }.pack('side'=>'left', 'expand'=>'yes')
43
+ }.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
44
+
45
+ def setHeight(w, height)
46
+ height = height + 21
47
+ y2 = height - 30
48
+ if y2 < 21
49
+ y2 = 21
50
+ end
51
+ w.coords 'poly',15,20,35,20,35,y2,45,y2,25,height,5,y2,15,y2,15,20
52
+ w.coords 'line',15,20,35,20,35,y2,45,y2,25,height,5,y2,15,y2,15,20
53
+ end
54
+
55
+ TkFrame.new(base_frame) {|frame|
56
+ borderwidth 10
57
+ canvas = TkCanvas.new(frame) {|c|
58
+ width 50
59
+ height 50
60
+ bd 0
61
+ highlightthickness 0
62
+ TkcPolygon.new(c, 0, 0, 1, 1, 2, 2) {
63
+ fill 'SeaGreen3'
64
+ tags 'poly'
65
+ }
66
+ TkcLine.new(c, 0, 0, 1, 1, 2, 2, 0, 0) {
67
+ fill 'black'
68
+ tags 'line'
69
+ }
70
+ }.pack('side'=>'left', 'anchor'=>'nw', 'fill'=>'y')
71
+ scale = TkScale.new(frame) {
72
+ orient 'vertical'
73
+ length 284
74
+ from 0
75
+ to 250
76
+ command proc{|value| setHeight(canvas, value)}
77
+ tickinterval 50
78
+ }.pack('side'=>'left', 'anchor'=>'ne')
79
+ scale.set 75
80
+ }.pack
@@ -0,0 +1,1087 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # widget --
4
+ # This script demonstrates the various widgets provided by Tk,
5
+ # along with many of the features of the Tk toolkit. This file
6
+ # only contains code to generate the main window for the
7
+ # application, which invokes individual demonstrations. The
8
+ # code for the actual demonstrations is contained in separate
9
+ # ".rb" files is this directory, which are sourced by this script
10
+ # as needed.
11
+
12
+ require 'tk'
13
+ # require 'tkafter'
14
+
15
+ ### $DEBUG=1 ##########
16
+
17
+ $RubyTk_WidgetDemo = true
18
+
19
+ #----------------------------------------------------------------
20
+ # The code below create the main window, consisting of a menu bar
21
+ # and a text widget that explains how to use the program, plus lists
22
+ # all of the demos as hypertext items.
23
+ #----------------------------------------------------------------
24
+
25
+ # widget demo directory
26
+ # $demo_dir = File.dirname($0)
27
+ $demo_dir = File.dirname(__FILE__)
28
+
29
+ # root
30
+ $root = TkRoot.new{title "Ruby/Tk Widget Demonstration"}
31
+
32
+ # tk
33
+ $tk_version = Tk::TK_VERSION
34
+ $tk_major_ver, $tk_minor_ver = $tk_version.split('.').map{|n| n.to_i}
35
+ $tk_patchlevel = Tk::TK_PATCHLEVEL
36
+
37
+ # tcl_platform
38
+ $tk_platform = TkVarAccess.new('tcl_platform')
39
+
40
+ #
41
+ case($tk_version)
42
+ when /^4.*/
43
+ $font = TkFont.new('-*-Helvetica-Medium-R-Normal--*-140-*-*-*-*-*-*', nil)
44
+ else
45
+ $font = TkFont.new('Helvetica -12')
46
+ end
47
+
48
+ # images
49
+ $image = {}
50
+
51
+ if $tk_major_ver >= 8
52
+ $image['refresh'] = TkPhotoImage.new(:height=>16, :format=>'GIF', :data=><<EOD)
53
+ R0lGODlhEAAQAPMAAMz/zCpnKdb/1z9mPypbKBtLGy9NMPL/9Or+6+P+4j1Y
54
+ PwQKBP7//xMLFAYBCAEBASH5BAEAAAAALAAAAAAQABAAAwR0EAD3Gn0Vyw0e
55
+ ++CncU7IIAezMA/nhUqSLJizvSdCEEjy2ZIV46AwDAoDHwPYGSoEiUJAAGJ6
56
+ EDHBNCFINW5OqABKSFk/B9lUa94IDwIFgewFMwQDQwCZQCztTgM9Sl8SOEMG
57
+ KSAthiaOjBMPDhQONBiXABEAOw==
58
+ EOD
59
+ end
60
+
61
+ if $tk_major_ver >= 8
62
+ $image['view'] = TkPhotoImage.new(:height=>16, :format=>'GIF', :data=><<EOD)
63
+ R0lGODlhEAAQAPMAAMz/zP///8DAwICAgH9/fwAAAAAAAAAAAAAAAAAAAAAA
64
+ AAAAAAAAAAAAAAAAAAAAACH5BAEAAAAALAAAAAAQABAAAwRIcMhJB7h3hM33
65
+ KFjWdQQYap1QrCaGBmrRrS4nj5b53jOgbwXBKGACoYLDIuAoHCmZyYvR1rT5
66
+ RMAq8LqcIYGsrjPsW1XOmFUEADs=
67
+ EOD
68
+ end
69
+
70
+ if $tk_major_ver >= 8
71
+ $image['delete'] = TkPhotoImage.new(:height=>16, :format=>'GIF', :data=><<EOD)
72
+ R0lGODlhEAAOAKEAAIQAAO/n3v///////yH5BAEKAAIALAAAAAAQAA4AAAIm
73
+ lI9pAKHbIHNoVhYhTdjlJ2AWKG2g+CldmB6rxo2uybYhbS80eRQAOw==
74
+ EOD
75
+ end
76
+
77
+ if $tk_major_ver >= 8
78
+ $image['print'] = TkPhotoImage.new(:height=>19, :format=>'GIF', :data=><<EOD)
79
+ R0lGODlhGgATAPcAACEQOTEpQjEpUkIpc0IxY0I5c0oxjEo5SlJCY1JCe1JK
80
+ UlpChFpCjFpGkFpSc1paa2NKc2NKnGNja2tapWtjc29KnHNanHNjc3NjrXNr
81
+ jHNrnHNzc3tjpXtrtXtzhICAgIRzvYSEjIZzqox7tYyEnIyMjJSEtZSEvZSM
82
+ lJyMtZyMvZyUlJyUrZyUvZycnKWctaWlpa2czq2lzrWtvbWtzrW1tb21xr21
83
+ 1sa9zs693s7OztbO3tbO597W1t7W7+fe7+fn5////+/n7+/v7+/v9////wAA
84
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
85
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
86
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
87
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
88
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
89
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
90
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
91
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
92
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
93
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
94
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
95
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
96
+ AAAAAAAAAAAAAAAAAAAAACH5BAEAAEEALAAAAAAaABMAQAj/AIMIHBhkg0GC
97
+ CBMGIQEiQgseQT4oeCBBAokgRYYQ0JBixg8hRIiUUEBBYYmTByBwiCBCRYwH
98
+ CxY8cKFw4AogRXLqLAJkQ80gCBBg3BkxZswTNGh4MGqgQQUMJRHCwMkTSE+D
99
+ Pn8eCKBhxIMhO3ei2OHDBw6sWSlMMMoWgwwfMDZI8GBjx44NARZwEGGi5MkS
100
+ PcIWKRGz5YgLbAco+KkQBQoJIRgjdGEVq+SaJajqtNrzMgsPCmoIzqmDgmWE
101
+ KOBuUKAAwYabYTfs4OHjY0giGyhk4MAWRI4eKyRQqPgggYUXPH4A+XBAgwoK
102
+ DiIsCFxjA9sFEVQQCRJCAYAFDJxiKhAxvMTonEFimrhhYinTBgWiCvxLNX3M
103
+ DkkpsKV5OYhjBxCMYAICAigUEAA7
104
+ EOD
105
+ end
106
+
107
+ #
108
+ if $tk_major_ver >= 8
109
+ $root.add_menubar([[['File', 0],
110
+ ['About ... ', proc{aboutBox}, 0, '<F1>'],
111
+ '---',
112
+ ['Quit', proc{exit}, 0, 'Ctrl-Q']
113
+ ]])
114
+ else
115
+ TkMenubar.new($root,
116
+ [[['File', 0],
117
+ ['About ... ', proc{aboutBox}, 0, '<F1>'],
118
+ '---',
119
+ ['Quit', proc{exit}, 0, 'Ctrl-Q']
120
+ ]]).pack('side'=>'top', 'fill'=>'x')
121
+ end
122
+ $root.bind('F1', proc{aboutBox})
123
+ $root.bind('Control-q', proc{exit})
124
+
125
+ =begin
126
+ TkFrame.new($root){|frame|
127
+ TkMenubutton.new(frame){|button|
128
+ m = TkMenu.new(button) {
129
+ add 'command', 'label'=>'Quit', 'command'=>proc{exit}, 'underline'=>0
130
+ }
131
+ menu m
132
+ text 'File'
133
+ underline 0
134
+ }.pack('side'=>'left')
135
+ }.pack('side'=>'top', 'fill'=>'x')
136
+ =end
137
+
138
+ #
139
+ if $tk_version =~ /^4\.[01]/
140
+ scr = TkScrollbar.new($root, 'orient'=>'vertical')
141
+ txt = TkText.new($root) {
142
+ wrap 'word'
143
+ width 70
144
+ height 30
145
+ font $font
146
+ setgrid 'yes'
147
+ yscrollcommand proc{|first,last| scr.set first,last}
148
+ }
149
+ scr.command(proc{|*args| txt.yview(*args)})
150
+ scr.pack('side'=>'right', 'fill'=>'y')
151
+ txt.pack('expand'=>'yes', 'fill'=>'both')
152
+ else
153
+ textFrame = TkFrame.new($root)
154
+ scr = TkScrollbar.new($root, 'orient'=>'vertical',
155
+ 'highlightthickness'=>0, 'takefocus'=>1) {
156
+ pack('in'=>textFrame, 'side'=>'right', 'fill'=>'y', 'padx'=>1)
157
+ }
158
+ txt = TkText.new($root) {
159
+ wrap 'word'
160
+ width 70
161
+ height 30
162
+ font $font
163
+ setgrid 'yes'
164
+ highlightthickness 0
165
+ padx 4
166
+ pady 2
167
+ takefocus 0
168
+ bd 1
169
+ yscrollcommand proc{|first,last| scr.set first,last}
170
+ }
171
+ scr.command(proc{|*args| txt.yview(*args)})
172
+ # txt.pack('in'=>textFrame, 'expand'=>'yes', 'fill'=>'both', 'padx'=>1)
173
+ # txt.pack('in'=>textFrame, 'expand'=>'yes', 'fill'=>'both')
174
+ # textFrame.pack('expand'=>'yes', 'fill'=>'both', 'padx'=>1, 'pady'=>2)
175
+ textFrame.pack('expand'=>'yes', 'fill'=>'both')
176
+ # $root.withdraw.deiconify
177
+ Tk.update_idletasks
178
+ txt.pack('in'=>textFrame, 'expand'=>'yes', 'fill'=>'both')
179
+
180
+ statusBar = TkFrame.new($root) {|f|
181
+ if $tk_version =~ /^4.*/
182
+ statusfont = '-*-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-*'
183
+ else
184
+ statusfont = 'Helvetica 10'
185
+ end
186
+ $statusBarLabel = \
187
+ TkLabel.new(f, 'text'=>" ", 'relief'=>'sunken', 'bd'=>1, 'anchor'=>'w',
188
+ 'font'=>statusfont) \
189
+ .pack('side'=>'left', 'padx'=>2, 'expand'=>'yes', 'fill'=>'both')
190
+ TkLabel.new(f, 'width'=>8, 'relief'=>'sunken', 'bd'=>1, 'anchor'=>'w',
191
+ 'font'=>statusfont) \
192
+ .pack('side'=>'left', 'padx'=>2)
193
+ }.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>2)
194
+ end
195
+
196
+ # Create a bunch of tags to use in the text widget, such as those for
197
+ # section titles and demo descriptions. Also define the bindings for
198
+ # tags.
199
+
200
+ if $tk_version =~ /^4.*/
201
+ tag_title = TkTextTag.new(txt, 'font'=>'-*-Helvetica-Bold-R-Normal--*-180-*-*-*-*-*-*')
202
+ else
203
+ tag_title = TkTextTag.new(txt, 'font'=>'Helvetica 18 bold')
204
+ end
205
+
206
+ # We put some "space" characters to the left and right of each demo description
207
+ # so that the descriptions are highlighted only when the mouse cursor
208
+ # is right over them (but not when the cursor is to their left or right)
209
+
210
+ tag_demospace = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c')
211
+
212
+ if TkWinfo.depth($root) == 1
213
+ tag_demo = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c',
214
+ 'underline'=>1)
215
+ $tag_visited = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c',
216
+ 'underline'=>1)
217
+ tag_hot = TkTextTag.new(txt, 'background'=>'black', 'foreground'=>'white')
218
+ else
219
+ tag_demo = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c',
220
+ 'foreground'=>'blue', 'underline'=>1)
221
+ $tag_visited = TkTextTag.new(txt, 'lmargin1'=>'1c', 'lmargin2'=>'1c',
222
+ 'foreground'=>'#303080', 'underline'=>1)
223
+ # tag_hot = TkTextTag.new(txt, 'relief'=>'raised', 'borderwidth'=>1,
224
+ # 'background'=>'SeaGreen3')
225
+ tag_hot = TkTextTag.new(txt, 'borderwidth'=>1, 'foreground'=>'red')
226
+ end
227
+
228
+ #tag_demo.bind('Button-1', proc{invoke txt, txt.index('current')})
229
+ tag_demo.bind('ButtonRelease-1',
230
+ proc{|x,y|invoke txt, txt.index("@#{x},#{y}")}, '%x %y')
231
+
232
+ lastLine = TkVariable.new("")
233
+ newLine = TkVariable.new("")
234
+ tag_demo.bind('Enter', proc{|x,y|
235
+ lastLine.value = txt.index("@#{x},#{y} linestart")
236
+ tag_hot.add(lastLine.value, "#{lastLine.value} lineend")
237
+ showStatus txt, txt.index("@#{x},#{y}")
238
+ },
239
+ '%x %y')
240
+ tag_demo.bind('Leave',
241
+ proc{
242
+ tag_hot.remove('1.0','end')
243
+ txt.configure('cursor','xterm')
244
+ $statusBarLabel.configure('text'=>"")
245
+ })
246
+ tag_demo.bind('Motion', proc{|x, y|
247
+ newLine.value = txt.index("@#{x},#{y} linestart")
248
+ if newLine.value != lastLine.value
249
+ tag_hot.remove('1.0','end')
250
+ lastLine.value = newLine.value
251
+ if ( txt.tag_names("@#{x},#{y}").find{|t|
252
+ t.kind_of?(String) && t =~ /^demo-/
253
+ } )
254
+ tag_hot.add(lastLine.value,
255
+ "#{lastLine.value} lineend -1 chars")
256
+ end
257
+ end
258
+ showStatus txt, txt.index("@#{x},#{y}")
259
+ },
260
+ '%x %y')
261
+
262
+ # Create the text for the text widget.
263
+
264
+ txt.insert('end', "Ruby/Tk Widget Demonstrations\n\n", tag_title)
265
+ txt.insert('end', <<EOT)
266
+ This application provides a front end for several short scripts that \
267
+ demonstrate what you can do with Tk widgets. Each of the numbered \
268
+ lines below describes a demonstration; you can click on it to invoke \
269
+ the demonstration. Once the demonstration window appears, you can \
270
+ click the "See Code" button to see the Ruby/Tk code that created the \
271
+ demonstration. If you wish, you can edit the code and click the \
272
+ "Rerun Demo" button in the code window to reinvoke the demonstration \
273
+ with the modified code. \
274
+ Don't worry about breaking the source code. \
275
+ Your modifications are not reflected on the original file. \
276
+ Please try many kind of changes.
277
+
278
+ Some demo scripts require the recent version of Tk library \
279
+ (e.g. Tk8.4 or later) \
280
+ If your Tk library linked to Ruby doesn't support the functions \
281
+ required by the demo script, the demo doesn't work. \
282
+ In such a case, please re-compile tcltklib with the later Tk library \
283
+ which supports the required functions.
284
+
285
+ If your Tk supports Ttk (Tile) extension (included or installed), \
286
+ please try the demo of Ttk extension (sample/tkextlib/tile/demo.rb) too.
287
+ ( Probably, Ttk extension \
288
+ #{
289
+ begin
290
+ require 'tkextlib/tile'
291
+ "is already installed on your environment"
292
+ rescue
293
+ "is not installed on your environment yet"
294
+ end
295
+ }\
296
+ . )
297
+ Ttk extension is a standard feature of Tk8.5 or later.
298
+
299
+
300
+ EOT
301
+
302
+ txt.insert('end', "Labels, buttons, checkbuttons, and radiobuttons.\n", tag_title)
303
+ txt.insert('end', " \n ", tag_demospace)
304
+ txt.insert('end', "1. Labels (text and bitmaps).\n", tag_demo, "demo-label")
305
+ txt.insert('end', " \n ", tag_demospace)
306
+ txt.insert('end', "2. Labels and UNICODE text. (if supported)\n", tag_demo, "demo-unicodeout")
307
+ txt.insert('end', " \n ", tag_demospace)
308
+ txt.insert('end', "3. Buttons.\n", tag_demo, "demo-button")
309
+ txt.insert('end', " \n ", tag_demospace)
310
+ txt.insert('end', "4. Checkbuttons (select any of a group).\n", tag_demo, "demo-check")
311
+ txt.insert('end', " \n ", tag_demospace)
312
+ txt.insert('end', "5. Checkbuttons (if supported).\n", tag_demo, "demo-check2")
313
+ txt.insert('end', " \n ", tag_demospace)
314
+ txt.insert('end', "6. Radiobuttons (select one of a group).\n", tag_demo, "demo-radio")
315
+ txt.insert('end', " \n ", tag_demospace)
316
+ txt.insert('end', "7. Radiobuttons (if supported 'compound' option).\n", tag_demo, "demo-radio2")
317
+ txt.insert('end', " \n ", tag_demospace)
318
+ txt.insert('end', "8. Radiobuttons (if supported).\n", tag_demo, "demo-radio3")
319
+ txt.insert('end', " \n ", tag_demospace)
320
+ txt.insert('end', "9. A 15-puzzle game made out of buttons.\n", tag_demo, "demo-puzzle")
321
+ txt.insert('end', " \n ", tag_demospace)
322
+ txt.insert('end', "10. Iconic buttons that use bitmaps.\n", tag_demo, "demo-icon")
323
+ txt.insert('end', " \n ", tag_demospace)
324
+ txt.insert('end', "11. Two labels displaying images.\n", tag_demo, "demo-image1")
325
+ txt.insert('end', " \n ", tag_demospace)
326
+ txt.insert('end', "12. A simple user interface for viewing images.\n", tag_demo, "demo-image2")
327
+ txt.insert('end', " \n ", tag_demospace)
328
+ txt.insert('end', "13. A simple user interface for viewing images. (if supported)\n", tag_demo, "demo-image3")
329
+ txt.insert('end', " \n ", tag_demospace)
330
+ txt.insert('end', "14. Labelled frames (if supported)\n", tag_demo, "demo-labelframe")
331
+ txt.insert('end', " \n ", tag_demospace)
332
+ txt.insert('end', "15. The simple Themed Tk widgets (require Tile/Ttk extension)\n", tag_demo, "demo-ttkbut")
333
+ txt.insert('end', " \n ", tag_demospace)
334
+
335
+ txt.insert('end', "\n")
336
+ txt.insert('end', "Listboxes\n", tag_title)
337
+ txt.insert('end', " \n ", tag_demospace)
338
+ txt.insert('end', "1. 50 states.\n", tag_demo, "demo-states")
339
+ txt.insert('end', " \n ", tag_demospace)
340
+ txt.insert('end', "2. Colors: change the color scheme for the application.\n", "#{tag_demo.id} demo-colors")
341
+ txt.insert('end', " \n ", tag_demospace)
342
+ txt.insert('end', "3. A collection of famous sayings.\n", tag_demo, "demo-sayings")
343
+ txt.insert('end', " \n ", tag_demospace)
344
+ txt.insert('end', "4. A multi-column list of contries. (require Tile/Ttk extension)\n", tag_demo, "demo-mclist")
345
+ txt.insert('end', " \n ", tag_demospace)
346
+ txt.insert('end', "5. A directory browser tree. (require Tile/Ttk extension)\n", tag_demo, "demo-tree")
347
+ txt.insert('end', " \n ", tag_demospace)
348
+
349
+ txt.insert('end', "\n")
350
+ txt.insert('end', "Entries and Spin-boxes\n", tag_title)
351
+ txt.insert('end', " \n ", tag_demospace)
352
+ txt.insert('end', "1. Without scrollbars.\n", tag_demo, "demo-entry1")
353
+ txt.insert('end', " \n ", tag_demospace)
354
+ txt.insert('end', "2. With scrollbars.\n", tag_demo, "demo-entry2")
355
+ txt.insert('end', " \n ", tag_demospace)
356
+ txt.insert('end',
357
+ "3. Validated entries and password fields. (if supported)\n",
358
+ tag_demo, "demo-entry3")
359
+ txt.insert('end', " \n ", tag_demospace)
360
+ txt.insert('end', "4. Spin-boxes. (if supported)\n", tag_demo, "demo-spin")
361
+ txt.insert('end', " \n ", tag_demospace)
362
+ txt.insert('end', "5. Combo-boxes. (require Tile/Ttk extension)\n", tag_demo, "demo-combo")
363
+ txt.insert('end', " \n ", tag_demospace)
364
+ txt.insert('end', "6. Simple Rolodex-like form.\n", tag_demo, "demo-form")
365
+ txt.insert('end', " \n ", tag_demospace)
366
+
367
+ txt.insert('end', "\n")
368
+ txt.insert('end', "Text\n", tag_title)
369
+ txt.insert('end', " \n ", tag_demospace)
370
+ txt.insert('end', "1. Basic editable text.\n", tag_demo, "demo-text")
371
+ txt.insert('end', " \n ", tag_demospace)
372
+ txt.insert('end', "2. Text display styles.\n", tag_demo, "demo-style")
373
+ txt.insert('end', " \n ", tag_demospace)
374
+ txt.insert('end', "3. Hypertext (tag bindings).\n", tag_demo, "demo-bind")
375
+ txt.insert('end', " \n ", tag_demospace)
376
+ txt.insert('end', "4. A text widget with embedded windows.\n", tag_demo, "demo-twind")
377
+ txt.insert('end', " \n ", tag_demospace)
378
+ txt.insert('end', "5. A text widget with embedded windows. (if supported)\n", tag_demo, "demo-twind2")
379
+ txt.insert('end', " \n ", tag_demospace)
380
+ txt.insert('end', "6. A search tool built with a text widget.\n", tag_demo, "demo-search")
381
+ txt.insert('end', " \n ", tag_demospace)
382
+ txt.insert('end', "7. Peering text widgets. (if supported)\n", tag_demo, "demo-textpeer")
383
+ txt.insert('end', " \n ", tag_demospace)
384
+
385
+ txt.insert('end', "\n")
386
+ txt.insert('end', "Canvases\n", tag_title)
387
+ txt.insert('end', " \n ", tag_demospace)
388
+ txt.insert('end', "1. The canvas item types.\n", tag_demo, "demo-items")
389
+ txt.insert('end', " \n ", tag_demospace)
390
+ txt.insert('end', "2. A simple 2-D plot.\n", tag_demo, "demo-plot")
391
+ txt.insert('end', " \n ", tag_demospace)
392
+ txt.insert('end', "3. Text items in canvases.\n", tag_demo, "demo-ctext")
393
+ txt.insert('end', " \n ", tag_demospace)
394
+ txt.insert('end', "4. An editor for arrowheads on canvas lines.\n", tag_demo, "demo-arrow")
395
+ txt.insert('end', " \n ", tag_demospace)
396
+ txt.insert('end', "5. A ruler with adjustable tab stops.\n", tag_demo, "demo-ruler")
397
+ txt.insert('end', " \n ", tag_demospace)
398
+ txt.insert('end', "6. A building floor plan.\n", tag_demo, "demo-floor")
399
+ txt.insert('end', " \n ", tag_demospace)
400
+ txt.insert('end', "7. A building floor plan. (another way to create canvas items)\n", tag_demo, "demo-floor2")
401
+ txt.insert('end', " \n ", tag_demospace)
402
+ txt.insert('end', "8. A simple scrollable canvas.\n", tag_demo, "demo-cscroll")
403
+ txt.insert('end', " \n ", tag_demospace)
404
+ txt.insert('end', "9. A Knight's tour of the chess board. (require Tile/Ttk extension)\n", tag_demo, "demo-knightstour")
405
+ txt.insert('end', " \n ", tag_demospace)
406
+
407
+ txt.insert('end', "\n")
408
+ txt.insert('end', "Scales and Progress Bars\n", tag_title)
409
+ txt.insert('end', " \n ", tag_demospace)
410
+ txt.insert('end', "1. Vertical scale.\n", tag_demo.id, "demo-vscale")
411
+ txt.insert('end', " \n ", tag_demospace)
412
+ txt.insert('end', "2. Horizontal scale.\n", tag_demo.id, "demo-hscale")
413
+ txt.insert('end', " \n ", tag_demospace)
414
+ txt.insert('end', "3. Progress bar. (require Tile/Ttk extension)\n", tag_demo.id, "demo-ttkprogress")
415
+ txt.insert('end', " \n ", tag_demospace)
416
+
417
+ txt.insert('end', "\n")
418
+ txt.insert('end', "Paned Windows and Notebooks\n", tag_title)
419
+ txt.insert('end', " \n ", tag_demospace)
420
+ txt.insert('end', "1. Horizontal paned window. (if supported)\n", tag_demo.id, "demo-paned1")
421
+ txt.insert('end', " \n ", tag_demospace)
422
+ txt.insert('end', "2. Vertical paned window. (if supported)\n", tag_demo.id, "demo-paned2")
423
+ txt.insert('end', " \n ", tag_demospace)
424
+ txt.insert('end', "3. Themed nested panes. (require Tile/Ttk extension)\n", tag_demo.id, "demo-ttkpane")
425
+ txt.insert('end', " \n ", tag_demospace)
426
+ txt.insert('end', "4. Notebook widget. (require Tile/Ttk extension)\n", tag_demo.id, "demo-ttknote")
427
+ txt.insert('end', " \n ", tag_demospace)
428
+
429
+ txt.insert('end', "\n")
430
+ txt.insert('end', "Menus and Toolbars\n", tag_title)
431
+ txt.insert('end', " \n ", tag_demospace)
432
+ txt.insert('end', "1. Menus and cascades.\n", tag_demo, "demo-menu")
433
+ txt.insert('end', " \n ", tag_demospace)
434
+ txt.insert('end', "2. Menus and cascades. (if supported)\n", tag_demo, "demo-menu84")
435
+ txt.insert('end', " \n ", tag_demospace)
436
+ txt.insert('end', "3. Menubuttons.\n", tag_demo, "demo-menubu")
437
+ txt.insert('end', " \n ", tag_demospace)
438
+ txt.insert('end', "4. Themed menu buttons. (require Tile/Ttk extension)\n", tag_demo, "demo-ttkmenu")
439
+ txt.insert('end', " \n ", tag_demospace)
440
+ txt.insert('end', "5. Themed toolbar. (require Tile/Ttk extension)\n", tag_demo, "demo-toolbar")
441
+ txt.insert('end', " \n ", tag_demospace)
442
+
443
+ txt.insert('end', "\n")
444
+ txt.insert('end', "Common Dialogs\n", tag_title)
445
+ txt.insert('end', " \n ", tag_demospace)
446
+ txt.insert('end', "1. Message boxes.\n", tag_demo, "demo-msgbox")
447
+ txt.insert('end', " \n ", tag_demospace)
448
+ txt.insert('end', "2. Message boxes with detail text. (if supported)\n", tag_demo, "demo-msgbox2")
449
+ txt.insert('end', " \n ", tag_demospace)
450
+ txt.insert('end', "3. File selection dialog.\n", tag_demo, "demo-filebox")
451
+ txt.insert('end', " \n ", tag_demospace)
452
+ txt.insert('end', "4. Color picker.\n", tag_demo, "demo-clrpick")
453
+ txt.insert('end', " \n ", tag_demospace)
454
+
455
+ txt.insert('end', "\n")
456
+ txt.insert('end', "Animation\n", tag_title)
457
+ txt.insert('end', " \n ", tag_demospace)
458
+ txt.insert('end', "1. Animated labels (if supported)\n", tag_demo, "demo-anilabel")
459
+ txt.insert('end', " \n ", tag_demospace)
460
+ txt.insert('end', "2. Animated wave (if supported)\n", tag_demo, "demo-aniwave")
461
+ txt.insert('end', " \n ", tag_demospace)
462
+ txt.insert('end', "3. Pendulum simulation (if supported)\n", tag_demo, "demo-pendulum")
463
+ txt.insert('end', " \n ", tag_demospace)
464
+ txt.insert('end', "4. A celebration of Rube Goldberg (if supported)\n", tag_demo, "demo-goldberg")
465
+
466
+ txt.insert('end', "\n")
467
+ txt.insert('end', "Miscellaneous\n", tag_title)
468
+ txt.insert('end', " \n ", tag_demospace)
469
+ txt.insert('end', "1. The built-in bitmaps.\n", tag_demo, "demo-bitmap")
470
+ txt.insert('end', " \n ", tag_demospace)
471
+ txt.insert('end', "2. A dialog box with a local grab.\n", tag_demo, "demo-dialog1")
472
+ txt.insert('end', " \n ", tag_demospace)
473
+ txt.insert('end', "3. A dialog box with a global grab.\n", tag_demo, "demo-dialog2")
474
+ txt.insert('end', " \n ", tag_demospace)
475
+
476
+ txt.state('disabled')
477
+ scr.focus
478
+
479
+ # positionWindow --
480
+ # This procedure is invoked by most of the demos to position a
481
+ # new demo window.
482
+ #
483
+ # Arguments:
484
+ # w - The name of the window to position.
485
+
486
+ def positionWindow(w)
487
+ w.geometry('+300+300')
488
+ end
489
+
490
+ # showVars --
491
+ # Displays the values of one or more variables in a window, and
492
+ # updates the display whenever any of the variables changes.
493
+ #
494
+ # Arguments:
495
+ # w - Name of new window to create for display.
496
+ # args - Any number of names of variables.
497
+
498
+ $showVarsWin = {}
499
+ def showVars1(parent, *args)
500
+ if $showVarsWin[parent.path]
501
+ begin
502
+ $showVarsWin[parent.path].destroy
503
+ rescue
504
+ end
505
+ end
506
+ w = TkToplevel.new(parent) {|w|
507
+ title "Variable values"
508
+ base = TkFrame.new(w).pack(:fill=>:both, :expand=>true)
509
+ TkLabel.new(base) {
510
+ text "Variable values:"
511
+ width 20
512
+ anchor 'center'
513
+ if $tk_version =~ /^4.*/
514
+ font '-Adobe-helvetica-medium-r-normal--*-180-*-*-*-*-*-*'
515
+ else
516
+ font 'Helvetica 14'
517
+ end
518
+ }.pack('side'=>'top', 'fill'=>'x')
519
+ len = 1
520
+ args.each{|vnam,vbody|
521
+ len = vnam.to_s.length if vnam.to_s.length > len
522
+ }
523
+ args.each{|vnam,vbody|
524
+ TkFrame.new(w){|f|
525
+ #TkLabel.new(f, 'text'=>"#{vnam}: ").pack('side'=>'left')
526
+ TkLabel.new(f, 'text'=>"#{vnam}: ",'width'=>len+2).pack('side'=>'left')
527
+ TkLabel.new(f, 'textvariable'=>vbody, 'anchor'=>'w')\
528
+ .pack('side'=>'left', 'expand'=>'yes', 'fill'=>'x')
529
+ }.pack('side'=>'top', 'anchor'=>'w', 'fill'=>'x')
530
+ }
531
+ TkButton.new(base) {
532
+ text "OK"
533
+ command proc{w.destroy}
534
+ }.pack('side'=>'bottom', 'pady'=>2)
535
+ }
536
+ $showVarsWin[parent.path] = w
537
+ end
538
+
539
+ def showVars2(parent, *args)
540
+ if $showVarsWin[parent.path]
541
+ begin
542
+ $showVarsWin[parent.path].destroy
543
+ rescue
544
+ end
545
+ end
546
+ $showVarsWin[parent.path] = TkToplevel.new(parent) {|top|
547
+ title "Variable values"
548
+
549
+ base = TkFrame.new(top).pack(:fill=>:both, :expand=>true)
550
+
551
+ TkLabelFrame.new(base, :text=>"Variable values:",
552
+ :font=>{:family=>'Helvetica', :size=>14}){|f|
553
+ args.each{|vnam,vbody|
554
+ TkGrid(TkLabel.new(f, :text=>"#{vnam}: ", :anchor=>'w'),
555
+ TkLabel.new(f, :textvariable=>vbody, :anchor=>'w'),
556
+ :padx=>2, :pady=>2, :sticky=>'w')
557
+ }
558
+
559
+ f.grid(:sticky=>'news', :padx=>4)
560
+ f.grid_columnconfig(1, :weight=>1)
561
+ f.grid_rowconfig(100, :weight=>1)
562
+ }
563
+ TkButton.new(base, :text=>"OK", :width=>8, :default=>:active,
564
+ :command=>proc{top.destroy}){|b|
565
+ top.bind('Return', proc{b.invoke})
566
+ top.bind('Escape', proc{b.invoke})
567
+
568
+ b.grid(:sticky=>'e', :padx=>4, :pady=>[6, 4])
569
+ }
570
+ base.grid_columnconfig(0, :weight=>1)
571
+ base.grid_rowconfig(0, :weight=>1)
572
+ }
573
+ end
574
+
575
+ if $tk_major_ver < 8
576
+ alias showVars showVars1
577
+ elsif $tk_major_ver == 8 && $tk_minor_ver < 4
578
+ alias showVars showVars1
579
+ else # ver >= 8.4
580
+ alias showVars showVars2
581
+ end
582
+
583
+ # Pseudo-Toplevel support
584
+ module PseudoToplevel_Evaluable
585
+ def pseudo_toplevel_eval(body = Proc.new)
586
+ Thread.current[:TOPLEVEL] = self
587
+ begin
588
+ body.call
589
+ ensure
590
+ Thread.current[:TOPLEVEL] = nil
591
+ end
592
+ end
593
+
594
+ def pseudo_toplevel_evaluable?
595
+ @pseudo_toplevel_evaluable
596
+ end
597
+ def pseudo_toplevel_evaluable=(mode)
598
+ @pseudo_toplevel_evaluable = (mode)? true: false
599
+ end
600
+
601
+ def self.extended(mod)
602
+ mod.__send__(:extend_object, mod)
603
+ mod.instance_variable_set('@pseudo_toplevel_evaluable', true)
604
+ end
605
+ end
606
+
607
+ class Object
608
+ alias __method_missing__ method_missing
609
+ private :__method_missing__
610
+
611
+ def method_missing(id, *args)
612
+ begin
613
+ has_top = (top = Thread.current[:TOPLEVEL]) &&
614
+ top.respond_to?(:pseudo_toplevel_evaluable?) &&
615
+ top.pseudo_toplevel_evaluable? &&
616
+ top.respond_to?(id)
617
+ rescue Exception => e
618
+ has_top = false
619
+ end
620
+
621
+ if has_top
622
+ top.__send__(id, *args)
623
+ else
624
+ __method_missing__(id, *args)
625
+ end
626
+ end
627
+ end
628
+
629
+ class Proc
630
+ def initialize(*args)
631
+ super
632
+ @__pseudo_toplevel__ = Thread.current[:TOPLEVEL]
633
+ end
634
+
635
+ alias __call__ call
636
+ def call(*args, &b)
637
+ if top = @__pseudo_toplevel__
638
+ orig_top = Thread.current[:TOPLEVEL]
639
+ Thread.current[:TOPLEVEL] = top
640
+ begin
641
+ __call__(*args, &b)
642
+ ensure
643
+ Thread.current[:TOPLEVEL] = orig_top
644
+ end
645
+ else
646
+ __call__(*args, &b)
647
+ end
648
+ end
649
+ end
650
+
651
+ def proc(&b)
652
+ Proc.new(&b)
653
+ end
654
+ def lambda(&b)
655
+ Proc.new(&b)
656
+ end
657
+
658
+ def _null_binding
659
+ Module.new.instance_eval{extend PseudoToplevel_Evaluable}
660
+ # binding
661
+ # Module.new.instance_eval{binding}
662
+ end
663
+ private :_null_binding
664
+
665
+ def eval_samplecode(code, file=nil)
666
+ #eval(code)
667
+ #_null_binding.pseudo_toplevel_eval{ eval(code) }
668
+ #Thread.new{ _null_binding.pseudo_toplevel_eval{ eval(code) } }
669
+ Thread.new{
670
+ _null_binding.pseudo_toplevel_eval{
671
+ begin
672
+ if file
673
+ eval(code, binding, "(eval:#{file})")
674
+ else
675
+ eval(code)
676
+ end
677
+ rescue Exception=>e
678
+ #p e
679
+ TkBgError.show(e.class.inspect + ': ' + e.message + "\n" +
680
+ "\n---< backtrace of Ruby side >-----\n" +
681
+ e.backtrace.join("\n") +
682
+ "\n---< backtrace of Tk side >-------")
683
+ end
684
+ }
685
+ }
686
+ Tk.update rescue nil
687
+ end
688
+
689
+ # invoke --
690
+ # This procedure is called when the user clicks on a demo description.
691
+ # It is responsible for invoking the demonstration.
692
+ #
693
+ # Arguments:
694
+ # txt - Name of text widget
695
+ # index - The index of the character that the user clicked on.
696
+ def invoke(txt, idx)
697
+ tag = txt.tag_names(idx).find{|t| t.kind_of?(String) && t =~ /^demo-/}
698
+ return unless tag
699
+
700
+ cursor = txt.cget('cursor')
701
+ txt.cursor('watch')
702
+ Tk.update rescue nil
703
+ # eval(IO.readlines("#{[$demo_dir, tag[5..-1]].join(File::Separator)}.rb").join, _null_binding)
704
+ # Tk.update
705
+ eval_samplecode(IO.readlines("#{[$demo_dir, tag[5..-1]].join(File::Separator)}.rb").join, tag[5..-1] + '.rb')
706
+ txt.cursor(cursor)
707
+
708
+ $tag_visited.add("#{idx} linestart +1 chars", "#{idx} lineend +1 chars")
709
+ end
710
+ =begin
711
+ def invoke (txt, idx)
712
+ tag = txt.tag_names(idx).find{|t| t.kind_of?(String) && t =~ /^demo-/}
713
+ return unless tag
714
+ current_cursor = txt.cget('cursor')
715
+ txt.cursor('watch')
716
+ Tk.update
717
+ # eval `cat #{tag[5..-1]}.rb`
718
+ # eval `cat #{[$demo_dir, tag[5..-1]].join(File::Separator)}.rb`
719
+ eval IO.readlines("#{[$demo_dir, tag[5..-1]].join(File::Separator)}.rb").join
720
+ Tk.update
721
+ # txt.cursor('xterm')
722
+ txt.cursor(current_cursor)
723
+
724
+ $tag_visited.add("#{idx} linestart +1 chars", "#{idx} lineend +1 chars")
725
+ end
726
+ =end
727
+ # showStatus --
728
+ #
729
+ # Show the name of the demo program in the status bar. This procedure
730
+ # is called when the user moves the cursor over a demo description.
731
+ #
732
+
733
+ def showStatus (txt, index)
734
+ tag = txt.tag_names(index).find{|t| t.kind_of?(String) && t =~ /^demo-/}
735
+ cursor = txt.cget('cursor')
736
+ unless tag
737
+ $statusBarLabel.configure('text', " ")
738
+ newcursor = 'xterm'
739
+ else
740
+ demoname = tag[5..-1]
741
+ $statusBarLabel.configure('text',
742
+ "Run the \"#{demoname}\" sample program")
743
+ newcursor = 'hand2'
744
+ end
745
+ txt.configure('cursor'=>newcursor) if cursor != newcursor
746
+ end
747
+
748
+ # showCode --
749
+ # This procedure creates a toplevel window that displays the code for
750
+ # a demonstration and allows it to be edited and reinvoked.
751
+ #
752
+ # Arguments:
753
+ # demo - The name of the demonstration's window, which can be
754
+ # used to derive the name of the file containing its code.
755
+
756
+ def showCode1(demo)
757
+ file = "#{demo}.rb"
758
+ $code_window = nil unless defined? $code_window
759
+ if $code_window == nil || TkWinfo.exist?($code_window) == false
760
+ $code_window = TkToplevel.new(nil)
761
+ f = TkFrame.new($code_window)
762
+
763
+ TkButton.new(f) {
764
+ text "Dismiss"
765
+ command proc{
766
+ $code_window.destroy
767
+ $code_window = nil
768
+ }
769
+ }.pack('side'=>'right', 'expand'=>'false', 'pady'=>2, 'padx'=>25)
770
+ TkButton.new(f) {
771
+ text "Rerun Demo"
772
+ # command proc{eval($code_text.get('1.0','end'), _null_binding)}
773
+ command proc{eval_samplecode($code_text.get('1.0','end'), '<viewer>')}
774
+ }.pack('side'=>'right', 'expand'=>'false', 'pady'=>2)
775
+
776
+ TkLabel.new(f,'text'=>'line:').pack('side'=>'left')
777
+ linenum =TkLabel.new(f,'text'=>'').pack('side'=>'left')
778
+ TkLabel.new(f,'text'=>' pos:').pack('side'=>'left')
779
+ posnum =TkLabel.new(f,'text'=>'').pack('side'=>'left')
780
+
781
+ $set_linenum = proc{|w|
782
+ line, pos = w.index('insert').split('.')
783
+ linenum.text = line
784
+ posnum.text = pos
785
+ }
786
+
787
+ f.pack('side'=>'bottom', 'expand'=>'true', 'fill'=>'x')
788
+
789
+ if $tk_version =~ /^4\.[01]/
790
+ s = TkScrollbar.new($code_window, 'orient'=>'vertical')
791
+ $code_text = TkText.new($code_window) {
792
+ height 40
793
+ setgrid 'yes'
794
+ yscrollcommand proc{|first,last| s.set first,last}
795
+ }
796
+ s.command(proc{|*args| $code_text.yview(*args)})
797
+ s.pack('side'=>'right', 'fill'=>'y')
798
+ $code_text.pack('side'=>'left', 'expand'=>'yes', 'fill'=>'both')
799
+ else
800
+ TkFrame.new($code_window) {|f|
801
+ pack('expand'=>'yes', 'fill'=>'both', 'padx'=>1, 'pady'=>1)
802
+
803
+ hs = TkScrollbar.new($code_window, 'highlightthickness'=>0,
804
+ 'orient'=>'horizontal')
805
+ vs = TkScrollbar.new($code_window, 'highlightthickness'=>0,
806
+ 'orient'=>'vertical')
807
+ $code_text = TkText.new($code_window) {|t|
808
+ height 40
809
+ wrap 'word'
810
+ xscrollcommand proc{|first,last| hs.set first,last}
811
+ yscrollcommand proc{|first,last| vs.set first,last}
812
+ setgrid 'yes'
813
+ highlightthickness 0
814
+ pady 2
815
+ padx 3
816
+ hs.command(proc{|*args| $code_text.xview(*args)})
817
+ vs.command(proc{|*args| $code_text.yview(*args)})
818
+ }
819
+
820
+ $code_text.grid('in'=>f, 'padx'=>1, 'pady'=>1, 'row'=>0, 'column'=>0,
821
+ 'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
822
+ vs.grid('in'=>f, 'padx'=>1, 'pady'=>1, 'row'=>0, 'column'=>1,
823
+ 'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
824
+ # xs.grid('in'=>f, 'padx'=>1, 'pady'=>1, 'row'=>1, 'column'=>0,
825
+ # 'rowspan'=>1, 'columnspan'=>1, 'sticky'=>'news')
826
+
827
+ # JKC 2001-07-26: segfaults under 1.7.1 (2001-06-19) [i686-linux]
828
+ TkGrid.rowconfigure(f, 0, 'weight'=>1, 'minsize'=>0)
829
+ TkGrid.columnconfigure(f, 0, 'weight'=>1, 'minsize'=>0)
830
+ }
831
+ end
832
+
833
+ btag = TkBindTag.new
834
+
835
+ btag.bind('Key', $set_linenum, '%W')
836
+ btag.bind('Button', $set_linenum, '%W')
837
+
838
+ btags = $code_text.bindtags
839
+ btags.insert(btags.index($code_text.class) + 1, btag)
840
+ $code_text.bindtags = btags
841
+
842
+ else
843
+ $code_window.deiconify
844
+ $code_window.raise
845
+ end
846
+
847
+ $code_window.title("Demo code: #{file}")
848
+ $code_window.iconname(file)
849
+ # fid = open(file, 'r')
850
+ fid = open([$demo_dir, file].join(File::Separator), 'r')
851
+ $code_text.delete('1.0', 'end')
852
+ #$code_text.insert('1.0', `cat #{file}`)
853
+ $code_text.insert('1.0', fid.read)
854
+ #$code_mark = TkTextMark.new($code_text, '1.0')
855
+ #$code_text.set_insert('1.0')
856
+ TkTextMarkInsert.new($code_text,'1.0')
857
+
858
+ $set_linenum.call($code_text)
859
+
860
+ fid.close
861
+ end
862
+
863
+ def showCode2(demo)
864
+ file = "#{demo}.rb"
865
+ $code_window = nil unless defined? $code_window
866
+ if $code_window == nil || TkWinfo.exist?($code_window) == false
867
+ $code_window = TkToplevel.new(nil)
868
+ tf = TkFrame.new($code_window)
869
+ $code_text = TkText.new(tf, :font=>'Courier 10', :height=>30,
870
+ :wrap=>'word', :bd=>1, :setgrid=>true,
871
+ :highlightthickness=>0, :pady=>2, :padx=>3)
872
+ xscr = TkScrollbar.new(tf, :bd=>1){assign($code_text)}
873
+ yscr = TkScrollbar.new(tf, :bd=>1){assign($code_text)}
874
+ TkGrid($code_text, yscr, :sticky=>'news')
875
+ #TkGrid(xscr)
876
+ tf.grid_rowconfigure(0, :weight=>1)
877
+ tf.grid_columnconfigure(0, :weight=>1)
878
+
879
+ bf = TkFrame.new($code_window)
880
+
881
+ lf = TkFrame.new(bf)
882
+ TkLabel.new(lf, :text=>'line:').pack(:side=>:left)
883
+ linenum =TkLabel.new(lf, :text=>'').pack(:side=>:left)
884
+ TkLabel.new(lf, :text=>' pos:').pack(:side=>:left)
885
+ posnum =TkLabel.new(lf, :text=>'').pack(:side=>:left)
886
+
887
+ $set_linenum = proc{|w|
888
+ line, pos = w.index('insert').split('.')
889
+ linenum.text = line
890
+ posnum.text = pos
891
+ }
892
+
893
+ b_dis = TkButton.new(bf, :text=>'Dismiss', :default=>:active,
894
+ :command=>proc{
895
+ $code_window.destroy
896
+ $code_window = nil
897
+ },
898
+ :image=>$image['delete'], :compound=>:left)
899
+ b_prn = TkButton.new(bf, :text=>'Print Code',
900
+ :command=>proc{printCode($code_text, file)},
901
+ :image=>$image['print'], :compound=>:left)
902
+ b_run = TkButton.new(bf, :text=>'Rerun Demo',
903
+ :command=>proc{
904
+ # eval($code_text.get('1.0','end'), _null_binding)
905
+ eval_samplecode($code_text.get('1.0','end'), '<viewer>')
906
+ },
907
+ :image=>$image['refresh'], :compound=>:left)
908
+
909
+ TkGrid(lf, 'x', b_run, b_prn, b_dis, :padx=>4, :pady=>[6,4])
910
+ bf.grid_columnconfigure(1, :weight=>1)
911
+
912
+ TkGrid(tf, :sticky=>'news')
913
+ TkGrid(bf, :sticky=>'ew')
914
+ $code_window.grid_columnconfigure(0, :weight=>1)
915
+ $code_window.grid_rowconfigure(0, :weight=>1)
916
+
917
+ $code_window.bind('Return', proc{|win|
918
+ b_dis.invoke unless win.kind_of?(TkText)
919
+ }, '%W')
920
+ $code_window.bindinfo('Return').each{|cmd, arg|
921
+ $code_window.bind_append('Escape', cmd, arg)
922
+ }
923
+
924
+ btag = TkBindTag.new
925
+
926
+ btag.bind('Key', $set_linenum, '%W')
927
+ btag.bind('Button', $set_linenum, '%W')
928
+ btag.bind('Configure', $set_linenum, '%W')
929
+
930
+ btags = $code_text.bindtags
931
+ btags.insert(btags.index($code_text.class) + 1, btag)
932
+ $code_text.bindtags = btags
933
+
934
+ else
935
+ $code_window.deiconify
936
+ $code_window.raise
937
+ end
938
+
939
+ $code_window.title("Demo code: #{file}")
940
+ $code_window.iconname(file)
941
+ fid = open([$demo_dir, file].join(File::Separator), 'r')
942
+ $code_text.delete('1.0', 'end')
943
+ $code_text.insert('1.0', fid.read)
944
+ TkTextMarkInsert.new($code_text,'1.0')
945
+
946
+ $set_linenum.call($code_text)
947
+
948
+ fid.close
949
+ end
950
+
951
+ if $tk_major_ver < 8
952
+ alias showCode showCode1
953
+ elsif $tk_major_ver == 8 && $tk_minor_ver < 4
954
+ alias showCode showCode1
955
+ else # ver >= 8.4
956
+ alias showCode showCode2
957
+ end
958
+
959
+
960
+ # printCode --
961
+ # Prints the source code currently displayed in the See Code dialog.
962
+ # Much thanks to Arjen Markus for this.
963
+ #
964
+ # Arguments:
965
+ # txt - Name of text widget containing code to print
966
+ # file - Name of the original file (implicitly for title)
967
+
968
+ def printCode(txt, file)
969
+ code = txt.get('1.0', 'end - 1c')
970
+ dir = '.'
971
+ dir = ENV['HOME'] if ENV['HOME']
972
+ dir = ENV['TMP'] if ENV['TMP']
973
+ dir = ENV['TEMP'] if ENV['TEMP']
974
+
975
+ fname = [dir, 'tkdemo-' + file].join(File::Separator)
976
+ open(fname, 'w'){|fid| fid.print(code)}
977
+ begin
978
+ case Tk::TCL_PLATFORM('platform')
979
+ when 'unix'
980
+ msg = `lp -c #{fname}`
981
+ unless $?.exitstatus == 0
982
+ Tk.messageBox(:title=>'Print spooling failure',
983
+ :message=>'Print spooling probably failed: ' + msg)
984
+ end
985
+ when 'windows'
986
+ begin
987
+ printTextWin32(fname)
988
+ rescue => e
989
+ Tk.messageBox(:title=>'Print spooling failure',
990
+ :message=>'Print spooling probably failed: ' +
991
+ e.message)
992
+ end
993
+ when 'macintosh'
994
+ Tk.messageBox(:title=>'Operation not Implemented',
995
+ :message=>'Oops, sorry: not implemented yet!')
996
+ else
997
+ Tk.messageBox(:title=>'Operation not Implemented',
998
+ :message=>'Wow! Unknown platform: ' +
999
+ Tk::TCL_PLATFORM('platform'))
1000
+ end
1001
+ ensure
1002
+ File.delete(fname)
1003
+ end
1004
+ end
1005
+
1006
+ # printTextWin32 --
1007
+ # Print a file under Windows
1008
+ #
1009
+ # Arguments:
1010
+ # filename - Name of the file
1011
+ #
1012
+ def printTextWin32(fname)
1013
+ require 'win32/registry'
1014
+ begin
1015
+ app = Win32::Registry::HKEY_CLASSES_ROOT['.txt']
1016
+ pcmd = nil
1017
+ Win32::Registry::HKEY_CLASSES_ROOT.open("#{app}\\shell\\print"){|reg|
1018
+ pcmd = reg['command']
1019
+ }
1020
+ rescue
1021
+ app = Tk.tk_call('auto_execok', 'notepad.exe')
1022
+ pcmd = "#{app} /p %1"
1023
+ end
1024
+
1025
+ pcmd.gsub!('%1', fname)
1026
+ puts pcmd
1027
+ cmd = Tk.tk_call('auto_execok', 'start') + ' /min ' + pcmd
1028
+
1029
+ msg = `#{cmd}`
1030
+ unless $?.exitstatus == 0
1031
+ fail RuntimeError, msg
1032
+ end
1033
+ end
1034
+
1035
+ # aboutBox
1036
+ #
1037
+ # Pops up a message box with an "about" message
1038
+ #
1039
+ def aboutBox
1040
+ Tk.messageBox('icon'=>'info', 'type'=>'ok', 'title'=>'About Widget Demo',
1041
+ 'message'=>"Ruby/Tk widget demonstration Ver.1.7.1-en\n\n" +
1042
+ "based on demos of Tk8.1 -- 8.5 " +
1043
+ "( Copyright of Tcl/Tk demos:: " +
1044
+ "(c) 1996-1997 Sun Microsystems, Inc. / " +
1045
+ "(c) 1997-2000 Ajuba Solutions, Inc. / " +
1046
+ "(c) 2001-2007 Donal K. Fellows / " +
1047
+ "(c) 2002-2007 Daniel A. Steffen )\n\n" +
1048
+ "Your Ruby & Tk Version ::\n" +
1049
+ "Ruby#{RUBY_VERSION}(#{RUBY_RELEASE_DATE})[#{RUBY_PLATFORM}] / Tk#{$tk_patchlevel}#{(Tk::JAPANIZED_TK)? '-jp': ''}\n\n" +
1050
+ "Ruby/Tk release date :: tcltklib #{TclTkLib::RELEASE_DATE}; tk #{Tk::RELEASE_DATE}")
1051
+ end
1052
+
1053
+ #########################################
1054
+ # start demos if given at command line
1055
+ no_launcher = false
1056
+ if ARGV[0] == '-n'
1057
+ ARGV.shift
1058
+ no_launcher = true if ARGV.size > 0
1059
+ else
1060
+ # show the root widget to make it lower then demo windows
1061
+ Tk.update rescue nil
1062
+ end
1063
+ ARGV.each{|cmd|
1064
+ if cmd =~ /(.*).rb/
1065
+ cmd = $1
1066
+ end
1067
+ #eval(IO.readlines("#{[$demo_dir, cmd].join(File::Separator)}.rb").join,
1068
+ # _null_binding)
1069
+ eval_samplecode(IO.readlines("#{[$demo_dir, cmd].join(File::Separator)}.rb").join, cmd + '.rb')
1070
+ }
1071
+ if no_launcher
1072
+ $root.withdraw # hide root window
1073
+ Thread.start{
1074
+ loop do
1075
+ count = 0
1076
+ $root.winfo_children.each{|w|
1077
+ count += 1 if w.kind_of?(TkToplevel)
1078
+ }
1079
+ $root.destroy if count == 0
1080
+ end
1081
+ }
1082
+ end
1083
+
1084
+ #########################################
1085
+ # start eventloop
1086
+ Tk.mainloop
1087
+