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,459 @@
1
+ #
2
+ # tk/canvastag.rb - methods for treating canvas tags
3
+ #
4
+ require 'tk'
5
+ require 'tk/tagfont'
6
+
7
+ module TkcTagAccess
8
+ include TkComm
9
+ include TkTreatTagFont
10
+ end
11
+
12
+ require 'tk/canvas'
13
+
14
+ module TkcTagAccess
15
+ def addtag(tag)
16
+ @c.addtag(tag, 'withtag', @id)
17
+ self
18
+ end
19
+
20
+ def bbox
21
+ @c.bbox(@id)
22
+ end
23
+
24
+ #def bind(seq, cmd=Proc.new, *args)
25
+ # @c.itembind(@id, seq, cmd, *args)
26
+ # self
27
+ #end
28
+ def bind(seq, *args)
29
+ # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
30
+ if TkComm._callback_entry?(args[0]) || !block_given?
31
+ cmd = args.shift
32
+ else
33
+ cmd = Proc.new
34
+ end
35
+ @c.itembind(@id, seq, cmd, *args)
36
+ self
37
+ end
38
+
39
+ #def bind_append(seq, cmd=Proc.new, *args)
40
+ # @c.itembind_append(@id, seq, cmd, *args)
41
+ # self
42
+ #end
43
+ def bind_append(seq, *args)
44
+ # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
45
+ if TkComm._callback_entry?(args[0]) || !block_given?
46
+ cmd = args.shift
47
+ else
48
+ cmd = Proc.new
49
+ end
50
+ @c.itembind_append(@id, seq, cmd, *args)
51
+ self
52
+ end
53
+
54
+ def bind_remove(seq)
55
+ @c.itembind_remove(@id, seq)
56
+ self
57
+ end
58
+
59
+ def bindinfo(seq=nil)
60
+ @c.itembindinfo(@id, seq)
61
+ end
62
+
63
+ def cget_tkstring(option)
64
+ @c.itemcget_tkstring(@id, option)
65
+ end
66
+ def cget(option)
67
+ @c.itemcget(@id, option)
68
+ end
69
+ def cget_strict(option)
70
+ @c.itemcget_strict(@id, option)
71
+ end
72
+
73
+ def configure(key, value=None)
74
+ @c.itemconfigure(@id, key, value)
75
+ self
76
+ end
77
+ # def configure(keys)
78
+ # @c.itemconfigure @id, keys
79
+ # end
80
+
81
+ def configinfo(key=nil)
82
+ @c.itemconfiginfo(@id, key)
83
+ end
84
+
85
+ def current_configinfo(key=nil)
86
+ @c.current_itemconfiginfo(@id, key)
87
+ end
88
+
89
+ def coords(*args)
90
+ @c.coords(@id, *args)
91
+ end
92
+
93
+ def dchars(first, last=None)
94
+ @c.dchars(@id, first, last)
95
+ self
96
+ end
97
+
98
+ def dtag(tag_to_del=None)
99
+ @c.dtag(@id, tag_to_del)
100
+ self
101
+ end
102
+ alias deltag dtag
103
+
104
+ def find
105
+ @c.find('withtag', @id)
106
+ end
107
+ alias list find
108
+
109
+ def focus
110
+ @c.itemfocus(@id)
111
+ end
112
+
113
+ def gettags
114
+ @c.gettags(@id)
115
+ end
116
+
117
+ def icursor(index)
118
+ @c.icursor(@id, index)
119
+ self
120
+ end
121
+
122
+ def imove(idx, x, y)
123
+ # Tcl/Tk 8.6 or later
124
+ @c.imove(@id, idx, x, y)
125
+ self
126
+ end
127
+ alias i_move imove
128
+
129
+ def index(idx)
130
+ @c.index(@id, idx)
131
+ end
132
+
133
+ def insert(beforethis, string)
134
+ @c.insert(@id, beforethis, string)
135
+ self
136
+ end
137
+
138
+ def lower(belowthis=None)
139
+ @c.lower(@id, belowthis)
140
+ self
141
+ end
142
+
143
+ def move(xamount, yamount)
144
+ @c.move(@id, xamount, yamount)
145
+ self
146
+ end
147
+
148
+ def moveto(x, y)
149
+ # Tcl/Tk 8.6 or later
150
+ @c.moveto(@id, x, y)
151
+ self
152
+ end
153
+ alias move_to moveto
154
+
155
+ def raise(abovethis=None)
156
+ @c.raise(@id, abovethis)
157
+ self
158
+ end
159
+
160
+ def scale(xorigin, yorigin, xscale, yscale)
161
+ @c.scale(@id, xorigin, yorigin, xscale, yscale)
162
+ self
163
+ end
164
+
165
+ def rchars(first, last, str_or_coords)
166
+ # Tcl/Tk 8.6 or later
167
+ @c.rchars(@id, first, last, str_or_coords)
168
+ self
169
+ end
170
+ alias replace_chars rchars
171
+ alias replace_coords rchars
172
+
173
+ def select_adjust(index)
174
+ @c.select('adjust', @id, index)
175
+ self
176
+ end
177
+ def select_from(index)
178
+ @c.select('from', @id, index)
179
+ self
180
+ end
181
+ def select_to(index)
182
+ @c.select('to', @id, index)
183
+ self
184
+ end
185
+
186
+ def itemtype
187
+ @c.itemtype(@id)
188
+ end
189
+
190
+ # Following operators support logical expressions of canvas tags
191
+ # (for Tk8.3+).
192
+ # If tag1.path is 't1' and tag2.path is 't2', then
193
+ # ltag = tag1 & tag2; ltag.path => "(t1)&&(t2)"
194
+ # ltag = tag1 | tag2; ltag.path => "(t1)||(t2)"
195
+ # ltag = tag1 ^ tag2; ltag.path => "(t1)^(t2)"
196
+ # ltag = - tag1; ltag.path => "!(t1)"
197
+ def & (tag)
198
+ if tag.kind_of? TkObject
199
+ TkcTagString.new(@c, '(' + @id + ')&&(' + tag.path + ')')
200
+ else
201
+ TkcTagString.new(@c, '(' + @id + ')&&(' + tag.to_s + ')')
202
+ end
203
+ end
204
+
205
+ def | (tag)
206
+ if tag.kind_of? TkObject
207
+ TkcTagString.new(@c, '(' + @id + ')||(' + tag.path + ')')
208
+ else
209
+ TkcTagString.new(@c, '(' + @id + ')||(' + tag.to_s + ')')
210
+ end
211
+ end
212
+
213
+ def ^ (tag)
214
+ if tag.kind_of? TkObject
215
+ TkcTagString.new(@c, '(' + @id + ')^(' + tag.path + ')')
216
+ else
217
+ TkcTagString.new(@c, '(' + @id + ')^(' + tag.to_s + ')')
218
+ end
219
+ end
220
+
221
+ def -@
222
+ TkcTagString.new(@c, '!(' + @id + ')')
223
+ end
224
+ end
225
+
226
+ class TkcTag<TkObject
227
+ include TkcTagAccess
228
+
229
+ CTagID_TBL = TkCore::INTERP.create_table
230
+
231
+ (Tk_CanvasTag_ID = ['ctag'.freeze, TkUtil.untrust('00000')]).instance_eval{
232
+ @mutex = Mutex.new
233
+ def mutex; @mutex; end
234
+ freeze
235
+ }
236
+
237
+ TkCore::INTERP.init_ip_env{
238
+ CTagID_TBL.mutex.synchronize{ CTagID_TBL.clear }
239
+ }
240
+
241
+ def TkcTag.id2obj(canvas, id)
242
+ cpath = canvas.path
243
+ CTagID_TBL.mutex.synchronize{
244
+ if CTagID_TBL[cpath]
245
+ CTagID_TBL[cpath][id]? CTagID_TBL[cpath][id]: id
246
+ else
247
+ id
248
+ end
249
+ }
250
+ end
251
+
252
+ def initialize(parent, mode=nil, *args)
253
+ #unless parent.kind_of?(TkCanvas)
254
+ # fail ArgumentError, "expect TkCanvas for 1st argument"
255
+ #end
256
+ @c = parent
257
+ @cpath = parent.path
258
+ Tk_CanvasTag_ID.mutex.synchronize{
259
+ # @path = @id = Tk_CanvasTag_ID.join('')
260
+ @path = @id = Tk_CanvasTag_ID.join(TkCore::INTERP._ip_id_)
261
+ Tk_CanvasTag_ID[1].succ!
262
+ }
263
+ CTagID_TBL.mutex.synchronize{
264
+ CTagID_TBL[@cpath] = {} unless CTagID_TBL[@cpath]
265
+ CTagID_TBL[@cpath][@id] = self
266
+ }
267
+ if mode
268
+ tk_call_without_enc(@c.path, "addtag", @id, mode, *args)
269
+ end
270
+ end
271
+ def id
272
+ @id
273
+ end
274
+
275
+ def exist?
276
+ if @c.find_withtag(@id)
277
+ true
278
+ else
279
+ false
280
+ end
281
+ end
282
+
283
+ def delete
284
+ @c.delete @id
285
+ CTagID_TBL.mutex.synchronize{
286
+ CTagID_TBL[@cpath].delete(@id) if CTagID_TBL[@cpath]
287
+ }
288
+ self
289
+ end
290
+ alias remove delete
291
+ alias destroy delete
292
+
293
+ def set_to_above(target)
294
+ @c.addtag_above(@id, target)
295
+ self
296
+ end
297
+ alias above set_to_above
298
+
299
+ def set_to_all
300
+ @c.addtag_all(@id)
301
+ self
302
+ end
303
+ alias all set_to_all
304
+
305
+ def set_to_below(target)
306
+ @c.addtag_below(@id, target)
307
+ self
308
+ end
309
+ alias below set_to_below
310
+
311
+ def set_to_closest(x, y, halo=None, start=None)
312
+ @c.addtag_closest(@id, x, y, halo, start)
313
+ self
314
+ end
315
+ alias closest set_to_closest
316
+
317
+ def set_to_enclosed(x1, y1, x2, y2)
318
+ @c.addtag_enclosed(@id, x1, y1, x2, y2)
319
+ self
320
+ end
321
+ alias enclosed set_to_enclosed
322
+
323
+ def set_to_overlapping(x1, y1, x2, y2)
324
+ @c.addtag_overlapping(@id, x1, y1, x2, y2)
325
+ self
326
+ end
327
+ alias overlapping set_to_overlapping
328
+
329
+ def set_to_withtag(target)
330
+ @c.addtag_withtag(@id, target)
331
+ self
332
+ end
333
+ alias withtag set_to_withtag
334
+ end
335
+
336
+ class TkcTagString<TkcTag
337
+ def self.new(parent, name, mode=nil, *args)
338
+ obj = nil
339
+ CTagID_TBL.mutex.synchronize{
340
+ if CTagID_TBL[parent.path] && CTagID_TBL[parent.path][name]
341
+ obj = CTagID_TBL[parent.path][name]
342
+ else
343
+ # super(parent, name, *args)
344
+ (obj = self.allocate).instance_eval{
345
+ @c = parent
346
+ @cpath = parent.path
347
+ @path = @id = name
348
+ CTagID_TBL[@cpath] = {} unless CTagID_TBL[@cpath]
349
+ CTagID_TBL[@cpath][@id] = self
350
+ }
351
+ end
352
+ }
353
+ if obj && mode
354
+ tk_call_without_enc(@c.path, "addtag", @id, mode, *args)
355
+ end
356
+ obj
357
+ end
358
+
359
+ def initialize(parent, name, mode=nil, *args)
360
+ # dummy:: not called by 'new' method
361
+
362
+ #unless parent.kind_of?(TkCanvas)
363
+ # fail ArgumentError, "expect TkCanvas for 1st argument"
364
+ #end
365
+ @c = parent
366
+ @cpath = parent.path
367
+ @path = @id = name
368
+
369
+ if mode
370
+ tk_call_without_enc(@c.path, "addtag", @id, mode, *args)
371
+ end
372
+ end
373
+ end
374
+ TkcNamedTag = TkcTagString
375
+
376
+ class TkcTagAll<TkcTagString
377
+ def self.new(parent)
378
+ super(parent, 'all')
379
+ end
380
+ =begin
381
+ def initialize(parent)
382
+ #unless parent.kind_of?(TkCanvas)
383
+ # fail ArgumentError, "expect TkCanvas for 1st argument"
384
+ #end
385
+ @c = parent
386
+ @cpath = parent.path
387
+ @path = @id = 'all'
388
+ CTagID_TBL.mutex.synchronize{
389
+ CTagID_TBL[@cpath] = {} unless CTagID_TBL[@cpath]
390
+ CTagID_TBL[@cpath][@id] = self
391
+ }
392
+ end
393
+ =end
394
+ end
395
+
396
+ class TkcTagCurrent<TkcTagString
397
+ def self.new(parent)
398
+ super(parent, 'current')
399
+ end
400
+ =begin
401
+ def initialize(parent)
402
+ #unless parent.kind_of?(TkCanvas)
403
+ # fail ArgumentError, "expect TkCanvas for 1st argument"
404
+ #end
405
+ @c = parent
406
+ @cpath = parent.path
407
+ @path = @id = 'current'
408
+ CTagID_TBL.mutex.synchronize{
409
+ CTagID_TBL[@cpath] = {} unless CTagID_TBL[@cpath]
410
+ CTagID_TBL[@cpath][@id] = self
411
+ }
412
+ end
413
+ =end
414
+ end
415
+
416
+ class TkcGroup<TkcTag
417
+ (Tk_cGroup_ID = ['tkcg'.freeze, TkUtil.untrust('00000')]).instance_eval{
418
+ @mutex = Mutex.new
419
+ def mutex; @mutex; end
420
+ freeze
421
+ }
422
+
423
+ #def create_self(parent, *args)
424
+ def initialize(parent, *args)
425
+ #unless parent.kind_of?(TkCanvas)
426
+ # fail ArgumentError, "expect TkCanvas for 1st argument"
427
+ #end
428
+ @c = parent
429
+ @cpath = parent.path
430
+ Tk_cGroup_ID.mutex.synchronize{
431
+ # @path = @id = Tk_cGroup_ID.join('')
432
+ @path = @id = Tk_cGroup_ID.join(TkCore::INTERP._ip_id_)
433
+ Tk_cGroup_ID[1].succ!
434
+ }
435
+ CTagID_TBL.mutex.synchronize{
436
+ CTagID_TBL[@cpath] = {} unless CTagID_TBL[@cpath]
437
+ CTagID_TBL[@cpath][@id] = self
438
+ }
439
+ include(*args) if args != []
440
+ end
441
+ #private :create_self
442
+
443
+ def include(*tags)
444
+ for i in tags
445
+ #i.addtag(@id)
446
+ @c.addtag_withtag(@id, i)
447
+ end
448
+ self
449
+ end
450
+ alias add include
451
+
452
+ def exclude(*tags)
453
+ for i in tags
454
+ #i.dtag(@id)
455
+ @c.dtag(i, @id)
456
+ end
457
+ self
458
+ end
459
+ end