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,139 @@
1
+ #
2
+ # tk/virtevent.rb : treats virtual events
3
+ # 1998/07/16 by Hidetoshi Nagai <nagai@ai.kyutech.ac.jp>
4
+ #
5
+ require 'tk'
6
+
7
+ class TkVirtualEvent<TkObject
8
+ extend Tk
9
+
10
+ TkCommandNames = ['event'.freeze].freeze
11
+
12
+ (TkVirtualEventID = ["VirtEvent".freeze, TkUtil.untrust("00000")]).instance_eval{
13
+ @mutex = Mutex.new
14
+ def mutex; @mutex; end
15
+ freeze
16
+ }
17
+
18
+ TkVirtualEventTBL = TkCore::INTERP.create_table
19
+
20
+ TkCore::INTERP.init_ip_env{
21
+ TkVirtualEventTBL.mutex.synchronize{ TkVirtualEventTBL.clear }
22
+ }
23
+
24
+ class PreDefVirtEvent<self
25
+ def self.new(event, *sequences)
26
+ if event =~ /^<(<.*>)>$/
27
+ event = $1
28
+ elsif event !~ /^<.*>$/
29
+ event = '<' + event + '>'
30
+ end
31
+ TkVirtualEvent::TkVirtualEventTBL.mutex.synchronize{
32
+ if TkVirtualEvent::TkVirtualEventTBL.has_key?(event)
33
+ TkVirtualEvent::TkVirtualEventTBL[event]
34
+ else
35
+ # super(event, *sequences)
36
+ (obj = self.allocate).instance_eval{
37
+ initialize(event, *sequences)
38
+ TkVirtualEvent::TkVirtualEventTBL[@id] = self
39
+ }
40
+ end
41
+ }
42
+ end
43
+
44
+ def initialize(event, *sequences)
45
+ @path = @id = event
46
+ _add_sequences(sequences)
47
+ end
48
+ end
49
+
50
+ def TkVirtualEvent.getobj(event)
51
+ obj = nil
52
+ TkVirtualEventTBL.mutex.synchronize{
53
+ obj = TkVirtualEventTBL[event]
54
+ }
55
+ if obj
56
+ obj
57
+ else
58
+ if tk_call_without_enc('event', 'info').index("<#{event}>")
59
+ PreDefVirtEvent.new(event)
60
+ else
61
+ fail ArgumentError, "undefined virtual event '<#{event}>'"
62
+ end
63
+ end
64
+ end
65
+
66
+ def TkVirtualEvent.info
67
+ tk_call_without_enc('event', 'info').split(/\s+/).collect!{|seq|
68
+ TkVirtualEvent.getobj(seq[1..-2])
69
+ }
70
+ end
71
+
72
+ def initialize(*sequences)
73
+ TkVirtualEventID.mutex.synchronize{
74
+ # @path = @id = '<' + TkVirtualEventID.join('') + '>'
75
+ @path = @id = '<' + TkVirtualEventID.join(TkCore::INTERP._ip_id_) + '>'
76
+ TkVirtualEventID[1].succ!
77
+ }
78
+ _add_sequences(sequences)
79
+ end
80
+
81
+ def _add_sequences(seq_ary)
82
+ unless seq_ary.empty?
83
+ tk_call_without_enc('event', 'add', "<#{@id}>",
84
+ *(seq_ary.collect{|seq|
85
+ "<#{tk_event_sequence(seq)}>"
86
+ }) )
87
+ end
88
+ self
89
+ end
90
+ private :_add_sequences
91
+
92
+ def add(*sequences)
93
+ if sequences != []
94
+ _add_sequences(sequences)
95
+ TkVirtualEventTBL.mutex.synchronize{
96
+ TkVirtualEventTBL[@id] = self
97
+ }
98
+ end
99
+ self
100
+ end
101
+
102
+ def delete(*sequences)
103
+ if sequences.empty?
104
+ tk_call_without_enc('event', 'delete', "<#{@id}>")
105
+ TkVirtualEventTBL.mutex.synchronize{
106
+ TkVirtualEventTBL.delete(@id)
107
+ }
108
+ else
109
+ tk_call_without_enc('event', 'delete', "<#{@id}>",
110
+ *(sequences.collect{|seq|
111
+ "<#{tk_event_sequence(seq)}>"
112
+ }) )
113
+ if tk_call_without_enc('event','info',"<#{@id}>").empty?
114
+ TkVirtualEventTBL.mutex.synchronize{
115
+ TkVirtualEventTBL.delete(@id)
116
+ }
117
+ end
118
+ end
119
+ self
120
+ end
121
+
122
+ def info
123
+ tk_call_without_enc('event','info',"<#{@id}>").split(/\s+/).collect!{|seq|
124
+ lst = seq.scan(/<*[^<>]+>*/).collect!{|subseq|
125
+ case (subseq)
126
+ when /^<<[^<>]+>>$/
127
+ TkVirtualEvent.getobj(subseq[1..-2])
128
+ when /^<[^<>]+>$/
129
+ subseq[1..-2]
130
+ else
131
+ subseq.split('')
132
+ end
133
+ }.flatten
134
+ (lst.size == 1) ? lst[0] : lst
135
+ }
136
+ end
137
+ end
138
+
139
+ TkNamedVirtualEvent = TkVirtualEvent::PreDefVirtEvent
@@ -0,0 +1,392 @@
1
+ #
2
+ # tk/winfo.rb : methods for winfo command
3
+ #
4
+ module TkWinfo
5
+ end
6
+
7
+ require 'tk'
8
+
9
+ module TkWinfo
10
+ include Tk
11
+ extend Tk
12
+
13
+ TkCommandNames = ['winfo'.freeze].freeze
14
+
15
+ def TkWinfo.atom(name, win=nil)
16
+ if win
17
+ number(tk_call_without_enc('winfo', 'atom', '-displayof', win,
18
+ _get_eval_enc_str(name)))
19
+ else
20
+ number(tk_call_without_enc('winfo', 'atom', _get_eval_enc_str(name)))
21
+ end
22
+ end
23
+ def winfo_atom(name)
24
+ TkWinfo.atom(name, self)
25
+ end
26
+
27
+ def TkWinfo.atomname(id, win=nil)
28
+ if win
29
+ _fromUTF8(tk_call_without_enc('winfo', 'atomname',
30
+ '-displayof', win, id))
31
+ else
32
+ _fromUTF8(tk_call_without_enc('winfo', 'atomname', id))
33
+ end
34
+ end
35
+ def winfo_atomname(id)
36
+ TkWinfo.atomname(id, self)
37
+ end
38
+
39
+ def TkWinfo.cells(win)
40
+ number(tk_call_without_enc('winfo', 'cells', win))
41
+ end
42
+ def winfo_cells
43
+ TkWinfo.cells self
44
+ end
45
+
46
+ def TkWinfo.children(win)
47
+ list(tk_call_without_enc('winfo', 'children', win))
48
+ end
49
+ def winfo_children
50
+ TkWinfo.children self
51
+ end
52
+
53
+ def TkWinfo.classname(win)
54
+ tk_call_without_enc('winfo', 'class', win)
55
+ end
56
+ def winfo_classname
57
+ TkWinfo.classname self
58
+ end
59
+ alias winfo_class winfo_classname
60
+
61
+ def TkWinfo.colormapfull(win)
62
+ bool(tk_call_without_enc('winfo', 'colormapfull', win))
63
+ end
64
+ def winfo_colormapfull
65
+ TkWinfo.colormapfull self
66
+ end
67
+
68
+ def TkWinfo.containing(rootX, rootY, win=nil)
69
+ if win
70
+ window(tk_call_without_enc('winfo', 'containing',
71
+ '-displayof', win, rootX, rootY))
72
+ else
73
+ window(tk_call_without_enc('winfo', 'containing', rootX, rootY))
74
+ end
75
+ end
76
+ def winfo_containing(x, y)
77
+ TkWinfo.containing(x, y, self)
78
+ end
79
+
80
+ def TkWinfo.depth(win)
81
+ number(tk_call_without_enc('winfo', 'depth', win))
82
+ end
83
+ def winfo_depth
84
+ TkWinfo.depth self
85
+ end
86
+
87
+ def TkWinfo.exist?(win)
88
+ bool(tk_call_without_enc('winfo', 'exists', win))
89
+ end
90
+ def winfo_exist?
91
+ TkWinfo.exist? self
92
+ end
93
+
94
+ def TkWinfo.fpixels(win, dist)
95
+ number(tk_call_without_enc('winfo', 'fpixels', win, dist))
96
+ end
97
+ def winfo_fpixels(dist)
98
+ TkWinfo.fpixels self, dist
99
+ end
100
+
101
+ def TkWinfo.geometry(win)
102
+ tk_call_without_enc('winfo', 'geometry', win)
103
+ end
104
+ def winfo_geometry
105
+ TkWinfo.geometry self
106
+ end
107
+
108
+ def TkWinfo.height(win)
109
+ number(tk_call_without_enc('winfo', 'height', win))
110
+ end
111
+ def winfo_height
112
+ TkWinfo.height self
113
+ end
114
+
115
+ def TkWinfo.id(win)
116
+ tk_call_without_enc('winfo', 'id', win)
117
+ end
118
+ def winfo_id
119
+ TkWinfo.id self
120
+ end
121
+
122
+ def TkWinfo.interps(win=nil)
123
+ if win
124
+ #tk_split_simplelist(tk_call_without_enc('winfo', 'interps',
125
+ # '-displayof', win))
126
+ tk_split_simplelist(tk_call_without_enc('winfo', 'interps',
127
+ '-displayof', win),
128
+ false, true)
129
+ else
130
+ #tk_split_simplelist(tk_call_without_enc('winfo', 'interps'))
131
+ tk_split_simplelist(tk_call_without_enc('winfo', 'interps'),
132
+ false, true)
133
+ end
134
+ end
135
+ def winfo_interps
136
+ TkWinfo.interps self
137
+ end
138
+
139
+ def TkWinfo.mapped?(win)
140
+ bool(tk_call_without_enc('winfo', 'ismapped', win))
141
+ end
142
+ def winfo_mapped?
143
+ TkWinfo.mapped? self
144
+ end
145
+
146
+ def TkWinfo.manager(win)
147
+ tk_call_without_enc('winfo', 'manager', win)
148
+ end
149
+ def winfo_manager
150
+ TkWinfo.manager self
151
+ end
152
+
153
+ def TkWinfo.appname(win)
154
+ tk_call('winfo', 'name', win)
155
+ end
156
+ def winfo_appname
157
+ TkWinfo.appname self
158
+ end
159
+
160
+ def TkWinfo.parent(win)
161
+ window(tk_call_without_enc('winfo', 'parent', win))
162
+ end
163
+ def winfo_parent
164
+ TkWinfo.parent self
165
+ end
166
+
167
+ def TkWinfo.widget(id, win=nil)
168
+ if win
169
+ window(tk_call_without_enc('winfo', 'pathname', '-displayof', win, id))
170
+ else
171
+ window(tk_call_without_enc('winfo', 'pathname', id))
172
+ end
173
+ end
174
+ def winfo_widget(id)
175
+ TkWinfo.widget id, self
176
+ end
177
+
178
+ def TkWinfo.pixels(win, dist)
179
+ number(tk_call_without_enc('winfo', 'pixels', win, dist))
180
+ end
181
+ def winfo_pixels(dist)
182
+ TkWinfo.pixels self, dist
183
+ end
184
+
185
+ def TkWinfo.reqheight(win)
186
+ number(tk_call_without_enc('winfo', 'reqheight', win))
187
+ end
188
+ def winfo_reqheight
189
+ TkWinfo.reqheight self
190
+ end
191
+
192
+ def TkWinfo.reqwidth(win)
193
+ number(tk_call_without_enc('winfo', 'reqwidth', win))
194
+ end
195
+ def winfo_reqwidth
196
+ TkWinfo.reqwidth self
197
+ end
198
+
199
+ def TkWinfo.rgb(win, color)
200
+ list(tk_call_without_enc('winfo', 'rgb', win, color))
201
+ end
202
+ def winfo_rgb(color)
203
+ TkWinfo.rgb self, color
204
+ end
205
+
206
+ def TkWinfo.rootx(win)
207
+ number(tk_call_without_enc('winfo', 'rootx', win))
208
+ end
209
+ def winfo_rootx
210
+ TkWinfo.rootx self
211
+ end
212
+
213
+ def TkWinfo.rooty(win)
214
+ number(tk_call_without_enc('winfo', 'rooty', win))
215
+ end
216
+ def winfo_rooty
217
+ TkWinfo.rooty self
218
+ end
219
+
220
+ def TkWinfo.screen(win)
221
+ tk_call('winfo', 'screen', win)
222
+ end
223
+ def winfo_screen
224
+ TkWinfo.screen self
225
+ end
226
+
227
+ def TkWinfo.screencells(win)
228
+ number(tk_call_without_enc('winfo', 'screencells', win))
229
+ end
230
+ def winfo_screencells
231
+ TkWinfo.screencells self
232
+ end
233
+
234
+ def TkWinfo.screendepth(win)
235
+ number(tk_call_without_enc('winfo', 'screendepth', win))
236
+ end
237
+ def winfo_screendepth
238
+ TkWinfo.screendepth self
239
+ end
240
+
241
+ def TkWinfo.screenheight (win)
242
+ number(tk_call_without_enc('winfo', 'screenheight', win))
243
+ end
244
+ def winfo_screenheight
245
+ TkWinfo.screenheight self
246
+ end
247
+
248
+ def TkWinfo.screenmmheight(win)
249
+ number(tk_call_without_enc('winfo', 'screenmmheight', win))
250
+ end
251
+ def winfo_screenmmheight
252
+ TkWinfo.screenmmheight self
253
+ end
254
+
255
+ def TkWinfo.screenmmwidth(win)
256
+ number(tk_call_without_enc('winfo', 'screenmmwidth', win))
257
+ end
258
+ def winfo_screenmmwidth
259
+ TkWinfo.screenmmwidth self
260
+ end
261
+
262
+ def TkWinfo.screenvisual(win)
263
+ tk_call_without_enc('winfo', 'screenvisual', win)
264
+ end
265
+ def winfo_screenvisual
266
+ TkWinfo.screenvisual self
267
+ end
268
+
269
+ def TkWinfo.screenwidth(win)
270
+ number(tk_call_without_enc('winfo', 'screenwidth', win))
271
+ end
272
+ def winfo_screenwidth
273
+ TkWinfo.screenwidth self
274
+ end
275
+
276
+ def TkWinfo.server(win)
277
+ tk_call('winfo', 'server', win)
278
+ end
279
+ def winfo_server
280
+ TkWinfo.server self
281
+ end
282
+
283
+ def TkWinfo.toplevel(win)
284
+ window(tk_call_without_enc('winfo', 'toplevel', win))
285
+ end
286
+ def winfo_toplevel
287
+ TkWinfo.toplevel self
288
+ end
289
+
290
+ def TkWinfo.visual(win)
291
+ tk_call_without_enc('winfo', 'visual', win)
292
+ end
293
+ def winfo_visual
294
+ TkWinfo.visual self
295
+ end
296
+
297
+ def TkWinfo.visualid(win)
298
+ tk_call_without_enc('winfo', 'visualid', win)
299
+ end
300
+ def winfo_visualid
301
+ TkWinfo.visualid self
302
+ end
303
+
304
+ def TkWinfo.visualsavailable(win, includeids=false)
305
+ if includeids
306
+ list(tk_call_without_enc('winfo', 'visualsavailable',
307
+ win, "includeids"))
308
+ else
309
+ list(tk_call_without_enc('winfo', 'visualsavailable', win))
310
+ end
311
+ end
312
+ def winfo_visualsavailable(includeids=false)
313
+ TkWinfo.visualsavailable self, includeids
314
+ end
315
+
316
+ def TkWinfo.vrootheight(win)
317
+ number(tk_call_without_enc('winfo', 'vrootheight', win))
318
+ end
319
+ def winfo_vrootheight
320
+ TkWinfo.vrootheight self
321
+ end
322
+
323
+ def TkWinfo.vrootwidth(win)
324
+ number(tk_call_without_enc('winfo', 'vrootwidth', win))
325
+ end
326
+ def winfo_vrootwidth
327
+ TkWinfo.vrootwidth self
328
+ end
329
+
330
+ def TkWinfo.vrootx(win)
331
+ number(tk_call_without_enc('winfo', 'vrootx', win))
332
+ end
333
+ def winfo_vrootx
334
+ TkWinfo.vrootx self
335
+ end
336
+
337
+ def TkWinfo.vrooty(win)
338
+ number(tk_call_without_enc('winfo', 'vrooty', win))
339
+ end
340
+ def winfo_vrooty
341
+ TkWinfo.vrooty self
342
+ end
343
+
344
+ def TkWinfo.width(win)
345
+ number(tk_call_without_enc('winfo', 'width', win))
346
+ end
347
+ def winfo_width
348
+ TkWinfo.width self
349
+ end
350
+
351
+ def TkWinfo.x(win)
352
+ number(tk_call_without_enc('winfo', 'x', win))
353
+ end
354
+ def winfo_x
355
+ TkWinfo.x self
356
+ end
357
+
358
+ def TkWinfo.y(win)
359
+ number(tk_call_without_enc('winfo', 'y', win))
360
+ end
361
+ def winfo_y
362
+ TkWinfo.y self
363
+ end
364
+
365
+ def TkWinfo.viewable(win)
366
+ bool(tk_call_without_enc('winfo', 'viewable', win))
367
+ end
368
+ def winfo_viewable
369
+ TkWinfo.viewable self
370
+ end
371
+
372
+ def TkWinfo.pointerx(win)
373
+ number(tk_call_without_enc('winfo', 'pointerx', win))
374
+ end
375
+ def winfo_pointerx
376
+ TkWinfo.pointerx self
377
+ end
378
+
379
+ def TkWinfo.pointery(win)
380
+ number(tk_call_without_enc('winfo', 'pointery', win))
381
+ end
382
+ def winfo_pointery
383
+ TkWinfo.pointery self
384
+ end
385
+
386
+ def TkWinfo.pointerxy(win)
387
+ list(tk_call_without_enc('winfo', 'pointerxy', win))
388
+ end
389
+ def winfo_pointerxy
390
+ TkWinfo.pointerxy self
391
+ end
392
+ end