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,2145 @@
1
+ #
2
+ # tkextlib/blt/component.rb
3
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
4
+ #
5
+
6
+ require 'tk'
7
+ require 'tkextlib/blt.rb'
8
+
9
+ module Tk::BLT
10
+ module PlotComponent
11
+ include TkItemConfigMethod
12
+
13
+ module OptKeys
14
+ def __item_font_optkeys(id)
15
+ ['font', 'tickfont', 'titlefont']
16
+ end
17
+ private :__item_font_optkeys
18
+
19
+ def __item_numstrval_optkeys(id)
20
+ ['xoffset', 'yoffset']
21
+ end
22
+ private :__item_numstrval_optkeys
23
+
24
+ def __item_boolval_optkeys(id)
25
+ ['hide', 'under', 'descending', 'logscale', 'loose', 'showticks',
26
+ 'titlealternate', 'scalesymbols', 'minor', 'raised',
27
+ 'center', 'decoration', 'landscape', 'maxpect']
28
+ end
29
+ private :__item_boolval_optkeys
30
+
31
+ def __item_strval_optkeys(id)
32
+ ['text', 'label', 'limits', 'title',
33
+ 'show', 'file', 'maskdata', 'maskfile',
34
+ 'color', 'titlecolor', 'fill', 'outline', 'offdash']
35
+ end
36
+ private :__item_strval_optkeys
37
+
38
+ def __item_listval_optkeys(id)
39
+ ['bindtags']
40
+ end
41
+ private :__item_listval_optkeys
42
+
43
+ def __item_numlistval_optkeys(id)
44
+ ['dashes', 'majorticks', 'minorticks']
45
+ end
46
+ private :__item_numlistval_optkeys
47
+
48
+ def __item_tkvariable_optkeys(id)
49
+ ['variable', 'textvariable', 'colormap', 'fontmap']
50
+ end
51
+ private :__item_tkvariable_optkeys
52
+ end
53
+
54
+ include OptKeys
55
+
56
+ def __item_cget_cmd(id)
57
+ if id.kind_of?(Array)
58
+ # id := [ type, name ]
59
+ [self.path, id[0], 'cget', id[1]]
60
+ else
61
+ [self.path, id, 'cget']
62
+ end
63
+ end
64
+ private :__item_cget_cmd
65
+
66
+ def __item_config_cmd(id)
67
+ if id.kind_of?(Array)
68
+ # id := [ type, name, ... ]
69
+ type, *names = id
70
+ [self.path, type, 'configure'].concat(names)
71
+ else
72
+ [self.path, id, 'configure']
73
+ end
74
+ end
75
+ private :__item_config_cmd
76
+
77
+ def __item_pathname(id)
78
+ if id.kind_of?(Array)
79
+ id = tagid(id[1])
80
+ end
81
+ [self.path, id].join(';')
82
+ end
83
+ private :__item_pathname
84
+
85
+ def axis_cget(id, option)
86
+ ret = itemcget(['axis', tagid(id)], option)
87
+ end
88
+ def axis_cget_strict(id, option)
89
+ ret = itemcget_strict(['axis', tagid(id)], option)
90
+ end
91
+ def axis_configure(*args)
92
+ slot = args.pop
93
+ if slot.kind_of?(Hash)
94
+ value = None
95
+ slot = _symbolkey2str(slot)
96
+ if cmd = slot.delete('command')
97
+ slot['command'] = proc{|w, tick|
98
+ cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
99
+ }
100
+ end
101
+ else
102
+ value = slot
103
+ slot = args.pop
104
+ if slot == :command || slot == 'command'
105
+ cmd = value
106
+ value = proc{|w, tick|
107
+ cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
108
+ }
109
+ end
110
+ end
111
+ id_list = args.flatten.collect!{|id| tagid(id)}.unshift('axis')
112
+ itemconfigure(id_list, slot, value)
113
+ end
114
+ def axis_configinfo(id, slot=nil)
115
+ itemconfiginfo(['axis', tagid(id)], slot)
116
+ end
117
+ def current_axis_configinfo(id, slot=nil)
118
+ current_itemconfiginfo(['axis', tagid(id)], slot)
119
+ end
120
+
121
+ def crosshairs_cget(option)
122
+ itemcget('crosshairs', option)
123
+ end
124
+ def crosshairs_cget_strict(option)
125
+ itemcget_strict('crosshairs', option)
126
+ end
127
+ def crosshairs_configure(slot, value=None)
128
+ itemconfigure('crosshairs', slot, value)
129
+ end
130
+ def crosshairs_configinfo(slot=nil)
131
+ itemconfiginfo('crosshairs', slot)
132
+ end
133
+ def current_crosshairs_configinfo(slot=nil)
134
+ current_itemconfiginfo('crosshairs', slot)
135
+ end
136
+
137
+ def element_cget(id, option)
138
+ itemcget(['element', tagid(id)], option)
139
+ end
140
+ def element_cget_strict(id, option)
141
+ itemcget_strict(['element', tagid(id)], option)
142
+ end
143
+ def element_configure(*args)
144
+ slot = args.pop
145
+ if slot.kind_of?(Hash)
146
+ value = None
147
+ else
148
+ value = slot
149
+ slot = args.pop
150
+ end
151
+ id_list = args.flatten.collect!{|id| tagid(id)}.unshift('element')
152
+ itemconfigure(id_list, slot, value)
153
+ end
154
+ def element_configinfo(id, slot=nil)
155
+ itemconfiginfo(['element', tagid(id)], slot)
156
+ end
157
+ def current_element_configinfo(id, slot=nil)
158
+ current_itemconfiginfo(['element', tagid(id)], slot)
159
+ end
160
+
161
+ def bar_cget(id, option)
162
+ itemcget(['bar', tagid(id)], option)
163
+ end
164
+ def bar_cget_strict(id, option)
165
+ itemcget_strict(['bar', tagid(id)], option)
166
+ end
167
+ def bar_configure(*args)
168
+ slot = args.pop
169
+ if slot.kind_of?(Hash)
170
+ value = None
171
+ else
172
+ value = slot
173
+ slot = args.pop
174
+ end
175
+ id_list = args.flatten.collect!{|id| tagid(id)}.unshift('bar')
176
+ itemconfigure(id_list, slot, value)
177
+ end
178
+ def bar_configinfo(id, slot=nil)
179
+ itemconfiginfo(['bar', tagid(id)], slot)
180
+ end
181
+ def current_bar_configinfo(id, slot=nil)
182
+ current_itemconfiginfo(['bar', tagid(id)], slot)
183
+ end
184
+
185
+ def line_cget(id, option)
186
+ itemcget(['line', tagid(id)], option)
187
+ end
188
+ def line_cget_strict(id, option)
189
+ itemcget_strict(['line', tagid(id)], option)
190
+ end
191
+ def line_configure(*args)
192
+ slot = args.pop
193
+ if slot.kind_of?(Hash)
194
+ value = None
195
+ else
196
+ value = slot
197
+ slot = args.pop
198
+ end
199
+ id_list = args.flatten.collect!{|id| tagid(id)}.unshift('line')
200
+ itemconfigure(id_list, slot, value)
201
+ end
202
+ def line_configinfo(id, slot=nil)
203
+ itemconfiginfo(['line', tagid(id)], slot)
204
+ end
205
+ def current_line_configinfo(id, slot=nil)
206
+ current_itemconfiginfo(['line', tagid(id)], slot)
207
+ end
208
+
209
+ def gridline_cget(option)
210
+ itemcget('grid', option)
211
+ end
212
+ def gridline_cget_strict(option)
213
+ itemcget_strict('grid', option)
214
+ end
215
+ def gridline_configure(slot, value=None)
216
+ itemconfigure('grid', slot, value)
217
+ end
218
+ def gridline_configinfo(slot=nil)
219
+ itemconfiginfo('grid', slot)
220
+ end
221
+ def current_gridline_configinfo(slot=nil)
222
+ current_itemconfiginfo('grid', slot)
223
+ end
224
+
225
+ def legend_cget(option)
226
+ itemcget('legend', option)
227
+ end
228
+ def legend_cget_strict(option)
229
+ itemcget_strict('legend', option)
230
+ end
231
+ def legend_configure(slot, value=None)
232
+ itemconfigure('legend', slot, value)
233
+ end
234
+ def legend_configinfo(slot=nil)
235
+ itemconfiginfo('legend', slot)
236
+ end
237
+ def current_legend_configinfo(slot=nil)
238
+ current_itemconfiginfo('legend', slot)
239
+ end
240
+
241
+ def pen_cget(id, option)
242
+ itemcget(['pen', tagid(id)], option)
243
+ end
244
+ def pen_cget_strict(id, option)
245
+ itemcget_strict(['pen', tagid(id)], option)
246
+ end
247
+ def pen_configure(*args)
248
+ slot = args.pop
249
+ if slot.kind_of?(Hash)
250
+ value = None
251
+ else
252
+ value = slot
253
+ slot = args.pop
254
+ end
255
+ id_list = args.flatten.collect!{|id| tagid(id)}.unshift('pen')
256
+ itemconfigure(id_list, slot, value)
257
+ end
258
+ def pen_configinfo(id, slot=nil)
259
+ itemconfiginfo(['pen', tagid(id)], slot)
260
+ end
261
+ def current_pen_configinfo(id, slot=nil)
262
+ current_itemconfiginfo(['pen', tagid(id)], slot)
263
+ end
264
+
265
+ def postscript_cget(option)
266
+ itemcget('postscript', option)
267
+ end
268
+ def postscript_cget_strict(option)
269
+ itemcget_strict('postscript', option)
270
+ end
271
+ def postscript_configure(slot, value=None)
272
+ itemconfigure('postscript', slot, value)
273
+ end
274
+ def postscript_configinfo(slot=nil)
275
+ itemconfiginfo('postscript', slot)
276
+ end
277
+ def current_postscript_configinfo(slot=nil)
278
+ current_itemconfiginfo('postscript', slot)
279
+ end
280
+
281
+ def marker_cget(id, option)
282
+ itemcget(['marker', tagid(id)], option)
283
+ end
284
+ def marker_cget_strict(id, option)
285
+ itemcget_strict(['marker', tagid(id)], option)
286
+ end
287
+ def marker_configure(*args)
288
+ slot = args.pop
289
+ if slot.kind_of?(Hash)
290
+ value = None
291
+ else
292
+ value = slot
293
+ slot = args.pop
294
+ end
295
+ id_list = args.flatten.collect!{|id| tagid(id)}.unshift('marker')
296
+ itemconfigure(id_list, slot, value)
297
+ end
298
+ def marker_configinfo(id, slot=nil)
299
+ itemconfiginfo(['marker', tagid(id)], slot)
300
+ end
301
+ def current_marker_configinfo(id, slot=nil)
302
+ current_itemconfiginfo(['marker', tagid(id)], slot)
303
+ end
304
+
305
+ alias __itemcget itemcget
306
+ alias __itemcget_strict itemcget_strict
307
+ alias __itemconfiginfo itemconfiginfo
308
+ alias __current_itemconfiginfo current_itemconfiginfo
309
+ private :__itemcget, :__itemconfiginfo, :__current_itemconfiginfo
310
+
311
+ def itemcget_strict(tagOrId, option)
312
+ ret = __itemcget(tagid(tagOrId), option)
313
+ if option == 'bindtags' || option == :bindtags
314
+ ret.collect{|tag| TkBindTag.id2obj(tag)}
315
+ else
316
+ ret
317
+ end
318
+ end
319
+ def itemcget(tagOrId, option)
320
+ unless TkItemConfigMethod.__IGNORE_UNKNOWN_CONFIGURE_OPTION__
321
+ itemcget_strict(tagOrId, option)
322
+ else
323
+ begin
324
+ itemcget_strict(tagOrId, option)
325
+ rescue => e
326
+ begin
327
+ if current_itemconfiginfo(tagOrId).has_key?(option.to_s)
328
+ # error on known option
329
+ fail e
330
+ else
331
+ # unknown option
332
+ nil
333
+ end
334
+ rescue
335
+ fail e # tag error
336
+ end
337
+ end
338
+ end
339
+ end
340
+ def itemconfiginfo(tagOrId, slot = nil)
341
+ ret = __itemconfiginfo(tagid(tagOrId), slot)
342
+
343
+ if TkComm::GET_CONFIGINFO_AS_ARRAY
344
+ if slot
345
+ if slot == 'bindtags' || slot == :bindtags
346
+ ret[-2] = ret[-2].collect{|tag| TkBindTag.id2obj(tag)}
347
+ ret[-1] = ret[-1].collect{|tag| TkBindTag.id2obj(tag)}
348
+ end
349
+ else
350
+ if (inf = ret.assoc('bindtags'))
351
+ inf[-2] = inf[-2].collect{|tag| TkBindTag.id2obj(tag)}
352
+ inf[-1] = inf[-1].collect{|tag| TkBindTag.id2obj(tag)}
353
+ end
354
+ end
355
+
356
+ else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
357
+ if (inf = ret['bindtags'])
358
+ inf[-2] = inf[-2].collect{|tag| TkBindTag.id2obj(tag)}
359
+ inf[-1] = inf[-1].collect{|tag| TkBindTag.id2obj(tag)}
360
+ ret['bindtags'] = inf
361
+ end
362
+ end
363
+
364
+ ret
365
+ end
366
+ def current_itemconfiginfo(tagOrId, slot = nil)
367
+ ret = __current_itemconfiginfo(tagid(tagOrId), slot)
368
+
369
+ if (val = ret['bindtags'])
370
+ ret['bindtags'] = val.collect{|tag| TkBindTag.id2obj(tag)}
371
+ end
372
+
373
+ ret
374
+ end
375
+
376
+ private :itemcget, :itemcget_strict
377
+ private :itemconfigure, :itemconfiginfo, :current_itemconfiginfo
378
+
379
+ #################
380
+
381
+ class Axis < TkObject
382
+ (OBJ_ID = ['blt_chart_axis'.freeze, '00000'.taint]).instance_eval{
383
+ @mutex = Mutex.new
384
+ def mutex; @mutex; end
385
+ freeze
386
+ }
387
+
388
+ AxisID_TBL = TkCore::INTERP.create_table
389
+
390
+ TkCore::INTERP.init_ip_env{
391
+ AxisID_TBL.mutex.synchronize{ AxisID_TBL.clear }
392
+ }
393
+
394
+ def self.id2obj(chart, id)
395
+ cpath = chart.path
396
+ AxisID_TBL.mutex.synchronize{
397
+ return id unless AxisID_TBL[cpath]
398
+ AxisID_TBL[cpath][id]? AxisID_TBL[cpath][id]: id
399
+ }
400
+ end
401
+
402
+ def self.new(chart, axis=nil, keys={})
403
+ if axis.kind_of?(Hash)
404
+ keys = axis
405
+ axis = nil
406
+ end
407
+ if keys
408
+ keys = _symbolkey2str(keys)
409
+ not_create = keys.delete('without_creating')
410
+ else
411
+ not_create = false
412
+ end
413
+
414
+ obj = nil
415
+ AxisID_TBL.mutex.synchronize{
416
+ chart_path = chart.path
417
+ AxisID_TBL[chart_path] ||= {}
418
+ if axis && AxisID_TBL[chart_path][axis]
419
+ obj = AxisID_TBL[chart_path][axis]
420
+ else
421
+ (obj = self.allocate).instance_eval{
422
+ if axis
423
+ @axis = @id = axis.to_s
424
+ else
425
+ OBJ_ID.mutex.synchronize{
426
+ @axis = @id = OBJ_ID.join(TkCore::INTERP._ip_id_).freeze
427
+ OBJ_ID[1].succ!
428
+ }
429
+ end
430
+ @path = @id
431
+ @parent = @chart = chart
432
+ @cpath = @chart.path
433
+ Axis::AxisID_TBL[@cpath][@axis] = self
434
+ unless not_create
435
+ tk_call(@chart, 'axis', 'create', @axis, keys)
436
+ return obj
437
+ end
438
+ }
439
+ end
440
+ }
441
+
442
+ obj.configure(keys) if obj && ! keys.empty?
443
+ obj
444
+ end
445
+
446
+ def initialize(chart, axis=nil, keys={})
447
+ # dummy:: not called by 'new' method
448
+
449
+ if axis.kind_of?(Hash)
450
+ keys = axis
451
+ axis = nil
452
+ end
453
+ if axis
454
+ @axis = @id = axis.to_s
455
+ else
456
+ OBJ_ID.mutex.synchronize{
457
+ @axis = @id = OBJ_ID.join(TkCore::INTERP._ip_id_).freeze
458
+ OBJ_ID[1].succ!
459
+ }
460
+ end
461
+ @path = @id
462
+ @parent = @chart = chart
463
+ @cpath = @chart.path
464
+ # Axis::AxisID_TBL[@cpath][@axis] = self
465
+ keys = _symbolkey2str(keys)
466
+ unless keys.delete('without_creating')
467
+ # @chart.axis_create(@axis, keys)
468
+ tk_call(@chart, 'axis', 'create', @axis, keys)
469
+ end
470
+ end
471
+
472
+ def id
473
+ @id
474
+ end
475
+
476
+ def to_eval
477
+ @id
478
+ end
479
+
480
+ def cget(option)
481
+ @chart.axis_cget(@id, option)
482
+ end
483
+ def cget_strict(option)
484
+ @chart.axis_cget_strict(@id, option)
485
+ end
486
+ def configure(key, value=None)
487
+ @chart.axis_configure(@id, key, value)
488
+ self
489
+ end
490
+ def configinfo(key=nil)
491
+ @chart.axis_configinfo(@id, key)
492
+ end
493
+ def current_configinfo(key=nil)
494
+ @chart.current_axis_configinfo(@id, key)
495
+ end
496
+
497
+ def command(cmd=nil, &b)
498
+ if cmd
499
+ configure('command', cmd)
500
+ elsif b
501
+ configure('command', Proc.new(&b))
502
+ else
503
+ cget('command')
504
+ end
505
+ end
506
+
507
+ def delete
508
+ @chart.axis_delete(@id)
509
+ self
510
+ end
511
+
512
+ def invtransform(val)
513
+ @chart.axis_invtransform(@id, val)
514
+ end
515
+
516
+ def limits
517
+ @chart.axis_limits(@id)
518
+ end
519
+
520
+ def name
521
+ @axis
522
+ end
523
+
524
+ def transform(val)
525
+ @chart.axis_transform(@id, val)
526
+ end
527
+
528
+ def view
529
+ @chart.axis_view(@id)
530
+ self
531
+ end
532
+
533
+ def use(name=None) # if @id == xaxis | x2axis | yaxis | y2axis
534
+ @chart.axis_use(@id, name)
535
+ end
536
+
537
+ def use_as(axis) # axis := xaxis | x2axis | yaxis | y2axis
538
+ @chart.axis_use(axis, @id)
539
+ end
540
+ end
541
+
542
+ #################
543
+
544
+ class Crosshairs < TkObject
545
+ CrosshairsID_TBL = TkCore::INTERP.create_table
546
+
547
+ TkCore::INTERP.init_ip_env{
548
+ CrosshairsID_TBL.mutex.synchronize{ CrosshairsID_TBL.clear }
549
+ }
550
+
551
+ def self.new(chart, keys={})
552
+ obj = nil
553
+ CrosshairsID_TBL.mutex.synchronize{
554
+ unless (obj = CrosshairsID_TBL[chart.path])
555
+ (obj = self.allocate).instance_eval{
556
+ @parent = @chart = chart
557
+ @cpath = @chart.path
558
+ @path = @id = 'crosshairs'
559
+ Crosshairs::CrosshairsID_TBL[@cpath] = self
560
+ }
561
+ end
562
+ }
563
+ chart.crosshair_configure(keys) if obj && ! keys.empty?
564
+ obj
565
+ end
566
+
567
+ def initialize(chart, keys={})
568
+ # dummy:: not called by 'new' method
569
+
570
+ @parent = @chart = chart
571
+ @cpath = @chart.path
572
+ # Crosshairs::CrosshairsID_TBL[@cpath] = self
573
+ @chart.crosshair_configure(keys) unless keys.empty?
574
+ @path = @id = 'crosshairs'
575
+ end
576
+
577
+ def id
578
+ @id
579
+ end
580
+
581
+ def to_eval
582
+ @id
583
+ end
584
+
585
+ def cget(option)
586
+ @chart.crosshair_cget(option)
587
+ end
588
+ def cget_strict(option)
589
+ @chart.crosshair_cget_strict(option)
590
+ end
591
+ def configure(key, value=None)
592
+ @chart.crosshair_configure(key, value)
593
+ self
594
+ end
595
+ def configinfo(key=nil)
596
+ @chart.crosshair_configinfo(key)
597
+ end
598
+ def current_configinfo(key=nil)
599
+ @chart.current_crosshair_configinfo(key)
600
+ end
601
+
602
+ def off
603
+ @chart.crosshair_off
604
+ self
605
+ end
606
+ def on
607
+ @chart.crosshair_on
608
+ self
609
+ end
610
+ def toggle
611
+ @chart.crosshair_toggle
612
+ self
613
+ end
614
+ end
615
+
616
+ #################
617
+
618
+ class Element < TkObject
619
+ extend Tk
620
+ extend TkItemFontOptkeys
621
+ extend TkItemConfigOptkeys
622
+
623
+ extend Tk::BLT::PlotComponent::OptKeys
624
+
625
+ ElementTypeName = 'element'
626
+ ElementTypeToClass = { ElementTypeName=>self }
627
+
628
+ ElementID_TBL = TkCore::INTERP.create_table
629
+
630
+ TkCore::INTERP.init_ip_env{
631
+ ElementID_TBL.mutex.synchronize{ ElementID_TBL.clear }
632
+ }
633
+
634
+ (OBJ_ID = ['blt_chart_element'.freeze, '00000'.taint]).instance_eval{
635
+ @mutex = Mutex.new
636
+ def mutex; @mutex; end
637
+ freeze
638
+ }
639
+
640
+ def Element.type2class(type)
641
+ ElementTypeToClass[type]
642
+ end
643
+
644
+ def Element.id2obj(chart, id)
645
+ cpath = chart.path
646
+ ElementID_TBL.mutex.synchronize{
647
+ return id unless ElementID_TBL[cpath]
648
+ ElementID_TBL[cpath][id]? ElementID_TBL[cpath][id]: id
649
+ }
650
+ end
651
+
652
+ def self.new(chart, element=nil, keys={})
653
+ if element.kind_of?(Hash)
654
+ keys = element
655
+ element = nil
656
+ end
657
+ if keys
658
+ keys = _symbolkey2str(keys)
659
+ not_create = keys.delete('without_creating')
660
+ else
661
+ not_create = false
662
+ end
663
+
664
+ obj = nil
665
+ ElementID_TBL.mutex.synchronize{
666
+ chart_path = chart.path
667
+ ElementID_TBL[chart_path] ||= {}
668
+ if element && ElementID_TBL[chart_path][element]
669
+ obj = ElementID_TBL[chart_path][element]
670
+ else
671
+ (obj = self.allocate).instance_eval{
672
+ if element
673
+ @element = @id = element.to_s
674
+ else
675
+ OBJ_ID.mutex.synchronize{
676
+ @element = @id = OBJ_ID.join(TkCore::INTERP._ip_id_).freeze
677
+ OBJ_ID[1].succ!
678
+ }
679
+ end
680
+ @path = @id
681
+ @parent = @chart = chart
682
+ @cpath = @chart.path
683
+ @typename = self.class::ElementTypeName
684
+ Element::ElementID_TBL[@cpath][@element] = self
685
+ unless not_create
686
+ tk_call(@chart, @typename, 'create', @element, keys)
687
+ return obj
688
+ end
689
+ }
690
+ end
691
+ }
692
+
693
+ obj.configure(keys) if obj && ! keys.empty?
694
+ obj
695
+ end
696
+
697
+ def initialize(chart, element=nil, keys={})
698
+ # dummy:: not called by 'new' method
699
+
700
+ if element.kind_of?(Hash)
701
+ keys = element
702
+ element = nil
703
+ end
704
+ if element
705
+ @element = @id = element.to_s
706
+ else
707
+ OBJ_ID.mutex.synchronize{
708
+ @element = @id = OBJ_ID.join(TkCore::INTERP._ip_id_).freeze
709
+ OBJ_ID[1].succ!
710
+ }
711
+ end
712
+ @path = @id
713
+ @parent = @chart = chart
714
+ @cpath = @chart.path
715
+ @typename = self.class::ElementTypeName
716
+ # Element::ElementID_TBL[@cpath][@element] = self
717
+ keys = _symbolkey2str(keys)
718
+ unless keys.delete('without_creating')
719
+ # @chart.element_create(@element, keys)
720
+ tk_call(@chart, @typename, 'create', @element, keys)
721
+ end
722
+ end
723
+
724
+ def id
725
+ @id
726
+ end
727
+
728
+ def to_eval
729
+ @id
730
+ end
731
+
732
+ def cget(option)
733
+ # @chart.element_cget(@id, option)
734
+ @chart.__send__(@typename + '_cget', @id, option)
735
+ end
736
+ def cget_strict(option)
737
+ @chart.__send__(@typename + '_cget_strict', @id, option)
738
+ end
739
+ def configure(key, value=None)
740
+ # @chart.element_configure(@id, key, value)
741
+ @chart.__send__(@typename + '_configure', @id, key, value)
742
+ self
743
+ end
744
+ def configinfo(key=nil)
745
+ # @chart.element_configinfo(@id, key)
746
+ @chart.__send__(@typename + '_configinfo', @id, key)
747
+ end
748
+ def current_configinfo(key=nil)
749
+ # @chart.current_element_configinfo(@id, key)
750
+ @chart.__send__('current_' << @typename << '_configinfo', @id, key)
751
+ end
752
+
753
+ def activate(*args)
754
+ @chart.element_activate(@id, *args)
755
+ end
756
+
757
+ def closest(x, y, var, keys={})
758
+ # @chart.element_closest(x, y, var, @id, keys)
759
+ @chart.__send__(@typename + '_closest', x, y, var, @id, keys)
760
+ end
761
+
762
+ def deactivate
763
+ @chart.element_deactivate(@id)
764
+ self
765
+ end
766
+
767
+ def delete
768
+ @chart.element_delete(@id)
769
+ self
770
+ end
771
+
772
+ def exist?
773
+ @chart.element_exist?(@id)
774
+ end
775
+
776
+ def name
777
+ @element
778
+ end
779
+
780
+ def type
781
+ @chart.element_type(@id)
782
+ end
783
+ end
784
+
785
+ class Bar < Element
786
+ ElementTypeName = 'bar'.freeze
787
+ ElementTypeToClass[ElementTypeName] = self
788
+ end
789
+ class Line < Element
790
+ ElementTypeName = 'line'.freeze
791
+ ElementTypeToClass[ElementTypeName] = self
792
+ end
793
+
794
+ #################
795
+
796
+ class GridLine < TkObject
797
+ GridLineID_TBL = TkCore::INTERP.create_table
798
+ TkCore::INTERP.init_ip_env{
799
+ GridLineID_TBL.mutex.synchronize{ GridLineID_TBL.clear }
800
+ }
801
+
802
+ def self.new(chart, keys={})
803
+ obj = nil
804
+ GridLineID_TBL.mutex.synchronize{
805
+ unless (obj = GridLineID_TBL[chart.path])
806
+ (obj = self.allocate).instance_eval{
807
+ @parent = @chart = chart
808
+ @cpath = @chart.path
809
+ @path = @id = 'grid'
810
+ GridLine::GridLineID_TBL[@cpath] = self
811
+ }
812
+ end
813
+ }
814
+ chart.gridline_configure(keys) if obj && ! keys.empty?
815
+ obj
816
+ end
817
+
818
+ def initialize(chart, keys={})
819
+ # dummy:: not called by 'new' method
820
+
821
+ @parent = @chart = chart
822
+ @cpath = @chart.path
823
+ # GridLine::GridLineID_TBL[@cpath] = self
824
+ @chart.gridline_configure(keys) unless keys.empty?
825
+ @path = @id = 'grid'
826
+ end
827
+
828
+ def id
829
+ @id
830
+ end
831
+
832
+ def to_eval
833
+ @id
834
+ end
835
+
836
+ def cget(option)
837
+ @chart.gridline_cget(option)
838
+ end
839
+ def cget_strict(option)
840
+ @chart.gridline_cget_strict(option)
841
+ end
842
+ def configure(key, value=None)
843
+ @chart.gridline_configure(key, value)
844
+ self
845
+ end
846
+ def configinfo(key=nil)
847
+ @chart.gridline_configinfo(key)
848
+ end
849
+ def current_configinfo(key=nil)
850
+ @chart.current_gridline_configinfo(key)
851
+ end
852
+
853
+ def off
854
+ @chart.gridline_off
855
+ self
856
+ end
857
+ def on
858
+ @chart.gridline_on
859
+ self
860
+ end
861
+ def toggle
862
+ @chart.gridline_toggle
863
+ self
864
+ end
865
+ end
866
+
867
+ #################
868
+
869
+ class Legend < TkObject
870
+ LegendID_TBL = TkCore::INTERP.create_table
871
+
872
+ TkCore::INTERP.init_ip_env{
873
+ LegendID_TBL.mutex.synchronize{ LegendID_TBL.clear }
874
+ }
875
+
876
+ def self.new(chart, keys={})
877
+ obj = nil
878
+ LegenedID_TBL.mutex.synchronize{
879
+ unless (obj = LegenedID_TBL[chart.path])
880
+ (obj = self.allocate).instance_eval{
881
+ @parent = @chart = chart
882
+ @cpath = @chart.path
883
+ @path = @id = 'crosshairs'
884
+ Legend::LegenedID_TBL[@cpath] = self
885
+ }
886
+ end
887
+ }
888
+ chart.legend_configure(keys) if obj && ! keys.empty?
889
+ obj
890
+ end
891
+
892
+ def initialize(chart, keys={})
893
+ # dummy:: not called by 'new' method
894
+
895
+ @parent = @chart = chart
896
+ @cpath = @chart.path
897
+ # Legend::LegendID_TBL[@cpath] = self
898
+ @chart.legend_configure(keys) unless keys.empty?
899
+ @path = @id = 'legend'
900
+ end
901
+
902
+ def id
903
+ @id
904
+ end
905
+
906
+ def to_eval
907
+ @id
908
+ end
909
+
910
+ def cget(option)
911
+ @chart.legend_cget(option)
912
+ end
913
+ def cget_strict(option)
914
+ @chart.legend_cget_strict(option)
915
+ end
916
+ def configure(key, value=None)
917
+ @chart.legend_configure(key, value)
918
+ self
919
+ end
920
+ def configinfo(key=nil)
921
+ @chart.legend_configinfo(key)
922
+ end
923
+ def current_configinfo(key=nil)
924
+ @chart.current_legend_configinfo(key)
925
+ end
926
+
927
+ def activate(*args)
928
+ @chart.legend_activate(*args)
929
+ end
930
+
931
+ def deactivate(*args)
932
+ @chart.legend_deactivate(*args)
933
+ end
934
+
935
+ def get(pos, y=nil)
936
+ @chart.legend_get(pos, y)
937
+ end
938
+ end
939
+
940
+ #################
941
+
942
+ class Pen < TkObject
943
+ (OBJ_ID = ['blt_chart_pen'.freeze, '00000'.taint]).instance_eval{
944
+ @mutex = Mutex.new
945
+ def mutex; @mutex; end
946
+ freeze
947
+ }
948
+
949
+ PenID_TBL = TkCore::INTERP.create_table
950
+
951
+ TkCore::INTERP.init_ip_env{
952
+ PenID_TBL.mutex.synchronize{ PenID_TBL.clear }
953
+ }
954
+
955
+ def self.id2obj(chart, id)
956
+ cpath = chart.path
957
+ PenID_TBL.mutex.synchronize{
958
+ return id unless PenID_TBL[cpath]
959
+ PenID_TBL[cpath][id]? PenID_TBL[cpath][id]: id
960
+ }
961
+ end
962
+
963
+ def self.new(chart, pen=nil, keys={})
964
+ if pen.kind_of?(Hash)
965
+ keys = pen
966
+ pen = nil
967
+ end
968
+ if keys
969
+ keys = _symbolkey2str(keys)
970
+ not_create = keys.delete('without_creating')
971
+ else
972
+ not_create = false
973
+ end
974
+
975
+ obj = nil
976
+ PenID_TBL.mutex.synchronize{
977
+ chart_path = chart.path
978
+ PenID_TBL[chart_path] ||= {}
979
+ if pen && PenID_TBL[chart_path][pen]
980
+ obj = PenID_TBL[chart_path][pen]
981
+ else
982
+ (obj = self.allocate).instance_eval{
983
+ if pen
984
+ @pen = @id = pen.to_s
985
+ else
986
+ OBJ_ID.mutex.synchronize{
987
+ @pen = @id = OBJ_ID.join(TkCore::INTERP._ip_id_).freeze
988
+ OBJ_ID[1].succ!
989
+ }
990
+ end
991
+ @path = @id
992
+ @parent = @chart = chart
993
+ @cpath = @chart.path
994
+ Pen::PenID_TBL[@cpath][@pen] = self
995
+ unless not_create
996
+ tk_call(@chart, 'pen', 'create', @pen, keys)
997
+ return obj
998
+ end
999
+ }
1000
+ end
1001
+ }
1002
+
1003
+ obj.configure(keys) if obj && ! keys.empty?
1004
+ obj
1005
+ end
1006
+
1007
+ def initialize(chart, pen=nil, keys={})
1008
+ if pen.kind_of?(Hash)
1009
+ keys = pen
1010
+ pen = nil
1011
+ end
1012
+ if pen
1013
+ @pen = @id = pen.to_s
1014
+ else
1015
+ OBJ_ID.mutex.synchronize{
1016
+ @pen = @id = OBJ_ID.join(TkCore::INTERP._ip_id_).freeze
1017
+ OBJ_ID[1].succ!
1018
+ }
1019
+ end
1020
+ @path = @id
1021
+ @parent = @chart = chart
1022
+ @cpath = @chart.path
1023
+ Pen::PenID_TBL[@cpath][@pen] = self
1024
+ keys = _symbolkey2str(keys)
1025
+ unless keys.delete('without_creating')
1026
+ # @chart.pen_create(@pen, keys)
1027
+ tk_call(@chart, 'pen', 'create', @pen, keys)
1028
+ end
1029
+ end
1030
+
1031
+ def id
1032
+ @id
1033
+ end
1034
+
1035
+ def to_eval
1036
+ @id
1037
+ end
1038
+
1039
+ def cget(option)
1040
+ @chart.pen_cget(@id, option)
1041
+ end
1042
+ def cget_strict(option)
1043
+ @chart.pen_cget_strict(@id, option)
1044
+ end
1045
+ def configure(key, value=None)
1046
+ @chart.pen_configure(@id, key, value)
1047
+ self
1048
+ end
1049
+ def configinfo(key=nil)
1050
+ @chart.pen_configinfo(@id, key)
1051
+ end
1052
+ def current_configinfo(key=nil)
1053
+ @chart.current_pen_configinfo(@id, key)
1054
+ end
1055
+
1056
+ def delete
1057
+ @chart.pen_delete(@id)
1058
+ self
1059
+ end
1060
+
1061
+ def name
1062
+ @pen
1063
+ end
1064
+ end
1065
+
1066
+ #################
1067
+
1068
+ class Postscript < TkObject
1069
+ PostscriptID_TBL = TkCore::INTERP.create_table
1070
+
1071
+ TkCore::INTERP.init_ip_env{
1072
+ PostscriptID_TBL.mutex.synchronize{ PostscriptID_TBL.clear }
1073
+ }
1074
+
1075
+ def self.new(chart, keys={})
1076
+ obj = nil
1077
+ PostscriptID_TBL.mutex.synchronize{
1078
+ unless (obj = PostscriptID_TBL[chart.path])
1079
+ (obj = self.allocate).instance_eval{
1080
+ @parent = @chart = chart
1081
+ @cpath = @chart.path
1082
+ @path = @id = 'postscript'
1083
+ Postscript::PostscriptID_TBL[@cpath] = self
1084
+ }
1085
+ end
1086
+ }
1087
+ chart.postscript_configure(keys) if obj && ! keys.empty?
1088
+ obj
1089
+ end
1090
+
1091
+ def initialize(chart, keys={})
1092
+ # dummy:: not called by 'new' method
1093
+
1094
+ @parent = @chart = chart
1095
+ @cpath = @chart.path
1096
+ # Postscript::PostscriptID_TBL[@cpath] = self
1097
+ @chart.postscript_configure(keys) unless keys.empty?
1098
+ @path = @id = 'postscript'
1099
+ end
1100
+
1101
+ def id
1102
+ @id
1103
+ end
1104
+
1105
+ def to_eval
1106
+ @id
1107
+ end
1108
+
1109
+ def cget(option)
1110
+ @chart.postscript_cget(option)
1111
+ end
1112
+ def cget_strict(option)
1113
+ @chart.postscript_cget_strict(option)
1114
+ end
1115
+ def configure(key, value=None)
1116
+ @chart.postscript_configure(key, value)
1117
+ self
1118
+ end
1119
+ def configinfo(key=nil)
1120
+ @chart.postscript_configinfo(key)
1121
+ end
1122
+ def current_configinfo(key=nil)
1123
+ @chart.current_postscript_configinfo(key)
1124
+ end
1125
+
1126
+ def output(file=nil, keys={})
1127
+ if file.kind_of?(Hash)
1128
+ keys = file
1129
+ file = nil
1130
+ end
1131
+
1132
+ ret = @chart.postscript_output(file, keys)
1133
+
1134
+ if file
1135
+ self
1136
+ else
1137
+ ret
1138
+ end
1139
+ end
1140
+ end
1141
+
1142
+ #################
1143
+ class Marker < TkObject
1144
+ extend Tk
1145
+ extend TkItemFontOptkeys
1146
+ extend TkItemConfigOptkeys
1147
+
1148
+ extend Tk::BLT::PlotComponent::OptKeys
1149
+
1150
+ MarkerTypeName = nil
1151
+ MarkerTypeToClass = {}
1152
+ MarkerID_TBL = TkCore::INTERP.create_table
1153
+
1154
+ TkCore::INTERP.init_ip_env{
1155
+ MarkerID_TBL.mutex.synchronize{ MarkerID_TBL.clear }
1156
+ }
1157
+
1158
+ def Marker.type2class(type)
1159
+ MarkerTypeToClass[type]
1160
+ end
1161
+
1162
+ def Marker.id2obj(chart, id)
1163
+ cpath = chart.path
1164
+ MarkerID_TBL.mutex.synchronize{
1165
+ if MarkerID_TBL[cpath]
1166
+ MarkerID_TBL[cpath][id]? MarkerID_TBL[cpath][id]: id
1167
+ else
1168
+ id
1169
+ end
1170
+ }
1171
+ end
1172
+
1173
+ def self._parse_create_args(keys)
1174
+ fontkeys = {}
1175
+ methodkeys = {}
1176
+ if keys.kind_of? Hash
1177
+ keys = _symbolkey2str(keys)
1178
+
1179
+ __item_font_optkeys(nil).each{|key|
1180
+ fkey = key.to_s
1181
+ fontkeys[fkey] = keys.delete(fkey) if keys.key?(fkey)
1182
+
1183
+ fkey = "kanji#{key}"
1184
+ fontkeys[fkey] = keys.delete(fkey) if keys.key?(fkey)
1185
+
1186
+ fkey = "latin#{key}"
1187
+ fontkeys[fkey] = keys.delete(fkey) if keys.key?(fkey)
1188
+
1189
+ fkey = "ascii#{key}"
1190
+ fontkeys[fkey] = keys.delete(fkey) if keys.key?(fkey)
1191
+ }
1192
+
1193
+ __item_optkey_aliases(nil).each{|alias_name, real_name|
1194
+ alias_name = alias_name.to_s
1195
+ if keys.has_key?(alias_name)
1196
+ keys[real_name.to_s] = keys.delete(alias_name)
1197
+ end
1198
+ }
1199
+
1200
+ __item_methodcall_optkeys(nil).each{|key|
1201
+ key = key.to_s
1202
+ methodkeys[key] = keys.delete(key) if keys.key?(key)
1203
+ }
1204
+
1205
+ __item_ruby2val_optkeys(nil).each{|key, method|
1206
+ key = key.to_s
1207
+ keys[key] = method.call(keys[key]) if keys.has_key?(key)
1208
+ }
1209
+
1210
+ args = itemconfig_hash_kv(nil, keys)
1211
+ else
1212
+ args = []
1213
+ end
1214
+
1215
+ [args, fontkeys]
1216
+ end
1217
+ private_class_method :_parse_create_args
1218
+
1219
+ def self.create(chart, keys={})
1220
+ unless self::MarkerTypeName
1221
+ fail RuntimeError, "#{self} is an abstract class"
1222
+ end
1223
+ args, fontkeys = _parse_create_args(keys)
1224
+ idnum = tk_call_without_enc(chart.path, 'marker', 'create',
1225
+ self::MarkerTypeName, *args)
1226
+ chart.marker_configure(idnum, fontkeys) unless fontkeys.empty?
1227
+ idnum.to_i # 'item id' is an integer number
1228
+ end
1229
+
1230
+ def self.create_type(chart, type, keys={})
1231
+ args, fontkeys = _parse_create_args(keys)
1232
+ idnum = tk_call_without_enc(chart.path, 'marker', 'create',
1233
+ type, *args)
1234
+ chart.marker_configure(idnum, fontkeys) unless fontkeys.empty?
1235
+ id = idnum.to_i # 'item id' is an integer number
1236
+ obj = self.allocate
1237
+ obj.instance_eval{
1238
+ @parent = @chart = chart
1239
+ @cpath = chart.path
1240
+ @id = id
1241
+ Tk::BLT::PlotComponent::Marker::MarkerID_TBL.mutex.synchronize{
1242
+ Tk::BLT::PlotComponent::Marker::MarkerID_TBL[@cpath] ||= {}
1243
+ Tk::BLT::PlotComponent::Marker::MarkerID_TBL[@cpath][@id] = self
1244
+ }
1245
+ }
1246
+ obj
1247
+ end
1248
+
1249
+ def initialize(parent, *args)
1250
+ @parent = @chart = parent
1251
+ @cpath = parent.path
1252
+
1253
+ @path = @id = create_self(*args) # an integer number as 'item id'
1254
+ Tk::BLT::PlotComponent::Marker::MarkerID_TBL.mutex.synchronize{
1255
+ Tk::BLT::PlotComponent::Marker::MarkerID_TBL[@cpath] ||= {}
1256
+ Tk::BLT::PlotComponent::Marker::MarkerID_TBL[@cpath][@id] = self
1257
+ }
1258
+ end
1259
+ def create_self(*args)
1260
+ self.class.create(@chart, *args) # return an integer as 'item id'
1261
+ end
1262
+ private :create_self
1263
+
1264
+ def id
1265
+ @id
1266
+ end
1267
+
1268
+ def to_eval
1269
+ @id
1270
+ end
1271
+
1272
+ def cget(option)
1273
+ @chart.marker_cget(@id, option)
1274
+ end
1275
+ def cget_strict(option)
1276
+ @chart.marker_cget_strict(@id, option)
1277
+ end
1278
+ def configure(key, value=None)
1279
+ @chart.marker_configure(@id, key, value)
1280
+ self
1281
+ end
1282
+ def configinfo(key=nil)
1283
+ @chart.marker_configinfo(@id, key)
1284
+ end
1285
+ def current_configinfo(key=nil)
1286
+ @chart.current_marker_configinfo(@id, key)
1287
+ end
1288
+
1289
+ def after(target=None)
1290
+ @chart.marker_after(@id, target)
1291
+ end
1292
+
1293
+ def before(target=None)
1294
+ @chart.marker_before(@id, target)
1295
+ end
1296
+
1297
+ def delete
1298
+ @chart.marker_delete(@id)
1299
+ end
1300
+
1301
+ def exist?
1302
+ @chart.marker_exist(@id)
1303
+ end
1304
+
1305
+ def type
1306
+ @chart.marker_type(@id)
1307
+ end
1308
+ end
1309
+
1310
+ class TextMarker < Marker
1311
+ MarkerTypeName = 'text'.freeze
1312
+ MarkerTypeToClass[MarkerTypeName] = self
1313
+ end
1314
+ class LineMarker < Marker
1315
+ MarkerTypeName = 'line'.freeze
1316
+ MarkerTypeToClass[MarkerTypeName] = self
1317
+ end
1318
+ class BitmapMarker < Marker
1319
+ MarkerTypeName = 'bitmap'.freeze
1320
+ MarkerTypeToClass[MarkerTypeName] = self
1321
+ end
1322
+ class ImageMarker < Marker
1323
+ MarkerTypeName = 'image'.freeze
1324
+ MarkerTypeToClass[MarkerTypeName] = self
1325
+ end
1326
+ class PolygonMarker < Marker
1327
+ MarkerTypeName = 'polygon'.freeze
1328
+ MarkerTypeToClass[MarkerTypeName] = self
1329
+ end
1330
+ class WindowMarker < Marker
1331
+ MarkerTypeName = 'window'.freeze
1332
+ MarkerTypeToClass[MarkerTypeName] = self
1333
+ end
1334
+
1335
+ #################
1336
+
1337
+ def __destroy_hook__
1338
+ Axis::AxisID_TBL.delete(@path)
1339
+ Crosshairs::CrosshairsID_TBL.delete(@path)
1340
+ Element::ElementID_TBL.delete(@path)
1341
+ GridLine::GridLineID_TBL.delete(@path)
1342
+ Legend::LegendID_TBL.delete(@path)
1343
+ Pen::PenID_TBL.delete(@path)
1344
+ Postscript::PostscriptID_TBL.delete(@path)
1345
+ Marker::MarkerID_TBL.delete(@path)
1346
+ super()
1347
+ end
1348
+
1349
+ #################
1350
+
1351
+ def tagid(tag)
1352
+ if tag.kind_of?(Axis) ||
1353
+ tag.kind_of?(Crosshairs) ||
1354
+ tag.kind_of?(Element) ||
1355
+ tag.kind_of?(GridLine) ||
1356
+ tag.kind_of?(Legend) ||
1357
+ tag.kind_of?(Pen) ||
1358
+ tag.kind_of?(Postscript) ||
1359
+ tag.kind_of?(Marker)
1360
+ tag.id
1361
+ else
1362
+ tag # maybe an Array of configure paramters
1363
+ end
1364
+ end
1365
+
1366
+ def _component_bind(target, tag, context, *args)
1367
+ if TkComm._callback_entry?(args[0]) || !block_given?
1368
+ cmd = args.shift
1369
+ else
1370
+ cmd = Proc.new
1371
+ end
1372
+ _bind([path, target, 'bind', tagid(tag)], context, cmd, *args)
1373
+ self
1374
+ end
1375
+ def _component_bind_append(target, tag, context, *args)
1376
+ if TkComm._callback_entry?(args[0]) || !block_given?
1377
+ cmd = args.shift
1378
+ else
1379
+ cmd = Proc.new
1380
+ end
1381
+ _bind_append([path, target, 'bind', tagid(tag)], context, cmd, *args)
1382
+ self
1383
+ end
1384
+ def _component_bind_remove(target, tag, context)
1385
+ _bind_remove([path, target, 'bind', tagid(tag)], context)
1386
+ self
1387
+ end
1388
+ def _component_bindinfo(target, tag, context=nil)
1389
+ _bindinfo([path, target, 'bind', tagid(tag)], context)
1390
+ end
1391
+ private :_component_bind, :_component_bind_append
1392
+ private :_component_bind_remove, :_component_bindinfo
1393
+
1394
+ def axis_bind(tag, context, *args)
1395
+ _component_bind('axis', tag, context, *args)
1396
+ end
1397
+ def axis_bind_append(tag, context, *args)
1398
+ _component_bind_append('axis', tag, context, *args)
1399
+ end
1400
+ def axis_bind_remove(tag, context)
1401
+ _component_bind_remove('axis', tag, context)
1402
+ end
1403
+ def axis_bindinfo(tag, context=nil)
1404
+ _component_bindinfo('axis', tag, context)
1405
+ end
1406
+
1407
+ def element_bind(tag, context, *args)
1408
+ _component_bind('element', tag, context, *args)
1409
+ end
1410
+ def element_bind_append(tag, context, *args)
1411
+ _component_bind_append('element', tag, context, *args)
1412
+ end
1413
+ def element_bind_remove(tag, context)
1414
+ _component_bind_remove('element', tag, context)
1415
+ end
1416
+ def element_bindinfo(tag, context=nil)
1417
+ _component_bindinfo('element', tag, context)
1418
+ end
1419
+
1420
+ def bar_bind(tag, context, *args)
1421
+ _component_bind('bar', tag, context, *args)
1422
+ end
1423
+ def bar_bind_append(tag, context, *args)
1424
+ _component_bind_append('bar', tag, context, *args)
1425
+ end
1426
+ def bar_bind_remove(tag, context)
1427
+ _component_bind_remove('bar', tag, context)
1428
+ end
1429
+ def bar_bindinfo(tag, context=nil)
1430
+ _component_bindinfo('bar', tag, context)
1431
+ end
1432
+
1433
+ def line_bind(tag, context, *args)
1434
+ _component_bind('line', tag, context, *args)
1435
+ end
1436
+ def line_bind_append(tag, context, *args)
1437
+ _component_bind_append('line', tag, context, *args)
1438
+ end
1439
+ def line_bind_remove(tag, context)
1440
+ _component_bind_remove('line', tag, context)
1441
+ end
1442
+ def line_bindinfo(tag, context=nil)
1443
+ _component_bindinfo('line', tag, context)
1444
+ end
1445
+
1446
+ def legend_bind(tag, context, *args)
1447
+ _component_bind('legend', tag, context, *args)
1448
+ end
1449
+ def legend_bind_append(tag, context, *args)
1450
+ _component_bind_append('legend', tag, context, *args)
1451
+ end
1452
+ def legend_bind_remove(tag, context)
1453
+ _component_bind_remove('legend', tag, context)
1454
+ end
1455
+ def legend_bindinfo(tag, context=nil)
1456
+ _component_bindinfo('legend', tag, context)
1457
+ end
1458
+
1459
+ def marker_bind(tag, context, *args)
1460
+ _component_bind('marker', tag, context, *args)
1461
+ end
1462
+ def marker_bind_append(tag, context, *args)
1463
+ _component_bind_append('marker', tag, context, *args)
1464
+ end
1465
+ def marker_bind_remove(tag, context)
1466
+ _component_bind_remove('marker', tag, context)
1467
+ end
1468
+ def marker_bindinfo(tag, context=nil)
1469
+ _component_bindinfo('marker', tag, context)
1470
+ end
1471
+
1472
+ ###################
1473
+
1474
+ def axis_create(id=nil, keys={})
1475
+ # tk_send('axis', 'create', tagid(id), keys)
1476
+ Tk::BLT::PlotComponent::Axis.new(self, tagid(id), keys)
1477
+ end
1478
+ def axis_delete(*ids)
1479
+ tk_send('axis', 'delete', *(ids.collect{|id| tagid(id)}))
1480
+ self
1481
+ end
1482
+ def axis_invtransform(id, val)
1483
+ list(tk_send('axis', 'invtransform', tagid(id), val))
1484
+ end
1485
+ def axis_limits(id)
1486
+ list(tk_send('axis', 'limits', tagid(id)))
1487
+ end
1488
+ def axis_names(*pats)
1489
+ simplelist(tk_send('axis', 'names',
1490
+ *(pats.collect{|pat| tagid(pat)}))).collect{|axis|
1491
+ Tk::BLT::PlotComponent::Axis.id2obj(self, axis)
1492
+ }
1493
+ end
1494
+ def axis_transform(id, val)
1495
+ list(tk_send('axis', 'transform', tagid(id), val))
1496
+ end
1497
+ def axis_view(id)
1498
+ tk_send('axis', 'view', tagid(id))
1499
+ self
1500
+ end
1501
+ def axis_use(id, target=nil)
1502
+ if target
1503
+ Tk::BLT::PlotComponent::Axis.id2obj(self,
1504
+ tk_send('axis', 'use',
1505
+ tagid(id), tagid(target)))
1506
+ else
1507
+ Tk::BLT::PlotComponent::Axis.id2obj(self,
1508
+ tk_send('axis', 'use', tagid(id)))
1509
+ end
1510
+ end
1511
+
1512
+ ###################
1513
+
1514
+ def crosshairs_off
1515
+ tk_send_without_enc('crosshairs', 'off')
1516
+ self
1517
+ end
1518
+ def crosshairs_on
1519
+ tk_send_without_enc('crosshairs', 'on')
1520
+ self
1521
+ end
1522
+ def crosshairs_toggle
1523
+ tk_send_without_enc('crosshairs', 'toggle')
1524
+ self
1525
+ end
1526
+
1527
+ ###################
1528
+
1529
+ def element_create(id=nil, keys={})
1530
+ # tk_send('element', 'create', tagid(id), keys)
1531
+ Tk::BLT::PlotComponent::Element.new(self, tagid(id), keys)
1532
+ end
1533
+ def element_activate(*args)
1534
+ if args.empty?
1535
+ list(tk_send('element', 'activate')).collect{|elem|
1536
+ Tk::BLT::PlotComponent::Element.id2obj(self, elem)
1537
+ }
1538
+ else
1539
+ # id, *indices
1540
+ id = args.shift
1541
+ tk_send('element', 'activate', tagid(id), *args)
1542
+ end
1543
+ end
1544
+ def element_closest(x, y, var, *args)
1545
+ if args[-1].kind_of?(Hash)
1546
+ keys = args.pop
1547
+ bool(tk_send('element', 'closest', x, y, var,
1548
+ *(hash_kv(keys).concat(args.collect{|id| tagid(id)}))))
1549
+ else
1550
+ bool(tk_send('element', 'closest', x, y, var,
1551
+ *(args.collect{|id| tagid(id)})))
1552
+ end
1553
+ end
1554
+ def element_deactivate(*ids)
1555
+ tk_send('element', 'deactivate', *(ids.collect{|id| tagid(id)}))
1556
+ self
1557
+ end
1558
+ def element_delete(*ids)
1559
+ tk_send('element', 'delete', *(ids.collect{|id| tagid(id)}))
1560
+ self
1561
+ end
1562
+ def element_exist?(id)
1563
+ bool(tk_send('element', 'exists', tagid(id)))
1564
+ end
1565
+ def element_names(*pats)
1566
+ simplelist(tk_send('element', 'names',
1567
+ *(pats.collect{|pat| tagid(pat)}))).collect{|elem|
1568
+ Tk::BLT::PlotComponent::Element.id2obj(self, elem)
1569
+ }
1570
+ end
1571
+ def element_show(*names)
1572
+ if names.empty?
1573
+ simplelist(tk_send('element', 'show'))
1574
+ else
1575
+ tk_send('element', 'show', *(names.collect{|n| tagid(n)}))
1576
+ self
1577
+ end
1578
+ end
1579
+ def element_type(id)
1580
+ tk_send('element', 'type', tagid(id))
1581
+ end
1582
+
1583
+ ###################
1584
+
1585
+ def bar_create(id=nil, keys={})
1586
+ # tk_send('bar', 'create', tagid(id), keys)
1587
+ Tk::BLT::PlotComponent::Bar.new(self, tagid(id), keys)
1588
+ end
1589
+ alias bar bar_create
1590
+ def bar_activate(*args)
1591
+ if args.empty?
1592
+ list(tk_send('bar', 'activate')).collect{|elem|
1593
+ Tk::BLT::PlotComponent::Element.id2obj(self, elem)
1594
+ }
1595
+ else
1596
+ # id, *indices
1597
+ id = args.shift
1598
+ tk_send('bar', 'activate', tagid(id), *args)
1599
+ end
1600
+ end
1601
+ def bar_closest(x, y, var, *args)
1602
+ if args[-1].kind_of?(Hash)
1603
+ keys = args.pop
1604
+ bool(tk_send('bar', 'closest', x, y, var,
1605
+ *(hash_kv(keys).concat(args.collect{|id| tagid(id)}))))
1606
+ else
1607
+ bool(tk_send('bar', 'closest', x, y, var,
1608
+ *(args.collect{|id| tagid(id)})))
1609
+ end
1610
+ end
1611
+ def bar_deactivate(*ids)
1612
+ tk_send('bar', 'deactivate', *(ids.collect{|id| tagid(id)}))
1613
+ self
1614
+ end
1615
+ def bar_delete(*ids)
1616
+ tk_send('bar', 'delete', *(ids.collect{|id| tagid(id)}))
1617
+ self
1618
+ end
1619
+ def bar_exist?(id)
1620
+ bool(tk_send('bar', 'exists', tagid(id)))
1621
+ end
1622
+ def bar_names(*pats)
1623
+ simplelist(tk_send('bar', 'names',
1624
+ *(pats.collect{|pat| tagid(pat)}))).collect{|elem|
1625
+ Tk::BLT::PlotComponent::Element.id2obj(self, elem)
1626
+ }
1627
+ end
1628
+ def bar_show(*names)
1629
+ if names.empty?
1630
+ simplelist(tk_send('bar', 'show'))
1631
+ else
1632
+ tk_send('bar', 'show', *(names.collect{|n| tagid(n)}))
1633
+ self
1634
+ end
1635
+ end
1636
+ def bar_type(id)
1637
+ tk_send('bar', 'type', tagid(id))
1638
+ end
1639
+
1640
+ ###################
1641
+
1642
+ def line_create(id=nil, keys={})
1643
+ # tk_send('line', 'create', tagid(id), keys)
1644
+ Tk::BLT::PlotComponent::Line.new(self, tagid(id), keys)
1645
+ end
1646
+ alias bar line_create
1647
+ def line_activate(*args)
1648
+ if args.empty?
1649
+ list(tk_send('line', 'activate')).collect{|elem|
1650
+ Tk::BLT::PlotComponent::Element.id2obj(self, elem)
1651
+ }
1652
+ else
1653
+ # id, *indices
1654
+ id = args.shift
1655
+ tk_send('line', 'activate', tagid(id), *args)
1656
+ end
1657
+ end
1658
+ def line_closest(x, y, var, *args)
1659
+ if args[-1].kind_of?(Hash)
1660
+ keys = args.pop
1661
+ bool(tk_send('line', 'closest', x, y, var,
1662
+ *(hash_kv(keys).concat(args.collect{|id| tagid(id)}))))
1663
+ else
1664
+ bool(tk_send('line', 'closest', x, y, var,
1665
+ *(args.collect{|id| tagid(id)})))
1666
+ end
1667
+ end
1668
+ def line_deactivate(*ids)
1669
+ tk_send('line', 'deactivate', *(ids.collect{|id| tagid(id)}))
1670
+ self
1671
+ end
1672
+ def line_delete(*ids)
1673
+ tk_send('line', 'delete', *(ids.collect{|id| tagid(id)}))
1674
+ self
1675
+ end
1676
+ def line_exist?(id)
1677
+ bool(tk_send('line', 'exists', tagid(id)))
1678
+ end
1679
+ def line_names(*pats)
1680
+ simplelist(tk_send('line', 'names',
1681
+ *(pats.collect{|pat| tagid(pat)}))).collect{|elem|
1682
+ Tk::BLT::PlotComponent::Element.id2obj(self, elem)
1683
+ }
1684
+ end
1685
+ def line_show(*names)
1686
+ if names.empty?
1687
+ simplelist(tk_send('line', 'show'))
1688
+ else
1689
+ tk_send('line', 'show', *(names.collect{|n| tagid(n)}))
1690
+ self
1691
+ end
1692
+ end
1693
+ def line_type(id)
1694
+ tk_send('line', 'type', tagid(id))
1695
+ end
1696
+
1697
+ ###################
1698
+
1699
+ def gridline_off
1700
+ tk_send_without_enc('grid', 'off')
1701
+ self
1702
+ end
1703
+ def gridline_on
1704
+ tk_send_without_enc('grid', 'on')
1705
+ self
1706
+ end
1707
+ def gridline_toggle
1708
+ tk_send_without_enc('grid', 'toggle')
1709
+ self
1710
+ end
1711
+
1712
+ ###################
1713
+
1714
+ def legend_window_create(parent=nil, keys=nil)
1715
+ if parent.kind_of?(Hash)
1716
+ keys = _symbolkey2str(parent)
1717
+ parent = keys.delete('parent')
1718
+ widgetname = keys.delete('widgetname')
1719
+ keys.delete('without_creating')
1720
+ elsif keys
1721
+ keys = _symbolkey2str(keys)
1722
+ widgetname = keys.delete('widgetname')
1723
+ keys.delete('without_creating')
1724
+ end
1725
+
1726
+ legend = self.class.new(parent, :without_creating=>true,
1727
+ :widgetname=>widgetname)
1728
+ class << legend
1729
+ def __destroy_hook__
1730
+ TkCore::INTERP.tk_windows.delete(@path)
1731
+ end
1732
+ end
1733
+
1734
+ if keys
1735
+ self.legend_configure(keys.update('position'=>legend))
1736
+ else
1737
+ self.legend_configure('position'=>legend)
1738
+ end
1739
+ legend
1740
+ end
1741
+
1742
+ def legend_activate(*pats)
1743
+ list(tk_send('legend', 'activate',
1744
+ *(pats.collect{|pat| tagid(pat)}))).collect{|elem|
1745
+ Tk::BLT::PlotComponent::Element.id2obj(self, elem)
1746
+ }
1747
+ end
1748
+ def legend_deactivate(*pats)
1749
+ list(tk_send('legend', 'deactivate',
1750
+ *(pats.collect{|pat| tagid(pat)}))).collect{|elem|
1751
+ Tk::BLT::PlotComponent::Element.id2obj(self, elem)
1752
+ }
1753
+ end
1754
+ def legend_get(pos, y=nil)
1755
+ if y
1756
+ Tk::BLT::PlotComponent::Element.id2obj(self,
1757
+ tk_send('legend', 'get',
1758
+ _at(pos, y)))
1759
+ else
1760
+ Tk::BLT::PlotComponent::Element.id2obj(self,
1761
+ tk_send('legend', 'get', pos))
1762
+ end
1763
+ end
1764
+
1765
+ ###################
1766
+
1767
+ def pen_create(id=nil, keys={})
1768
+ # tk_send('pen', 'create', tagid(id), keys)
1769
+ Tk::BLT::PlotComponent::Pen.new(self, tagid(id), keys)
1770
+ end
1771
+ def pen_delete(*ids)
1772
+ tk_send('pen', 'delete', *(ids.collect{|id| tagid(id)}))
1773
+ self
1774
+ end
1775
+ def pen_names(*pats)
1776
+ simplelist(tk_send('pen', 'names',
1777
+ *(pats.collect{|pat| tagid(pat)}))).collect{|pen|
1778
+ Tk::BLT::PlotComponent::Pen.id2obj(self, pen)
1779
+ }
1780
+ end
1781
+
1782
+ ###################
1783
+
1784
+ def postscript_output(file=nil, keys={})
1785
+ if file.kind_of?(Hash)
1786
+ keys = file
1787
+ file = nil
1788
+ end
1789
+
1790
+ if file
1791
+ tk_send('postscript', 'output', file, keys)
1792
+ self
1793
+ else
1794
+ tk_send('postscript', 'output', keys)
1795
+ end
1796
+ end
1797
+
1798
+ ###################
1799
+
1800
+ def marker_create(type, keys={})
1801
+ case type
1802
+ when :text, 'text'
1803
+ Tk::BLT::PlotComponent::TextMarker.new(self, keys)
1804
+ when :line, 'line'
1805
+ Tk::BLT::PlotComponent::LineMarker.new(self, keys)
1806
+ when :bitmap, 'bitmap'
1807
+ Tk::BLT::PlotComponent::BitmapMarker.new(self, keys)
1808
+ when :image, 'image'
1809
+ Tk::BLT::PlotComponent::ImageMarker.new(self, keys)
1810
+ when :polygon, 'polygon'
1811
+ Tk::BLT::PlotComponent::PolygonMarker.new(self, keys)
1812
+ when :window, 'window'
1813
+ Tk::BLT::PlotComponent::WindowMarker.new(self, keys)
1814
+ else
1815
+ if type.kind_of?(Tk::BLT::PlotComponent::Marker)
1816
+ type.new(self, keys)
1817
+ else
1818
+ Tk::BLT::PlotComponent::Marker.create_type(self, type, keys)
1819
+ end
1820
+ end
1821
+ end
1822
+ def marker_after(id, target=nil)
1823
+ if target
1824
+ tk_send_without_enc('marker', 'after', tagid(id), tagid(target))
1825
+ else
1826
+ tk_send_without_enc('marker', 'after', tagid(id))
1827
+ end
1828
+ self
1829
+ end
1830
+ def marker_before(id, target=None)
1831
+ if target
1832
+ tk_send_without_enc('marker', 'before', tagid(id), tagid(target))
1833
+ else
1834
+ tk_send_without_enc('marker', 'before', tagid(id))
1835
+ end
1836
+ self
1837
+ end
1838
+ def marker_delete(*ids)
1839
+ tk_send('marker', 'delete', *(ids.collect{|id| tagid(id)}))
1840
+ self
1841
+ end
1842
+ def marker_exist?(id)
1843
+ bool(tk_send('marker', 'exists', tagid(id)))
1844
+ end
1845
+ def marker_names(*pats)
1846
+ simplelist(tk_send('marker', 'names',
1847
+ *(pats.collect{|pat| tagid(pat)}))).collect{|id|
1848
+ Tk::BLT::PlotComponent::Marker.id2obj(self, id)
1849
+ }
1850
+ end
1851
+ def marker_type(id)
1852
+ tk_send('marker', 'type', tagid(id))
1853
+ end
1854
+
1855
+ ###################
1856
+
1857
+ def xaxis_cget(option)
1858
+ itemcget('xaxis', option)
1859
+ end
1860
+ def xaxis_cget_strict(option)
1861
+ itemcget_strict('xaxis', option)
1862
+ end
1863
+ def xaxis_configure(slot, value=None)
1864
+ if slot.kind_of?(Hash)
1865
+ slot = _symbolkey2str(slot)
1866
+ if cmd = slot.delete('command')
1867
+ slot['command'] = proc{|w, tick|
1868
+ cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
1869
+ }
1870
+ end
1871
+ elsif slot == :command || slot == 'command'
1872
+ cmd = value
1873
+ value = proc{|w, tick|
1874
+ cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
1875
+ }
1876
+ end
1877
+ itemconfigure('xaxis', slot, value)
1878
+ end
1879
+ def xaxis_configinfo(slot=nil)
1880
+ itemconfiginfo('xaxis', slot)
1881
+ end
1882
+ def current_xaxis_configinfo(slot=nil)
1883
+ current_itemconfiginfo('xaxis', slot)
1884
+ end
1885
+ def xaxis_bind(context, *args)
1886
+ if TkComm._callback_entry?(args[0]) || !block_given?
1887
+ cmd = args.shift
1888
+ else
1889
+ cmd = Proc.new
1890
+ end
1891
+ _bind([path, 'xaxis', 'bind'], context, cmd, *args)
1892
+ self
1893
+ end
1894
+ def xaxis_bind_append(context, *args)
1895
+ if TkComm._callback_entry?(args[0]) || !block_given?
1896
+ cmd = args.shift
1897
+ else
1898
+ cmd = Proc.new
1899
+ end
1900
+ _bind_append([path, 'xaxis', 'bind'], context, cmd, *args)
1901
+ self
1902
+ end
1903
+ def xaxis_bind_remove(context)
1904
+ _bind_remove([path, 'xaxis', 'bind'], context)
1905
+ self
1906
+ end
1907
+ def xaxis_bindinfo(context=nil)
1908
+ _bindinfo([path, 'xaxis', 'bind'], context)
1909
+ end
1910
+ def xaxis_invtransform(val)
1911
+ list(tk_send('xaxis', 'invtransform', val))
1912
+ end
1913
+ def xaxis_limits
1914
+ list(tk_send('xaxis', 'limits'))
1915
+ end
1916
+ def xaxis_transform(val)
1917
+ list(tk_send('xaxis', 'transform', val))
1918
+ end
1919
+ def xaxis_use(target=nil)
1920
+ if target
1921
+ Tk::BLT::PlotComponent::Axis.id2obj(self,
1922
+ tk_send('xaxis', 'use',
1923
+ tagid(target)))
1924
+ else
1925
+ Tk::BLT::PlotComponent::Axis.id2obj(self, tk_send('xaxis', 'use'))
1926
+ end
1927
+ end
1928
+
1929
+ def x2axis_cget(option)
1930
+ itemcget('x2axis', option)
1931
+ end
1932
+ def x2axis_cget_strict(option)
1933
+ itemcget_strict('x2axis', option)
1934
+ end
1935
+ def x2axis_configure(slot, value=None)
1936
+ if slot.kind_of?(Hash)
1937
+ slot = _symbolkey2str(slot)
1938
+ if cmd = slot.delete('command')
1939
+ slot['command'] = proc{|w, tick|
1940
+ cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
1941
+ }
1942
+ end
1943
+ elsif slot == :command || slot == 'command'
1944
+ cmd = value
1945
+ value = proc{|w, tick|
1946
+ cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
1947
+ }
1948
+ end
1949
+ itemconfigure('x2axis', slot, value)
1950
+ end
1951
+ def x2axis_configinfo(slot=nil)
1952
+ itemconfiginfo('x2axis', slot)
1953
+ end
1954
+ def current_x2axis_configinfo(slot=nil)
1955
+ current_itemconfiginfo('x2axis', slot)
1956
+ end
1957
+ def x2axis_bind(context, *args)
1958
+ if TkComm._callback_entry?(args[0]) || !block_given?
1959
+ cmd = args.shift
1960
+ else
1961
+ cmd = Proc.new
1962
+ end
1963
+ _bind([path, 'x2axis', 'bind'], context, cmd, *args)
1964
+ self
1965
+ end
1966
+ def x2axis_bind_append(context, *args)
1967
+ if TkComm._callback_entry?(args[0]) || !block_given?
1968
+ cmd = args.shift
1969
+ else
1970
+ cmd = Proc.new
1971
+ end
1972
+ _bind_append([path, 'x2axis', 'bind'], context, cmd, *args)
1973
+ self
1974
+ end
1975
+ def x2axis_bind_remove(context)
1976
+ _bind_remove([path, 'x2axis', 'bind'], context)
1977
+ self
1978
+ end
1979
+ def x2axis_bindinfo(context=nil)
1980
+ _bindinfo([path, 'x2axis', 'bind'], context)
1981
+ end
1982
+ def x2axis_invtransform(val)
1983
+ list(tk_send('x2axis', 'invtransform', val))
1984
+ end
1985
+ def x2axis_limits
1986
+ list(tk_send('x2axis', 'limits'))
1987
+ end
1988
+ def x2axis_transform(val)
1989
+ list(tk_send('x2axis', 'transform', val))
1990
+ end
1991
+ def x2axis_use(target=nil)
1992
+ if target
1993
+ Tk::BLT::PlotComponent::Axis.id2obj(self,
1994
+ tk_send('x2axis', 'use',
1995
+ tagid(target)))
1996
+ else
1997
+ Tk::BLT::PlotComponent::Axis.id2obj(self, tk_send('x2axis', 'use'))
1998
+ end
1999
+ end
2000
+
2001
+ def yaxis_cget(option)
2002
+ itemcget('yaxis', option)
2003
+ end
2004
+ def yaxis_cget_strict(option)
2005
+ itemcget_strict('yaxis', option)
2006
+ end
2007
+ def yaxis_configure(slot, value=None)
2008
+ if slot.kind_of?(Hash)
2009
+ slot = _symbolkey2str(slot)
2010
+ if cmd = slot.delete('command')
2011
+ slot['command'] = proc{|w, tick|
2012
+ cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
2013
+ }
2014
+ end
2015
+ elsif slot == :command || slot == 'command'
2016
+ cmd = value
2017
+ value = proc{|w, tick|
2018
+ cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
2019
+ }
2020
+ end
2021
+ itemconfigure('yaxis', slot, value)
2022
+ end
2023
+ def yaxis_configinfo(slot=nil)
2024
+ itemconfiginfo('yaxis', slot)
2025
+ end
2026
+ def current_yaxis_configinfo(slot=nil)
2027
+ current_itemconfiginfo('yaxis', slot)
2028
+ end
2029
+ def yaxis_bind(context, *args)
2030
+ if TkComm._callback_entry?(args[0]) || !block_given?
2031
+ cmd = args.shift
2032
+ else
2033
+ cmd = Proc.new
2034
+ end
2035
+ _bind([path, 'yaxis', 'bind'], context, cmd, *args)
2036
+ self
2037
+ end
2038
+ def yaxis_bind_append(context, *args)
2039
+ if TkComm._callback_entry?(args[0]) || !block_given?
2040
+ cmd = args.shift
2041
+ else
2042
+ cmd = Proc.new
2043
+ end
2044
+ _bind_append([path, 'yaxis', 'bind'], context, cmd, *args)
2045
+ self
2046
+ end
2047
+ def yaxis_bind_remove(context)
2048
+ _bind_remove([path, 'yaxis', 'bind'], context)
2049
+ self
2050
+ end
2051
+ def yaxis_bindinfo(context=nil)
2052
+ _bindinfo([path, 'yaxis', 'bind'], context)
2053
+ end
2054
+ def yaxis_invtransform(val)
2055
+ list(tk_send('yaxis', 'invtransform', val))
2056
+ end
2057
+ def yaxis_limits
2058
+ list(tk_send('yaxis', 'limits'))
2059
+ end
2060
+ def yaxis_transform(val)
2061
+ list(tk_send('yaxis', 'transform', val))
2062
+ end
2063
+ def yaxis_use(target=nil)
2064
+ if target
2065
+ Tk::BLT::PlotComponent::Axis.id2obj(self,
2066
+ tk_send('yaxis', 'use',
2067
+ tagid(target)))
2068
+ else
2069
+ Tk::BLT::PlotComponent::Axis.id2obj(self, tk_send('yaxis', 'use'))
2070
+ end
2071
+ end
2072
+
2073
+ def y2axis_cget(option)
2074
+ itemcget('y2axis', option)
2075
+ end
2076
+ def y2axis_cget_strict(option)
2077
+ itemcget_strict('y2axis', option)
2078
+ end
2079
+ def y2axis_configure(slot, value=None)
2080
+ if slot.kind_of?(Hash)
2081
+ slot = _symbolkey2str(slot)
2082
+ if cmd = slot.delete('command')
2083
+ slot['command'] = proc{|w, tick|
2084
+ cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
2085
+ }
2086
+ end
2087
+ elsif slot == :command || slot == 'command'
2088
+ cmd = value
2089
+ value = proc{|w, tick|
2090
+ cmd.call(TkComm.window(w), TkComm.num_or_str(tick))
2091
+ }
2092
+ end
2093
+ itemconfigure('y2axis', slot, value)
2094
+ end
2095
+ def y2axis_configinfo(slot=nil)
2096
+ axis_configinfo('y2axis', slot)
2097
+ end
2098
+ def current_y2axis_configinfo(slot=nil)
2099
+ current_itemconfiginfo('y2axis', slot)
2100
+ end
2101
+ def y2axis_bind(context, *args)
2102
+ if TkComm._callback_entry?(args[0]) || !block_given?
2103
+ cmd = args.shift
2104
+ else
2105
+ cmd = Proc.new
2106
+ end
2107
+ _bind([path, 'y2axis', 'bind'], context, cmd, *args)
2108
+ self
2109
+ end
2110
+ def y2axis_bind_append(context, *args)
2111
+ if TkComm._callback_entry?(args[0]) || !block_given?
2112
+ cmd = args.shift
2113
+ else
2114
+ cmd = Proc.new
2115
+ end
2116
+ _bind_append([path, 'y2axis', 'bind'], context, cmd, *args)
2117
+ self
2118
+ end
2119
+ def y2axis_bind_remove(context)
2120
+ _bind_remove([path, 'y2axis', 'bind'], context)
2121
+ self
2122
+ end
2123
+ def y2axis_bindinfo(context=nil)
2124
+ _bindinfo([path, 'y2axis', 'bind'], context)
2125
+ end
2126
+ def y2axis_invtransform(val)
2127
+ list(tk_send('y2axis', 'invtransform', val))
2128
+ end
2129
+ def y2axis_limits
2130
+ list(tk_send('y2axis', 'limits'))
2131
+ end
2132
+ def y2axis_transform(val)
2133
+ list(tk_send('y2axis', 'transform', val))
2134
+ end
2135
+ def y2axis_use(target=nil)
2136
+ if target
2137
+ Tk::BLT::PlotComponent::Axis.id2obj(self,
2138
+ tk_send('y2axis', 'use',
2139
+ tagid(target)))
2140
+ else
2141
+ Tk::BLT::PlotComponent::Axis.id2obj(self, tk_send('y2axis', 'use'))
2142
+ end
2143
+ end
2144
+ end
2145
+ end