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,1061 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: false
3
+ #
4
+ # TkTextIO class :: handling I/O stream on a TkText widget
5
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
6
+ #
7
+ # NOTE: TkTextIO supports 'character' (not 'byte') access only.
8
+ # So, for example, TkTextIO#getc returns a character, TkTextIO#pos
9
+ # means the character position, TkTextIO#read(size) counts by
10
+ # characters, and so on.
11
+ # Of course, it is available to make TkTextIO class to support
12
+ # 'byte' access. However, it may break multi-byte characters.
13
+ # and then, displayed string on the text widget may be garbled.
14
+ # I think that it is not good on the supposed situation of using
15
+ # TkTextIO.
16
+ #
17
+ require 'tk'
18
+ require 'tk/text'
19
+ require 'tk/textmark'
20
+ require 'thread'
21
+
22
+ class TkTextIO < TkText
23
+ # keep safe level
24
+ @@create_queues = proc{ [Queue.new, Mutex.new, Queue.new, Mutex.new] }
25
+
26
+ OPT_DEFAULTS = {
27
+ 'mode' => nil,
28
+ 'overwrite' => false,
29
+ 'text' => nil,
30
+ 'show' => :pos,
31
+ 'wrap' => 'char',
32
+ 'sync' => true,
33
+ 'prompt' => nil,
34
+ 'prompt_cmd' => nil,
35
+ 'hist_size' => 1000,
36
+ }
37
+
38
+ def create_self(keys)
39
+ opts = _get_io_params((keys.kind_of?(Hash))? keys: {})
40
+
41
+ super(keys)
42
+
43
+ @count_var = TkVariable.new
44
+
45
+ @write_buffer = ''
46
+ @read_buffer = ''
47
+ @buf_size = 0
48
+ @buf_max = 1024
49
+
50
+ @write_buf_queue, @write_buf_mutex,
51
+ @read_buf_queue, @read_buf_mutex = @@create_queues.call
52
+
53
+ @idle_flush = TkTimer.new(:idle, 1, proc{ @flusher.run rescue nil })
54
+ @timer_flush = TkTimer.new(250, -1, proc{ @flusher.run rescue nil })
55
+
56
+ @flusher = Thread.new{ loop { Thread.stop; flush() } }
57
+
58
+ @receiver = Thread.new{
59
+ begin
60
+ loop {
61
+ str = @write_buf_queue.deq
62
+ @write_buf_mutex.synchronize { @write_buffer << str }
63
+ @idle_flush.start
64
+ }
65
+ ensure
66
+ @flusher.kill
67
+ end
68
+ }
69
+
70
+ @timer_flush.start
71
+
72
+ _setup_io(opts)
73
+ end
74
+ private :create_self
75
+
76
+ def destroy
77
+ @flusher.kill rescue nil
78
+
79
+ @idle_flush.stop rescue nil
80
+ @timer_flush.stop rescue nil
81
+
82
+ @receiver.kill rescue nil
83
+
84
+ super()
85
+ end
86
+
87
+ ####################################
88
+
89
+ def _get_io_params(keys)
90
+ opts = {}
91
+ self.class.const_get(:OPT_DEFAULTS).each{|k, v|
92
+ if keys.has_key?(k)
93
+ opts[k] = keys.delete(k)
94
+ else
95
+ opts[k] = v
96
+ end
97
+ }
98
+ opts
99
+ end
100
+
101
+ def _setup_io(opts)
102
+ unless defined? @txtpos
103
+ @txtpos = TkTextMark.new(self, '1.0')
104
+ else
105
+ @txtpos.set('1.0')
106
+ end
107
+ @txtpos.gravity = :left
108
+
109
+ @lineno = 0
110
+ @line_offset = 0
111
+
112
+ @hist_max = opts['hist_size'].to_i
113
+ @hist_index = 0
114
+ @history = Array.new(@hist_max)
115
+ @history[0] = ''
116
+
117
+ self['wrap'] = wrap
118
+
119
+ self.show_mode = opts['show']
120
+
121
+ self.value = opts['text'] if opts['text']
122
+
123
+ @overwrite = (opts['overwrite'])? true: false
124
+
125
+ @sync = opts['sync']
126
+
127
+ @prompt = opts['prompt']
128
+ @prompt_cmd = opts['prompt_cmd']
129
+
130
+ @open = {:r => true, :w => true} # default is 'r+'
131
+
132
+ @console_mode = false
133
+ @end_of_stream = false
134
+ @console_buffer = nil
135
+
136
+ case opts['mode']
137
+ when nil
138
+ # do nothing
139
+
140
+ when :console, 'console'
141
+ @console_mode = true
142
+ # @console_buffer = TkTextIO.new(:mode=>'r')
143
+ @console_buffer = self.class.new(:mode=>'r')
144
+ self.show_mode = :insert
145
+
146
+ when 'r', 'rb'
147
+ @open[:r] = true; @open[:w] = nil
148
+
149
+ when 'r+', 'rb+', 'r+b'
150
+ @open[:r] = true; @open[:w] = true
151
+
152
+ when 'w', 'wb'
153
+ @open[:r] = nil; @open[:w] = true
154
+ self.value=''
155
+
156
+ when 'w+', 'wb+', 'w+b'
157
+ @open[:r] = true; @open[:w] = true
158
+ self.value=''
159
+
160
+ when 'a', 'ab'
161
+ @open[:r] = nil; @open[:w] = true
162
+ @txtpos.set('end - 1 char')
163
+ @txtpos.gravity = :right
164
+
165
+ when 'a+', 'ab+', 'a+b'
166
+ @open[:r] = true; @open[:w] = true
167
+ @txtpos.set('end - 1 char')
168
+ @txtpos.gravity = :right
169
+
170
+ else
171
+ fail ArgumentError, "unknown mode `#{opts['mode']}'"
172
+ end
173
+
174
+ unless defined? @ins_head
175
+ @ins_head = TkTextMark.new(self, 'insert')
176
+ @ins_head.gravity = :left
177
+ end
178
+
179
+ unless defined? @ins_tail
180
+ @ins_tail = TkTextMark.new(self, 'insert')
181
+ @ins_tail.gravity = :right
182
+ end
183
+
184
+ unless defined? @tmp_mark
185
+ @tmp_mark = TkTextMark.new(self, 'insert')
186
+ @tmp_mark.gravity = :left
187
+ end
188
+
189
+ if @console_mode
190
+ _set_console_line
191
+ _setup_console_bindings
192
+ end
193
+ end
194
+ private :_get_io_params, :_setup_io
195
+
196
+ def _set_console_line
197
+ @tmp_mark.set(@ins_tail)
198
+
199
+ mark_set('insert', 'end')
200
+
201
+ prompt = ''
202
+ prompt << @prompt_cmd.call if @prompt_cmd
203
+ prompt << @prompt if @prompt
204
+ insert(@tmp_mark, prompt)
205
+
206
+ @ins_head.set(@ins_tail)
207
+ @ins_tail.set('insert')
208
+
209
+ @txtpos.set(@tmp_mark)
210
+
211
+ _see_pos
212
+ end
213
+
214
+ def _replace_console_line(str)
215
+ self.delete(@ins_head, @ins_tail)
216
+ self.insert(@ins_head, str)
217
+ end
218
+
219
+ def _get_console_line
220
+ @tmp_mark.set(@ins_tail)
221
+ s = self.get(@ins_head, @tmp_mark)
222
+ _set_console_line
223
+ s
224
+ end
225
+ private :_set_console_line, :_replace_console_line, :_get_console_line
226
+
227
+ def _cb_up
228
+ @history[@hist_index].replace(self.get(@ins_head, @ins_tail))
229
+ @hist_index += 1
230
+ @hist_index -= 1 if @hist_index >= @hist_max || !@history[@hist_index]
231
+ _replace_console_line(@history[@hist_index]) if @history[@hist_index]
232
+ Tk.callback_break
233
+ end
234
+ def _cb_down
235
+ @history[@hist_index].replace(self.get(@ins_head, @ins_tail))
236
+ @hist_index -= 1
237
+ @hist_index = 0 if @hist_index < 0
238
+ _replace_console_line(@history[@hist_index]) if @history[@hist_index]
239
+ Tk.callback_break
240
+ end
241
+ def _cb_left
242
+ if @console_mode && compare('insert', '<=', @ins_head)
243
+ mark_set('insert', @ins_head)
244
+ Tk.callback_break
245
+ end
246
+ end
247
+ def _cb_backspace
248
+ if @console_mode && compare('insert', '<=', @ins_head)
249
+ Tk.callback_break
250
+ end
251
+ end
252
+ def _cb_ctrl_a
253
+ if @console_mode
254
+ mark_set('insert', @ins_head)
255
+ Tk.callback_break
256
+ end
257
+ end
258
+ def _cb_ctrl_u
259
+ if @console_mode
260
+ mark_set('insert', @ins_head)
261
+ delete('insert', 'insert lineend')
262
+ Tk.callback_break
263
+ end
264
+ end
265
+ private :_cb_up, :_cb_down, :_cb_left, :_cb_backspace,
266
+ :_cb_ctrl_a, :_cb_ctrl_u
267
+
268
+ def _setup_console_bindings
269
+ @bindtag = TkBindTag.new
270
+
271
+ tags = self.bindtags
272
+ tags[tags.index(self)+1, 0] = @bindtag
273
+ self.bindtags = tags
274
+
275
+ @bindtag.bind('Return'){
276
+ insert('end - 1 char', "\n")
277
+ if (str = _get_console_line)
278
+ @read_buf_queue.push(str)
279
+
280
+ @history[0].replace(str.chomp)
281
+ @history.pop
282
+ @history.unshift('')
283
+ @hist_index = 0
284
+ end
285
+
286
+ Tk.update
287
+ Tk.callback_break
288
+ }
289
+ @bindtag.bind('Alt-Return'){
290
+ Tk.callback_continue
291
+ }
292
+
293
+ @bindtag.bind('FocusIn'){
294
+ if @console_mode
295
+ mark_set('insert', @ins_tail)
296
+ Tk.callback_break
297
+ end
298
+ }
299
+
300
+ ins_mark = TkTextMark.new(self, 'insert')
301
+
302
+ @bindtag.bind('ButtonPress'){
303
+ if @console_mode
304
+ ins_mark.set('insert')
305
+ end
306
+ }
307
+
308
+ @bindtag.bind('ButtonRelease-1'){
309
+ if @console_mode && compare('insert', '<=', @ins_head)
310
+ mark_set('insert', ins_mark)
311
+ Tk.callback_break
312
+ end
313
+ }
314
+
315
+ @bindtag.bind('ButtonRelease-2', '%x %y'){|x, y|
316
+ if @console_mode
317
+ # paste a text at 'insert' only
318
+ x1, y1, x2, y2 = bbox(ins_mark)
319
+ unless x == x1 && y == y1
320
+ Tk.event_generate(self, 'ButtonRelease-2', :x=>x1, :y=>y1)
321
+ Tk.callback_break
322
+ end
323
+ end
324
+ }
325
+
326
+ @bindtag.bind('Up'){ _cb_up }
327
+ @bindtag.bind('Control-p'){ _cb_up }
328
+
329
+ @bindtag.bind('Down'){ _cb_down }
330
+ @bindtag.bind('Control-n'){ _cb_down }
331
+
332
+ @bindtag.bind('Left'){ _cb_left }
333
+ @bindtag.bind('Control-b'){ _cb_left }
334
+
335
+ @bindtag.bind('BackSpace'){ _cb_backspace }
336
+ @bindtag.bind('Control-h'){ _cb_backspace }
337
+
338
+ @bindtag.bind('Home'){ _cb_ctrl_a }
339
+ @bindtag.bind('Control-a'){ _cb_ctrl_a }
340
+
341
+ @bindtag.bind('Control-u'){ _cb_ctrl_u }
342
+ end
343
+ private :_setup_console_bindings
344
+
345
+ def _block_read(size = nil, ret = '', block_mode = true)
346
+ return '' if size == 0
347
+ return nil if ! @read_buf_queue && @read_buffer.empty?
348
+ ret = '' unless ret.kind_of?(String)
349
+ ret.replace('') unless ret.empty?
350
+
351
+ if block_mode == nil # partial
352
+ if @read_buffer.empty?
353
+ ret << @read_buffer.slice!(0..-1)
354
+ return ret
355
+ end
356
+ end
357
+
358
+ if size.kind_of?(Numeric)
359
+ loop{
360
+ @read_buf_mutex.synchronize {
361
+ buf_len = @read_buffer.length
362
+ if buf_len >= size
363
+ ret << @read_buffer.slice!(0, size)
364
+ return ret
365
+ else
366
+ ret << @read_buffer.slice!(0..-1)
367
+ size -= buf_len
368
+ return ret unless @read_buf_queue
369
+ end
370
+ }
371
+ @read_buffer << @read_buf_queue.pop
372
+ }
373
+ else # readline
374
+ rs = (size)? size: $/
375
+ rs = rs.to_s if rs.kind_of?(Regexp)
376
+ loop{
377
+ @read_buf_mutex.synchronize {
378
+ if (str = @read_buffer.slice!(/\A(.*)(#{rs})/m))
379
+ ret << str
380
+ return ret
381
+ else
382
+ ret << @read_buffer.slice!(0..-1)
383
+ return ret unless @read_buf_queue
384
+ end
385
+ }
386
+ @read_buffer << @read_buf_queue.pop
387
+ }
388
+ end
389
+ end
390
+
391
+ def _block_write
392
+ ###### currently, not support
393
+ end
394
+ private :_block_read, :_block_write
395
+
396
+ ####################################
397
+
398
+ def <<(obj)
399
+ _write(obj)
400
+ self
401
+ end
402
+
403
+ def binmode
404
+ self
405
+ end
406
+
407
+ def clone
408
+ fail NotImplementedError, 'cannot clone TkTextIO'
409
+ end
410
+ def dup
411
+ fail NotImplementedError, 'cannot duplicate TkTextIO'
412
+ end
413
+
414
+ def close
415
+ close_read
416
+ close_write
417
+ nil
418
+ end
419
+ def close_read
420
+ @open[:r] = false if @open[:r]
421
+ nil
422
+ end
423
+ def close_write
424
+ @open[:w] = false if @open[:w]
425
+ nil
426
+ end
427
+
428
+ def closed?(dir=nil)
429
+ case dir
430
+ when :r, 'r'
431
+ !@open[:r]
432
+ when :w, 'w'
433
+ !@open[:w]
434
+ else
435
+ !@open[:r] && !@open[:w]
436
+ end
437
+ end
438
+
439
+ def _check_readable
440
+ fail IOError, "not opened for reading" if @open[:r].nil?
441
+ fail IOError, "closed stream" if !@open[:r]
442
+ end
443
+ def _check_writable
444
+ fail IOError, "not opened for writing" if @open[:w].nil?
445
+ fail IOError, "closed stream" if !@open[:w]
446
+ end
447
+ private :_check_readable, :_check_writable
448
+
449
+ def each_line(rs = $/)
450
+ _check_readable
451
+ while(s = self.gets(rs))
452
+ yield(s)
453
+ end
454
+ self
455
+ end
456
+ alias each each_line
457
+
458
+ def each_char
459
+ _check_readable
460
+ while(c = self.getc)
461
+ yield(c)
462
+ end
463
+ self
464
+ end
465
+ alias each_byte each_char
466
+
467
+ def eof?
468
+ compare(@txtpos, '==', 'end - 1 char')
469
+ end
470
+ alias eof eof?
471
+
472
+ def fcntl(*args)
473
+ fail NotImplementedError, "fcntl is not implemented on #{self.class}"
474
+ end
475
+
476
+ def fsync
477
+ 0
478
+ end
479
+
480
+ def fileno
481
+ nil
482
+ end
483
+
484
+ def flush
485
+ Thread.pass
486
+ if @open[:w] || ! @write_buffer.empty?
487
+ @write_buf_mutex.synchronize {
488
+ _sync_write_buf(@write_buffer)
489
+ @write_buffer[0..-1] = ''
490
+ }
491
+ end
492
+ self
493
+ end
494
+
495
+ def getc
496
+ return _block_read(1) if @console_mode
497
+
498
+ _check_readable
499
+ return nil if eof?
500
+ c = get(@txtpos)
501
+ @txtpos.set(@txtpos + '1 char')
502
+ _see_pos
503
+ c
504
+ end
505
+
506
+ def gets(rs = $/)
507
+ return _block_read(rs) if @console_mode
508
+
509
+ _check_readable
510
+ return nil if eof?
511
+ _readline(rs)
512
+ end
513
+
514
+ def ioctrl(*args)
515
+ fail NotImplementedError, 'ioctrl is not implemented on TkTextIO'
516
+ end
517
+
518
+ def isatty
519
+ false
520
+ end
521
+ def tty?
522
+ false
523
+ end
524
+
525
+ def lineno
526
+ @lineno + @line_offset
527
+ end
528
+
529
+ def lineno=(num)
530
+ @line_offset = num - @lineno
531
+ num
532
+ end
533
+
534
+ def overwrite?
535
+ @overwrite
536
+ end
537
+
538
+ def overwrite=(ovwt)
539
+ @overwrite = (ovwt)? true: false
540
+ end
541
+
542
+ def pid
543
+ nil
544
+ end
545
+
546
+ def index_pos
547
+ index(@txtpos)
548
+ end
549
+ alias tell_index index_pos
550
+
551
+ def index_pos=(idx)
552
+ @txtpos.set(idx)
553
+ @txtpos.set('end - 1 char') if compare(@txtpos, '>=', :end)
554
+ _see_pos
555
+ idx
556
+ end
557
+
558
+ def pos
559
+ s = get('1.0', @txtpos)
560
+ number(tk_call('string', 'length', s))
561
+ end
562
+ alias tell pos
563
+
564
+ def pos=(idx)
565
+ seek(idx, IO::SEEK_SET)
566
+ idx
567
+ end
568
+
569
+ def pos_gravity
570
+ @txtpos.gravity
571
+ end
572
+
573
+ def pos_gravity=(side)
574
+ @txtpos.gravity = side
575
+ side
576
+ end
577
+
578
+ def print(arg=$_, *args)
579
+ _check_writable
580
+ args.unshift(arg)
581
+ args.map!{|val| (val == nil)? 'nil': val.to_s }
582
+ str = args.join($,)
583
+ str << $\ if $\
584
+ _write(str)
585
+ nil
586
+ end
587
+ def printf(*args)
588
+ _check_writable
589
+ _write(sprintf(*args))
590
+ nil
591
+ end
592
+
593
+ def putc(c)
594
+ _check_writable
595
+ c = c.chr if c.kind_of?(Fixnum)
596
+ _write(c)
597
+ c
598
+ end
599
+
600
+ def puts(*args)
601
+ _check_writable
602
+ if args.empty?
603
+ _write("\n")
604
+ return nil
605
+ end
606
+ args.each{|arg|
607
+ if arg == nil
608
+ _write("nil\n")
609
+ elsif arg.kind_of?(Array)
610
+ puts(*arg)
611
+ elsif arg.kind_of?(String)
612
+ _write(arg.chomp)
613
+ _write("\n")
614
+ else
615
+ begin
616
+ arg = arg.to_ary
617
+ puts(*arg)
618
+ rescue
619
+ puts(arg.to_s)
620
+ end
621
+ end
622
+ }
623
+ nil
624
+ end
625
+
626
+ def _read(len)
627
+ epos = @txtpos + "#{len} char"
628
+ s = get(@txtpos, epos)
629
+ @txtpos.set(epos)
630
+ @txtpos.set('end - 1 char') if compare(@txtpos, '>=', :end)
631
+ _see_pos
632
+ s
633
+ end
634
+ private :_read
635
+
636
+ def read(len=nil, buf=nil)
637
+ return _block_read(len, buf) if @console_mode
638
+
639
+ _check_readable
640
+ if len
641
+ return "" if len == 0
642
+ return nil if eof?
643
+ s = _read(len)
644
+ else
645
+ s = get(@txtpos, 'end - 1 char')
646
+ @txtpos.set('end - 1 char')
647
+ _see_pos
648
+ end
649
+ buf.replace(s) if buf.kind_of?(String)
650
+ s
651
+ end
652
+
653
+ def readchar
654
+ return _block_read(1) if @console_mode
655
+
656
+ _check_readable
657
+ fail EOFError if eof?
658
+ c = get(@txtpos)
659
+ @txtpos.set(@txtpos + '1 char')
660
+ _see_pos
661
+ c
662
+ end
663
+
664
+ def _readline(rs = $/)
665
+ if rs == nil
666
+ s = get(@txtpos, 'end - 1 char')
667
+ @txtpos.set('end - 1 char')
668
+ elsif rs == ''
669
+ @count_var.value # make it global
670
+ idx = tksearch_with_count([:regexp], @count_var,
671
+ "\n(\n)+", @txtpos, 'end - 1 char')
672
+ if idx
673
+ s = get(@txtpos, idx) << "\n"
674
+ @txtpos.set("#{idx} + #{@count_var.value} char")
675
+ @txtpos.set('end - 1 char') if compare(@txtpos, '>=', :end)
676
+ else
677
+ s = get(@txtpos, 'end - 1 char')
678
+ @txtpos.set('end - 1 char')
679
+ end
680
+ else
681
+ @count_var.value # make it global
682
+ idx = tksearch_with_count(@count_var, rs, @txtpos, 'end - 1 char')
683
+ if idx
684
+ s = get(@txtpos, "#{idx} + #{@count_var.value} char")
685
+ @txtpos.set("#{idx} + #{@count_var.value} char")
686
+ @txtpos.set('end - 1 char') if compare(@txtpos, '>=', :end)
687
+ else
688
+ s = get(@txtpos, 'end - 1 char')
689
+ @txtpos.set('end - 1 char')
690
+ end
691
+ end
692
+
693
+ _see_pos
694
+ @lineno += 1
695
+ $_ = s
696
+ end
697
+ private :_readline
698
+
699
+ def readline(rs = $/)
700
+ return _block_readline(rs) if @console_mode
701
+
702
+ _check_readable
703
+ fail EOFError if eof?
704
+ _readline(rs)
705
+ end
706
+
707
+ def readlines(rs = $/)
708
+ if @console_mode
709
+ lines = []
710
+ while (line = _block_readline(rs))
711
+ lines << line
712
+ end
713
+ return lines
714
+ end
715
+
716
+ _check_readable
717
+ lines = []
718
+ until(eof?)
719
+ lines << _readline(rs)
720
+ end
721
+ $_ = nil
722
+ lines
723
+ end
724
+
725
+ def readpartial(maxlen, buf=nil)
726
+ #return @console_buffer.readpartial(maxlen, buf) if @console_mode
727
+ return _block_read(maxlen, buf, nil) if @console_mode
728
+
729
+ _check_readable
730
+ fail EOFError if eof?
731
+ s = _read(maxlen)
732
+ buf.replace(s) if buf.kind_of?(String)
733
+ s
734
+ end
735
+
736
+ def reopen(*args)
737
+ fail NotImplementedError, 'reopen is not implemented on TkTextIO'
738
+ end
739
+
740
+ def rewind
741
+ @txtpos.set('1.0')
742
+ _see_pos
743
+ @lineno = 0
744
+ @line_offset = 0
745
+ self
746
+ end
747
+
748
+ def seek(offset, whence=IO::SEEK_SET)
749
+ case whence
750
+ when IO::SEEK_SET
751
+ offset = "1.0 + #{offset} char" if offset.kind_of?(Numeric)
752
+ @txtpos.set(offset)
753
+
754
+ when IO::SEEK_CUR
755
+ offset = "#{offset} char" if offset.kind_of?(Numeric)
756
+ @txtpos.set(@txtpos + offset)
757
+
758
+ when IO::SEEK_END
759
+ offset = "#{offset} char" if offset.kind_of?(Numeric)
760
+ @txtpos.set("end - 1 char + #{offset}")
761
+
762
+ else
763
+ fail Errno::EINVAL, 'invalid whence argument'
764
+ end
765
+
766
+ @txtpos.set('end - 1 char') if compare(@txtpos, '>=', :end)
767
+ _see_pos
768
+
769
+ 0
770
+ end
771
+ alias sysseek seek
772
+
773
+ def _see_pos
774
+ see(@show) if @show
775
+ end
776
+ private :_see_pos
777
+
778
+ def show_mode
779
+ (@show == @txtpos)? :pos : @show
780
+ end
781
+
782
+ def show_mode=(mode)
783
+ # define show mode when file position is changed.
784
+ # mode == :pos or "pos" or true :: see current file position.
785
+ # mode == :insert or "insert" :: see insert cursor position.
786
+ # mode == nil or false :: do nothing
787
+ # else see 'mode' position ('mode' should be text index or mark)
788
+ case mode
789
+ when :pos, 'pos', true
790
+ @show = @txtpos
791
+ when :insert, 'insert'
792
+ @show = :insert
793
+ when nil, false
794
+ @show = false
795
+ else
796
+ begin
797
+ index(mode)
798
+ rescue
799
+ fail ArgumentError, 'invalid show-position'
800
+ end
801
+ @show = mode
802
+ end
803
+
804
+ _see_pos
805
+
806
+ mode
807
+ end
808
+
809
+ def stat
810
+ fail NotImplementedError, 'stat is not implemented on TkTextIO'
811
+ end
812
+
813
+ def sync
814
+ @sync
815
+ end
816
+
817
+ def sync=(mode)
818
+ @sync = mode
819
+ end
820
+
821
+ def sysread(len, buf=nil)
822
+ return _block_read(len, buf) if @console_mode
823
+
824
+ _check_readable
825
+ fail EOFError if eof?
826
+ s = _read(len)
827
+ buf.replace(s) if buf.kind_of?(String)
828
+ s
829
+ end
830
+
831
+ def syswrite(obj)
832
+ _write(obj)
833
+ end
834
+
835
+ def to_io
836
+ self
837
+ end
838
+
839
+ def truncate(len)
840
+ delete("1.0 + #{len} char", :end)
841
+ 0
842
+ end
843
+
844
+ def ungetc(c)
845
+ if @console_mode
846
+ @read_buf_mutex.synchronize {
847
+ @read_buffer[0,0] = c.chr
848
+ }
849
+ return nil
850
+ end
851
+
852
+ _check_readable
853
+ c = c.chr if c.kind_of?(Fixnum)
854
+ if compare(@txtpos, '>', '1.0')
855
+ @txtpos.set(@txtpos - '1 char')
856
+ delete(@txtpos)
857
+ insert(@txtpos, tk_call('string', 'range', c, 0, 1))
858
+ @txtpos.set(@txtpos - '1 char') if @txtpos.gravity == 'right'
859
+ _see_pos
860
+ else
861
+ fail IOError, 'cannot ungetc at head of stream'
862
+ end
863
+ nil
864
+ end
865
+
866
+ =begin
867
+ def _write(obj)
868
+ #s = _get_eval_string(obj)
869
+ s = (obj.kind_of?(String))? obj: obj.to_s
870
+ n = number(tk_call('string', 'length', s))
871
+ delete(@txtpos, @txtpos + "#{n} char") if @overwrite
872
+ self.insert(@txtpos, s)
873
+ @txtpos.set(@txtpos + "#{n} char")
874
+ @txtpos.set('end - 1 char') if compare(@txtpos, '>=', :end)
875
+ _see_pos
876
+ Tk.update if @sync
877
+ n
878
+ end
879
+ private :_write
880
+ =end
881
+ #=begin
882
+ def _sync_write_buf(s)
883
+ if (n = number(tk_call('string', 'length', s))) > 0
884
+ delete(@txtpos, @txtpos + "#{n} char") if @overwrite
885
+ self.insert(@txtpos, s)
886
+ #Tk.update
887
+
888
+ @txtpos.set(@txtpos + "#{n} char")
889
+ @txtpos.set('end - 1 char') if compare(@txtpos, '>=', :end)
890
+
891
+ @ins_head.set(@txtpos) if compare(@txtpos, '>', @ins_head)
892
+
893
+ _see_pos
894
+ end
895
+ self
896
+ end
897
+ private :_sync_write_buf
898
+
899
+ def _write(obj)
900
+ s = (obj.kind_of?(String))? obj: obj.to_s
901
+ n = number(tk_call('string', 'length', s))
902
+ @write_buf_queue.enq(s)
903
+ if @sync
904
+ Thread.pass
905
+ Tk.update
906
+ end
907
+ n
908
+ end
909
+ private :_write
910
+ #=end
911
+
912
+ def write(obj)
913
+ _check_writable
914
+ _write(obj)
915
+ end
916
+ end
917
+
918
+ ####################
919
+ # TEST
920
+ ####################
921
+ if __FILE__ == $0
922
+ ev_loop = Thread.new{Tk.mainloop}
923
+
924
+ f = TkFrame.new.pack
925
+ #tio = TkTextIO.new(f, :show=>:nil,
926
+ #tio = TkTextIO.new(f, :show=>:pos,
927
+ tio = TkTextIO.new(f, :show=>:insert,
928
+ :text=>">>> This is an initial text line. <<<\n\n"){
929
+ # yscrollbar(TkScrollbar.new(f).pack(:side=>:right, :fill=>:y))
930
+ pack(:side=>:left, :fill=>:both, :expand=>true)
931
+ }
932
+
933
+ Tk.update
934
+
935
+ $stdin = tio
936
+ $stdout = tio
937
+ $stderr = tio
938
+
939
+ STDOUT.print("\n========= TkTextIO#gets for initial text ========\n\n")
940
+
941
+ while(s = gets)
942
+ STDOUT.print(s)
943
+ end
944
+
945
+ STDOUT.print("\n============ put strings to TkTextIO ===========\n\n")
946
+
947
+ puts "On this sample, a text widget works as if it is a I/O stream."
948
+ puts "Please see the code."
949
+ puts
950
+ printf("printf message: %d %X\n", 123456, 255)
951
+ puts
952
+ printf("(output by 'p' method) This TkTextIO object is ...\n")
953
+ p tio
954
+ print(" [ Current wrap mode of this object is 'char'. ]\n")
955
+ puts
956
+ warn("This is a warning message generated by 'warn' method.")
957
+ puts
958
+ puts "current show_mode is #{tio.show_mode}."
959
+ if tio.show_mode == :pos
960
+ puts "So, you can see the current file position on this text widget."
961
+ else
962
+ puts "So, you can see the position '#{tio.show_mode}' on this text widget."
963
+ end
964
+ print("Please scroll up this text widget to see the head of lines.\n")
965
+ print("---------------------------------------------------------\n")
966
+
967
+ STDOUT.print("\n=============== TkTextIO#readlines =============\n\n")
968
+
969
+ tio.seek(0)
970
+ lines = readlines
971
+ STDOUT.puts(lines.inspect)
972
+
973
+ STDOUT.print("\n================== TkTextIO#each ===============\n\n")
974
+
975
+ tio.rewind
976
+ tio.each{|line| STDOUT.printf("%2d: %s\n", tio.lineno, line.chomp)}
977
+
978
+ STDOUT.print("\n================================================\n\n")
979
+
980
+ STDOUT.print("\n========= reverse order (seek by lines) ========\n\n")
981
+
982
+ tio.seek(-1, IO::SEEK_END)
983
+ begin
984
+ begin
985
+ tio.seek(:linestart, IO::SEEK_CUR)
986
+ rescue
987
+ # maybe use old version of tk/textmark.rb
988
+ tio.seek('0 char linestart', IO::SEEK_CUR)
989
+ end
990
+ STDOUT.print(gets)
991
+ tio.seek('-1 char linestart -1 char', IO::SEEK_CUR)
992
+ end while(tio.pos > 0)
993
+
994
+ STDOUT.print("\n================================================\n\n")
995
+
996
+ tio.seek(0, IO::SEEK_END)
997
+
998
+ STDOUT.print("tio.sync == #{tio.sync}\n")
999
+ # tio.sync = false
1000
+ # STDOUT.print("tio.sync == #{tio.sync}\n")
1001
+
1002
+ (0..10).each{|i|
1003
+ STDOUT.print("#{i}\n")
1004
+ s = ''
1005
+ (0..1000).each{ s << '*' }
1006
+ print(s)
1007
+ }
1008
+ print("\n")
1009
+ print("\n=========================================================\n\n")
1010
+
1011
+ s = ''
1012
+ timer = TkTimer.new(:idle, -1, proc{
1013
+ #STDOUT.print("idle call\n")
1014
+ unless s.empty?
1015
+ print(s)
1016
+ s = ''
1017
+ end
1018
+ }).start
1019
+ (0..10).each{|i|
1020
+ STDOUT.print("#{i}\n")
1021
+ (0..1000).each{ s << '*' }
1022
+ }
1023
+ # timer.stop
1024
+ until s.empty?
1025
+ sleep 0.1
1026
+ end
1027
+ timer.stop
1028
+
1029
+ =begin
1030
+ tio.sync = false
1031
+ print("\n")
1032
+ #(0..10000).each{ putc('*') }
1033
+ (0..10).each{|i|
1034
+ STDOUT.print("#{i}\n")
1035
+ (0..1000).each{ putc('*') }
1036
+ }
1037
+
1038
+ (0..10).each{|i|
1039
+ STDOUT.print("#{i}\n")
1040
+ s = ''
1041
+ (0..1000).each{ s << '*' }
1042
+ print(s)
1043
+ }
1044
+ =end
1045
+
1046
+ num = 0
1047
+ # io = TkTextIO.new(:mode=>:console, :prompt=>'').pack
1048
+ #=begin
1049
+ io = TkTextIO.new(:mode=>:console,
1050
+ :prompt_cmd=>proc{
1051
+ s = "[#{num}]"
1052
+ num += 1
1053
+ s
1054
+ },
1055
+ :prompt=>'-> ').pack
1056
+ #=end
1057
+ Thread.new{loop{sleep 2; io.puts 'hoge'}}
1058
+ Thread.new{loop{p io.gets}}
1059
+
1060
+ ev_loop.join
1061
+ end