tk 0.1.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 (1060) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.travis.yml +6 -0
  4. data/BSDL +22 -0
  5. data/ChangeLog.tkextlib +949 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +56 -0
  8. data/MANUAL_tcltklib.eng +467 -0
  9. data/MANUAL_tcltklib.ja +578 -0
  10. data/README.1st +19 -0
  11. data/README.ActiveTcl +62 -0
  12. data/README.fork +34 -0
  13. data/README.macosx-aqua +67 -0
  14. data/README.md +33 -0
  15. data/README.tcltklib +152 -0
  16. data/Rakefile +16 -0
  17. data/bin/console +14 -0
  18. data/bin/setup +8 -0
  19. data/ext/tk/config_list.in +41 -0
  20. data/ext/tk/extconf.rb +2098 -0
  21. data/ext/tk/old-extconf.rb +441 -0
  22. data/ext/tk/stubs.c +592 -0
  23. data/ext/tk/stubs.h +33 -0
  24. data/ext/tk/tcltklib.c +11066 -0
  25. data/ext/tk/tkutil/extconf.rb +14 -0
  26. data/ext/tk/tkutil/tkutil.c +1900 -0
  27. data/lib/README +30 -0
  28. data/lib/multi-tk.rb +3743 -0
  29. data/lib/remote-tk.rb +527 -0
  30. data/lib/tcltk.rb +369 -0
  31. data/lib/tk.rb +5758 -0
  32. data/lib/tk/after.rb +7 -0
  33. data/lib/tk/autoload.rb +763 -0
  34. data/lib/tk/bgerror.rb +30 -0
  35. data/lib/tk/bindtag.rb +139 -0
  36. data/lib/tk/busy.rb +119 -0
  37. data/lib/tk/button.rb +32 -0
  38. data/lib/tk/canvas.rb +847 -0
  39. data/lib/tk/canvastag.rb +460 -0
  40. data/lib/tk/checkbutton.rb +33 -0
  41. data/lib/tk/clipboard.rb +76 -0
  42. data/lib/tk/clock.rb +72 -0
  43. data/lib/tk/composite.rb +485 -0
  44. data/lib/tk/console.rb +53 -0
  45. data/lib/tk/dialog.rb +327 -0
  46. data/lib/tk/encodedstr.rb +188 -0
  47. data/lib/tk/entry.rb +121 -0
  48. data/lib/tk/event.rb +563 -0
  49. data/lib/tk/font.rb +2352 -0
  50. data/lib/tk/fontchooser.rb +181 -0
  51. data/lib/tk/frame.rb +133 -0
  52. data/lib/tk/grid.rb +280 -0
  53. data/lib/tk/image.rb +396 -0
  54. data/lib/tk/itemconfig.rb +1222 -0
  55. data/lib/tk/itemfont.rb +328 -0
  56. data/lib/tk/kinput.rb +72 -0
  57. data/lib/tk/label.rb +23 -0
  58. data/lib/tk/labelframe.rb +32 -0
  59. data/lib/tk/listbox.rb +285 -0
  60. data/lib/tk/macpkg.rb +81 -0
  61. data/lib/tk/menu.rb +719 -0
  62. data/lib/tk/menubar.rb +138 -0
  63. data/lib/tk/menuspec.rb +457 -0
  64. data/lib/tk/message.rb +25 -0
  65. data/lib/tk/mngfocus.rb +34 -0
  66. data/lib/tk/msgcat.rb +300 -0
  67. data/lib/tk/namespace.rb +547 -0
  68. data/lib/tk/optiondb.rb +372 -0
  69. data/lib/tk/optionobj.rb +213 -0
  70. data/lib/tk/pack.rb +108 -0
  71. data/lib/tk/package.rb +144 -0
  72. data/lib/tk/palette.rb +56 -0
  73. data/lib/tk/panedwindow.rb +261 -0
  74. data/lib/tk/place.rb +129 -0
  75. data/lib/tk/radiobutton.rb +74 -0
  76. data/lib/tk/root.rb +96 -0
  77. data/lib/tk/scale.rb +113 -0
  78. data/lib/tk/scrollable.rb +83 -0
  79. data/lib/tk/scrollbar.rb +184 -0
  80. data/lib/tk/scrollbox.rb +40 -0
  81. data/lib/tk/selection.rb +87 -0
  82. data/lib/tk/spinbox.rb +145 -0
  83. data/lib/tk/tagfont.rb +44 -0
  84. data/lib/tk/text.rb +1605 -0
  85. data/lib/tk/textimage.rb +89 -0
  86. data/lib/tk/textmark.rb +205 -0
  87. data/lib/tk/texttag.rb +322 -0
  88. data/lib/tk/textwindow.rb +155 -0
  89. data/lib/tk/timer.rb +666 -0
  90. data/lib/tk/tk_mac.rb +159 -0
  91. data/lib/tk/toplevel.rb +265 -0
  92. data/lib/tk/ttk_selector.rb +99 -0
  93. data/lib/tk/txtwin_abst.rb +40 -0
  94. data/lib/tk/validation.rb +398 -0
  95. data/lib/tk/variable.rb +1797 -0
  96. data/lib/tk/virtevent.rb +140 -0
  97. data/lib/tk/winfo.rb +393 -0
  98. data/lib/tk/winpkg.rb +157 -0
  99. data/lib/tk/wm.rb +553 -0
  100. data/lib/tk/xim.rb +123 -0
  101. data/lib/tkafter.rb +5 -0
  102. data/lib/tkbgerror.rb +5 -0
  103. data/lib/tkcanvas.rb +5 -0
  104. data/lib/tkclass.rb +48 -0
  105. data/lib/tkconsole.rb +5 -0
  106. data/lib/tkdialog.rb +5 -0
  107. data/lib/tkentry.rb +5 -0
  108. data/lib/tkextlib/ICONS.rb +14 -0
  109. data/lib/tkextlib/ICONS/icons.rb +130 -0
  110. data/lib/tkextlib/ICONS/setup.rb +9 -0
  111. data/lib/tkextlib/SUPPORT_STATUS +193 -0
  112. data/lib/tkextlib/blt.rb +190 -0
  113. data/lib/tkextlib/blt/barchart.rb +80 -0
  114. data/lib/tkextlib/blt/bitmap.rb +113 -0
  115. data/lib/tkextlib/blt/busy.rb +84 -0
  116. data/lib/tkextlib/blt/component.rb +2219 -0
  117. data/lib/tkextlib/blt/container.rb +29 -0
  118. data/lib/tkextlib/blt/cutbuffer.rb +24 -0
  119. data/lib/tkextlib/blt/dragdrop.rb +270 -0
  120. data/lib/tkextlib/blt/eps.rb +33 -0
  121. data/lib/tkextlib/blt/graph.rb +68 -0
  122. data/lib/tkextlib/blt/htext.rb +113 -0
  123. data/lib/tkextlib/blt/setup.rb +9 -0
  124. data/lib/tkextlib/blt/spline.rb +24 -0
  125. data/lib/tkextlib/blt/stripchart.rb +75 -0
  126. data/lib/tkextlib/blt/table.rb +413 -0
  127. data/lib/tkextlib/blt/tabnotebook.rb +111 -0
  128. data/lib/tkextlib/blt/tabset.rb +505 -0
  129. data/lib/tkextlib/blt/ted.rb +69 -0
  130. data/lib/tkextlib/blt/tile.rb +26 -0
  131. data/lib/tkextlib/blt/tile/button.rb +17 -0
  132. data/lib/tkextlib/blt/tile/checkbutton.rb +18 -0
  133. data/lib/tkextlib/blt/tile/frame.rb +17 -0
  134. data/lib/tkextlib/blt/tile/label.rb +17 -0
  135. data/lib/tkextlib/blt/tile/radiobutton.rb +18 -0
  136. data/lib/tkextlib/blt/tile/scrollbar.rb +17 -0
  137. data/lib/tkextlib/blt/tile/toplevel.rb +17 -0
  138. data/lib/tkextlib/blt/tree.rb +1059 -0
  139. data/lib/tkextlib/blt/treeview.rb +1288 -0
  140. data/lib/tkextlib/blt/unix_dnd.rb +142 -0
  141. data/lib/tkextlib/blt/vector.rb +257 -0
  142. data/lib/tkextlib/blt/watch.rb +176 -0
  143. data/lib/tkextlib/blt/win_printer.rb +62 -0
  144. data/lib/tkextlib/blt/winop.rb +108 -0
  145. data/lib/tkextlib/bwidget.rb +154 -0
  146. data/lib/tkextlib/bwidget/arrowbutton.rb +22 -0
  147. data/lib/tkextlib/bwidget/bitmap.rb +22 -0
  148. data/lib/tkextlib/bwidget/button.rb +32 -0
  149. data/lib/tkextlib/bwidget/buttonbox.rb +91 -0
  150. data/lib/tkextlib/bwidget/combobox.rb +63 -0
  151. data/lib/tkextlib/bwidget/dialog.rb +195 -0
  152. data/lib/tkextlib/bwidget/dragsite.rb +32 -0
  153. data/lib/tkextlib/bwidget/dropsite.rb +40 -0
  154. data/lib/tkextlib/bwidget/dynamichelp.rb +64 -0
  155. data/lib/tkextlib/bwidget/entry.rb +44 -0
  156. data/lib/tkextlib/bwidget/label.rb +42 -0
  157. data/lib/tkextlib/bwidget/labelentry.rb +81 -0
  158. data/lib/tkextlib/bwidget/labelframe.rb +53 -0
  159. data/lib/tkextlib/bwidget/listbox.rb +362 -0
  160. data/lib/tkextlib/bwidget/mainframe.rb +133 -0
  161. data/lib/tkextlib/bwidget/messagedlg.rb +193 -0
  162. data/lib/tkextlib/bwidget/notebook.rb +167 -0
  163. data/lib/tkextlib/bwidget/pagesmanager.rb +74 -0
  164. data/lib/tkextlib/bwidget/panedwindow.rb +43 -0
  165. data/lib/tkextlib/bwidget/panelframe.rb +68 -0
  166. data/lib/tkextlib/bwidget/passwddlg.rb +45 -0
  167. data/lib/tkextlib/bwidget/progressbar.rb +21 -0
  168. data/lib/tkextlib/bwidget/progressdlg.rb +59 -0
  169. data/lib/tkextlib/bwidget/scrollableframe.rb +41 -0
  170. data/lib/tkextlib/bwidget/scrolledwindow.rb +49 -0
  171. data/lib/tkextlib/bwidget/scrollview.rb +26 -0
  172. data/lib/tkextlib/bwidget/selectcolor.rb +74 -0
  173. data/lib/tkextlib/bwidget/selectfont.rb +92 -0
  174. data/lib/tkextlib/bwidget/separator.rb +21 -0
  175. data/lib/tkextlib/bwidget/setup.rb +9 -0
  176. data/lib/tkextlib/bwidget/spinbox.rb +99 -0
  177. data/lib/tkextlib/bwidget/statusbar.rb +63 -0
  178. data/lib/tkextlib/bwidget/titleframe.rb +34 -0
  179. data/lib/tkextlib/bwidget/tree.rb +501 -0
  180. data/lib/tkextlib/bwidget/widget.rb +130 -0
  181. data/lib/tkextlib/itcl.rb +14 -0
  182. data/lib/tkextlib/itcl/incr_tcl.rb +179 -0
  183. data/lib/tkextlib/itcl/setup.rb +14 -0
  184. data/lib/tkextlib/itk.rb +14 -0
  185. data/lib/tkextlib/itk/incr_tk.rb +447 -0
  186. data/lib/tkextlib/itk/setup.rb +14 -0
  187. data/lib/tkextlib/iwidgets.rb +95 -0
  188. data/lib/tkextlib/iwidgets/buttonbox.rb +122 -0
  189. data/lib/tkextlib/iwidgets/calendar.rb +126 -0
  190. data/lib/tkextlib/iwidgets/canvasprintbox.rb +54 -0
  191. data/lib/tkextlib/iwidgets/canvasprintdialog.rb +39 -0
  192. data/lib/tkextlib/iwidgets/checkbox.rb +131 -0
  193. data/lib/tkextlib/iwidgets/combobox.rb +105 -0
  194. data/lib/tkextlib/iwidgets/dateentry.rb +21 -0
  195. data/lib/tkextlib/iwidgets/datefield.rb +59 -0
  196. data/lib/tkextlib/iwidgets/dialog.rb +21 -0
  197. data/lib/tkextlib/iwidgets/dialogshell.rb +122 -0
  198. data/lib/tkextlib/iwidgets/disjointlistbox.rb +51 -0
  199. data/lib/tkextlib/iwidgets/entryfield.rb +186 -0
  200. data/lib/tkextlib/iwidgets/extbutton.rb +41 -0
  201. data/lib/tkextlib/iwidgets/extfileselectionbox.rb +47 -0
  202. data/lib/tkextlib/iwidgets/extfileselectiondialog.rb +34 -0
  203. data/lib/tkextlib/iwidgets/feedback.rb +36 -0
  204. data/lib/tkextlib/iwidgets/fileselectionbox.rb +47 -0
  205. data/lib/tkextlib/iwidgets/fileselectiondialog.rb +34 -0
  206. data/lib/tkextlib/iwidgets/finddialog.rb +43 -0
  207. data/lib/tkextlib/iwidgets/hierarchy.rb +366 -0
  208. data/lib/tkextlib/iwidgets/hyperhelp.rb +51 -0
  209. data/lib/tkextlib/iwidgets/labeledframe.rb +40 -0
  210. data/lib/tkextlib/iwidgets/labeledwidget.rb +46 -0
  211. data/lib/tkextlib/iwidgets/mainwindow.rb +68 -0
  212. data/lib/tkextlib/iwidgets/menubar.rb +213 -0
  213. data/lib/tkextlib/iwidgets/messagebox.rb +94 -0
  214. data/lib/tkextlib/iwidgets/messagedialog.rb +21 -0
  215. data/lib/tkextlib/iwidgets/notebook.rb +176 -0
  216. data/lib/tkextlib/iwidgets/optionmenu.rb +93 -0
  217. data/lib/tkextlib/iwidgets/panedwindow.rb +135 -0
  218. data/lib/tkextlib/iwidgets/promptdialog.rb +132 -0
  219. data/lib/tkextlib/iwidgets/pushbutton.rb +36 -0
  220. data/lib/tkextlib/iwidgets/radiobox.rb +122 -0
  221. data/lib/tkextlib/iwidgets/scopedobject.rb +25 -0
  222. data/lib/tkextlib/iwidgets/scrolledcanvas.rb +354 -0
  223. data/lib/tkextlib/iwidgets/scrolledframe.rb +60 -0
  224. data/lib/tkextlib/iwidgets/scrolledhtml.rb +59 -0
  225. data/lib/tkextlib/iwidgets/scrolledlistbox.rb +208 -0
  226. data/lib/tkextlib/iwidgets/scrolledtext.rb +569 -0
  227. data/lib/tkextlib/iwidgets/scrolledwidget.rb +21 -0
  228. data/lib/tkextlib/iwidgets/selectionbox.rb +103 -0
  229. data/lib/tkextlib/iwidgets/selectiondialog.rb +93 -0
  230. data/lib/tkextlib/iwidgets/setup.rb +9 -0
  231. data/lib/tkextlib/iwidgets/shell.rb +39 -0
  232. data/lib/tkextlib/iwidgets/spindate.rb +49 -0
  233. data/lib/tkextlib/iwidgets/spinint.rb +31 -0
  234. data/lib/tkextlib/iwidgets/spinner.rb +170 -0
  235. data/lib/tkextlib/iwidgets/spintime.rb +49 -0
  236. data/lib/tkextlib/iwidgets/tabnotebook.rb +182 -0
  237. data/lib/tkextlib/iwidgets/tabset.rb +146 -0
  238. data/lib/tkextlib/iwidgets/timeentry.rb +26 -0
  239. data/lib/tkextlib/iwidgets/timefield.rb +59 -0
  240. data/lib/tkextlib/iwidgets/toolbar.rb +113 -0
  241. data/lib/tkextlib/iwidgets/watch.rb +57 -0
  242. data/lib/tkextlib/pkg_checker.rb +185 -0
  243. data/lib/tkextlib/setup.rb +9 -0
  244. data/lib/tkextlib/tcllib.rb +106 -0
  245. data/lib/tkextlib/tcllib/README +135 -0
  246. data/lib/tkextlib/tcllib/autoscroll.rb +159 -0
  247. data/lib/tkextlib/tcllib/calendar.rb +56 -0
  248. data/lib/tkextlib/tcllib/canvas_sqmap.rb +37 -0
  249. data/lib/tkextlib/tcllib/canvas_zoom.rb +22 -0
  250. data/lib/tkextlib/tcllib/chatwidget.rb +152 -0
  251. data/lib/tkextlib/tcllib/crosshair.rb +118 -0
  252. data/lib/tkextlib/tcllib/ctext.rb +161 -0
  253. data/lib/tkextlib/tcllib/cursor.rb +98 -0
  254. data/lib/tkextlib/tcllib/dateentry.rb +63 -0
  255. data/lib/tkextlib/tcllib/datefield.rb +58 -0
  256. data/lib/tkextlib/tcllib/diagrams.rb +225 -0
  257. data/lib/tkextlib/tcllib/dialog.rb +85 -0
  258. data/lib/tkextlib/tcllib/getstring.rb +135 -0
  259. data/lib/tkextlib/tcllib/history.rb +74 -0
  260. data/lib/tkextlib/tcllib/ico.rb +147 -0
  261. data/lib/tkextlib/tcllib/ip_entry.rb +76 -0
  262. data/lib/tkextlib/tcllib/khim.rb +69 -0
  263. data/lib/tkextlib/tcllib/menuentry.rb +48 -0
  264. data/lib/tkextlib/tcllib/ntext.rb +147 -0
  265. data/lib/tkextlib/tcllib/panelframe.rb +79 -0
  266. data/lib/tkextlib/tcllib/plotchart.rb +1405 -0
  267. data/lib/tkextlib/tcllib/ruler.rb +66 -0
  268. data/lib/tkextlib/tcllib/screenruler.rb +69 -0
  269. data/lib/tkextlib/tcllib/scrolledwindow.rb +58 -0
  270. data/lib/tkextlib/tcllib/scrollwin.rb +62 -0
  271. data/lib/tkextlib/tcllib/setup.rb +9 -0
  272. data/lib/tkextlib/tcllib/statusbar.rb +80 -0
  273. data/lib/tkextlib/tcllib/style.rb +62 -0
  274. data/lib/tkextlib/tcllib/superframe.rb +52 -0
  275. data/lib/tkextlib/tcllib/swaplist.rb +151 -0
  276. data/lib/tkextlib/tcllib/tablelist.rb +29 -0
  277. data/lib/tkextlib/tcllib/tablelist_core.rb +1073 -0
  278. data/lib/tkextlib/tcllib/tablelist_tile.rb +44 -0
  279. data/lib/tkextlib/tcllib/tkpiechart.rb +315 -0
  280. data/lib/tkextlib/tcllib/toolbar.rb +176 -0
  281. data/lib/tkextlib/tcllib/tooltip.rb +105 -0
  282. data/lib/tkextlib/tcllib/validator.rb +66 -0
  283. data/lib/tkextlib/tcllib/widget.rb +83 -0
  284. data/lib/tkextlib/tclx.rb +14 -0
  285. data/lib/tkextlib/tclx/setup.rb +9 -0
  286. data/lib/tkextlib/tclx/tclx.rb +75 -0
  287. data/lib/tkextlib/tile.rb +450 -0
  288. data/lib/tkextlib/tile/dialog.rb +103 -0
  289. data/lib/tkextlib/tile/setup.rb +9 -0
  290. data/lib/tkextlib/tile/sizegrip.rb +33 -0
  291. data/lib/tkextlib/tile/style.rb +337 -0
  292. data/lib/tkextlib/tile/tbutton.rb +35 -0
  293. data/lib/tkextlib/tile/tcheckbutton.rb +39 -0
  294. data/lib/tkextlib/tile/tcombobox.rb +56 -0
  295. data/lib/tkextlib/tile/tentry.rb +50 -0
  296. data/lib/tkextlib/tile/tframe.rb +35 -0
  297. data/lib/tkextlib/tile/tlabel.rb +35 -0
  298. data/lib/tkextlib/tile/tlabelframe.rb +39 -0
  299. data/lib/tkextlib/tile/tmenubutton.rb +39 -0
  300. data/lib/tkextlib/tile/tnotebook.rb +148 -0
  301. data/lib/tkextlib/tile/tpaned.rb +246 -0
  302. data/lib/tkextlib/tile/tprogressbar.rb +58 -0
  303. data/lib/tkextlib/tile/tradiobutton.rb +39 -0
  304. data/lib/tkextlib/tile/treeview.rb +1337 -0
  305. data/lib/tkextlib/tile/tscale.rb +57 -0
  306. data/lib/tkextlib/tile/tscrollbar.rb +64 -0
  307. data/lib/tkextlib/tile/tseparator.rb +35 -0
  308. data/lib/tkextlib/tile/tspinbox.rb +108 -0
  309. data/lib/tkextlib/tile/tsquare.rb +31 -0
  310. data/lib/tkextlib/tkDND.rb +19 -0
  311. data/lib/tkextlib/tkDND/setup.rb +9 -0
  312. data/lib/tkextlib/tkDND/shape.rb +126 -0
  313. data/lib/tkextlib/tkDND/tkdnd.rb +183 -0
  314. data/lib/tkextlib/tkHTML.rb +14 -0
  315. data/lib/tkextlib/tkHTML/htmlwidget.rb +454 -0
  316. data/lib/tkextlib/tkHTML/setup.rb +9 -0
  317. data/lib/tkextlib/tkimg.rb +37 -0
  318. data/lib/tkextlib/tkimg/README +26 -0
  319. data/lib/tkextlib/tkimg/bmp.rb +34 -0
  320. data/lib/tkextlib/tkimg/dted.rb +34 -0
  321. data/lib/tkextlib/tkimg/gif.rb +34 -0
  322. data/lib/tkextlib/tkimg/ico.rb +34 -0
  323. data/lib/tkextlib/tkimg/jpeg.rb +34 -0
  324. data/lib/tkextlib/tkimg/pcx.rb +34 -0
  325. data/lib/tkextlib/tkimg/pixmap.rb +45 -0
  326. data/lib/tkextlib/tkimg/png.rb +34 -0
  327. data/lib/tkextlib/tkimg/ppm.rb +34 -0
  328. data/lib/tkextlib/tkimg/ps.rb +34 -0
  329. data/lib/tkextlib/tkimg/raw.rb +34 -0
  330. data/lib/tkextlib/tkimg/setup.rb +9 -0
  331. data/lib/tkextlib/tkimg/sgi.rb +34 -0
  332. data/lib/tkextlib/tkimg/sun.rb +34 -0
  333. data/lib/tkextlib/tkimg/tga.rb +34 -0
  334. data/lib/tkextlib/tkimg/tiff.rb +34 -0
  335. data/lib/tkextlib/tkimg/window.rb +34 -0
  336. data/lib/tkextlib/tkimg/xbm.rb +34 -0
  337. data/lib/tkextlib/tkimg/xpm.rb +34 -0
  338. data/lib/tkextlib/tktable.rb +15 -0
  339. data/lib/tkextlib/tktable/setup.rb +9 -0
  340. data/lib/tkextlib/tktable/tktable.rb +967 -0
  341. data/lib/tkextlib/tktrans.rb +15 -0
  342. data/lib/tkextlib/tktrans/setup.rb +9 -0
  343. data/lib/tkextlib/tktrans/tktrans.rb +65 -0
  344. data/lib/tkextlib/treectrl.rb +14 -0
  345. data/lib/tkextlib/treectrl/setup.rb +9 -0
  346. data/lib/tkextlib/treectrl/tktreectrl.rb +2523 -0
  347. data/lib/tkextlib/trofs.rb +14 -0
  348. data/lib/tkextlib/trofs/setup.rb +9 -0
  349. data/lib/tkextlib/trofs/trofs.rb +52 -0
  350. data/lib/tkextlib/version.rb +7 -0
  351. data/lib/tkextlib/vu.rb +49 -0
  352. data/lib/tkextlib/vu/bargraph.rb +62 -0
  353. data/lib/tkextlib/vu/charts.rb +54 -0
  354. data/lib/tkextlib/vu/dial.rb +103 -0
  355. data/lib/tkextlib/vu/pie.rb +287 -0
  356. data/lib/tkextlib/vu/setup.rb +9 -0
  357. data/lib/tkextlib/vu/spinbox.rb +23 -0
  358. data/lib/tkextlib/winico.rb +15 -0
  359. data/lib/tkextlib/winico/setup.rb +9 -0
  360. data/lib/tkextlib/winico/winico.rb +225 -0
  361. data/lib/tkfont.rb +5 -0
  362. data/lib/tkmacpkg.rb +5 -0
  363. data/lib/tkmenubar.rb +5 -0
  364. data/lib/tkmngfocus.rb +5 -0
  365. data/lib/tkpalette.rb +5 -0
  366. data/lib/tkscrollbox.rb +5 -0
  367. data/lib/tktext.rb +5 -0
  368. data/lib/tkvirtevent.rb +5 -0
  369. data/lib/tkwinpkg.rb +5 -0
  370. data/old-README.tcltklib.ja +159 -0
  371. data/sample/24hr_clock.rb +287 -0
  372. data/sample/binding_sample.rb +88 -0
  373. data/sample/bindtag_sample.rb +128 -0
  374. data/sample/binstr_usage.rb +46 -0
  375. data/sample/btn_with_frame.rb +21 -0
  376. data/sample/cd_timer.rb +82 -0
  377. data/sample/cmd_res_test.rb +18 -0
  378. data/sample/cmd_resource +5 -0
  379. data/sample/demos-en/ChangeLog +64 -0
  380. data/sample/demos-en/ChangeLog.prev +9 -0
  381. data/sample/demos-en/README +138 -0
  382. data/sample/demos-en/README.1st +18 -0
  383. data/sample/demos-en/README.tkencoding +29 -0
  384. data/sample/demos-en/anilabel.rb +175 -0
  385. data/sample/demos-en/aniwave.rb +119 -0
  386. data/sample/demos-en/arrow.rb +250 -0
  387. data/sample/demos-en/bind.rb +128 -0
  388. data/sample/demos-en/bitmap.rb +76 -0
  389. data/sample/demos-en/browse1 +63 -0
  390. data/sample/demos-en/browse2 +82 -0
  391. data/sample/demos-en/button.rb +85 -0
  392. data/sample/demos-en/check.rb +73 -0
  393. data/sample/demos-en/check2.rb +110 -0
  394. data/sample/demos-en/clrpick.rb +88 -0
  395. data/sample/demos-en/colors.rb +159 -0
  396. data/sample/demos-en/combo.rb +97 -0
  397. data/sample/demos-en/cscroll.rb +137 -0
  398. data/sample/demos-en/ctext.rb +208 -0
  399. data/sample/demos-en/dialog1.rb +39 -0
  400. data/sample/demos-en/dialog2.rb +42 -0
  401. data/sample/demos-en/doc.org/README +7 -0
  402. data/sample/demos-en/doc.org/README.JP +14 -0
  403. data/sample/demos-en/doc.org/README.tk80 +46 -0
  404. data/sample/demos-en/doc.org/license.terms +39 -0
  405. data/sample/demos-en/doc.org/license.terms.tk80 +39 -0
  406. data/sample/demos-en/entry1.rb +59 -0
  407. data/sample/demos-en/entry2.rb +94 -0
  408. data/sample/demos-en/entry3.rb +221 -0
  409. data/sample/demos-en/filebox.rb +103 -0
  410. data/sample/demos-en/floor.rb +1724 -0
  411. data/sample/demos-en/floor2.rb +1723 -0
  412. data/sample/demos-en/form.rb +65 -0
  413. data/sample/demos-en/goldberg.rb +2007 -0
  414. data/sample/demos-en/hello +14 -0
  415. data/sample/demos-en/hscale.rb +76 -0
  416. data/sample/demos-en/icon.rb +106 -0
  417. data/sample/demos-en/image1.rb +66 -0
  418. data/sample/demos-en/image2.rb +108 -0
  419. data/sample/demos-en/image3.rb +126 -0
  420. data/sample/demos-en/items.rb +382 -0
  421. data/sample/demos-en/ixset +333 -0
  422. data/sample/demos-en/ixset2 +367 -0
  423. data/sample/demos-en/knightstour.rb +272 -0
  424. data/sample/demos-en/label.rb +73 -0
  425. data/sample/demos-en/labelframe.rb +96 -0
  426. data/sample/demos-en/mclist.rb +118 -0
  427. data/sample/demos-en/menu.rb +197 -0
  428. data/sample/demos-en/menu84.rb +216 -0
  429. data/sample/demos-en/menubu.rb +238 -0
  430. data/sample/demos-en/msgbox.rb +91 -0
  431. data/sample/demos-en/msgbox2.rb +92 -0
  432. data/sample/demos-en/paned1.rb +48 -0
  433. data/sample/demos-en/paned2.rb +95 -0
  434. data/sample/demos-en/pendulum.rb +241 -0
  435. data/sample/demos-en/plot.rb +125 -0
  436. data/sample/demos-en/puzzle.rb +135 -0
  437. data/sample/demos-en/radio.rb +87 -0
  438. data/sample/demos-en/radio2.rb +110 -0
  439. data/sample/demos-en/radio3.rb +118 -0
  440. data/sample/demos-en/rmt +268 -0
  441. data/sample/demos-en/rolodex +320 -0
  442. data/sample/demos-en/ruler.rb +206 -0
  443. data/sample/demos-en/sayings.rb +107 -0
  444. data/sample/demos-en/search.rb +188 -0
  445. data/sample/demos-en/spin.rb +66 -0
  446. data/sample/demos-en/square +81 -0
  447. data/sample/demos-en/states.rb +81 -0
  448. data/sample/demos-en/style.rb +232 -0
  449. data/sample/demos-en/tcolor +526 -0
  450. data/sample/demos-en/text.rb +129 -0
  451. data/sample/demos-en/textpeer.rb +77 -0
  452. data/sample/demos-en/timer +136 -0
  453. data/sample/demos-en/tkencoding.rb +43 -0
  454. data/sample/demos-en/toolbar.rb +131 -0
  455. data/sample/demos-en/tree.rb +120 -0
  456. data/sample/demos-en/ttkbut.rb +140 -0
  457. data/sample/demos-en/ttkmenu.rb +86 -0
  458. data/sample/demos-en/ttknote.rb +90 -0
  459. data/sample/demos-en/ttkpane.rb +214 -0
  460. data/sample/demos-en/ttkprogress.rb +67 -0
  461. data/sample/demos-en/twind.rb +292 -0
  462. data/sample/demos-en/twind2.rb +385 -0
  463. data/sample/demos-en/unicodeout.rb +115 -0
  464. data/sample/demos-en/vscale.rb +80 -0
  465. data/sample/demos-en/widget +1087 -0
  466. data/sample/demos-jp/README +54 -0
  467. data/sample/demos-jp/README.1st +20 -0
  468. data/sample/demos-jp/anilabel.rb +178 -0
  469. data/sample/demos-jp/aniwave.rb +121 -0
  470. data/sample/demos-jp/arrow.rb +248 -0
  471. data/sample/demos-jp/bind.rb +126 -0
  472. data/sample/demos-jp/bitmap.rb +75 -0
  473. data/sample/demos-jp/browse1 +63 -0
  474. data/sample/demos-jp/browse2 +82 -0
  475. data/sample/demos-jp/button.rb +84 -0
  476. data/sample/demos-jp/check.rb +71 -0
  477. data/sample/demos-jp/check2.rb +111 -0
  478. data/sample/demos-jp/clrpick.rb +85 -0
  479. data/sample/demos-jp/colors.rb +156 -0
  480. data/sample/demos-jp/combo.rb +99 -0
  481. data/sample/demos-jp/cscroll.rb +135 -0
  482. data/sample/demos-jp/ctext.rb +205 -0
  483. data/sample/demos-jp/dialog1.rb +40 -0
  484. data/sample/demos-jp/dialog2.rb +44 -0
  485. data/sample/demos-jp/doc.org/README +7 -0
  486. data/sample/demos-jp/doc.org/README.JP +14 -0
  487. data/sample/demos-jp/doc.org/README.tk80 +46 -0
  488. data/sample/demos-jp/doc.org/license.terms +39 -0
  489. data/sample/demos-jp/doc.org/license.terms.tk80 +39 -0
  490. data/sample/demos-jp/entry1.rb +61 -0
  491. data/sample/demos-jp/entry2.rb +92 -0
  492. data/sample/demos-jp/entry3.rb +226 -0
  493. data/sample/demos-jp/filebox.rb +103 -0
  494. data/sample/demos-jp/floor.rb +1722 -0
  495. data/sample/demos-jp/floor2.rb +1720 -0
  496. data/sample/demos-jp/form.rb +67 -0
  497. data/sample/demos-jp/goldberg.rb +2012 -0
  498. data/sample/demos-jp/hello +10 -0
  499. data/sample/demos-jp/hscale.rb +79 -0
  500. data/sample/demos-jp/icon.rb +104 -0
  501. data/sample/demos-jp/image1.rb +65 -0
  502. data/sample/demos-jp/image2.rb +107 -0
  503. data/sample/demos-jp/image3.rb +128 -0
  504. data/sample/demos-jp/items.rb +380 -0
  505. data/sample/demos-jp/ixset +333 -0
  506. data/sample/demos-jp/ixset2 +369 -0
  507. data/sample/demos-jp/knightstour.rb +274 -0
  508. data/sample/demos-jp/label.rb +70 -0
  509. data/sample/demos-jp/labelframe.rb +103 -0
  510. data/sample/demos-jp/mclist.rb +122 -0
  511. data/sample/demos-jp/menu.rb +202 -0
  512. data/sample/demos-jp/menu84.rb +214 -0
  513. data/sample/demos-jp/menu8x.rb +234 -0
  514. data/sample/demos-jp/menubu.rb +239 -0
  515. data/sample/demos-jp/msgbox.rb +90 -0
  516. data/sample/demos-jp/msgbox2.rb +91 -0
  517. data/sample/demos-jp/paned1.rb +53 -0
  518. data/sample/demos-jp/paned2.rb +101 -0
  519. data/sample/demos-jp/pendulum.rb +243 -0
  520. data/sample/demos-jp/plot.rb +127 -0
  521. data/sample/demos-jp/puzzle.rb +132 -0
  522. data/sample/demos-jp/radio.rb +85 -0
  523. data/sample/demos-jp/radio2.rb +113 -0
  524. data/sample/demos-jp/radio3.rb +120 -0
  525. data/sample/demos-jp/rmt +268 -0
  526. data/sample/demos-jp/rolodex +320 -0
  527. data/sample/demos-jp/rolodex-j +300 -0
  528. data/sample/demos-jp/ruler.rb +204 -0
  529. data/sample/demos-jp/sayings.rb +104 -0
  530. data/sample/demos-jp/search.rb +185 -0
  531. data/sample/demos-jp/spin.rb +72 -0
  532. data/sample/demos-jp/square +81 -0
  533. data/sample/demos-jp/states.rb +75 -0
  534. data/sample/demos-jp/style.rb +271 -0
  535. data/sample/demos-jp/tcolor +534 -0
  536. data/sample/demos-jp/text.rb +121 -0
  537. data/sample/demos-jp/textpeer.rb +83 -0
  538. data/sample/demos-jp/timer +136 -0
  539. data/sample/demos-jp/toolbar.rb +137 -0
  540. data/sample/demos-jp/tree.rb +121 -0
  541. data/sample/demos-jp/ttkbut.rb +146 -0
  542. data/sample/demos-jp/ttkmenu.rb +92 -0
  543. data/sample/demos-jp/ttknote.rb +98 -0
  544. data/sample/demos-jp/ttkpane.rb +217 -0
  545. data/sample/demos-jp/ttkprogress.rb +72 -0
  546. data/sample/demos-jp/twind.rb +293 -0
  547. data/sample/demos-jp/twind2.rb +385 -0
  548. data/sample/demos-jp/unicodeout.rb +120 -0
  549. data/sample/demos-jp/vscale.rb +81 -0
  550. data/sample/demos-jp/widget +1122 -0
  551. data/sample/editable_listbox.rb +149 -0
  552. data/sample/encstr_usage.rb +31 -0
  553. data/sample/figmemo_sample.rb +457 -0
  554. data/sample/images/earth.gif +0 -0
  555. data/sample/images/earthris.gif +0 -0
  556. data/sample/images/face.xbm +173 -0
  557. data/sample/images/flagdown.xbm +27 -0
  558. data/sample/images/flagup.xbm +27 -0
  559. data/sample/images/gray25.xbm +6 -0
  560. data/sample/images/grey.25 +6 -0
  561. data/sample/images/grey.5 +6 -0
  562. data/sample/images/letters.xbm +27 -0
  563. data/sample/images/noletter.xbm +27 -0
  564. data/sample/images/pattern.xbm +6 -0
  565. data/sample/images/tcllogo.gif +0 -0
  566. data/sample/images/teapot.ppm +31 -0
  567. data/sample/irbtk.rb +31 -0
  568. data/sample/irbtkw.rbw +156 -0
  569. data/sample/iso2022-kr.txt +2 -0
  570. data/sample/menubar1.rb +52 -0
  571. data/sample/menubar2.rb +57 -0
  572. data/sample/menubar3.rb +73 -0
  573. data/sample/msgs_rb/README +3 -0
  574. data/sample/msgs_rb/cs.msg +84 -0
  575. data/sample/msgs_rb/de.msg +88 -0
  576. data/sample/msgs_rb/el.msg +98 -0
  577. data/sample/msgs_rb/en.msg +83 -0
  578. data/sample/msgs_rb/en_gb.msg +7 -0
  579. data/sample/msgs_rb/eo.msg +87 -0
  580. data/sample/msgs_rb/es.msg +84 -0
  581. data/sample/msgs_rb/fr.msg +84 -0
  582. data/sample/msgs_rb/it.msg +84 -0
  583. data/sample/msgs_rb/ja.msg +13 -0
  584. data/sample/msgs_rb/nl.msg +123 -0
  585. data/sample/msgs_rb/pl.msg +87 -0
  586. data/sample/msgs_rb/ru.msg +87 -0
  587. data/sample/msgs_rb2/README +5 -0
  588. data/sample/msgs_rb2/de.msg +88 -0
  589. data/sample/msgs_rb2/ja.msg +85 -0
  590. data/sample/msgs_tk/README +4 -0
  591. data/sample/msgs_tk/cs.msg +84 -0
  592. data/sample/msgs_tk/de.msg +88 -0
  593. data/sample/msgs_tk/el.msg +103 -0
  594. data/sample/msgs_tk/en.msg +83 -0
  595. data/sample/msgs_tk/en_gb.msg +7 -0
  596. data/sample/msgs_tk/eo.msg +87 -0
  597. data/sample/msgs_tk/es.msg +84 -0
  598. data/sample/msgs_tk/fr.msg +84 -0
  599. data/sample/msgs_tk/it.msg +84 -0
  600. data/sample/msgs_tk/ja.msg +13 -0
  601. data/sample/msgs_tk/license.terms +39 -0
  602. data/sample/msgs_tk/nl.msg +123 -0
  603. data/sample/msgs_tk/pl.msg +87 -0
  604. data/sample/msgs_tk/ru.msg +87 -0
  605. data/sample/multi-ip_sample.rb +104 -0
  606. data/sample/multi-ip_sample2.rb +30 -0
  607. data/sample/optobj_sample.rb +68 -0
  608. data/sample/propagate.rb +31 -0
  609. data/sample/remote-ip_sample.rb +34 -0
  610. data/sample/remote-ip_sample2.rb +57 -0
  611. data/sample/resource.en +13 -0
  612. data/sample/resource.ja +13 -0
  613. data/sample/safe-tk.rb +132 -0
  614. data/sample/scrollframe.rb +250 -0
  615. data/sample/tcltklib/batsu.gif +0 -0
  616. data/sample/tcltklib/lines0.tcl +42 -0
  617. data/sample/tcltklib/lines1.rb +51 -0
  618. data/sample/tcltklib/lines2.rb +55 -0
  619. data/sample/tcltklib/lines3.rb +55 -0
  620. data/sample/tcltklib/lines4.rb +55 -0
  621. data/sample/tcltklib/maru.gif +0 -0
  622. data/sample/tcltklib/safeTk.rb +23 -0
  623. data/sample/tcltklib/sample0.rb +40 -0
  624. data/sample/tcltklib/sample1.rb +635 -0
  625. data/sample/tcltklib/sample2.rb +452 -0
  626. data/sample/tkalignbox.rb +236 -0
  627. data/sample/tkballoonhelp.rb +221 -0
  628. data/sample/tkbiff.rb +156 -0
  629. data/sample/tkbrowse.rb +80 -0
  630. data/sample/tkcombobox.rb +498 -0
  631. data/sample/tkdialog.rb +62 -0
  632. data/sample/tkextlib/ICONS/Orig_LICENSE.txt +61 -0
  633. data/sample/tkextlib/ICONS/tkIcons +195 -0
  634. data/sample/tkextlib/ICONS/tkIcons-sample.kde +658 -0
  635. data/sample/tkextlib/ICONS/tkIcons.kde +195 -0
  636. data/sample/tkextlib/ICONS/viewIcons.rb +330 -0
  637. data/sample/tkextlib/blt/barchart5.rb +102 -0
  638. data/sample/tkextlib/blt/calendar.rb +118 -0
  639. data/sample/tkextlib/blt/graph6.rb +2223 -0
  640. data/sample/tkextlib/blt/graph7.rb +41 -0
  641. data/sample/tkextlib/blt/graph7a.rb +64 -0
  642. data/sample/tkextlib/blt/graph7b.rb +42 -0
  643. data/sample/tkextlib/blt/graph7c.rb +46 -0
  644. data/sample/tkextlib/blt/images/buckskin.gif +0 -0
  645. data/sample/tkextlib/blt/images/chalk.gif +0 -0
  646. data/sample/tkextlib/blt/images/qv100.t.gif +0 -0
  647. data/sample/tkextlib/blt/images/rain.gif +0 -0
  648. data/sample/tkextlib/blt/images/sample.gif +0 -0
  649. data/sample/tkextlib/blt/pareto.rb +91 -0
  650. data/sample/tkextlib/blt/plot1.rb +10 -0
  651. data/sample/tkextlib/blt/plot1b.rb +11 -0
  652. data/sample/tkextlib/blt/readme.txt +2 -0
  653. data/sample/tkextlib/blt/scripts/stipples.rb +157 -0
  654. data/sample/tkextlib/blt/winop1.rb +41 -0
  655. data/sample/tkextlib/blt/winop2.rb +29 -0
  656. data/sample/tkextlib/bwidget/Orig_LICENSE.txt +53 -0
  657. data/sample/tkextlib/bwidget/basic.rb +199 -0
  658. data/sample/tkextlib/bwidget/bwidget.xbm +46 -0
  659. data/sample/tkextlib/bwidget/demo.rb +244 -0
  660. data/sample/tkextlib/bwidget/dnd.rb +47 -0
  661. data/sample/tkextlib/bwidget/manager.rb +151 -0
  662. data/sample/tkextlib/bwidget/select.rb +83 -0
  663. data/sample/tkextlib/bwidget/tmpldlg.rb +222 -0
  664. data/sample/tkextlib/bwidget/tree.rb +290 -0
  665. data/sample/tkextlib/bwidget/x1.xbm +2258 -0
  666. data/sample/tkextlib/iwidgets/catalog_demo/Orig_LICENSE.txt +42 -0
  667. data/sample/tkextlib/iwidgets/catalog_demo/images/box.xbm +14 -0
  668. data/sample/tkextlib/iwidgets/catalog_demo/images/clear.gif +0 -0
  669. data/sample/tkextlib/iwidgets/catalog_demo/images/close.gif +0 -0
  670. data/sample/tkextlib/iwidgets/catalog_demo/images/copy.gif +0 -0
  671. data/sample/tkextlib/iwidgets/catalog_demo/images/cut.gif +0 -0
  672. data/sample/tkextlib/iwidgets/catalog_demo/images/exit.gif +0 -0
  673. data/sample/tkextlib/iwidgets/catalog_demo/images/find.gif +0 -0
  674. data/sample/tkextlib/iwidgets/catalog_demo/images/help.gif +0 -0
  675. data/sample/tkextlib/iwidgets/catalog_demo/images/line.xbm +14 -0
  676. data/sample/tkextlib/iwidgets/catalog_demo/images/mag.gif +0 -0
  677. data/sample/tkextlib/iwidgets/catalog_demo/images/new.gif +0 -0
  678. data/sample/tkextlib/iwidgets/catalog_demo/images/open.gif +0 -0
  679. data/sample/tkextlib/iwidgets/catalog_demo/images/oval.xbm +14 -0
  680. data/sample/tkextlib/iwidgets/catalog_demo/images/paste.gif +0 -0
  681. data/sample/tkextlib/iwidgets/catalog_demo/images/points.xbm +14 -0
  682. data/sample/tkextlib/iwidgets/catalog_demo/images/poly.gif +0 -0
  683. data/sample/tkextlib/iwidgets/catalog_demo/images/print.gif +0 -0
  684. data/sample/tkextlib/iwidgets/catalog_demo/images/ruler.gif +0 -0
  685. data/sample/tkextlib/iwidgets/catalog_demo/images/save.gif +0 -0
  686. data/sample/tkextlib/iwidgets/catalog_demo/images/select.gif +0 -0
  687. data/sample/tkextlib/iwidgets/catalog_demo/images/text.xbm +14 -0
  688. data/sample/tkextlib/iwidgets/sample/buttonbox.rb +23 -0
  689. data/sample/tkextlib/iwidgets/sample/calendar.rb +11 -0
  690. data/sample/tkextlib/iwidgets/sample/canvasprintbox.rb +9 -0
  691. data/sample/tkextlib/iwidgets/sample/canvasprintdialog.rb +9 -0
  692. data/sample/tkextlib/iwidgets/sample/checkbox.rb +13 -0
  693. data/sample/tkextlib/iwidgets/sample/combobox.rb +33 -0
  694. data/sample/tkextlib/iwidgets/sample/dateentry.rb +8 -0
  695. data/sample/tkextlib/iwidgets/sample/datefield.rb +9 -0
  696. data/sample/tkextlib/iwidgets/sample/dialog.rb +21 -0
  697. data/sample/tkextlib/iwidgets/sample/dialogshell.rb +15 -0
  698. data/sample/tkextlib/iwidgets/sample/disjointlistbox.rb +17 -0
  699. data/sample/tkextlib/iwidgets/sample/entryfield-1.rb +40 -0
  700. data/sample/tkextlib/iwidgets/sample/entryfield-2.rb +45 -0
  701. data/sample/tkextlib/iwidgets/sample/entryfield-3.rb +41 -0
  702. data/sample/tkextlib/iwidgets/sample/extbutton.rb +21 -0
  703. data/sample/tkextlib/iwidgets/sample/extfileselectionbox.rb +9 -0
  704. data/sample/tkextlib/iwidgets/sample/extfileselectiondialog.rb +30 -0
  705. data/sample/tkextlib/iwidgets/sample/feedback.rb +11 -0
  706. data/sample/tkextlib/iwidgets/sample/fileselectionbox.rb +9 -0
  707. data/sample/tkextlib/iwidgets/sample/fileselectiondialog.rb +29 -0
  708. data/sample/tkextlib/iwidgets/sample/finddialog.rb +16 -0
  709. data/sample/tkextlib/iwidgets/sample/hierarchy.rb +26 -0
  710. data/sample/tkextlib/iwidgets/sample/hyperhelp.rb +15 -0
  711. data/sample/tkextlib/iwidgets/sample/labeledframe.rb +15 -0
  712. data/sample/tkextlib/iwidgets/sample/labeledwidget.rb +14 -0
  713. data/sample/tkextlib/iwidgets/sample/mainwindow.rb +65 -0
  714. data/sample/tkextlib/iwidgets/sample/menubar.rb +125 -0
  715. data/sample/tkextlib/iwidgets/sample/menubar2.rb +45 -0
  716. data/sample/tkextlib/iwidgets/sample/messagebox1.rb +20 -0
  717. data/sample/tkextlib/iwidgets/sample/messagebox2.rb +20 -0
  718. data/sample/tkextlib/iwidgets/sample/messagedialog.rb +45 -0
  719. data/sample/tkextlib/iwidgets/sample/notebook.rb +31 -0
  720. data/sample/tkextlib/iwidgets/sample/notebook2.rb +31 -0
  721. data/sample/tkextlib/iwidgets/sample/optionmenu.rb +15 -0
  722. data/sample/tkextlib/iwidgets/sample/panedwindow.rb +23 -0
  723. data/sample/tkextlib/iwidgets/sample/panedwindow2.rb +23 -0
  724. data/sample/tkextlib/iwidgets/sample/promptdialog.rb +18 -0
  725. data/sample/tkextlib/iwidgets/sample/pushbutton.rb +10 -0
  726. data/sample/tkextlib/iwidgets/sample/radiobox.rb +14 -0
  727. data/sample/tkextlib/iwidgets/sample/scrolledcanvas.rb +14 -0
  728. data/sample/tkextlib/iwidgets/sample/scrolledframe.rb +19 -0
  729. data/sample/tkextlib/iwidgets/sample/scrolledhtml.rb +16 -0
  730. data/sample/tkextlib/iwidgets/sample/scrolledlistbox.rb +23 -0
  731. data/sample/tkextlib/iwidgets/sample/scrolledtext.rb +12 -0
  732. data/sample/tkextlib/iwidgets/sample/selectionbox.rb +20 -0
  733. data/sample/tkextlib/iwidgets/sample/selectiondialog.rb +13 -0
  734. data/sample/tkextlib/iwidgets/sample/shell.rb +18 -0
  735. data/sample/tkextlib/iwidgets/sample/spindate.rb +8 -0
  736. data/sample/tkextlib/iwidgets/sample/spinint.rb +11 -0
  737. data/sample/tkextlib/iwidgets/sample/spinner.rb +34 -0
  738. data/sample/tkextlib/iwidgets/sample/spintime.rb +8 -0
  739. data/sample/tkextlib/iwidgets/sample/tabnotebook.rb +27 -0
  740. data/sample/tkextlib/iwidgets/sample/tabnotebook2.rb +31 -0
  741. data/sample/tkextlib/iwidgets/sample/tabset.rb +35 -0
  742. data/sample/tkextlib/iwidgets/sample/timeentry.rb +8 -0
  743. data/sample/tkextlib/iwidgets/sample/timefield.rb +9 -0
  744. data/sample/tkextlib/iwidgets/sample/toolbar.rb +153 -0
  745. data/sample/tkextlib/iwidgets/sample/watch.rb +19 -0
  746. data/sample/tkextlib/tcllib/Orig_LICENSE.txt +46 -0
  747. data/sample/tkextlib/tcllib/datefield.rb +30 -0
  748. data/sample/tkextlib/tcllib/plotdemos1.rb +159 -0
  749. data/sample/tkextlib/tcllib/plotdemos2.rb +72 -0
  750. data/sample/tkextlib/tcllib/plotdemos3.rb +84 -0
  751. data/sample/tkextlib/tcllib/xyplot.rb +18 -0
  752. data/sample/tkextlib/tile/Orig_LICENSE.txt +30 -0
  753. data/sample/tkextlib/tile/demo.rb +984 -0
  754. data/sample/tkextlib/tile/iconlib.tcl +110 -0
  755. data/sample/tkextlib/tile/readme.txt +2 -0
  756. data/sample/tkextlib/tile/repeater.tcl +117 -0
  757. data/sample/tkextlib/tile/themes/blue/blue.tcl +149 -0
  758. data/sample/tkextlib/tile/themes/blue/blue/arrowdown-h.gif +0 -0
  759. data/sample/tkextlib/tile/themes/blue/blue/arrowdown-p.gif +0 -0
  760. data/sample/tkextlib/tile/themes/blue/blue/arrowdown.gif +0 -0
  761. data/sample/tkextlib/tile/themes/blue/blue/arrowleft-h.gif +0 -0
  762. data/sample/tkextlib/tile/themes/blue/blue/arrowleft-p.gif +0 -0
  763. data/sample/tkextlib/tile/themes/blue/blue/arrowleft.gif +0 -0
  764. data/sample/tkextlib/tile/themes/blue/blue/arrowright-h.gif +0 -0
  765. data/sample/tkextlib/tile/themes/blue/blue/arrowright-p.gif +0 -0
  766. data/sample/tkextlib/tile/themes/blue/blue/arrowright.gif +0 -0
  767. data/sample/tkextlib/tile/themes/blue/blue/arrowup-h.gif +0 -0
  768. data/sample/tkextlib/tile/themes/blue/blue/arrowup-p.gif +0 -0
  769. data/sample/tkextlib/tile/themes/blue/blue/arrowup.gif +0 -0
  770. data/sample/tkextlib/tile/themes/blue/blue/button-h.gif +0 -0
  771. data/sample/tkextlib/tile/themes/blue/blue/button-n.gif +0 -0
  772. data/sample/tkextlib/tile/themes/blue/blue/button-n.xcf +0 -0
  773. data/sample/tkextlib/tile/themes/blue/blue/button-p.gif +0 -0
  774. data/sample/tkextlib/tile/themes/blue/blue/check-hc.gif +0 -0
  775. data/sample/tkextlib/tile/themes/blue/blue/check-hu.gif +0 -0
  776. data/sample/tkextlib/tile/themes/blue/blue/check-nc.gif +0 -0
  777. data/sample/tkextlib/tile/themes/blue/blue/check-nu.gif +0 -0
  778. data/sample/tkextlib/tile/themes/blue/blue/radio-hc.gif +0 -0
  779. data/sample/tkextlib/tile/themes/blue/blue/radio-hu.gif +0 -0
  780. data/sample/tkextlib/tile/themes/blue/blue/radio-nc.gif +0 -0
  781. data/sample/tkextlib/tile/themes/blue/blue/radio-nu.gif +0 -0
  782. data/sample/tkextlib/tile/themes/blue/blue/sb-thumb-p.gif +0 -0
  783. data/sample/tkextlib/tile/themes/blue/blue/sb-thumb.gif +0 -0
  784. data/sample/tkextlib/tile/themes/blue/blue/sb-vthumb-p.gif +0 -0
  785. data/sample/tkextlib/tile/themes/blue/blue/sb-vthumb.gif +0 -0
  786. data/sample/tkextlib/tile/themes/blue/blue/slider-p.gif +0 -0
  787. data/sample/tkextlib/tile/themes/blue/blue/slider.gif +0 -0
  788. data/sample/tkextlib/tile/themes/blue/blue/vslider-p.gif +0 -0
  789. data/sample/tkextlib/tile/themes/blue/blue/vslider.gif +0 -0
  790. data/sample/tkextlib/tile/themes/blue/pkgIndex.tcl +6 -0
  791. data/sample/tkextlib/tile/themes/keramik/keramik.tcl +194 -0
  792. data/sample/tkextlib/tile/themes/keramik/keramik/arrowdown-n.gif +0 -0
  793. data/sample/tkextlib/tile/themes/keramik/keramik/arrowdown-p.gif +0 -0
  794. data/sample/tkextlib/tile/themes/keramik/keramik/arrowleft-n.gif +0 -0
  795. data/sample/tkextlib/tile/themes/keramik/keramik/arrowleft-p.gif +0 -0
  796. data/sample/tkextlib/tile/themes/keramik/keramik/arrowright-n.gif +0 -0
  797. data/sample/tkextlib/tile/themes/keramik/keramik/arrowright-p.gif +0 -0
  798. data/sample/tkextlib/tile/themes/keramik/keramik/arrowup-n.gif +0 -0
  799. data/sample/tkextlib/tile/themes/keramik/keramik/arrowup-p.gif +0 -0
  800. data/sample/tkextlib/tile/themes/keramik/keramik/button-d.gif +0 -0
  801. data/sample/tkextlib/tile/themes/keramik/keramik/button-h.gif +0 -0
  802. data/sample/tkextlib/tile/themes/keramik/keramik/button-n.gif +0 -0
  803. data/sample/tkextlib/tile/themes/keramik/keramik/button-p.gif +0 -0
  804. data/sample/tkextlib/tile/themes/keramik/keramik/button-s.gif +0 -0
  805. data/sample/tkextlib/tile/themes/keramik/keramik/check-c.gif +0 -0
  806. data/sample/tkextlib/tile/themes/keramik/keramik/check-u.gif +0 -0
  807. data/sample/tkextlib/tile/themes/keramik/keramik/hsb-n.gif +0 -0
  808. data/sample/tkextlib/tile/themes/keramik/keramik/hsb-p.gif +0 -0
  809. data/sample/tkextlib/tile/themes/keramik/keramik/hslider-n.gif +0 -0
  810. data/sample/tkextlib/tile/themes/keramik/keramik/mbut-a.gif +0 -0
  811. data/sample/tkextlib/tile/themes/keramik/keramik/mbut-arrow-n.gif +0 -0
  812. data/sample/tkextlib/tile/themes/keramik/keramik/mbut-d.gif +0 -0
  813. data/sample/tkextlib/tile/themes/keramik/keramik/mbut-n.gif +0 -0
  814. data/sample/tkextlib/tile/themes/keramik/keramik/radio-c.gif +0 -0
  815. data/sample/tkextlib/tile/themes/keramik/keramik/radio-u.gif +0 -0
  816. data/sample/tkextlib/tile/themes/keramik/keramik/tab-n.gif +0 -0
  817. data/sample/tkextlib/tile/themes/keramik/keramik/tab-p.gif +0 -0
  818. data/sample/tkextlib/tile/themes/keramik/keramik/tbar-a.gif +0 -0
  819. data/sample/tkextlib/tile/themes/keramik/keramik/tbar-n.gif +0 -0
  820. data/sample/tkextlib/tile/themes/keramik/keramik/tbar-p.gif +0 -0
  821. data/sample/tkextlib/tile/themes/keramik/keramik/vsb-n.gif +0 -0
  822. data/sample/tkextlib/tile/themes/keramik/keramik/vsb-p.gif +0 -0
  823. data/sample/tkextlib/tile/themes/keramik/keramik/vslider-n.gif +0 -0
  824. data/sample/tkextlib/tile/themes/keramik/pkgIndex.tcl +15 -0
  825. data/sample/tkextlib/tile/themes/kroc.rb +227 -0
  826. data/sample/tkextlib/tile/themes/kroc/kroc.tcl +163 -0
  827. data/sample/tkextlib/tile/themes/kroc/kroc/button-h.gif +0 -0
  828. data/sample/tkextlib/tile/themes/kroc/kroc/button-n.gif +0 -0
  829. data/sample/tkextlib/tile/themes/kroc/kroc/button-p.gif +0 -0
  830. data/sample/tkextlib/tile/themes/kroc/kroc/check-hc.gif +0 -0
  831. data/sample/tkextlib/tile/themes/kroc/kroc/check-hu.gif +0 -0
  832. data/sample/tkextlib/tile/themes/kroc/kroc/check-nc.gif +0 -0
  833. data/sample/tkextlib/tile/themes/kroc/kroc/check-nu.gif +0 -0
  834. data/sample/tkextlib/tile/themes/kroc/kroc/radio-hc.gif +0 -0
  835. data/sample/tkextlib/tile/themes/kroc/kroc/radio-hu.gif +0 -0
  836. data/sample/tkextlib/tile/themes/kroc/kroc/radio-nc.gif +0 -0
  837. data/sample/tkextlib/tile/themes/kroc/kroc/radio-nu.gif +0 -0
  838. data/sample/tkextlib/tile/themes/kroc/pkgIndex.tcl +15 -0
  839. data/sample/tkextlib/tile/themes/plastik/pkgIndex.tcl +16 -0
  840. data/sample/tkextlib/tile/themes/plastik/plastik.tcl +125 -0
  841. data/sample/tkextlib/tile/themes/plastik/plastik/arrowdown-n.gif +0 -0
  842. data/sample/tkextlib/tile/themes/plastik/plastik/arrowdown-p.gif +0 -0
  843. data/sample/tkextlib/tile/themes/plastik/plastik/arrowleft-n.gif +0 -0
  844. data/sample/tkextlib/tile/themes/plastik/plastik/arrowleft-p.gif +0 -0
  845. data/sample/tkextlib/tile/themes/plastik/plastik/arrowright-n.gif +0 -0
  846. data/sample/tkextlib/tile/themes/plastik/plastik/arrowright-p.gif +0 -0
  847. data/sample/tkextlib/tile/themes/plastik/plastik/arrowup-n.gif +0 -0
  848. data/sample/tkextlib/tile/themes/plastik/plastik/arrowup-p.gif +0 -0
  849. data/sample/tkextlib/tile/themes/plastik/plastik/button-h.gif +0 -0
  850. data/sample/tkextlib/tile/themes/plastik/plastik/button-n.gif +0 -0
  851. data/sample/tkextlib/tile/themes/plastik/plastik/button-p.gif +0 -0
  852. data/sample/tkextlib/tile/themes/plastik/plastik/check-hc.gif +0 -0
  853. data/sample/tkextlib/tile/themes/plastik/plastik/check-hu.gif +0 -0
  854. data/sample/tkextlib/tile/themes/plastik/plastik/check-nc.gif +0 -0
  855. data/sample/tkextlib/tile/themes/plastik/plastik/check-nu.gif +0 -0
  856. data/sample/tkextlib/tile/themes/plastik/plastik/check-pc.gif +0 -0
  857. data/sample/tkextlib/tile/themes/plastik/plastik/hsb-n.gif +0 -0
  858. data/sample/tkextlib/tile/themes/plastik/plastik/hslider-n.gif +0 -0
  859. data/sample/tkextlib/tile/themes/plastik/plastik/radio-hc.gif +0 -0
  860. data/sample/tkextlib/tile/themes/plastik/plastik/radio-hu.gif +0 -0
  861. data/sample/tkextlib/tile/themes/plastik/plastik/radio-nc.gif +0 -0
  862. data/sample/tkextlib/tile/themes/plastik/plastik/radio-nu.gif +0 -0
  863. data/sample/tkextlib/tile/themes/plastik/plastik/radio-pc.gif +0 -0
  864. data/sample/tkextlib/tile/themes/plastik/plastik/vsb-n.gif +0 -0
  865. data/sample/tkextlib/tile/themes/plastik/plastik/vslider-n.gif +0 -0
  866. data/sample/tkextlib/tile/toolbutton.tcl +152 -0
  867. data/sample/tkextlib/tkHTML/Orig_COPYRIGHT.txt +12 -0
  868. data/sample/tkextlib/tkHTML/README +12 -0
  869. data/sample/tkextlib/tkHTML/hv.rb +314 -0
  870. data/sample/tkextlib/tkHTML/page1/image1 +0 -0
  871. data/sample/tkextlib/tkHTML/page1/image10 +0 -0
  872. data/sample/tkextlib/tkHTML/page1/image11 +0 -0
  873. data/sample/tkextlib/tkHTML/page1/image12 +0 -0
  874. data/sample/tkextlib/tkHTML/page1/image13 +0 -0
  875. data/sample/tkextlib/tkHTML/page1/image14 +0 -0
  876. data/sample/tkextlib/tkHTML/page1/image2 +0 -0
  877. data/sample/tkextlib/tkHTML/page1/image3 +0 -0
  878. data/sample/tkextlib/tkHTML/page1/image4 +0 -0
  879. data/sample/tkextlib/tkHTML/page1/image5 +0 -0
  880. data/sample/tkextlib/tkHTML/page1/image6 +0 -0
  881. data/sample/tkextlib/tkHTML/page1/image7 +0 -0
  882. data/sample/tkextlib/tkHTML/page1/image8 +0 -0
  883. data/sample/tkextlib/tkHTML/page1/image9 +0 -0
  884. data/sample/tkextlib/tkHTML/page1/index.html +115 -0
  885. data/sample/tkextlib/tkHTML/page2/image1 +0 -0
  886. data/sample/tkextlib/tkHTML/page2/image10 +0 -0
  887. data/sample/tkextlib/tkHTML/page2/image11 +0 -0
  888. data/sample/tkextlib/tkHTML/page2/image12 +0 -0
  889. data/sample/tkextlib/tkHTML/page2/image13 +0 -0
  890. data/sample/tkextlib/tkHTML/page2/image14 +0 -0
  891. data/sample/tkextlib/tkHTML/page2/image15 +0 -0
  892. data/sample/tkextlib/tkHTML/page2/image16 +0 -0
  893. data/sample/tkextlib/tkHTML/page2/image17 +0 -0
  894. data/sample/tkextlib/tkHTML/page2/image18 +0 -0
  895. data/sample/tkextlib/tkHTML/page2/image19 +0 -0
  896. data/sample/tkextlib/tkHTML/page2/image2 +0 -0
  897. data/sample/tkextlib/tkHTML/page2/image20 +0 -0
  898. data/sample/tkextlib/tkHTML/page2/image21 +0 -0
  899. data/sample/tkextlib/tkHTML/page2/image22 +0 -0
  900. data/sample/tkextlib/tkHTML/page2/image23 +0 -0
  901. data/sample/tkextlib/tkHTML/page2/image24 +0 -0
  902. data/sample/tkextlib/tkHTML/page2/image25 +0 -0
  903. data/sample/tkextlib/tkHTML/page2/image26 +0 -0
  904. data/sample/tkextlib/tkHTML/page2/image27 +0 -0
  905. data/sample/tkextlib/tkHTML/page2/image28 +0 -0
  906. data/sample/tkextlib/tkHTML/page2/image29 +0 -0
  907. data/sample/tkextlib/tkHTML/page2/image3 +0 -0
  908. data/sample/tkextlib/tkHTML/page2/image30 +0 -0
  909. data/sample/tkextlib/tkHTML/page2/image31 +0 -0
  910. data/sample/tkextlib/tkHTML/page2/image32 +0 -0
  911. data/sample/tkextlib/tkHTML/page2/image33 +0 -0
  912. data/sample/tkextlib/tkHTML/page2/image34 +0 -0
  913. data/sample/tkextlib/tkHTML/page2/image35 +0 -0
  914. data/sample/tkextlib/tkHTML/page2/image36 +0 -0
  915. data/sample/tkextlib/tkHTML/page2/image37 +0 -0
  916. data/sample/tkextlib/tkHTML/page2/image38 +0 -0
  917. data/sample/tkextlib/tkHTML/page2/image39 +0 -0
  918. data/sample/tkextlib/tkHTML/page2/image4 +0 -0
  919. data/sample/tkextlib/tkHTML/page2/image5 +0 -0
  920. data/sample/tkextlib/tkHTML/page2/image6 +0 -0
  921. data/sample/tkextlib/tkHTML/page2/image7 +0 -0
  922. data/sample/tkextlib/tkHTML/page2/image8 +0 -0
  923. data/sample/tkextlib/tkHTML/page2/image9 +0 -0
  924. data/sample/tkextlib/tkHTML/page2/index.html +433 -0
  925. data/sample/tkextlib/tkHTML/page3/image1 +0 -0
  926. data/sample/tkextlib/tkHTML/page3/image10 +0 -0
  927. data/sample/tkextlib/tkHTML/page3/image11 +0 -0
  928. data/sample/tkextlib/tkHTML/page3/image12 +0 -0
  929. data/sample/tkextlib/tkHTML/page3/image13 +0 -0
  930. data/sample/tkextlib/tkHTML/page3/image14 +0 -0
  931. data/sample/tkextlib/tkHTML/page3/image2 +0 -0
  932. data/sample/tkextlib/tkHTML/page3/image3 +0 -0
  933. data/sample/tkextlib/tkHTML/page3/image4 +0 -0
  934. data/sample/tkextlib/tkHTML/page3/image5 +0 -0
  935. data/sample/tkextlib/tkHTML/page3/image6 +0 -0
  936. data/sample/tkextlib/tkHTML/page3/image7 +0 -0
  937. data/sample/tkextlib/tkHTML/page3/image8 +0 -0
  938. data/sample/tkextlib/tkHTML/page3/image9 +0 -0
  939. data/sample/tkextlib/tkHTML/page3/index.html +2787 -0
  940. data/sample/tkextlib/tkHTML/page4/image1 +0 -0
  941. data/sample/tkextlib/tkHTML/page4/image2 +0 -0
  942. data/sample/tkextlib/tkHTML/page4/image3 +0 -0
  943. data/sample/tkextlib/tkHTML/page4/image4 +0 -0
  944. data/sample/tkextlib/tkHTML/page4/image5 +0 -0
  945. data/sample/tkextlib/tkHTML/page4/image6 +0 -0
  946. data/sample/tkextlib/tkHTML/page4/image7 +0 -0
  947. data/sample/tkextlib/tkHTML/page4/image8 +0 -0
  948. data/sample/tkextlib/tkHTML/page4/image9 +0 -0
  949. data/sample/tkextlib/tkHTML/page4/index.html +768 -0
  950. data/sample/tkextlib/tkHTML/ss.rb +437 -0
  951. data/sample/tkextlib/tkimg/demo.rb +1479 -0
  952. data/sample/tkextlib/tkimg/license_terms_of_Img_extension +41 -0
  953. data/sample/tkextlib/tkimg/readme.txt +3 -0
  954. data/sample/tkextlib/tktable/Orig_LICENSE.txt +52 -0
  955. data/sample/tkextlib/tktable/basic.rb +61 -0
  956. data/sample/tkextlib/tktable/buttons.rb +77 -0
  957. data/sample/tkextlib/tktable/command.rb +90 -0
  958. data/sample/tkextlib/tktable/debug.rb +102 -0
  959. data/sample/tkextlib/tktable/dynarows.rb +100 -0
  960. data/sample/tkextlib/tktable/maxsize.rb +68 -0
  961. data/sample/tkextlib/tktable/spreadsheet.rb +138 -0
  962. data/sample/tkextlib/tktable/tcllogo.gif +0 -0
  963. data/sample/tkextlib/tktable/valid.rb +89 -0
  964. data/sample/tkextlib/treectrl/bitmaps.rb +77 -0
  965. data/sample/tkextlib/treectrl/demo.rb +1306 -0
  966. data/sample/tkextlib/treectrl/explorer.rb +431 -0
  967. data/sample/tkextlib/treectrl/help.rb +405 -0
  968. data/sample/tkextlib/treectrl/imovie.rb +131 -0
  969. data/sample/tkextlib/treectrl/layout.rb +160 -0
  970. data/sample/tkextlib/treectrl/mailwasher.rb +270 -0
  971. data/sample/tkextlib/treectrl/outlook-folders.rb +125 -0
  972. data/sample/tkextlib/treectrl/outlook-newgroup.rb +449 -0
  973. data/sample/tkextlib/treectrl/pics/big-dll.gif +0 -0
  974. data/sample/tkextlib/treectrl/pics/big-exe.gif +0 -0
  975. data/sample/tkextlib/treectrl/pics/big-file.gif +0 -0
  976. data/sample/tkextlib/treectrl/pics/big-folder.gif +0 -0
  977. data/sample/tkextlib/treectrl/pics/big-txt.gif +0 -0
  978. data/sample/tkextlib/treectrl/pics/checked.gif +0 -0
  979. data/sample/tkextlib/treectrl/pics/file.gif +0 -0
  980. data/sample/tkextlib/treectrl/pics/folder-closed.gif +0 -0
  981. data/sample/tkextlib/treectrl/pics/folder-open.gif +0 -0
  982. data/sample/tkextlib/treectrl/pics/help-book-closed.gif +0 -0
  983. data/sample/tkextlib/treectrl/pics/help-book-open.gif +0 -0
  984. data/sample/tkextlib/treectrl/pics/help-page.gif +0 -0
  985. data/sample/tkextlib/treectrl/pics/imovie-01.gif +0 -0
  986. data/sample/tkextlib/treectrl/pics/imovie-02.gif +0 -0
  987. data/sample/tkextlib/treectrl/pics/imovie-03.gif +0 -0
  988. data/sample/tkextlib/treectrl/pics/imovie-04.gif +0 -0
  989. data/sample/tkextlib/treectrl/pics/imovie-05.gif +0 -0
  990. data/sample/tkextlib/treectrl/pics/imovie-06.gif +0 -0
  991. data/sample/tkextlib/treectrl/pics/imovie-07.gif +0 -0
  992. data/sample/tkextlib/treectrl/pics/internet-check-off.gif +0 -0
  993. data/sample/tkextlib/treectrl/pics/internet-check-on.gif +0 -0
  994. data/sample/tkextlib/treectrl/pics/internet-print.gif +0 -0
  995. data/sample/tkextlib/treectrl/pics/internet-radio-off.gif +0 -0
  996. data/sample/tkextlib/treectrl/pics/internet-radio-on.gif +0 -0
  997. data/sample/tkextlib/treectrl/pics/internet-search.gif +0 -0
  998. data/sample/tkextlib/treectrl/pics/internet-security.gif +0 -0
  999. data/sample/tkextlib/treectrl/pics/mac-collapse.gif +0 -0
  1000. data/sample/tkextlib/treectrl/pics/mac-expand.gif +0 -0
  1001. data/sample/tkextlib/treectrl/pics/outlook-arrow.gif +0 -0
  1002. data/sample/tkextlib/treectrl/pics/outlook-clip.gif +0 -0
  1003. data/sample/tkextlib/treectrl/pics/outlook-deleted.gif +0 -0
  1004. data/sample/tkextlib/treectrl/pics/outlook-draft.gif +0 -0
  1005. data/sample/tkextlib/treectrl/pics/outlook-folder.gif +0 -0
  1006. data/sample/tkextlib/treectrl/pics/outlook-group.gif +0 -0
  1007. data/sample/tkextlib/treectrl/pics/outlook-inbox.gif +0 -0
  1008. data/sample/tkextlib/treectrl/pics/outlook-local.gif +0 -0
  1009. data/sample/tkextlib/treectrl/pics/outlook-main.gif +0 -0
  1010. data/sample/tkextlib/treectrl/pics/outlook-outbox.gif +0 -0
  1011. data/sample/tkextlib/treectrl/pics/outlook-read-2.gif +0 -0
  1012. data/sample/tkextlib/treectrl/pics/outlook-read.gif +0 -0
  1013. data/sample/tkextlib/treectrl/pics/outlook-sent.gif +0 -0
  1014. data/sample/tkextlib/treectrl/pics/outlook-server.gif +0 -0
  1015. data/sample/tkextlib/treectrl/pics/outlook-unread.gif +0 -0
  1016. data/sample/tkextlib/treectrl/pics/outlook-watch.gif +0 -0
  1017. data/sample/tkextlib/treectrl/pics/sky.gif +0 -0
  1018. data/sample/tkextlib/treectrl/pics/small-dll.gif +0 -0
  1019. data/sample/tkextlib/treectrl/pics/small-exe.gif +0 -0
  1020. data/sample/tkextlib/treectrl/pics/small-file.gif +0 -0
  1021. data/sample/tkextlib/treectrl/pics/small-folder.gif +0 -0
  1022. data/sample/tkextlib/treectrl/pics/small-txt.gif +0 -0
  1023. data/sample/tkextlib/treectrl/pics/unchecked.gif +0 -0
  1024. data/sample/tkextlib/treectrl/random.rb +509 -0
  1025. data/sample/tkextlib/treectrl/readme.txt +2 -0
  1026. data/sample/tkextlib/treectrl/www-options.rb +304 -0
  1027. data/sample/tkextlib/vu/Orig_LICENSE.txt +51 -0
  1028. data/sample/tkextlib/vu/README.txt +50 -0
  1029. data/sample/tkextlib/vu/canvItems.rb +91 -0
  1030. data/sample/tkextlib/vu/canvSticker.rb +83 -0
  1031. data/sample/tkextlib/vu/canvSticker2.rb +102 -0
  1032. data/sample/tkextlib/vu/dial_demo.rb +114 -0
  1033. data/sample/tkextlib/vu/m128_000.xbm +174 -0
  1034. data/sample/tkextlib/vu/oscilloscope.rb +69 -0
  1035. data/sample/tkextlib/vu/pie.rb +57 -0
  1036. data/sample/tkextlib/vu/vu_demo.rb +68 -0
  1037. data/sample/tkfrom.rb +133 -0
  1038. data/sample/tkhello.rb +11 -0
  1039. data/sample/tkline.rb +48 -0
  1040. data/sample/tkmenubutton.rb +136 -0
  1041. data/sample/tkmsgcat-load_rb.rb +103 -0
  1042. data/sample/tkmsgcat-load_rb2.rb +103 -0
  1043. data/sample/tkmsgcat-load_tk.rb +119 -0
  1044. data/sample/tkmulticolumnlist.rb +744 -0
  1045. data/sample/tkmultilistbox.rb +655 -0
  1046. data/sample/tkmultilistframe.rb +941 -0
  1047. data/sample/tkoptdb-safeTk.rb +74 -0
  1048. data/sample/tkoptdb.rb +107 -0
  1049. data/sample/tkrttimer.rb +78 -0
  1050. data/sample/tksleep_sample.rb +30 -0
  1051. data/sample/tktextframe.rb +282 -0
  1052. data/sample/tktextio.rb +1061 -0
  1053. data/sample/tktimer.rb +51 -0
  1054. data/sample/tktimer2.rb +48 -0
  1055. data/sample/tktimer3.rb +60 -0
  1056. data/sample/tktree.rb +104 -0
  1057. data/sample/tktree.tcl +305 -0
  1058. data/sample/ttk_wrapper.rb +155 -0
  1059. data/tk.gemspec +24 -0
  1060. metadata +1144 -0
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: false
2
+ #
3
+ # TkTrans support (win32 only)
4
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
5
+ #
6
+ require 'tk'
7
+
8
+ # call setup script for general 'tkextlib' libraries
9
+ require 'tkextlib/setup.rb'
10
+
11
+ # call setup script
12
+ require 'tkextlib/tktrans/setup.rb'
13
+
14
+ # load library
15
+ require 'tkextlib/tktrans/tktrans'
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: false
2
+ #
3
+ # setup.rb -- setup script before calling TkPackage.require()
4
+ #
5
+ # If you need some setup operations (for example, add a library path
6
+ # to the library search path) before using Tcl/Tk library packages
7
+ # wrapped by Ruby scripts in this directory, please write the setup
8
+ # operations in this file.
9
+ #
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: false
2
+ #
3
+ # TkTrans support (win32 only)
4
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
5
+ #
6
+ require 'tk'
7
+
8
+ # call setup script for general 'tkextlib' libraries
9
+ require 'tkextlib/setup.rb'
10
+
11
+ # call setup script
12
+ require 'tkextlib/tktrans/setup.rb'
13
+
14
+ TkPackage.require('tktrans') rescue Tk.load_tcllibrary('tktrans')
15
+
16
+ module Tk
17
+ module TkTrans
18
+ PACKAGE_NAME = 'tktrans'.freeze
19
+ def self.package_name
20
+ PACKAGE_NAME
21
+ end
22
+
23
+ def self.package_version
24
+ begin
25
+ TkPackage.require('tktrans')
26
+ rescue
27
+ ''
28
+ end
29
+ end
30
+ end
31
+ end
32
+
33
+ class TkWindow
34
+ def tktrans_set_image(img)
35
+ tk_send('tktrans::setwidget', @path, img)
36
+ self
37
+ end
38
+ def tktrans_get_image()
39
+ tk_send('tktrans::setwidget', @path)
40
+ end
41
+ end
42
+
43
+ class Tk::Root
44
+ undef tktrans_set_image, tktrans_get_image
45
+
46
+ def tktrans_set_image(img)
47
+ tk_send('tktrans::settoplevel', @path, img)
48
+ self
49
+ end
50
+ def tktrans_get_image()
51
+ tk_send('tktrans::settoplevel', @path)
52
+ end
53
+ end
54
+
55
+ class Tk::Toplevel
56
+ undef tktrans_set_image, tktrans_get_image
57
+
58
+ def tktrans_set_image(img)
59
+ tk_send('tktrans::settoplevel', @path, img)
60
+ self
61
+ end
62
+ def tktrans_get_image()
63
+ tk_send('tktrans::settoplevel', @path)
64
+ end
65
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: false
2
+ #
3
+ # TkTreeCtrl support
4
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
5
+ #
6
+
7
+ # call setup script for general 'tkextlib' libraries
8
+ require 'tkextlib/setup.rb'
9
+
10
+ # call setup script
11
+ require 'tkextlib/treectrl/setup.rb'
12
+
13
+ # load library
14
+ require 'tkextlib/treectrl/tktreectrl'
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: false
2
+ #
3
+ # setup.rb -- setup script before calling TkPackage.require()
4
+ #
5
+ # If you need some setup operations (for example, add a library path
6
+ # to the library search path) before using Tcl/Tk library packages
7
+ # wrapped by Ruby scripts in this directory, please write the setup
8
+ # operations in this file.
9
+ #
@@ -0,0 +1,2523 @@
1
+ # frozen_string_literal: false
2
+ #
3
+ # tkextlib/treectrl/tktreectrl.rb
4
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
5
+ #
6
+
7
+ require 'tk'
8
+
9
+ # call setup script for general 'tkextlib' libraries
10
+ require 'tkextlib/setup.rb'
11
+
12
+ # call setup script
13
+ require 'tkextlib/treectrl/setup.rb'
14
+
15
+ # TkPackage.require('treectrl', '1.0')
16
+ # TkPackage.require('treectrl', '1.1')
17
+ TkPackage.require('treectrl')
18
+
19
+ module Tk
20
+ class TreeCtrl < TkWindow
21
+ BindTag_FileList = TkBindTag.new_by_name('TreeCtrlFileList')
22
+
23
+ PACKAGE_NAME = 'treectrl'.freeze
24
+ def self.package_name
25
+ PACKAGE_NAME
26
+ end
27
+
28
+ def self.package_version
29
+ begin
30
+ TkPackage.require('treectrl')
31
+ rescue
32
+ ''
33
+ end
34
+ end
35
+
36
+ HasColumnCreateCommand =
37
+ (TkPackage.vcompare(self.package_version, '1.1') >= 0)
38
+
39
+ # dummy ::
40
+ # pkgIndex.tcl of TreeCtrl-1.0 doesn't support auto_load for
41
+ # 'loupe' command (probably it is bug, I think).
42
+ # So, calling a 'treectrl' command for loading the dll with
43
+ # the auto_load facility.
44
+ begin
45
+ tk_call('treectrl')
46
+ rescue
47
+ end
48
+ def self.loupe(img, x, y, w, h, zoom)
49
+ # NOTE: platform == 'unix' only
50
+
51
+ # img => TkPhotoImage
52
+ # x, y => screen coords
53
+ # w, h => magnifier width and height
54
+ # zoom => zooming rate
55
+ Tk.tk_call_without_enc('loupe', img, x, y, w, h, zoom)
56
+ end
57
+
58
+ def self.text_layout(font, text, keys={})
59
+ TkComm.list(Tk.tk_call_without_enc('textlayout', font, text, keys))
60
+ end
61
+
62
+ def self.image_tint(img, color, alpha)
63
+ Tk.tk_call_without_enc('imagetint', img, color, alpha)
64
+ end
65
+
66
+ class NotifyEvent < TkUtil::CallbackSubst
67
+ end
68
+
69
+ module ConfigMethod
70
+ end
71
+ end
72
+ TreeCtrl_Widget = TreeCtrl
73
+ end
74
+
75
+ ##############################################
76
+
77
+ class Tk::TreeCtrl::NotifyEvent
78
+ # [ <'%' subst-key char>, <proc type char>, <instance var (accessor) name>]
79
+ KEY_TBL = [
80
+ [ ?c, ?n, :item_num ],
81
+ [ ?d, ?s, :detail ],
82
+ [ ?D, ?l, :items ],
83
+ [ ?e, ?e, :event ],
84
+ [ ?I, ?n, :id ],
85
+ [ ?l, ?n, :lower_bound ],
86
+ [ ?p, ?n, :active_id ],
87
+ [ ?P, ?e, :pattern ],
88
+ [ ?S, ?l, :sel_items ],
89
+ [ ?T, ?w, :widget ],
90
+ [ ?u, ?n, :upper_bound ],
91
+ [ ?W, ?o, :object ],
92
+ [ ??, ?x, :parm_info ],
93
+ nil
94
+ ]
95
+
96
+ # [ <proc type char>, <proc/method to convert tcl-str to ruby-obj>]
97
+ PROC_TBL = [
98
+ [ ?n, TkComm.method(:num_or_str) ],
99
+ [ ?s, TkComm.method(:string) ],
100
+ [ ?l, TkComm.method(:list) ],
101
+ [ ?w, TkComm.method(:window) ],
102
+
103
+ [ ?e, proc{|val|
104
+ case val
105
+ when /^<<[^<>]+>>$/
106
+ TkVirtualEvent.getobj(val[1..-2])
107
+ when /^<[^<>]+>$/
108
+ val[1..-2]
109
+ else
110
+ val
111
+ end
112
+ }
113
+ ],
114
+
115
+ [ ?o, proc{|val| TkComm.tk_tcl2ruby(val)} ],
116
+
117
+ [ ?x, proc{|val|
118
+ begin
119
+ inf = {}
120
+ Hash[*(TkComm.list(val))].each{|k, v|
121
+ if keyinfo = KEY_TBL.assoc(k[0])
122
+ if cmd = PROC_TBL.assoc(keyinfo[1])
123
+ begin
124
+ new_v = cmd.call(v)
125
+ v = new_v
126
+ rescue
127
+ end
128
+ end
129
+ end
130
+ inf[k] = v
131
+ }
132
+ inf
133
+ rescue
134
+ val
135
+ end
136
+ } ],
137
+
138
+ nil
139
+ ]
140
+
141
+ =begin
142
+ # for Ruby m17n :: ?x --> String --> char-code ( getbyte(0) )
143
+ KEY_TBL.map!{|inf|
144
+ if inf.kind_of?(Array)
145
+ inf[0] = inf[0].getbyte(0) if inf[0].kind_of?(String)
146
+ inf[1] = inf[1].getbyte(0) if inf[1].kind_of?(String)
147
+ end
148
+ inf
149
+ }
150
+
151
+ PROC_TBL.map!{|inf|
152
+ if inf.kind_of?(Array)
153
+ inf[0] = inf[0].getbyte(0) if inf[0].kind_of?(String)
154
+ end
155
+ inf
156
+ }
157
+ =end
158
+
159
+ # setup tables to be used by scan_args, _get_subst_key, _get_all_subst_keys
160
+ #
161
+ # _get_subst_key() and _get_all_subst_keys() generates key-string
162
+ # which describe how to convert callback arguments to ruby objects.
163
+ # When binding parameters are given, use _get_subst_key().
164
+ # But when no parameters are given, use _get_all_subst_keys() to
165
+ # create a Event class object as a callback parameter.
166
+ #
167
+ # scan_args() is used when doing callback. It convert arguments
168
+ # ( which are Tcl strings ) to ruby objects based on the key string
169
+ # that is generated by _get_subst_key() or _get_all_subst_keys().
170
+ #
171
+ _setup_subst_table(KEY_TBL, PROC_TBL);
172
+ end
173
+
174
+ ##############################################
175
+
176
+ module Tk::TreeCtrl::ConfigMethod
177
+ include TkItemConfigMethod
178
+
179
+ def treectrl_tagid(key, obj)
180
+ if key.kind_of?(Array)
181
+ key = key.join(' ')
182
+ else
183
+ key = key.to_s
184
+ end
185
+
186
+ if (obj.kind_of?(Tk::TreeCtrl::Column) ||
187
+ obj.kind_of?(Tk::TreeCtrl::Element) ||
188
+ obj.kind_of?(Tk::TreeCtrl::Item) ||
189
+ obj.kind_of?(Tk::TreeCtrl::Style))
190
+ obj = obj.id
191
+ end
192
+
193
+ case key
194
+ when 'column'
195
+ obj
196
+
197
+ when 'debug'
198
+ None
199
+
200
+ when 'dragimage'
201
+ None
202
+
203
+ when 'element'
204
+ obj
205
+
206
+ when 'item element'
207
+ obj
208
+
209
+ when 'marquee'
210
+ None
211
+
212
+ when 'notify'
213
+ obj
214
+
215
+ when 'style'
216
+ obj
217
+
218
+ else
219
+ obj
220
+ end
221
+ end
222
+
223
+ def tagid(mixed_id)
224
+ if mixed_id == 'debug'
225
+ ['debug', None]
226
+ elsif mixed_id == 'dragimage'
227
+ ['dragimage', None]
228
+ elsif mixed_id == 'marquee'
229
+ ['marquee', None]
230
+ elsif mixed_id.kind_of?(Array)
231
+ [mixed_id[0], treectrl_tagid(*mixed_id)]
232
+ else
233
+ tagid(mixed_id.split(':'))
234
+ end
235
+ end
236
+
237
+ def __item_cget_cmd(mixed_id)
238
+ if mixed_id[0] == 'column' && mixed_id[1] == 'drag'
239
+ return [self.path, 'column', 'dragcget']
240
+ end
241
+
242
+ if mixed_id[1].kind_of?(Array)
243
+ id = mixed_id[1]
244
+ else
245
+ id = [mixed_id[1]]
246
+ end
247
+
248
+ if mixed_id[0].kind_of?(Array)
249
+ ([self.path].concat(mixed_id[0]) << 'cget').concat(id)
250
+ else
251
+ [self.path, mixed_id[0], 'cget'].concat(id)
252
+ end
253
+ end
254
+ private :__item_cget_cmd
255
+
256
+ def __item_config_cmd(mixed_id)
257
+ if mixed_id[0] == 'column' && mixed_id[1] == 'drag'
258
+ return [self.path, 'column', 'dragconfigure']
259
+ end
260
+
261
+ if mixed_id[1].kind_of?(Array)
262
+ id = mixed_id[1]
263
+ else
264
+ id = [mixed_id[1]]
265
+ end
266
+
267
+ if mixed_id[0].kind_of?(Array)
268
+ ([self.path].concat(mixed_id[0]) << 'configure').concat(id)
269
+ else
270
+ [self.path, mixed_id[0], 'configure'].concat(id)
271
+ end
272
+ end
273
+ private :__item_config_cmd
274
+
275
+ def __item_pathname(id)
276
+ if id.kind_of?(Array)
277
+ key = id[0]
278
+ if key.kind_of?(Array)
279
+ key = key.join(' ')
280
+ end
281
+
282
+ tag = id[1]
283
+ if tag.kind_of?(Array)
284
+ tag = tag.join(' ')
285
+ end
286
+
287
+ id = [key, tag].join(':')
288
+ end
289
+ [self.path, id].join(';')
290
+ end
291
+ private :__item_pathname
292
+
293
+ def __item_configinfo_struct(id)
294
+ if id.kind_of?(Array) && id[0].to_s == 'notify'
295
+ {:key=>0, :alias=>nil, :db_name=>nil, :db_class=>nil,
296
+ :default_value=>nil, :current_value=>1}
297
+ else
298
+ {:key=>0, :alias=>1, :db_name=>1, :db_class=>2,
299
+ :default_value=>3, :current_value=>4}
300
+ end
301
+ end
302
+ private :__item_configinfo_struct
303
+
304
+
305
+ def __item_font_optkeys(id)
306
+ if id.kind_of?(Array) && (id[0] == 'element' ||
307
+ (id[0].kind_of?(Array) && id[0][1] == 'element'))
308
+ []
309
+ else
310
+ ['font']
311
+ end
312
+ end
313
+ private :__item_font_optkeys
314
+
315
+ def __item_numstrval_optkeys(id)
316
+ if id == 'debug'
317
+ ['displaydelay']
318
+ else
319
+ super(id)
320
+ end
321
+ end
322
+ private :__item_numstrval_optkeys
323
+
324
+ def __item_boolval_optkeys(id)
325
+ if id == 'debug'
326
+ ['data', 'display', 'enable', 'span', 'textlayout']
327
+ elsif id == 'dragimage'
328
+ ['visible']
329
+ elsif id == 'marquee'
330
+ ['visible']
331
+ elsif id.kind_of?(Array)
332
+ case id[0]
333
+ when 'item'
334
+ ['visible', 'wrap', 'open', 'returnid', 'visible']
335
+ when 'column'
336
+ if id[1] == 'drag'
337
+ ['enable']
338
+ else
339
+ ['button', 'expand', 'resize', 'squeeze', 'sunken',
340
+ 'visible', 'widthhack']
341
+ end
342
+ when 'element'
343
+ ['draw', 'filled', 'showfocus', 'clip', 'destroy']
344
+ when 'notify'
345
+ ['active']
346
+ when 'style'
347
+ ['detach', 'indent', 'visible']
348
+ else
349
+ if id[0].kind_of?(Array) && id[0][1] == 'element'
350
+ ['filled', 'showfocus']
351
+ else
352
+ super(id)
353
+ end
354
+ end
355
+ else
356
+ super(id)
357
+ end
358
+ end
359
+ private :__item_boolval_optkeys
360
+
361
+ def __item_strval_optkeys(id)
362
+ if id == 'debug'
363
+ ['erasecolor']
364
+ elsif id.kind_of?(Array)
365
+ case id[0]
366
+ when 'column'
367
+ if id[1] == 'drag'
368
+ ['indicatorcolor']
369
+ else
370
+ super(id) << 'textcolor'
371
+ end
372
+ when 'element'
373
+ super(id) << 'fill' << 'outline' << 'format'
374
+ else
375
+ super(id)
376
+ end
377
+ else
378
+ super(id)
379
+ end
380
+ end
381
+ private :__item_strval_optkeys
382
+
383
+ def __item_listval_optkeys(id)
384
+ if id.kind_of?(Array)
385
+ case id[0]
386
+ when 'column'
387
+ ['itembackground']
388
+ when 'element'
389
+ ['relief']
390
+ when 'style'
391
+ ['union']
392
+ else
393
+ if id[0].kind_of?(Array) && id[0][1] == 'element'
394
+ ['relief']
395
+ else
396
+ []
397
+ end
398
+ end
399
+ else
400
+ []
401
+ end
402
+ end
403
+ private :__item_listval_optkeys
404
+
405
+ def __item_val2ruby_optkeys(id)
406
+ if id.kind_of?(Array)
407
+ case id[0]
408
+ when 'item'
409
+ { 'button' => proc{|id,val| (val == 'auto')? val: TkComm.bool(val)} }
410
+ else
411
+ []
412
+ end
413
+ else
414
+ []
415
+ end
416
+ end
417
+ private :__item_val2ruby_optkeys
418
+
419
+ def __item_keyonly_optkeys(id) # { def_key=>(undef_key|nil), ... }
420
+ {
421
+ 'notreally'=>nil,
422
+ 'increasing'=>'decreasing',
423
+ 'decreasing'=>'increasing',
424
+ 'ascii'=>nil,
425
+ 'dictionary'=>nil,
426
+ 'integer'=>nil,
427
+ 'real'=>nil
428
+ }
429
+ end
430
+ private :__item_keyonly_optkeys
431
+
432
+ def column_cget_tkstring(tagOrId, option)
433
+ itemcget_tkstring(['column', tagOrId], option)
434
+ end
435
+ def column_cget(tagOrId, option)
436
+ itemcget(['column', tagOrId], option)
437
+ end
438
+ def column_cget_strict(tagOrId, option)
439
+ itemcget_strict(['column', tagOrId], option)
440
+ end
441
+ def column_configure(tagOrId, slot, value=None)
442
+ itemconfigure(['column', tagOrId], slot, value)
443
+ end
444
+ def column_configinfo(tagOrId, slot=nil)
445
+ itemconfiginfo(['column', tagOrId], slot)
446
+ end
447
+ def current_column_configinfo(tagOrId, slot=nil)
448
+ current_itemconfiginfo(['column', tagOrId], slot)
449
+ end
450
+
451
+ def column_dragcget_tkstring(option)
452
+ itemcget_tkstring(['column', 'drag'], option)
453
+ end
454
+ def column_dragcget(option)
455
+ itemcget(['column', 'drag'], option)
456
+ end
457
+ def column_dragcget_strict(option)
458
+ itemcget_strict(['column', 'drag'], option)
459
+ end
460
+ def column_dragconfigure(slot, value=None)
461
+ itemconfigure(['column', 'drag'], slot, value)
462
+ end
463
+ def column_dragconfiginfo(slot=nil)
464
+ itemconfiginfo(['column', 'drag'], slot)
465
+ end
466
+ def current_column_dragconfiginfo(slot=nil)
467
+ current_itemconfiginfo(['column', 'drag'], slot)
468
+ end
469
+
470
+ def debug_cget_tkstring(option)
471
+ itemcget_tkstring('debug', option)
472
+ end
473
+ def debug_cget(option)
474
+ itemcget('debug', option)
475
+ end
476
+ def debug_cget_strict(option)
477
+ itemcget_strict('debug', option)
478
+ end
479
+ def debug_configure(slot, value=None)
480
+ itemconfigure('debug', slot, value)
481
+ end
482
+ def debug_configinfo(slot=nil)
483
+ itemconfiginfo('debug', slot)
484
+ end
485
+ def current_debug_configinfo(slot=nil)
486
+ current_itemconfiginfo('debug', slot)
487
+ end
488
+
489
+ def dragimage_cget_tkstring(option)
490
+ itemcget_tkstring('dragimage', option)
491
+ end
492
+ def dragimage_cget(option)
493
+ itemcget('dragimage', option)
494
+ end
495
+ def dragimage_cget_strict(option)
496
+ itemcget_strict('dragimage', option)
497
+ end
498
+ def dragimage_configure(slot, value=None)
499
+ itemconfigure('dragimage', slot, value)
500
+ end
501
+ def dragimage_configinfo(slot=nil)
502
+ itemconfiginfo('dragimage', slot)
503
+ end
504
+ def current_dragimage_configinfo(slot=nil)
505
+ current_itemconfiginfo('dragimage', slot)
506
+ end
507
+
508
+ def element_cget_tkstring(tagOrId, option)
509
+ itemcget_tkstring(['element', tagOrId], option)
510
+ end
511
+ def element_cget(tagOrId, option)
512
+ itemcget(['element', tagOrId], option)
513
+ end
514
+ def element_cget_strict(tagOrId, option)
515
+ itemcget_strict(['element', tagOrId], option)
516
+ end
517
+ def element_configure(tagOrId, slot, value=None)
518
+ itemconfigure(['element', tagOrId], slot, value)
519
+ end
520
+ def element_configinfo(tagOrId, slot=nil)
521
+ itemconfiginfo(['element', tagOrId], slot)
522
+ end
523
+ def current_element_configinfo(tagOrId, slot=nil)
524
+ current_itemconfiginfo(['element', tagOrId], slot)
525
+ end
526
+
527
+ def item_cget_tkstring(tagOrId, option)
528
+ itemcget_tkstring(['item', tagOrId], option)
529
+ end
530
+ def item_cget(tagOrId, option)
531
+ itemcget(['item', tagOrId], option)
532
+ end
533
+ def item_cget_strict(tagOrId, option)
534
+ itemcget_strict(['item', tagOrId], option)
535
+ end
536
+ def item_configure(tagOrId, slot, value=None)
537
+ itemconfigure(['item', tagOrId], slot, value)
538
+ end
539
+ def item_configinfo(tagOrId, slot=nil)
540
+ itemconfiginfo(['item', tagOrId], slot)
541
+ end
542
+ def current_item_configinfo(tagOrId, slot=nil)
543
+ current_itemconfiginfo(['item', tagOrId], slot)
544
+ end
545
+
546
+ def item_element_cget_tkstring(item, column, elem, option)
547
+ itemcget_tkstring([['item', 'element'], [item, column, elem]], option)
548
+ end
549
+ def item_element_cget(item, column, elem, option)
550
+ itemcget([['item', 'element'], [item, column, elem]], option)
551
+ end
552
+ def item_element_cget_strict(item, column, elem, option)
553
+ itemcget_strict([['item', 'element'], [item, column, elem]], option)
554
+ end
555
+ def item_element_configure(item, column, elem, slot, value=None)
556
+ itemconfigure([['item', 'element'], [item, column, elem]], slot, value)
557
+ end
558
+ def item_element_configinfo(item, column, elem, slot=nil)
559
+ itemconfiginfo([['item', 'element'], [item, column, elem]], slot)
560
+ end
561
+ def current_item_element_configinfo(item, column, elem, slot=nil)
562
+ current_itemconfiginfo([['item', 'element'], [item, column, elem]], slot)
563
+ end
564
+
565
+ def marquee_cget_tkstring(option)
566
+ itemcget_tkstring('marquee', option)
567
+ end
568
+ def marquee_cget(option)
569
+ itemcget('marquee', option)
570
+ end
571
+ def marquee_cget_strict(option)
572
+ itemcget_strict('marquee', option)
573
+ end
574
+ def marquee_configure(slot, value=None)
575
+ itemconfigure('marquee', slot, value)
576
+ end
577
+ def marquee_configinfo(slot=nil)
578
+ itemconfiginfo('marquee', slot)
579
+ end
580
+ def current_marquee_configinfo(slot=nil)
581
+ current_itemconfiginfo('marquee', slot)
582
+ end
583
+
584
+ def notify_cget_tkstring(win, pattern, option)
585
+ pattern = "<#{pattern}>"
586
+ # "notify" doesn't have cget subcommand.
587
+ tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(['notify', [win, pattern]])) << "-#{option}")), false, true)[-1]
588
+ end
589
+ def notify_cget(win, pattern, option)
590
+ pattern = "<#{pattern}>"
591
+ # "notify" doesn't have cget subcommand.
592
+ current_itemconfiginfo(['notify', [win, pattern]])[option.to_s]
593
+ end
594
+ def notify_cget_strict(win, pattern, option)
595
+ pattern = "<#{pattern}>"
596
+ # "notify" doesn't have cget subcommand.
597
+ info = current_itemconfiginfo(['notify', [win, pattern]])
598
+ option = option.to_s
599
+ unless info.has_key?(option)
600
+ fail RuntimeError, "unknown option \"#{option}\""
601
+ else
602
+ info[option]
603
+ end
604
+ end
605
+ def notify_configure(win, pattern, slot, value=None)
606
+ pattern = "<#{pattern}>"
607
+ itemconfigure(['notify', [win, pattern]], slot, value)
608
+ end
609
+ def notify_configinfo(win, pattern, slot=nil)
610
+ pattern = "<#{pattern}>"
611
+ itemconfiginfo(['notify', [win, pattern]], slot)
612
+ end
613
+ def current_notify_configinfo(tagOrId, slot=nil)
614
+ pattern = "<#{pattern}>"
615
+ current_itemconfiginfo(['notify', [win, pattern]], slot)
616
+ end
617
+
618
+ def style_cget_tkstring(tagOrId, option)
619
+ itemcget_tkstring(['style', tagOrId], option)
620
+ end
621
+ def style_cget(tagOrId, option)
622
+ itemcget(['style', tagOrId], option)
623
+ end
624
+ def style_cget_strict(tagOrId, option)
625
+ itemcget_strict(['style', tagOrId], option)
626
+ end
627
+ def style_configure(tagOrId, slot, value=None)
628
+ itemconfigure(['style', tagOrId], slot, value)
629
+ end
630
+ def style_configinfo(tagOrId, slot=nil)
631
+ itemconfiginfo(['style', tagOrId], slot)
632
+ end
633
+ def current_style_configinfo(tagOrId, slot=nil)
634
+ current_itemconfiginfo(['style', tagOrId], slot)
635
+ end
636
+
637
+ private :itemcget_tkstring, :itemcget, :itemcget_strict
638
+ private :itemconfigure, :itemconfiginfo, :current_itemconfiginfo
639
+ end
640
+
641
+ ##############################################
642
+
643
+ class Tk::TreeCtrl
644
+ include Tk::TreeCtrl::ConfigMethod
645
+ include Scrollable
646
+
647
+ TkCommandNames = ['treectrl'.freeze].freeze
648
+ WidgetClassName = 'TreeCtrl'.freeze
649
+ WidgetClassNames[WidgetClassName] ||= self
650
+
651
+ #########################
652
+
653
+ def __destroy_hook__
654
+ Tk::TreeCtrl::Column::TreeCtrlColumnID_TBL.mutex.synchronize{
655
+ Tk::TreeCtrl::Column::TreeCtrlColumnID_TBL.delete(@path)
656
+ }
657
+ Tk::TreeCtrl::Element::TreeCtrlElementID_TBL.mutex.synchronize{
658
+ Tk::TreeCtrl::Element::TreeCtrlElementID_TBL.delete(@path)
659
+ }
660
+ Tk::TreeCtrl::Item::TreeCtrlItemID_TBL.mutex.synchronize{
661
+ Tk::TreeCtrl::Item::TreeCtrlItemID_TBL.delete(@path)
662
+ }
663
+ Tk::TreeCtrl::Style::TreeCtrlStyleID_TBL.mutex.synchronize{
664
+ Tk::TreeCtrl::Style::TreeCtrlStyleID_TBL.delete(@path)
665
+ }
666
+ end
667
+
668
+ #########################
669
+
670
+ def __strval_optkeys
671
+ super() + [
672
+ 'buttoncolor', 'columnprefix', 'itemprefix', 'linecolor'
673
+ ]
674
+ end
675
+ private :__strval_optkeys
676
+
677
+ def __boolval_optkeys
678
+ [
679
+ 'itemwidthequal', 'usetheme',
680
+ 'showbuttons', 'showheader', 'showlines', 'showroot',
681
+ 'showrootbutton', 'showrootlines', 'showrootchildbuttons'
682
+ ]
683
+ end
684
+ private :__boolval_optkeys
685
+
686
+ def __listval_optkeys
687
+ [ 'defaultstyle' ]
688
+ end
689
+ private :__listval_optkeys
690
+
691
+ #########################
692
+
693
+ def install_bind(cmd, *args)
694
+ install_bind_for_event_class(Tk::TreeCtrl::NotifyEvent, cmd, *args)
695
+ end
696
+
697
+ #########################
698
+
699
+ def create_self(keys)
700
+ if keys and keys != None
701
+ tk_call_without_enc(self.class::TkCommandNames[0], @path,
702
+ *hash_kv(keys, true))
703
+ else
704
+ tk_call_without_enc(self.class::TkCommandNames[0], @path)
705
+ end
706
+ end
707
+ private :create_self
708
+
709
+ #########################
710
+
711
+ def activate(desc)
712
+ tk_send('activate', desc)
713
+ self
714
+ end
715
+
716
+ def canvasx(x)
717
+ number(tk_send('canvasx', x))
718
+ end
719
+
720
+ def canvasy(y)
721
+ number(tk_send('canvasy', y))
722
+ end
723
+
724
+ def collapse(*dsc)
725
+ tk_send_without_enc('collapse', *(dsc.map!{|d| _get_eval_string(d, true)}))
726
+ self
727
+ end
728
+
729
+ def collapse_recurse(*dsc)
730
+ tk_send_without_enc('collapse', '-recurse',
731
+ *(dsc.map!{|d| _get_eval_string(d, true)}))
732
+ self
733
+ end
734
+
735
+ def column_bbox(idx)
736
+ list(tk_send('column', 'bbox', idx))
737
+ end
738
+
739
+ def column_compare(column1, op, column2)
740
+ bool(tk_send('column', 'compare', column1, op, column2))
741
+ end
742
+
743
+ def column_count
744
+ num_or_str(tk_send('column', 'count'))
745
+ end
746
+
747
+ def column_create(keys=nil)
748
+ if keys && keys.kind_of?(Hash)
749
+ num_or_str(tk_send('column', 'create', *hash_kv(keys)))
750
+ else
751
+ num_or_str(tk_send('column', 'create'))
752
+ end
753
+ end
754
+
755
+ def column_delete(idx)
756
+ Tk::TreeCtrl::Column::TreeCtrlColumnID_TBL.mutex.synchronize{
757
+ if Tk::TreeCtrl::Column::TreeCtrlColumnID_TBL[self.path]
758
+ Tk::TreeCtrl::Column::TreeCtrlColumnID_TBL[self.path].delete(idx)
759
+ end
760
+ }
761
+ tk_send('column', 'delete', idx)
762
+ self
763
+ end
764
+
765
+ def column_index(idx)
766
+ num_or_str(tk_send('column', 'index', idx))
767
+ end
768
+
769
+ def column_id(idx)
770
+ tk_send('column', 'id', idx)
771
+ end
772
+
773
+ def column_list(visible=false)
774
+ if visible
775
+ simplelist(tk_send('column', 'list', '-visible'))
776
+ else
777
+ simplelist(tk_send('column', 'list'))
778
+ end
779
+ end
780
+ def column_visible_list
781
+ column_list(true)
782
+ end
783
+
784
+ def column_move(idx, before)
785
+ tk_send('column', 'move', idx, before)
786
+ self
787
+ end
788
+
789
+ def column_needed_width(idx)
790
+ num_or_str(tk_send('column', 'neededwidth', idx))
791
+ end
792
+ alias column_neededwidth column_needed_width
793
+
794
+ def column_order(column, visible=false)
795
+ if visible
796
+ num_or_str(tk_send('column', 'order', column, '-visible'))
797
+ else
798
+ num_or_str(tk_send('column', 'order', column))
799
+ end
800
+ end
801
+ def column_visible_order(column)
802
+ column_order(column, true)
803
+ end
804
+
805
+ def column_width(idx)
806
+ num_or_str(tk_send('column', 'width', idx))
807
+ end
808
+
809
+ def compare(item1, op, item2)
810
+ bool(tk_send('compare', item1, op, item2))
811
+ end
812
+
813
+ def contentbox()
814
+ list(tk_send('contentbox'))
815
+ end
816
+
817
+ def depth(item=None)
818
+ num_or_str(tk_send_without_enc('depth', _get_eval_string(item, true)))
819
+ end
820
+
821
+ def dragimage_add(item, *args)
822
+ tk_send('dragimage', 'add', item, *args)
823
+ self
824
+ end
825
+
826
+ def dragimage_clear()
827
+ tk_send('dragimage', 'clear')
828
+ self
829
+ end
830
+
831
+ def dragimage_offset(*args) # x, y
832
+ if args.empty?
833
+ list(tk_send('dragimage', 'offset'))
834
+ else
835
+ tk_send('dragimage', 'offset', *args)
836
+ self
837
+ end
838
+ end
839
+
840
+ def dragimage_visible(*args) # mode
841
+ if args..empty?
842
+ bool(tk_send('dragimage', 'visible'))
843
+ else
844
+ tk_send('dragimage', 'visible', *args)
845
+ self
846
+ end
847
+ end
848
+ def dragimage_visible?
849
+ dragimage_visible()
850
+ end
851
+
852
+ def debug_dinfo
853
+ tk_send('debug', 'dinfo')
854
+ self
855
+ end
856
+
857
+ def debug_scroll
858
+ tk_send('debug', 'scroll')
859
+ end
860
+
861
+ def element_create(elem, type, keys=nil)
862
+ if keys && keys.kind_of?(Hash)
863
+ tk_send('element', 'create', elem, type, *hash_kv(keys))
864
+ else
865
+ tk_send('element', 'create', elem, type)
866
+ end
867
+ end
868
+
869
+ def element_delete(*elems)
870
+ Tk::TreeCtrl::Element::TreeCtrlElementID_TBL.mutex.synchronize{
871
+ if Tk::TreeCtrl::Element::TreeCtrlElementID_TBL[self.path]
872
+ elems.each{|elem|
873
+ Tk::TreeCtrl::Element::TreeCtrlElementID_TBL[self.path].delete(elem)
874
+ }
875
+ end
876
+ }
877
+ tk_send('element', 'delete', *elems)
878
+ self
879
+ end
880
+
881
+ def element_names()
882
+ list(tk_send('element', 'names')).collect!{|elem|
883
+ Tk::TreeCtrl::Element.id2obj(self, elem)
884
+ }
885
+ end
886
+
887
+ def _conv_element_perstate_val(opt, val)
888
+ case opt
889
+ when 'background', 'foreground', 'fill', 'outline', 'format'
890
+ val
891
+ when 'draw', 'filled', 'showfocus', 'destroy'
892
+ bool(val)
893
+ else
894
+ tk_tcl2ruby(val)
895
+ end
896
+ end
897
+ private :_conv_element_perstate_val
898
+
899
+ def element_perstate(elem, opt, st_list)
900
+ tk_send('element', 'perstate', elem, "-{opt}", st_list)
901
+ end
902
+
903
+ def element_type(elem)
904
+ tk_send('element', 'type', elem)
905
+ end
906
+
907
+ def element_class(elem)
908
+ Tk::TreeCtrl::Element.type2class(element_type(elem))
909
+ end
910
+
911
+ def expand(*dsc)
912
+ tk_send('expand', *dsc)
913
+ self
914
+ end
915
+
916
+ def expand_recurse(*dsc)
917
+ tk_send('expand', '-recurse', *dsc)
918
+ self
919
+ end
920
+
921
+ def identify(x, y)
922
+ lst = list(tk_send('identify', x, y))
923
+
924
+ if lst[0] == 'item'
925
+ lst[1] = Tk::TreeCtrl::Item.id2obj(self, lst[1])
926
+ size = lst.size
927
+ i = 2
928
+ while i < size
929
+ case lst[i]
930
+ when 'line'
931
+ i += 1
932
+ lst[i] = Tk::TreeCtrl::Item.id2obj(self, lst[i])
933
+ i += 1
934
+
935
+ when 'button'
936
+ i += 1
937
+
938
+ when 'column'
939
+ i += 2
940
+
941
+ when 'elem'
942
+ i += 1
943
+ lst[i] = Tk::TreeCtrl::Element.id2obj(self, lst[i])
944
+ i += 1
945
+
946
+ else
947
+ i += 1
948
+ end
949
+ end
950
+ end
951
+
952
+ lst
953
+ end
954
+
955
+ def index(idx)
956
+ num_or_str(tk_send('index', idx))
957
+ end
958
+
959
+ def item_ancestors(item)
960
+ list(tk_send('item', 'ancestors', item)).collect!{|id|
961
+ Tk::TreeCtrl::Item.id2obj(self, id)
962
+ }
963
+ end
964
+
965
+ def item_bbox(item, *args)
966
+ list(tk_send('item', 'bbox', item, *args))
967
+ end
968
+
969
+ def item_children(item)
970
+ list(tk_send('item', 'children', item)).collect!{|id|
971
+ Tk::TreeCtrl::Item.id2obj(self, id)
972
+ }
973
+ end
974
+
975
+ def item_collapse(item)
976
+ tk_send_without_enc('item', 'collapse', _get_eval_string(item, true))
977
+ self
978
+ end
979
+
980
+ def item_collapse_recurse(item)
981
+ tk_send_without_enc('item', 'collapse',
982
+ _get_eval_string(item, true), '-recurse')
983
+ self
984
+ end
985
+
986
+ def item_compare(item1, op, item2)
987
+ bool(tk_send('item', 'compare', item1, op, item2))
988
+ end
989
+
990
+ def item_complex(item, *args)
991
+ tk_send_without_enc('item', 'complex',
992
+ _get_eval_string(item, true),
993
+ *(args.map!{|arg| _get_eval_string(arg, true)}))
994
+ self
995
+ end
996
+
997
+ def item_count
998
+ num_or_str(tk_send('item', 'count'))
999
+ end
1000
+
1001
+ def item_create(keys={})
1002
+ num_or_str(tk_send_without_enc('item', 'create', *hash_kv(keys, true)))
1003
+ end
1004
+
1005
+ def _erase_children(item)
1006
+ item_children(item).each{|i| _erase_children(i)}
1007
+ # table is already locked
1008
+ Tk::TreeCtrl::Item::TreeCtrlItemID_TBL[self.path].delete(item)
1009
+ end
1010
+ private :_erase_children
1011
+
1012
+ def item_delete(first, last=None)
1013
+ Tk::TreeCtrl::Item::TreeCtrlItemID_TBL.mutex.synchronize{
1014
+ if Tk::TreeCtrl::Item::TreeCtrlItemID_TBL[self.path]
1015
+ if first == 'all' || first == :all || last == 'all' || last == :all
1016
+ Tk::TreeCtrl::Item::TreeCtrlItemID_TBL[self.path].clear
1017
+ elsif last == None
1018
+ _erase_children(first)
1019
+ else
1020
+ self.range(first, last).each{|id|
1021
+ _erase_children(id)
1022
+ }
1023
+ end
1024
+ end
1025
+ }
1026
+ tk_send('item', 'delete', first, last)
1027
+ self
1028
+ end
1029
+
1030
+ def item_dump(item)
1031
+ list(tk_send('item', 'dump', item))
1032
+ end
1033
+
1034
+ def item_dump_hash(item)
1035
+ Hash[*list(tk_send('item', 'dump', item))]
1036
+ end
1037
+
1038
+ def item_element_actual(item, column, elem, key)
1039
+ tk_send('item', 'element', 'actual', item, column, elem, "-#{key}")
1040
+ end
1041
+
1042
+ def item_element_perstate(elem, opt, st_list)
1043
+ tk_send('item', 'element', 'perstate', elem, "-{opt}", st_list)
1044
+ end
1045
+
1046
+ def item_expand(item)
1047
+ tk_send('item', 'expand', item)
1048
+ self
1049
+ end
1050
+
1051
+ def item_expand_recurse(item)
1052
+ tk_send('item', 'expand', item, '-recurse')
1053
+ self
1054
+ end
1055
+
1056
+ def item_firstchild(parent, child=nil)
1057
+ if child
1058
+ tk_send_without_enc('item', 'firstchild',
1059
+ _get_eval_string(parent, true),
1060
+ _get_eval_string(child, true))
1061
+ self
1062
+ else
1063
+ id = num_or_str(tk_send_without_enc('item', 'firstchild',
1064
+ _get_eval_string(parent, true)))
1065
+ Tk::TreeCtrl::Item.id2obj(self, id)
1066
+ end
1067
+ end
1068
+ alias item_first_child item_firstchild
1069
+
1070
+ def item_hasbutton(item, st=None)
1071
+ if st == None
1072
+ bool(tk_send_without_enc('item', 'hasbutton',
1073
+ _get_eval_string(item, true)))
1074
+ else
1075
+ tk_send_without_enc('item', 'hasbutton',
1076
+ _get_eval_string(item, true),
1077
+ _get_eval_string(st))
1078
+ self
1079
+ end
1080
+ end
1081
+ alias item_has_button item_hasbutton
1082
+
1083
+ def item_hasbutton?(item)
1084
+ item_hasbutton(item)
1085
+ end
1086
+ alias item_has_button? item_hasbutton?
1087
+
1088
+ def item_id(item)
1089
+ tk_send('item', 'id', item)
1090
+ end
1091
+
1092
+ def item_image(item, column=nil, *args)
1093
+ if args.empty?
1094
+ if column
1095
+ img = tk_send('item', 'image', item, column)
1096
+ TkImage::Tk_IMGTBL[img]? TkImage::Tk_IMGTBL[img] : img
1097
+ else
1098
+ simplelist(tk_send('item', 'image', item)).collect!{|img|
1099
+ TkImage::Tk_IMGTBL[img]? TkImage::Tk_IMGTBL[img] : img
1100
+ }
1101
+ end
1102
+ else
1103
+ tk_send('item', 'image', item, column, *args)
1104
+ self
1105
+ end
1106
+ end
1107
+ def get_item_image(item, column=nil)
1108
+ item_image(item, column)
1109
+ end
1110
+ def set_item_image(item, col, img, *args)
1111
+ item_image(item, col, img, *args)
1112
+ end
1113
+
1114
+ def item_index(item)
1115
+ list(tk_send('item', 'index', item))
1116
+ end
1117
+
1118
+ def item_isancestor(item, des)
1119
+ bool(tk_send('item', 'isancestor', item, des))
1120
+ end
1121
+ alias item_is_ancestor item_isancestor
1122
+ alias item_isancestor? item_isancestor
1123
+ alias item_is_ancestor? item_isancestor
1124
+
1125
+ def item_isopen(item)
1126
+ bool(tk_send('item', 'isopen', item))
1127
+ end
1128
+ alias item_is_open item_isopen
1129
+ alias item_isopen? item_isopen
1130
+ alias item_is_open? item_isopen
1131
+ alias item_isopened? item_isopen
1132
+ alias item_is_opened? item_isopen
1133
+
1134
+ def item_lastchild(parent, child=nil)
1135
+ if child
1136
+ tk_send_without_enc('item', 'lastchild',
1137
+ _get_eval_string(parent, true),
1138
+ _get_eval_string(child, true))
1139
+ self
1140
+ else
1141
+ id = num_or_str(tk_send_without_enc('item', 'lastchild',
1142
+ _get_eval_string(parent, true)))
1143
+ Tk::TreeCtrl::Item.id2obj(self, id)
1144
+ end
1145
+ end
1146
+ alias item_last_child item_lastchild
1147
+
1148
+ def item_nextsibling(sibling, nxt=nil)
1149
+ if nxt
1150
+ tk_send('item', 'nextsibling', sibling, nxt)
1151
+ self
1152
+ else
1153
+ id = num_or_str(tk_send('item', 'nextsibling', sibling))
1154
+ Tk::TreeCtrl::Item.id2obj(self, id)
1155
+ end
1156
+ end
1157
+ alias item_next_sibling item_nextsibling
1158
+
1159
+ def item_numchildren(item)
1160
+ number(tk_send_without_enc('item', 'numchildren',
1161
+ _get_eval_string(item, true)))
1162
+ end
1163
+ alias item_num_children item_numchildren
1164
+ alias item_children_size item_numchildren
1165
+
1166
+ def item_order(item, visible=false)
1167
+ if visible
1168
+ ret = num_or_str(tk_send('item', 'order', item, '-visible'))
1169
+ else
1170
+ ret = num_or_str(tk_send('item', 'order', item))
1171
+ end
1172
+
1173
+ (ret.kind_of?(Fixnum) && ret < 0)? nil: ret
1174
+ end
1175
+ def item_visible_order(item)
1176
+ item_order(item, true)
1177
+ end
1178
+
1179
+ def item_parent(item)
1180
+ id = num_or_str(tk_send('item', 'parent', item))
1181
+ Tk::TreeCtrl::Item.id2obj(self, id)
1182
+ end
1183
+
1184
+ def item_prevsibling(sibling, prev=nil)
1185
+ if prev
1186
+ tk_send('item', 'prevsibling', sibling, prev)
1187
+ self
1188
+ else
1189
+ id = num_or_str(tk_send('item', 'prevsibling', sibling))
1190
+ Tk::TreeCtrl::Item.id2obj(self, id)
1191
+ end
1192
+ end
1193
+ alias item_prev_sibling item_prevsibling
1194
+
1195
+ def item_range(first, last)
1196
+ simplelist(tk_send('item', 'range', first, last))
1197
+ end
1198
+
1199
+ def item_remove(item)
1200
+ tk_send('item', 'remove', item)
1201
+ self
1202
+ end
1203
+
1204
+ def item_rnc(item)
1205
+ list(tk_send('item', 'rnc', item))
1206
+ end
1207
+
1208
+ def _item_sort_core(real_sort, item, *opts)
1209
+ # opts ::= sort_param [, sort_param, ... ]
1210
+ # sort_param ::= {key=>val, ...}
1211
+ # [type, desc, {key=>val, ...}]
1212
+ # param
1213
+ opts = opts.collect{|param|
1214
+ if param.kind_of?(Hash)
1215
+ param = _symbolkey2str(param)
1216
+ if param.key?('column')
1217
+ key = '-column'
1218
+ desc = param.delete('column')
1219
+ elsif param.key?('element')
1220
+ key = '-element'
1221
+ desc = param.delete('element')
1222
+ else
1223
+ key = nil
1224
+ end
1225
+
1226
+ if param.empty?
1227
+ param = None
1228
+ else
1229
+ param = hash_kv(__conv_item_keyonly_opts(item, param))
1230
+ end
1231
+
1232
+ if key
1233
+ [key, desc].concat(param)
1234
+ else
1235
+ param
1236
+ end
1237
+
1238
+ elsif param.kind_of?(Array)
1239
+ if param[2].kind_of?(Hash)
1240
+ param[2] = hash_kv(__conv_item_keyonly_opts(item, param[2]))
1241
+ end
1242
+ param
1243
+
1244
+ elsif param.kind_of?(String) && param =~ /\A[a-z]+\Z/
1245
+ '-' << param
1246
+
1247
+ elsif param.kind_of?(Symbol)
1248
+ '-' << param.to_s
1249
+
1250
+ else
1251
+ param
1252
+ end
1253
+ }.flatten
1254
+
1255
+ if real_sort
1256
+ tk_send('item', 'sort', item, *opts)
1257
+ self
1258
+ else
1259
+ list(tk_send('item', 'sort', item, '-notreally', *opts))
1260
+ end
1261
+ end
1262
+ private :_item_sort_core
1263
+
1264
+ def item_sort(item, *opts)
1265
+ _item_sort_core(true, item, *opts)
1266
+ end
1267
+ def item_sort_not_really(item, *opts)
1268
+ _item_sort_core(false, item, *opts)
1269
+ end
1270
+
1271
+ def item_span(item, column=nil, *args)
1272
+ if args.empty?
1273
+ if column
1274
+ list(tk_send('item', 'span', item, column))
1275
+ else
1276
+ simplelist(tk_send('item', 'span', item)).collect!{|elem| list(elem)}
1277
+ end
1278
+ else
1279
+ tk_send('item', 'span', item, column, *args)
1280
+ self
1281
+ end
1282
+ end
1283
+ def get_item_span(item, column=nil)
1284
+ item_span(item, column)
1285
+ end
1286
+ def set_item_span(item, col, num, *args)
1287
+ item_span(item, col, num, *args)
1288
+ end
1289
+
1290
+ def item_state_forcolumn(item, column, *args)
1291
+ tk_send('item', 'state', 'forcolumn', item, column, *args)
1292
+ end
1293
+ alias item_state_for_column item_state_forcolumn
1294
+
1295
+ def item_state_get(item, *args)
1296
+ if args.empty?
1297
+ list(tk_send('item', 'state', 'get', item *args))
1298
+ else
1299
+ bool(tk_send('item', 'state', 'get', item))
1300
+ end
1301
+ end
1302
+
1303
+ def item_state_set(item, *args)
1304
+ tk_send('item', 'state', 'set', item, *args)
1305
+ end
1306
+
1307
+ def item_style_elements(item, column)
1308
+ list(tk_send('item', 'style', 'elements', item, column)).collect!{|id|
1309
+ Tk::TreeCtrl::Style.id2obj(self, id)
1310
+ }
1311
+ end
1312
+
1313
+ def item_style_map(item, column, style, map)
1314
+ tk_send('item', 'style', 'map', item, column, style, map)
1315
+ self
1316
+ end
1317
+
1318
+ def item_style_set(item, column=nil, *args)
1319
+ if args.empty?
1320
+ if column
1321
+ id = tk_send_without_enc('item', 'style', 'set',
1322
+ _get_eval_string(item, true),
1323
+ _get_eval_string(column, true))
1324
+ Tk::TreeCtrl::Style.id2obj(self, id)
1325
+ else
1326
+ list(tk_send_without_enc('item', 'style', 'set',
1327
+ _get_eval_string(item, true))).collect!{|id|
1328
+ Tk::TreeCtrl::Style.id2obj(self, id)
1329
+ }
1330
+ end
1331
+ else
1332
+ tk_send_without_enc('item', 'style', 'set',
1333
+ _get_eval_string(item, true),
1334
+ _get_eval_string(column, true),
1335
+ *(args.flatten.map!{|arg|
1336
+ _get_eval_string(arg, true)
1337
+ }))
1338
+ self
1339
+ end
1340
+ end
1341
+
1342
+ def item_text(item, column, txt=nil, *args)
1343
+ if args.empty?
1344
+ if txt
1345
+ tk_send('item', 'text', item, column, txt)
1346
+ self
1347
+ else
1348
+ tk_send('item', 'text', item, column)
1349
+ end
1350
+ else
1351
+ tk_send('item', 'text', item, column, txt, *args)
1352
+ self
1353
+ end
1354
+ end
1355
+
1356
+ def item_toggle(item)
1357
+ tk_send('item', 'toggle', item)
1358
+ self
1359
+ end
1360
+
1361
+ def item_toggle_recurse(item)
1362
+ tk_send('item', 'toggle', item, '-recurse')
1363
+ self
1364
+ end
1365
+
1366
+ def item_visible(item, st=None)
1367
+ if st == None
1368
+ bool(tk_send('item', 'visible', item))
1369
+ else
1370
+ tk_send('item', 'visible', item, st)
1371
+ self
1372
+ end
1373
+ end
1374
+ def item_visible?(item)
1375
+ item_visible(item)
1376
+ end
1377
+
1378
+ def marquee_anchor(*args)
1379
+ if args.empty?
1380
+ list(tk_send('marquee', 'anchor'))
1381
+ else
1382
+ tk_send('marquee', 'anchor', *args)
1383
+ self
1384
+ end
1385
+ end
1386
+
1387
+ def marquee_coords(*args)
1388
+ if args.empty?
1389
+ list(tk_send('marquee', 'coords'))
1390
+ else
1391
+ tk_send('marquee', 'coords', *args)
1392
+ self
1393
+ end
1394
+ end
1395
+
1396
+ def marquee_corner(*args)
1397
+ if args.empty?
1398
+ tk_send('marquee', 'corner')
1399
+ else
1400
+ tk_send('marquee', 'corner', *args)
1401
+ self
1402
+ end
1403
+ end
1404
+
1405
+ def marquee_identify()
1406
+ list(tk_send('marquee', 'identify')).collect!{|id|
1407
+ Tk::TreeCtrl::Item.id2obj(self, id)
1408
+ }
1409
+ end
1410
+
1411
+ def marquee_visible(st=None)
1412
+ if st == None
1413
+ bool(tk_send('marquee', 'visible'))
1414
+ else
1415
+ tk_send('marquee', 'visible', st)
1416
+ self
1417
+ end
1418
+ end
1419
+ def marquee_visible?()
1420
+ marquee_visible()
1421
+ end
1422
+
1423
+ #def notify_bind(obj, event, cmd=Proc.new, *args)
1424
+ # _bind([@path, 'notify', 'bind', obj], event, cmd, *args)
1425
+ # self
1426
+ #end
1427
+ def notify_bind(obj, event, *args)
1428
+ # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
1429
+ if TkComm._callback_entry?(args[0]) || !block_given?
1430
+ cmd = args.shift
1431
+ else
1432
+ cmd = Proc.new
1433
+ end
1434
+ _bind([@path, 'notify', 'bind', obj], event, cmd, *args)
1435
+ self
1436
+ end
1437
+
1438
+ #def notify_bind_append(obj, event, cmd=Proc.new, *args)
1439
+ # _bind_append([@path, 'notify', 'bind', obj], event, cmd, *args)
1440
+ # self
1441
+ #end
1442
+ def notify_bind_append(obj, event, *args)
1443
+ # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
1444
+ if TkComm._callback_entry?(args[0]) || !block_given?
1445
+ cmd = args.shift
1446
+ else
1447
+ cmd = Proc.new
1448
+ end
1449
+ _bind_append([@path, 'notify', 'bind', obj], event, cmd, *args)
1450
+ self
1451
+ end
1452
+
1453
+ def notify_bind_remove(obj, event)
1454
+ _bind_remove([@path, 'notify', 'bind', obj], event)
1455
+ self
1456
+ end
1457
+
1458
+ def notify_bindinfo(obj, event=nil)
1459
+ _bindinfo([@path, 'notify', 'bind', obj], event)
1460
+ end
1461
+
1462
+ def notify_detailnames(event)
1463
+ list(tk_send('notify', 'detailnames', event))
1464
+ end
1465
+
1466
+ def notify_eventnames()
1467
+ list(tk_send('notify', 'eventnames'))
1468
+ end
1469
+
1470
+ def notify_generate(pattern, char_map=None, percents_cmd=None)
1471
+ pattern = "<#{pattern}>"
1472
+ tk_send('notify', 'generate', pattern, char_map, percents_cmd)
1473
+ self
1474
+ end
1475
+
1476
+ def notify_install(pattern, percents_cmd=nil, &b)
1477
+ pattern = "<#{pattern}>"
1478
+ percents_cmd = Proc.new(&b) if !percents_cmd && b
1479
+ if percents_cmd
1480
+ procedure(tk_send('notify', 'install', pattern, percents_cmd))
1481
+ else
1482
+ procedure(tk_send('notify', 'install', pattern))
1483
+ end
1484
+ end
1485
+
1486
+ def notify_install_detail(event, detail, percents_cmd=nil, &b)
1487
+ percents_cmd = Proc.new(&b) if !percents_cmd && b
1488
+ if percents_cmd
1489
+ tk_send('notify', 'install', 'detail', event, detail, percents_cmd)
1490
+ else
1491
+ tk_send('notify', 'install', 'detail', event, detail)
1492
+ end
1493
+ end
1494
+
1495
+ def notify_install_event(event, percents_cmd=nil, &b)
1496
+ percents_cmd = Proc.new(&b) if !percents_cmd && b
1497
+ if percents_cmd
1498
+ tk_send('notify', 'install', 'event', event, percents_cmd)
1499
+ else
1500
+ tk_send('notify', 'install', 'event', event)
1501
+ end
1502
+ end
1503
+
1504
+ def notify_linkage(pattern, detail=None)
1505
+ if detail != None
1506
+ tk_send('notify', 'linkage', pattern, detail)
1507
+ else
1508
+ begin
1509
+ if pattern.to_s.index(?-)
1510
+ # TreeCtrl 1.1 format?
1511
+ begin
1512
+ tk_send('notify', 'linkage', "<#{pattern}>")
1513
+ rescue
1514
+ # TreeCtrl 1.0?
1515
+ tk_send('notify', 'linkage', pattern)
1516
+ end
1517
+ else
1518
+ # TreeCtrl 1.0 format?
1519
+ begin
1520
+ tk_send('notify', 'linkage', pattern)
1521
+ rescue
1522
+ # TreeCtrl 1.1?
1523
+ tk_send('notify', 'linkage', "<#{pattern}>")
1524
+ end
1525
+ end
1526
+ end
1527
+ end
1528
+ end
1529
+
1530
+ def notify_unbind(pattern=nil)
1531
+ if pattern
1532
+ tk_send('notify', 'unbind', "<#{pattern}>")
1533
+ else
1534
+ tk_send('notify', 'unbind')
1535
+ end
1536
+ self
1537
+ end
1538
+
1539
+ def notify_uninstall(pattern)
1540
+ pattern = "<#{pattern}>"
1541
+ tk_send('notify', 'uninstall', pattern)
1542
+ self
1543
+ end
1544
+
1545
+ def notify_uninstall_detail(event, detail)
1546
+ tk_send('notify', 'uninstall', 'detail', event, detail)
1547
+ self
1548
+ end
1549
+
1550
+ def notify_uninstall_event(event)
1551
+ tk_send('notify', 'uninstall', 'event', event)
1552
+ self
1553
+ end
1554
+
1555
+ def numcolumns()
1556
+ num_or_str(tk_send('numcolumns'))
1557
+ end
1558
+ alias num_columns numcolumns
1559
+ alias columns_size numcolumns
1560
+
1561
+ def numitems()
1562
+ num_or_str(tk_send('numitems'))
1563
+ end
1564
+ alias num_items numitems
1565
+ alias items_size numitems
1566
+
1567
+ def orphans()
1568
+ list(tk_send('orphans')).collect!{|id|
1569
+ Tk::TreeCtrl::Item.id2obj(self, id)
1570
+ }
1571
+ end
1572
+
1573
+ def range(first, last)
1574
+ list(tk_send('range', first, last)).collect!{|id|
1575
+ Tk::TreeCtrl::Item.id2obj(self, id)
1576
+ }
1577
+ end
1578
+
1579
+ def state_define(name)
1580
+ tk_send('state', 'define', name)
1581
+ self
1582
+ end
1583
+
1584
+ def state_linkage(name)
1585
+ tk_send('state', 'linkage', name)
1586
+ end
1587
+
1588
+ def state_names()
1589
+ list(tk_send('state', 'names'))
1590
+ end
1591
+
1592
+ def state_undefine(*names)
1593
+ tk_send('state', 'undefine', *names)
1594
+ self
1595
+ end
1596
+
1597
+ def see(item, column=None, keys={})
1598
+ tk_send('see', item, column, *hash_kv(keys))
1599
+ self
1600
+ end
1601
+
1602
+ def selection_add(first, last=None)
1603
+ tk_send('selection', 'add', first, last)
1604
+ self
1605
+ end
1606
+
1607
+ def selection_anchor(item=None)
1608
+ id = num_or_str(tk_send('selection', 'anchor', item))
1609
+ Tk::TreeCtrl::Item.id2obj(self, id)
1610
+ end
1611
+
1612
+ def selection_clear(*args) # first, last
1613
+ tk_send('selection', 'clear', *args)
1614
+ self
1615
+ end
1616
+
1617
+ def selection_count()
1618
+ number(tk_send('selection', 'count'))
1619
+ end
1620
+
1621
+ def selection_get()
1622
+ list(tk_send('selection', 'get')).collect!{|id|
1623
+ Tk::TreeCtrl::Item.id2obj(self, id)
1624
+ }
1625
+ end
1626
+
1627
+ def selection_includes(item)
1628
+ bool(tk_send('selection', 'includes', item))
1629
+ end
1630
+
1631
+ def selection_modify(sel, desel)
1632
+ tk_send('selection', 'modify', sel, desel)
1633
+ self
1634
+ end
1635
+
1636
+ def style_create(style, keys=None)
1637
+ if keys && keys != None
1638
+ tk_send('style', 'create', style, *hash_kv(keys))
1639
+ else
1640
+ tk_send('style', 'create', style)
1641
+ end
1642
+ end
1643
+
1644
+ def style_delete(*args)
1645
+ Tk::TreeCtrl::Style::TreeCtrlStyleID_TBL.mutex.synchronize{
1646
+ if Tk::TreeCtrl::Style::TreeCtrlStyleID_TBL[self.path]
1647
+ args.each{|sty|
1648
+ Tk::TreeCtrl::Style::TreeCtrlStyleID_TBL[self.path].delete(sty)
1649
+ }
1650
+ end
1651
+ }
1652
+ tk_send('style', 'delete', *args)
1653
+ self
1654
+ end
1655
+
1656
+ def style_elements(style, *elems)
1657
+ if elems.empty?
1658
+ list(tk_send('style', 'elements', style)).collect!{|id|
1659
+ Tk::TreeCtrl::Element.id2obj(self, id)
1660
+ }
1661
+ else
1662
+ tk_send('style', 'elements', style, elems.flatten)
1663
+ self
1664
+ end
1665
+ end
1666
+
1667
+ def _conv_style_layout_val(sty, val)
1668
+ case sty.to_s
1669
+ when 'padx', 'pady', 'ipadx', 'ipady'
1670
+ lst = list(val)
1671
+ (lst.size == 1)? lst[0]: lst
1672
+ when 'detach', 'indent'
1673
+ bool(val)
1674
+ when 'union'
1675
+ simplelist(val).collect!{|elem|
1676
+ Tk::TreeCtrl::Element.id2obj(self, elem)
1677
+ }
1678
+ else
1679
+ val
1680
+ end
1681
+ end
1682
+ private :_conv_style_layout_val
1683
+
1684
+ def style_layout(style, elem, keys=None)
1685
+ if keys && keys != None
1686
+ if keys.kind_of?(Hash)
1687
+ tk_send('style', 'layout', style, elem, *hash_kv(keys))
1688
+ self
1689
+ else
1690
+ _conv_style_layout_val(keys,
1691
+ tk_send('style', 'layout',
1692
+ style, elem, "-#{keys}"))
1693
+ end
1694
+ else
1695
+ ret = Hash.new
1696
+ Hash[*simplelist(tk_send('style', 'layout', style, elem))].each{|k, v|
1697
+ k = k[1..-1]
1698
+ ret[k] = _conv_style_layout_val(k, v)
1699
+ }
1700
+ ret
1701
+ end
1702
+ end
1703
+ def get_style_layout(style, elem, opt=None)
1704
+ style_layout(style, elem, opt)
1705
+ end
1706
+ def set_style_layout(style, elem, slot, value=None)
1707
+ if slot.kind_of?(Hash)
1708
+ style_layout(style, elem, slot)
1709
+ else
1710
+ style_layout(style, elem, {slot=>value})
1711
+ end
1712
+ end
1713
+
1714
+ def style_names()
1715
+ list(tk_send('style', 'names')).collect!{|id|
1716
+ Tk::TreeCtrl::Style.id2obj(self, id)
1717
+ }
1718
+ end
1719
+
1720
+ def toggle(*items)
1721
+ tk_send('toggle', *items)
1722
+ self
1723
+ end
1724
+
1725
+ def toggle_recurse()
1726
+ tk_send('toggle', '-recurse', *items)
1727
+ self
1728
+ end
1729
+ end
1730
+
1731
+ #####################
1732
+
1733
+ class Tk::TreeCtrl::Column < TkObject
1734
+ TreeCtrlColumnID_TBL = TkCore::INTERP.create_table
1735
+
1736
+ (TreeCtrlColumnID = ['treectrl_column'.freeze, TkUtil.untrust('00000')]).instance_eval{
1737
+ @mutex = Mutex.new
1738
+ def mutex; @mutex; end
1739
+ freeze
1740
+ }
1741
+
1742
+ TkCore::INTERP.init_ip_env{
1743
+ Tk::TreeCtrl::Column::TreeCtrlColumnID_TBL.mutex.synchronize{
1744
+ Tk::TreeCtrl::Column::TreeCtrlColumnID_TBL.clear
1745
+ }
1746
+ }
1747
+
1748
+ def self.id2obj(tree, id)
1749
+ tpath = tree.path
1750
+ Tk::TreeCtrl::Column::TreeCtrlColumnID_TBL.mutex.synchronize{
1751
+ if Tk::TreeCtrl::Column::TreeCtrlColumnID_TBL[tpath]
1752
+ Tk::TreeCtrl::Column::TreeCtrlColumnID_TBL[tpath][id]? \
1753
+ Tk::TreeCtrl::Column::TreeCtrlColumnID_TBL[tpath][id] : id
1754
+ else
1755
+ id
1756
+ end
1757
+ }
1758
+ end
1759
+
1760
+ def initialize(parent, keys={})
1761
+ @tree = parent
1762
+ @tpath = parent.path
1763
+
1764
+ keys = _symbolkey2str(keys)
1765
+
1766
+ Tk::TreeCtrl::Column::TreeCtrlColumnID.mutex.synchronize{
1767
+ @path = @id =
1768
+ keys.delete('tag') ||
1769
+ Tk::TreeCtrl::Column::TreeCtrlColumnID.join(TkCore::INTERP._ip_id_)
1770
+ Tk::TreeCtrl::Column::TreeCtrlColumnID[1].succ!
1771
+ }
1772
+
1773
+ keys['tag'] = @id
1774
+
1775
+ Tk::TreeCtrl::Column::TreeCtrlColumnID_TBL.mutex.synchronize{
1776
+ Tk::TreeCtrl::Column::TreeCtrlColumnID_TBL[@tpath] ||= {}
1777
+ Tk::TreeCtrl::Column::TreeCtrlColumnID_TBL[@tpath][@id] = self
1778
+ }
1779
+
1780
+ @tree.column_create(keys)
1781
+ end
1782
+
1783
+ def id
1784
+ @id
1785
+ end
1786
+
1787
+ def to_s
1788
+ @id.to_s.dup
1789
+ end
1790
+
1791
+ def cget_tkstring(opt)
1792
+ @tree.column_cget_tkstring(@tree.column_index(@id), opt)
1793
+ end
1794
+ def cget(opt)
1795
+ @tree.column_cget(@tree.column_index(@id), opt)
1796
+ end
1797
+ def cget_strict(opt)
1798
+ @tree.column_cget_strict(@tree.column_index(@id), opt)
1799
+ end
1800
+
1801
+ def configure(*args)
1802
+ @tree.column_configure(@tree.column_index(@id), *args)
1803
+ end
1804
+
1805
+ def configinfo(*args)
1806
+ @tree.column_configinfo(@tree.column_index(@id), *args)
1807
+ end
1808
+
1809
+ def current_configinfo(*args)
1810
+ @tree.current_column_configinfo(@tree.column_index(@id), *args)
1811
+ end
1812
+
1813
+ def delete
1814
+ @tree.column_delete(@tree.column_index(@id))
1815
+ self
1816
+ end
1817
+
1818
+ def index
1819
+ @tree.column_index(@id)
1820
+ end
1821
+
1822
+ def move(before)
1823
+ @tree.column_move(@tree.column_index(@id), before)
1824
+ self
1825
+ end
1826
+
1827
+ def needed_width
1828
+ @tree.column_needed_width(@tree.column_index(@id))
1829
+ end
1830
+ alias neededwidth needed_width
1831
+
1832
+ def current_width
1833
+ @tree.column_width(@tree.column_index(@id))
1834
+ end
1835
+ end
1836
+
1837
+ #####################
1838
+
1839
+ class Tk::TreeCtrl::Element < TkObject
1840
+ TreeCtrlElementID_TBL = TkCore::INTERP.create_table
1841
+
1842
+ (TreeCtrlElementID = ['treectrl_element'.freeze, TkUtil.untrust('00000')]).instance_eval{
1843
+ @mutex = Mutex.new
1844
+ def mutex; @mutex; end
1845
+ freeze
1846
+ }
1847
+ TreeCtrlElemTypeToClass = {}
1848
+
1849
+ TkCore::INTERP.init_ip_env{
1850
+ Tk::TreeCtrl::Element::TreeCtrlElementID_TBL.mutex.synchronize{
1851
+ Tk::TreeCtrl::Element::TreeCtrlElementID_TBL.clear
1852
+ }
1853
+ }
1854
+
1855
+ def self.type2class(type)
1856
+ TreeCtrlElemTypeToClass[type] || type
1857
+ end
1858
+
1859
+ def self.id2obj(tree, id)
1860
+ tpath = tree.path
1861
+ Tk::TreeCtrl::Element::TreeCtrlElementID_TBL.mutex.synchronize{
1862
+ if Tk::TreeCtrl::Element::TreeCtrlElementID_TBL[tpath]
1863
+ Tk::TreeCtrl::Element::TreeCtrlElementID_TBL[tpath][id]? \
1864
+ Tk::TreeCtrl::Element::TreeCtrlElementID_TBL[tpath][id] : id
1865
+ else
1866
+ id
1867
+ end
1868
+ }
1869
+ end
1870
+
1871
+ def initialize(parent, type, keys=nil)
1872
+ @tree = parent
1873
+ @tpath = parent.path
1874
+ @type = type.to_s
1875
+ Tk::TreeCtrl::Element::TreeCtrlElementID.mutex.synchronize{
1876
+ @path = @id =
1877
+ Tk::TreeCtrl::Element::TreeCtrlElementID.join(TkCore::INTERP._ip_id_)
1878
+ Tk::TreeCtrl::Element::TreeCtrlElementID[1].succ!
1879
+ }
1880
+
1881
+ Tk::TreeCtrl::Element::TreeCtrlElementID_TBL.mutex.synchronize{
1882
+ Tk::TreeCtrl::Element::TreeCtrlElementID_TBL[@tpath] ||= {}
1883
+ Tk::TreeCtrl::Element::TreeCtrlElementID_TBL[@tpath][@id] = self
1884
+ }
1885
+
1886
+ @tree.element_create(@id, @type, keys)
1887
+ end
1888
+
1889
+ def id
1890
+ @id
1891
+ end
1892
+
1893
+ def to_s
1894
+ @id.dup
1895
+ end
1896
+
1897
+ def cget_tkstring(opt)
1898
+ @tree.element_cget_tkstring(@id, opt)
1899
+ end
1900
+ def cget(opt)
1901
+ @tree.element_cget(@id, opt)
1902
+ end
1903
+ def cget_strict(opt)
1904
+ @tree.element_cget_strict(@id, opt)
1905
+ end
1906
+
1907
+ def configure(*args)
1908
+ @tree.element_configure(@id, *args)
1909
+ end
1910
+
1911
+ def configinfo(*args)
1912
+ @tree.element_configinfo(@id, *args)
1913
+ end
1914
+
1915
+ def current_configinfo(*args)
1916
+ @tree.current_element_configinfo(@id, *args)
1917
+ end
1918
+
1919
+ def delete
1920
+ @tree.element_delete(@id)
1921
+ self
1922
+ end
1923
+
1924
+ def element_type
1925
+ @tree.element_type(@id)
1926
+ end
1927
+
1928
+ def element_class
1929
+ @tree.element_class(@id)
1930
+ end
1931
+ end
1932
+
1933
+ class Tk::TreeCtrl::BitmapElement < Tk::TreeCtrl::Element
1934
+ TreeCtrlElemTypeToClass['bitmap'] = self
1935
+
1936
+ def initialize(parent, keys=nil)
1937
+ super(parent, 'bitmap', keys)
1938
+ end
1939
+ end
1940
+
1941
+ class Tk::TreeCtrl::BorderElement < Tk::TreeCtrl::Element
1942
+ TreeCtrlElemTypeToClass['border'] = self
1943
+
1944
+ def initialize(parent, keys=nil)
1945
+ super(parent, 'border', keys)
1946
+ end
1947
+ end
1948
+
1949
+ class Tk::TreeCtrl::ImageElement < Tk::TreeCtrl::Element
1950
+ TreeCtrlElemTypeToClass['image'] = self
1951
+
1952
+ def initialize(parent, keys=nil)
1953
+ super(parent, 'image', keys)
1954
+ end
1955
+ end
1956
+
1957
+ class Tk::TreeCtrl::RectangleElement < Tk::TreeCtrl::Element
1958
+ TreeCtrlElemTypeToClass['rect'] = self
1959
+
1960
+ def initialize(parent, keys=nil)
1961
+ super(parent, 'rect', keys)
1962
+ end
1963
+ end
1964
+
1965
+ #####################
1966
+
1967
+ class Tk::TreeCtrl::Item < TkObject
1968
+ TreeCtrlItemID_TBL = TkCore::INTERP.create_table
1969
+
1970
+ TkCore::INTERP.init_ip_env{
1971
+ Tk::TreeCtrl::Item::TreeCtrlItemID_TBL.mutex.synchronize{
1972
+ Tk::TreeCtrl::Item::TreeCtrlItemID_TBL.clear
1973
+ }
1974
+ }
1975
+
1976
+ def self.id2obj(tree, id)
1977
+ tpath = tree.path
1978
+ Tk::TreeCtrl::Item::TreeCtrlItemID_TBL.mutex.synchronize{
1979
+ if Tk::TreeCtrl::Item::TreeCtrlItemID_TBL[tpath]
1980
+ Tk::TreeCtrl::Item::TreeCtrlItemID_TBL[tpath][id]? \
1981
+ Tk::TreeCtrl::Item::TreeCtrlItemID_TBL[tpath][id] : id
1982
+ else
1983
+ id
1984
+ end
1985
+ }
1986
+ end
1987
+
1988
+ def initialize(parent, keys={})
1989
+ @tree = parent
1990
+ @tpath = parent.path
1991
+ @path = @id = @tree.item_create(keys)
1992
+
1993
+ Tk::TreeCtrl::Item::TreeCtrlItemID_TBL.mutex.synchronize{
1994
+ Tk::TreeCtrl::Item::TreeCtrlItemID_TBL[@tpath] ||= {}
1995
+ Tk::TreeCtrl::Item::TreeCtrlItemID_TBL[@tpath][@id] = self
1996
+ }
1997
+ end
1998
+
1999
+ def id
2000
+ @id
2001
+ end
2002
+
2003
+ def to_s
2004
+ @id.to_s.dup
2005
+ end
2006
+
2007
+ def ancestors
2008
+ @tree.item_ancestors(@id)
2009
+ end
2010
+
2011
+ def bbox(*args)
2012
+ @tree.item_bbox(@id, *args)
2013
+ end
2014
+
2015
+ def children
2016
+ @tree.item_children(@id)
2017
+ end
2018
+
2019
+ def collapse
2020
+ @tree.item_collapse(@id)
2021
+ self
2022
+ end
2023
+
2024
+ def collapse_recurse
2025
+ @tree.item_collapse_recurse(@id)
2026
+ self
2027
+ end
2028
+
2029
+ def complex(*args)
2030
+ @tree.item_complex(@id, *args)
2031
+ self
2032
+ end
2033
+
2034
+ def cget_tkstring(opt)
2035
+ @tree.item_cget_tkstring(@id, opt)
2036
+ end
2037
+ def cget(opt)
2038
+ @tree.item_cget(@id, opt)
2039
+ end
2040
+ def cget_strict(opt)
2041
+ @tree.item_cget_strict(@id, opt)
2042
+ end
2043
+
2044
+ def configure(*args)
2045
+ @tree.item_configure(@id, *args)
2046
+ end
2047
+
2048
+ def configinfo(*args)
2049
+ @tree.item_configinfo(@id, *args)
2050
+ end
2051
+
2052
+ def current_configinfo(*args)
2053
+ @tree.current_item_configinfo(@id, *args)
2054
+ end
2055
+
2056
+ def delete
2057
+ @tree.item_delete(@id)
2058
+ self
2059
+ end
2060
+
2061
+ def element_dump
2062
+ @tree.item_dump(@id)
2063
+ end
2064
+
2065
+ def element_dump_hash
2066
+ @tree.item_dump_hash(@id)
2067
+ end
2068
+
2069
+ def element_actual(column, elem, key)
2070
+ @tree.item_element_actual(@id, column, elem, key)
2071
+ end
2072
+
2073
+ def element_cget_tkstring(opt)
2074
+ @tree.item_element_cget(@id, opt)
2075
+ end
2076
+ def element_cget_tkstring(opt)
2077
+ @tree.item_element_cget(@id, opt)
2078
+ end
2079
+ def element_cget_strict(opt)
2080
+ @tree.item_element_cget_strict(@id, opt)
2081
+ end
2082
+
2083
+ def element_configure(*args)
2084
+ @tree.item_element_configure(@id, *args)
2085
+ end
2086
+
2087
+ def element_configinfo(*args)
2088
+ @tree.item_element_configinfo(@id, *args)
2089
+ end
2090
+
2091
+ def current_element_configinfo(*args)
2092
+ @tree.current_item_element_configinfo(@id, *args)
2093
+ end
2094
+
2095
+ def expand
2096
+ @tree.item_expand(@id)
2097
+ self
2098
+ end
2099
+
2100
+ def expand_recurse
2101
+ @tree.item_expand_recurse(@id)
2102
+ self
2103
+ end
2104
+
2105
+ def firstchild(child=nil)
2106
+ if child
2107
+ @tree.item_firstchild(@id, child)
2108
+ self
2109
+ else
2110
+ @tree.item_firstchild(@id)
2111
+ end
2112
+ end
2113
+ alias first_child firstchild
2114
+
2115
+ def hasbutton(st=None)
2116
+ if st == None
2117
+ @tree.item_hasbutton(@id)
2118
+ else
2119
+ @tree.item_hasbutton(@id, st)
2120
+ self
2121
+ end
2122
+ end
2123
+ alias has_button hasbutton
2124
+
2125
+ def hasbutton?
2126
+ @tree.item_hasbutton(@id)
2127
+ end
2128
+ alias has_button? hasbutton?
2129
+
2130
+ def index
2131
+ @tree.item_index(@id)
2132
+ end
2133
+
2134
+ def isancestor(des)
2135
+ @tree.item_isancestor(@id, des)
2136
+ end
2137
+ alias is_ancestor isancestor
2138
+ alias isancestor? isancestor
2139
+ alias is_ancestor? isancestor
2140
+ alias ancestor? isancestor
2141
+
2142
+ def isopen
2143
+ @tree.item_isopen(@id)
2144
+ end
2145
+ alias is_open isopen
2146
+ alias isopen? isopen
2147
+ alias is_open? isopen
2148
+ alias isopened? isopen
2149
+ alias is_opened? isopen
2150
+ alias open? isopen
2151
+
2152
+ def lastchild(child=nil)
2153
+ if child
2154
+ @tree.item_lastchild(@id, child)
2155
+ self
2156
+ else
2157
+ @tree.item_lastchild(@id)
2158
+ end
2159
+ end
2160
+ alias last_child lastchild
2161
+
2162
+ def nextsibling(nxt=nil)
2163
+ if nxt
2164
+ @tree.item_nextsibling(@id, nxt)
2165
+ self
2166
+ else
2167
+ @tree.item_nextsibling(@id)
2168
+ end
2169
+ end
2170
+ alias next_sibling nextsibling
2171
+
2172
+ def numchildren
2173
+ @tree.item_numchildren(@id)
2174
+ end
2175
+ alias num_children numchildren
2176
+ alias children_size numchildren
2177
+
2178
+ def parent_index
2179
+ @tree.item_parent(@id)
2180
+ end
2181
+
2182
+ def prevsibling(nxt=nil)
2183
+ if nxt
2184
+ @tree.item_prevsibling(@id, nxt)
2185
+ self
2186
+ else
2187
+ @tree.item_prevsibling(@id)
2188
+ end
2189
+ end
2190
+ alias prev_sibling prevsibling
2191
+
2192
+ def remove
2193
+ @tree.item_remove(@id)
2194
+ end
2195
+
2196
+ def rnc
2197
+ @tree.item_rnc(@id)
2198
+ end
2199
+
2200
+ def sort(*opts)
2201
+ @tree.item_sort(@id, *opts)
2202
+ end
2203
+ def sort_not_really(*opts)
2204
+ @tree.item_sort_not_really(@id, *opts)
2205
+ self
2206
+ end
2207
+
2208
+ def state_forcolumn(column, *args)
2209
+ @tree.item_state_forcolumn(@id, column, *args)
2210
+ self
2211
+ end
2212
+ alias state_for_column state_forcolumn
2213
+
2214
+ def state_get(*args)
2215
+ @tree.item_state_get(@id, *args)
2216
+ end
2217
+
2218
+ def state_set(*args)
2219
+ @tree.item_state_set(@id, *args)
2220
+ self
2221
+ end
2222
+
2223
+ def style_elements(column)
2224
+ @tree.item_style_elements(@id, column)
2225
+ end
2226
+
2227
+ def style_map(column, style, map)
2228
+ @tree.item_style_map(@id, column, style, map)
2229
+ self
2230
+ end
2231
+
2232
+ def style_set(column=nil, *args)
2233
+ if args.empty?
2234
+ @tree.item_style_set(@id, column)
2235
+ else
2236
+ @tree.item_style_set(@id, column, *args)
2237
+ self
2238
+ end
2239
+ end
2240
+
2241
+ def item_text(column, txt=nil, *args)
2242
+ if args.empty?
2243
+ if txt
2244
+ @tree.item_text(@id, column, txt)
2245
+ self
2246
+ else
2247
+ @tree.item_text(@id, column)
2248
+ end
2249
+ else
2250
+ @tree.item_text(@id, column, txt, *args)
2251
+ self
2252
+ end
2253
+ end
2254
+
2255
+ def toggle
2256
+ @tree.item_toggle(@id)
2257
+ self
2258
+ end
2259
+
2260
+ def toggle_recurse
2261
+ @tree.item_toggle_recurse(@id)
2262
+ self
2263
+ end
2264
+
2265
+ def visible(st=None)
2266
+ if st == None
2267
+ @tree.item_visible(@id)
2268
+ else
2269
+ @tree.item_visible(@id, st)
2270
+ self
2271
+ end
2272
+ end
2273
+ end
2274
+
2275
+ #####################
2276
+
2277
+ class Tk::TreeCtrl::Style < TkObject
2278
+ TreeCtrlStyleID_TBL = TkCore::INTERP.create_table
2279
+
2280
+ (TreeCtrlStyleID = ['treectrl_style'.freeze, TkUtil.untrust('00000')]).instance_eval{
2281
+ @mutex = Mutex.new
2282
+ def mutex; @mutex; end
2283
+ freeze
2284
+ }
2285
+
2286
+ TkCore::INTERP.init_ip_env{
2287
+ Tk::TreeCtrl::Style::TreeCtrlStyleID_TBL.mutex.synchronize{
2288
+ Tk::TreeCtrl::Style::TreeCtrlStyleID_TBL.clear
2289
+ }
2290
+ }
2291
+
2292
+ def self.id2obj(tree, id)
2293
+ tpath = tree.path
2294
+ Tk::TreeCtrl::Style::TreeCtrlStyleID_TBL.mutex.synchronize{
2295
+ if Tk::TreeCtrl::Style::TreeCtrlStyleID_TBL[tpath]
2296
+ Tk::TreeCtrl::Style::TreeCtrlStyleID_TBL[tpath][id]? \
2297
+ Tk::TreeCtrl::Style::TreeCtrlStyleID_TBL[tpath][id] : id
2298
+ else
2299
+ id
2300
+ end
2301
+ }
2302
+ end
2303
+
2304
+ def initialize(parent, keys=nil)
2305
+ @tree = parent
2306
+ @tpath = parent.path
2307
+
2308
+ Tk::TreeCtrl::Style::TreeCtrlStyleID.mutex.synchronize{
2309
+ @path = @id =
2310
+ Tk::TreeCtrl::Style::TreeCtrlStyleID.join(TkCore::INTERP._ip_id_)
2311
+ Tk::TreeCtrl::Style::TreeCtrlStyleID[1].succ!
2312
+ }
2313
+
2314
+ Tk::TreeCtrl::Style::TreeCtrlStyleID_TBL.mutex.synchronize{
2315
+ Tk::TreeCtrl::Style::TreeCtrlStyleID_TBL[@tpath] ||= {}
2316
+ Tk::TreeCtrl::Style::TreeCtrlStyleID_TBL[@tpath][@id] = self
2317
+ }
2318
+
2319
+ @tree.style_create(@id, keys)
2320
+ end
2321
+
2322
+ def id
2323
+ @id
2324
+ end
2325
+
2326
+ def to_s
2327
+ @id.dup
2328
+ end
2329
+
2330
+ def cget_tkstring(opt)
2331
+ @tree.style_cget_tkstring(@id, opt)
2332
+ end
2333
+ def cget(opt)
2334
+ @tree.style_cget(@id, opt)
2335
+ end
2336
+ def cget_strict(opt)
2337
+ @tree.style_cget_strict(@id, opt)
2338
+ end
2339
+
2340
+ def configure(*args)
2341
+ @tree.style_configure(@id, *args)
2342
+ end
2343
+
2344
+ def configinfo(*args)
2345
+ @tree.style_configinfo(@id, *args)
2346
+ end
2347
+
2348
+ def current_configinfo(*args)
2349
+ @tree.current_style_configinfo(@id, *args)
2350
+ end
2351
+
2352
+ def delete
2353
+ @tree.style_delete(@id)
2354
+ self
2355
+ end
2356
+
2357
+ def elements(*elems)
2358
+ if elems.empty?
2359
+ @tree.style_elements(@id)
2360
+ else
2361
+ @tree.style_elements(@id, *elems)
2362
+ self
2363
+ end
2364
+ end
2365
+
2366
+ def layout(elem, keys=None)
2367
+ if keys && keys != None && keys.kind_of?(Hash)
2368
+ @tree.style_layout(@id, elem, keys)
2369
+ self
2370
+ else
2371
+ @tree.style_layout(@id, elem, keys)
2372
+ end
2373
+ end
2374
+ end
2375
+
2376
+ module Tk::TreeCtrl::BindCallback
2377
+ include Tk
2378
+ extend Tk
2379
+ end
2380
+
2381
+ class << Tk::TreeCtrl::BindCallback
2382
+ def percentsCmd(*args)
2383
+ tk_call('::TreeCtrl::PercentsCmd', *args)
2384
+ end
2385
+ def cursorCheck(w, x, y)
2386
+ tk_call('::TreeCtrl::CursorCheck', w, x, y)
2387
+ end
2388
+ def cursorCheckAux(w)
2389
+ tk_call('::TreeCtrl::CursorCheckAux', w)
2390
+ end
2391
+ def cursorCancel(w)
2392
+ tk_call('::TreeCtrl::CursorCancel', w)
2393
+ end
2394
+ def buttonPress1(w, x, y)
2395
+ tk_call('::TreeCtrl::ButtonPress1', w, x, y)
2396
+ end
2397
+ def doubleButton1(w, x, y)
2398
+ tk_call('::TreeCtrl::DoubleButton1', w, x, y)
2399
+ end
2400
+ def motion1(w, x, y)
2401
+ tk_call('::TreeCtrl::Motion1', w, x, y)
2402
+ end
2403
+ def leave1(w, x, y)
2404
+ tk_call('::TreeCtrl::Leave1', w, x, y)
2405
+ end
2406
+ def release1(w, x, y)
2407
+ tk_call('::TreeCtrl::Release1', w, x, y)
2408
+ end
2409
+ def beginSelect(w, el)
2410
+ tk_call('::TreeCtrl::BeginSelect', w, el)
2411
+ end
2412
+ def motion(w, le)
2413
+ tk_call('::TreeCtrl::Motion', w, el)
2414
+ end
2415
+ def beginExtend(w, el)
2416
+ tk_call('::TreeCtrl::BeginExtend', w, el)
2417
+ end
2418
+ def beginToggle(w, el)
2419
+ tk_call('::TreeCtrl::BeginToggle', w, el)
2420
+ end
2421
+ def cancelRepeat
2422
+ tk_call('::TreeCtrl::CancelRepeat')
2423
+ end
2424
+ def autoScanCheck(w, x, y)
2425
+ tk_call('::TreeCtrl::AutoScanCheck', w, x, y)
2426
+ end
2427
+ def autoScanCheckAux(w)
2428
+ tk_call('::TreeCtrl::AutoScanCheckAux', w)
2429
+ end
2430
+ def autoScanCancel(w)
2431
+ tk_call('::TreeCtrl::AutoScanCancel', w)
2432
+ end
2433
+ def up_down(w, n)
2434
+ tk_call('::TreeCtrl::UpDown', w, n)
2435
+ end
2436
+ def left_right(w, n)
2437
+ tk_call('::TreeCtrl::LeftRight', w, n)
2438
+ end
2439
+ def setActiveItem(w, idx)
2440
+ tk_call('::TreeCtrl::SetActiveItem', w, idx)
2441
+ end
2442
+ def extendUpDown(w, amount)
2443
+ tk_call('::TreeCtrl::ExtendUpDown', w, amount)
2444
+ end
2445
+ def dataExtend(w, el)
2446
+ tk_call('::TreeCtrl::DataExtend', w, el)
2447
+ end
2448
+ def cancel(w)
2449
+ tk_call('::TreeCtrl::Cancel', w)
2450
+ end
2451
+ def selectAll(w)
2452
+ tk_call('::TreeCtrl::selectAll', w)
2453
+ end
2454
+ def marqueeBegin(w, x, y)
2455
+ tk_call('::TreeCtrl::MarqueeBegin', w, x, y)
2456
+ end
2457
+ def marqueeUpdate(w, x, y)
2458
+ tk_call('::TreeCtrl::MarqueeUpdate', w, x, y)
2459
+ end
2460
+ def marqueeEnd(w, x, y)
2461
+ tk_call('::TreeCtrl::MarqueeEnd', w, x, y)
2462
+ end
2463
+ def scanMark(w, x, y)
2464
+ tk_call('::TreeCtrl::ScanMark', w, x, y)
2465
+ end
2466
+ def scanDrag(w, x, y)
2467
+ tk_call('::TreeCtrl::ScanDrag', w, x, y)
2468
+ end
2469
+
2470
+ # filelist-bindings
2471
+ def fileList_button1(w, x, y)
2472
+ tk_call('::TreeCtrl::FileListButton1', w, x, y)
2473
+ end
2474
+ def fileList_motion1(w, x, y)
2475
+ tk_call('::TreeCtrl::FileListMotion1', w, x, y)
2476
+ end
2477
+ def fileList_motion(w, x, y)
2478
+ tk_call('::TreeCtrl::FileListMotion', w, x, y)
2479
+ end
2480
+ def fileList_leave1(w, x, y)
2481
+ tk_call('::TreeCtrl::FileListLeave1', w, x, y)
2482
+ end
2483
+ def fileList_release1(w, x, y)
2484
+ tk_call('::TreeCtrl::FileListRelease1', w, x, y)
2485
+ end
2486
+ def fileList_edit(w, i, s, e)
2487
+ tk_call('::TreeCtrl::FileListEdit', w, i, s, e)
2488
+ end
2489
+ def fileList_editCancel(w)
2490
+ tk_call('::TreeCtrl::FileListEditCancel', w)
2491
+ end
2492
+ def fileList_autoScanCheck(w, x, y)
2493
+ tk_call('::TreeCtrl::FileListAutoScanCheck', w, x, y)
2494
+ end
2495
+ def fileList_autoScanCheckAux(w)
2496
+ tk_call('::TreeCtrl::FileListAutoScanCheckAux', w)
2497
+ end
2498
+
2499
+ def entryOpen(w, item, col, elem)
2500
+ tk_call('::TreeCtrl::EntryOpen', w, item, col, elem)
2501
+ end
2502
+ def entryExpanderOpen(w, item, col, elem)
2503
+ tk_call('::TreeCtrl::EntryExpanderOpen', w, item, col, elem)
2504
+ end
2505
+ def entryClose(w, accept)
2506
+ tk_call('::TreeCtrl::EntryClose', w, accept)
2507
+ end
2508
+ def entryExpanderKeypress(w)
2509
+ tk_call('::TreeCtrl::EntryExpanderKeypress', w)
2510
+ end
2511
+ def textOpen(w, item, col, elem, width=0, height=0)
2512
+ tk_call('::TreeCtrl::TextOpen', w, item, col, elem, width, height)
2513
+ end
2514
+ def textExpanderOpen(w, item, col, elem, width)
2515
+ tk_call('::TreeCtrl::TextOpen', w, item, col, elem, width)
2516
+ end
2517
+ def textClose(w, accept)
2518
+ tk_call('::TreeCtrl::TextClose', w, accept)
2519
+ end
2520
+ def textExpanderKeypress(w)
2521
+ tk_call('::TreeCtrl::TextExpanderKeypress', w)
2522
+ end
2523
+ end