tk-win 0.2.0-x86-mingw32

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 (329) hide show
  1. data/.document +5 -0
  2. data/.gitignore +21 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +17 -0
  5. data/Rakefile +46 -0
  6. data/VERSION +1 -0
  7. data/lib/tcltk.rb +367 -0
  8. data/lib/tk.rb +5682 -0
  9. data/lib/tk/after.rb +6 -0
  10. data/lib/tk/autoload.rb +760 -0
  11. data/lib/tk/bgerror.rb +29 -0
  12. data/lib/tk/bindtag.rb +138 -0
  13. data/lib/tk/button.rb +31 -0
  14. data/lib/tk/canvas.rb +816 -0
  15. data/lib/tk/canvastag.rb +459 -0
  16. data/lib/tk/checkbutton.rb +32 -0
  17. data/lib/tk/clipboard.rb +75 -0
  18. data/lib/tk/clock.rb +71 -0
  19. data/lib/tk/composite.rb +484 -0
  20. data/lib/tk/console.rb +52 -0
  21. data/lib/tk/dialog.rb +326 -0
  22. data/lib/tk/encodedstr.rb +187 -0
  23. data/lib/tk/entry.rb +120 -0
  24. data/lib/tk/event.rb +562 -0
  25. data/lib/tk/font.rb +2351 -0
  26. data/lib/tk/frame.rb +132 -0
  27. data/lib/tk/grid.rb +279 -0
  28. data/lib/tk/image.rb +275 -0
  29. data/lib/tk/itemconfig.rb +1222 -0
  30. data/lib/tk/itemfont.rb +327 -0
  31. data/lib/tk/kinput.rb +71 -0
  32. data/lib/tk/label.rb +22 -0
  33. data/lib/tk/labelframe.rb +31 -0
  34. data/lib/tk/listbox.rb +284 -0
  35. data/lib/tk/macpkg.rb +80 -0
  36. data/lib/tk/menu.rb +718 -0
  37. data/lib/tk/menubar.rb +137 -0
  38. data/lib/tk/menuspec.rb +456 -0
  39. data/lib/tk/message.rb +24 -0
  40. data/lib/tk/mngfocus.rb +33 -0
  41. data/lib/tk/msgcat.rb +296 -0
  42. data/lib/tk/namespace.rb +551 -0
  43. data/lib/tk/optiondb.rb +377 -0
  44. data/lib/tk/optionobj.rb +212 -0
  45. data/lib/tk/pack.rb +107 -0
  46. data/lib/tk/package.rb +143 -0
  47. data/lib/tk/palette.rb +55 -0
  48. data/lib/tk/panedwindow.rb +260 -0
  49. data/lib/tk/place.rb +128 -0
  50. data/lib/tk/radiobutton.rb +73 -0
  51. data/lib/tk/root.rb +95 -0
  52. data/lib/tk/scale.rb +112 -0
  53. data/lib/tk/scrollable.rb +82 -0
  54. data/lib/tk/scrollbar.rb +183 -0
  55. data/lib/tk/scrollbox.rb +39 -0
  56. data/lib/tk/selection.rb +86 -0
  57. data/lib/tk/spinbox.rb +144 -0
  58. data/lib/tk/tagfont.rb +43 -0
  59. data/lib/tk/text.rb +1604 -0
  60. data/lib/tk/textimage.rb +88 -0
  61. data/lib/tk/textmark.rb +204 -0
  62. data/lib/tk/texttag.rb +321 -0
  63. data/lib/tk/textwindow.rb +154 -0
  64. data/lib/tk/timer.rb +669 -0
  65. data/lib/tk/toplevel.rb +264 -0
  66. data/lib/tk/ttk_selector.rb +98 -0
  67. data/lib/tk/txtwin_abst.rb +39 -0
  68. data/lib/tk/validation.rb +397 -0
  69. data/lib/tk/variable.rb +1799 -0
  70. data/lib/tk/virtevent.rb +139 -0
  71. data/lib/tk/winfo.rb +392 -0
  72. data/lib/tk/winpkg.rb +156 -0
  73. data/lib/tk/wm.rb +552 -0
  74. data/lib/tk/xim.rb +122 -0
  75. data/lib/tkafter.rb +4 -0
  76. data/lib/tkbgerror.rb +4 -0
  77. data/lib/tkcanvas.rb +4 -0
  78. data/lib/tkclass.rb +47 -0
  79. data/lib/tkconsole.rb +4 -0
  80. data/lib/tkdialog.rb +4 -0
  81. data/lib/tkentry.rb +4 -0
  82. data/lib/tkextlib/ICONS.rb +13 -0
  83. data/lib/tkextlib/ICONS/icons.rb +129 -0
  84. data/lib/tkextlib/ICONS/setup.rb +8 -0
  85. data/lib/tkextlib/SUPPORT_STATUS +198 -0
  86. data/lib/tkextlib/blt.rb +189 -0
  87. data/lib/tkextlib/blt/barchart.rb +79 -0
  88. data/lib/tkextlib/blt/bitmap.rb +112 -0
  89. data/lib/tkextlib/blt/busy.rb +83 -0
  90. data/lib/tkextlib/blt/component.rb +2218 -0
  91. data/lib/tkextlib/blt/container.rb +28 -0
  92. data/lib/tkextlib/blt/cutbuffer.rb +23 -0
  93. data/lib/tkextlib/blt/dragdrop.rb +269 -0
  94. data/lib/tkextlib/blt/eps.rb +32 -0
  95. data/lib/tkextlib/blt/graph.rb +67 -0
  96. data/lib/tkextlib/blt/htext.rb +112 -0
  97. data/lib/tkextlib/blt/setup.rb +8 -0
  98. data/lib/tkextlib/blt/spline.rb +23 -0
  99. data/lib/tkextlib/blt/stripchart.rb +74 -0
  100. data/lib/tkextlib/blt/table.rb +412 -0
  101. data/lib/tkextlib/blt/tabnotebook.rb +110 -0
  102. data/lib/tkextlib/blt/tabset.rb +504 -0
  103. data/lib/tkextlib/blt/ted.rb +68 -0
  104. data/lib/tkextlib/blt/tile.rb +25 -0
  105. data/lib/tkextlib/blt/tile/button.rb +16 -0
  106. data/lib/tkextlib/blt/tile/checkbutton.rb +17 -0
  107. data/lib/tkextlib/blt/tile/frame.rb +16 -0
  108. data/lib/tkextlib/blt/tile/label.rb +16 -0
  109. data/lib/tkextlib/blt/tile/radiobutton.rb +17 -0
  110. data/lib/tkextlib/blt/tile/scrollbar.rb +16 -0
  111. data/lib/tkextlib/blt/tile/toplevel.rb +16 -0
  112. data/lib/tkextlib/blt/tree.rb +1058 -0
  113. data/lib/tkextlib/blt/treeview.rb +1287 -0
  114. data/lib/tkextlib/blt/unix_dnd.rb +141 -0
  115. data/lib/tkextlib/blt/vector.rb +256 -0
  116. data/lib/tkextlib/blt/watch.rb +175 -0
  117. data/lib/tkextlib/blt/win_printer.rb +61 -0
  118. data/lib/tkextlib/blt/winop.rb +107 -0
  119. data/lib/tkextlib/bwidget.rb +153 -0
  120. data/lib/tkextlib/bwidget/arrowbutton.rb +21 -0
  121. data/lib/tkextlib/bwidget/bitmap.rb +21 -0
  122. data/lib/tkextlib/bwidget/button.rb +31 -0
  123. data/lib/tkextlib/bwidget/buttonbox.rb +90 -0
  124. data/lib/tkextlib/bwidget/combobox.rb +62 -0
  125. data/lib/tkextlib/bwidget/dialog.rb +194 -0
  126. data/lib/tkextlib/bwidget/dragsite.rb +31 -0
  127. data/lib/tkextlib/bwidget/dropsite.rb +39 -0
  128. data/lib/tkextlib/bwidget/dynamichelp.rb +63 -0
  129. data/lib/tkextlib/bwidget/entry.rb +43 -0
  130. data/lib/tkextlib/bwidget/label.rb +41 -0
  131. data/lib/tkextlib/bwidget/labelentry.rb +80 -0
  132. data/lib/tkextlib/bwidget/labelframe.rb +52 -0
  133. data/lib/tkextlib/bwidget/listbox.rb +361 -0
  134. data/lib/tkextlib/bwidget/mainframe.rb +132 -0
  135. data/lib/tkextlib/bwidget/messagedlg.rb +192 -0
  136. data/lib/tkextlib/bwidget/notebook.rb +166 -0
  137. data/lib/tkextlib/bwidget/pagesmanager.rb +73 -0
  138. data/lib/tkextlib/bwidget/panedwindow.rb +42 -0
  139. data/lib/tkextlib/bwidget/panelframe.rb +67 -0
  140. data/lib/tkextlib/bwidget/passwddlg.rb +44 -0
  141. data/lib/tkextlib/bwidget/progressbar.rb +20 -0
  142. data/lib/tkextlib/bwidget/progressdlg.rb +58 -0
  143. data/lib/tkextlib/bwidget/scrollableframe.rb +40 -0
  144. data/lib/tkextlib/bwidget/scrolledwindow.rb +48 -0
  145. data/lib/tkextlib/bwidget/scrollview.rb +25 -0
  146. data/lib/tkextlib/bwidget/selectcolor.rb +73 -0
  147. data/lib/tkextlib/bwidget/selectfont.rb +91 -0
  148. data/lib/tkextlib/bwidget/separator.rb +20 -0
  149. data/lib/tkextlib/bwidget/setup.rb +8 -0
  150. data/lib/tkextlib/bwidget/spinbox.rb +98 -0
  151. data/lib/tkextlib/bwidget/statusbar.rb +62 -0
  152. data/lib/tkextlib/bwidget/titleframe.rb +33 -0
  153. data/lib/tkextlib/bwidget/tree.rb +500 -0
  154. data/lib/tkextlib/bwidget/widget.rb +129 -0
  155. data/lib/tkextlib/itcl.rb +13 -0
  156. data/lib/tkextlib/itcl/incr_tcl.rb +178 -0
  157. data/lib/tkextlib/itcl/setup.rb +13 -0
  158. data/lib/tkextlib/itk.rb +13 -0
  159. data/lib/tkextlib/itk/incr_tk.rb +446 -0
  160. data/lib/tkextlib/itk/setup.rb +13 -0
  161. data/lib/tkextlib/iwidgets.rb +94 -0
  162. data/lib/tkextlib/iwidgets/buttonbox.rb +121 -0
  163. data/lib/tkextlib/iwidgets/calendar.rb +125 -0
  164. data/lib/tkextlib/iwidgets/canvasprintbox.rb +53 -0
  165. data/lib/tkextlib/iwidgets/canvasprintdialog.rb +38 -0
  166. data/lib/tkextlib/iwidgets/checkbox.rb +130 -0
  167. data/lib/tkextlib/iwidgets/combobox.rb +104 -0
  168. data/lib/tkextlib/iwidgets/dateentry.rb +20 -0
  169. data/lib/tkextlib/iwidgets/datefield.rb +58 -0
  170. data/lib/tkextlib/iwidgets/dialog.rb +20 -0
  171. data/lib/tkextlib/iwidgets/dialogshell.rb +121 -0
  172. data/lib/tkextlib/iwidgets/disjointlistbox.rb +50 -0
  173. data/lib/tkextlib/iwidgets/entryfield.rb +185 -0
  174. data/lib/tkextlib/iwidgets/extbutton.rb +40 -0
  175. data/lib/tkextlib/iwidgets/extfileselectionbox.rb +46 -0
  176. data/lib/tkextlib/iwidgets/extfileselectiondialog.rb +33 -0
  177. data/lib/tkextlib/iwidgets/feedback.rb +35 -0
  178. data/lib/tkextlib/iwidgets/fileselectionbox.rb +46 -0
  179. data/lib/tkextlib/iwidgets/fileselectiondialog.rb +33 -0
  180. data/lib/tkextlib/iwidgets/finddialog.rb +42 -0
  181. data/lib/tkextlib/iwidgets/hierarchy.rb +365 -0
  182. data/lib/tkextlib/iwidgets/hyperhelp.rb +50 -0
  183. data/lib/tkextlib/iwidgets/labeledframe.rb +39 -0
  184. data/lib/tkextlib/iwidgets/labeledwidget.rb +45 -0
  185. data/lib/tkextlib/iwidgets/mainwindow.rb +67 -0
  186. data/lib/tkextlib/iwidgets/menubar.rb +212 -0
  187. data/lib/tkextlib/iwidgets/messagebox.rb +93 -0
  188. data/lib/tkextlib/iwidgets/messagedialog.rb +20 -0
  189. data/lib/tkextlib/iwidgets/notebook.rb +175 -0
  190. data/lib/tkextlib/iwidgets/optionmenu.rb +92 -0
  191. data/lib/tkextlib/iwidgets/panedwindow.rb +134 -0
  192. data/lib/tkextlib/iwidgets/promptdialog.rb +131 -0
  193. data/lib/tkextlib/iwidgets/pushbutton.rb +35 -0
  194. data/lib/tkextlib/iwidgets/radiobox.rb +121 -0
  195. data/lib/tkextlib/iwidgets/scopedobject.rb +24 -0
  196. data/lib/tkextlib/iwidgets/scrolledcanvas.rb +353 -0
  197. data/lib/tkextlib/iwidgets/scrolledframe.rb +59 -0
  198. data/lib/tkextlib/iwidgets/scrolledhtml.rb +58 -0
  199. data/lib/tkextlib/iwidgets/scrolledlistbox.rb +207 -0
  200. data/lib/tkextlib/iwidgets/scrolledtext.rb +568 -0
  201. data/lib/tkextlib/iwidgets/scrolledwidget.rb +20 -0
  202. data/lib/tkextlib/iwidgets/selectionbox.rb +102 -0
  203. data/lib/tkextlib/iwidgets/selectiondialog.rb +92 -0
  204. data/lib/tkextlib/iwidgets/setup.rb +8 -0
  205. data/lib/tkextlib/iwidgets/shell.rb +38 -0
  206. data/lib/tkextlib/iwidgets/spindate.rb +48 -0
  207. data/lib/tkextlib/iwidgets/spinint.rb +30 -0
  208. data/lib/tkextlib/iwidgets/spinner.rb +169 -0
  209. data/lib/tkextlib/iwidgets/spintime.rb +48 -0
  210. data/lib/tkextlib/iwidgets/tabnotebook.rb +181 -0
  211. data/lib/tkextlib/iwidgets/tabset.rb +145 -0
  212. data/lib/tkextlib/iwidgets/timeentry.rb +25 -0
  213. data/lib/tkextlib/iwidgets/timefield.rb +58 -0
  214. data/lib/tkextlib/iwidgets/toolbar.rb +112 -0
  215. data/lib/tkextlib/iwidgets/watch.rb +56 -0
  216. data/lib/tkextlib/pkg_checker.rb +184 -0
  217. data/lib/tkextlib/setup.rb +8 -0
  218. data/lib/tkextlib/tcllib.rb +105 -0
  219. data/lib/tkextlib/tcllib/autoscroll.rb +158 -0
  220. data/lib/tkextlib/tcllib/ctext.rb +160 -0
  221. data/lib/tkextlib/tcllib/cursor.rb +97 -0
  222. data/lib/tkextlib/tcllib/datefield.rb +57 -0
  223. data/lib/tkextlib/tcllib/dialog.rb +84 -0
  224. data/lib/tkextlib/tcllib/getstring.rb +134 -0
  225. data/lib/tkextlib/tcllib/history.rb +73 -0
  226. data/lib/tkextlib/tcllib/ico.rb +146 -0
  227. data/lib/tkextlib/tcllib/ip_entry.rb +75 -0
  228. data/lib/tkextlib/tcllib/panelframe.rb +78 -0
  229. data/lib/tkextlib/tcllib/plotchart.rb +1404 -0
  230. data/lib/tkextlib/tcllib/ruler.rb +65 -0
  231. data/lib/tkextlib/tcllib/screenruler.rb +68 -0
  232. data/lib/tkextlib/tcllib/scrollwin.rb +61 -0
  233. data/lib/tkextlib/tcllib/setup.rb +8 -0
  234. data/lib/tkextlib/tcllib/style.rb +61 -0
  235. data/lib/tkextlib/tcllib/superframe.rb +51 -0
  236. data/lib/tkextlib/tcllib/swaplist.rb +150 -0
  237. data/lib/tkextlib/tcllib/tablelist.rb +28 -0
  238. data/lib/tkextlib/tcllib/tablelist_core.rb +1072 -0
  239. data/lib/tkextlib/tcllib/tablelist_tile.rb +43 -0
  240. data/lib/tkextlib/tcllib/tkpiechart.rb +314 -0
  241. data/lib/tkextlib/tcllib/tooltip.rb +104 -0
  242. data/lib/tkextlib/tcllib/widget.rb +82 -0
  243. data/lib/tkextlib/tclx.rb +13 -0
  244. data/lib/tkextlib/tclx/setup.rb +8 -0
  245. data/lib/tkextlib/tclx/tclx.rb +74 -0
  246. data/lib/tkextlib/tile.rb +449 -0
  247. data/lib/tkextlib/tile/dialog.rb +102 -0
  248. data/lib/tkextlib/tile/setup.rb +8 -0
  249. data/lib/tkextlib/tile/sizegrip.rb +32 -0
  250. data/lib/tkextlib/tile/style.rb +336 -0
  251. data/lib/tkextlib/tile/tbutton.rb +34 -0
  252. data/lib/tkextlib/tile/tcheckbutton.rb +38 -0
  253. data/lib/tkextlib/tile/tcombobox.rb +55 -0
  254. data/lib/tkextlib/tile/tentry.rb +49 -0
  255. data/lib/tkextlib/tile/tframe.rb +34 -0
  256. data/lib/tkextlib/tile/tlabel.rb +34 -0
  257. data/lib/tkextlib/tile/tlabelframe.rb +38 -0
  258. data/lib/tkextlib/tile/tmenubutton.rb +38 -0
  259. data/lib/tkextlib/tile/tnotebook.rb +147 -0
  260. data/lib/tkextlib/tile/tpaned.rb +245 -0
  261. data/lib/tkextlib/tile/tprogressbar.rb +57 -0
  262. data/lib/tkextlib/tile/tradiobutton.rb +38 -0
  263. data/lib/tkextlib/tile/treeview.rb +1306 -0
  264. data/lib/tkextlib/tile/tscale.rb +56 -0
  265. data/lib/tkextlib/tile/tscrollbar.rb +63 -0
  266. data/lib/tkextlib/tile/tseparator.rb +34 -0
  267. data/lib/tkextlib/tile/tsquare.rb +30 -0
  268. data/lib/tkextlib/tkDND.rb +18 -0
  269. data/lib/tkextlib/tkDND/setup.rb +8 -0
  270. data/lib/tkextlib/tkDND/shape.rb +125 -0
  271. data/lib/tkextlib/tkDND/tkdnd.rb +182 -0
  272. data/lib/tkextlib/tkHTML.rb +13 -0
  273. data/lib/tkextlib/tkHTML/htmlwidget.rb +453 -0
  274. data/lib/tkextlib/tkHTML/setup.rb +8 -0
  275. data/lib/tkextlib/tkimg.rb +36 -0
  276. data/lib/tkextlib/tkimg/bmp.rb +33 -0
  277. data/lib/tkextlib/tkimg/gif.rb +33 -0
  278. data/lib/tkextlib/tkimg/ico.rb +33 -0
  279. data/lib/tkextlib/tkimg/jpeg.rb +33 -0
  280. data/lib/tkextlib/tkimg/pcx.rb +33 -0
  281. data/lib/tkextlib/tkimg/pixmap.rb +44 -0
  282. data/lib/tkextlib/tkimg/png.rb +33 -0
  283. data/lib/tkextlib/tkimg/ppm.rb +33 -0
  284. data/lib/tkextlib/tkimg/ps.rb +33 -0
  285. data/lib/tkextlib/tkimg/setup.rb +8 -0
  286. data/lib/tkextlib/tkimg/sgi.rb +33 -0
  287. data/lib/tkextlib/tkimg/sun.rb +33 -0
  288. data/lib/tkextlib/tkimg/tga.rb +33 -0
  289. data/lib/tkextlib/tkimg/tiff.rb +33 -0
  290. data/lib/tkextlib/tkimg/window.rb +33 -0
  291. data/lib/tkextlib/tkimg/xbm.rb +33 -0
  292. data/lib/tkextlib/tkimg/xpm.rb +33 -0
  293. data/lib/tkextlib/tktable.rb +14 -0
  294. data/lib/tkextlib/tktable/setup.rb +8 -0
  295. data/lib/tkextlib/tktable/tktable.rb +966 -0
  296. data/lib/tkextlib/tktrans.rb +14 -0
  297. data/lib/tkextlib/tktrans/setup.rb +8 -0
  298. data/lib/tkextlib/tktrans/tktrans.rb +64 -0
  299. data/lib/tkextlib/treectrl.rb +13 -0
  300. data/lib/tkextlib/treectrl/setup.rb +8 -0
  301. data/lib/tkextlib/treectrl/tktreectrl.rb +2522 -0
  302. data/lib/tkextlib/trofs.rb +13 -0
  303. data/lib/tkextlib/trofs/setup.rb +8 -0
  304. data/lib/tkextlib/trofs/trofs.rb +51 -0
  305. data/lib/tkextlib/version.rb +6 -0
  306. data/lib/tkextlib/vu.rb +48 -0
  307. data/lib/tkextlib/vu/bargraph.rb +61 -0
  308. data/lib/tkextlib/vu/charts.rb +53 -0
  309. data/lib/tkextlib/vu/dial.rb +102 -0
  310. data/lib/tkextlib/vu/pie.rb +286 -0
  311. data/lib/tkextlib/vu/setup.rb +8 -0
  312. data/lib/tkextlib/vu/spinbox.rb +22 -0
  313. data/lib/tkextlib/winico.rb +14 -0
  314. data/lib/tkextlib/winico/setup.rb +8 -0
  315. data/lib/tkextlib/winico/winico.rb +224 -0
  316. data/lib/tkfont.rb +4 -0
  317. data/lib/tkmacpkg.rb +4 -0
  318. data/lib/tkmenubar.rb +4 -0
  319. data/lib/tkmngfocus.rb +4 -0
  320. data/lib/tkpalette.rb +4 -0
  321. data/lib/tkscrollbox.rb +4 -0
  322. data/lib/tktext.rb +4 -0
  323. data/lib/tkvirtevent.rb +4 -0
  324. data/lib/tkwinpkg.rb +4 -0
  325. data/spec/spec.opts +1 -0
  326. data/spec/spec_helper.rb +9 -0
  327. data/spec/tk-win_spec.rb +7 -0
  328. data/tk-win.gemspec +373 -0
  329. metadata +412 -0
