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,246 @@
1
+ # frozen_string_literal: false
2
+ #
3
+ # tpaned widget
4
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
5
+ #
6
+ require 'tk'
7
+ require 'tkextlib/tile.rb'
8
+
9
+ module Tk
10
+ module Tile
11
+ class TPaned < TkWindow
12
+ end
13
+ PanedWindow = Panedwindow = Paned = TPaned
14
+ end
15
+ end
16
+
17
+ class Tk::Tile::TPaned < TkWindow
18
+ include Tk::Tile::TileWidget
19
+
20
+ if Tk::Tile::USE_TTK_NAMESPACE
21
+ if Tk::Tile::TILE_SPEC_VERSION_ID < 8
22
+ TkCommandNames = ['::ttk::paned'.freeze].freeze
23
+ else
24
+ TkCommandNames = ['::ttk::panedwindow'.freeze].freeze
25
+ end
26
+ else
27
+ TkCommandNames = ['::tpaned'.freeze].freeze
28
+ end
29
+ WidgetClassName = 'TPaned'.freeze
30
+ WidgetClassNames[WidgetClassName] ||= self
31
+
32
+ def self.style(*args)
33
+ [self::WidgetClassName, *(args.map!{|a| _get_eval_string(a)})].join('.')
34
+ end
35
+
36
+ def add(*args)
37
+ keys = args.pop
38
+ fail ArgumentError, "no window in arguments" unless keys
39
+
40
+ if keys && keys.kind_of?(Hash)
41
+ fail ArgumentError, "no window in arguments" if args == []
42
+ opts = hash_kv(keys)
43
+ else
44
+ args.push(keys) if keys
45
+ opts = []
46
+ end
47
+
48
+ args.each{|win|
49
+ tk_send_without_enc('add', _epath(win), *opts)
50
+ }
51
+ self
52
+ end
53
+
54
+ def forget(pane)
55
+ pane = _epath(pane)
56
+ tk_send_without_enc('forget', pane)
57
+ self
58
+ end
59
+
60
+ def insert(pos, win, keys)
61
+ win = _epath(win)
62
+ tk_send_without_enc('insert', pos, win, *hash_kv(keys))
63
+ self
64
+ end
65
+
66
+ def panecget_tkstring(pane, slot)
67
+ pane = _epath(pane)
68
+ tk_send_without_enc('pane', pane, "-#{slot}")
69
+ end
70
+ alias pane_cget_tkstring panecget_tkstring
71
+
72
+ def panecget_strict(pane, slot)
73
+ pane = _epath(pane)
74
+ tk_tcl2ruby(tk_send_without_enc('pane', pane, "-#{slot}"))
75
+ end
76
+ alias pane_cget_strict panecget_strict
77
+
78
+ def panecget(pane, slot)
79
+ unless TkItemConfigMethod.__IGNORE_UNKNOWN_CONFIGURE_OPTION__
80
+ panecget_strict(pane, slot)
81
+ else
82
+ begin
83
+ panecget_strict(pane, slot)
84
+ rescue => e
85
+ begin
86
+ if current_paneconfiginfo(pane).has_key?(slot.to_s)
87
+ # not tag error & option is known -> error on known option
88
+ fail e
89
+ else
90
+ # not tag error & option is unknown
91
+ nil
92
+ end
93
+ rescue
94
+ fail e # tag error
95
+ end
96
+ end
97
+ end
98
+ end
99
+ alias pane_cget panecget
100
+
101
+ def paneconfigure(pane, key, value=nil)
102
+ pane = _epath(pane)
103
+ if key.kind_of? Hash
104
+ params = []
105
+ key.each{|k, v|
106
+ params.push("-#{k}")
107
+ # params.push((v.kind_of?(TkObject))? v.epath: v)
108
+ params.push(_epath(v))
109
+ }
110
+ tk_send_without_enc('pane', pane, *params)
111
+ else
112
+ # value = value.epath if value.kind_of?(TkObject)
113
+ value = _epath(value)
114
+ tk_send_without_enc('pane', pane, "-#{key}", value)
115
+ end
116
+ self
117
+ end
118
+ alias pane_config paneconfigure
119
+ alias pane_configure paneconfigure
120
+
121
+ def paneconfiginfo(win)
122
+ if TkComm::GET_CONFIGINFO_AS_ARRAY
123
+ win = _epath(win)
124
+ if key
125
+ conf = tk_split_list(tk_send_without_enc('pane', win, "-#{key}"))
126
+ conf[0] = conf[0][1..-1]
127
+ if conf[0] == 'hide'
128
+ conf[3] = bool(conf[3]) unless conf[3].empty?
129
+ conf[4] = bool(conf[4]) unless conf[4].empty?
130
+ end
131
+ conf
132
+ else
133
+ tk_split_simplelist(tk_send_without_enc('pane',
134
+ win)).collect{|conflist|
135
+ conf = tk_split_simplelist(conflist)
136
+ conf[0] = conf[0][1..-1]
137
+ if conf[3]
138
+ if conf[0] == 'hide'
139
+ conf[3] = bool(conf[3]) unless conf[3].empty?
140
+ elsif conf[3].index('{')
141
+ conf[3] = tk_split_list(conf[3])
142
+ else
143
+ conf[3] = tk_tcl2ruby(conf[3])
144
+ end
145
+ end
146
+ if conf[4]
147
+ if conf[0] == 'hide'
148
+ conf[4] = bool(conf[4]) unless conf[4].empty?
149
+ elsif conf[4].index('{')
150
+ conf[4] = tk_split_list(conf[4])
151
+ else
152
+ conf[4] = tk_tcl2ruby(conf[4])
153
+ end
154
+ end
155
+ conf[1] = conf[1][1..-1] if conf.size == 2 # alias info
156
+ conf
157
+ }
158
+ end
159
+ else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
160
+ win = _epath(win)
161
+ if key
162
+ conf = tk_split_list(tk_send_without_enc('pane', win, "-#{key}"))
163
+ key = conf.shift[1..-1]
164
+ if key == 'hide'
165
+ conf[2] = bool(conf[2]) unless conf[2].empty?
166
+ conf[3] = bool(conf[3]) unless conf[3].empty?
167
+ end
168
+ { key => conf }
169
+ else
170
+ ret = {}
171
+ tk_split_simplelist(tk_send_without_enc('pane',
172
+ win)).each{|conflist|
173
+ conf = tk_split_simplelist(conflist)
174
+ key = conf.shift[1..-1]
175
+ if key
176
+ if key == 'hide'
177
+ conf[2] = bool(conf[2]) unless conf[2].empty?
178
+ elsif conf[2].index('{')
179
+ conf[2] = tk_split_list(conf[2])
180
+ else
181
+ conf[2] = tk_tcl2ruby(conf[2])
182
+ end
183
+ end
184
+ if conf[3]
185
+ if key == 'hide'
186
+ conf[3] = bool(conf[3]) unless conf[3].empty?
187
+ elsif conf[3].index('{')
188
+ conf[3] = tk_split_list(conf[3])
189
+ else
190
+ conf[3] = tk_tcl2ruby(conf[3])
191
+ end
192
+ end
193
+ if conf.size == 1
194
+ ret[key] = conf[0][1..-1] # alias info
195
+ else
196
+ ret[key] = conf
197
+ end
198
+ }
199
+ ret
200
+ end
201
+ end
202
+ end
203
+ alias pane_configinfo paneconfiginfo
204
+
205
+ def current_paneconfiginfo(win, key=nil)
206
+ if TkComm::GET_CONFIGINFO_AS_ARRAY
207
+ if key
208
+ conf = paneconfiginfo(win, key)
209
+ {conf[0] => conf[4]}
210
+ else
211
+ ret = {}
212
+ paneconfiginfo(win).each{|conf|
213
+ ret[conf[0]] = conf[4] if conf.size > 2
214
+ }
215
+ ret
216
+ end
217
+ else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
218
+ ret = {}
219
+ paneconfiginfo(win, key).each{|k, conf|
220
+ ret[k] = conf[-1] if conf.kind_of?(Array)
221
+ }
222
+ ret
223
+ end
224
+ end
225
+ alias current_pane_configinfo current_paneconfiginfo
226
+
227
+ def panes
228
+ tk_split_simplelist(tk_send_without_enc('panes')).map{|w|
229
+ (obj = window(w))? obj: w
230
+ }
231
+ end
232
+
233
+ def identify(x, y)
234
+ num_or_nil(tk_send_without_enc('identify', x, y))
235
+ end
236
+
237
+ def sashpos(idx, newpos=None)
238
+ num_or_str(tk_send_without_enc('sashpos', idx, newpos))
239
+ end
240
+ end
241
+
242
+ #Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Panedwindow,
243
+ # :TkPanedwindow, :TkPanedWindow)
244
+ Tk.__set_loaded_toplevel_aliases__('tkextlib/tile/tpaned.rb',
245
+ :Ttk, Tk::Tile::Panedwindow,
246
+ :TkPanedwindow, :TkPanedWindow)
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: false
2
+ #
3
+ # tprogressbar widget
4
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
5
+ #
6
+ require 'tk'
7
+ require 'tkextlib/tile.rb'
8
+
9
+ module Tk
10
+ module Tile
11
+ class TProgressbar < TkWindow
12
+ end
13
+ Progressbar = TProgressbar
14
+ end
15
+ end
16
+
17
+ class Tk::Tile::TProgressbar
18
+ include Tk::Tile::TileWidget
19
+
20
+ if Tk::Tile::USE_TTK_NAMESPACE
21
+ TkCommandNames = ['::ttk::progressbar'.freeze].freeze
22
+ else
23
+ TkCommandNames = ['::tprogressbar'.freeze].freeze
24
+ end
25
+ WidgetClassName = 'TProgressbar'.freeze
26
+ WidgetClassNames[WidgetClassName] ||= self
27
+
28
+ def self.style(*args)
29
+ [self::WidgetClassName, *(args.map!{|a| _get_eval_string(a)})].join('.')
30
+ end
31
+
32
+ def step(amount=None)
33
+ tk_send_without_enc('step', amount).to_f
34
+ end
35
+ #def step=(amount)
36
+ # tk_send_without_enc('step', amount)
37
+ #end
38
+
39
+ def start(interval=None)
40
+ if Tk::Tile::TILE_SPEC_VERSION_ID < 5
41
+ tk_call_without_enc('::tile::progressbar::start', @path, interval)
42
+ else
43
+ tk_send_without_enc('start', interval)
44
+ end
45
+ end
46
+
47
+ def stop(amount=None)
48
+ if Tk::Tile::TILE_SPEC_VERSION_ID < 5
49
+ tk_call_without_enc('::tile::progressbar::stop', @path)
50
+ else
51
+ tk_send_without_enc('stop', amount)
52
+ end
53
+ end
54
+ end
55
+
56
+ #Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Progressbar, :TkProgressbar)
57
+ Tk.__set_loaded_toplevel_aliases__('tkextlib/tile/tprogressbar.rb',
58
+ :Ttk, Tk::Tile::Progressbar, :TkProgressbar)
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: false
2
+ #
3
+ # tradiobutton widget
4
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
5
+ #
6
+ require 'tk'
7
+ require 'tkextlib/tile.rb'
8
+
9
+ module Tk
10
+ module Tile
11
+ class TRadioButton < Tk::RadioButton
12
+ end
13
+ TRadiobutton = TRadioButton
14
+ RadioButton = TRadioButton
15
+ Radiobutton = TRadioButton
16
+ end
17
+ end
18
+
19
+ class Tk::Tile::TRadioButton < Tk::RadioButton
20
+ include Tk::Tile::TileWidget
21
+
22
+ if Tk::Tile::USE_TTK_NAMESPACE
23
+ TkCommandNames = ['::ttk::radiobutton'.freeze].freeze
24
+ else
25
+ TkCommandNames = ['::tradiobutton'.freeze].freeze
26
+ end
27
+ WidgetClassName = 'TRadiobutton'.freeze
28
+ WidgetClassNames[WidgetClassName] ||= self
29
+
30
+ def self.style(*args)
31
+ [self::WidgetClassName, *(args.map!{|a| _get_eval_string(a)})].join('.')
32
+ end
33
+ end
34
+
35
+ #Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Radiobutton,
36
+ # :TkRadiobutton, :TkRadioButton)
37
+ Tk.__set_loaded_toplevel_aliases__('tkextlib/tile/tradiobutton.rb',
38
+ :Ttk, Tk::Tile::Radiobutton,
39
+ :TkRadiobutton, :TkRadioButton)
@@ -0,0 +1,1337 @@
1
+ # frozen_string_literal: false
2
+ #
3
+ # treeview widget
4
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
5
+ #
6
+ require 'tk'
7
+ require 'tkextlib/tile.rb'
8
+
9
+ module Tk
10
+ module Tile
11
+ class Treeview < TkWindow
12
+ end
13
+ end
14
+ end
15
+
16
+ module Tk::Tile::TreeviewConfig
17
+ include TkItemConfigMethod
18
+
19
+ def __item_configinfo_struct(id)
20
+ # maybe need to override
21
+ {:key=>0, :alias=>nil, :db_name=>nil, :db_class=>nil,
22
+ :default_value=>nil, :current_value=>1}
23
+ end
24
+ private :__item_configinfo_struct
25
+
26
+ def __itemconfiginfo_core(tagOrId, slot = nil)
27
+ if TkComm::GET_CONFIGINFO_AS_ARRAY
28
+ if (slot && slot.to_s =~ /^(|latin|ascii|kanji)(#{__item_font_optkeys(tagid(tagOrId)).join('|')})$/)
29
+ fontkey = $2
30
+ return [slot.to_s, tagfontobj(tagid(tagOrId), fontkey)]
31
+ else
32
+ if slot
33
+ slot = slot.to_s
34
+
35
+ alias_name, real_name = __item_optkey_aliases(tagid(tagOrId)).find{|k, v| k.to_s == slot}
36
+ if real_name
37
+ slot = real_name.to_s
38
+ end
39
+
40
+ case slot
41
+ when /^(#{__tile_specific_item_optkeys(tagid(tagOrId)).join('|')})$/
42
+ begin
43
+ # On tile-0.7.{2-8}, 'state' options has no '-' at its head.
44
+ val = tk_call(*(__item_confinfo_cmd(tagid(tagOrId)) << slot))
45
+ rescue
46
+ # Maybe, 'state' option has '-' in future.
47
+ val = tk_call(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))
48
+ end
49
+ return [slot, val]
50
+
51
+ when /^(#{__item_val2ruby_optkeys(tagid(tagOrId)).keys.join('|')})$/
52
+ method = _symbolkey2str(__item_val2ruby_optkeys(tagid(tagOrId)))[slot]
53
+ optval = tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))
54
+ begin
55
+ val = method.call(tagOrId, optval)
56
+ rescue => e
57
+ warn("Warning:: #{e.message} (when #{method}lcall(#{tagOrId.inspect}, #{optval.inspect})") if $DEBUG
58
+ val = optval
59
+ end
60
+ return [slot, val]
61
+
62
+ when /^(#{__item_methodcall_optkeys(tagid(tagOrId)).keys.join('|')})$/
63
+ method = _symbolkey2str(__item_methodcall_optkeys(tagid(tagOrId)))[slot]
64
+ return [slot, self.__send__(method, tagOrId)]
65
+
66
+ when /^(#{__item_numval_optkeys(tagid(tagOrId)).join('|')})$/
67
+ begin
68
+ val = number(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")))
69
+ rescue
70
+ val = nil
71
+ end
72
+ return [slot, val]
73
+
74
+ when /^(#{__item_numstrval_optkeys(tagid(tagOrId)).join('|')})$/
75
+ val = num_or_str(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")))
76
+ return [slot, val]
77
+
78
+ when /^(#{__item_boolval_optkeys(tagid(tagOrId)).join('|')})$/
79
+ begin
80
+ val = bool(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")))
81
+ rescue
82
+ val = nil
83
+ end
84
+ return [slot, val]
85
+
86
+ when /^(#{__item_listval_optkeys(tagid(tagOrId)).join('|')})$/
87
+ val = simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")))
88
+ return [slot, val]
89
+
90
+ when /^(#{__item_numlistval_optkeys(tagid(tagOrId)).join('|')})$/
91
+ val = tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))
92
+ if val =~ /^[0-9]/
93
+ return [slot, list(val)]
94
+ else
95
+ return [slot, val]
96
+ end
97
+
98
+ when /^(#{__item_strval_optkeys(tagid(tagOrId)).join('|')})$/
99
+ val = tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))
100
+ return [slot, val]
101
+
102
+ when /^(#{__item_tkvariable_optkeys(tagid(tagOrId)).join('|')})$/
103
+ val = tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))
104
+ if val.empty?
105
+ return [slot, nil]
106
+ else
107
+ return [slot, TkVarAccess.new(val)]
108
+ end
109
+
110
+ else
111
+ val = tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))
112
+ if val.index('{')
113
+ return [slot, tk_split_list(val)]
114
+ else
115
+ return [slot, tk_tcl2ruby(val)]
116
+ end
117
+ end
118
+
119
+ else # ! slot
120
+ ret = Hash[*(tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)))), false, false))].to_a.collect{|conf|
121
+ conf[0] = conf[0][1..-1] if conf[0][0] == ?-
122
+ case conf[0]
123
+ when /^(#{__item_val2ruby_optkeys(tagid(tagOrId)).keys.join('|')})$/
124
+ method = _symbolkey2str(__item_val2ruby_optkeys(tagid(tagOrId)))[conf[0]]
125
+ optval = conf[1]
126
+ begin
127
+ val = method.call(tagOrId, optval)
128
+ rescue => e
129
+ warn("Warning:: #{e.message} (when #{method}.call(#{tagOrId.inspect}, #{optval.inspect})") if $DEBUG
130
+ val = optval
131
+ end
132
+ conf[1] = val
133
+
134
+ when /^(#{__item_strval_optkeys(tagid(tagOrId)).join('|')})$/
135
+ # do nothing
136
+
137
+ when /^(#{__item_numval_optkeys(tagid(tagOrId)).join('|')})$/
138
+ begin
139
+ conf[1] = number(conf[1])
140
+ rescue
141
+ conf[1] = nil
142
+ end
143
+
144
+ when /^(#{__item_numstrval_optkeys(tagid(tagOrId)).join('|')})$/
145
+ conf[1] = num_or_str(conf[1])
146
+
147
+ when /^(#{__item_boolval_optkeys(tagid(tagOrId)).join('|')})$/
148
+ begin
149
+ conf[1] = bool(conf[1])
150
+ rescue
151
+ conf[1] = nil
152
+ end
153
+
154
+ when /^(#{__item_listval_optkeys(tagid(tagOrId)).join('|')})$/
155
+ conf[1] = simplelist(conf[1])
156
+
157
+ when /^(#{__item_numlistval_optkeys(tagid(tagOrId)).join('|')})$/
158
+ if conf[1] =~ /^[0-9]/
159
+ conf[1] = list(conf[1])
160
+ end
161
+
162
+ when /^(#{__item_tkvariable_optkeys(tagid(tagOrId)).join('|')})$/
163
+ if conf[1].empty?
164
+ conf[1] = nil
165
+ else
166
+ conf[1] = TkVarAccess.new(conf[1])
167
+ end
168
+
169
+ else
170
+ if conf[1].index('{')
171
+ conf[1] = tk_split_list(conf[1])
172
+ else
173
+ conf[1] = tk_tcl2ruby(conf[1])
174
+ end
175
+ end
176
+
177
+ conf
178
+ }
179
+
180
+ __item_font_optkeys(tagid(tagOrId)).each{|optkey|
181
+ optkey = optkey.to_s
182
+ fontconf = ret.assoc(optkey)
183
+ if fontconf
184
+ ret.delete_if{|inf| inf[0] =~ /^(|latin|ascii|kanji)#{optkey}$/}
185
+ fontconf[1] = tagfontobj(tagid(tagOrId), optkey)
186
+ ret.push(fontconf)
187
+ end
188
+ }
189
+
190
+ __item_methodcall_optkeys(tagid(tagOrId)).each{|optkey, method|
191
+ ret << [optkey.to_s, self.__send__(method, tagOrId)]
192
+ }
193
+
194
+ ret
195
+ end
196
+ end
197
+
198
+ else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
199
+ if (slot && slot.to_s =~ /^(|latin|ascii|kanji)(#{__item_font_optkeys(tagid(tagOrId)).join('|')})$/)
200
+ fontkey = $2
201
+ return {slot.to_s => tagfontobj(tagid(tagOrId), fontkey)}
202
+ else
203
+ if slot
204
+ slot = slot.to_s
205
+
206
+ alias_name, real_name = __item_optkey_aliases(tagid(tagOrId)).find{|k, v| k.to_s == slot}
207
+ if real_name
208
+ slot = real_name.to_s
209
+ end
210
+
211
+ case slot
212
+ when /^(#{__tile_specific_item_optkeys(tagid(tagOrId)).join('|')})$/
213
+ begin
214
+ # On tile-0.7.{2-8}, 'state' option has no '-' at its head.
215
+ val = tk_call(*(__item_confinfo_cmd(tagid(tagOrId)) << slot))
216
+ rescue
217
+ # Maybe, 'state' option has '-' in future.
218
+ val = tk_call(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))
219
+ end
220
+ return {slot => val}
221
+
222
+ when /^(#{__item_val2ruby_optkeys(tagid(tagOrId)).keys.join('|')})$/
223
+ method = _symbolkey2str(__item_val2ruby_optkeys(tagid(tagOrId)))[slot]
224
+ optval = tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))
225
+ begin
226
+ val = method.call(tagOrId, optval)
227
+ rescue => e
228
+ warn("Warning:: #{e.message} (when #{method}lcall(#{tagOrId.inspect}, #{optval.inspect})") if $DEBUG
229
+ val = optval
230
+ end
231
+ return {slot => val}
232
+
233
+ when /^(#{__item_methodcall_optkeys(tagid(tagOrId)).keys.join('|')})$/
234
+ method = _symbolkey2str(__item_methodcall_optkeys(tagid(tagOrId)))[slot]
235
+ return {slot => self.__send__(method, tagOrId)}
236
+
237
+ when /^(#{__item_numval_optkeys(tagid(tagOrId)).join('|')})$/
238
+ begin
239
+ val = number(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")))
240
+ rescue
241
+ val = nil
242
+ end
243
+ return {slot => val}
244
+
245
+ when /^(#{__item_numstrval_optkeys(tagid(tagOrId)).join('|')})$/
246
+ val = num_or_str(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")))
247
+ return {slot => val}
248
+
249
+ when /^(#{__item_boolval_optkeys(tagid(tagOrId)).join('|')})$/
250
+ begin
251
+ val = bool(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")))
252
+ rescue
253
+ val = nil
254
+ end
255
+ return {slot => val}
256
+
257
+ when /^(#{__item_listval_optkeys(tagid(tagOrId)).join('|')})$/
258
+ val = simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")))
259
+ return {slot => val}
260
+
261
+ when /^(#{__item_numlistval_optkeys(tagid(tagOrId)).join('|')})$/
262
+ val = tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))
263
+ if val =~ /^[0-9]/
264
+ return {slot => list(val)}
265
+ else
266
+ return {slot => val}
267
+ end
268
+
269
+ when /^(#{__item_strval_optkeys(tagid(tagOrId)).join('|')})$/
270
+ val = tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))
271
+ return {slot => val}
272
+
273
+ when /^(#{__item_tkvariable_optkeys(tagid(tagOrId)).join('|')})$/
274
+ val = tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))
275
+ if val.empty?
276
+ return {slot => nil}
277
+ else
278
+ return {slot => TkVarAccess.new(val)}
279
+ end
280
+
281
+ else
282
+ val = tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))
283
+ if val.index('{')
284
+ return {slot => tk_split_list(val)}
285
+ else
286
+ return {slot => tk_tcl2ruby(val)}
287
+ end
288
+ end
289
+
290
+ else # ! slot
291
+ ret = {}
292
+ ret = Hash[*(tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)))), false, false))].to_a.collect{|conf|
293
+ conf[0] = conf[0][1..-1] if conf[0][0] == ?-
294
+
295
+ optkey = conf[0]
296
+ case optkey
297
+ when /^(#{__item_val2ruby_optkeys(tagid(tagOrId)).keys.join('|')})$/
298
+ method = _symbolkey2str(__item_val2ruby_optkeys(tagid(tagOrId)))[optkey]
299
+ optval = conf[1]
300
+ begin
301
+ val = method.call(tagOrId, optval)
302
+ rescue => e
303
+ warn("Warning:: #{e.message} (when #{method}.call(#{tagOrId.inspect}, #{optval.inspect})") if $DEBUG
304
+ val = optval
305
+ end
306
+ conf[1] = val
307
+
308
+ when /^(#{__item_strval_optkeys(tagid(tagOrId)).join('|')})$/
309
+ # do nothing
310
+
311
+ when /^(#{__item_numval_optkeys(tagid(tagOrId)).join('|')})$/
312
+ begin
313
+ conf[1] = number(conf[1])
314
+ rescue
315
+ conf[1] = nil
316
+ end
317
+
318
+ when /^(#{__item_numstrval_optkeys(tagid(tagOrId)).join('|')})$/
319
+ conf[1] = num_or_str(conf[1])
320
+
321
+ when /^(#{__item_boolval_optkeys(tagid(tagOrId)).join('|')})$/
322
+ begin
323
+ conf[1] = bool(conf[1])
324
+ rescue
325
+ conf[1] = nil
326
+ end
327
+
328
+ when /^(#{__item_listval_optkeys(tagid(tagOrId)).join('|')})$/
329
+ conf[1] = simplelist(conf[1])
330
+
331
+ when /^(#{__item_numlistval_optkeys(tagid(tagOrId)).join('|')})$/
332
+ if conf[1] =~ /^[0-9]/
333
+ conf[1] = list(conf[1])
334
+ end
335
+
336
+ when /^(#{__item_tkvariable_optkeys(tagid(tagOrId)).join('|')})$/
337
+ if conf[1].empty?
338
+ conf[1] = nil
339
+ else
340
+ conf[1] = TkVarAccess.new(conf[1])
341
+ end
342
+
343
+ else
344
+ if conf[1].index('{')
345
+ return [slot, tk_split_list(conf[1])]
346
+ else
347
+ return [slot, tk_tcl2ruby(conf[1])]
348
+ end
349
+ end
350
+
351
+ ret[conf[0]] = conf[1]
352
+ }
353
+
354
+ __item_font_optkeys(tagid(tagOrId)).each{|optkey|
355
+ optkey = optkey.to_s
356
+ fontconf = ret[optkey]
357
+ if fontconf.kind_of?(Array)
358
+ ret.delete(optkey)
359
+ ret.delete('latin' << optkey)
360
+ ret.delete('ascii' << optkey)
361
+ ret.delete('kanji' << optkey)
362
+ fontconf[1] = tagfontobj(tagid(tagOrId), optkey)
363
+ ret[optkey] = fontconf
364
+ end
365
+ }
366
+
367
+ __item_methodcall_optkeys(tagid(tagOrId)).each{|optkey, method|
368
+ ret[optkey.to_s] = self.__send__(method, tagOrId)
369
+ }
370
+
371
+ ret
372
+ end
373
+ end
374
+ end
375
+ end
376
+
377
+ ###################
378
+
379
+ def __item_cget_cmd(id)
380
+ [self.path, *id]
381
+ end
382
+ private :__item_cget_cmd
383
+
384
+ def __item_config_cmd(id)
385
+ [self.path, *id]
386
+ end
387
+ private :__item_config_cmd
388
+
389
+ def __item_numstrval_optkeys(id)
390
+ case id[0]
391
+ when :item, 'item'
392
+ ['width']
393
+ when :column, 'column'
394
+ super(id[1]) + ['minwidth']
395
+ when :tag, 'tag'
396
+ super(id[1])
397
+ when :heading, 'heading'
398
+ super(id[1])
399
+ else
400
+ super(id[1])
401
+ end
402
+ end
403
+ private :__item_numstrval_optkeys
404
+
405
+ def __item_strval_optkeys(id)
406
+ case id[0]
407
+ when :item, 'item'
408
+ super(id) + ['id']
409
+ when :column, 'column'
410
+ super(id[1])
411
+ when :tag, 'tag'
412
+ super(id[1])
413
+ when :heading, 'heading'
414
+ super(id[1])
415
+ else
416
+ super(id[1])
417
+ end
418
+ end
419
+ private :__item_strval_optkeys
420
+
421
+ def __item_boolval_optkeys(id)
422
+ case id[0]
423
+ when :item, 'item'
424
+ ['open']
425
+ when :column, 'column'
426
+ super(id[1]) + ['stretch']
427
+ when :tag, 'tag'
428
+ super(id[1])
429
+ when :heading, 'heading'
430
+ super(id[1])
431
+ end
432
+ end
433
+ private :__item_boolval_optkeys
434
+
435
+ def __item_listval_optkeys(id)
436
+ case id[0]
437
+ when :item, 'item'
438
+ ['values']
439
+ when :column, 'column'
440
+ []
441
+ when :heading, 'heading'
442
+ []
443
+ else
444
+ []
445
+ end
446
+ end
447
+ private :__item_listval_optkeys
448
+
449
+ def __item_val2ruby_optkeys(id)
450
+ case id[0]
451
+ when :item, 'item'
452
+ {
453
+ 'tags'=>proc{|arg_id, val|
454
+ simplelist(val).collect{|tag|
455
+ Tk::Tile::Treeview::Tag.id2obj(self, tag)
456
+ }
457
+ }
458
+ }
459
+ when :column, 'column'
460
+ {}
461
+ when :heading, 'heading'
462
+ {}
463
+ else
464
+ {}
465
+ end
466
+ end
467
+ private :__item_val2ruby_optkeys
468
+
469
+ def __tile_specific_item_optkeys(id)
470
+ case id[0]
471
+ when :item, 'item'
472
+ []
473
+ when :column, 'column'
474
+ []
475
+ when :heading, 'heading'
476
+ ['state'] # On tile-0.7.{2-8}, 'state' options has no '-' at its head.
477
+ else
478
+ []
479
+ end
480
+ end
481
+ private :__item_val2ruby_optkeys
482
+
483
+ def itemconfiginfo(tagOrId, slot = nil)
484
+ __itemconfiginfo_core(tagOrId, slot)
485
+ end
486
+
487
+ def current_itemconfiginfo(tagOrId, slot = nil)
488
+ if TkComm::GET_CONFIGINFO_AS_ARRAY
489
+ if slot
490
+ org_slot = slot
491
+ begin
492
+ conf = __itemconfiginfo_core(tagOrId, slot)
493
+ if ( ! __item_configinfo_struct(tagid(tagOrId))[:alias] \
494
+ || conf.size > __item_configinfo_struct(tagid(tagOrId))[:alias] + 1 )
495
+ return {conf[0] => conf[-1]}
496
+ end
497
+ slot = conf[__item_configinfo_struct(tagid(tagOrId))[:alias]]
498
+ end while(org_slot != slot)
499
+ fail RuntimeError,
500
+ "there is a configure alias loop about '#{org_slot}'"
501
+ else
502
+ ret = {}
503
+ __itemconfiginfo_core(tagOrId).each{|conf|
504
+ if ( ! __item_configinfo_struct(tagid(tagOrId))[:alias] \
505
+ || conf.size > __item_configinfo_struct(tagid(tagOrId))[:alias] + 1 )
506
+ ret[conf[0]] = conf[-1]
507
+ end
508
+ }
509
+ ret
510
+ end
511
+ else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
512
+ ret = {}
513
+ __itemconfiginfo_core(tagOrId, slot).each{|key, conf|
514
+ ret[key] = conf[-1] if conf.kind_of?(Array)
515
+ }
516
+ ret
517
+ end
518
+ end
519
+
520
+ alias __itemcget_tkstring itemcget_tkstring
521
+ alias __itemcget itemcget
522
+ alias __itemcget_strict itemcget_strict
523
+ alias __itemconfigure itemconfigure
524
+ alias __itemconfiginfo itemconfiginfo
525
+ alias __current_itemconfiginfo current_itemconfiginfo
526
+
527
+ private :__itemcget_tkstring, :__itemcget, :__itemcget_strict
528
+ private :__itemconfigure, :__itemconfiginfo, :__current_itemconfiginfo
529
+
530
+ # Treeview Item
531
+ def itemcget_tkstring(tagOrId, option)
532
+ __itemcget_tkstring([:item, tagOrId], option)
533
+ end
534
+ def itemcget(tagOrId, option)
535
+ __itemcget([:item, tagOrId], option)
536
+ end
537
+ def itemcget_strict(tagOrId, option)
538
+ __itemcget_strict([:item, tagOrId], option)
539
+ end
540
+ def itemconfigure(tagOrId, slot, value=None)
541
+ __itemconfigure([:item, tagOrId], slot, value)
542
+ end
543
+ def itemconfiginfo(tagOrId, slot=nil)
544
+ __itemconfiginfo([:item, tagOrId], slot)
545
+ end
546
+ def current_itemconfiginfo(tagOrId, slot=nil)
547
+ __current_itemconfiginfo([:item, tagOrId], slot)
548
+ end
549
+
550
+ # Treeview Column
551
+ def columncget_tkstring(tagOrId, option)
552
+ __itemcget_tkstring([:column, tagOrId], option)
553
+ end
554
+ def columncget(tagOrId, option)
555
+ __itemcget([:column, tagOrId], option)
556
+ end
557
+ def columncget_strict(tagOrId, option)
558
+ __itemcget_strict([:column, tagOrId], option)
559
+ end
560
+ def columnconfigure(tagOrId, slot, value=None)
561
+ __itemconfigure([:column, tagOrId], slot, value)
562
+ end
563
+ def columnconfiginfo(tagOrId, slot=nil)
564
+ __itemconfiginfo([:column, tagOrId], slot)
565
+ end
566
+ def current_columnconfiginfo(tagOrId, slot=nil)
567
+ __current_itemconfiginfo([:column, tagOrId], slot)
568
+ end
569
+ alias column_cget_tkstring columncget_tkstring
570
+ alias column_cget columncget
571
+ alias column_cget_strict columncget_strict
572
+ alias column_configure columnconfigure
573
+ alias column_configinfo columnconfiginfo
574
+ alias current_column_configinfo current_columnconfiginfo
575
+
576
+ # Treeview Heading
577
+ def headingcget_tkstring(tagOrId, option)
578
+ if __tile_specific_item_optkeys([:heading, tagOrId]).index(option.to_s)
579
+ begin
580
+ # On tile-0.7.{2-8}, 'state' options has no '-' at its head.
581
+ tk_call(*(__item_cget_cmd([:heading, tagOrId]) << option.to_s))
582
+ rescue
583
+ # Maybe, 'state' option has '-' in future.
584
+ tk_call(*(__item_cget_cmd([:heading, tagOrId]) << "-#{option}"))
585
+ end
586
+ else
587
+ __itemcget_tkstring([:heading, tagOrId], option)
588
+ end
589
+ end
590
+ def headingcget_strict(tagOrId, option)
591
+ if __tile_specific_item_optkeys([:heading, tagOrId]).index(option.to_s)
592
+ begin
593
+ # On tile-0.7.{2-8}, 'state' options has no '-' at its head.
594
+ tk_call(*(__item_cget_cmd([:heading, tagOrId]) << option.to_s))
595
+ rescue
596
+ # Maybe, 'state' option has '-' in future.
597
+ tk_call(*(__item_cget_cmd([:heading, tagOrId]) << "-#{option}"))
598
+ end
599
+ else
600
+ __itemcget_strict([:heading, tagOrId], option)
601
+ end
602
+ end
603
+ def headingcget(tagOrId, option)
604
+ unless TkItemConfigMethod.__IGNORE_UNKNOWN_CONFIGURE_OPTION__
605
+ headingcget_strict(tagOrId, option)
606
+ else
607
+ begin
608
+ headingcget_strict(tagOrId, option)
609
+ rescue => e
610
+ begin
611
+ if current_headingconfiginfo(tagOrId).has_key?(option.to_s)
612
+ # not tag error & option is known -> error on known option
613
+ fail e
614
+ else
615
+ # not tag error & option is unknown
616
+ nil
617
+ end
618
+ rescue
619
+ fail e # tag error
620
+ end
621
+ end
622
+ end
623
+ end
624
+ def headingconfigure(tagOrId, slot, value=None)
625
+ if slot.kind_of?(Hash)
626
+ slot = _symbolkey2str(slot)
627
+ sp_kv = []
628
+ __tile_specific_item_optkeys([:heading, tagOrId]).each{|k|
629
+ sp_kv << k << _get_eval_string(slot.delete(k)) if slot.has_key?(k)
630
+ }
631
+ tk_call(*(__item_config_cmd([:heading, tagOrId]).concat(sp_kv)))
632
+ tk_call(*(__item_config_cmd([:heading, tagOrId]).concat(hash_kv(slot))))
633
+ elsif __tile_specific_item_optkeys([:heading, tagOrId]).index(slot.to_s)
634
+ begin
635
+ # On tile-0.7.{2-8}, 'state' options has no '-' at its head.
636
+ tk_call(*(__item_cget_cmd([:heading, tagOrId]) << slot.to_s << value))
637
+ rescue
638
+ # Maybe, 'state' option has '-' in future.
639
+ tk_call(*(__item_cget_cmd([:heading, tagOrId]) << "-#{slot}" << value))
640
+ end
641
+ else
642
+ __itemconfigure([:heading, tagOrId], slot, value)
643
+ end
644
+ self
645
+ end
646
+ def headingconfiginfo(tagOrId, slot=nil)
647
+ __itemconfiginfo([:heading, tagOrId], slot)
648
+ end
649
+ def current_headingconfiginfo(tagOrId, slot=nil)
650
+ __current_itemconfiginfo([:heading, tagOrId], slot)
651
+ end
652
+ alias heading_cget_tkstring headingcget_tkstring
653
+ alias heading_cget headingcget
654
+ alias heading_cget_strict headingcget_strict
655
+ alias heading_configure headingconfigure
656
+ alias heading_configinfo headingconfiginfo
657
+ alias current_heading_configinfo current_headingconfiginfo
658
+
659
+ # Treeview Tag
660
+ def tagcget_tkstring(tagOrId, option)
661
+ __itemcget_tkstring([:tag, :configure, tagOrId], option)
662
+ end
663
+ def tagcget(tagOrId, option)
664
+ __itemcget([:tag, :configure, tagOrId], option)
665
+ end
666
+ def tagcget_strict(tagOrId, option)
667
+ __itemcget_strict([:tag, :configure, tagOrId], option)
668
+ end
669
+ def tagconfigure(tagOrId, slot, value=None)
670
+ __itemconfigure([:tag, :configure, tagOrId], slot, value)
671
+ end
672
+ def tagconfiginfo(tagOrId, slot=nil)
673
+ __itemconfiginfo([:tag, :configure, tagOrId], slot)
674
+ end
675
+ def current_tagconfiginfo(tagOrId, slot=nil)
676
+ __current_itemconfiginfo([:tag, :configure, tagOrId], slot)
677
+ end
678
+ alias tag_cget_tkstring tagcget_tkstring
679
+ alias tag_cget tagcget
680
+ alias tag_cget_strict tagcget_strict
681
+ alias tag_configure tagconfigure
682
+ alias tag_configinfo tagconfiginfo
683
+ alias current_tag_configinfo current_tagconfiginfo
684
+ end
685
+
686
+ ########################
687
+
688
+ class Tk::Tile::Treeview::Item < TkObject
689
+ ItemID_TBL = TkCore::INTERP.create_table
690
+
691
+ TkCore::INTERP.init_ip_env{
692
+ Tk::Tile::Treeview::Item::ItemID_TBL.mutex.synchronize{
693
+ Tk::Tile::Treeview::Item::ItemID_TBL.clear
694
+ }
695
+ }
696
+
697
+ def self.id2obj(tree, id)
698
+ tpath = tree.path
699
+ Tk::Tile::Treeview::Item::ItemID_TBL.mutex.synchronize{
700
+ if Tk::Tile::Treeview::Item::ItemID_TBL[tpath]
701
+ (Tk::Tile::Treeview::Item::ItemID_TBL[tpath][id])? \
702
+ Tk::Tile::Treeview::Item::ItemID_TBL[tpath][id]: id
703
+ else
704
+ id
705
+ end
706
+ }
707
+ end
708
+
709
+ def self.assign(tree, id)
710
+ tpath = tree.path
711
+ obj = nil
712
+ Tk::Tile::Treeview::Item::ItemID_TBL.mutex.synchronize{
713
+ if Tk::Tile::Treeview::Item::ItemID_TBL[tpath] &&
714
+ Tk::Tile::Treeview::Item::ItemID_TBL[tpath][id]
715
+ return Tk::Tile::Treeview::Item::ItemID_TBL[tpath][id]
716
+ end
717
+
718
+ obj = self.allocate
719
+ obj.instance_eval{
720
+ @parent = @t = tree
721
+ @tpath = tpath
722
+ @path = @id = id
723
+ }
724
+ Tk::Tile::Treeview::Item::ItemID_TBL[tpath] ||= {}
725
+ Tk::Tile::Treeview::Item::ItemID_TBL[tpath][id] = obj
726
+ }
727
+ obj
728
+ end
729
+
730
+ def _insert_item(tree, parent_item, idx, keys={})
731
+ keys = _symbolkey2str(keys)
732
+ id = keys.delete('id')
733
+ if id
734
+ num_or_str(tk_call(tree, 'insert',
735
+ parent_item, idx, '-id', id, *hash_kv(keys)))
736
+ else
737
+ num_or_str(tk_call(tree, 'insert', parent_item, idx, *hash_kv(keys)))
738
+ end
739
+ end
740
+ private :_insert_item
741
+
742
+ def initialize(tree, parent_item = '', idx = 'end', keys = {})
743
+ if parent_item.kind_of?(Hash)
744
+ keys = parent_item
745
+ idx = 'end'
746
+ parent_item = ''
747
+ elsif idx.kind_of?(Hash)
748
+ keys = idx
749
+ idx = 'end'
750
+ end
751
+
752
+ @parent = @t = tree
753
+ @tpath = tree.path
754
+ @path = @id = _insert_item(@t, parent_item, idx, keys)
755
+ Tk::Tile::Treeview::Item::ItemID_TBL.mutex.synchronize{
756
+ ItemID_TBL[@tpath] = {} unless ItemID_TBL[@tpath]
757
+ ItemID_TBL[@tpath][@id] = self
758
+ }
759
+ end
760
+ def id
761
+ @id
762
+ end
763
+
764
+ def cget_tkstring(option)
765
+ @t.itemcget_tkstring(@id, option)
766
+ end
767
+ def cget(option)
768
+ @t.itemcget(@id, option)
769
+ end
770
+ def cget_strict(option)
771
+ @t.itemcget_strict(@id, option)
772
+ end
773
+
774
+ def configure(key, value=None)
775
+ @t.itemconfigure(@id, key, value)
776
+ self
777
+ end
778
+
779
+ def configinfo(key=nil)
780
+ @t.itemconfiginfo(@id, key)
781
+ end
782
+
783
+ def current_configinfo(key=nil)
784
+ @t.current_itemconfiginfo(@id, key)
785
+ end
786
+
787
+ def open?
788
+ cget('open')
789
+ end
790
+ def open
791
+ configure('open', true)
792
+ self
793
+ end
794
+ def close
795
+ configure('open', false)
796
+ self
797
+ end
798
+
799
+ def tag_has?(tag)
800
+ @t.tag_has?(tag, @id)
801
+ end
802
+ alias has_tag? tag_has?
803
+
804
+ def bbox(column=None)
805
+ @t.bbox(@id, column)
806
+ end
807
+
808
+ def children
809
+ @t.children(@id)
810
+ end
811
+ def set_children(*items)
812
+ @t.set_children(@id, *items)
813
+ self
814
+ end
815
+
816
+ def delete
817
+ @t.delete(@id)
818
+ self
819
+ end
820
+
821
+ def detach
822
+ @t.detach(@id)
823
+ self
824
+ end
825
+
826
+ def exist?
827
+ @t.exist?(@id)
828
+ end
829
+
830
+ def focus
831
+ @t.focus_item(@id)
832
+ end
833
+
834
+ def index
835
+ @t.index(@id)
836
+ end
837
+
838
+ def insert(idx='end', keys={})
839
+ @t.insert(@id, idx, keys)
840
+ end
841
+
842
+ def move(parent, idx)
843
+ @t.move(@id, parent, idx)
844
+ self
845
+ end
846
+
847
+ def next_item
848
+ @t.next_item(@id)
849
+ end
850
+
851
+ def parent_item
852
+ @t.parent_item(@id)
853
+ end
854
+
855
+ def prev_item
856
+ @t.prev_item(@id)
857
+ end
858
+
859
+ def see
860
+ @t.see(@id)
861
+ self
862
+ end
863
+
864
+ def selection_add
865
+ @t.selection_add(@id)
866
+ self
867
+ end
868
+
869
+ def selection_remove
870
+ @t.selection_remove(@id)
871
+ self
872
+ end
873
+
874
+ def selection_set
875
+ @t.selection_set(@id)
876
+ self
877
+ end
878
+
879
+ def selection_toggle
880
+ @t.selection_toggle(@id)
881
+ self
882
+ end
883
+
884
+ def get_directory
885
+ @t.get_directory(@id)
886
+ end
887
+ alias get_dictionary get_directory
888
+
889
+ def get(col)
890
+ @t.get(@id, col)
891
+ end
892
+
893
+ def set(col, value)
894
+ @t.set(@id, col, value)
895
+ end
896
+ end
897
+
898
+ ########################
899
+
900
+ class Tk::Tile::Treeview::Root < Tk::Tile::Treeview::Item
901
+ def self.new(tree, keys = {})
902
+ tpath = tree.path
903
+ obj = nil
904
+ Tk::Tile::Treeview::Item::ItemID_TBL.mutex.synchronize{
905
+ if Tk::Tile::Treeview::Item::ItemID_TBL[tpath] &&
906
+ Tk::Tile::Treeview::Item::ItemID_TBL[tpath]['']
907
+ obj = Tk::Tile::Treeview::Item::ItemID_TBL[tpath]['']
908
+ else
909
+ #super(tree, keys)
910
+ (obj = self.allocate).instance_eval{
911
+ @parent = @t = tree
912
+ @tpath = tree.path
913
+ @path = @id = ''
914
+ Tk::Tile::Treeview::Item::ItemID_TBL[@tpath] ||= {}
915
+ Tk::Tile::Treeview::Item::ItemID_TBL[@tpath][@id] = self
916
+ }
917
+ end
918
+ }
919
+ obj.configure(keys) if keys && ! keys.empty?
920
+ obj
921
+ end
922
+
923
+ def initialize(tree, keys = {})
924
+ # dummy:: not called by 'new' method
925
+ @parent = @t = tree
926
+ @tpath = tree.path
927
+ @path = @id = ''
928
+ Tk::Tile::Treeview::Item::ItemID_TBL.mutex.synchronize{
929
+ Tk::Tile::Treeview::Item::ItemID_TBL[@tpath] ||= {}
930
+ Tk::Tile::Treeview::Item::ItemID_TBL[@tpath][@id] = self
931
+ }
932
+ end
933
+ end
934
+
935
+ ########################
936
+
937
+ class Tk::Tile::Treeview::Tag < TkObject
938
+ include TkTreatTagFont
939
+
940
+ TagID_TBL = TkCore::INTERP.create_table
941
+
942
+ (Tag_ID = ['tile_treeview_tag'.freeze, TkUtil.untrust('00000')]).instance_eval{
943
+ @mutex = Mutex.new
944
+ def mutex; @mutex; end
945
+ freeze
946
+ }
947
+
948
+ TkCore::INTERP.init_ip_env{
949
+ Tk::Tile::Treeview::Tag::TagID_TBL.mutex.synchronize{
950
+ Tk::Tile::Treeview::Tag::TagID_TBL.clear
951
+ }
952
+ }
953
+
954
+ def self.id2obj(tree, id)
955
+ tpath = tree.path
956
+ Tk::Tile::Treeview::Tag::TagID_TBL.mutex.synchronize{
957
+ if Tk::Tile::Treeview::Tag::TagID_TBL[tpath]
958
+ (Tk::Tile::Treeview::Tag::TagID_TBL[tpath][id])? \
959
+ Tk::Tile::Treeview::Tag::TagID_TBL[tpath][id]: id
960
+ else
961
+ id
962
+ end
963
+ }
964
+ end
965
+
966
+ def initialize(tree, keys=nil)
967
+ @parent = @t = tree
968
+ @tpath = tree.path
969
+ Tag_ID.mutex.synchronize{
970
+ @path = @id = Tag_ID.join(TkCore::INTERP._ip_id_)
971
+ Tag_ID[1].succ!
972
+ }
973
+ TagID_TBL.mutex.synchronize{
974
+ TagID_TBL[@tpath] = {} unless TagID_TBL[@tpath]
975
+ TagID_TBL[@tpath][@id] = self
976
+ }
977
+ if keys && keys != None
978
+ tk_call_without_enc(@tpath, 'tag', 'configure', @id, *hash_kv(keys,true))
979
+ end
980
+ end
981
+ def id
982
+ @id
983
+ end
984
+
985
+ def tag_has?(item)
986
+ @t.tag_has?(@id, item)
987
+ end
988
+ alias added? tag_has?
989
+
990
+ def tag_has
991
+ @t.tag_has(@id)
992
+ end
993
+
994
+ def add(*items)
995
+ @t.tag_add(@id, *items)
996
+ end
997
+
998
+ def remove(*items)
999
+ @t.tag_remove(@id, *items)
1000
+ end
1001
+
1002
+ def bind(seq, *args)
1003
+ if TkComm._callback_entry?(args[0]) || !block_given?
1004
+ cmd = args.shift
1005
+ else
1006
+ cmd = Proc.new
1007
+ end
1008
+ @t.tag_bind(@id, seq, cmd, *args)
1009
+ self
1010
+ end
1011
+
1012
+ def bind_append(seq, *args)
1013
+ if TkComm._callback_entry?(args[0]) || !block_given?
1014
+ cmd = args.shift
1015
+ else
1016
+ cmd = Proc.new
1017
+ end
1018
+ @t.tag_bind_append(@id, seq, cmd, *args)
1019
+ self
1020
+ end
1021
+
1022
+ def bind_remove(seq)
1023
+ @t.tag_bind_remove(@id, seq)
1024
+ self
1025
+ end
1026
+
1027
+ def bindinfo(seq=nil)
1028
+ @t.tag_bindinfo(@id, seq)
1029
+ end
1030
+
1031
+ def cget_tkstring(option)
1032
+ @t.tagcget_tkstring(@id, option)
1033
+ end
1034
+ def cget(option)
1035
+ @t.tagcget(@id, option)
1036
+ end
1037
+ def cget_strict(option)
1038
+ @t.tagcget_strict(@id, option)
1039
+ end
1040
+
1041
+ def configure(key, value=None)
1042
+ @t.tagconfigure(@id, key, value)
1043
+ self
1044
+ end
1045
+
1046
+ def configinfo(key=nil)
1047
+ @t.tagconfiginfo(@id, key)
1048
+ end
1049
+
1050
+ def current_configinfo(key=nil)
1051
+ @t.current_tagconfiginfo(@id, key)
1052
+ end
1053
+ end
1054
+
1055
+ ########################
1056
+
1057
+ class Tk::Tile::Treeview < TkWindow
1058
+ include Tk::Tile::TileWidget
1059
+ include Scrollable
1060
+
1061
+ include Tk::Tile::TreeviewConfig
1062
+
1063
+ if Tk::Tile::USE_TTK_NAMESPACE
1064
+ TkCommandNames = ['::ttk::treeview'.freeze].freeze
1065
+ else
1066
+ TkCommandNames = ['::treeview'.freeze].freeze
1067
+ end
1068
+ WidgetClassName = 'Treeview'.freeze
1069
+ WidgetClassNames[WidgetClassName] ||= self
1070
+
1071
+ def __destroy_hook__
1072
+ Tk::Tile::Treeview::Item::ItemID_TBL.mutex.synchronize{
1073
+ Tk::Tile::Treeview::Item::ItemID_TBL.delete(@path)
1074
+ }
1075
+ Tk::Tile::Treeview::Tag::ItemID_TBL.mutex.synchronize{
1076
+ Tk::Tile::Treeview::Tag::ItemID_TBL.delete(@path)
1077
+ }
1078
+ end
1079
+
1080
+ def self.style(*args)
1081
+ [self::WidgetClassName, *(args.map!{|a| _get_eval_string(a)})].join('.')
1082
+ end
1083
+
1084
+ def tagid(id)
1085
+ if id.kind_of?(Tk::Tile::Treeview::Item) ||
1086
+ id.kind_of?(Tk::Tile::Treeview::Tag)
1087
+ id.id
1088
+ elsif id.kind_of?(Array)
1089
+ # size is 2 or 3
1090
+ id[0..-2] << _get_eval_string(id[-1])
1091
+ else
1092
+ _get_eval_string(id)
1093
+ end
1094
+ end
1095
+
1096
+ def root
1097
+ Tk::Tile::Treeview::Root.new(self)
1098
+ end
1099
+
1100
+ def bbox(item, column=None)
1101
+ list(tk_send('item', 'bbox', item, column))
1102
+ end
1103
+
1104
+ def children(item)
1105
+ simplelist(tk_send_without_enc('children', item)).collect{|id|
1106
+ Tk::Tile::Treeview::Item.id2obj(self, id)
1107
+ }
1108
+ end
1109
+ def set_children(item, *items)
1110
+ tk_send_without_enc('children', item,
1111
+ array2tk_list(items.flatten, true))
1112
+ self
1113
+ end
1114
+
1115
+ def delete(*items)
1116
+ tk_send_without_enc('delete', array2tk_list(items.flatten, true))
1117
+ self
1118
+ end
1119
+
1120
+ def detach(*items)
1121
+ tk_send_without_enc('detach', array2tk_list(items.flatten, true))
1122
+ self
1123
+ end
1124
+
1125
+ def exist?(item)
1126
+ bool(tk_send_without_enc('exists', _get_eval_enc_str(item)))
1127
+ end
1128
+
1129
+ def focus_item(item = nil)
1130
+ if item
1131
+ tk_send('focus', item)
1132
+ item
1133
+ else
1134
+ id = tk_send('focus')
1135
+ (id.empty?)? nil: Tk::Tile::Treeview::Item.id2obj(self, id)
1136
+ end
1137
+ end
1138
+
1139
+ def identify(x, y)
1140
+ # tile-0.7.2 or previous
1141
+ ret = simplelist(tk_send('identify', x, y))
1142
+ case ret[0]
1143
+ when 'heading', 'separator'
1144
+ ret[-1] = num_or_str(ret[-1])
1145
+ when 'cell'
1146
+ ret[1] = Tk::Tile::Treeview::Item.id2obj(self, ret[1])
1147
+ ret[-1] = num_or_str(ret[-1])
1148
+ when 'item', 'row'
1149
+ ret[1] = Tk::Tile::Treeview::Item.id2obj(self, ret[1])
1150
+ end
1151
+ end
1152
+
1153
+ def identify_region(x, y)
1154
+ tk_send('identify', 'region', x, y)
1155
+ end
1156
+
1157
+ def identify_item(x, y)
1158
+ id = tk_send('identify', 'item', x, y)
1159
+ (id.empty?)? nil: Tk::Tile::Treeview::Item.id2obj(self, id)
1160
+ end
1161
+
1162
+ def identify_element(x, y)
1163
+ tk_send('identify', 'element', x, y)
1164
+ end
1165
+
1166
+ def row_identify(x, y)
1167
+ id = tk_send('identify', 'row', x, y)
1168
+ (id.empty?)? nil: Tk::Tile::Treeview::Item.id2obj(self, id)
1169
+ end
1170
+ alias identify_row row_identify
1171
+
1172
+ def column_identify(x, y)
1173
+ tk_send('identify', 'column', x, y)
1174
+ end
1175
+ alias identify_column column_identify
1176
+
1177
+ def index(item)
1178
+ number(tk_send('index', item))
1179
+ end
1180
+
1181
+ # def insert(parent, idx='end', keys={})
1182
+ # keys = _symbolkey2str(keys)
1183
+ # id = keys.delete('id')
1184
+ # if id
1185
+ # num_or_str(tk_send('insert', parent, idx, '-id', id, *hash_kv(keys)))
1186
+ # else
1187
+ # num_or_str(tk_send('insert', parent, idx, *hash_kv(keys)))
1188
+ # end
1189
+ # end
1190
+ def insert(parent, idx='end', keys={})
1191
+ Tk::Tile::Treeview::Item.new(self, parent, idx, keys)
1192
+ end
1193
+
1194
+ # def instate(spec, cmd=Proc.new)
1195
+ # tk_send('instate', spec, cmd)
1196
+ # end
1197
+ # def state(spec=None)
1198
+ # tk_send('state', spec)
1199
+ # end
1200
+
1201
+ def move(item, parent, idx)
1202
+ tk_send('move', item, parent, idx)
1203
+ self
1204
+ end
1205
+
1206
+ def next_item(item)
1207
+ id = tk_send('next', item)
1208
+ (id.empty?)? nil: Tk::Tile::Treeview::Item.id2obj(self, id)
1209
+ end
1210
+
1211
+ def parent_item(item)
1212
+ if (id = tk_send('parent', item)).empty?
1213
+ Tk::Tile::Treeview::Root.new(self)
1214
+ else
1215
+ Tk::Tile::Treeview::Item.id2obj(self, id)
1216
+ end
1217
+ end
1218
+
1219
+ def prev_item(item)
1220
+ id = tk_send('prev', item)
1221
+ (id.empty?)? nil: Tk::Tile::Treeview::Item.id2obj(self, id)
1222
+ end
1223
+
1224
+ def see(item)
1225
+ tk_send('see', item)
1226
+ self
1227
+ end
1228
+
1229
+ def selection
1230
+ simplelist(tk_send('selection')).collect{|id|
1231
+ Tk::Tile::Treeview::Item.id2obj(self, id)
1232
+ }
1233
+ end
1234
+ alias selection_get selection
1235
+
1236
+ def selection_add(*items)
1237
+ tk_send('selection', 'add', array2tk_list(items.flatten, true))
1238
+ self
1239
+ end
1240
+ def selection_remove(*items)
1241
+ tk_send('selection', 'remove', array2tk_list(items.flatten, true))
1242
+ self
1243
+ end
1244
+ def selection_set(*items)
1245
+ tk_send('selection', 'set', array2tk_list(items.flatten, true))
1246
+ self
1247
+ end
1248
+ def selection_toggle(*items)
1249
+ tk_send('selection', 'toggle', array2tk_list(items.flatten, true))
1250
+ self
1251
+ end
1252
+
1253
+ def get_directory(item)
1254
+ # tile-0.7+
1255
+ ret = []
1256
+ lst = simplelist(tk_send('set', item))
1257
+ until lst.empty?
1258
+ col = lst.shift
1259
+ val = lst.shift
1260
+ ret << [col, val]
1261
+ end
1262
+ ret
1263
+ end
1264
+ alias get_dictionary get_directory
1265
+
1266
+ def get(item, col)
1267
+ tk_send('set', item, col)
1268
+ end
1269
+ def set(item, col, value)
1270
+ tk_send('set', item, col, value)
1271
+ self
1272
+ end
1273
+
1274
+ def tag_has?(tag, item)
1275
+ bool(tk_send('tag', 'has', tagid(tag), tagid(item)))
1276
+ end
1277
+ def tag_has(tag)
1278
+ tk_split_simplelist(tk_send('tag', 'has', tagid(tag))).collect{|id|
1279
+ Tk::Tile::Treeview::Item.id2obj(self, id)
1280
+ }
1281
+ end
1282
+
1283
+ def tag_bind(tag, seq, *args)
1284
+ if TkComm._callback_entry?(args[0]) || !block_given?
1285
+ cmd = args.shift
1286
+ else
1287
+ cmd = Proc.new
1288
+ end
1289
+ _bind([@path, 'tag', 'bind', tag], seq, cmd, *args)
1290
+ self
1291
+ end
1292
+ alias tagbind tag_bind
1293
+
1294
+ def tag_bind_append(tag, seq, *args)
1295
+ if TkComm._callback_entry?(args[0]) || !block_given?
1296
+ cmd = args.shift
1297
+ else
1298
+ cmd = Proc.new
1299
+ end
1300
+ _bind_append([@path, 'tag', 'bind', tag], seq, cmd, *args)
1301
+ self
1302
+ end
1303
+ alias tagbind_append tag_bind_append
1304
+
1305
+ def tag_bind_remove(tag, seq)
1306
+ _bind_remove([@path, 'tag', 'bind', tag], seq)
1307
+ self
1308
+ end
1309
+ alias tagbind_remove tag_bind_remove
1310
+
1311
+ def tag_bindinfo(tag, context=nil)
1312
+ _bindinfo([@path, 'tag', 'bind', tag], context)
1313
+ end
1314
+ alias tagbindinfo tag_bindinfo
1315
+
1316
+ def tag_names
1317
+ tk_split_simplelist(tk_send('tag', 'names')).collect{|id|
1318
+ Tk::Tile::Treeview::Tag.id2obj(self, id)
1319
+ }
1320
+ end
1321
+
1322
+ def tag_add(tag, *items)
1323
+ fail ArgumentError, "no target items" if items.empty?
1324
+ tk_send('tag', 'add', tagid(tag), *(items.collect{|item| tagid(item)}))
1325
+ self
1326
+ end
1327
+
1328
+ def tag_remove(tag, *items)
1329
+ tk_send('tag', 'remove', tagid(tag), *(items.collect{|item| tagid(item)}))
1330
+ self
1331
+ end
1332
+
1333
+ end
1334
+
1335
+ #Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Treeview, :TkTreeview)
1336
+ Tk.__set_loaded_toplevel_aliases__('tkextlib/tile/treeview.rb',
1337
+ :Ttk, Tk::Tile::Treeview, :TkTreeview)