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,44 @@
1
+ # frozen_string_literal: false
2
+ #
3
+ # tk/tagfont.rb : control font of tags
4
+ #
5
+ require 'tk'
6
+
7
+ module TkTreatTagFont
8
+ def font_configinfo
9
+ @parent.tagfont_configinfo(@id)
10
+ end
11
+ # alias font font_configinfo
12
+
13
+ def font_configure(slot)
14
+ @parent.tagfont_configure(@id, slot)
15
+ self
16
+ end
17
+
18
+ def latinfont_configure(ltn, keys=nil)
19
+ @parent.latintagfont_configure(@id, ltn, keys)
20
+ self
21
+ end
22
+ alias asciifont_configure latinfont_configure
23
+
24
+ def kanjifont_configure(knj, keys=nil)
25
+ @parent.kanjitagfont_configure(@id, ltn, keys)
26
+ self
27
+ end
28
+
29
+ def font_copy(win, wintag=nil)
30
+ @parent.tagfont_copy(@id, win, wintag)
31
+ self
32
+ end
33
+
34
+ def latinfont_copy(win, wintag=nil)
35
+ @parent.latintagfont_copy(@id, win, wintag)
36
+ self
37
+ end
38
+ alias asciifont_copy latinfont_copy
39
+
40
+ def kanjifont_copy(win, wintag=nil)
41
+ @parent.kanjitagfont_copy(@id, win, wintag)
42
+ self
43
+ end
44
+ end
@@ -0,0 +1,1605 @@
1
+ # frozen_string_literal: false
2
+ #
3
+ # tk/text.rb - Tk text classes
4
+ # by Yukihiro Matsumoto <matz@caelum.co.jp>
5
+ require 'tk'
6
+ require 'tk/itemfont'
7
+ require 'tk/itemconfig'
8
+ require 'tk/scrollable'
9
+ require 'tk/txtwin_abst'
10
+
11
+ module TkTextTagConfig
12
+ include TkTreatItemFont
13
+ include TkItemConfigMethod
14
+
15
+ def __item_cget_cmd(id) # id := [ type, tagOrId ]
16
+ [self.path, id[0], 'cget', id[1]]
17
+ end
18
+ private :__item_cget_cmd
19
+
20
+ def __item_config_cmd(id) # id := [ type, tagOrId ]
21
+ [self.path, id[0], 'configure', id[1]]
22
+ end
23
+ private :__item_config_cmd
24
+
25
+ def __item_pathname(id)
26
+ if id.kind_of?(Array)
27
+ id = tagid(id[1])
28
+ end
29
+ [self.path, id].join(';')
30
+ end
31
+ private :__item_pathname
32
+
33
+ def tag_cget_tkstring(tagOrId, option)
34
+ itemcget_tkstring(['tag', tagOrId], option)
35
+ end
36
+ def tag_cget(tagOrId, option)
37
+ itemcget(['tag', tagOrId], option)
38
+ end
39
+ def tag_cget_strict(tagOrId, option)
40
+ itemcget_strict(['tag', tagOrId], option)
41
+ end
42
+ def tag_configure(tagOrId, slot, value=None)
43
+ itemconfigure(['tag', tagOrId], slot, value)
44
+ end
45
+ def tag_configinfo(tagOrId, slot=nil)
46
+ itemconfiginfo(['tag', tagOrId], slot)
47
+ end
48
+ def current_tag_configinfo(tagOrId, slot=nil)
49
+ current_itemconfiginfo(['tag', tagOrId], slot)
50
+ end
51
+
52
+ def window_cget_tkstring(tagOrId, option)
53
+ itemcget_tkstring(['window', tagOrId], option)
54
+ end
55
+ def window_cget(tagOrId, option)
56
+ itemcget(['window', tagOrId], option)
57
+ end
58
+ def window_cget_strict(tagOrId, option)
59
+ itemcget_strict(['window', tagOrId], option)
60
+ end
61
+ def window_configure(tagOrId, slot, value=None)
62
+ itemconfigure(['window', tagOrId], slot, value)
63
+ end
64
+ def window_configinfo(tagOrId, slot=nil)
65
+ itemconfiginfo(['window', tagOrId], slot)
66
+ end
67
+ def current_window_configinfo(tagOrId, slot=nil)
68
+ current_itemconfiginfo(['window', tagOrId], slot)
69
+ end
70
+
71
+ private :itemcget_tkstring, :itemcget, :itemcget_strict
72
+ private :itemconfigure, :itemconfiginfo, :current_itemconfiginfo
73
+ end
74
+
75
+ class Tk::Text<TkTextWin
76
+ ItemConfCMD = ['tag'.freeze, 'configure'.freeze].freeze
77
+ #include TkTreatTextTagFont
78
+ include TkTextTagConfig
79
+ include Scrollable
80
+
81
+ #######################################
82
+
83
+ module IndexModMethods
84
+ def +(mod)
85
+ return chars(mod) if mod.kind_of?(Numeric)
86
+
87
+ mod = mod.to_s
88
+ if mod =~ /^\s*[+-]?\d/
89
+ Tk::Text::IndexString.new(String.new(id) << ' + ' << mod)
90
+ else
91
+ Tk::Text::IndexString.new(String.new(id) << ' ' << mod)
92
+ end
93
+ end
94
+
95
+ def -(mod)
96
+ return chars(-mod) if mod.kind_of?(Numeric)
97
+
98
+ mod = mod.to_s
99
+ if mod =~ /^\s*[+-]?\d/
100
+ Tk::Text::IndexString.new(String.new(id) << ' - ' << mod)
101
+ elsif mod =~ /^\s*[-]\s+(\d.*)$/
102
+ Tk::Text::IndexString.new(String.new(id) << ' - -' << $1)
103
+ else
104
+ Tk::Text::IndexString.new(String.new(id) << ' ' << mod)
105
+ end
106
+ end
107
+
108
+ def chars(mod)
109
+ fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer)
110
+ if mod < 0
111
+ Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' chars')
112
+ else
113
+ Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' chars')
114
+ end
115
+ end
116
+ alias char chars
117
+
118
+ def display_chars(mod)
119
+ # Tk8.5 feature
120
+ fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer)
121
+ if mod < 0
122
+ Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' display chars')
123
+ else
124
+ Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' display chars')
125
+ end
126
+ end
127
+ alias display_char display_chars
128
+
129
+ def any_chars(mod)
130
+ # Tk8.5 feature
131
+ fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer)
132
+ if mod < 0
133
+ Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' any chars')
134
+ else
135
+ Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' any chars')
136
+ end
137
+ end
138
+ alias any_char any_chars
139
+
140
+ def indices(mod)
141
+ # Tk8.5 feature
142
+ fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer)
143
+ if mod < 0
144
+ Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' indices')
145
+ else
146
+ Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' indices')
147
+ end
148
+ end
149
+
150
+ def display_indices(mod)
151
+ # Tk8.5 feature
152
+ fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer)
153
+ if mod < 0
154
+ Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' display indices')
155
+ else
156
+ Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' display indices')
157
+ end
158
+ end
159
+
160
+ def any_indices(mod)
161
+ # Tk8.5 feature
162
+ fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer)
163
+ if mod < 0
164
+ Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' any indices')
165
+ else
166
+ Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' any indices')
167
+ end
168
+ end
169
+
170
+ def lines(mod)
171
+ fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer)
172
+ if mod < 0
173
+ Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' lines')
174
+ else
175
+ Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' lines')
176
+ end
177
+ end
178
+ alias line lines
179
+
180
+ def display_lines(mod)
181
+ # Tk8.5 feature
182
+ fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer)
183
+ if mod < 0
184
+ Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' display_lines')
185
+ else
186
+ Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' display lines')
187
+ end
188
+ end
189
+ alias display_line display_lines
190
+
191
+ def any_lines(mod)
192
+ # Tk8.5 feature
193
+ fail ArgumentError, 'expect Integer' unless mod.kind_of?(Integer)
194
+ if mod < 0
195
+ Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' any_lines')
196
+ else
197
+ Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' any lines')
198
+ end
199
+ end
200
+ alias any_line any_lines
201
+
202
+ def linestart
203
+ Tk::Text::IndexString.new(String.new(id) << ' linestart')
204
+ end
205
+ def lineend
206
+ Tk::Text::IndexString.new(String.new(id) << ' lineend')
207
+ end
208
+
209
+ def display_linestart
210
+ # Tk8.5 feature
211
+ Tk::Text::IndexString.new(String.new(id) << ' display linestart')
212
+ end
213
+ def display_lineend
214
+ # Tk8.5 feature
215
+ Tk::Text::IndexString.new(String.new(id) << ' display lineend')
216
+ end
217
+
218
+ def wordstart
219
+ Tk::Text::IndexString.new(String.new(id) << ' wordstart')
220
+ end
221
+ def wordend
222
+ Tk::Text::IndexString.new(String.new(id) << ' wordend')
223
+ end
224
+
225
+ def display_wordstart
226
+ # Tk8.5 feature
227
+ Tk::Text::IndexString.new(String.new(id) << ' display wordstart')
228
+ end
229
+ def display_wordend
230
+ # Tk8.5 feature
231
+ Tk::Text::IndexString.new(String.new(id) << ' display wordend')
232
+ end
233
+ end
234
+
235
+ class IndexString < String
236
+ include IndexModMethods
237
+
238
+ def self.at(x,y)
239
+ self.new("@#{x},#{y}")
240
+ end
241
+
242
+ def self.new(str)
243
+ if str.kind_of?(String)
244
+ super(str)
245
+ elsif str.kind_of?(Symbol)
246
+ super(str.to_s)
247
+ else
248
+ str
249
+ end
250
+ end
251
+
252
+ def id
253
+ self
254
+ end
255
+ end
256
+
257
+ #######################################
258
+
259
+ TkCommandNames = ['text'.freeze].freeze
260
+ WidgetClassName = 'Text'.freeze
261
+ WidgetClassNames[WidgetClassName] ||= self
262
+
263
+ def self.new(*args, &block)
264
+ obj = super(*args){}
265
+ obj.init_instance_variable
266
+ if TkCore::WITH_RUBY_VM ### Ruby 1.9 !!!!
267
+ obj.instance_exec(obj, &block) if defined? yield
268
+ else
269
+ obj.instance_eval(&block) if defined? yield
270
+ end
271
+ obj
272
+ end
273
+
274
+ def init_instance_variable
275
+ @cmdtbl = []
276
+ @tags = {}
277
+ end
278
+
279
+ def __destroy_hook__
280
+ TkTextTag::TTagID_TBL.mutex.synchronize{
281
+ TkTextTag::TTagID_TBL.delete(@path)
282
+ }
283
+ TkTextTag::TMarkID_TBL.mutex.synchronize{
284
+ TkTextMark::TMarkID_TBL.delete(@path)
285
+ }
286
+ end
287
+
288
+ def create_self(keys)
289
+ #if keys and keys != None
290
+ # #tk_call_without_enc('text', @path, *hash_kv(keys, true))
291
+ # tk_call_without_enc(self.class::TkCommandNames[0], @path,
292
+ # *hash_kv(keys, true))
293
+ #else
294
+ # #tk_call_without_enc('text', @path)
295
+ # tk_call_without_enc(self.class::TkCommandNames[0], @path)
296
+ #end
297
+ super(keys)
298
+ init_instance_variable
299
+ end
300
+ private :create_self
301
+
302
+ def __strval_optkeys
303
+ super() << 'inactiveseletcionbackground'
304
+ end
305
+ private :__strval_optkeys
306
+
307
+ def self.at(x, y)
308
+ Tk::Text::IndexString.at(x, y)
309
+ end
310
+
311
+ def at(x, y)
312
+ Tk::Text::IndexString.at(x, y)
313
+ end
314
+
315
+ def index(idx)
316
+ Tk::Text::IndexString.new(tk_send_without_enc('index',
317
+ _get_eval_enc_str(idx)))
318
+ end
319
+
320
+ def get_displaychars(*index)
321
+ # Tk8.5 feature
322
+ get('-displaychars', *index)
323
+ end
324
+
325
+ def value
326
+ _fromUTF8(tk_send_without_enc('get', "1.0", "end - 1 char"))
327
+ end
328
+
329
+ def value= (val)
330
+ tk_send_without_enc('delete', "1.0", 'end')
331
+ tk_send_without_enc('insert', "1.0", _get_eval_enc_str(val))
332
+ val
333
+ end
334
+
335
+ def clear
336
+ tk_send_without_enc('delete', "1.0", 'end')
337
+ self
338
+ end
339
+ alias erase clear
340
+
341
+ def _addcmd(cmd)
342
+ @cmdtbl.push cmd
343
+ end
344
+
345
+ def _addtag(name, obj)
346
+ @tags[name] = obj
347
+ end
348
+
349
+ def tagid(tag)
350
+ if tag.kind_of?(TkTextTag) \
351
+ || tag.kind_of?(TkTextMark) \
352
+ || tag.kind_of?(TkTextImage) \
353
+ || tag.kind_of?(TkTextWindow)
354
+ tag.id
355
+ else
356
+ tag # maybe an Array of configure parameters
357
+ end
358
+ end
359
+ private :tagid
360
+
361
+ def tagid2obj(tagid)
362
+ if @tags[tagid]
363
+ @tags[tagid]
364
+ else
365
+ tagid
366
+ end
367
+ end
368
+
369
+ def tag_names(index=None)
370
+ #tk_split_simplelist(_fromUTF8(tk_send_without_enc('tag', 'names', _get_eval_enc_str(index)))).collect{|elt|
371
+ tk_split_simplelist(tk_send_without_enc('tag', 'names', _get_eval_enc_str(index)), false, true).collect{|elt|
372
+ tagid2obj(elt)
373
+ }
374
+ end
375
+
376
+ def mark_names
377
+ #tk_split_simplelist(_fromUTF8(tk_send_without_enc('mark', 'names'))).collect{|elt|
378
+ tk_split_simplelist(tk_send_without_enc('mark', 'names'), false, true).collect{|elt|
379
+ tagid2obj(elt)
380
+ }
381
+ end
382
+
383
+ def mark_gravity(mark, direction=nil)
384
+ if direction
385
+ tk_send_without_enc('mark', 'gravity',
386
+ _get_eval_enc_str(mark), direction)
387
+ self
388
+ else
389
+ tk_send_without_enc('mark', 'gravity', _get_eval_enc_str(mark))
390
+ end
391
+ end
392
+
393
+ def mark_set(mark, index)
394
+ tk_send_without_enc('mark', 'set', _get_eval_enc_str(mark),
395
+ _get_eval_enc_str(index))
396
+ self
397
+ end
398
+ alias set_mark mark_set
399
+
400
+ def mark_unset(*marks)
401
+ tk_send_without_enc('mark', 'unset',
402
+ *(marks.collect{|mark| _get_eval_enc_str(mark)}))
403
+ self
404
+ end
405
+ alias unset_mark mark_unset
406
+
407
+ def mark_next(index)
408
+ tagid2obj(_fromUTF8(tk_send_without_enc('mark', 'next',
409
+ _get_eval_enc_str(index))))
410
+ end
411
+ alias next_mark mark_next
412
+
413
+ def mark_previous(index)
414
+ tagid2obj(_fromUTF8(tk_send_without_enc('mark', 'previous',
415
+ _get_eval_enc_str(index))))
416
+ end
417
+ alias previous_mark mark_previous
418
+
419
+ def image_cget_strict(index, slot)
420
+ case slot.to_s
421
+ when 'text', 'label', 'show', 'data', 'file'
422
+ _fromUTF8(tk_send_without_enc('image', 'cget',
423
+ _get_eval_enc_str(index), "-#{slot}"))
424
+ else
425
+ tk_tcl2ruby(_fromUTF8(tk_send_without_enc('image', 'cget',
426
+ _get_eval_enc_str(index),
427
+ "-#{slot}")))
428
+ end
429
+ end
430
+
431
+ def image_cget(index, slot)
432
+ unless TkItemConfigMethod.__IGNORE_UNKNOWN_CONFIGURE_OPTION__
433
+ image_cget_strict(index, slot)
434
+ else
435
+ begin
436
+ image_cget_strict(index, slot)
437
+ rescue => e
438
+ begin
439
+ if current_image_configinfo(index).has_key?(slot.to_s)
440
+ # not tag error & option is known -> error on known option
441
+ fail e
442
+ else
443
+ # not tag error & option is unknown
444
+ nil
445
+ end
446
+ rescue
447
+ fail e # tag error
448
+ end
449
+ end
450
+ end
451
+ end
452
+
453
+ def image_configure(index, slot, value=None)
454
+ if slot.kind_of?(Hash)
455
+ _fromUTF8(tk_send_without_enc('image', 'configure',
456
+ _get_eval_enc_str(index),
457
+ *hash_kv(slot, true)))
458
+ else
459
+ _fromUTF8(tk_send_without_enc('image', 'configure',
460
+ _get_eval_enc_str(index),
461
+ "-#{slot}",
462
+ _get_eval_enc_str(value)))
463
+ end
464
+ self
465
+ end
466
+
467
+ def image_configinfo(index, slot = nil)
468
+ if TkComm::GET_CONFIGINFO_AS_ARRAY
469
+ if slot
470
+ case slot.to_s
471
+ when 'text', 'label', 'show', 'data', 'file'
472
+ #conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}")))
473
+ conf = tk_split_simplelist(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}"), false, true)
474
+ else
475
+ #conf = tk_split_list(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}")))
476
+ conf = tk_split_list(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}"), 0, false, true)
477
+ end
478
+ conf[0] = conf[0][1..-1]
479
+ conf
480
+ else
481
+ # tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index)))).collect{|conflist|
482
+ # conf = tk_split_simplelist(conflist)
483
+ tk_split_simplelist(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index)), false, false).collect{|conflist|
484
+ conf = tk_split_simplelist(conflist, false, true)
485
+ conf[0] = conf[0][1..-1]
486
+ case conf[0]
487
+ when 'text', 'label', 'show', 'data', 'file'
488
+ else
489
+ if conf[3]
490
+ if conf[3].index('{')
491
+ conf[3] = tk_split_list(conf[3])
492
+ else
493
+ conf[3] = tk_tcl2ruby(conf[3])
494
+ end
495
+ end
496
+ if conf[4]
497
+ if conf[4].index('{')
498
+ conf[4] = tk_split_list(conf[4])
499
+ else
500
+ conf[4] = tk_tcl2ruby(conf[4])
501
+ end
502
+ end
503
+ end
504
+ conf[1] = conf[1][1..-1] if conf.size == 2 # alias info
505
+ conf
506
+ }
507
+ end
508
+ else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
509
+ if slot
510
+ case slot.to_s
511
+ when 'text', 'label', 'show', 'data', 'file'
512
+ #conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}")))
513
+ conf = tk_split_simplelist(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}"), false, true)
514
+ else
515
+ #conf = tk_split_list(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}")))
516
+ conf = tk_split_list(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}"), 0, false, true)
517
+ end
518
+ key = conf.shift[1..-1]
519
+ { key => conf }
520
+ else
521
+ ret = {}
522
+ #tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index)))).each{|conflist|
523
+ # conf = tk_split_simplelist(conflist)
524
+ tk_split_simplelist(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index)), false, false).each{|conflist|
525
+ conf = tk_split_simplelist(conflist, false, true)
526
+ key = conf.shift[1..-1]
527
+ case key
528
+ when 'text', 'label', 'show', 'data', 'file'
529
+ else
530
+ if conf[2]
531
+ if conf[2].index('{')
532
+ conf[2] = tk_split_list(conf[2])
533
+ else
534
+ conf[2] = tk_tcl2ruby(conf[2])
535
+ end
536
+ end
537
+ if conf[3]
538
+ if conf[3].index('{')
539
+ conf[3] = tk_split_list(conf[3])
540
+ else
541
+ conf[3] = tk_tcl2ruby(conf[3])
542
+ end
543
+ end
544
+ end
545
+ if conf.size == 1
546
+ ret[key] = conf[0][1..-1] # alias info
547
+ else
548
+ ret[key] = conf
549
+ end
550
+ }
551
+ ret
552
+ end
553
+ end
554
+ end
555
+
556
+ def current_image_configinfo(index, slot = nil)
557
+ if TkComm::GET_CONFIGINFO_AS_ARRAY
558
+ if slot
559
+ conf = image_configinfo(index, slot)
560
+ {conf[0] => conf[4]}
561
+ else
562
+ ret = {}
563
+ image_configinfo(index).each{|conf|
564
+ ret[conf[0]] = conf[4] if conf.size > 2
565
+ }
566
+ ret
567
+ end
568
+ else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
569
+ ret = {}
570
+ image_configinfo(index, slot).each{|k, conf|
571
+ ret[k] = conf[-1] if conf.kind_of?(Array)
572
+ }
573
+ ret
574
+ end
575
+ end
576
+
577
+ def image_names
578
+ #tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'names'))).collect{|elt|
579
+ tk_split_simplelist(tk_send_without_enc('image', 'names'), false, true).collect{|elt|
580
+ tagid2obj(elt)
581
+ }
582
+ end
583
+
584
+ def set_insert(index)
585
+ tk_send_without_enc('mark','set','insert', _get_eval_enc_str(index))
586
+ self
587
+ end
588
+
589
+ def set_current(index)
590
+ tk_send_without_enc('mark','set','current', _get_eval_enc_str(index))
591
+ self
592
+ end
593
+
594
+ def insert(index, chars, *tags)
595
+ if tags[0].kind_of?(Array)
596
+ # multiple chars-taglist argument :: str, [tag,...], str, [tag,...], ...
597
+ args = [chars]
598
+ while tags.size > 0
599
+ args << tags.shift.collect{|x|_get_eval_string(x)}.join(' ') # taglist
600
+ args << tags.shift if tags.size > 0 # chars
601
+ end
602
+ super(index, *args)
603
+ else
604
+ # single chars-taglist argument :: str, tag, tag, ...
605
+ if tags.size == 0
606
+ super(index, chars)
607
+ else
608
+ super(index, chars, tags.collect{|x|_get_eval_string(x)}.join(' '))
609
+ end
610
+ end
611
+ end
612
+
613
+ def destroy
614
+ @tags = {} unless @tags
615
+ @tags.each_value do |t|
616
+ t.destroy
617
+ end
618
+ super()
619
+ end
620
+
621
+ def backspace
622
+ self.delete 'insert'
623
+ end
624
+
625
+ def bbox(index)
626
+ list(tk_send_without_enc('bbox', _get_eval_enc_str(index)))
627
+ end
628
+
629
+ def compare(idx1, op, idx2)
630
+ bool(tk_send_without_enc('compare', _get_eval_enc_str(idx1),
631
+ op, _get_eval_enc_str(idx2)))
632
+ end
633
+
634
+ def count(idx1, idx2, *opts)
635
+ # opts are Tk8.5 feature
636
+ cnt = 0
637
+ args = opts.collect{|opt|
638
+ str = opt.to_s
639
+ cnt += 1 if str != 'update'
640
+ '-' + str
641
+ }
642
+ args << _get_eval_enc_str(idx1) << _get_eval_enc_str(idx2)
643
+ if cnt <= 1
644
+ number(tk_send_without_enc('count', *opts))
645
+ else
646
+ list(tk_send_without_enc('count', *opts))
647
+ end
648
+ end
649
+
650
+ def count_info(idx1, idx2, update=true)
651
+ # Tk8.5 feature
652
+ opts = [
653
+ :chars, :displaychars, :displayindices, :displaylines,
654
+ :indices, :lines, :xpixels, :ypixels
655
+ ]
656
+ if update
657
+ lst = count(idx1, idx2, :update, *opts)
658
+ else
659
+ lst = count(idx1, idx2, *opts)
660
+ end
661
+ info = {}
662
+ opts.each_with_index{|key, idx| info[key] = lst[idx]}
663
+ info
664
+ end
665
+
666
+ def peer_names()
667
+ # Tk8.5 feature
668
+ list(tk_send_without_enc('peer', 'names'))
669
+ end
670
+
671
+ def replace(idx1, idx2, *opts)
672
+ tk_send('replace', idx1, idx2, *opts)
673
+ self
674
+ end
675
+
676
+ def debug
677
+ bool(tk_send_without_enc('debug'))
678
+ end
679
+ def debug=(boolean)
680
+ tk_send_without_enc('debug', boolean)
681
+ #self
682
+ boolean
683
+ end
684
+
685
+ def dlineinfo(index)
686
+ list(tk_send_without_enc('dlineinfo', _get_eval_enc_str(index)))
687
+ end
688
+
689
+ def modified?
690
+ bool(tk_send_without_enc('edit', 'modified'))
691
+ end
692
+ def modified(mode)
693
+ tk_send_without_enc('edit', 'modified', mode)
694
+ self
695
+ end
696
+ def modified=(mode)
697
+ modified(mode)
698
+ mode
699
+ end
700
+
701
+ def edit_redo
702
+ tk_send_without_enc('edit', 'redo')
703
+ self
704
+ end
705
+ def edit_reset
706
+ tk_send_without_enc('edit', 'reset')
707
+ self
708
+ end
709
+ def edit_separator
710
+ tk_send_without_enc('edit', 'separator')
711
+ self
712
+ end
713
+ def edit_undo
714
+ tk_send_without_enc('edit', 'undo')
715
+ self
716
+ end
717
+
718
+ def xview_pickplace(index)
719
+ tk_send_without_enc('xview', '-pickplace', _get_eval_enc_str(index))
720
+ self
721
+ end
722
+
723
+ def yview_pickplace(index)
724
+ tk_send_without_enc('yview', '-pickplace', _get_eval_enc_str(index))
725
+ self
726
+ end
727
+
728
+ def text_copy
729
+ # Tk8.4 feature
730
+ tk_call_without_enc('tk_textCopy', @path)
731
+ self
732
+ end
733
+
734
+ def text_cut
735
+ # Tk8.4 feature
736
+ tk_call_without_enc('tk_textCut', @path)
737
+ self
738
+ end
739
+
740
+ def text_paste
741
+ # Tk8.4 feature
742
+ tk_call_without_enc('tk_textPaste', @path)
743
+ self
744
+ end
745
+
746
+ def tag_add(tag, index1, index2=None)
747
+ tk_send_without_enc('tag', 'add', _get_eval_enc_str(tag),
748
+ _get_eval_enc_str(index1),
749
+ _get_eval_enc_str(index2))
750
+ self
751
+ end
752
+ alias addtag tag_add
753
+ alias add_tag tag_add
754
+
755
+ def tag_delete(*tags)
756
+ tk_send_without_enc('tag', 'delete',
757
+ *(tags.collect{|tag| _get_eval_enc_str(tag)}))
758
+ TkTextTag::TTagID_TBL.mutex.synchronize{
759
+ if TkTextTag::TTagID_TBL[@path]
760
+ tags.each{|tag|
761
+ if tag.kind_of?(TkTextTag)
762
+ TkTextTag::TTagID_TBL[@path].delete(tag.id)
763
+ else
764
+ TkTextTag::TTagID_TBL[@path].delete(tag)
765
+ end
766
+ }
767
+ end
768
+ }
769
+ self
770
+ end
771
+ alias deltag tag_delete
772
+ alias delete_tag tag_delete
773
+
774
+ #def tag_bind(tag, seq, cmd=Proc.new, *args)
775
+ # _bind([@path, 'tag', 'bind', tag], seq, cmd, *args)
776
+ # self
777
+ #end
778
+ def tag_bind(tag, seq, *args)
779
+ # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
780
+ if TkComm._callback_entry?(args[0]) || !block_given?
781
+ cmd = args.shift
782
+ else
783
+ cmd = Proc.new
784
+ end
785
+ _bind([@path, 'tag', 'bind', tag], seq, cmd, *args)
786
+ self
787
+ end
788
+
789
+ #def tag_bind_append(tag, seq, cmd=Proc.new, *args)
790
+ # _bind_append([@path, 'tag', 'bind', tag], seq, cmd, *args)
791
+ # self
792
+ #end
793
+ def tag_bind_append(tag, seq, *args)
794
+ # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
795
+ if TkComm._callback_entry?(args[0]) || !block_given?
796
+ cmd = args.shift
797
+ else
798
+ cmd = Proc.new
799
+ end
800
+ _bind_append([@path, 'tag', 'bind', tag], seq, cmd, *args)
801
+ self
802
+ end
803
+
804
+ def tag_bind_remove(tag, seq)
805
+ _bind_remove([@path, 'tag', 'bind', tag], seq)
806
+ self
807
+ end
808
+
809
+ def tag_bindinfo(tag, context=nil)
810
+ _bindinfo([@path, 'tag', 'bind', tag], context)
811
+ end
812
+
813
+ =begin
814
+ def tag_cget(tag, key)
815
+ case key.to_s
816
+ when 'text', 'label', 'show', 'data', 'file'
817
+ tk_call_without_enc(@path, 'tag', 'cget',
818
+ _get_eval_enc_str(tag), "-#{key}")
819
+ when 'font', 'kanjifont'
820
+ #fnt = tk_tcl2ruby(tk_send('tag', 'cget', tag, "-#{key}"))
821
+ fnt = tk_tcl2ruby(_fromUTF8(tk_send_without_enc('tag','cget',_get_eval_enc_str(tag),'-font')))
822
+ unless fnt.kind_of?(TkFont)
823
+ fnt = tagfontobj(tag, fnt)
824
+ end
825
+ if key.to_s == 'kanjifont' && JAPANIZED_TK && TK_VERSION =~ /^4\.*/
826
+ # obsolete; just for compatibility
827
+ fnt.kanji_font
828
+ else
829
+ fnt
830
+ end
831
+ else
832
+ tk_tcl2ruby(_fromUTF8(tk_call_without_enc(@path,'tag','cget',_get_eval_enc_str(tag),"-#{key}")))
833
+ end
834
+ end
835
+
836
+ def tag_configure(tag, key, val=None)
837
+ if key.kind_of?(Hash)
838
+ key = _symbolkey2str(key)
839
+ if ( key['font'] || key['kanjifont'] \
840
+ || key['latinfont'] || key['asciifont'] )
841
+ tagfont_configure(tag, key)
842
+ else
843
+ tk_send_without_enc('tag', 'configure', _get_eval_enc_str(tag),
844
+ *hash_kv(key, true))
845
+ end
846
+
847
+ else
848
+ if key == 'font' || key == :font ||
849
+ key == 'kanjifont' || key == :kanjifont ||
850
+ key == 'latinfont' || key == :latinfont ||
851
+ key == 'asciifont' || key == :asciifont
852
+ if val == None
853
+ tagfontobj(tag)
854
+ else
855
+ tagfont_configure(tag, {key=>val})
856
+ end
857
+ else
858
+ tk_send_without_enc('tag', 'configure', _get_eval_enc_str(tag),
859
+ "-#{key}", _get_eval_enc_str(val))
860
+ end
861
+ end
862
+ self
863
+ end
864
+
865
+ def tag_configinfo(tag, key=nil)
866
+ if TkComm::GET_CONFIGINFO_AS_ARRAY
867
+ if key
868
+ case key.to_s
869
+ when 'text', 'label', 'show', 'data', 'file'
870
+ conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('tag','configure',_get_eval_enc_str(tag),"-#{key}")))
871
+ when 'font', 'kanjifont'
872
+ conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('tag','configure',_get_eval_enc_str(tag),"-#{key}")))
873
+ conf[4] = tagfont_configinfo(tag, conf[4])
874
+ else
875
+ conf = tk_split_list(_fromUTF8(tk_send_without_enc('tag','configure',_get_eval_enc_str(tag),"-#{key}")))
876
+ end
877
+ conf[0] = conf[0][1..-1]
878
+ conf
879
+ else
880
+ ret = tk_split_simplelist(_fromUTF8(tk_send('tag','configure',_get_eval_enc_str(tag)))).collect{|conflist|
881
+ conf = tk_split_simplelist(conflist)
882
+ conf[0] = conf[0][1..-1]
883
+ case conf[0]
884
+ when 'text', 'label', 'show', 'data', 'file'
885
+ else
886
+ if conf[3]
887
+ if conf[3].index('{')
888
+ conf[3] = tk_split_list(conf[3])
889
+ else
890
+ conf[3] = tk_tcl2ruby(conf[3])
891
+ end
892
+ end
893
+ if conf[4]
894
+ if conf[4].index('{')
895
+ conf[4] = tk_split_list(conf[4])
896
+ else
897
+ conf[4] = tk_tcl2ruby(conf[4])
898
+ end
899
+ end
900
+ end
901
+ conf[1] = conf[1][1..-1] if conf.size == 2 # alias info
902
+ conf
903
+ }
904
+ fontconf = ret.assoc('font')
905
+ if fontconf
906
+ ret.delete_if{|item| item[0] == 'font' || item[0] == 'kanjifont'}
907
+ fontconf[4] = tagfont_configinfo(tag, fontconf[4])
908
+ ret.push(fontconf)
909
+ else
910
+ ret
911
+ end
912
+ end
913
+ else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
914
+ if key
915
+ case key.to_s
916
+ when 'text', 'label', 'show', 'data', 'file'
917
+ conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('tag','configure',_get_eval_enc_str(tag),"-#{key}")))
918
+ when 'font', 'kanjifont'
919
+ conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('tag','configure',_get_eval_enc_str(tag),"-#{key}")))
920
+ conf[4] = tagfont_configinfo(tag, conf[4])
921
+ else
922
+ conf = tk_split_list(_fromUTF8(tk_send_without_enc('tag','configure',_get_eval_enc_str(tag),"-#{key}")))
923
+ end
924
+ key = conf.shift[1..-1]
925
+ { key => conf }
926
+ else
927
+ ret = {}
928
+ tk_split_simplelist(_fromUTF8(tk_send('tag','configure',_get_eval_enc_str(tag)))).each{|conflist|
929
+ conf = tk_split_simplelist(conflist)
930
+ key = conf.shift[1..-1]
931
+ case key
932
+ when 'text', 'label', 'show', 'data', 'file'
933
+ else
934
+ if conf[2]
935
+ if conf[2].index('{')
936
+ conf[2] = tk_split_list(conf[2])
937
+ else
938
+ conf[2] = tk_tcl2ruby(conf[2])
939
+ end
940
+ end
941
+ if conf[3]
942
+ if conf[3].index('{')
943
+ conf[3] = tk_split_list(conf[3])
944
+ else
945
+ conf[3] = tk_tcl2ruby(conf[3])
946
+ end
947
+ end
948
+ end
949
+ if conf.size == 1
950
+ ret[key] = conf[0][1..-1] # alias info
951
+ else
952
+ ret[key] = conf
953
+ end
954
+ }
955
+ fontconf = ret['font']
956
+ if fontconf
957
+ ret.delete('font')
958
+ ret.delete('kanjifont')
959
+ fontconf[3] = tagfont_configinfo(tag, fontconf[3])
960
+ ret['font'] = fontconf
961
+ end
962
+ ret
963
+ end
964
+ end
965
+ end
966
+
967
+ def current_tag_configinfo(tag, key=nil)
968
+ if TkComm::GET_CONFIGINFO_AS_ARRAY
969
+ if key
970
+ conf = tag_configinfo(tag, key)
971
+ {conf[0] => conf[4]}
972
+ else
973
+ ret = {}
974
+ tag_configinfo(tag).each{|conf|
975
+ ret[conf[0]] = conf[4] if conf.size > 2
976
+ }
977
+ ret
978
+ end
979
+ else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
980
+ ret = {}
981
+ tag_configinfo(tag, key).each{|k, conf|
982
+ ret[k] = conf[-1] if conf.kind_of?(Array)
983
+ }
984
+ ret
985
+ end
986
+ end
987
+ =end
988
+
989
+ def tag_raise(tag, above=None)
990
+ tk_send_without_enc('tag', 'raise', _get_eval_enc_str(tag),
991
+ _get_eval_enc_str(above))
992
+ self
993
+ end
994
+
995
+ def tag_lower(tag, below=None)
996
+ tk_send_without_enc('tag', 'lower', _get_eval_enc_str(tag),
997
+ _get_eval_enc_str(below))
998
+ self
999
+ end
1000
+
1001
+ def tag_remove(tag, *indices)
1002
+ tk_send_without_enc('tag', 'remove', _get_eval_enc_str(tag),
1003
+ *(indices.collect{|idx| _get_eval_enc_str(idx)}))
1004
+ self
1005
+ end
1006
+
1007
+ def tag_ranges(tag)
1008
+ #l = tk_split_simplelist(tk_send_without_enc('tag', 'ranges',
1009
+ # _get_eval_enc_str(tag)))
1010
+ l = tk_split_simplelist(tk_send_without_enc('tag', 'ranges',
1011
+ _get_eval_enc_str(tag)),
1012
+ false, true)
1013
+ r = []
1014
+ while key=l.shift
1015
+ r.push [Tk::Text::IndexString.new(key), Tk::Text::IndexString.new(l.shift)]
1016
+ end
1017
+ r
1018
+ end
1019
+
1020
+ def tag_nextrange(tag, first, last=None)
1021
+ simplelist(tk_send_without_enc('tag', 'nextrange',
1022
+ _get_eval_enc_str(tag),
1023
+ _get_eval_enc_str(first),
1024
+ _get_eval_enc_str(last))).collect{|idx|
1025
+ Tk::Text::IndexString.new(idx)
1026
+ }
1027
+ end
1028
+
1029
+ def tag_prevrange(tag, first, last=None)
1030
+ simplelist(tk_send_without_enc('tag', 'prevrange',
1031
+ _get_eval_enc_str(tag),
1032
+ _get_eval_enc_str(first),
1033
+ _get_eval_enc_str(last))).collect{|idx|
1034
+ Tk::Text::IndexString.new(idx)
1035
+ }
1036
+ end
1037
+
1038
+ =begin
1039
+ def window_cget(index, slot)
1040
+ case slot.to_s
1041
+ when 'text', 'label', 'show', 'data', 'file'
1042
+ _fromUTF8(tk_send_without_enc('window', 'cget',
1043
+ _get_eval_enc_str(index), "-#{slot}"))
1044
+ when 'font', 'kanjifont'
1045
+ #fnt = tk_tcl2ruby(tk_send('window', 'cget', index, "-#{slot}"))
1046
+ fnt = tk_tcl2ruby(_fromUTF8(tk_send_without_enc('window', 'cget', _get_eval_enc_str(index), '-font')))
1047
+ unless fnt.kind_of?(TkFont)
1048
+ fnt = tagfontobj(index, fnt)
1049
+ end
1050
+ if slot.to_s == 'kanjifont' && JAPANIZED_TK && TK_VERSION =~ /^4\.*/
1051
+ # obsolete; just for compatibility
1052
+ fnt.kanji_font
1053
+ else
1054
+ fnt
1055
+ end
1056
+ else
1057
+ tk_tcl2ruby(_fromUTF8(tk_send_without_enc('window', 'cget', _get_eval_enc_str(index), "-#{slot}")))
1058
+ end
1059
+ end
1060
+
1061
+ def window_configure(index, slot, value=None)
1062
+ if index.kind_of?(TkTextWindow)
1063
+ index.configure(slot, value)
1064
+ else
1065
+ if slot.kind_of?(Hash)
1066
+ slot = _symbolkey2str(slot)
1067
+ win = slot['window']
1068
+ # slot['window'] = win.epath if win.kind_of?(TkWindow)
1069
+ slot['window'] = _epath(win) if win
1070
+ if slot['create']
1071
+ p_create = slot['create']
1072
+ if p_create.kind_of?(Proc)
1073
+ #=begin
1074
+ slot['create'] = install_cmd(proc{
1075
+ id = p_create.call
1076
+ if id.kind_of?(TkWindow)
1077
+ id.epath
1078
+ else
1079
+ id
1080
+ end
1081
+ })
1082
+ #=end
1083
+ slot['create'] = install_cmd(proc{_epath(p_create.call)})
1084
+ end
1085
+ end
1086
+ tk_send_without_enc('window', 'configure',
1087
+ _get_eval_enc_str(index),
1088
+ *hash_kv(slot, true))
1089
+ else
1090
+ if slot == 'window' || slot == :window
1091
+ # id = value
1092
+ # value = id.epath if id.kind_of?(TkWindow)
1093
+ value = _epath(value)
1094
+ end
1095
+ if slot == 'create' || slot == :create
1096
+ p_create = value
1097
+ if p_create.kind_of?(Proc)
1098
+ #=begin
1099
+ value = install_cmd(proc{
1100
+ id = p_create.call
1101
+ if id.kind_of?(TkWindow)
1102
+ id.epath
1103
+ else
1104
+ id
1105
+ end
1106
+ })
1107
+ #=end
1108
+ value = install_cmd(proc{_epath(p_create.call)})
1109
+ end
1110
+ end
1111
+ tk_send_without_enc('window', 'configure',
1112
+ _get_eval_enc_str(index),
1113
+ "-#{slot}", _get_eval_enc_str(value))
1114
+ end
1115
+ end
1116
+ self
1117
+ end
1118
+
1119
+ def window_configinfo(win, slot = nil)
1120
+ if TkComm::GET_CONFIGINFO_AS_ARRAY
1121
+ if slot
1122
+ case slot.to_s
1123
+ when 'text', 'label', 'show', 'data', 'file'
1124
+ conf = tk_split_simplelist(_fromUTF8(tk_send('window', 'configure', _get_eval_enc_str(win), "-#{slot}")))
1125
+ else
1126
+ conf = tk_split_list(_fromUTF8(tk_send('window', 'configure', _get_eval_enc_str(win), "-#{slot}")))
1127
+ end
1128
+ conf[0] = conf[0][1..-1]
1129
+ conf
1130
+ else
1131
+ tk_split_simplelist(_fromUTF8(tk_send('window', 'configure', _get_eval_enc_str(win)))).collect{|conflist|
1132
+ conf = tk_split_simplelist(conflist)
1133
+ conf[0] = conf[0][1..-1]
1134
+ case conf[0]
1135
+ when 'text', 'label', 'show', 'data', 'file'
1136
+ else
1137
+ if conf[3]
1138
+ if conf[3].index('{')
1139
+ conf[3] = tk_split_list(conf[3])
1140
+ else
1141
+ conf[3] = tk_tcl2ruby(conf[3])
1142
+ end
1143
+ end
1144
+ if conf[4]
1145
+ if conf[4].index('{')
1146
+ conf[4] = tk_split_list(conf[4])
1147
+ else
1148
+ conf[4] = tk_tcl2ruby(conf[4])
1149
+ end
1150
+ end
1151
+ end
1152
+ conf[1] = conf[1][1..-1] if conf.size == 2 # alias info
1153
+ conf
1154
+ }
1155
+ end
1156
+ else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
1157
+ if slot
1158
+ case slot.to_s
1159
+ when 'text', 'label', 'show', 'data', 'file'
1160
+ conf = tk_split_simplelist(_fromUTF8(tk_send('window', 'configure', _get_eval_enc_str(win), "-#{slot}")))
1161
+ else
1162
+ conf = tk_split_list(_fromUTF8(tk_send('window', 'configure', _get_eval_enc_str(win), "-#{slot}")))
1163
+ end
1164
+ key = conf.shift[1..-1]
1165
+ { key => conf }
1166
+ else
1167
+ ret = {}
1168
+ tk_split_simplelist(_fromUTF8(tk_send('window', 'configure', _get_eval_enc_str(win)))).each{|conflist|
1169
+ conf = tk_split_simplelist(conflist)
1170
+ key = conf.shift[1..-1]
1171
+ case key
1172
+ when 'text', 'label', 'show', 'data', 'file'
1173
+ else
1174
+ if conf[2]
1175
+ if conf[2].index('{')
1176
+ conf[2] = tk_split_list(conf[2])
1177
+ else
1178
+ conf[2] = tk_tcl2ruby(conf[2])
1179
+ end
1180
+ end
1181
+ if conf[3]
1182
+ if conf[3].index('{')
1183
+ conf[3] = tk_split_list(conf[3])
1184
+ else
1185
+ conf[3] = tk_tcl2ruby(conf[3])
1186
+ end
1187
+ end
1188
+ end
1189
+ if conf.size == 1
1190
+ ret[key] = conf[0][1..-1] # alias info
1191
+ else
1192
+ ret[key] = conf
1193
+ end
1194
+ }
1195
+ ret
1196
+ end
1197
+ end
1198
+ end
1199
+
1200
+ def current_window_configinfo(win, slot = nil)
1201
+ if TkComm::GET_CONFIGINFO_AS_ARRAY
1202
+ if slot
1203
+ conf = window_configinfo(win, slot)
1204
+ {conf[0] => conf[4]}
1205
+ else
1206
+ ret = {}
1207
+ window_configinfo(win).each{|conf|
1208
+ ret[conf[0]] = conf[4] if conf.size > 2
1209
+ }
1210
+ ret
1211
+ end
1212
+ else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
1213
+ ret = {}
1214
+ window_configinfo(win, slot).each{|k, conf|
1215
+ ret[k] = conf[-1] if conf.kind_of?(Array)
1216
+ }
1217
+ ret
1218
+ end
1219
+ end
1220
+ =end
1221
+
1222
+ def window_names
1223
+ # tk_split_simplelist(_fromUTF8(tk_send_without_enc('window', 'names'))).collect{|elt|
1224
+ tk_split_simplelist(tk_send_without_enc('window', 'names'), false, true).collect{|elt|
1225
+ tagid2obj(elt)
1226
+ }
1227
+ end
1228
+
1229
+ def _ktext_length(txt)
1230
+ if TkCore::WITH_ENCODING ### Ruby 1.9 !!!!!!!!!!!!!
1231
+ return txt.length
1232
+ end
1233
+ ###########################
1234
+
1235
+ if $KCODE !~ /n/i
1236
+ return txt.gsub(/[^\Wa-zA-Z_\d]/, ' ').length
1237
+ end
1238
+
1239
+ # $KCODE == 'NONE'
1240
+ if JAPANIZED_TK
1241
+ tk_call_without_enc('kstring', 'length',
1242
+ _get_eval_enc_str(txt)).to_i
1243
+ else
1244
+ begin
1245
+ tk_call_without_enc('encoding', 'convertto', 'ascii',
1246
+ _get_eval_enc_str(txt)).length
1247
+ rescue StandardError, NameError
1248
+ # sorry, I have no plan
1249
+ txt.length
1250
+ end
1251
+ end
1252
+ end
1253
+ private :_ktext_length
1254
+
1255
+ def tksearch(*args)
1256
+ # call 'search' subcommand of text widget
1257
+ # args ::= [<array_of_opts>] <pattern> <start_index> [<stop_index>]
1258
+ # If <pattern> is regexp, then it must be a regular expression of Tcl
1259
+ nocase = false
1260
+ if args[0].kind_of?(Array)
1261
+ opts = args.shift.collect{|opt|
1262
+ s_opt = opt.to_s
1263
+ nocase = true if s_opt == 'nocase'
1264
+ '-' + s_opt
1265
+ }
1266
+ else
1267
+ opts = []
1268
+ end
1269
+
1270
+ if args[0].kind_of?(Regexp)
1271
+ regexp = args.shift
1272
+ if !nocase && (regexp.options & Regexp::IGNORECASE) != 0
1273
+ opts << '-nocase'
1274
+ end
1275
+ args.unshift(regexp.source)
1276
+ end
1277
+
1278
+ opts << '--'
1279
+
1280
+ ret = tk_send('search', *(opts + args))
1281
+ if ret == ""
1282
+ nil
1283
+ else
1284
+ Tk::Text::IndexString.new(ret)
1285
+ end
1286
+ end
1287
+
1288
+ def tksearch_with_count(*args)
1289
+ # call 'search' subcommand of text widget
1290
+ # args ::= [<array_of_opts>] <var> <pattern> <start_index> [<stop_index>]
1291
+ # If <pattern> is regexp, then it must be a regular expression of Tcl
1292
+ nocase = false
1293
+ if args[0].kind_of?(Array)
1294
+ opts = args.shift.collect{|opt|
1295
+ s_opt = opt.to_s
1296
+ nocase = true if s_opt == 'nocase'
1297
+ '-' + s_opt
1298
+ }
1299
+ else
1300
+ opts = []
1301
+ end
1302
+
1303
+ opts << '-count' << args.shift
1304
+
1305
+ if args[0].kind_of?(Regexp)
1306
+ regexp = args.shift
1307
+ if !nocase && (regexp.options & Regexp::IGNORECASE) != 0
1308
+ opts << '-nocase'
1309
+ end
1310
+ args.unshift(regexp.source)
1311
+ end
1312
+
1313
+ opts << '--'
1314
+
1315
+ ret = tk_send('search', *(opts + args))
1316
+ if ret == ""
1317
+ nil
1318
+ else
1319
+ Tk::Text::IndexString.new(ret)
1320
+ end
1321
+ end
1322
+
1323
+ def search_with_length(pat,start,stop=None)
1324
+ pat = pat.chr if pat.kind_of?(Integer)
1325
+ if stop != None
1326
+ return ["", 0] if compare(start,'>=',stop)
1327
+ txt = get(start,stop)
1328
+ if (pos = txt.index(pat))
1329
+ match = $&
1330
+ #pos = txt[0..(pos-1)].split('').length if pos > 0
1331
+ pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
1332
+ if pat.kind_of?(String)
1333
+ #return [index(start + " + #{pos} chars"), pat.split('').length]
1334
+ return [index(start + " + #{pos} chars"),
1335
+ _ktext_length(pat), pat.dup]
1336
+ else
1337
+ #return [index(start + " + #{pos} chars"), $&.split('').length]
1338
+ return [index(start + " + #{pos} chars"),
1339
+ _ktext_length(match), match]
1340
+ end
1341
+ else
1342
+ return ["", 0]
1343
+ end
1344
+ else
1345
+ txt = get(start,'end - 1 char')
1346
+ if (pos = txt.index(pat))
1347
+ match = $&
1348
+ #pos = txt[0..(pos-1)].split('').length if pos > 0
1349
+ pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
1350
+ if pat.kind_of?(String)
1351
+ #return [index(start + " + #{pos} chars"), pat.split('').length]
1352
+ return [index(start + " + #{pos} chars"),
1353
+ _ktext_length(pat), pat.dup]
1354
+ else
1355
+ #return [index(start + " + #{pos} chars"), $&.split('').length]
1356
+ return [index(start + " + #{pos} chars"),
1357
+ _ktext_length(match), match]
1358
+ end
1359
+ else
1360
+ txt = get('1.0','end - 1 char')
1361
+ if (pos = txt.index(pat))
1362
+ match = $&
1363
+ #pos = txt[0..(pos-1)].split('').length if pos > 0
1364
+ pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
1365
+ if pat.kind_of?(String)
1366
+ #return [index("1.0 + #{pos} chars"), pat.split('').length]
1367
+ return [index("1.0 + #{pos} chars"),
1368
+ _ktext_length(pat), pat.dup]
1369
+ else
1370
+ #return [index("1.0 + #{pos} chars"), $&.split('').length]
1371
+ return [index("1.0 + #{pos} chars"), _ktext_length(match), match]
1372
+ end
1373
+ else
1374
+ return ["", 0]
1375
+ end
1376
+ end
1377
+ end
1378
+ end
1379
+
1380
+ def search(pat,start,stop=None)
1381
+ search_with_length(pat,start,stop)[0]
1382
+ end
1383
+
1384
+ def rsearch_with_length(pat,start,stop=None)
1385
+ pat = pat.chr if pat.kind_of?(Integer)
1386
+ if stop != None
1387
+ return ["", 0] if compare(start,'<=',stop)
1388
+ txt = get(stop,start)
1389
+ if (pos = txt.rindex(pat))
1390
+ match = $&
1391
+ #pos = txt[0..(pos-1)].split('').length if pos > 0
1392
+ pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
1393
+ if pat.kind_of?(String)
1394
+ #return [index(stop + " + #{pos} chars"), pat.split('').length]
1395
+ return [index(stop + " + #{pos} chars"), _ktext_length(pat), pat.dup]
1396
+ else
1397
+ #return [index(stop + " + #{pos} chars"), $&.split('').length]
1398
+ return [index(stop + " + #{pos} chars"), _ktext_length(match), match]
1399
+ end
1400
+ else
1401
+ return ["", 0]
1402
+ end
1403
+ else
1404
+ txt = get('1.0',start)
1405
+ if (pos = txt.rindex(pat))
1406
+ match = $&
1407
+ #pos = txt[0..(pos-1)].split('').length if pos > 0
1408
+ pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
1409
+ if pat.kind_of?(String)
1410
+ #return [index("1.0 + #{pos} chars"), pat.split('').length]
1411
+ return [index("1.0 + #{pos} chars"), _ktext_length(pat), pat.dup]
1412
+ else
1413
+ #return [index("1.0 + #{pos} chars"), $&.split('').length]
1414
+ return [index("1.0 + #{pos} chars"), _ktext_length(match), match]
1415
+ end
1416
+ else
1417
+ txt = get('1.0','end - 1 char')
1418
+ if (pos = txt.rindex(pat))
1419
+ match = $&
1420
+ #pos = txt[0..(pos-1)].split('').length if pos > 0
1421
+ pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
1422
+ if pat.kind_of?(String)
1423
+ #return [index("1.0 + #{pos} chars"), pat.split('').length]
1424
+ return [index("1.0 + #{pos} chars"), _ktext_length(pat), pat.dup]
1425
+ else
1426
+ #return [index("1.0 + #{pos} chars"), $&.split('').length]
1427
+ return [index("1.0 + #{pos} chars"), _ktext_length(match), match]
1428
+ end
1429
+ else
1430
+ return ["", 0]
1431
+ end
1432
+ end
1433
+ end
1434
+ end
1435
+
1436
+ def rsearch(pat,start,stop=None)
1437
+ rsearch_with_length(pat,start,stop)[0]
1438
+ end
1439
+
1440
+ def dump(type_info, *index, &block)
1441
+ if type_info.kind_of?(Symbol)
1442
+ type_info = [ type_info.to_s ]
1443
+ elsif type_info.kind_of?(String)
1444
+ type_info = [ type_info ]
1445
+ end
1446
+ args = type_info.collect{|inf| '-' + inf}
1447
+ args << '-command' << block if block
1448
+ str = tk_send('dump', *(args + index))
1449
+ result = []
1450
+ sel = nil
1451
+ i = 0
1452
+ while i < str.size
1453
+ # retrieve key
1454
+ idx = str.index(/ /, i)
1455
+ result.push str[i..(idx-1)]
1456
+ i = idx + 1
1457
+
1458
+ # retrieve value
1459
+ case result[-1]
1460
+ when 'text'
1461
+ if str[i] == ?{
1462
+ # text formed as {...}
1463
+ val, i = _retrieve_braced_text(str, i)
1464
+ result.push val
1465
+ else
1466
+ # text which may contain backslashes
1467
+ val, i = _retrieve_backslashed_text(str, i)
1468
+ result.push val
1469
+ end
1470
+ else
1471
+ idx = str.index(/ /, i)
1472
+ val = str[i..(idx-1)]
1473
+ case result[-1]
1474
+ when 'mark'
1475
+ case val
1476
+ when 'insert'
1477
+ result.push TkTextMarkInsert.new(self)
1478
+ when 'current'
1479
+ result.push TkTextMarkCurrent.new(self)
1480
+ when 'anchor'
1481
+ result.push TkTextMarkAnchor.new(self)
1482
+ else
1483
+ result.push tk_tcl2ruby(val)
1484
+ end
1485
+ when 'tagon'
1486
+ if val == 'sel'
1487
+ if sel
1488
+ result.push sel
1489
+ else
1490
+ result.push TkTextTagSel.new(self)
1491
+ end
1492
+ else
1493
+ result.push tk_tcl2ruby(val)
1494
+ end
1495
+ when 'tagoff'
1496
+ result.push tk_tcl2ruby(val)
1497
+ when 'window'
1498
+ result.push tk_tcl2ruby(val)
1499
+ when 'image'
1500
+ result.push tk_tcl2ruby(val)
1501
+ end
1502
+ i = idx + 1
1503
+ end
1504
+
1505
+ # retrieve index
1506
+ idx = str.index(/ /, i)
1507
+ if idx
1508
+ result.push(Tk::Text::IndexString.new(str[i..(idx-1)]))
1509
+ i = idx + 1
1510
+ else
1511
+ result.push(Tk::Text::IndexString.new(str[i..-1]))
1512
+ break
1513
+ end
1514
+ end
1515
+
1516
+ kvis = []
1517
+ until result.empty?
1518
+ kvis.push [result.shift, result.shift, result.shift]
1519
+ end
1520
+ kvis # result is [[key1, value1, index1], [key2, value2, index2], ...]
1521
+ end
1522
+
1523
+ def _retrieve_braced_text(str, i)
1524
+ cnt = 0
1525
+ idx = i
1526
+ while idx < str.size
1527
+ case str[idx]
1528
+ when ?{
1529
+ cnt += 1
1530
+ when ?}
1531
+ cnt -= 1
1532
+ if cnt == 0
1533
+ break
1534
+ end
1535
+ end
1536
+ idx += 1
1537
+ end
1538
+ return str[i+1..idx-1], idx + 2
1539
+ end
1540
+ private :_retrieve_braced_text
1541
+
1542
+ def _retrieve_backslashed_text(str, i)
1543
+ j = i
1544
+ idx = nil
1545
+ loop {
1546
+ idx = str.index(/ /, j)
1547
+ if str[idx-1] == ?\\
1548
+ j += 1
1549
+ else
1550
+ break
1551
+ end
1552
+ }
1553
+ val = str[i..(idx-1)]
1554
+ val.gsub!(/\\( |\{|\})/, '\1')
1555
+ return val, idx + 1
1556
+ end
1557
+ private :_retrieve_backslashed_text
1558
+
1559
+ def dump_all(*index, &block)
1560
+ dump(['all'], *index, &block)
1561
+ end
1562
+ def dump_mark(*index, &block)
1563
+ dump(['mark'], *index, &block)
1564
+ end
1565
+ def dump_tag(*index, &block)
1566
+ dump(['tag'], *index, &block)
1567
+ end
1568
+ def dump_text(*index, &block)
1569
+ dump(['text'], *index, &block)
1570
+ end
1571
+ def dump_window(*index, &block)
1572
+ dump(['window'], *index, &block)
1573
+ end
1574
+ def dump_image(*index, &block)
1575
+ dump(['image'], *index, &block)
1576
+ end
1577
+ end
1578
+
1579
+ #TkText = Tk::Text unless Object.const_defined? :TkText
1580
+ #Tk.__set_toplevel_aliases__(:Tk, Tk::Text, :TkText)
1581
+ Tk.__set_loaded_toplevel_aliases__('tk/text.rb', :Tk, Tk::Text, :TkText)
1582
+
1583
+
1584
+ #######################################
1585
+
1586
+ class Tk::Text::Peer < Tk::Text
1587
+ # Tk8.5 feature
1588
+ def initialize(text, parent=nil, keys={})
1589
+ unless text.kind_of?(Tk::Text)
1590
+ fail ArgumentError, "Tk::Text is expected for 1st argument"
1591
+ end
1592
+ @src_text = text
1593
+ super(parent, keys)
1594
+ end
1595
+
1596
+ def create_self(keys)
1597
+ if keys and keys != None
1598
+ tk_call_without_enc(@src_text.path, 'peer', 'create',
1599
+ @path, *hash_kv(keys, true))
1600
+ else
1601
+ tk_call_without_enc(@src_text.path, 'peer', 'create', @path)
1602
+ end
1603
+ end
1604
+ private :create_self
1605
+ end