@@ -0,0 +1,141 @@
1
+ #
2
+ # tkextlib/blt/unix_dnd.rb
3
+ #
4
+ # *** This is alpha version, because there is no document on BLT. ***
5
+ #
6
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
7
+ #
8
+
9
+ require 'tk'
10
+ require 'tkextlib/blt.rb'
11
+
12
+ module Tk::BLT
13
+ module DnD
14
+ extend TkCore
15
+
16
+ TkCommandNames = ['::blt::dnd'.freeze].freeze
17
+
18
+ ##############################
19
+
20
+ extend TkItemConfigMethod
21
+
22
+ class << self
23
+ def __item_cget_cmd(id)
24
+ ['::blt::dnd', *id]
25
+ end
26
+ private :__item_cget_cmd
27
+
28
+ def __item_config_cmd(id)
29
+ ['::blt::dnd', *id]
30
+ end
31
+ private :__item_config_cmd
32
+
33
+ private :itemcget_tkstring, :itemcget, :itemcget_strict
34
+ private :itemconfigure, :itemconfiginfo, :current_itemconfiginfo
35
+
36
+ def cget_tkstring(win, option)
37
+ itemcget_tkstring(['cget', win], option)
38
+ end
39
+ def cget(win, option)
40
+ itemcget(['cget', win], option)
41
+ end
42
+ def cget_strict(win, option)
43
+ itemcget_strict(['cget', win], option)
44
+ end
45
+ def configure(win, slot, value=None)
46
+ itemconfigure(['configure', win], slot, value)
47
+ end
48
+ def configinfo(win, slot=nil)
49
+ itemconfiginfo(['configure', win], slot)
50
+ end
51
+ def current_configinfo(win, slot=nil)
52
+ current_itemconfiginfo(['configure', win], slot)
53
+ end
54
+
55
+ def token_cget_tkstring(win, option)
56
+ itemcget_tkstring(['token', 'cget', win], option)
57
+ end
58
+ def token_cget(win, option)
59
+ itemcget(['token', 'cget', win], option)
60
+ end
61
+ def token_cget_strict(win, option)
62
+ itemcget_strict(['token', 'cget', win], option)
63
+ end
64
+ def token_configure(win, slot, value=None)
65
+ itemconfigure(['token', 'configure', win], slot, value)
66
+ end
67
+ def token_configinfo(win, slot=nil)
68
+ itemconfiginfo(['token', 'configure', win], slot)
69
+ end
70
+ def current_token_configinfo(win, slot=nil)
71
+ current_itemconfiginfo(['token', 'configure', win], slot)
72
+ end
73
+
74
+ def token_windowconfigure(win, slot, value=None)
75
+ itemconfigure(['token', 'window', win], slot, value)
76
+ end
77
+ def token_windowconfiginfo(win, slot=nil)
78
+ itemconfiginfo(['token', 'window', win], slot)
79
+ end
80
+ def current_token_windowconfiginfo(win, slot=nil)
81
+ current_itemconfiginfo(['token', 'window', win], slot)
82
+ end
83
+ end
84
+
85
+ ##############################
86
+
87
+ def self.cancel(win)
88
+ tk_call('::blt::dnd', 'cancel', *wins)
89
+ end
90
+ def self.delete(*wins)
91
+ tk_call('::blt::dnd', 'delete', *wins)
92
+ end
93
+ def self.delete_source(*wins)
94
+ tk_call('::blt::dnd', 'delete', '-source', *wins)
95
+ end
96
+ def self.delete_target(*wins)
97
+ tk_call('::blt::dnd', 'delete', '-target', *wins)
98
+ end
99
+ def self.drag(win, x, y, token=None)
100
+ tk_call('::blt::dnd', 'drag', win, x, y, token)
101
+ end
102
+ def self.drop(win, x, y, token=None)
103
+ tk_call('::blt::dnd', 'drop', win, x, y, token)
104
+ end
105
+ def self.get_data(win, fmt=nil, cmd=nil)
106
+ if fmt
107
+ tk_call('::blt::dnd', 'getdata', win, fmt, cmd)
108
+ else
109
+ list(tk_call('::blt::dnd', 'getdata', win))
110
+ end
111
+ end
112
+ def self.names(pat=None)
113
+ list(tk_call('::blt::dnd', 'names', pat))
114
+ end
115
+ def self.source_names(pat=None)
116
+ list(tk_call('::blt::dnd', 'names', '-source', pat))
117
+ end
118
+ def self.target_names(pat=None)
119
+ list(tk_call('::blt::dnd', 'names', '-target', pat))
120
+ end
121
+ def self.pull(win, fmt)
122
+ tk_call('::blt::dnd', 'pull', win, fmt)
123
+ end
124
+ def self.register(win, keys={})
125
+ tk_call('::blt::dnd', 'register', win, keys)
126
+ end
127
+ def self.select(win, x, y, timestamp)
128
+ tk_call('::blt::dnd', 'select', win, x, y, timestamp)
129
+ end
130
+ def self.set_data(win, fmt=nil, cmd=nil)
131
+ if fmt
132
+ tk_call('::blt::dnd', 'setdata', win, fmt, cmd)
133
+ else
134
+ list(tk_call('::blt::dnd', 'setdata', win))
135
+ end
136
+ end
137
+ def self.token(*args)
138
+ tk_call('::blt::dnd', 'token', *args)
139
+ end
140
+ end
141
+ end
@@ -0,0 +1,256 @@
1
+ #
2
+ # tkextlib/blt/vector.rb
3
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
4
+ #
5
+
6
+ require 'tk'
7
+ require 'tkextlib/blt.rb'
8
+
9
+ module Tk::BLT
10
+ class Vector < TkVariable
11
+ TkCommandNames = ['::blt::vector'.freeze].freeze
12
+
13
+ def self.create(*args)
14
+ tk_call('::blt::vector', 'create', *args)
15
+ end
16
+
17
+ def self.destroy(*args)
18
+ tk_call('::blt::vector', 'destroy', *args)
19
+ end
20
+
21
+ def self.expr(expression)
22
+ tk_call('::blt::vector', 'expr', expression)
23
+ end
24
+
25
+ def self.names(pat=None)
26
+ list = simplelist(tk_call('::blt::vector', 'names', pat))
27
+ TkVar_ID_TBL.mutex.synchronize{
28
+ list.collect{|name|
29
+ if TkVar_ID_TBL[name]
30
+ TkVar_ID_TBL[name]
31
+ elsif name[0..1] == '::' && TkVar_ID_TBL[name[2..-1]]
32
+ TkVar_ID_TBL[name[2..-1]]
33
+ else
34
+ name
35
+ end
36
+ }
37
+ }
38
+ end
39
+
40
+ ####################################
41
+
42
+ def initialize(size=nil, keys={})
43
+ if size.kind_of?(Hash)
44
+ keys = size
45
+ size = nil
46
+ end
47
+ if size.kind_of?(Array)
48
+ # [first, last]
49
+ size = size.join(':')
50
+ end
51
+ if size
52
+ @id = TkCore::INTERP._invoke('::blt::vector', 'create',
53
+ "#auto(#{size})", *hash_kv(keys))
54
+ else
55
+ @id = TkCore::INTERP._invoke('::blt::vector', 'create',
56
+ "#auto", *hash_kv(keys))
57
+ end
58
+
59
+ TkVar_ID_TBL.mutex.synchronize{
60
+ TkVar_ID_TBL[@id] = self
61
+ }
62
+
63
+ @def_default = false
64
+ @default_val = nil
65
+
66
+ @trace_var = nil
67
+ @trace_elem = nil
68
+ @trace_opts = nil
69
+
70
+ # teach Tk-ip that @id is global var
71
+ TkCore::INTERP._invoke_without_enc('global', @id)
72
+ end
73
+
74
+ def destroy
75
+ tk_call('::blt::vector', 'destroy', @id)
76
+ end
77
+
78
+ def inspect
79
+ '#<Tk::BLT::Vector: ' + @id + '>'
80
+ end
81
+
82
+ def to_s
83
+ @id
84
+ end
85
+
86
+ def *(item)
87
+ list(tk_call(@id, '*', item))
88
+ end
89
+
90
+ def +(item)
91
+ list(tk_call(@id, '+', item))
92
+ end
93
+
94
+ def -(item)
95
+ list(tk_call(@id, '-', item))
96
+ end
97
+
98
+ def /(item)
99
+ list(tk_call(@id, '/', item))
100
+ end
101
+
102
+ def append(*vectors)
103
+ tk_call(@id, 'append', *vectors)
104
+ end
105
+
106
+ def binread(channel, len=None, keys={})
107
+ if len.kind_of?(Hash)
108
+ keys = len
109
+ len = None
110
+ end
111
+ keys = _symbolkey2str(keys)
112
+ keys['swap'] = None if keys.delete('swap')
113
+ tk_call(@id, 'binread', channel, len, keys)
114
+ end
115
+
116
+ def clear()
117
+ tk_call(@id, 'clear')
118
+ self
119
+ end
120
+
121
+ def delete(*indices)
122
+ tk_call(@id, 'delete', *indices)
123
+ self
124
+ end
125
+
126
+ def dup_vector(vec)
127
+ tk_call(@id, 'dup', vec)
128
+ self
129
+ end
130
+
131
+ def expr(expression)
132
+ tk_call(@id, 'expr', expression)
133
+ self
134
+ end
135
+
136
+ def index(idx, val=None)
137
+ number(tk_call(@id, 'index', idx, val))
138
+ end
139
+
140
+ def [](idx)
141
+ index(idx)
142
+ end
143
+
144
+ def []=(idx, val)
145
+ index(idx, val)
146
+ end
147
+
148
+ def length()
149
+ number(tk_call(@id, 'length'))
150
+ end
151
+
152
+ def length=(size)
153
+ number(tk_call(@id, 'length', size))
154
+ end
155
+
156
+ def merge(*vectors)
157
+ tk_call(@id, 'merge', *vectors)
158
+ self
159
+ end
160
+
161
+ def normalize(vec=None)
162
+ tk_call(@id, 'normalize', vec)
163
+ self
164
+ end
165
+
166
+ def notify(keyword)
167
+ tk_call(@id, 'notify', keyword)
168
+ self
169
+ end
170
+
171
+ def offset()
172
+ number(tk_call(@id, 'offset'))
173
+ end
174
+
175
+ def offset=(val)
176
+ number(tk_call(@id, 'offset', val))
177
+ end
178
+
179
+ def random()
180
+ tk_call(@id, 'random')
181
+ end
182
+
183
+ def populate(vector, density=None)
184
+ tk_call(@id, 'populate', vector, density)
185
+ self
186
+ end
187
+
188
+ def range(first, last=None)
189
+ list(tk_call(@id, 'range', first, last))
190
+ end
191
+
192
+ def search(val1, val2=None)
193
+ list(tk_call(@id, 'search', val1, val2))
194
+ end
195
+
196
+ def set(item)
197
+ tk_call(@id, 'set', item)
198
+ self
199
+ end
200
+
201
+ def seq(start, finish=None, step=None)
202
+ tk_call(@id, 'seq', start, finish, step)
203
+ self
204
+ end
205
+
206
+ def sort(*vectors)
207
+ tk_call(@id, 'sort', *vectors)
208
+ self
209
+ end
210
+
211
+ def sort_reverse(*vectors)
212
+ tk_call(@id, 'sort', '-reverse', *vectors)
213
+ self
214
+ end
215
+
216
+ def split(*vectors)
217
+ tk_call(@id, 'split', *vectors)
218
+ self
219
+ end
220
+
221
+ def variable(var)
222
+ tk_call(@id, 'variable', var)
223
+ self
224
+ end
225
+ end
226
+
227
+ class VectorAccess < Vector
228
+ def self.new(name)
229
+ TkVar_ID_TBL.mutex.synchronize{
230
+ if TkVar_ID_TBL[name]
231
+ TkVar_ID_TBL[name]
232
+ else
233
+ (obj = self.allocate).instance_eval{
234
+ initialize(name)
235
+ TkVar_ID_TBL[@id] = self
236
+ }
237
+ obj
238
+ end
239
+ }
240
+ end
241
+
242
+ def initialize(vec_name)
243
+ @id = vec_name
244
+
245
+ @def_default = false
246
+ @default_val = nil
247
+
248
+ @trace_var = nil
249
+ @trace_elem = nil
250
+ @trace_opts = nil
251
+
252
+ # teach Tk-ip that @id is global var
253
+ TkCore::INTERP._invoke_without_enc('global', @id)
254
+ end
255
+ end
256
+ end
@@ -0,0 +1,175 @@
1
+ #
2
+ # tkextlib/blt/watch.rb
3
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
4
+ #
5
+
6
+ require 'tk'
7
+ require 'tkextlib/blt.rb'
8
+
9
+ module Tk::BLT
10
+ class Watch < TkObject
11
+ extend TkCore
12
+
13
+ TkCommandNames = ['::blt::watch'.freeze].freeze
14
+
15
+ WATCH_ID_TBL = TkCore::INTERP.create_table
16
+
17
+ (BLT_WATCH_ID = ['blt_watch_id'.freeze, TkUtil.untrust('00000')]).instance_eval{
18
+ @mutex = Mutex.new
19
+ def mutex; @mutex; end
20
+ freeze
21
+ }
22
+
23
+ TkCore::INTERP.init_ip_env{
24
+ WATCH_ID_TBL.mutex.synchronize{ WATCH_ID_TBL.clear }
25
+ }
26
+
27
+ def self.names(state = None)
28
+ lst = tk_split_list(tk_call('::blt::watch', 'names', state))
29
+ WATCH_ID_TBL.mutex.synchronize{
30
+ lst.collect{|name|
31
+ WATCH_ID_TBL[name] || name
32
+ }
33
+ }
34
+ end
35
+
36
+ def __numval_optkeys
37
+ ['maxlevel']
38
+ end
39
+ private :__numval_optkeys
40
+
41
+ def __boolval_optkeys
42
+ ['active']
43
+ end
44
+ private :__boolval_optkeys
45
+
46
+ def __config_cmd
47
+ ['::blt::watch', 'configure', self.path]
48
+ end
49
+ private :__config_cmd
50
+
51
+ def initialize(name = nil, keys = {})
52
+ if name.kind_of?(Hash)
53
+ keys = name
54
+ name = nil
55
+ end
56
+
57
+ if name
58
+ @id = name.to_s
59
+ else
60
+ BLT_WATCH_ID.mutex.synchronize{
61
+ @id = BLT_WATCH_ID.join(TkCore::INTERP._ip_id_)
62
+ BLT_WATCH_ID[1].succ!
63
+ }
64
+ end
65
+
66
+ @path = @id
67
+
68
+ WATCH_ID_TBL.mutex.synchronize{
69
+ WATCH_ID_TBL[@id] = self
70
+ }
71
+ tk_call('::blt::watch', 'create', @id, *hash_kv(keys))
72
+ end
73
+
74
+ def activate
75
+ tk_call('::blt::watch', 'activate', @id)
76
+ self
77
+ end
78
+ def deactivate
79
+ tk_call('::blt::watch', 'deactivate', @id)
80
+ self
81
+ end
82
+ def delete
83
+ tk_call('::blt::watch', 'delete', @id)
84
+ self
85
+ end
86
+ def info
87
+ ret = []
88
+ lst = tk_split_simplelist(tk_call('::blt::watch', 'info', @id))
89
+ until lst.empty?
90
+ k, v, *lst = lst
91
+ k = k[1..-1]
92
+ case k
93
+ when /^(#{__strval_optkeys.join('|')})$/
94
+ # do nothing
95
+
96
+ when /^(#{__numval_optkeys.join('|')})$/
97
+ begin
98
+ v = number(v)
99
+ rescue
100
+ v = nil
101
+ end
102
+
103
+ when /^(#{__numstrval_optkeys.join('|')})$/
104
+ v = num_or_str(v)
105
+
106
+ when /^(#{__boolval_optkeys.join('|')})$/
107
+ begin
108
+ v = bool(v)
109
+ rescue
110
+ v = nil
111
+ end
112
+
113
+ when /^(#{__listval_optkeys.join('|')})$/
114
+ v = simplelist(v)
115
+
116
+ when /^(#{__numlistval_optkeys.join('|')})$/
117
+ v = list(v)
118
+
119
+ else
120
+ if v.index('{')
121
+ v = tk_split_list(v)
122
+ else
123
+ v = tk_tcl2ruby(v)
124
+ end
125
+ end
126
+
127
+ ret << [k, v]
128
+ end
129
+
130
+ ret
131
+ end
132
+ def configinfo(slot = nil)
133
+ if slot
134
+ slot = slot.to_s
135
+ v = cget(slot)
136
+ if TkComm::GET_CONFIGINFO_AS_ARRAY
137
+ [slot, v]
138
+ else
139
+ {slot=>v}
140
+ end
141
+ else
142
+ if TkComm::GET_CONFIGINFO_AS_ARRAY
143
+ info
144
+ else
145
+ Hash[*(info.flatten)]
146
+ end
147
+ end
148
+ end
149
+ def cget_strict(key)
150
+ key = key.to_s
151
+ begin
152
+ info.assoc(key)[1]
153
+ rescue
154
+ fail ArgumentError, "unknown option '#{key}'"
155
+ end
156
+ end
157
+ def cget(key)
158
+ unless TkConfigMethod.__IGNORE_UNKNOWN_CONFIGURE_OPTION__
159
+ cget_strict(key)
160
+ else
161
+ begin
162
+ cget_strict(key)
163
+ rescue => e
164
+ if current_configinfo.has_key?(key.to_s)
165
+ # error on known option
166
+ fail e
167
+ else
168
+ # unknown option
169
+ nil
170
+ end
171
+ end
172
+ end
173
+ end
174
+ end
175
+ end