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,282 @@
1
+ #
2
+ # tk/listbox.rb : treat listbox widget
3
+ #
4
+ require 'tk'
5
+ require 'tk/itemconfig'
6
+ require 'tk/scrollable'
7
+ require 'tk/txtwin_abst'
8
+
9
+ module TkListItemConfig
10
+ include TkItemConfigMethod
11
+
12
+ def __item_listval_optkeys(id)
13
+ []
14
+ end
15
+ private :__item_listval_optkeys
16
+ end
17
+
18
+ class Tk::Listbox<TkTextWin
19
+ include TkListItemConfig
20
+ include Scrollable
21
+
22
+ TkCommandNames = ['listbox'.freeze].freeze
23
+ WidgetClassName = 'Listbox'.freeze
24
+ WidgetClassNames[WidgetClassName] = self
25
+
26
+ #def create_self(keys)
27
+ # if keys and keys != None
28
+ # tk_call_without_enc('listbox', @path, *hash_kv(keys, true))
29
+ # else
30
+ # tk_call_without_enc('listbox', @path)
31
+ # end
32
+ #end
33
+ #private :create_self
34
+
35
+ def __tkvariable_optkeys
36
+ super() << 'listvariable'
37
+ end
38
+ private :__tkvariable_optkeys
39
+
40
+ def tagid(id)
41
+ #id.to_s
42
+ _get_eval_string(id)
43
+ end
44
+
45
+ def activate(y)
46
+ tk_send_without_enc('activate', y)
47
+ self
48
+ end
49
+ def curselection
50
+ list(tk_send_without_enc('curselection'))
51
+ end
52
+ def get(first, last=nil)
53
+ if last
54
+ # tk_split_simplelist(_fromUTF8(tk_send_without_enc('get', first, last)))
55
+ tk_split_simplelist(tk_send_without_enc('get', first, last), false, true)
56
+ else
57
+ _fromUTF8(tk_send_without_enc('get', first))
58
+ end
59
+ end
60
+ def nearest(y)
61
+ tk_send_without_enc('nearest', y).to_i
62
+ end
63
+ def size
64
+ tk_send_without_enc('size').to_i
65
+ end
66
+ def selection_anchor(index)
67
+ tk_send_without_enc('selection', 'anchor', index)
68
+ self
69
+ end
70
+ def selection_clear(first, last=None)
71
+ tk_send_without_enc('selection', 'clear', first, last)
72
+ self
73
+ end
74
+ def selection_includes(index)
75
+ bool(tk_send_without_enc('selection', 'includes', index))
76
+ end
77
+ def selection_set(first, last=None)
78
+ tk_send_without_enc('selection', 'set', first, last)
79
+ self
80
+ end
81
+
82
+ def index(idx)
83
+ tk_send_without_enc('index', idx).to_i
84
+ end
85
+
86
+ def value
87
+ get('0', 'end')
88
+ end
89
+
90
+ def value= (vals)
91
+ unless vals.kind_of?(Array)
92
+ fail ArgumentError, 'an Array is expected'
93
+ end
94
+ tk_send_without_enc('delete', '0', 'end')
95
+ tk_send_without_enc('insert', '0',
96
+ *(vals.collect{|v| _get_eval_enc_str(v)}))
97
+ vals
98
+ end
99
+
100
+ def clear
101
+ tk_send_without_enc('delete', '0', 'end')
102
+ self
103
+ end
104
+ alias erase clear
105
+
106
+ =begin
107
+ def itemcget(index, key)
108
+ case key.to_s
109
+ when 'text', 'label', 'show'
110
+ _fromUTF8(tk_send_without_enc('itemcget', index, "-#{key}"))
111
+ when 'font', 'kanjifont'
112
+ #fnt = tk_tcl2ruby(tk_send('itemcget', index, "-#{key}"))
113
+ fnt = tk_tcl2ruby(_fromUTF8(tk_send_without_enc('itemcget', index,
114
+ '-font')))
115
+ unless fnt.kind_of?(TkFont)
116
+ fnt = tagfontobj(index, fnt)
117
+ end
118
+ if key.to_s == 'kanjifont' && JAPANIZED_TK && TK_VERSION =~ /^4\.*/
119
+ # obsolete; just for compatibility
120
+ fnt.kanji_font
121
+ else
122
+ fnt
123
+ end
124
+ else
125
+ tk_tcl2ruby(_fromUTF8(tk_send_without_enc('itemcget', index, "-#{key}")))
126
+ end
127
+ end
128
+ def itemconfigure(index, key, val=None)
129
+ if key.kind_of? Hash
130
+ if (key['font'] || key[:font] ||
131
+ key['kanjifont'] || key[:kanjifont] ||
132
+ key['latinfont'] || key[:latinfont] ||
133
+ key['asciifont'] || key[:asciifont] )
134
+ tagfont_configure(index, _symbolkey2str(key))
135
+ else
136
+ tk_send_without_enc('itemconfigure', index, *hash_kv(key, true))
137
+ end
138
+
139
+ else
140
+ if (key == 'font' || key == :font ||
141
+ key == 'kanjifont' || key == :kanjifont ||
142
+ key == 'latinfont' || key == :latinfont ||
143
+ key == 'asciifont' || key == :asciifont )
144
+ if val == None
145
+ tagfontobj(index)
146
+ else
147
+ tagfont_configure(index, {key=>val})
148
+ end
149
+ else
150
+ tk_call('itemconfigure', index, "-#{key}", val)
151
+ end
152
+ end
153
+ self
154
+ end
155
+
156
+ def itemconfiginfo(index, key=nil)
157
+ if TkComm::GET_CONFIGINFO_AS_ARRAY
158
+ if key
159
+ case key.to_s
160
+ when 'text', 'label', 'show'
161
+ conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('itemconfigure',index,"-#{key}")))
162
+ when 'font', 'kanjifont'
163
+ conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('itemconfigure',index,"-#{key}")))
164
+ conf[4] = tagfont_configinfo(index, conf[4])
165
+ else
166
+ conf = tk_split_list(_fromUTF8(tk_send_without_enc('itemconfigure',index,"-#{key}")))
167
+ end
168
+ conf[0] = conf[0][1..-1]
169
+ conf
170
+ else
171
+ ret = tk_split_simplelist(_fromUTF8(tk_send_without_enc('itemconfigure', index))).collect{|conflist|
172
+ conf = tk_split_simplelist(conflist)
173
+ conf[0] = conf[0][1..-1]
174
+ case conf[0]
175
+ when 'text', 'label', 'show'
176
+ else
177
+ if conf[3]
178
+ if conf[3].index('{')
179
+ conf[3] = tk_split_list(conf[3])
180
+ else
181
+ conf[3] = tk_tcl2ruby(conf[3])
182
+ end
183
+ end
184
+ if conf[4]
185
+ if conf[4].index('{')
186
+ conf[4] = tk_split_list(conf[4])
187
+ else
188
+ conf[4] = tk_tcl2ruby(conf[4])
189
+ end
190
+ end
191
+ end
192
+ conf[1] = conf[1][1..-1] if conf.size == 2 # alias info
193
+ conf
194
+ }
195
+ fontconf = ret.assoc('font')
196
+ if fontconf
197
+ ret.delete_if{|item| item[0] == 'font' || item[0] == 'kanjifont'}
198
+ fontconf[4] = tagfont_configinfo(index, fontconf[4])
199
+ ret.push(fontconf)
200
+ else
201
+ ret
202
+ end
203
+ end
204
+ else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
205
+ if key
206
+ case key.to_s
207
+ when 'text', 'label', 'show'
208
+ conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('itemconfigure',index,"-#{key}")))
209
+ when 'font', 'kanjifont'
210
+ conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('itemconfigure',index,"-#{key}")))
211
+ conf[4] = tagfont_configinfo(index, conf[4])
212
+ else
213
+ conf = tk_split_list(_fromUTF8(tk_send_without_enc('itemconfigure',index,"-#{key}")))
214
+ end
215
+ key = conf.shift[1..-1]
216
+ { key => conf }
217
+ else
218
+ ret = {}
219
+ tk_split_simplelist(_fromUTF8(tk_send_without_enc('itemconfigure', index))).each{|conflist|
220
+ conf = tk_split_simplelist(conflist)
221
+ key = conf.shift[1..-1]
222
+ case key
223
+ when 'text', 'label', 'show'
224
+ else
225
+ if conf[2]
226
+ if conf[2].index('{')
227
+ conf[2] = tk_split_list(conf[2])
228
+ else
229
+ conf[2] = tk_tcl2ruby(conf[2])
230
+ end
231
+ end
232
+ if conf[3]
233
+ if conf[3].index('{')
234
+ conf[3] = tk_split_list(conf[3])
235
+ else
236
+ conf[3] = tk_tcl2ruby(conf[3])
237
+ end
238
+ end
239
+ end
240
+ if conf.size == 1
241
+ ret[key] = conf[0][1..-1] # alias info
242
+ else
243
+ ret[key] = conf
244
+ end
245
+ }
246
+ fontconf = ret['font']
247
+ if fontconf
248
+ ret.delete('font')
249
+ ret.delete('kanjifont')
250
+ fontconf[3] = tagfont_configinfo(index, fontconf[3])
251
+ ret['font'] = fontconf
252
+ end
253
+ ret
254
+ end
255
+ end
256
+ end
257
+
258
+ def current_itemconfiginfo(index, key=nil)
259
+ if TkComm::GET_CONFIGINFO_AS_ARRAY
260
+ if key
261
+ conf = itemconfiginfo(index, key)
262
+ {conf[0] => conf[4]}
263
+ else
264
+ ret = {}
265
+ itemconfiginfo(index).each{|conf|
266
+ ret[conf[0]] = conf[4] if conf.size > 2
267
+ }
268
+ ret
269
+ end
270
+ else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
271
+ ret = {}
272
+ itemconfiginfo(index, key).each{|k, conf|
273
+ ret[k] = conf[-1] if conf.kind_of?(Array)
274
+ }
275
+ ret
276
+ end
277
+ end
278
+ =end
279
+ end
280
+
281
+ #TkListbox = Tk::Listbox unless Object.const_defined? :TkListbox
282
+ Tk.__set_toplevel_aliases__(:Tk, Tk::Listbox, :TkListbox)
@@ -0,0 +1,78 @@
1
+ #
2
+ # tk/macpkg.rb : methods for Tcl/Tk packages for Macintosh
3
+ # 2000/11/22 by Hidetoshi Nagai <nagai@ai.kyutech.ac.jp>
4
+ #
5
+ # ATTENTION !!
6
+ # This is NOT TESTED. Because I have no test-environment.
7
+ #
8
+ #
9
+ require 'tk'
10
+
11
+ module Tk
12
+ def Tk.load_tclscript_rsrc(resource_name, file=None)
13
+ # Mac only
14
+ tk_call('source', '-rsrc', resource_name, file)
15
+ end
16
+
17
+ def Tk.load_tclscript_rsrcid(resource_id, file=None)
18
+ # Mac only
19
+ tk_call('source', '-rsrcid', resource_id, file)
20
+ end
21
+ end
22
+
23
+ module Tk::MacResource
24
+ end
25
+ #TkMacResource = Tk::MacResource
26
+ Tk.__set_toplevel_aliases__(:Tk, Tk::MacResource, :TkMacResource)
27
+
28
+ module Tk::MacResource
29
+ extend Tk
30
+ extend Tk::MacResource
31
+
32
+ TkCommandNames = ['resource'.freeze].freeze
33
+
34
+ PACKAGE_NAME = 'resource'.freeze
35
+ def self.package_name
36
+ PACKAGE_NAME
37
+ end
38
+
39
+ tk_call_without_enc('package', 'require', 'resource')
40
+
41
+ def close(rsrcRef)
42
+ tk_call('resource', 'close', rsrcRef)
43
+ end
44
+
45
+ def delete(rsrcType, opts=nil)
46
+ tk_call('resource', 'delete', *(hash_kv(opts) << rsrcType))
47
+ end
48
+
49
+ def files(rsrcRef=nil)
50
+ if rsrcRef
51
+ tk_call('resource', 'files', rsrcRef)
52
+ else
53
+ tk_split_simplelist(tk_call('resource', 'files'))
54
+ end
55
+ end
56
+
57
+ def list(rsrcType, rsrcRef=nil)
58
+ tk_split_simplelist(tk_call('resource', 'list', rsrcType, rsrcRef))
59
+ end
60
+
61
+ def open(fname, access=nil)
62
+ tk_call('resource', 'open', fname, access)
63
+ end
64
+
65
+ def read(rsrcType, rsrcID, rsrcRef=nil)
66
+ tk_call('resource', 'read', rsrcType, rsrcID, rsrcRef)
67
+ end
68
+
69
+ def types(rsrcRef=nil)
70
+ tk_split_simplelist(tk_call('resource', 'types', rsrcRef))
71
+ end
72
+
73
+ def write(rsrcType, data, opts=nil)
74
+ tk_call('resource', 'write', *(hash_kv(opts) << rsrcType << data))
75
+ end
76
+
77
+ module_function :close, :delete, :files, :list, :open, :read, :types, :write
78
+ end
@@ -0,0 +1,681 @@
1
+ #
2
+ # tk/menu.rb : treat menu and menubutton
3
+ #
4
+ require 'tk'
5
+ require 'tk/itemconfig'
6
+ require 'tk/menuspec'
7
+
8
+ module TkMenuEntryConfig
9
+ include TkItemConfigMethod
10
+
11
+ def __item_cget_cmd(id)
12
+ [self.path, 'entrycget', id]
13
+ end
14
+ private :__item_cget_cmd
15
+
16
+ def __item_config_cmd(id)
17
+ [self.path, 'entryconfigure', id]
18
+ end
19
+ private :__item_config_cmd
20
+
21
+ def __item_strval_optkeys(id)
22
+ super(id) << 'selectcolor'
23
+ end
24
+ private :__item_strval_optkeys
25
+
26
+ def __item_listval_optkeys(id)
27
+ []
28
+ end
29
+ private :__item_listval_optkeys
30
+
31
+ def __item_val2ruby_optkeys(id) # { key=>proc, ... }
32
+ super(id).update('menu'=>proc{|i, v| window(v)})
33
+ end
34
+ private :__item_val2ruby_optkeys
35
+
36
+ alias entrycget itemcget
37
+ alias entrycget_strict itemcget_strict
38
+ alias entryconfigure itemconfigure
39
+ alias entryconfiginfo itemconfiginfo
40
+ alias current_entryconfiginfo current_itemconfiginfo
41
+
42
+ private :itemcget, :itemcget_strict
43
+ private :itemconfigure, :itemconfiginfo, :current_itemconfiginfo
44
+ end
45
+
46
+ class Tk::Menu<TkWindow
47
+ include Wm
48
+ include TkMenuEntryConfig
49
+ extend TkMenuSpec
50
+
51
+ TkCommandNames = ['menu'.freeze].freeze
52
+ WidgetClassName = 'Menu'.freeze
53
+ WidgetClassNames[WidgetClassName] = self
54
+
55
+ #def create_self(keys)
56
+ # if keys and keys != None
57
+ # tk_call_without_enc('menu', @path, *hash_kv(keys, true))
58
+ # else
59
+ # tk_call_without_enc('menu', @path)
60
+ # end
61
+ #end
62
+ #private :create_self
63
+
64
+ def __strval_optkeys
65
+ super() << 'selectcolor' << 'title'
66
+ end
67
+ private :__strval_optkeys
68
+
69
+ def __boolval_optkeys
70
+ super() << 'tearoff'
71
+ end
72
+ private :__boolval_optkeys
73
+
74
+ def self.new_menuspec(menu_spec, parent = nil, tearoff = false, keys = nil)
75
+ if parent.kind_of?(Hash)
76
+ keys = _symbolkey2str(parent)
77
+ parent = keys.delete('parent')
78
+ tearoff = keys.delete('tearoff')
79
+ elsif tearoff.kind_of?(Hash)
80
+ keys = _symbolkey2str(tearoff)
81
+ tearoff = keys.delete('tearoff')
82
+ elsif keys
83
+ keys = _symbolkey2str(keys)
84
+ else
85
+ keys = {}
86
+ end
87
+
88
+ widgetname = keys.delete('widgetname')
89
+ _create_menu(parent, menu_spec, widgetname, tearoff, keys)
90
+ end
91
+
92
+ def tagid(id)
93
+ #id.to_s
94
+ _get_eval_string(id)
95
+ end
96
+
97
+ def activate(index)
98
+ tk_send_without_enc('activate', _get_eval_enc_str(index))
99
+ self
100
+ end
101
+ def add(type, keys=nil)
102
+ tk_send_without_enc('add', type, *hash_kv(keys, true))
103
+ self
104
+ end
105
+ def add_cascade(keys=nil)
106
+ add('cascade', keys)
107
+ end
108
+ def add_checkbutton(keys=nil)
109
+ add('checkbutton', keys)
110
+ end
111
+ def add_command(keys=nil)
112
+ add('command', keys)
113
+ end
114
+ def add_radiobutton(keys=nil)
115
+ add('radiobutton', keys)
116
+ end
117
+ def add_separator(keys=nil)
118
+ add('separator', keys)
119
+ end
120
+
121
+ def clone_menu(*args)
122
+ if args[0].kind_of?(TkWindow)
123
+ parent = args.shift
124
+ else
125
+ parent = self
126
+ end
127
+
128
+ if args[0].kind_of?(String) || args[0].kind_of?(Symbol) # menu type
129
+ type = args.shift
130
+ else
131
+ type = None # 'normal'
132
+ end
133
+
134
+ if args[0].kind_of?(Hash)
135
+ keys = _symbolkey2str(args.shift)
136
+ else
137
+ keys = {}
138
+ end
139
+
140
+ parent = keys.delete('parent') if keys.has_key?('parent')
141
+ type = keys.delete('type') if keys.has_key?('type')
142
+
143
+ if keys.empty?
144
+ Tk::MenuClone.new(self, parent, type)
145
+ else
146
+ Tk::MenuClone.new(self, parent, type, keys)
147
+ end
148
+ end
149
+
150
+ def index(idx)
151
+ ret = tk_send_without_enc('index', _get_eval_enc_str(idx))
152
+ (ret == 'none')? nil: number(ret)
153
+ end
154
+ def invoke(index)
155
+ _fromUTF8(tk_send_without_enc('invoke', _get_eval_enc_str(index)))
156
+ end
157
+ def insert(index, type, keys=nil)
158
+ tk_send_without_enc('insert', _get_eval_enc_str(index),
159
+ type, *hash_kv(keys, true))
160
+ self
161
+ end
162
+ def delete(first, last=nil)
163
+ if last
164
+ tk_send_without_enc('delete', _get_eval_enc_str(first),
165
+ _get_eval_enc_str(last))
166
+ else
167
+ tk_send_without_enc('delete', _get_eval_enc_str(first))
168
+ end
169
+ self
170
+ end
171
+ def popup(x, y, index=nil)
172
+ if index
173
+ tk_call_without_enc('tk_popup', path, x, y,
174
+ _get_eval_enc_str(index))
175
+ else
176
+ tk_call_without_enc('tk_popup', path, x, y)
177
+ end
178
+ self
179
+ end
180
+ def post(x, y)
181
+ _fromUTF8(tk_send_without_enc('post', x, y))
182
+ end
183
+ def postcascade(index)
184
+ tk_send_without_enc('postcascade', _get_eval_enc_str(index))
185
+ self
186
+ end
187
+ def postcommand(cmd=Proc.new)
188
+ configure_cmd 'postcommand', cmd
189
+ self
190
+ end
191
+ def set_focus
192
+ tk_call_without_enc('tk_menuSetFocus', path)
193
+ self
194
+ end
195
+ def tearoffcommand(cmd=Proc.new)
196
+ configure_cmd 'tearoffcommand', cmd
197
+ self
198
+ end
199
+ def menutype(index)
200
+ tk_send_without_enc('type', _get_eval_enc_str(index))
201
+ end
202
+ def unpost
203
+ tk_send_without_enc('unpost')
204
+ self
205
+ end
206
+ def xposition(index)
207
+ number(tk_send_without_enc('xposition', _get_eval_enc_str(index)))
208
+ end
209
+ def yposition(index)
210
+ number(tk_send_without_enc('yposition', _get_eval_enc_str(index)))
211
+ end
212
+
213
+ =begin
214
+ def entrycget(index, key)
215
+ case key.to_s
216
+ when 'text', 'label', 'show'
217
+ _fromUTF8(tk_send_without_enc('entrycget',
218
+ _get_eval_enc_str(index), "-#{key}"))
219
+ when 'font', 'kanjifont'
220
+ #fnt = tk_tcl2ruby(tk_send('entrycget', index, "-#{key}"))
221
+ fnt = tk_tcl2ruby(_fromUTF8(tk_send_without_enc('entrycget', _get_eval_enc_str(index), '-font')))
222
+ unless fnt.kind_of?(TkFont)
223
+ fnt = tagfontobj(index, fnt)
224
+ end
225
+ if key.to_s == 'kanjifont' && JAPANIZED_TK && TK_VERSION =~ /^4\.*/
226
+ # obsolete; just for compatibility
227
+ fnt.kanji_font
228
+ else
229
+ fnt
230
+ end
231
+ else
232
+ tk_tcl2ruby(_fromUTF8(tk_send_without_enc('entrycget', _get_eval_enc_str(index), "-#{key}")))
233
+ end
234
+ end
235
+ def entryconfigure(index, key, val=None)
236
+ if key.kind_of? Hash
237
+ if (key['font'] || key[:font] ||
238
+ key['kanjifont'] || key[:kanjifont] ||
239
+ key['latinfont'] || key[:latinfont] ||
240
+ key['asciifont'] || key[:asciifont])
241
+ tagfont_configure(index, _symbolkey2str(key))
242
+ else
243
+ tk_send_without_enc('entryconfigure', _get_eval_enc_str(index),
244
+ *hash_kv(key, true))
245
+ end
246
+
247
+ else
248
+ if (key == 'font' || key == :font ||
249
+ key == 'kanjifont' || key == :kanjifont ||
250
+ key == 'latinfont' || key == :latinfont ||
251
+ key == 'asciifont' || key == :asciifont )
252
+ if val == None
253
+ tagfontobj(index)
254
+ else
255
+ tagfont_configure(index, {key=>val})
256
+ end
257
+ else
258
+ tk_call('entryconfigure', index, "-#{key}", val)
259
+ end
260
+ end
261
+ self
262
+ end
263
+
264
+ def entryconfiginfo(index, key=nil)
265
+ if TkComm::GET_CONFIGINFO_AS_ARRAY
266
+ if key
267
+ case key.to_s
268
+ when 'text', 'label', 'show'
269
+ conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('entryconfigure',_get_eval_enc_str(index),"-#{key}")))
270
+ when 'font', 'kanjifont'
271
+ conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('entryconfigure',_get_eval_enc_str(index),"-#{key}")))
272
+ conf[4] = tagfont_configinfo(index, conf[4])
273
+ else
274
+ conf = tk_split_list(_fromUTF8(tk_send_without_enc('entryconfigure',_get_eval_enc_str(index),"-#{key}")))
275
+ end
276
+ conf[0] = conf[0][1..-1]
277
+ conf
278
+ else
279
+ ret = tk_split_simplelist(_fromUTF8(tk_send_without_enc('entryconfigure', _get_eval_enc_str(index)))).collect{|conflist|
280
+ conf = tk_split_simplelist(conflist)
281
+ conf[0] = conf[0][1..-1]
282
+ case conf[0]
283
+ when 'text', 'label', 'show'
284
+ else
285
+ if conf[3]
286
+ if conf[3].index('{')
287
+ conf[3] = tk_split_list(conf[3])
288
+ else
289
+ conf[3] = tk_tcl2ruby(conf[3])
290
+ end
291
+ end
292
+ if conf[4]
293
+ if conf[4].index('{')
294
+ conf[4] = tk_split_list(conf[4])
295
+ else
296
+ conf[4] = tk_tcl2ruby(conf[4])
297
+ end
298
+ end
299
+ end
300
+ conf[1] = conf[1][1..-1] if conf.size == 2 # alias info
301
+ conf
302
+ }
303
+ if fontconf
304
+ ret.delete_if{|item| item[0] == 'font' || item[0] == 'kanjifont'}
305
+ fontconf[4] = tagfont_configinfo(index, fontconf[4])
306
+ ret.push(fontconf)
307
+ else
308
+ ret
309
+ end
310
+ end
311
+ else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
312
+ if key
313
+ case key.to_s
314
+ when 'text', 'label', 'show'
315
+ conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('entryconfigure',_get_eval_enc_str(index),"-#{key}")))
316
+ when 'font', 'kanjifont'
317
+ conf = tk_split_simplelist(_fromUTF8(tk_send_without_enc('entryconfigure',_get_eval_enc_str(index),"-#{key}")))
318
+ conf[4] = tagfont_configinfo(index, conf[4])
319
+ else
320
+ conf = tk_split_list(_fromUTF8(tk_send_without_enc('entryconfigure',_get_eval_enc_str(index),"-#{key}")))
321
+ end
322
+ key = conf.shift[1..-1]
323
+ { key => conf }
324
+ else
325
+ ret = {}
326
+ tk_split_simplelist(_fromUTF8(tk_send_without_enc('entryconfigure', _get_eval_enc_str(index)))).each{|conflist|
327
+ conf = tk_split_simplelist(conflist)
328
+ key = conf.shift[1..-1]
329
+ case key
330
+ when 'text', 'label', 'show'
331
+ else
332
+ if conf[2]
333
+ if conf[2].index('{')
334
+ conf[2] = tk_split_list(conf[2])
335
+ else
336
+ conf[2] = tk_tcl2ruby(conf[2])
337
+ end
338
+ end
339
+ if conf[3]
340
+ if conf[3].index('{')
341
+ conf[3] = tk_split_list(conf[3])
342
+ else
343
+ conf[3] = tk_tcl2ruby(conf[3])
344
+ end
345
+ end
346
+ end
347
+ if conf.size == 1
348
+ ret[key] = conf[0][1..-1] # alias info
349
+ else
350
+ ret[key] = conf
351
+ end
352
+ }
353
+ fontconf = ret['font']
354
+ if fontconf
355
+ ret.delete('font')
356
+ ret.delete('kanjifont')
357
+ fontconf[3] = tagfont_configinfo(index, fontconf[3])
358
+ ret['font'] = fontconf
359
+ end
360
+ ret
361
+ end
362
+ end
363
+ end
364
+
365
+ def current_entryconfiginfo(index, key=nil)
366
+ if TkComm::GET_CONFIGINFO_AS_ARRAY
367
+ if key
368
+ conf = entryconfiginfo(index, key)
369
+ {conf[0] => conf[4]}
370
+ else
371
+ ret = {}
372
+ entryconfiginfo(index).each{|conf|
373
+ ret[conf[0]] = conf[4] if conf.size > 2
374
+ }
375
+ ret
376
+ end
377
+ else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
378
+ ret = {}
379
+ entryconfiginfo(index, key).each{|k, conf|
380
+ ret[k] = conf[-1] if conf.kind_of?(Array)
381
+ }
382
+ ret
383
+ end
384
+ end
385
+ =end
386
+ end
387
+
388
+ #TkMenu = Tk::Menu unless Object.const_defined? :TkMenu
389
+ Tk.__set_toplevel_aliases__(:Tk, Tk::Menu, :TkMenu)
390
+
391
+
392
+ class Tk::MenuClone<Tk::Menu
393
+ =begin
394
+ def initialize(parent, type=None)
395
+ widgetname = nil
396
+ if parent.kind_of? Hash
397
+ keys = _symbolkey2str(parent)
398
+ parent = keys.delete('parent')
399
+ widgetname = keys.delete('widgetname')
400
+ type = keys.delete('type'); type = None unless type
401
+ end
402
+ #unless parent.kind_of?(TkMenu)
403
+ # fail ArgumentError, "parent must be TkMenu"
404
+ #end
405
+ @parent = parent
406
+ install_win(@parent.path, widgetname)
407
+ tk_call_without_enc(@parent.path, 'clone', @path, type)
408
+ end
409
+ =end
410
+ def initialize(src_menu, *args)
411
+ widgetname = nil
412
+
413
+ if args[0].kind_of?(TkWindow) # parent window
414
+ parent = args.shift
415
+ else
416
+ parent = src_menu
417
+ end
418
+
419
+ if args[0].kind_of?(String) || args[0].kind_of?(Symbol) # menu type
420
+ type = args.shift
421
+ else
422
+ type = None # 'normal'
423
+ end
424
+
425
+ if args[0].kind_of?(Hash)
426
+ keys = _symbolkey2str(args.shift)
427
+ parent = keys.delete('parent') if keys.has_key?('parent')
428
+ widgetname = keys.delete('widgetname')
429
+ type = keys.delete('type') if keys.has_key?('type')
430
+ else
431
+ keys = nil
432
+ end
433
+
434
+ @src_menu = src_menu
435
+ @parent = parent
436
+ @type = type
437
+ install_win(@parent.path, widgetname)
438
+ tk_call_without_enc(@src_menu.path, 'clone', @path, @type)
439
+ configure(keys) if keys && !keys.empty?
440
+ end
441
+
442
+ def source_menu
443
+ @src_menu
444
+ end
445
+ end
446
+ Tk::CloneMenu = Tk::MenuClone
447
+ #TkMenuClone = Tk::MenuClone unless Object.const_defined? :TkMenuClone
448
+ #TkCloneMenu = Tk::CloneMenu unless Object.const_defined? :TkCloneMenu
449
+ Tk.__set_toplevel_aliases__(:Tk, Tk::MenuClone, :TkMenuClone, :TkCloneMenu)
450
+
451
+ module Tk::SystemMenu
452
+ def initialize(parent, keys=nil)
453
+ if parent.kind_of? Hash
454
+ keys = _symbolkey2str(parent)
455
+ parent = keys.delete('parent')
456
+ end
457
+ #unless parent.kind_of? TkMenu
458
+ # fail ArgumentError, "parent must be a TkMenu object"
459
+ #end
460
+ # @path = Kernel.format("%s.%s", parent.path, self.class::SYSMENU_NAME)
461
+ @path = parent.path + '.' + self.class::SYSMENU_NAME
462
+ #TkComm::Tk_WINDOWS[@path] = self
463
+ TkCore::INTERP.tk_windows[@path] = self
464
+ if self.method(:create_self).arity == 0
465
+ p 'create_self has no arg' if $DEBUG
466
+ create_self
467
+ configure(keys) if keys
468
+ else
469
+ p 'create_self has an arg' if $DEBUG
470
+ create_self(keys)
471
+ end
472
+ end
473
+ end
474
+ TkSystemMenu = Tk::SystemMenu
475
+
476
+
477
+ class Tk::SysMenu_Help<Tk::Menu
478
+ # for all platform
479
+ include Tk::SystemMenu
480
+ SYSMENU_NAME = 'help'
481
+ end
482
+ #TkSysMenu_Help = Tk::SysMenu_Help unless Object.const_defined? :TkSysMenu_Help
483
+ Tk.__set_toplevel_aliases__(:Tk, Tk::SysMenu_Help, :TkSysMenu_Help)
484
+
485
+
486
+ class Tk::SysMenu_System<Tk::Menu
487
+ # for Windows
488
+ include Tk::SystemMenu
489
+ SYSMENU_NAME = 'system'
490
+ end
491
+ #TkSysMenu_System = Tk::SysMenu_System unless Object.const_defined? :TkSysMenu_System
492
+ Tk.__set_toplevel_aliases__(:Tk, Tk::SysMenu_System, :TkSysMenu_System)
493
+
494
+
495
+ class Tk::SysMenu_Apple<Tk::Menu
496
+ # for Machintosh
497
+ include Tk::SystemMenu
498
+ SYSMENU_NAME = 'apple'
499
+ end
500
+ #TkSysMenu_Apple = Tk::SysMenu_Apple unless Object.const_defined? :TkSysMenu_Apple
501
+ Tk.__set_toplevel_aliases__(:Tk, Tk::SysMenu_Apple, :TkSysMenu_Apple)
502
+
503
+
504
+ class Tk::Menubutton<Tk::Label
505
+ TkCommandNames = ['menubutton'.freeze].freeze
506
+ WidgetClassName = 'Menubutton'.freeze
507
+ WidgetClassNames[WidgetClassName] = self
508
+ def create_self(keys)
509
+ if keys and keys != None
510
+ unless TkConfigMethod.__IGNORE_UNKNOWN_CONFIGURE_OPTION__
511
+ # tk_call_without_enc('menubutton', @path, *hash_kv(keys, true))
512
+ tk_call_without_enc(self.class::TkCommandNames[0], @path,
513
+ *hash_kv(keys, true))
514
+ else
515
+ begin
516
+ tk_call_without_enc(self.class::TkCommandNames[0], @path,
517
+ *hash_kv(keys, true))
518
+ rescue
519
+ tk_call_without_enc(self.class::TkCommandNames[0], @path)
520
+ keys = __check_available_configure_options(keys)
521
+ unless keys.empty?
522
+ tk_call_without_enc('destroy', @path) rescue nil
523
+ tk_call_without_enc(self.class::TkCommandNames[0], @path,
524
+ *hash_kv(keys, true))
525
+ end
526
+ end
527
+ end
528
+ else
529
+ # tk_call_without_enc('menubutton', @path)
530
+ tk_call_without_enc(self.class::TkCommandNames[0], @path)
531
+ end
532
+ end
533
+ private :create_self
534
+
535
+ def __boolval_optkeys
536
+ super() << 'indicatoron'
537
+ end
538
+ private :__boolval_optkeys
539
+
540
+ end
541
+ Tk::MenuButton = Tk::Menubutton
542
+ #TkMenubutton = Tk::Menubutton unless Object.const_defined? :TkMenubutton
543
+ #TkMenuButton = Tk::MenuButton unless Object.const_defined? :TkMenuButton
544
+ Tk.__set_toplevel_aliases__(:Tk, Tk::Menubutton, :TkMenubutton, :TkMenuButton)
545
+
546
+
547
+ class Tk::OptionMenubutton<Tk::Menubutton
548
+ TkCommandNames = ['tk_optionMenu'.freeze].freeze
549
+
550
+ class OptionMenu<TkMenu
551
+ def initialize(path) #==> return value of tk_optionMenu
552
+ @path = path
553
+ #TkComm::Tk_WINDOWS[@path] = self
554
+ TkCore::INTERP.tk_windows[@path] = self
555
+ end
556
+ end
557
+
558
+ def initialize(*args)
559
+ # args :: [parent,] [var,] [value[, ...],] [keys]
560
+ # parent --> TkWindow or nil
561
+ # var --> TkVariable or nil
562
+ # keys --> Hash
563
+ # keys[:parent] or keys['parent'] --> parent
564
+ # keys[:variable] or keys['variable'] --> var
565
+ # keys[:values] or keys['values'] --> value, ...
566
+ # other Hash keys are menubutton options
567
+ keys = {}
568
+ keys = args.pop if args[-1].kind_of?(Hash)
569
+ keys = _symbolkey2str(keys)
570
+
571
+ parent = nil
572
+ if !args.empty? && (args[0].kind_of?(TkWindow) || args[0] == nil)
573
+ keys.delete('parent') # ignore
574
+ parent = args.shift
575
+ else
576
+ parent = keys.delete('parent')
577
+ end
578
+
579
+ @variable = nil
580
+ if !args.empty? && (args[0].kind_of?(TkVariable) || args[0] == nil)
581
+ keys.delete('variable') # ignore
582
+ @variable = args.shift
583
+ else
584
+ @variable = keys.delete('variable')
585
+ end
586
+ @variable = TkVariable.new unless @variable
587
+
588
+ (args = keys.delete('values') || []) if args.empty?
589
+ if args.empty?
590
+ args << @variable.value
591
+ else
592
+ @variable.value = args[0]
593
+ end
594
+
595
+ install_win(if parent then parent.path end)
596
+ @menu = OptionMenu.new(tk_call('tk_optionMenu',
597
+ @path, @variable.id, *args))
598
+
599
+ configure(keys) if keys
600
+ end
601
+
602
+ def value
603
+ @variable.value
604
+ end
605
+
606
+ def value=(val)
607
+ @variable.value = val
608
+ end
609
+
610
+ def activate(index)
611
+ @menu.activate(index)
612
+ self
613
+ end
614
+ def add(value)
615
+ @menu.add('radiobutton', 'variable'=>@variable,
616
+ 'label'=>value, 'value'=>value)
617
+ self
618
+ end
619
+ def index(index)
620
+ @menu.index(index)
621
+ end
622
+ def invoke(index)
623
+ @menu.invoke(index)
624
+ end
625
+ def insert(index, value)
626
+ @menu.insert(index, 'radiobutton', 'variable'=>@variable,
627
+ 'label'=>value, 'value'=>value)
628
+ self
629
+ end
630
+ def delete(index, last=None)
631
+ @menu.delete(index, last)
632
+ self
633
+ end
634
+ def xposition(index)
635
+ @menu.xposition(index)
636
+ end
637
+ def yposition(index)
638
+ @menu.yposition(index)
639
+ end
640
+ def menu
641
+ @menu
642
+ end
643
+ def menucget(key)
644
+ @menu.cget(key)
645
+ end
646
+ def menucget_strict(key)
647
+ @menu.cget_strict(key)
648
+ end
649
+ def menuconfigure(key, val=None)
650
+ @menu.configure(key, val)
651
+ self
652
+ end
653
+ def menuconfiginfo(key=nil)
654
+ @menu.configinfo(key)
655
+ end
656
+ def current_menuconfiginfo(key=nil)
657
+ @menu.current_configinfo(key)
658
+ end
659
+ def entrycget(index, key)
660
+ @menu.entrycget(index, key)
661
+ end
662
+ def entrycget_strict(index, key)
663
+ @menu.entrycget_strict(index, key)
664
+ end
665
+ def entryconfigure(index, key, val=None)
666
+ @menu.entryconfigure(index, key, val)
667
+ self
668
+ end
669
+ def entryconfiginfo(index, key=nil)
670
+ @menu.entryconfiginfo(index, key)
671
+ end
672
+ def current_entryconfiginfo(index, key=nil)
673
+ @menu.current_entryconfiginfo(index, key)
674
+ end
675
+ end
676
+
677
+ Tk::OptionMenuButton = Tk::OptionMenubutton
678
+ #TkOptionMenubutton = Tk::OptionMenubutton unless Object.const_defined? :TkOptionMenubutton
679
+ #TkOptionMenuButton = Tk::OptionMenuButton unless Object.const_defined? :TkOptionMenuButton
680
+ Tk.__set_toplevel_aliases__(:Tk, Tk::OptionMenubutton,
681
+ :TkOptionMenubutton, :TkOptionMenuButton)