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,530 @@
1
+ #
2
+ # remote-tk.rb - supports to control remote Tk interpreters
3
+ # by Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
4
+
5
+ if defined? MultiTkIp
6
+ fail RuntimeError, "'remote-tk' library must be required before requiring 'multi-tk'"
7
+ end
8
+
9
+ class MultiTkIp; end
10
+ class RemoteTkIp < MultiTkIp; end
11
+
12
+ class MultiTkIp
13
+ @@IP_TABLE = {}.taint unless defined?(@@IP_TABLE)
14
+ @@TK_TABLE_LIST = [].taint unless defined?(@@TK_TABLE_LIST)
15
+ def self._IP_TABLE; @@IP_TABLE; end
16
+ def self._TK_TABLE_LIST; @@TK_TABLE_LIST; end
17
+
18
+ @flag = true
19
+ def self._DEFAULT_MASTER
20
+ # work only once
21
+ if @flag
22
+ @flag = nil
23
+ @@DEFAULT_MASTER
24
+ else
25
+ nil
26
+ end
27
+ end
28
+ end
29
+ class RemoteTkIp
30
+ @@IP_TABLE = MultiTkIp._IP_TABLE unless defined?(@@IP_TABLE)
31
+ @@TK_TABLE_LIST = MultiTkIp._TK_TABLE_LIST unless defined?(@@TK_TABLE_LIST)
32
+ end
33
+ class << MultiTkIp
34
+ undef _IP_TABLE
35
+ undef _TK_TABLE_LIST
36
+ end
37
+
38
+ require 'multi-tk'
39
+
40
+ class RemoteTkIp
41
+ if defined?(@@DEFAULT_MASTER)
42
+ MultiTkIp._DEFAULT_MASTER
43
+ else
44
+ @@DEFAULT_MASTER = MultiTkIp._DEFAULT_MASTER
45
+ end
46
+ end
47
+
48
+
49
+ ###############################
50
+
51
+ class << RemoteTkIp
52
+ undef new_master, new_slave, new_safe_slave
53
+ undef new_trusted_slave, new_safeTk
54
+
55
+ def new(*args, &b)
56
+ ip = __new(*args)
57
+ ip.eval_proc(&b) if b
58
+ ip
59
+ end
60
+ end
61
+
62
+ class RemoteTkIp
63
+ def initialize(remote_ip, displayof=nil, timeout=5)
64
+ if $SAFE >= 4
65
+ fail SecurityError, "cannot access another interpreter at level #{$SAFE}"
66
+ end
67
+
68
+ @interp = MultiTkIp.__getip
69
+ if @interp.safe?
70
+ fail SecurityError, "safe-IP cannot create RemoteTkIp"
71
+ end
72
+
73
+
74
+ @interp.allow_ruby_exit = false
75
+ @appname = @interp._invoke('tk', 'appname')
76
+ @remote = remote_ip.to_s.dup.freeze
77
+ if displayof.kind_of?(TkWindow)
78
+ @displayof = displayof.path.dup.freeze
79
+ else
80
+ @displayof = nil
81
+ end
82
+ if self.deleted?
83
+ fail RuntimeError, "no Tk application named \"#{@remote}\""
84
+ end
85
+
86
+ @tk_windows = {}
87
+ @tk_table_list = []
88
+ @slave_ip_tbl = {}
89
+ @slave_ip_top = {}
90
+
91
+ @force_default_encoding ||= [false].taint
92
+ @encoding ||= [nil].taint
93
+ def @encoding.to_s; self.join(nil); end
94
+
95
+ @tk_windows.taint unless @tk_windows.tainted?
96
+ @tk_table_list.taint unless @tk_table_list.tainted?
97
+ @slave_ip_tbl.taint unless @slave_ip_tbl.tainted?
98
+ @slave_ip_top.taint unless @slave_ip_top.tainted?
99
+
100
+ @system = Object.new
101
+
102
+ @threadgroup = ThreadGroup.new
103
+
104
+ @safe_level = [$SAFE]
105
+
106
+ @wait_on_mainloop = [true, 0]
107
+
108
+ @cmd_queue = Queue.new
109
+
110
+ =begin
111
+ @cmd_receiver, @receiver_watchdog = _create_receiver_and_watchdog()
112
+
113
+ @threadgroup.add @cmd_receiver
114
+ @threadgroup.add @receiver_watchdog
115
+
116
+ @threadgroup.enclose
117
+ =end
118
+ @@DEFAULT_MASTER.assign_receiver_and_watchdog(self)
119
+
120
+ @@IP_TABLE[@threadgroup] = self
121
+ @@TK_TABLE_LIST.size.times{
122
+ (tbl = {}).tainted? || tbl.taint
123
+ @tk_table_list << tbl
124
+ }
125
+
126
+ @ret_val = TkVariable.new
127
+ if timeout > 0 && ! _available_check(timeout)
128
+ fail RuntimeError, "cannot create connection"
129
+ end
130
+ @ip_id = _create_connection
131
+
132
+ class << self
133
+ undef :instance_eval
134
+ end
135
+
136
+ self.freeze # defend against modification
137
+ end
138
+
139
+ def manipulable?
140
+ return true if (Thread.current.group == ThreadGroup::Default)
141
+ MultiTkIp.__getip == @interp && ! @interp.safe?
142
+ end
143
+ def self.manipulable?
144
+ true
145
+ end
146
+
147
+ def _is_master_of?(tcltkip_obj)
148
+ tcltkip_obj == @interp
149
+ end
150
+ protected :_is_master_of?
151
+
152
+ def _ip_id_
153
+ @ip_id
154
+ end
155
+
156
+ def _available_check(timeout = 5)
157
+ raise SecurityError, "no permission to manipulate" unless self.manipulable?
158
+
159
+ return nil if timeout < 1
160
+ @ret_val.value = ''
161
+ @interp._invoke('send', '-async', @remote,
162
+ 'send', '-async', Tk.appname,
163
+ "set #{@ret_val.id} ready")
164
+ Tk.update
165
+ if @ret_val != 'ready'
166
+ (1..(timeout*5)).each{
167
+ sleep 0.2
168
+ Tk.update
169
+ break if @ret_val == 'ready'
170
+ }
171
+ end
172
+ @ret_val.value == 'ready'
173
+ end
174
+ private :_available_check
175
+
176
+ def _create_connection
177
+ raise SecurityError, "no permission to manipulate" unless self.manipulable?
178
+
179
+ ip_id = '_' + @interp._invoke('send', @remote, <<-'EOS') + '_'
180
+ if {[catch {set _rubytk_control_ip_id_} ret] != 0} {
181
+ set _rubytk_control_ip_id_ 0
182
+ } else {
183
+ set _rubytk_control_ip_id_ [expr $ret + 1]
184
+ }
185
+ return $_rubytk_control_ip_id_
186
+ EOS
187
+
188
+ @interp._invoke('send', @remote, <<-EOS)
189
+ proc rb_out#{ip_id} args {
190
+ send #{@appname} rb_out \$args
191
+ }
192
+ EOS
193
+
194
+ ip_id
195
+ end
196
+ private :_create_connection
197
+
198
+ def _appsend(enc_mode, async, *cmds)
199
+ raise SecurityError, "no permission to manipulate" unless self.manipulable?
200
+
201
+ p ['_appsend', [@remote, @displayof], enc_mode, async, cmds] if $DEBUG
202
+ if $SAFE >= 4
203
+ fail SecurityError, "cannot send commands at level 4"
204
+ elsif $SAFE >= 1 && cmds.find{|obj| obj.tainted?}
205
+ fail SecurityError, "cannot send tainted commands at level #{$SAFE}"
206
+ end
207
+
208
+ cmds = @interp._merge_tklist(*TkUtil::_conv_args([], enc_mode, *cmds))
209
+ if @displayof
210
+ if async
211
+ @interp.__invoke('send', '-async', '-displayof', @displayof,
212
+ '--', @remote, *cmds)
213
+ else
214
+ @interp.__invoke('send', '-displayof', @displayof,
215
+ '--', @remote, *cmds)
216
+ end
217
+ else
218
+ if async
219
+ @interp.__invoke('send', '-async', '--', @remote, *cmds)
220
+ else
221
+ @interp.__invoke('send', '--', @remote, *cmds)
222
+ end
223
+ end
224
+ end
225
+ private :_appsend
226
+
227
+ def ready?(timeout=5)
228
+ if timeout < 0
229
+ fail ArgumentError, "timeout must be positive number"
230
+ end
231
+ _available_check(timeout)
232
+ end
233
+
234
+ def is_rubytk?
235
+ return false if _appsend(false, false, 'info', 'command', 'ruby') == ""
236
+ [ _appsend(false, false, 'ruby', 'RUBY_VERSION'),
237
+ _appsend(false, false, 'set', 'tk_patchLevel') ]
238
+ end
239
+
240
+ def appsend(async, *args)
241
+ raise SecurityError, "no permission to manipulate" unless self.manipulable?
242
+
243
+ if async != true && async != false && async != nil
244
+ args.unshift(async)
245
+ async = false
246
+ end
247
+ if @displayof
248
+ Tk.appsend_displayof(@remote, @displayof, async, *args)
249
+ else
250
+ Tk.appsend(@remote, async, *args)
251
+ end
252
+ end
253
+
254
+ def rb_appsend(async, *args)
255
+ raise SecurityError, "no permission to manipulate" unless self.manipulable?
256
+
257
+ if async != true && async != false && async != nil
258
+ args.unshift(async)
259
+ async = false
260
+ end
261
+ if @displayof
262
+ Tk.rb_appsend_displayof(@remote, @displayof, async, *args)
263
+ else
264
+ Tk.rb_appsend(@remote, async, *args)
265
+ end
266
+ end
267
+
268
+ def create_slave(name, safe=false)
269
+ if safe
270
+ safe_opt = ''
271
+ else
272
+ safe_opt = '-safe'
273
+ end
274
+ _appsend(false, false, "interp create #{safe_opt} -- #{name}")
275
+ end
276
+
277
+ def make_safe
278
+ fail RuntimeError, 'cannot change safe mode of the remote interpreter'
279
+ end
280
+
281
+ def safe?
282
+ _appsend(false, false, 'interp issafe')
283
+ end
284
+
285
+ def safe_base?
286
+ false
287
+ end
288
+
289
+ def allow_ruby_exit?
290
+ false
291
+ end
292
+
293
+ def allow_ruby_exit= (mode)
294
+ fail RuntimeError, 'cannot change mode of the remote interpreter'
295
+ end
296
+
297
+ def delete
298
+ _appsend(false, true, 'exit')
299
+ end
300
+
301
+ def deleted?
302
+ raise SecurityError, "no permission to manipulate" unless self.manipulable?
303
+
304
+ if @displayof
305
+ lst = @interp._invoke_without_enc('winfo', 'interps',
306
+ '-displayof', @displayof)
307
+ else
308
+ lst = @interp._invoke_without_enc('winfo', 'interps')
309
+ end
310
+ # unless @interp._split_tklist(lst).index(@remote)
311
+ unless @interp._split_tklist(lst).index(_toUTF8(@remote))
312
+ true
313
+ else
314
+ false
315
+ end
316
+ end
317
+
318
+ def has_mainwindow?
319
+ raise SecurityError, "no permission to manipulate" unless self.manipulable?
320
+
321
+ begin
322
+ inf = @interp._invoke_without_enc('info', 'command', '.')
323
+ rescue Exception
324
+ return nil
325
+ end
326
+ if !inf.kind_of?(String) || inf != '.'
327
+ false
328
+ else
329
+ true
330
+ end
331
+ end
332
+
333
+ def invalid_namespace?
334
+ false
335
+ end
336
+
337
+ def restart
338
+ fail RuntimeError, 'cannot restart the remote interpreter'
339
+ end
340
+
341
+ def __eval(str)
342
+ _appsend(false, false, str)
343
+ end
344
+ def _eval(str)
345
+ _appsend(nil, false, str)
346
+ end
347
+ def _eval_without_enc(str)
348
+ _appsend(false, false, str)
349
+ end
350
+ def _eval_with_enc(str)
351
+ _appsend(true, false, str)
352
+ end
353
+
354
+ def _invoke(*args)
355
+ _appsend(nil, false, *args)
356
+ end
357
+
358
+ def __invoke(*args)
359
+ _appsend(false, false, *args)
360
+ end
361
+ def _invoke(*args)
362
+ _appsend(nil, false, *args)
363
+ end
364
+ def _invoke_without_enc(*args)
365
+ _appsend(false, false, *args)
366
+ end
367
+ def _invoke_with_enc(*args)
368
+ _appsend(true, false, *args)
369
+ end
370
+
371
+ def _toUTF8(str, encoding=nil)
372
+ raise SecurityError, "no permission to manipulate" unless self.manipulable?
373
+ @interp._toUTF8(str, encoding)
374
+ end
375
+
376
+ def _fromUTF8(str, encoding=nil)
377
+ raise SecurityError, "no permission to manipulate" unless self.manipulable?
378
+ @interp._fromUTF8(str, encoding)
379
+ end
380
+
381
+ def _thread_vwait(var_name)
382
+ _appsend(false, 'thread_vwait', varname)
383
+ end
384
+
385
+ def _thread_tkwait(mode, target)
386
+ _appsend(false, 'thread_tkwait', mode, target)
387
+ end
388
+
389
+ def _return_value
390
+ raise SecurityError, "no permission to manipulate" unless self.manipulable?
391
+ @interp._return_value
392
+ end
393
+
394
+ def _get_variable(var_name, flag)
395
+ # ignore flag
396
+ _appsend(false, 'set', TkComm::_get_eval_string(var_name))
397
+ end
398
+ def _get_variable2(var_name, index_name, flag)
399
+ # ignore flag
400
+ _appsend(false, 'set', "#{TkComm::_get_eval_string(var_name)}(#{TkComm::_get_eval_string(index_name)})")
401
+ end
402
+
403
+ def _set_variable(var_name, value, flag)
404
+ # ignore flag
405
+ _appsend(false, 'set', TkComm::_get_eval_string(var_name), TkComm::_get_eval_string(value))
406
+ end
407
+ def _set_variable2(var_name, index_name, value, flag)
408
+ # ignore flag
409
+ _appsend(false, 'set', "#{TkComm::_get_eval_string(var_name)}(#{TkComm::_get_eval_string(index_name)})", TkComm::_get_eval_string(value))
410
+ end
411
+
412
+ def _unset_variable(var_name, flag)
413
+ # ignore flag
414
+ _appsend(false, 'unset', TkComm::_get_eval_string(var_name))
415
+ end
416
+ def _unset_variable2(var_name, index_name, flag)
417
+ # ignore flag
418
+ _appsend(false, 'unset', "#{var_name}(#{index_name})")
419
+ end
420
+
421
+ def _get_global_var(var_name)
422
+ _appsend(false, 'set', TkComm::_get_eval_string(var_name))
423
+ end
424
+ def _get_global_var2(var_name, index_name)
425
+ _appsend(false, 'set', "#{TkComm::_get_eval_string(var_name)}(#{TkComm::_get_eval_string(index_name)})")
426
+ end
427
+
428
+ def _set_global_var(var_name, value)
429
+ _appsend(false, 'set', TkComm::_get_eval_string(var_name), TkComm::_get_eval_string(value))
430
+ end
431
+ def _set_global_var2(var_name, index_name, value)
432
+ _appsend(false, 'set', "#{TkComm::_get_eval_string(var_name)}(#{TkComm::_get_eval_string(index_name)})", TkComm::_get_eval_string(value))
433
+ end
434
+
435
+ def _unset_global_var(var_name)
436
+ _appsend(false, 'unset', TkComm::_get_eval_string(var_name))
437
+ end
438
+ def _unset_global_var2(var_name, index_name)
439
+ _appsend(false, 'unset', "#{var_name}(#{index_name})")
440
+ end
441
+
442
+ def _split_tklist(str)
443
+ raise SecurityError, "no permission to manipulate" unless self.manipulable?
444
+ @interp._split_tklist(str)
445
+ end
446
+
447
+ def _merge_tklist(*args)
448
+ raise SecurityError, "no permission to manipulate" unless self.manipulable?
449
+ @interp._merge_tklist(*args)
450
+ end
451
+
452
+ def _conv_listelement(str)
453
+ raise SecurityError, "no permission to manipulate" unless self.manipulable?
454
+ @interp._conv_listelement(str)
455
+ end
456
+
457
+ def _create_console
458
+ fail RuntimeError, 'not support "_create_console" on the remote interpreter'
459
+ end
460
+
461
+ def mainloop
462
+ fail RuntimeError, 'not support "mainloop" on the remote interpreter'
463
+ end
464
+ def mainloop_watchdog
465
+ fail RuntimeError, 'not support "mainloop_watchdog" on the remote interpreter'
466
+ end
467
+ def do_one_evant(flag = nil)
468
+ fail RuntimeError, 'not support "do_one_event" on the remote interpreter'
469
+ end
470
+ def mainloop_abort_on_exception
471
+ fail RuntimeError, 'not support "mainloop_abort_on_exception" on the remote interpreter'
472
+ end
473
+ def mainloop_abort_on_exception=(mode)
474
+ fail RuntimeError, 'not support "mainloop_abort_on_exception=" on the remote interpreter'
475
+ end
476
+ def set_eventloop_tick(*args)
477
+ fail RuntimeError, 'not support "set_eventloop_tick" on the remote interpreter'
478
+ end
479
+ def get_eventloop_tick
480
+ fail RuntimeError, 'not support "get_eventloop_tick" on the remote interpreter'
481
+ end
482
+ def set_no_event_wait(*args)
483
+ fail RuntimeError, 'not support "set_no_event_wait" on the remote interpreter'
484
+ end
485
+ def get_no_event_wait
486
+ fail RuntimeError, 'not support "get_no_event_wait" on the remote interpreter'
487
+ end
488
+ def set_eventloop_weight(*args)
489
+ fail RuntimeError, 'not support "set_eventloop_weight" on the remote interpreter'
490
+ end
491
+ def get_eventloop_weight
492
+ fail RuntimeError, 'not support "get_eventloop_weight" on the remote interpreter'
493
+ end
494
+ end
495
+
496
+ class << RemoteTkIp
497
+ def mainloop(*args)
498
+ fail RuntimeError, 'not support "mainloop" on the remote interpreter'
499
+ end
500
+ def mainloop_watchdog(*args)
501
+ fail RuntimeError, 'not support "mainloop_watchdog" on the remote interpreter'
502
+ end
503
+ def do_one_evant(flag = nil)
504
+ fail RuntimeError, 'not support "do_one_event" on the remote interpreter'
505
+ end
506
+ def mainloop_abort_on_exception
507
+ fail RuntimeError, 'not support "mainloop_abort_on_exception" on the remote interpreter'
508
+ end
509
+ def mainloop_abort_on_exception=(mode)
510
+ fail RuntimeError, 'not support "mainloop_abort_on_exception=" on the remote interpreter'
511
+ end
512
+ def set_eventloop_tick(*args)
513
+ fail RuntimeError, 'not support "set_eventloop_tick" on the remote interpreter'
514
+ end
515
+ def get_eventloop_tick
516
+ fail RuntimeError, 'not support "get_eventloop_tick" on the remote interpreter'
517
+ end
518
+ def set_no_event_wait(*args)
519
+ fail RuntimeError, 'not support "set_no_event_wait" on the remote interpreter'
520
+ end
521
+ def get_no_event_wait
522
+ fail RuntimeError, 'not support "get_no_event_wait" on the remote interpreter'
523
+ end
524
+ def set_eventloop_weight(*args)
525
+ fail RuntimeError, 'not support "set_eventloop_weight" on the remote interpreter'
526
+ end
527
+ def get_eventloop_weight
528
+ fail RuntimeError, 'not support "get_eventloop_weight" on the remote interpreter'
529
+ end
530
+ end