tk_as_gem 0.0.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 (345) hide show
  1. data/README +22 -0
  2. data/Rakefile +11 -0
  3. data/VERSION +1 -0
  4. data/ext/ChangeLog.tkextlib +935 -0
  5. data/ext/MANUAL_tcltklib.eng +469 -0
  6. data/ext/MANUAL_tcltklib.eucj +579 -0
  7. data/ext/README.1st +19 -0
  8. data/ext/README.ActiveTcl +49 -0
  9. data/ext/README.fork +34 -0
  10. data/ext/README.macosx-aqua +67 -0
  11. data/ext/README.tcltklib +85 -0
  12. data/ext/depend +2 -0
  13. data/ext/extconf.rb +451 -0
  14. data/ext/lib/README +30 -0
  15. data/ext/lib/multi-tk.rb +3491 -0
  16. data/ext/lib/remote-tk.rb +530 -0
  17. data/ext/lib/tcltk.rb +367 -0
  18. data/ext/lib/tk.rb +5584 -0
  19. data/ext/lib/tk/after.rb +6 -0
  20. data/ext/lib/tk/autoload.rb +414 -0
  21. data/ext/lib/tk/bgerror.rb +29 -0
  22. data/ext/lib/tk/bindtag.rb +138 -0
  23. data/ext/lib/tk/button.rb +30 -0
  24. data/ext/lib/tk/canvas.rb +789 -0
  25. data/ext/lib/tk/canvastag.rb +434 -0
  26. data/ext/lib/tk/checkbutton.rb +30 -0
  27. data/ext/lib/tk/clipboard.rb +75 -0
  28. data/ext/lib/tk/clock.rb +71 -0
  29. data/ext/lib/tk/composite.rb +458 -0
  30. data/ext/lib/tk/console.rb +52 -0
  31. data/ext/lib/tk/dialog.rb +326 -0
  32. data/ext/lib/tk/encodedstr.rb +187 -0
  33. data/ext/lib/tk/entry.rb +119 -0
  34. data/ext/lib/tk/event.rb +542 -0
  35. data/ext/lib/tk/font.rb +2344 -0
  36. data/ext/lib/tk/frame.rb +131 -0
  37. data/ext/lib/tk/grid.rb +279 -0
  38. data/ext/lib/tk/image.rb +275 -0
  39. data/ext/lib/tk/itemconfig.rb +1215 -0
  40. data/ext/lib/tk/itemfont.rb +327 -0
  41. data/ext/lib/tk/kinput.rb +71 -0
  42. data/ext/lib/tk/label.rb +21 -0
  43. data/ext/lib/tk/labelframe.rb +29 -0
  44. data/ext/lib/tk/listbox.rb +282 -0
  45. data/ext/lib/tk/macpkg.rb +78 -0
  46. data/ext/lib/tk/menu.rb +681 -0
  47. data/ext/lib/tk/menubar.rb +131 -0
  48. data/ext/lib/tk/menuspec.rb +275 -0
  49. data/ext/lib/tk/message.rb +22 -0
  50. data/ext/lib/tk/mngfocus.rb +33 -0
  51. data/ext/lib/tk/msgcat.rb +296 -0
  52. data/ext/lib/tk/namespace.rb +551 -0
  53. data/ext/lib/tk/optiondb.rb +377 -0
  54. data/ext/lib/tk/optionobj.rb +212 -0
  55. data/ext/lib/tk/pack.rb +107 -0
  56. data/ext/lib/tk/package.rb +143 -0
  57. data/ext/lib/tk/palette.rb +55 -0
  58. data/ext/lib/tk/panedwindow.rb +258 -0
  59. data/ext/lib/tk/place.rb +128 -0
  60. data/ext/lib/tk/radiobutton.rb +71 -0
  61. data/ext/lib/tk/root.rb +95 -0
  62. data/ext/lib/tk/scale.rb +111 -0
  63. data/ext/lib/tk/scrollable.rb +82 -0
  64. data/ext/lib/tk/scrollbar.rb +177 -0
  65. data/ext/lib/tk/scrollbox.rb +39 -0
  66. data/ext/lib/tk/selection.rb +86 -0
  67. data/ext/lib/tk/spinbox.rb +119 -0
  68. data/ext/lib/tk/tagfont.rb +43 -0
  69. data/ext/lib/tk/text.rb +1596 -0
  70. data/ext/lib/tk/textimage.rb +88 -0
  71. data/ext/lib/tk/textmark.rb +204 -0
  72. data/ext/lib/tk/texttag.rb +318 -0
  73. data/ext/lib/tk/textwindow.rb +154 -0
  74. data/ext/lib/tk/timer.rb +669 -0
  75. data/ext/lib/tk/toplevel.rb +262 -0
  76. data/ext/lib/tk/ttk_selector.rb +76 -0
  77. data/ext/lib/tk/txtwin_abst.rb +39 -0
  78. data/ext/lib/tk/validation.rb +397 -0
  79. data/ext/lib/tk/variable.rb +1765 -0
  80. data/ext/lib/tk/virtevent.rb +139 -0
  81. data/ext/lib/tk/winfo.rb +392 -0
  82. data/ext/lib/tk/winpkg.rb +153 -0
  83. data/ext/lib/tk/wm.rb +552 -0
  84. data/ext/lib/tk/xim.rb +122 -0
  85. data/ext/lib/tkafter.rb +4 -0
  86. data/ext/lib/tkbgerror.rb +4 -0
  87. data/ext/lib/tkcanvas.rb +4 -0
  88. data/ext/lib/tkclass.rb +47 -0
  89. data/ext/lib/tkconsole.rb +4 -0
  90. data/ext/lib/tkdialog.rb +4 -0
  91. data/ext/lib/tkentry.rb +4 -0
  92. data/ext/lib/tkextlib/ICONS.rb +13 -0
  93. data/ext/lib/tkextlib/ICONS/icons.rb +129 -0
  94. data/ext/lib/tkextlib/ICONS/setup.rb +8 -0
  95. data/ext/lib/tkextlib/SUPPORT_STATUS +196 -0
  96. data/ext/lib/tkextlib/blt.rb +187 -0
  97. data/ext/lib/tkextlib/blt/barchart.rb +79 -0
  98. data/ext/lib/tkextlib/blt/bitmap.rb +112 -0
  99. data/ext/lib/tkextlib/blt/busy.rb +82 -0
  100. data/ext/lib/tkextlib/blt/component.rb +2145 -0
  101. data/ext/lib/tkextlib/blt/container.rb +28 -0
  102. data/ext/lib/tkextlib/blt/cutbuffer.rb +23 -0
  103. data/ext/lib/tkextlib/blt/dragdrop.rb +268 -0
  104. data/ext/lib/tkextlib/blt/eps.rb +32 -0
  105. data/ext/lib/tkextlib/blt/graph.rb +67 -0
  106. data/ext/lib/tkextlib/blt/htext.rb +111 -0
  107. data/ext/lib/tkextlib/blt/setup.rb +8 -0
  108. data/ext/lib/tkextlib/blt/spline.rb +23 -0
  109. data/ext/lib/tkextlib/blt/stripchart.rb +74 -0
  110. data/ext/lib/tkextlib/blt/table.rb +399 -0
  111. data/ext/lib/tkextlib/blt/tabnotebook.rb +110 -0
  112. data/ext/lib/tkextlib/blt/tabset.rb +500 -0
  113. data/ext/lib/tkextlib/blt/ted.rb +65 -0
  114. data/ext/lib/tkextlib/blt/tile.rb +21 -0
  115. data/ext/lib/tkextlib/blt/tile/button.rb +16 -0
  116. data/ext/lib/tkextlib/blt/tile/checkbutton.rb +17 -0
  117. data/ext/lib/tkextlib/blt/tile/frame.rb +16 -0
  118. data/ext/lib/tkextlib/blt/tile/label.rb +16 -0
  119. data/ext/lib/tkextlib/blt/tile/radiobutton.rb +17 -0
  120. data/ext/lib/tkextlib/blt/tile/scrollbar.rb +16 -0
  121. data/ext/lib/tkextlib/blt/tile/toplevel.rb +16 -0
  122. data/ext/lib/tkextlib/blt/tree.rb +1058 -0
  123. data/ext/lib/tkextlib/blt/treeview.rb +1272 -0
  124. data/ext/lib/tkextlib/blt/unix_dnd.rb +135 -0
  125. data/ext/lib/tkextlib/blt/vector.rb +256 -0
  126. data/ext/lib/tkextlib/blt/watch.rb +175 -0
  127. data/ext/lib/tkextlib/blt/win_printer.rb +61 -0
  128. data/ext/lib/tkextlib/blt/winop.rb +107 -0
  129. data/ext/lib/tkextlib/bwidget.rb +151 -0
  130. data/ext/lib/tkextlib/bwidget/arrowbutton.rb +21 -0
  131. data/ext/lib/tkextlib/bwidget/bitmap.rb +21 -0
  132. data/ext/lib/tkextlib/bwidget/button.rb +31 -0
  133. data/ext/lib/tkextlib/bwidget/buttonbox.rb +90 -0
  134. data/ext/lib/tkextlib/bwidget/combobox.rb +51 -0
  135. data/ext/lib/tkextlib/bwidget/dialog.rb +182 -0
  136. data/ext/lib/tkextlib/bwidget/dragsite.rb +31 -0
  137. data/ext/lib/tkextlib/bwidget/dropsite.rb +39 -0
  138. data/ext/lib/tkextlib/bwidget/dynamichelp.rb +63 -0
  139. data/ext/lib/tkextlib/bwidget/entry.rb +43 -0
  140. data/ext/lib/tkextlib/bwidget/label.rb +41 -0
  141. data/ext/lib/tkextlib/bwidget/labelentry.rb +80 -0
  142. data/ext/lib/tkextlib/bwidget/labelframe.rb +52 -0
  143. data/ext/lib/tkextlib/bwidget/listbox.rb +358 -0
  144. data/ext/lib/tkextlib/bwidget/mainframe.rb +128 -0
  145. data/ext/lib/tkextlib/bwidget/messagedlg.rb +192 -0
  146. data/ext/lib/tkextlib/bwidget/notebook.rb +166 -0
  147. data/ext/lib/tkextlib/bwidget/pagesmanager.rb +73 -0
  148. data/ext/lib/tkextlib/bwidget/panedwindow.rb +37 -0
  149. data/ext/lib/tkextlib/bwidget/panelframe.rb +57 -0
  150. data/ext/lib/tkextlib/bwidget/passwddlg.rb +44 -0
  151. data/ext/lib/tkextlib/bwidget/progressbar.rb +20 -0
  152. data/ext/lib/tkextlib/bwidget/progressdlg.rb +58 -0
  153. data/ext/lib/tkextlib/bwidget/scrollableframe.rb +40 -0
  154. data/ext/lib/tkextlib/bwidget/scrolledwindow.rb +38 -0
  155. data/ext/lib/tkextlib/bwidget/scrollview.rb +25 -0
  156. data/ext/lib/tkextlib/bwidget/selectcolor.rb +73 -0
  157. data/ext/lib/tkextlib/bwidget/selectfont.rb +86 -0
  158. data/ext/lib/tkextlib/bwidget/separator.rb +20 -0
  159. data/ext/lib/tkextlib/bwidget/setup.rb +8 -0
  160. data/ext/lib/tkextlib/bwidget/spinbox.rb +98 -0
  161. data/ext/lib/tkextlib/bwidget/statusbar.rb +52 -0
  162. data/ext/lib/tkextlib/bwidget/titleframe.rb +33 -0
  163. data/ext/lib/tkextlib/bwidget/tree.rb +453 -0
  164. data/ext/lib/tkextlib/bwidget/widget.rb +129 -0
  165. data/ext/lib/tkextlib/itcl.rb +13 -0
  166. data/ext/lib/tkextlib/itcl/incr_tcl.rb +178 -0
  167. data/ext/lib/tkextlib/itcl/setup.rb +13 -0
  168. data/ext/lib/tkextlib/itk.rb +13 -0
  169. data/ext/lib/tkextlib/itk/incr_tk.rb +446 -0
  170. data/ext/lib/tkextlib/itk/setup.rb +13 -0
  171. data/ext/lib/tkextlib/iwidgets.rb +94 -0
  172. data/ext/lib/tkextlib/iwidgets/buttonbox.rb +120 -0
  173. data/ext/lib/tkextlib/iwidgets/calendar.rb +125 -0
  174. data/ext/lib/tkextlib/iwidgets/canvasprintbox.rb +53 -0
  175. data/ext/lib/tkextlib/iwidgets/canvasprintdialog.rb +38 -0
  176. data/ext/lib/tkextlib/iwidgets/checkbox.rb +129 -0
  177. data/ext/lib/tkextlib/iwidgets/combobox.rb +104 -0
  178. data/ext/lib/tkextlib/iwidgets/dateentry.rb +20 -0
  179. data/ext/lib/tkextlib/iwidgets/datefield.rb +58 -0
  180. data/ext/lib/tkextlib/iwidgets/dialog.rb +20 -0
  181. data/ext/lib/tkextlib/iwidgets/dialogshell.rb +120 -0
  182. data/ext/lib/tkextlib/iwidgets/disjointlistbox.rb +50 -0
  183. data/ext/lib/tkextlib/iwidgets/entryfield.rb +185 -0
  184. data/ext/lib/tkextlib/iwidgets/extbutton.rb +40 -0
  185. data/ext/lib/tkextlib/iwidgets/extfileselectionbox.rb +46 -0
  186. data/ext/lib/tkextlib/iwidgets/extfileselectiondialog.rb +33 -0
  187. data/ext/lib/tkextlib/iwidgets/feedback.rb +35 -0
  188. data/ext/lib/tkextlib/iwidgets/fileselectionbox.rb +46 -0
  189. data/ext/lib/tkextlib/iwidgets/fileselectiondialog.rb +33 -0
  190. data/ext/lib/tkextlib/iwidgets/finddialog.rb +42 -0
  191. data/ext/lib/tkextlib/iwidgets/hierarchy.rb +365 -0
  192. data/ext/lib/tkextlib/iwidgets/hyperhelp.rb +50 -0
  193. data/ext/lib/tkextlib/iwidgets/labeledframe.rb +39 -0
  194. data/ext/lib/tkextlib/iwidgets/labeledwidget.rb +45 -0
  195. data/ext/lib/tkextlib/iwidgets/mainwindow.rb +67 -0
  196. data/ext/lib/tkextlib/iwidgets/menubar.rb +211 -0
  197. data/ext/lib/tkextlib/iwidgets/messagebox.rb +92 -0
  198. data/ext/lib/tkextlib/iwidgets/messagedialog.rb +20 -0
  199. data/ext/lib/tkextlib/iwidgets/notebook.rb +174 -0
  200. data/ext/lib/tkextlib/iwidgets/optionmenu.rb +92 -0
  201. data/ext/lib/tkextlib/iwidgets/panedwindow.rb +133 -0
  202. data/ext/lib/tkextlib/iwidgets/promptdialog.rb +131 -0
  203. data/ext/lib/tkextlib/iwidgets/pushbutton.rb +35 -0
  204. data/ext/lib/tkextlib/iwidgets/radiobox.rb +120 -0
  205. data/ext/lib/tkextlib/iwidgets/scopedobject.rb +24 -0
  206. data/ext/lib/tkextlib/iwidgets/scrolledcanvas.rb +353 -0
  207. data/ext/lib/tkextlib/iwidgets/scrolledframe.rb +59 -0
  208. data/ext/lib/tkextlib/iwidgets/scrolledhtml.rb +58 -0
  209. data/ext/lib/tkextlib/iwidgets/scrolledlistbox.rb +207 -0
  210. data/ext/lib/tkextlib/iwidgets/scrolledtext.rb +564 -0
  211. data/ext/lib/tkextlib/iwidgets/scrolledwidget.rb +20 -0
  212. data/ext/lib/tkextlib/iwidgets/selectionbox.rb +102 -0
  213. data/ext/lib/tkextlib/iwidgets/selectiondialog.rb +92 -0
  214. data/ext/lib/tkextlib/iwidgets/setup.rb +8 -0
  215. data/ext/lib/tkextlib/iwidgets/shell.rb +38 -0
  216. data/ext/lib/tkextlib/iwidgets/spindate.rb +48 -0
  217. data/ext/lib/tkextlib/iwidgets/spinint.rb +30 -0
  218. data/ext/lib/tkextlib/iwidgets/spinner.rb +169 -0
  219. data/ext/lib/tkextlib/iwidgets/spintime.rb +48 -0
  220. data/ext/lib/tkextlib/iwidgets/tabnotebook.rb +180 -0
  221. data/ext/lib/tkextlib/iwidgets/tabset.rb +144 -0
  222. data/ext/lib/tkextlib/iwidgets/timeentry.rb +25 -0
  223. data/ext/lib/tkextlib/iwidgets/timefield.rb +58 -0
  224. data/ext/lib/tkextlib/iwidgets/toolbar.rb +112 -0
  225. data/ext/lib/tkextlib/iwidgets/watch.rb +56 -0
  226. data/ext/lib/tkextlib/pkg_checker.rb +184 -0
  227. data/ext/lib/tkextlib/setup.rb +8 -0
  228. data/ext/lib/tkextlib/tcllib.rb +90 -0
  229. data/ext/lib/tkextlib/tcllib/README +135 -0
  230. data/ext/lib/tkextlib/tcllib/autoscroll.rb +158 -0
  231. data/ext/lib/tkextlib/tcllib/ctext.rb +160 -0
  232. data/ext/lib/tkextlib/tcllib/cursor.rb +97 -0
  233. data/ext/lib/tkextlib/tcllib/datefield.rb +57 -0
  234. data/ext/lib/tkextlib/tcllib/dialog.rb +84 -0
  235. data/ext/lib/tkextlib/tcllib/getstring.rb +134 -0
  236. data/ext/lib/tkextlib/tcllib/history.rb +73 -0
  237. data/ext/lib/tkextlib/tcllib/ico.rb +116 -0
  238. data/ext/lib/tkextlib/tcllib/ip_entry.rb +66 -0
  239. data/ext/lib/tkextlib/tcllib/panelframe.rb +72 -0
  240. data/ext/lib/tkextlib/tcllib/plotchart.rb +886 -0
  241. data/ext/lib/tkextlib/tcllib/ruler.rb +65 -0
  242. data/ext/lib/tkextlib/tcllib/screenruler.rb +68 -0
  243. data/ext/lib/tkextlib/tcllib/scrollwin.rb +61 -0
  244. data/ext/lib/tkextlib/tcllib/setup.rb +8 -0
  245. data/ext/lib/tkextlib/tcllib/style.rb +61 -0
  246. data/ext/lib/tkextlib/tcllib/superframe.rb +51 -0
  247. data/ext/lib/tkextlib/tcllib/swaplist.rb +150 -0
  248. data/ext/lib/tkextlib/tcllib/tablelist.rb +27 -0
  249. data/ext/lib/tkextlib/tcllib/tablelist_core.rb +782 -0
  250. data/ext/lib/tkextlib/tcllib/tablelist_tile.rb +25 -0
  251. data/ext/lib/tkextlib/tcllib/tkpiechart.rb +314 -0
  252. data/ext/lib/tkextlib/tcllib/tooltip.rb +95 -0
  253. data/ext/lib/tkextlib/tcllib/widget.rb +48 -0
  254. data/ext/lib/tkextlib/tclx.rb +13 -0
  255. data/ext/lib/tkextlib/tclx/setup.rb +8 -0
  256. data/ext/lib/tkextlib/tclx/tclx.rb +74 -0
  257. data/ext/lib/tkextlib/tile.rb +419 -0
  258. data/ext/lib/tkextlib/tile/dialog.rb +96 -0
  259. data/ext/lib/tkextlib/tile/setup.rb +8 -0
  260. data/ext/lib/tkextlib/tile/sizegrip.rb +29 -0
  261. data/ext/lib/tkextlib/tile/style.rb +316 -0
  262. data/ext/lib/tkextlib/tile/tbutton.rb +33 -0
  263. data/ext/lib/tkextlib/tile/tcheckbutton.rb +36 -0
  264. data/ext/lib/tkextlib/tile/tcombobox.rb +54 -0
  265. data/ext/lib/tkextlib/tile/tentry.rb +48 -0
  266. data/ext/lib/tkextlib/tile/tframe.rb +33 -0
  267. data/ext/lib/tkextlib/tile/tlabel.rb +33 -0
  268. data/ext/lib/tkextlib/tile/tlabelframe.rb +36 -0
  269. data/ext/lib/tkextlib/tile/tmenubutton.rb +36 -0
  270. data/ext/lib/tkextlib/tile/tnotebook.rb +139 -0
  271. data/ext/lib/tkextlib/tile/tpaned.rb +231 -0
  272. data/ext/lib/tkextlib/tile/tprogressbar.rb +56 -0
  273. data/ext/lib/tkextlib/tile/tradiobutton.rb +36 -0
  274. data/ext/lib/tkextlib/tile/treeview.rb +1239 -0
  275. data/ext/lib/tkextlib/tile/tscale.rb +53 -0
  276. data/ext/lib/tkextlib/tile/tscrollbar.rb +54 -0
  277. data/ext/lib/tkextlib/tile/tseparator.rb +33 -0
  278. data/ext/lib/tkextlib/tile/tsquare.rb +30 -0
  279. data/ext/lib/tkextlib/tkDND.rb +18 -0
  280. data/ext/lib/tkextlib/tkDND/setup.rb +8 -0
  281. data/ext/lib/tkextlib/tkDND/shape.rb +125 -0
  282. data/ext/lib/tkextlib/tkDND/tkdnd.rb +182 -0
  283. data/ext/lib/tkextlib/tkHTML.rb +13 -0
  284. data/ext/lib/tkextlib/tkHTML/htmlwidget.rb +453 -0
  285. data/ext/lib/tkextlib/tkHTML/setup.rb +8 -0
  286. data/ext/lib/tkextlib/tkimg.rb +36 -0
  287. data/ext/lib/tkextlib/tkimg/README +26 -0
  288. data/ext/lib/tkextlib/tkimg/bmp.rb +33 -0
  289. data/ext/lib/tkextlib/tkimg/gif.rb +33 -0
  290. data/ext/lib/tkextlib/tkimg/ico.rb +33 -0
  291. data/ext/lib/tkextlib/tkimg/jpeg.rb +33 -0
  292. data/ext/lib/tkextlib/tkimg/pcx.rb +33 -0
  293. data/ext/lib/tkextlib/tkimg/pixmap.rb +44 -0
  294. data/ext/lib/tkextlib/tkimg/png.rb +33 -0
  295. data/ext/lib/tkextlib/tkimg/ppm.rb +33 -0
  296. data/ext/lib/tkextlib/tkimg/ps.rb +33 -0
  297. data/ext/lib/tkextlib/tkimg/setup.rb +8 -0
  298. data/ext/lib/tkextlib/tkimg/sgi.rb +33 -0
  299. data/ext/lib/tkextlib/tkimg/sun.rb +33 -0
  300. data/ext/lib/tkextlib/tkimg/tga.rb +33 -0
  301. data/ext/lib/tkextlib/tkimg/tiff.rb +33 -0
  302. data/ext/lib/tkextlib/tkimg/window.rb +33 -0
  303. data/ext/lib/tkextlib/tkimg/xbm.rb +33 -0
  304. data/ext/lib/tkextlib/tkimg/xpm.rb +33 -0
  305. data/ext/lib/tkextlib/tktable.rb +14 -0
  306. data/ext/lib/tkextlib/tktable/setup.rb +8 -0
  307. data/ext/lib/tkextlib/tktable/tktable.rb +957 -0
  308. data/ext/lib/tkextlib/tktrans.rb +14 -0
  309. data/ext/lib/tkextlib/tktrans/setup.rb +8 -0
  310. data/ext/lib/tkextlib/tktrans/tktrans.rb +64 -0
  311. data/ext/lib/tkextlib/treectrl.rb +13 -0
  312. data/ext/lib/tkextlib/treectrl/setup.rb +8 -0
  313. data/ext/lib/tkextlib/treectrl/tktreectrl.rb +2461 -0
  314. data/ext/lib/tkextlib/trofs.rb +13 -0
  315. data/ext/lib/tkextlib/trofs/setup.rb +8 -0
  316. data/ext/lib/tkextlib/trofs/trofs.rb +51 -0
  317. data/ext/lib/tkextlib/version.rb +6 -0
  318. data/ext/lib/tkextlib/vu.rb +48 -0
  319. data/ext/lib/tkextlib/vu/bargraph.rb +61 -0
  320. data/ext/lib/tkextlib/vu/charts.rb +53 -0
  321. data/ext/lib/tkextlib/vu/dial.rb +102 -0
  322. data/ext/lib/tkextlib/vu/pie.rb +282 -0
  323. data/ext/lib/tkextlib/vu/setup.rb +8 -0
  324. data/ext/lib/tkextlib/vu/spinbox.rb +22 -0
  325. data/ext/lib/tkextlib/winico.rb +14 -0
  326. data/ext/lib/tkextlib/winico/setup.rb +8 -0
  327. data/ext/lib/tkextlib/winico/winico.rb +224 -0
  328. data/ext/lib/tkfont.rb +4 -0
  329. data/ext/lib/tkmacpkg.rb +4 -0
  330. data/ext/lib/tkmenubar.rb +4 -0
  331. data/ext/lib/tkmngfocus.rb +4 -0
  332. data/ext/lib/tkpalette.rb +4 -0
  333. data/ext/lib/tkscrollbox.rb +4 -0
  334. data/ext/lib/tktext.rb +4 -0
  335. data/ext/lib/tkvirtevent.rb +4 -0
  336. data/ext/lib/tkwinpkg.rb +4 -0
  337. data/ext/old-README.tcltklib.eucj +159 -0
  338. data/ext/stubs.c +531 -0
  339. data/ext/stubs.h +33 -0
  340. data/ext/tcltklib.c +10155 -0
  341. data/ext/tkutil/.cvsignore +3 -0
  342. data/ext/tkutil/depend +1 -0
  343. data/ext/tkutil/extconf.rb +14 -0
  344. data/ext/tkutil/tkutil.c +1789 -0
  345. metadata +418 -0
