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,88 @@
1
+ #
2
+ # tk/textimage.rb - treat Tk text image object
3
+ #
4
+ require 'tk'
5
+ require 'tk/text'
6
+
7
+ class TkTextImage<TkObject
8
+ include Tk::Text::IndexModMethods
9
+
10
+ def initialize(parent, index, keys)
11
+ #unless parent.kind_of?(Tk::Text)
12
+ # fail ArgumentError, "expect Tk::Text for 1st argument"
13
+ #end
14
+ @t = parent
15
+ if index == 'end' || index == :end
16
+ @path = TkTextMark.new(@t, tk_call(@t.path, 'index', 'end - 1 chars'))
17
+ elsif index.kind_of? TkTextMark
18
+ if tk_call_without_enc(@t.path,'index',index.path) == tk_call_without_enc(@t.path,'index','end')
19
+ @path = TkTextMark.new(@t, tk_call_without_enc(@t.path, 'index',
20
+ 'end - 1 chars'))
21
+ else
22
+ @path = TkTextMark.new(@t, tk_call_without_enc(@t.path, 'index',
23
+ index.path))
24
+ end
25
+ else
26
+ @path = TkTextMark.new(@t, tk_call_without_enc(@t.path, 'index',
27
+ _get_eval_enc_str(index)))
28
+ end
29
+ @path.gravity = 'left'
30
+ @index = @path.path
31
+ @id = tk_call_without_enc(@t.path, 'image', 'create', @index,
32
+ *hash_kv(keys, true)).freeze
33
+ @path.gravity = 'right'
34
+ end
35
+
36
+ def id
37
+ Tk::Text::IndexString.new(@id)
38
+ end
39
+ def mark
40
+ @path
41
+ end
42
+
43
+ def [](slot)
44
+ cget(slot)
45
+ end
46
+ def []=(slot, value)
47
+ configure(slot, value)
48
+ value
49
+ end
50
+
51
+ def cget(slot)
52
+ @t.image_cget(@index, slot)
53
+ end
54
+
55
+ def cget_strict(slot)
56
+ @t.image_cget_strict(@index, slot)
57
+ end
58
+
59
+ def configure(slot, value=None)
60
+ @t.image_configure(@index, slot, value)
61
+ self
62
+ end
63
+ # def configure(slot, value)
64
+ # tk_call @t.path, 'image', 'configure', @index, "-#{slot}", value
65
+ # end
66
+
67
+ def configinfo(slot = nil)
68
+ @t.image_configinfo(@index, slot)
69
+ end
70
+
71
+ def current_configinfo(slot = nil)
72
+ @t.current_image_configinfo(@index, slot)
73
+ end
74
+
75
+ def image
76
+ img = tk_call_without_enc(@t.path, 'image', 'cget', @index, '-image')
77
+ TkImage::Tk_IMGTBL[img]? TkImage::Tk_IMGTBL[img] : img
78
+ end
79
+
80
+ def image=(value)
81
+ tk_call_without_enc(@t.path, 'image', 'configure', @index, '-image',
82
+ _get_eval_enc_str(value))
83
+ #self
84
+ value
85
+ end
86
+ end
87
+
88
+ TktImage = TkTextImage
@@ -0,0 +1,204 @@
1
+ #
2
+ # tk/textmark.rb - methods for treating text marks
3
+ #
4
+ require 'tk'
5
+ require 'tk/text'
6
+
7
+ class TkTextMark<TkObject
8
+ include Tk::Text::IndexModMethods
9
+
10
+ TMarkID_TBL = TkCore::INTERP.create_table
11
+
12
+ (Tk_TextMark_ID = ['mark'.freeze, TkUtil.untrust('00000')]).instance_eval{
13
+ @mutex = Mutex.new
14
+ def mutex; @mutex; end
15
+ freeze
16
+ }
17
+
18
+ TkCore::INTERP.init_ip_env{
19
+ TMarkID_TBL.mutex.synchronize{ TMarkID_TBL.clear }
20
+ }
21
+
22
+ def TkTextMark.id2obj(text, id)
23
+ tpath = text.path
24
+ TMarkID_TBL.mutex.synchronize{
25
+ if TMarkID_TBL[tpath]
26
+ TMarkID_TBL[tpath][id]? TMarkID_TBL[tpath][id]: id
27
+ else
28
+ id
29
+ end
30
+ }
31
+ end
32
+
33
+ def initialize(parent, index)
34
+ #unless parent.kind_of?(Tk::Text)
35
+ # fail ArgumentError, "expect Tk::Text for 1st argument"
36
+ #end
37
+ @parent = @t = parent
38
+ @tpath = parent.path
39
+ Tk_TextMark_ID.mutex.synchronize{
40
+ # @path = @id = Tk_TextMark_ID.join('')
41
+ @path = @id = Tk_TextMark_ID.join(TkCore::INTERP._ip_id_).freeze
42
+ Tk_TextMark_ID[1].succ!
43
+ }
44
+ TMarkID_TBL.mutex.synchronize{
45
+ TMarkID_TBL[@id] = self
46
+ TMarkID_TBL[@tpath] = {} unless TMarkID_TBL[@tpath]
47
+ TMarkID_TBL[@tpath][@id] = self
48
+ }
49
+ tk_call_without_enc(@t.path, 'mark', 'set', @id,
50
+ _get_eval_enc_str(index))
51
+ @t._addtag id, self
52
+ end
53
+
54
+ def id
55
+ Tk::Text::IndexString.new(@id)
56
+ end
57
+
58
+ def exist?
59
+ #if ( tk_split_simplelist(_fromUTF8(tk_call_without_enc(@t.path, 'mark', 'names'))).find{|id| id == @id } )
60
+ if ( tk_split_simplelist(tk_call_without_enc(@t.path, 'mark', 'names'), false, true).find{|id| id == @id } )
61
+ true
62
+ else
63
+ false
64
+ end
65
+ end
66
+
67
+ =begin
68
+ # move to Tk::Text::IndexModMethods module
69
+ def +(mod)
70
+ return chars(mod) if mod.kind_of?(Numeric)
71
+
72
+ mod = mod.to_s
73
+ if mod =~ /^\s*[+-]?\d/
74
+ Tk::Text::IndexString.new(@id + ' + ' + mod)
75
+ else
76
+ Tk::Text::IndexString.new(@id + ' ' + mod)
77
+ end
78
+ end
79
+
80
+ def -(mod)
81
+ return chars(-mod) if mod.kind_of?(Numeric)
82
+
83
+ mod = mod.to_s
84
+ if mod =~ /^\s*[+-]?\d/
85
+ Tk::Text::IndexString.new(@id + ' - ' + mod)
86
+ elsif mod =~ /^\s*[-]\s+(\d.*)$/
87
+ Tk::Text::IndexString.new(@id + ' - -' + $1)
88
+ else
89
+ Tk::Text::IndexString.new(@id + ' ' + mod)
90
+ end
91
+ end
92
+ =end
93
+
94
+ def pos
95
+ @t.index(@id)
96
+ end
97
+
98
+ def pos=(where)
99
+ set(where)
100
+ end
101
+
102
+ def set(where)
103
+ tk_call_without_enc(@t.path, 'mark', 'set', @id,
104
+ _get_eval_enc_str(where))
105
+ self
106
+ end
107
+
108
+ def unset
109
+ tk_call_without_enc(@t.path, 'mark', 'unset', @id)
110
+ self
111
+ end
112
+ alias destroy unset
113
+
114
+ def gravity
115
+ tk_call_without_enc(@t.path, 'mark', 'gravity', @id)
116
+ end
117
+
118
+ def gravity=(direction)
119
+ tk_call_without_enc(@t.path, 'mark', 'gravity', @id, direction)
120
+ #self
121
+ direction
122
+ end
123
+
124
+ def next(index = nil)
125
+ if index
126
+ @t.tagid2obj(_fromUTF8(tk_call_without_enc(@t.path, 'mark', 'next', _get_eval_enc_str(index))))
127
+ else
128
+ @t.tagid2obj(_fromUTF8(tk_call_without_enc(@t.path, 'mark', 'next', @id)))
129
+ end
130
+ end
131
+
132
+ def previous(index = nil)
133
+ if index
134
+ @t.tagid2obj(_fromUTF8(tk_call_without_enc(@t.path, 'mark', 'previous', _get_eval_enc_str(index))))
135
+ else
136
+ @t.tagid2obj(_fromUTF8(tk_call_without_enc(@t.path, 'mark', 'previous', @id)))
137
+ end
138
+ end
139
+ end
140
+ TktMark = TkTextMark
141
+
142
+ class TkTextNamedMark<TkTextMark
143
+ def self.new(parent, name, index=nil)
144
+ TMarkID_TBL.mutex.synchronize{
145
+ if TMarkID_TBL[parent.path] && TMarkID_TBL[parent.path][name]
146
+ obj = TMarkID_TBL[parent.path][name]
147
+ else
148
+ # super(parent, name, *args)
149
+ (obj = self.allocate).instance_eval{
150
+ @parent = @t = parent
151
+ @tpath = parent.path
152
+ @path = @id = name
153
+ TMarkID_TBL[@id] = self
154
+ TMarkID_TBL[@tpath] = {} unless TMarkID_TBL[@tpath]
155
+ TMarkID_TBL[@tpath][@id] = self unless TMarkID_TBL[@tpath][@id]
156
+ @t._addtag @id, self
157
+ }
158
+ obj
159
+ end
160
+
161
+ if obj && index
162
+ tk_call_without_enc(parent.path, 'mark', 'set', name,
163
+ _get_eval_enc_str(index))
164
+ end
165
+ obj
166
+ }
167
+ end
168
+
169
+ def initialize(parent, name, index=nil)
170
+ # dummy:: not called by 'new' method
171
+
172
+ #unless parent.kind_of?(Tk::Text)
173
+ # fail ArgumentError, "expect Tk::Text for 1st argument"
174
+ #end
175
+ @parent = @t = parent
176
+ @tpath = parent.path
177
+ @path = @id = name
178
+ tk_call_without_enc(@t.path, 'mark', 'set', @id,
179
+ _get_eval_enc_str(index)) if index
180
+ @t._addtag @id, self
181
+ end
182
+ end
183
+ TktNamedMark = TkTextNamedMark
184
+
185
+ class TkTextMarkInsert<TkTextNamedMark
186
+ def self.new(parent,*args)
187
+ super(parent, 'insert', *args)
188
+ end
189
+ end
190
+ TktMarkInsert = TkTextMarkInsert
191
+
192
+ class TkTextMarkCurrent<TkTextNamedMark
193
+ def self.new(parent,*args)
194
+ super(parent, 'current', *args)
195
+ end
196
+ end
197
+ TktMarkCurrent = TkTextMarkCurrent
198
+
199
+ class TkTextMarkAnchor<TkTextNamedMark
200
+ def self.new(parent,*args)
201
+ super(parent, 'anchor', *args)
202
+ end
203
+ end
204
+ TktMarkAnchor = TkTextMarkAnchor
@@ -0,0 +1,321 @@
1
+ #
2
+ # tk/texttag.rb - methods for treating text tags
3
+ #
4
+ require 'tk'
5
+ require 'tk/text'
6
+ require 'tk/tagfont'
7
+
8
+ class TkTextTag<TkObject
9
+ include TkTreatTagFont
10
+ include Tk::Text::IndexModMethods
11
+
12
+ TTagID_TBL = TkCore::INTERP.create_table
13
+
14
+ (Tk_TextTag_ID = ['tag'.freeze, TkUtil.untrust('00000')]).instance_eval{
15
+ @mutex = Mutex.new
16
+ def mutex; @mutex; end
17
+ freeze
18
+ }
19
+
20
+ TkCore::INTERP.init_ip_env{
21
+ TTagID_TBL.mutex.synchronize{ TTagID_TBL.clear }
22
+ }
23
+
24
+ def TkTextTag.id2obj(text, id)
25
+ tpath = text.path
26
+ TTagID_TBL.mutex.synchronize{
27
+ if TTagID_TBL[tpath]
28
+ TTagID_TBL[tpath][id]? TTagID_TBL[tpath][id]: id
29
+ else
30
+ id
31
+ end
32
+ }
33
+ end
34
+
35
+ def initialize(parent, *args)
36
+ #unless parent.kind_of?(TkText)
37
+ # fail ArgumentError, "expect TkText for 1st argument"
38
+ #end
39
+ @parent = @t = parent
40
+ @tpath = parent.path
41
+ Tk_TextTag_ID.mutex.synchronize{
42
+ # @path = @id = Tk_TextTag_ID.join('')
43
+ @path = @id = Tk_TextTag_ID.join(TkCore::INTERP._ip_id_).freeze
44
+ Tk_TextTag_ID[1].succ!
45
+ }
46
+ TTagID_TBL.mutex.synchronize{
47
+ TTagID_TBL[@id] = self
48
+ TTagID_TBL[@tpath] = {} unless TTagID_TBL[@tpath]
49
+ TTagID_TBL[@tpath][@id] = self
50
+ }
51
+ #tk_call @t.path, "tag", "configure", @id, *hash_kv(keys)
52
+ if args != []
53
+ keys = args.pop
54
+ if keys.kind_of?(Hash)
55
+ add(*args) if args != []
56
+ configure(keys)
57
+ else
58
+ args.push keys
59
+ add(*args)
60
+ end
61
+ end
62
+ @t._addtag id, self
63
+ end
64
+
65
+ def id
66
+ Tk::Text::IndexString.new(@id)
67
+ end
68
+
69
+ def exist?
70
+ #if ( tk_split_simplelist(_fromUTF8(tk_call_without_enc(@t.path, 'tag', 'names'))).find{|id| id == @id } )
71
+ if ( tk_split_simplelist(tk_call_without_enc(@t.path, 'tag', 'names'), false, true).find{|id| id == @id } )
72
+ true
73
+ else
74
+ false
75
+ end
76
+ end
77
+
78
+ def first
79
+ Tk::Text::IndexString.new(@id + '.first')
80
+ end
81
+
82
+ def last
83
+ Tk::Text::IndexString.new(@id + '.last')
84
+ end
85
+
86
+ def add(*indices)
87
+ tk_call_without_enc(@t.path, 'tag', 'add', @id,
88
+ *(indices.collect{|idx| _get_eval_enc_str(idx)}))
89
+ self
90
+ end
91
+
92
+ def remove(*indices)
93
+ tk_call_without_enc(@t.path, 'tag', 'remove', @id,
94
+ *(indices.collect{|idx| _get_eval_enc_str(idx)}))
95
+ self
96
+ end
97
+
98
+ def ranges
99
+ l = tk_split_simplelist(tk_call_without_enc(@t.path, 'tag', 'ranges', @id))
100
+ r = []
101
+ while key=l.shift
102
+ r.push [Tk::Text::IndexString.new(key), Tk::Text::IndexString.new(l.shift)]
103
+ end
104
+ r
105
+ end
106
+
107
+ def nextrange(first, last=None)
108
+ simplelist(tk_call_without_enc(@t.path, 'tag', 'nextrange', @id,
109
+ _get_eval_enc_str(first),
110
+ _get_eval_enc_str(last))).collect{|idx|
111
+ Tk::Text::IndexString.new(idx)
112
+ }
113
+ end
114
+
115
+ def prevrange(first, last=None)
116
+ simplelist(tk_call_without_enc(@t.path, 'tag', 'prevrange', @id,
117
+ _get_eval_enc_str(first),
118
+ _get_eval_enc_str(last))).collect{|idx|
119
+ Tk::Text::IndexString.new(idx)
120
+ }
121
+ end
122
+
123
+ def [](key)
124
+ cget key
125
+ end
126
+
127
+ def []=(key,val)
128
+ configure key, val
129
+ val
130
+ end
131
+
132
+ def cget_tkstring(key)
133
+ @t.tag_cget_tkstring @id, key
134
+ end
135
+ def cget(key)
136
+ @t.tag_cget @id, key
137
+ end
138
+ def cget_strict(key)
139
+ @t.tag_cget_strict @id, key
140
+ end
141
+ =begin
142
+ def cget(key)
143
+ case key.to_s
144
+ when 'text', 'label', 'show', 'data', 'file'
145
+ _fromUTF8(tk_call_without_enc(@t.path, 'tag', 'cget', @id, "-#{key}"))
146
+ when 'font', 'kanjifont'
147
+ #fnt = tk_tcl2ruby(tk_call(@t.path, 'tag', 'cget', @id, "-#{key}"))
148
+ fnt = tk_tcl2ruby(_fromUTF8(tk_call_without_enc(@t.path, 'tag', 'cget',
149
+ @id, '-font')))
150
+ unless fnt.kind_of?(TkFont)
151
+ fnt = tagfontobj(@id, fnt)
152
+ end
153
+ if key.to_s == 'kanjifont' && JAPANIZED_TK && TK_VERSION =~ /^4\.*/
154
+ # obsolete; just for compatibility
155
+ fnt.kanji_font
156
+ else
157
+ fnt
158
+ end
159
+ else
160
+ tk_tcl2ruby(_fromUTF8(tk_call_without_enc(@t.path, 'tag', 'cget',
161
+ @id, "-#{key}")))
162
+ end
163
+ end
164
+ =end
165
+
166
+ def configure(key, val=None)
167
+ @t.tag_configure @id, key, val
168
+ end
169
+ # def configure(key, val=None)
170
+ # if key.kind_of?(Hash)
171
+ # tk_call @t.path, 'tag', 'configure', @id, *hash_kv(key)
172
+ # else
173
+ # tk_call @t.path, 'tag', 'configure', @id, "-#{key}", val
174
+ # end
175
+ # end
176
+ # def configure(key, value)
177
+ # if value == FALSE
178
+ # value = "0"
179
+ # elsif value.kind_of?(Proc)
180
+ # value = install_cmd(value)
181
+ # end
182
+ # tk_call @t.path, 'tag', 'configure', @id, "-#{key}", value
183
+ # end
184
+
185
+ def configinfo(key=nil)
186
+ @t.tag_configinfo @id, key
187
+ end
188
+
189
+ def current_configinfo(key=nil)
190
+ @t.current_tag_configinfo @id, key
191
+ end
192
+
193
+ #def bind(seq, cmd=Proc.new, *args)
194
+ # _bind([@t.path, 'tag', 'bind', @id], seq, cmd, *args)
195
+ # self
196
+ #end
197
+ def bind(seq, *args)
198
+ # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
199
+ if TkComm._callback_entry?(args[0]) || !block_given?
200
+ cmd = args.shift
201
+ else
202
+ cmd = Proc.new
203
+ end
204
+ _bind([@t.path, 'tag', 'bind', @id], seq, cmd, *args)
205
+ self
206
+ end
207
+
208
+ #def bind_append(seq, cmd=Proc.new, *args)
209
+ # _bind_append([@t.path, 'tag', 'bind', @id], seq, cmd, *args)
210
+ # self
211
+ #end
212
+ def bind_append(seq, *args)
213
+ # if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
214
+ if TkComm._callback_entry?(args[0]) || !block_given?
215
+ cmd = args.shift
216
+ else
217
+ cmd = Proc.new
218
+ end
219
+ _bind_append([@t.path, 'tag', 'bind', @id], seq, cmd, *args)
220
+ self
221
+ end
222
+
223
+ def bind_remove(seq)
224
+ _bind_remove([@t.path, 'tag', 'bind', @id], seq)
225
+ self
226
+ end
227
+
228
+ def bindinfo(context=nil)
229
+ _bindinfo([@t.path, 'tag', 'bind', @id], context)
230
+ end
231
+
232
+ def raise(above=None)
233
+ tk_call_without_enc(@t.path, 'tag', 'raise', @id,
234
+ _get_eval_enc_str(above))
235
+ self
236
+ end
237
+
238
+ def lower(below=None)
239
+ tk_call_without_enc(@t.path, 'tag', 'lower', @id,
240
+ _get_eval_enc_str(below))
241
+ self
242
+ end
243
+
244
+ def destroy
245
+ tk_call_without_enc(@t.path, 'tag', 'delete', @id)
246
+ TTagID_TBL.mutex.synchronize{
247
+ TTagID_TBL[@tpath].delete(@id) if TTagID_TBL[@tpath]
248
+ }
249
+ self
250
+ end
251
+ end
252
+ TktTag = TkTextTag
253
+
254
+ class TkTextNamedTag<TkTextTag
255
+ def self.new(parent, name, *args)
256
+ tagobj = nil
257
+ TTagID_TBL.mutex.synchronize{
258
+ if TTagID_TBL[parent.path] && TTagID_TBL[parent.path][name]
259
+ tagobj = TTagID_TBL[parent.path][name]
260
+ else
261
+ # super(parent, name, *args)
262
+ (tagobj = self.allocate).instance_eval{
263
+ @parent = @t = parent
264
+ @tpath = parent.path
265
+ @path = @id = name
266
+ TTagID_TBL[@id] = self
267
+ TTagID_TBL[@tpath] = {} unless TTagID_TBL[@tpath]
268
+ TTagID_TBL[@tpath][@id] = self unless TTagID_TBL[@tpath][@id]
269
+ @t._addtag @id, self
270
+ }
271
+ end
272
+ }
273
+
274
+ if args != []
275
+ keys = args.pop
276
+ if keys.kind_of?(Hash)
277
+ tagobj.add(*args) if args != []
278
+ tagobj.configure(keys)
279
+ else
280
+ args.push keys
281
+ tagobj.add(*args)
282
+ end
283
+ end
284
+
285
+ tagobj
286
+ end
287
+
288
+ def initialize(parent, name, *args)
289
+ # dummy:: not called by 'new' method
290
+
291
+ #unless parent.kind_of?(Tk::Text)
292
+ # fail ArgumentError, "expect Tk::Text for 1st argument"
293
+ #end
294
+ @parent = @t = parent
295
+ @tpath = parent.path
296
+ @path = @id = name
297
+
298
+ #if mode
299
+ # tk_call @t.path, "addtag", @id, *args
300
+ #end
301
+ if args != []
302
+ keys = args.pop
303
+ if keys.kind_of?(Hash)
304
+ add(*args) if args != []
305
+ configure(keys)
306
+ else
307
+ args.push keys
308
+ add(*args)
309
+ end
310
+ end
311
+ @t._addtag @id, self
312
+ end
313
+ end
314
+ TktNamedTag = TkTextNamedTag
315
+
316
+ class TkTextTagSel<TkTextNamedTag
317
+ def self.new(parent, *args)
318
+ super(parent, 'sel', *args)
319
+ end
320
+ end
321
+ TktTagSel = TkTextTagSel