tk_as_gem 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
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,116 @@
1
+ #
2
+ # tkextlib/tcllib/ico.rb
3
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
4
+ #
5
+ # * Part of tcllib extension
6
+ # * Reading and writing windows icons
7
+ #
8
+
9
+ require 'tk'
10
+ require 'tk/image'
11
+ require 'tkextlib/tcllib.rb'
12
+
13
+ # TkPackage.require('ico', '0.3')
14
+ TkPackage.require('ico')
15
+
16
+ module Tk
17
+ module Tcllib
18
+ class ICO < TkImage
19
+ PACKAGE_NAME = 'ico'.freeze
20
+ def self.package_name
21
+ PACKAGE_NAME
22
+ end
23
+
24
+ def self.package_version
25
+ begin
26
+ TkPackage.require('ico')
27
+ rescue
28
+ ''
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+
35
+ class Tk::Tcllib::ICO
36
+ def self.list(file, keys=nil)
37
+ tk_split_list(tk_call_without_enc('::ico::getIconList', file,
38
+ *hash_kv(keys, true)))
39
+ end
40
+
41
+ def self.get(file, index, keys=nil)
42
+ tk_call_without_enc('::ico::getIcon', file, index, *hash_kv(keys, true))
43
+ end
44
+
45
+ def self.get_image(file, index, keys={})
46
+ keys = _symbolkey2str(keys)
47
+ keys.delete('format')
48
+ self.new(file, index, keys)
49
+ end
50
+
51
+ def self.get_data(file, index, keys={})
52
+ keys['format'] = 'data'
53
+ tk_split_list(tk_call_without_enc('::ico::getIcon', file, index,
54
+ *hash_kv(keys, true)))
55
+ end
56
+
57
+ def self.write(file, index, depth, data, keys=nil)
58
+ tk_call_without_enc('::ico::writeIcon', file, index, depth, data,
59
+ *hash_kv(keys, true))
60
+ end
61
+
62
+ def self.copy(from_file, from_index, to_file, to_index, keys=nil)
63
+ tk_call_without_enc('::ico::copyIcon',
64
+ from_file, from_index, to_file, to_index,
65
+ *hash_kv(keys, true))
66
+ end
67
+
68
+ def self.exe_to_ico(exe_file, ico_file, keys=nil)
69
+ tk_call_without_enc('::ico::copyIcon', exe_file, ico_file,
70
+ *hash_kv(keys, true))
71
+ end
72
+
73
+ def self.clear_cache(file=None)
74
+ tk_call_without_enc('::ico::clearCache', file)
75
+ end
76
+
77
+ def self.transparent_color(image, color)
78
+ if image.kind_of?(Array)
79
+ tk_split_list(tk_call_without_enc('::ico::transparentColor',
80
+ image, color))
81
+ else
82
+ tk_call_without_enc('::ico::transparentColor', image, color)
83
+ end
84
+ end
85
+
86
+ def self.show(file, keys=nil)
87
+ tk_call_without_enc('::ico::Show', file, *hash_kv(keys, true))
88
+ end
89
+
90
+ ###########################
91
+
92
+ def initialize(file, index, keys=nil)
93
+ keys = _symbolkey2str(keys)
94
+ if keys.key?('name')
95
+ @path = keys['name'].to_s
96
+ else
97
+ Tk_Image_ID.mutex.synchronize{
98
+ @path = Tk_Image_ID.join(TkCore::INTERP._ip_id_)
99
+ Tk_Image_ID[1].succ!
100
+ }
101
+ end
102
+ tk_call_without_enc('::ico::getIcon', file, index, '-name', @path,
103
+ '-format', 'image', *hash_kv(keys, true))
104
+ Tk_IMGTBL[@path] = self
105
+ end
106
+
107
+ def write(file, index, depth, keys=nil)
108
+ Tk::Tcllib::ICO.write(file, index, depth, @path, keys=nil)
109
+ self
110
+ end
111
+
112
+ def transparent_color(color)
113
+ tk_call_without_enc('::ico::transparentColor', @path, color)
114
+ self
115
+ end
116
+ end
@@ -0,0 +1,66 @@
1
+ #
2
+ # tkextlib/tcllib/ip_entry.rb
3
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
4
+ #
5
+ # * Part of tcllib extension
6
+ # * An IP address entry widget
7
+ #
8
+ # (The following is the original description of the library.)
9
+ #
10
+ # This package provides a widget for the entering of a IP address.
11
+ # It guarantees a valid address at all times.
12
+
13
+ require 'tk'
14
+ require 'tkextlib/tcllib.rb'
15
+
16
+ # TkPackage.require('ipentry', '0.1')
17
+ TkPackage.require('ipentry')
18
+
19
+ module Tk
20
+ module Tcllib
21
+ class IP_Entry < Tk::Entry
22
+ PACKAGE_NAME = 'ipentry'.freeze
23
+ def self.package_name
24
+ PACKAGE_NAME
25
+ end
26
+
27
+ def self.package_version
28
+ begin
29
+ TkPackage.require('ipentry')
30
+ rescue
31
+ ''
32
+ end
33
+ end
34
+ end
35
+ IPEntry = IP_Entry
36
+ end
37
+ end
38
+
39
+ class Tk::Tcllib::IP_Entry
40
+ TkCommandNames = ['::ipentry::ipentry'.freeze].freeze
41
+ WidgetClassName = 'IPEntry'.freeze
42
+ WidgetClassNames[WidgetClassName] = self
43
+
44
+ def create_self(keys)
45
+ if keys and keys != None
46
+ tk_call_without_enc(self.class::TkCommandNames[0], @path,
47
+ *hash_kv(keys, true))
48
+ else
49
+ tk_call_without_enc(self.class::TkCommandNames[0], @path)
50
+ end
51
+ end
52
+ private :create_self
53
+
54
+ def __strval_optkeys
55
+ super() << 'fg' << 'bg' << 'insertbackground'
56
+ end
57
+ private :__strval_optkeys
58
+
59
+ def complete?
60
+ bool(tk_send_without_enc('complete'))
61
+ end
62
+
63
+ def insert(*ip)
64
+ tk_send_without_enc('insert', array2tk_list(ip.flatten))
65
+ end
66
+ end
@@ -0,0 +1,72 @@
1
+ #
2
+ # tkextlib/tcllib/panelframe.rb
3
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
4
+ #
5
+ # * Part of tcllib extension
6
+ # * Create PanelFrame widgets.
7
+ #
8
+
9
+ require 'tk'
10
+ require 'tkextlib/tcllib.rb'
11
+
12
+ # TkPackage.require('widget::panelframe', '1.0')
13
+ TkPackage.require('widget::panelframe')
14
+
15
+ module Tk::Tcllib
16
+ module Widget
17
+ class PanelFrame < TkWindow
18
+ PACKAGE_NAME = 'widget::panelframe'.freeze
19
+ def self.package_name
20
+ PACKAGE_NAME
21
+ end
22
+
23
+ def self.package_version
24
+ begin
25
+ TkPackage.require('widget::panelframe')
26
+ rescue
27
+ ''
28
+ end
29
+ end
30
+ end
31
+ Panelframe = PanelFrame
32
+ end
33
+ end
34
+
35
+ class Tk::Tcllib::Widget::PanelFrame
36
+ TkCommandNames = ['::widget::panelframe'.freeze].freeze
37
+
38
+ def create_self(keys)
39
+ if keys and keys != None
40
+ tk_call_without_enc(self.class::TkCommandNames[0], @path,
41
+ *hash_kv(keys, true))
42
+ else
43
+ tk_call_without_enc(self.class::TkCommandNames[0], @path)
44
+ end
45
+ end
46
+ private :create_self
47
+
48
+ def add(what, *args)
49
+ window(tk_send('add', *args))
50
+ end
51
+
52
+ #def get_frame
53
+ # window(tk_send('getframe'))
54
+ #end
55
+
56
+ def set_widget(widget)
57
+ tk_send('setwidget', widget)
58
+ self
59
+ end
60
+
61
+ def remove(*wins)
62
+ tk_send('remove', *wins)
63
+ end
64
+ def remove_destroy(*wins)
65
+ tk_send('remove', '-destroy', *wins)
66
+ end
67
+ alias delete remove_destroy
68
+
69
+ def items
70
+ simplelist(tk_send('items')).collect!{|w| window(w)}
71
+ end
72
+ end
@@ -0,0 +1,886 @@
1
+ #
2
+ # tkextlib/tcllib/plotchart.rb
3
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
4
+ #
5
+ # * Part of tcllib extension
6
+ # * Simple plotting and charting package
7
+ #
8
+ # (The following is the original description of the library.)
9
+ #
10
+ # Plotchart is a Tcl-only package that focuses on the easy creation of
11
+ # xy-plots, barcharts and other common types of graphical presentations.
12
+ # The emphasis is on ease of use, rather than flexibility. The procedures
13
+ # that create a plot use the entire canvas window, making the layout of the
14
+ # plot completely automatic.
15
+ #
16
+ # This results in the creation of an xy-plot in, say, ten lines of code:
17
+ # --------------------------------------------------------------------
18
+ # package require Plotchart
19
+ #
20
+ # canvas .c -background white -width 400 -height 200
21
+ # pack .c -fill both
22
+ #
23
+ # #
24
+ # # Create the plot with its x- and y-axes
25
+ # #
26
+ # set s [::Plotchart::createXYPlot .c {0.0 100.0 10.0} {0.0 100.0 20.0}]
27
+ #
28
+ # foreach {x y} {0.0 32.0 10.0 50.0 25.0 60.0 78.0 11.0 } {
29
+ # $s plot series1 $x $y
30
+ # }
31
+ #
32
+ # $s title "Data series"
33
+ # --------------------------------------------------------------------
34
+ #
35
+ # A drawback of the package might be that it does not do any data management.
36
+ # So if the canvas that holds the plot is to be resized, the whole plot must
37
+ # be redrawn. The advantage, though, is that it offers a number of plot and
38
+ # chart types:
39
+ #
40
+ # * XY-plots like the one shown above with any number of data series.
41
+ # * Stripcharts, a kind of XY-plots where the horizontal axis is adjusted
42
+ # automatically. The result is a kind of sliding window on the data
43
+ # series.
44
+ # * Polar plots, where the coordinates are polar instead of cartesian.
45
+ # * Isometric plots, where the scale of the coordinates in the two
46
+ # directions is always the same, i.e. a circle in world coordinates
47
+ # appears as a circle on the screen.
48
+ # You can zoom in and out, as well as pan with these plots (Note: this
49
+ # works best if no axes are drawn, the zooming and panning routines do
50
+ # not distinguish the axes), using the mouse buttons with the control
51
+ # key and the arrow keys with the control key.
52
+ # * Piecharts, with automatic scaling to indicate the proportions.
53
+ # * Barcharts, with either vertical or horizontal bars, stacked bars or
54
+ # bars side by side.
55
+ # * Timecharts, where bars indicate a time period and milestones or other
56
+ # important moments in time are represented by triangles.
57
+ # * 3D plots (both for displaying surfaces and 3D bars)
58
+ #
59
+
60
+ require 'tk'
61
+ require 'tkextlib/tcllib.rb'
62
+
63
+ # TkPackage.require('Plotchart', '0.9')
64
+ # TkPackage.require('Plotchart', '1.1')
65
+ TkPackage.require('Plotchart')
66
+
67
+ module Tk
68
+ module Tcllib
69
+ module Plotchart
70
+ PACKAGE_NAME = 'Plotchart'.freeze
71
+ def self.package_name
72
+ PACKAGE_NAME
73
+ end
74
+
75
+ def self.package_version
76
+ begin
77
+ TkPackage.require('Plotchart')
78
+ rescue
79
+ ''
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
85
+
86
+ module Tk::Tcllib::Plotchart
87
+ extend TkCore
88
+ ############################
89
+ def self.view_port(w, *args) # args := pxmin, pymin, pxmax, pymax
90
+ tk_call_without_enc('::Plotchart::viewPort', w.path, *(args.flatten))
91
+ end
92
+
93
+ def self.world_coordinates(w, *args) # args := xmin, ymin, xmax, ymax
94
+ tk_call_without_enc('::Plotchart::worldCoordinates',
95
+ w.path, *(args.flatten))
96
+ end
97
+
98
+ def self.world_3D_coordinates(w, *args)
99
+ # args := xmin, ymin, zmin, xmax, ymax, zmax
100
+ tk_call_without_enc('::Plotchart::world3DCoordinates',
101
+ w.path, *(args.flatten))
102
+ end
103
+
104
+ def self.coords_to_pixel(w, x, y)
105
+ list(tk_call_without_enc('::Plotchart::coordsToPixel', w.path, x, y))
106
+ end
107
+
108
+ def self.coords_3D_to_pixel(w, x, y, z)
109
+ list(tk_call_without_enc('::Plotchart::coords3DToPixel', w.path, x, y, z))
110
+ end
111
+
112
+ def self.polar_coordinates(w, radmax)
113
+ tk_call_without_enc('::Plotchart::polarCoordinates', w.path, radmax)
114
+ end
115
+
116
+ def self.polar_to_pixel(w, rad, phi)
117
+ list(tk_call_without_enc('::Plotchart::polarToPixel', w.path, rad, phi))
118
+ end
119
+
120
+ def self.pixel_to_coords(w, x, y)
121
+ list(tk_call_without_enc('::Plotchart::coordsToPixel', w.path, x, y))
122
+ end
123
+
124
+ def self.determine_scale(w, xmax, ymax)
125
+ tk_call_without_enc('::Plotchart::determineScale', w.path, xmax, ymax)
126
+ end
127
+
128
+ def self.set_zoom_pan(w)
129
+ tk_call_without_enc('::Plotchart::setZoomPan', w.path)
130
+ end
131
+
132
+ ############################
133
+ module ChartMethod
134
+ include TkCore
135
+
136
+ def title(str)
137
+ tk_call_without_enc(@chart, 'title', _get_eval_enc_str(str))
138
+ self
139
+ end
140
+
141
+ def save_plot(filename)
142
+ tk_call_without_enc(@chart, 'saveplot', filename)
143
+ self
144
+ end
145
+
146
+ def xtext(str)
147
+ tk_call_without_enc(@chart, 'xtext', _get_eval_enc_str(str))
148
+ self
149
+ end
150
+
151
+ def ytext(str)
152
+ tk_call_without_enc(@chart, 'ytext', _get_eval_enc_str(str))
153
+ self
154
+ end
155
+
156
+ def xconfig(key, value=None)
157
+ if key.kind_of?(Hash)
158
+ tk_call_without_enc(@chart, 'xconfig', *hash_kv(key, true))
159
+ else
160
+ tk_call_without_enc(@chart, 'xconfig',
161
+ "-#{key}", _get_eval_enc_str(value))
162
+ end
163
+ self
164
+ end
165
+
166
+ def yconfig(key, value=None)
167
+ if key.kind_of?(Hash)
168
+ tk_call_without_enc(@chart, 'yconfig', *hash_kv(key, true))
169
+ else
170
+ tk_call_without_enc(@chart, 'yconfig',
171
+ "-#{key}", _get_eval_enc_str(value))
172
+ end
173
+ self
174
+ end
175
+
176
+ ############################
177
+ def view_port(*args) # args := pxmin, pymin, pxmax, pymax
178
+ tk_call_without_enc('::Plotchart::viewPort', @path, *(args.flatten))
179
+ self
180
+ end
181
+
182
+ def world_coordinates(*args) # args := xmin, ymin, xmax, ymax
183
+ tk_call_without_enc('::Plotchart::worldCoordinates',
184
+ @path, *(args.flatten))
185
+ self
186
+ end
187
+
188
+ def world_3D_coordinates(*args)
189
+ # args := xmin, ymin, zmin, xmax, ymax, zmax
190
+ tk_call_without_enc('::Plotchart::world3DCoordinates',
191
+ @path, *(args.flatten))
192
+ self
193
+ end
194
+
195
+ def coords_to_pixel(x, y)
196
+ list(tk_call_without_enc('::Plotchart::coordsToPixel', @path, x, y))
197
+ end
198
+
199
+ def coords_3D_to_pixel(x, y, z)
200
+ list(tk_call_without_enc('::Plotchart::coords3DToPixel', @path, x, y, z))
201
+ end
202
+
203
+ def polar_coordinates(radmax)
204
+ tk_call_without_enc('::Plotchart::polarCoordinates', @path, radmax)
205
+ self
206
+ end
207
+
208
+ def polar_to_pixel(rad, phi)
209
+ list(tk_call_without_enc('::Plotchart::polarToPixel', @path, rad, phi))
210
+ end
211
+
212
+ def pixel_to_coords(x, y)
213
+ list(tk_call_without_enc('::Plotchart::coordsToPixel', @path, x, y))
214
+ end
215
+
216
+ def determine_scale(xmax, ymax)
217
+ tk_call_without_enc('::Plotchart::determineScale', @path, xmax, ymax)
218
+ self
219
+ end
220
+
221
+ def set_zoom_pan()
222
+ tk_call_without_enc('::Plotchart::setZoomPan', @path)
223
+ self
224
+ end
225
+ end
226
+
227
+ ############################
228
+ class XYPlot < Tk::Canvas
229
+ include ChartMethod
230
+
231
+ TkCommandNames = [
232
+ 'canvas'.freeze,
233
+ '::Plotchart::createXYPlot'.freeze
234
+ ].freeze
235
+
236
+ def initialize(*args) # args := ([parent,] xaxis, yaxis [, keys])
237
+ # xaxis := Array of [minimum, maximum, stepsize]
238
+ # yaxis := Array of [minimum, maximum, stepsize]
239
+ if args[0].kind_of?(Array)
240
+ @xaxis = args.shift
241
+ @yaxis = args.shift
242
+
243
+ super(*args) # create canvas widget
244
+ else
245
+ parent = args.shift
246
+
247
+ @xaxis = args.shift
248
+ @yaxis = args.shift
249
+
250
+ if parent.kind_of?(Tk::Canvas)
251
+ @path = parent.path
252
+ else
253
+ super(parent, *args) # create canvas widget
254
+ end
255
+ end
256
+
257
+ @chart = _create_chart
258
+ end
259
+
260
+ def _create_chart
261
+ p self.class::TkCommandNames[1] if $DEBUG
262
+ tk_call_without_enc(self.class::TkCommandNames[1], @path,
263
+ array2tk_list(@xaxis), array2tk_list(@yaxis))
264
+ end
265
+ private :_create_chart
266
+
267
+ def __destroy_hook__
268
+ Tk::Tcllib::Plotchart::PlotSeries::SeriesID_TBL.mutex.synchronize{
269
+ Tk::Tcllib::Plotchart::PlotSeries::SeriesID_TBL.delete(@path)
270
+ }
271
+ end
272
+
273
+ def plot(series, x, y)
274
+ tk_call_without_enc(@chart, 'plot', _get_eval_enc_str(series), x, y)
275
+ self
276
+ end
277
+
278
+ def contourlines(xcrd, ycrd, vals, clss=None)
279
+ xcrd = array2tk_list(xcrd) if xcrd.kind_of?(Array)
280
+ ycrd = array2tk_list(ycrd) if ycrd.kind_of?(Array)
281
+ vals = array2tk_list(vals) if vals.kind_of?(Array)
282
+ clss = array2tk_list(clss) if clss.kind_of?(Array)
283
+
284
+ tk_call_without_enc(@chart, 'contourlines', xcrd, ycrd, vals, clss)
285
+ self
286
+ end
287
+
288
+ def contourfill(xcrd, ycrd, vals, klasses=None)
289
+ xcrd = array2tk_list(xcrd) if xcrd.kind_of?(Array)
290
+ ycrd = array2tk_list(ycrd) if ycrd.kind_of?(Array)
291
+ vals = array2tk_list(vals) if vals.kind_of?(Array)
292
+ clss = array2tk_list(clss) if clss.kind_of?(Array)
293
+
294
+ tk_call_without_enc(@chart, 'contourfill', xcrd, ycrd, vals, clss)
295
+ self
296
+ end
297
+
298
+ def contourbox(xcrd, ycrd, vals, klasses=None)
299
+ xcrd = array2tk_list(xcrd) if xcrd.kind_of?(Array)
300
+ ycrd = array2tk_list(ycrd) if ycrd.kind_of?(Array)
301
+ vals = array2tk_list(vals) if vals.kind_of?(Array)
302
+ clss = array2tk_list(clss) if clss.kind_of?(Array)
303
+
304
+ tk_call_without_enc(@chart, 'contourbox', xcrd, ycrd, vals, clss)
305
+ self
306
+ end
307
+
308
+ def color_map(colors)
309
+ colors = array2tk_list(colors) if colors.kind_of?(Array)
310
+
311
+ tk_call_without_enc(@chart, 'colorMap', colors)
312
+ self
313
+ end
314
+
315
+ def grid_cells(xcrd, ycrd)
316
+ xcrd = array2tk_list(xcrd) if xcrd.kind_of?(Array)
317
+ ycrd = array2tk_list(ycrd) if ycrd.kind_of?(Array)
318
+
319
+ tk_call_without_enc(@chart, 'grid', xcrd, ycrd)
320
+ self
321
+ end
322
+
323
+ def dataconfig(series, key, value=None)
324
+ if key.kind_of?(Hash)
325
+ tk_call_without_enc(@chart, 'dataconfig', series, *hash_kv(key, true))
326
+ else
327
+ tk_call_without_enc(@chart, 'dataconfig', series,
328
+ "-#{key}", _get_eval_enc_str(value))
329
+ end
330
+ end
331
+ end
332
+
333
+ ############################
334
+ class Stripchart < XYPlot
335
+ TkCommandNames = [
336
+ 'canvas'.freeze,
337
+ '::Plotchart::createStripchart'.freeze
338
+ ].freeze
339
+ end
340
+
341
+ ############################
342
+ class PolarPlot < Tk::Canvas
343
+ include ChartMethod
344
+
345
+ TkCommandNames = [
346
+ 'canvas'.freeze,
347
+ '::Plotchart::createPolarplot'.freeze
348
+ ].freeze
349
+
350
+ def initialize(*args) # args := ([parent,] radius_data [, keys])
351
+ # radius_data := Array of [maximum_radius, stepsize]
352
+ if args[0].kind_of?(Array)
353
+ @radius_data = args.shift
354
+
355
+ super(*args) # create canvas widget
356
+ else
357
+ parent = args.shift
358
+
359
+ @radius_data = args.shift
360
+
361
+ if parent.kind_of?(Tk::Canvas)
362
+ @path = parent.path
363
+ else
364
+ super(parent, *args) # create canvas widget
365
+ end
366
+ end
367
+
368
+ @chart = _create_chart
369
+ end
370
+
371
+ def _create_chart
372
+ p self.class::TkCommandNames[1] if $DEBUG
373
+ tk_call_without_enc(self.class::TkCommandNames[1], @path,
374
+ array2tk_list(@radius_data))
375
+ end
376
+ private :_create_chart
377
+
378
+ def __destroy_hook__
379
+ Tk::Tcllib::Plotchart::PlotSeries::SeriesID_TBL.mutex.synchronize{
380
+ Tk::Tcllib::Plotchart::PlotSeries::SeriesID_TBL.delete(@path)
381
+ }
382
+ end
383
+
384
+ def plot(series, radius, angle)
385
+ tk_call_without_enc(@chart, 'plot', _get_eval_enc_str(series),
386
+ radius, angle)
387
+ self
388
+ end
389
+
390
+ def dataconfig(series, key, value=None)
391
+ if key.kind_of?(Hash)
392
+ tk_call_without_enc(@chart, 'dataconfig', series, *hash_kv(key, true))
393
+ else
394
+ tk_call_without_enc(@chart, 'dataconfig', series,
395
+ "-#{key}", _get_eval_enc_str(value))
396
+ end
397
+ end
398
+ end
399
+ Polarplot = PolarPlot
400
+
401
+ ############################
402
+ class IsometricPlot < Tk::Canvas
403
+ include ChartMethod
404
+
405
+ TkCommandNames = [
406
+ 'canvas'.freeze,
407
+ '::Plotchart::createIsometricPlot'.freeze
408
+ ].freeze
409
+
410
+ def initialize(*args) # args := ([parent,] xaxis, yaxis, [, step] [, keys])
411
+ # xaxis := Array of [minimum, maximum]
412
+ # yaxis := Array of [minimum, maximum]
413
+ # step := Float of stepsize | "noaxes" | :noaxes
414
+ if args[0].kind_of?(Array)
415
+ @xaxis = args.shift
416
+ @yaxis = args.shift
417
+
418
+ if args[0].kind_of?(Hash)
419
+ @stepsize = :noaxes
420
+ else
421
+ @stepsize = args.shift
422
+ end
423
+
424
+ super(*args) # create canvas widget
425
+ else
426
+ parent = args.shift
427
+
428
+ @xaxis = args.shift
429
+ @yaxis = args.shift
430
+
431
+ if args[0].kind_of?(Hash)
432
+ @stepsize = :noaxes
433
+ else
434
+ @stepsize = args.shift
435
+ end
436
+
437
+ if parent.kind_of?(Tk::Canvas)
438
+ @path = parent.path
439
+ else
440
+ super(parent, *args) # create canvas widget
441
+ end
442
+ end
443
+
444
+ @chart = _create_chart
445
+ end
446
+
447
+ def _create_chart
448
+ p self.class::TkCommandNames[1] if $DEBUG
449
+ tk_call_without_enc(self.class::TkCommandNames[1], @path,
450
+ array2tk_list(@xaxis), array2tk_list(@yaxis),
451
+ @stepsize)
452
+ end
453
+ private :_create_chart
454
+
455
+ def plot(type, *args)
456
+ self.__send__("plot_#{type.to_s.tr('-', '_')}", *args)
457
+ end
458
+
459
+ def plot_rectangle(*args) # args := x1, y1, x2, y2, color
460
+ tk_call_without_enc(@chart, 'plot', 'rectangle', *(args.flatten))
461
+ self
462
+ end
463
+
464
+ def plot_filled_rectangle(*args) # args := x1, y1, x2, y2, color
465
+ tk_call_without_enc(@chart, 'plot', 'filled-rectangle', *(args.flatten))
466
+ self
467
+ end
468
+
469
+ def plot_circle(*args) # args := xc, yc, radius, color
470
+ tk_call_without_enc(@chart, 'plot', 'circle', *(args.flatten))
471
+ self
472
+ end
473
+
474
+ def plot_filled_circle(*args) # args := xc, yc, radius, color
475
+ tk_call_without_enc(@chart, 'plot', 'filled-circle', *(args.flatten))
476
+ self
477
+ end
478
+ end
479
+ Isometricplot = IsometricPlot
480
+
481
+ ############################
482
+ class Plot3D < Tk::Canvas
483
+ include ChartMethod
484
+
485
+ TkCommandNames = [
486
+ 'canvas'.freeze,
487
+ '::Plotchart::create3DPlot'.freeze
488
+ ].freeze
489
+
490
+ def initialize(*args) # args := ([parent,] xaxis, yaxis, zaxis [, keys])
491
+ # xaxis := Array of [minimum, maximum, stepsize]
492
+ # yaxis := Array of [minimum, maximum, stepsize]
493
+ # zaxis := Array of [minimum, maximum, stepsize]
494
+ if args[0].kind_of?(Array)
495
+ @xaxis = args.shift
496
+ @yaxis = args.shift
497
+ @zaxis = args.shift
498
+
499
+ super(*args) # create canvas widget
500
+ else
501
+ parent = args.shift
502
+
503
+ @xaxis = args.shift
504
+ @yaxis = args.shift
505
+ @zaxis = args.shift
506
+
507
+ if parent.kind_of?(Tk::Canvas)
508
+ @path = parent.path
509
+ else
510
+ super(parent, *args) # create canvas widget
511
+ end
512
+ end
513
+
514
+ @chart = _create_chart
515
+ end
516
+
517
+ def _create_chart
518
+ p self.class::TkCommandNames[1] if $DEBUG
519
+ tk_call_without_enc(self.class::TkCommandNames[1], @path,
520
+ array2tk_list(@xaxis),
521
+ array2tk_list(@yaxis),
522
+ array2tk_list(@zaxis))
523
+ end
524
+ private :_create_chart
525
+
526
+ def plot_function(cmd=Proc.new)
527
+ Tk.ip_eval("proc #{@path}_#{@chart} {x y} {#{install_cmd(cmd)} $x $y}")
528
+ tk_call_without_enc(@chart, 'plotfunc', "#{@path}_#{@chart}")
529
+ self
530
+ end
531
+
532
+ def plot_funcont(conts, cmd=Proc.new)
533
+ conts = array2tk_list(conts) if conts.kind_of?(Array)
534
+ Tk.ip_eval("proc #{@path}_#{@chart} {x y} {#{install_cmd(cmd)} $x $y}")
535
+ tk_call_without_enc(@chart, 'plotfuncont', "#{@path}_#{@chart}", conts)
536
+ self
537
+ end
538
+
539
+ def grid_size(nxcells, nycells)
540
+ tk_call_without_enc(@chart, 'gridsize', nxcells, nycells)
541
+ self
542
+ end
543
+
544
+ def plot_data(dat)
545
+ # dat has to be provided as a 2 level array.
546
+ # 1st level contains rows, drawn in y-direction,
547
+ # and each row is an array whose elements are drawn in x-direction,
548
+ # for the columns.
549
+ tk_call_without_enc(@chart, 'plotdata', dat)
550
+ self
551
+ end
552
+
553
+ def colour(fill, border)
554
+ # configure the colours to use for polygon borders and inner area
555
+ tk_call_without_enc(@chart, 'colour', fill, border)
556
+ self
557
+ end
558
+ alias colours colour
559
+ alias colors colour
560
+ alias color colour
561
+ end
562
+
563
+ ############################
564
+ class Piechart < Tk::Canvas
565
+ include ChartMethod
566
+
567
+ TkCommandNames = [
568
+ 'canvas'.freeze,
569
+ '::Plotchart::createPiechart'.freeze
570
+ ].freeze
571
+
572
+ def initialize(*args) # args := ([parent] [, keys])
573
+ if args[0].kind_of?(Tk::Canvas)
574
+ parent = args.shift
575
+ @path = parent.path
576
+ else
577
+ super(*args) # create canvas widget
578
+ end
579
+ @chart = _create_chart
580
+ end
581
+
582
+ def _create_chart
583
+ p self.class::TkCommandNames[1] if $DEBUG
584
+ tk_call_without_enc(self.class::TkCommandNames[1], @path)
585
+ end
586
+ private :_create_chart
587
+
588
+ def plot(*dat) # argument is a list of [label, value]
589
+ tk_call_without_enc(@chart, 'plot', dat.flatten)
590
+ self
591
+ end
592
+ end
593
+
594
+ ############################
595
+ class Barchart < Tk::Canvas
596
+ include ChartMethod
597
+
598
+ TkCommandNames = [
599
+ 'canvas'.freeze,
600
+ '::Plotchart::createBarchart'.freeze
601
+ ].freeze
602
+
603
+ def initialize(*args)
604
+ # args := ([parent,] xlabels, ylabels [, series] [, keys])
605
+ # xlabels, ylabels := labels | axis ( depend on normal or horizontal )
606
+ # labels := Array of [label, label, ...]
607
+ # (It determines the number of bars that will be plotted per series.)
608
+ # axis := Array of [minimum, maximum, stepsize]
609
+ # series := Integer number of data series | 'stacked' | :stacked
610
+ if args[0].kind_of?(Array)
611
+ @xlabels = args.shift
612
+ @ylabels = args.shift
613
+
614
+ if args[0].kind_of?(Hash)
615
+ @series_size = :stacked
616
+ else
617
+ @series_size = args.shift
618
+ end
619
+
620
+ super(*args) # create canvas widget
621
+ else
622
+ parent = args.shift
623
+
624
+ @xlabels = args.shift
625
+ @ylabels = args.shift
626
+
627
+ if args[0].kind_of?(Hash)
628
+ @series_size = :stacked
629
+ else
630
+ @series_size = args.shift
631
+ end
632
+
633
+ if parent.kind_of?(Tk::Canvas)
634
+ @path = parent.path
635
+ else
636
+ super(parent, *args) # create canvas widget
637
+ end
638
+ end
639
+
640
+ @chart = _create_chart
641
+ end
642
+
643
+ def _create_chart
644
+ p self.class::TkCommandNames[1] if $DEBUG
645
+ tk_call_without_enc(self.class::TkCommandNames[1], @path,
646
+ array2tk_list(@xlabels), array2tk_list(@ylabels),
647
+ @series_size)
648
+ end
649
+ private :_create_chart
650
+
651
+ def __destroy_hook__
652
+ Tk::Tcllib::Plotchart::PlotSeries::SeriesID_TBL.mutex.synchronize{
653
+ Tk::Tcllib::Plotchart::PlotSeries::SeriesID_TBL.delete(@path)
654
+ }
655
+ end
656
+
657
+ def plot(series, dat, col=None)
658
+ tk_call_without_enc(@chart, 'plot', series, dat, col)
659
+ self
660
+ end
661
+
662
+ def colours(*cols)
663
+ # set the colours to be used
664
+ tk_call_without_enc(@chart, 'colours', *cols)
665
+ self
666
+ end
667
+ alias colour colours
668
+ alias colors colours
669
+ alias color colours
670
+ end
671
+
672
+ ############################
673
+ class HorizontalBarchart < Barchart
674
+ TkCommandNames = [
675
+ 'canvas'.freeze,
676
+ '::Plotchart::createHorizontalBarchart'.freeze
677
+ ].freeze
678
+ end
679
+
680
+ ############################
681
+ class Timechart < Tk::Canvas
682
+ include ChartMethod
683
+
684
+ TkCommandNames = [
685
+ 'canvas'.freeze,
686
+ '::Plotchart::createTimechart'.freeze
687
+ ].freeze
688
+
689
+ def initialize(*args)
690
+ # args := ([parent,] time_begin, time_end, items [, keys])
691
+ # time_begin := String of time format (e.g. "1 january 2004")
692
+ # time_end := String of time format (e.g. "1 january 2004")
693
+ # items := Expected/maximum number of items
694
+ # ( This determines the vertical spacing. )
695
+ if args[0].kind_of?(String)
696
+ @time_begin = args.shift
697
+ @time_end = args.shift
698
+ @items = args.shift
699
+
700
+ super(*args) # create canvas widget
701
+ else
702
+ parent = args.shift
703
+
704
+ @time_begin = args.shift
705
+ @time_end = args.shift
706
+ @items = args.shift
707
+
708
+ if parent.kind_of?(Tk::Canvas)
709
+ @path = parent.path
710
+ else
711
+ super(parent, *args) # create canvas widget
712
+ end
713
+ end
714
+
715
+ @chart = _create_chart
716
+ end
717
+
718
+ def _create_chart
719
+ p self.class::TkCommandNames[1] if $DEBUG
720
+ tk_call_without_enc(self.class::TkCommandNames[1], @path,
721
+ @time_begin, @time_end, @items)
722
+ end
723
+ private :_create_chart
724
+
725
+ def period(txt, time_begin, time_end, col=None)
726
+ tk_call_without_enc(@chart, 'period', txt, time_begin, time_end, col)
727
+ self
728
+ end
729
+
730
+ def milestone(txt, time, col=None)
731
+ tk_call_without_enc(@chart, 'milestone', txt, time, col)
732
+ self
733
+ end
734
+
735
+ def vertline(txt, time)
736
+ tk_call_without_enc(@chart, 'vertline', txt, time)
737
+ self
738
+ end
739
+ end
740
+
741
+ ############################
742
+ class Gnattchart < Tk::Canvas
743
+ include ChartMethod
744
+
745
+ TkCommandNames = [
746
+ 'canvas'.freeze,
747
+ '::Plotchart::createGnattchart'.freeze
748
+ ].freeze
749
+
750
+ def initialize(*args)
751
+ # args := ([parent,] time_begin, time_end, items [, text_width] [, keys])
752
+ # time_begin := String of time format (e.g. "1 january 2004")
753
+ # time_end := String of time format (e.g. "1 january 2004")
754
+ # items := Expected/maximum number of items
755
+ # ( This determines the vertical spacing. )
756
+ if args[0].kind_of?(String)
757
+ @time_begin = args.shift
758
+ @time_end = args.shift
759
+ @items = args.shift
760
+
761
+ if args[0].kind_of?(Fixnum)
762
+ @text_width = args.shift
763
+ else
764
+ @text_width = None
765
+ end
766
+
767
+ super(*args) # create canvas widget
768
+ else
769
+ parent = args.shift
770
+
771
+ @time_begin = args.shift
772
+ @time_end = args.shift
773
+ @items = args.shift
774
+
775
+ if args[0].kind_of?(Fixnum)
776
+ @text_width = args.shift
777
+ else
778
+ @text_width = None
779
+ end
780
+
781
+ if parent.kind_of?(Tk::Canvas)
782
+ @path = parent.path
783
+ else
784
+ super(parent, *args) # create canvas widget
785
+ end
786
+ end
787
+
788
+ @chart = _create_chart
789
+ end
790
+
791
+ def _create_chart
792
+ p self.class::TkCommandNames[1] if $DEBUG
793
+ tk_call_without_enc(self.class::TkCommandNames[1], @path,
794
+ @time_begin, @time_end, @items, @text_width)
795
+ end
796
+ private :_create_chart
797
+
798
+ def task(txt, time_begin, time_end, completed=0.0)
799
+ list(tk_call_without_enc(@chart, 'task', txt, time_begin, time_end,
800
+ completed)).collect!{|id|
801
+ TkcItem.id2obj(self, id)
802
+ }
803
+ end
804
+
805
+ def milestone(txt, time, col=None)
806
+ tk_call_without_enc(@chart, 'milestone', txt, time, col)
807
+ self
808
+ end
809
+
810
+ def vertline(txt, time)
811
+ tk_call_without_enc(@chart, 'vertline', txt, time)
812
+ self
813
+ end
814
+
815
+ def connect(from_task, to_task)
816
+ from_task = array2tk_list(from_task) if from_task.kind_of?(Array)
817
+ to_task = array2tk_list(to_task) if to_task.kind_of?(Array)
818
+
819
+ tk_call_without_enc(@chart, 'connect', from_task, to_task)
820
+ self
821
+ end
822
+
823
+ def summary(txt, tasks)
824
+ tasks = array2tk_list(tasks) if tasks.kind_of?(Array)
825
+ tk_call_without_enc(@chart, 'summary', tasks)
826
+ self
827
+ end
828
+
829
+ def color_of_part(keyword, newcolor)
830
+ tk_call_without_enc(@chart, 'color', keyword, newcolor)
831
+ self
832
+ end
833
+
834
+ def font_of_part(keyword, newfont)
835
+ tk_call_without_enc(@chart, 'font', keyword, newfont)
836
+ self
837
+ end
838
+ end
839
+
840
+ ############################
841
+ class PlotSeries < TkObject
842
+ SeriesID_TBL = TkCore::INTERP.create_table
843
+
844
+ (Series_ID = ['series'.freeze, '00000'.taint]).instance_eval{
845
+ @mutex = Mutex.new
846
+ def mutex; @mutex; end
847
+ freeze
848
+ }
849
+ TkCore::INTERP.init_ip_env{
850
+ SeriesID_TBL.mutex.synchronize{ SeriesID_TBL.clear }
851
+ }
852
+
853
+ def self.id2obj(chart, id)
854
+ path = chart.path
855
+ SeriesID_TBL.mutex.synchronize{
856
+ if SeriesID_TBL[path]
857
+ SeriesID_TBL[path][id]? SeriesID_TBL[path][id]: id
858
+ else
859
+ id
860
+ end
861
+ }
862
+ end
863
+
864
+ def initialize(chart, keys=nil)
865
+ @parent = @chart_obj = chart
866
+ @ppath = @chart_obj.path
867
+ Series_ID.mutex.synchronize{
868
+ @path = @series = @id = Series_ID.join(TkCore::INTERP._ip_id_)
869
+ Series_ID[1].succ!
870
+ }
871
+ SeriesID_TBL.mutex.synchronize{
872
+ SeriesID_TBL[@ppath] ||= {}
873
+ SeriesID_TBL[@ppath][@id] = self
874
+ }
875
+ dataconfig(keys) if keys.kind_of?(Hash)
876
+ end
877
+
878
+ def plot(*args)
879
+ @chart_obj.plot(@series, *args)
880
+ end
881
+
882
+ def dataconfig(key, value=None)
883
+ @chart_obj.dataconfig(@series, key, value)
884
+ end
885
+ end
886
+ end