@@ -0,0 +1,59 @@
1
+ #
2
+ # tkextlib/iwidgets/scrolledframe.rb
3
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
4
+ #
5
+
6
+ require 'tk'
7
+ require 'tkextlib/iwidgets.rb'
8
+
9
+ module Tk
10
+ module Iwidgets
11
+ class Scrolledframe < Tk::Iwidgets::Scrolledwidget
12
+ end
13
+ end
14
+ end
15
+
16
+ class Tk::Iwidgets::Scrolledframe
17
+ TkCommandNames = ['::iwidgets::scrolledframe'.freeze].freeze
18
+ WidgetClassName = 'Scrolledframe'.freeze
19
+ WidgetClassNames[WidgetClassName] = self
20
+
21
+ def child_site
22
+ window(tk_call(@path, 'childsite'))
23
+ end
24
+
25
+ def justify(dir)
26
+ tk_call(@path, 'justify', dir)
27
+ self
28
+ end
29
+
30
+ def xview(*index)
31
+ if index.size == 0
32
+ list(tk_send_without_enc('xview'))
33
+ else
34
+ tk_send_without_enc('xview', *index)
35
+ self
36
+ end
37
+ end
38
+ def xview_moveto(*index)
39
+ xview('moveto', *index)
40
+ end
41
+ def xview_scroll(*index)
42
+ xview('scroll', *index)
43
+ end
44
+
45
+ def yview(*index)
46
+ if index.size == 0
47
+ list(tk_send_without_enc('yview'))
48
+ else
49
+ tk_send_without_enc('yview', *index)
50
+ self
51
+ end
52
+ end
53
+ def yview_moveto(*index)
54
+ yview('moveto', *index)
55
+ end
56
+ def yview_scroll(*index)
57
+ yview('scroll', *index)
58
+ end
59
+ end
@@ -0,0 +1,58 @@
1
+ #
2
+ # tkextlib/iwidgets/scrolledhtml.rb
3
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
4
+ #
5
+
6
+ require 'tk'
7
+ require 'tkextlib/iwidgets.rb'
8
+
9
+ module Tk
10
+ module Iwidgets
11
+ class Scrolledhtml < Tk::Iwidgets::Scrolledtext
12
+ end
13
+ end
14
+ end
15
+
16
+ class Tk::Iwidgets::Scrolledhtml
17
+ TkCommandNames = ['::iwidgets::scrolledhtml'.freeze].freeze
18
+ WidgetClassName = 'Scrolledhtml'.freeze
19
+ WidgetClassNames[WidgetClassName] = self
20
+
21
+ def __boolval_optkeys
22
+ super() << 'update'
23
+ end
24
+ private :__boolval_optkeys
25
+
26
+ def __strval_optkeys
27
+ super() << 'fontname' << 'link' << 'alink' << 'textbackground'
28
+ end
29
+ private :__strval_optkeys
30
+
31
+ def __font_optkeys
32
+ super() << 'fixedfont'
33
+ end
34
+ private :__font_optkeys
35
+
36
+ def import(href)
37
+ tk_call(@path, 'import', href)
38
+ self
39
+ end
40
+
41
+ def import_link(href)
42
+ tk_call(@path, 'import', '-link', href)
43
+ self
44
+ end
45
+
46
+ def pwd
47
+ tk_call(@path, 'pwd')
48
+ end
49
+
50
+ def render(htmltext, workdir=None)
51
+ tk_call(@path, 'render', htmltext, workdir)
52
+ self
53
+ end
54
+
55
+ def title
56
+ tk_call(@path, 'title')
57
+ end
58
+ end
@@ -0,0 +1,207 @@
1
+ #
2
+ # tkextlib/iwidgets/scrolledlistbox.rb
3
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
4
+ #
5
+
6
+ require 'tk'
7
+ require 'tk/listbox'
8
+ require 'tkextlib/iwidgets.rb'
9
+
10
+ module Tk
11
+ module Iwidgets
12
+ class Scrolledlistbox < Tk::Iwidgets::Scrolledwidget
13
+ end
14
+ end
15
+ end
16
+
17
+ class Tk::Iwidgets::Scrolledlistbox
18
+ TkCommandNames = ['::iwidgets::scrolledlistbox'.freeze].freeze
19
+ WidgetClassName = 'Scrolledlistbox'.freeze
20
+ WidgetClassNames[WidgetClassName] = self
21
+
22
+ def __strval_optkeys
23
+ super() << 'textbackground'
24
+ end
25
+ private :__strval_optkeys
26
+
27
+ def __tkvariable_optkeys
28
+ super() << 'listvariable'
29
+ end
30
+ private :__tkvariable_optkeys
31
+
32
+ def __font_optkeys
33
+ super() << 'textfont'
34
+ end
35
+ private :__font_optkeys
36
+
37
+ ################################
38
+
39
+ def initialize(*args)
40
+ super(*args)
41
+ @listbox = component_widget('listbox')
42
+ end
43
+
44
+ def method_missing(id, *args)
45
+ if @listbox.respond_to?(id)
46
+ @listbox.__send__(id, *args)
47
+ else
48
+ super(id, *args)
49
+ end
50
+ end
51
+
52
+ ################################
53
+
54
+ def clear
55
+ tk_call(@path, 'clear')
56
+ self
57
+ end
58
+
59
+ def get_curselection
60
+ tk_call(@path, 'getcurselection')
61
+ end
62
+
63
+ def justify(dir)
64
+ tk_call(@path, 'justify', dir)
65
+ self
66
+ end
67
+
68
+ def selected_item_count
69
+ number(tk_call(@path, 'selecteditemcount'))
70
+ end
71
+
72
+ def sort(*params, &b)
73
+ # see 'lsort' man page about params
74
+ if b
75
+ tk_call(@path, 'sort', '-command', proc(&b), *params)
76
+ else
77
+ tk_call(@path, 'sort', *params)
78
+ end
79
+ self
80
+ end
81
+ def sort_ascending
82
+ tk_call(@path, 'sort', 'ascending')
83
+ self
84
+ end
85
+ def sort_descending
86
+ tk_call(@path, 'sort', 'descending')
87
+ self
88
+ end
89
+
90
+ #####################################
91
+
92
+ def bbox(index)
93
+ list(tk_send_without_enc('bbox', index))
94
+ end
95
+ def delete(first, last=None)
96
+ tk_send_without_enc('delete', first, last)
97
+ self
98
+ end
99
+ def get(*index)
100
+ _fromUTF8(tk_send_without_enc('get', *index))
101
+ end
102
+ def insert(index, *args)
103
+ tk_send('insert', index, *args)
104
+ self
105
+ end
106
+ def scan_mark(x, y)
107
+ tk_send_without_enc('scan', 'mark', x, y)
108
+ self
109
+ end
110
+ def scan_dragto(x, y)
111
+ tk_send_without_enc('scan', 'dragto', x, y)
112
+ self
113
+ end
114
+ def see(index)
115
+ tk_send_without_enc('see', index)
116
+ self
117
+ end
118
+
119
+ #####################################
120
+
121
+ include TkListItemConfig
122
+
123
+ def tagid(tag)
124
+ if tag.kind_of?(Tk::Itk::Component)
125
+ tag.name
126
+ else
127
+ super(tag)
128
+ end
129
+ end
130
+ private :tagid
131
+
132
+ #####################################
133
+
134
+ def activate(y)
135
+ tk_send_without_enc('activate', y)
136
+ self
137
+ end
138
+ def curselection
139
+ list(tk_send_without_enc('curselection'))
140
+ end
141
+ def get(first, last=nil)
142
+ if last
143
+ # tk_split_simplelist(_fromUTF8(tk_send_without_enc('get', first, last)))
144
+ tk_split_simplelist(tk_send_without_enc('get', first, last),
145
+ false, true)
146
+ else
147
+ _fromUTF8(tk_send_without_enc('get', first))
148
+ end
149
+ end
150
+ def nearest(y)
151
+ tk_send_without_enc('nearest', y).to_i
152
+ end
153
+ def size
154
+ tk_send_without_enc('size').to_i
155
+ end
156
+ def selection_anchor(index)
157
+ tk_send_without_enc('selection', 'anchor', index)
158
+ self
159
+ end
160
+ def selection_clear(first, last=None)
161
+ tk_send_without_enc('selection', 'clear', first, last)
162
+ self
163
+ end
164
+ def selection_includes(index)
165
+ bool(tk_send_without_enc('selection', 'includes', index))
166
+ end
167
+ def selection_set(first, last=None)
168
+ tk_send_without_enc('selection', 'set', first, last)
169
+ self
170
+ end
171
+
172
+ def index(idx)
173
+ tk_send_without_enc('index', idx).to_i
174
+ end
175
+
176
+ #####################################
177
+
178
+ def xview(*index)
179
+ if index.size == 0
180
+ list(tk_send_without_enc('xview'))
181
+ else
182
+ tk_send_without_enc('xview', *index)
183
+ self
184
+ end
185
+ end
186
+ def xview_moveto(*index)
187
+ xview('moveto', *index)
188
+ end
189
+ def xview_scroll(*index)
190
+ xview('scroll', *index)
191
+ end
192
+
193
+ def yview(*index)
194
+ if index.size == 0
195
+ list(tk_send_without_enc('yview'))
196
+ else
197
+ tk_send_without_enc('yview', *index)
198
+ self
199
+ end
200
+ end
201
+ def yview_moveto(*index)
202
+ yview('moveto', *index)
203
+ end
204
+ def yview_scroll(*index)
205
+ yview('scroll', *index)
206
+ end
207
+ end
@@ -0,0 +1,564 @@
1
+ #
2
+ # tkextlib/iwidgets/scrolledtext.rb
3
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
4
+ #
5
+
6
+ require 'tk'
7
+ require 'tk/text'
8
+ require 'tkextlib/iwidgets.rb'
9
+
10
+ module Tk
11
+ module Iwidgets
12
+ class Scrolledtext < Tk::Iwidgets::Scrolledwidget
13
+ end
14
+ end
15
+ end
16
+
17
+ class Tk::Iwidgets::Scrolledtext
18
+ TkCommandNames = ['::iwidgets::scrolledtext'.freeze].freeze
19
+ WidgetClassName = 'Scrolledtext'.freeze
20
+ WidgetClassNames[WidgetClassName] = self
21
+
22
+ def __strval_optkeys
23
+ super() << 'textbackground'
24
+ end
25
+ private :__strval_optkeys
26
+
27
+ def __font_optkeys
28
+ super() << 'textfont'
29
+ end
30
+ private :__font_optkeys
31
+
32
+ ################################
33
+
34
+ def initialize(*args)
35
+ super(*args)
36
+ @text = component_widget('text')
37
+ end
38
+
39
+ def method_missing(id, *args)
40
+ if @text.respond_to?(id)
41
+ @text.__send__(id, *args)
42
+ else
43
+ super(id, *args)
44
+ end
45
+ end
46
+
47
+ ################################
48
+
49
+ def child_site
50
+ window(tk_call(@path, 'childsite'))
51
+ end
52
+
53
+ def clear
54
+ tk_call(@path, 'clear')
55
+ self
56
+ end
57
+
58
+ def import(file, idx=nil)
59
+ if idx
60
+ tk_call(@path, 'import', file, index(idx))
61
+ else
62
+ tk_call(@path, 'import', file)
63
+ end
64
+ self
65
+ end
66
+
67
+ def export(file)
68
+ tk_call(@path, 'export', file)
69
+ self
70
+ end
71
+
72
+ #####################################
73
+
74
+ include TkTextTagConfig
75
+
76
+ def tagid(tag)
77
+ if tag.kind_of?(Tk::Itk::Component)
78
+ tag.name
79
+ else
80
+ super(tag)
81
+ end
82
+ end
83
+ private :tagid
84
+
85
+ def bbox(index)
86
+ list(tk_send('bbox', index))
87
+ end
88
+ def compare(idx1, op, idx2)
89
+ bool(tk_send_without_enc('compare', _get_eval_enc_str(idx1),
90
+ op, _get_eval_enc_str(idx2)))
91
+ end
92
+
93
+ def debug
94
+ bool(tk_send_without_enc('debug'))
95
+ end
96
+ def debug=(boolean)
97
+ tk_send_without_enc('debug', boolean)
98
+ #self
99
+ boolean
100
+ end
101
+
102
+ def delete(first, last=None)
103
+ tk_send_without_enc('delete', first, last)
104
+ self
105
+ end
106
+
107
+ def dlineinfo(index)
108
+ list(tk_send_without_enc('dlineinfo', _get_eval_enc_str(index)))
109
+ end
110
+
111
+ def get(*index)
112
+ _fromUTF8(tk_send_without_enc('get', *index))
113
+ end
114
+ def get_displaychars(*index)
115
+ # Tk8.5 feature
116
+ get('-displaychars', *index)
117
+ end
118
+
119
+ def image_cget_strict(index, slot)
120
+ case slot.to_s
121
+ when 'text', 'label', 'show', 'data', 'file'
122
+ _fromUTF8(tk_send_without_enc('image', 'cget',
123
+ _get_eval_enc_str(index), "-#{slot}"))
124
+ else
125
+ tk_tcl2ruby(_fromUTF8(tk_send_without_enc('image', 'cget',
126
+ _get_eval_enc_str(index),
127
+ "-#{slot}")))
128
+ end
129
+ end
130
+ def image_cget(index, slot)
131
+ unless TkItemConfigMethod.__IGNORE_UNKNOWN_CONFIGURE_OPTION__
132
+ image_cget_strict(index, slot)
133
+ else
134
+ begin
135
+ image_cget_strict(index, slot)
136
+ rescue => e
137
+ begin
138
+ if current_image_configinfo.has_key?(slot.to_s)
139
+ # error on known option
140
+ fail e
141
+ else
142
+ # unknown option
143
+ nil
144
+ end
145
+ rescue
146
+ fail e # tag error
147
+ end
148
+ end
149
+ end
150
+ end
151
+
152
+ def image_configure(index, slot, value=None)
153
+ if slot.kind_of? Hash
154
+ _fromUTF8(tk_send_without_enc('image', 'configure',
155
+ _get_eval_enc_str(index),
156
+ *hash_kv(slot, true)))
157
+ else
158
+ _fromUTF8(tk_send_without_enc('image', 'configure',
159
+ _get_eval_enc_str(index),
160
+ "-#{slot}",
161
+ _get_eval_enc_str(value)))
162
+ end
163
+ self
164
+ end
165
+
166
+ def image_configinfo(index, slot = nil)
167
+ if TkComm::GET_CONFIGINFO_AS_ARRAY
168
+ if slot
169
+ case slot.to_s
170
+ when 'text', 'label', 'show', 'data', 'file'
171
+ #conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}")))
172
+ conf = tk_split_simplelist(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}"), false, true)
173
+ else
174
+ #conf = tk_split_list(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}")))
175
+ conf = tk_split_list(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}"), 0, false, true)
176
+ end
177
+ conf[0] = conf[0][1..-1]
178
+ conf
179
+ else
180
+ #tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index)))).collect{|conflist|
181
+ # conf = tk_split_simplelist(conflist)
182
+ tk_split_simplelist(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index)), false, false).collect{|conflist|
183
+ conf = tk_split_simplelist(conflist, false, true)
184
+ conf[0] = conf[0][1..-1]
185
+ case conf[0]
186
+ when 'text', 'label', 'show', 'data', 'file'
187
+ else
188
+ if conf[3]
189
+ if conf[3].index('{')
190
+ conf[3] = tk_split_list(conf[3])
191
+ else
192
+ conf[3] = tk_tcl2ruby(conf[3])
193
+ end
194
+ end
195
+ if conf[4]
196
+ if conf[4].index('{')
197
+ conf[4] = tk_split_list(conf[4])
198
+ else
199
+ conf[4] = tk_tcl2ruby(conf[4])
200
+ end
201
+ end
202
+ end
203
+ conf[1] = conf[1][1..-1] if conf.size == 2 # alias info
204
+ conf
205
+ }
206
+ end
207
+ else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
208
+ if slot
209
+ case slot.to_s
210
+ when 'text', 'label', 'show', 'data', 'file'
211
+ #conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}")))
212
+ conf = tk_split_simplelist(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}"), false, true)
213
+ else
214
+ #conf = tk_split_list(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}")))
215
+ conf = tk_split_list(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index), "-#{slot}"), 0, false, true)
216
+ end
217
+ key = conf.shift[1..-1]
218
+ { key => conf }
219
+ else
220
+ ret = {}
221
+ #tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index)))).each{|conflist|
222
+ # conf = tk_split_simplelist(conflist)
223
+ tk_split_simplelist(tk_send_without_enc('image', 'configure', _get_eval_enc_str(index)), false, false).each{|conflist|
224
+ conf = tk_split_simplelist(conflist, false, true)
225
+ key = conf.shift[1..-1]
226
+ case key
227
+ when 'text', 'label', 'show', 'data', 'file'
228
+ else
229
+ if conf[2]
230
+ if conf[2].index('{')
231
+ conf[2] = tk_split_list(conf[2])
232
+ else
233
+ conf[2] = tk_tcl2ruby(conf[2])
234
+ end
235
+ end
236
+ if conf[3]
237
+ if conf[3].index('{')
238
+ conf[3] = tk_split_list(conf[3])
239
+ else
240
+ conf[3] = tk_tcl2ruby(conf[3])
241
+ end
242
+ end
243
+ end
244
+ if conf.size == 1
245
+ ret[key] = conf[0][1..-1] # alias info
246
+ else
247
+ ret[key] = conf
248
+ end
249
+ }
250
+ ret
251
+ end
252
+ end
253
+ end
254
+
255
+ def current_image_configinfo(index, slot = nil)
256
+ if TkComm::GET_CONFIGINFO_AS_ARRAY
257
+ if slot
258
+ conf = image_configinfo(index, slot)
259
+ {conf[0] => conf[4]}
260
+ else
261
+ ret = {}
262
+ image_configinfo(index).each{|conf|
263
+ ret[conf[0]] = conf[4] if conf.size > 2
264
+ }
265
+ ret
266
+ end
267
+ else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
268
+ ret = {}
269
+ image_configinfo(index, slot).each{|k, conf|
270
+ ret[k] = conf[-1] if conf.kind_of?(Array)
271
+ }
272
+ ret
273
+ end
274
+ end
275
+
276
+ def image_names
277
+ #tk_split_simplelist(_fromUTF8(tk_send_without_enc('image', 'names'))).collect{|elt|
278
+ tk_split_simplelist(tk_send_without_enc('image', 'names'), false, true).collect{|elt|
279
+ tagid2obj(elt)
280
+ }
281
+ end
282
+
283
+ def index(idx)
284
+ tk_send_without_enc('index', _get_eval_enc_str(idx))
285
+ end
286
+
287
+ def insert(index, *args)
288
+ tk_send('insert', index, *args)
289
+ self
290
+ end
291
+
292
+ def mark_names
293
+ #tk_split_simplelist(_fromUTF8(tk_send_without_enc('mark', 'names'))).collect{|elt|
294
+ tk_split_simplelist(tk_send_without_enc('mark', 'names'), false, true).collect{|elt|
295
+ tagid2obj(elt)
296
+ }
297
+ end
298
+
299
+ def mark_gravity(mark, direction=nil)
300
+ if direction
301
+ tk_send_without_enc('mark', 'gravity',
302
+ _get_eval_enc_str(mark), direction)
303
+ self
304
+ else
305
+ tk_send_without_enc('mark', 'gravity', _get_eval_enc_str(mark))
306
+ end
307
+ end
308
+
309
+ def mark_set(mark, index)
310
+ tk_send_without_enc('mark', 'set', _get_eval_enc_str(mark),
311
+ _get_eval_enc_str(index))
312
+ self
313
+ end
314
+ alias set_mark mark_set
315
+
316
+ def mark_unset(*marks)
317
+ tk_send_without_enc('mark', 'unset',
318
+ *(marks.collect{|mark| _get_eval_enc_str(mark)}))
319
+ self
320
+ end
321
+ alias unset_mark mark_unset
322
+
323
+ def mark_next(index)
324
+ tagid2obj(_fromUTF8(tk_send_without_enc('mark', 'next',
325
+ _get_eval_enc_str(index))))
326
+ end
327
+ alias next_mark mark_next
328
+
329
+ def mark_previous(index)
330
+ tagid2obj(_fromUTF8(tk_send_without_enc('mark', 'previous',
331
+ _get_eval_enc_str(index))))
332
+ end
333
+ alias previous_mark mark_previous
334
+
335
+ def scan_mark(x, y)
336
+ tk_send_without_enc('scan', 'mark', x, y)
337
+ self
338
+ end
339
+ def scan_dragto(x, y)
340
+ tk_send_without_enc('scan', 'dragto', x, y)
341
+ self
342
+ end
343
+
344
+
345
+ def _ktext_length(txt)
346
+ if TkCore::WITH_ENCODING ### Ruby 1.9 !!!!!!!!!!!!!
347
+ return txt.length
348
+ end
349
+ ###########################
350
+
351
+ if $KCODE !~ /n/i
352
+ return txt.gsub(/[^\Wa-zA-Z_\d]/, ' ').length
353
+ end
354
+
355
+ # $KCODE == 'NONE'
356
+ if JAPANIZED_TK
357
+ tk_call_without_enc('kstring', 'length',
358
+ _get_eval_enc_str(txt)).to_i
359
+ else
360
+ begin
361
+ tk_call_without_enc('encoding', 'convertto', 'ascii',
362
+ _get_eval_enc_str(txt)).length
363
+ rescue StandardError, NameError
364
+ # sorry, I have no plan
365
+ txt.length
366
+ end
367
+ end
368
+ end
369
+ private :_ktext_length
370
+
371
+ def tksearch(*args)
372
+ # call 'search' subcommand of text widget
373
+ # args ::= [<array_of_opts>] <pattern> <start_index> [<stop_index>]
374
+ # If <pattern> is regexp, then it must be a regular expression of Tcl
375
+ if args[0].kind_of?(Array)
376
+ opts = args.shift.collect{|opt| '-' + opt.to_s }
377
+ else
378
+ opts = []
379
+ end
380
+
381
+ opts << '--'
382
+
383
+ ret = tk_send('search', *(opts + args))
384
+ if ret == ""
385
+ nil
386
+ else
387
+ ret
388
+ end
389
+ end
390
+
391
+ def tksearch_with_count(*args)
392
+ # call 'search' subcommand of text widget
393
+ # args ::= [<array_of_opts>] <var> <pattern> <start_index> [<stop_index>]
394
+ # If <pattern> is regexp, then it must be a regular expression of Tcl
395
+ if args[0].kind_of?(Array)
396
+ opts = args.shift.collect{|opt| '-' + opt.to_s }
397
+ else
398
+ opts = []
399
+ end
400
+
401
+ opts << '-count' << args.shift << '--'
402
+
403
+ ret = tk_send('search', *(opts + args))
404
+ if ret == ""
405
+ nil
406
+ else
407
+ ret
408
+ end
409
+ end
410
+
411
+ def search_with_length(pat,start,stop=None)
412
+ pat = pat.chr if pat.kind_of? Integer
413
+ if stop != None
414
+ return ["", 0] if compare(start,'>=',stop)
415
+ txt = get(start,stop)
416
+ if (pos = txt.index(pat))
417
+ match = $&
418
+ #pos = txt[0..(pos-1)].split('').length if pos > 0
419
+ pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
420
+ if pat.kind_of? String
421
+ #return [index(start + " + #{pos} chars"), pat.split('').length]
422
+ return [index(start + " + #{pos} chars"),
423
+ _ktext_length(pat), pat.dup]
424
+ else
425
+ #return [index(start + " + #{pos} chars"), $&.split('').length]
426
+ return [index(start + " + #{pos} chars"),
427
+ _ktext_length(match), match]
428
+ end
429
+ else
430
+ return ["", 0]
431
+ end
432
+ else
433
+ txt = get(start,'end - 1 char')
434
+ if (pos = txt.index(pat))
435
+ match = $&
436
+ #pos = txt[0..(pos-1)].split('').length if pos > 0
437
+ pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
438
+ if pat.kind_of? String
439
+ #return [index(start + " + #{pos} chars"), pat.split('').length]
440
+ return [index(start + " + #{pos} chars"),
441
+ _ktext_length(pat), pat.dup]
442
+ else
443
+ #return [index(start + " + #{pos} chars"), $&.split('').length]
444
+ return [index(start + " + #{pos} chars"),
445
+ _ktext_length(match), match]
446
+ end
447
+ else
448
+ txt = get('1.0','end - 1 char')
449
+ if (pos = txt.index(pat))
450
+ match = $&
451
+ #pos = txt[0..(pos-1)].split('').length if pos > 0
452
+ pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
453
+ if pat.kind_of? String
454
+ #return [index("1.0 + #{pos} chars"), pat.split('').length]
455
+ return [index("1.0 + #{pos} chars"),
456
+ _ktext_length(pat), pat.dup]
457
+ else
458
+ #return [index("1.0 + #{pos} chars"), $&.split('').length]
459
+ return [index("1.0 + #{pos} chars"), _ktext_length(match), match]
460
+ end
461
+ else
462
+ return ["", 0]
463
+ end
464
+ end
465
+ end
466
+ end
467
+
468
+ def search(pat,start,stop=None)
469
+ search_with_length(pat,start,stop)[0]
470
+ end
471
+
472
+ def rsearch_with_length(pat,start,stop=None)
473
+ pat = pat.chr if pat.kind_of? Integer
474
+ if stop != None
475
+ return ["", 0] if compare(start,'<=',stop)
476
+ txt = get(stop,start)
477
+ if (pos = txt.rindex(pat))
478
+ match = $&
479
+ #pos = txt[0..(pos-1)].split('').length if pos > 0
480
+ pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
481
+ if pat.kind_of? String
482
+ #return [index(stop + " + #{pos} chars"), pat.split('').length]
483
+ return [index(stop + " + #{pos} chars"), _ktext_length(pat), pat.dup]
484
+ else
485
+ #return [index(stop + " + #{pos} chars"), $&.split('').length]
486
+ return [index(stop + " + #{pos} chars"), _ktext_length(match), match]
487
+ end
488
+ else
489
+ return ["", 0]
490
+ end
491
+ else
492
+ txt = get('1.0',start)
493
+ if (pos = txt.rindex(pat))
494
+ match = $&
495
+ #pos = txt[0..(pos-1)].split('').length if pos > 0
496
+ pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
497
+ if pat.kind_of? String
498
+ #return [index("1.0 + #{pos} chars"), pat.split('').length]
499
+ return [index("1.0 + #{pos} chars"), _ktext_length(pat), pat.dup]
500
+ else
501
+ #return [index("1.0 + #{pos} chars"), $&.split('').length]
502
+ return [index("1.0 + #{pos} chars"), _ktext_length(match), match]
503
+ end
504
+ else
505
+ txt = get('1.0','end - 1 char')
506
+ if (pos = txt.rindex(pat))
507
+ match = $&
508
+ #pos = txt[0..(pos-1)].split('').length if pos > 0
509
+ pos = _ktext_length(txt[0..(pos-1)]) if pos > 0
510
+ if pat.kind_of? String
511
+ #return [index("1.0 + #{pos} chars"), pat.split('').length]
512
+ return [index("1.0 + #{pos} chars"), _ktext_length(pat), pat.dup]
513
+ else
514
+ #return [index("1.0 + #{pos} chars"), $&.split('').length]
515
+ return [index("1.0 + #{pos} chars"), _ktext_length(match), match]
516
+ end
517
+ else
518
+ return ["", 0]
519
+ end
520
+ end
521
+ end
522
+ end
523
+
524
+ def rsearch(pat,start,stop=None)
525
+ rsearch_with_length(pat,start,stop)[0]
526
+ end
527
+
528
+ def see(index)
529
+ tk_send_without_enc('see', index)
530
+ self
531
+ end
532
+
533
+ ###############################
534
+
535
+ def xview(*index)
536
+ if index.size == 0
537
+ list(tk_send_without_enc('xview'))
538
+ else
539
+ tk_send_without_enc('xview', *index)
540
+ self
541
+ end
542
+ end
543
+ def xview_moveto(*index)
544
+ xview('moveto', *index)
545
+ end
546
+ def xview_scroll(*index)
547
+ xview('scroll', *index)
548
+ end
549
+
550
+ def yview(*index)
551
+ if index.size == 0
552
+ list(tk_send_without_enc('yview'))
553
+ else
554
+ tk_send_without_enc('yview', *index)
555
+ self
556
+ end
557
+ end
558
+ def yview_moveto(*index)
559
+ yview('moveto', *index)
560
+ end
561
+ def yview_scroll(*index)
562
+ yview('scroll', *index)
563
+ end
564
+ end