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,132 @@
1
+ #
2
+ # tk/frame.rb : treat frame widget
3
+ #
4
+ require 'tk'
5
+
6
+ class Tk::Frame<TkWindow
7
+ TkCommandNames = ['frame'.freeze].freeze
8
+ WidgetClassName = 'Frame'.freeze
9
+ WidgetClassNames[WidgetClassName] ||= self
10
+
11
+ ################# old version
12
+ # def initialize(parent=nil, keys=nil)
13
+ # if keys.kind_of? Hash
14
+ # keys = keys.dup
15
+ # @classname = keys.delete('classname') if keys.key?('classname')
16
+ # @colormap = keys.delete('colormap') if keys.key?('colormap')
17
+ # @container = keys.delete('container') if keys.key?('container')
18
+ # @visual = keys.delete('visual') if keys.key?('visual')
19
+ # end
20
+ # super(parent, keys)
21
+ # end
22
+ #
23
+ # def create_self
24
+ # s = []
25
+ # s << "-class" << @classname if @classname
26
+ # s << "-colormap" << @colormap if @colormap
27
+ # s << "-container" << @container if @container
28
+ # s << "-visual" << @visual if @visual
29
+ # tk_call 'frame', @path, *s
30
+ # end
31
+ #################
32
+
33
+ def __boolval_optkeys
34
+ super() << 'container'
35
+ end
36
+ private :__boolval_optkeys
37
+
38
+ def initialize(parent=nil, keys=nil)
39
+ my_class_name = nil
40
+ if self.class < WidgetClassNames[self.class::WidgetClassName]
41
+ my_class_name = self.class.name
42
+ my_class_name = nil if my_class_name == ''
43
+ end
44
+ if parent.kind_of? Hash
45
+ keys = _symbolkey2str(parent)
46
+ else
47
+ if keys
48
+ keys = _symbolkey2str(keys)
49
+ keys['parent'] = parent
50
+ else
51
+ keys = {'parent'=>parent}
52
+ end
53
+ end
54
+ if keys.key?('classname')
55
+ keys['class'] = keys.delete('classname')
56
+ end
57
+ @classname = keys['class']
58
+ @colormap = keys['colormap']
59
+ @container = keys['container']
60
+ @visual = keys['visual']
61
+ if !@classname && my_class_name
62
+ keys['class'] = @classname = my_class_name
63
+ end
64
+ if @classname.kind_of? TkBindTag
65
+ @db_class = @classname
66
+ @classname = @classname.id
67
+ elsif @classname
68
+ @db_class = TkDatabaseClass.new(@classname)
69
+ else
70
+ @db_class = self.class
71
+ @classname = @db_class::WidgetClassName
72
+ end
73
+ super(keys)
74
+ end
75
+
76
+ #def create_self(keys)
77
+ # if keys and keys != None
78
+ # tk_call_without_enc('frame', @path, *hash_kv(keys))
79
+ # else
80
+ # tk_call_without_enc( 'frame', @path)
81
+ # end
82
+ #end
83
+ #private :create_self
84
+
85
+ def database_classname
86
+ @classname
87
+ end
88
+
89
+ def self.database_class
90
+ if self == WidgetClassNames[WidgetClassName] || self.name == ''
91
+ self
92
+ else
93
+ TkDatabaseClass.new(self.name)
94
+ end
95
+ end
96
+ def self.database_classname
97
+ self.database_class.name
98
+ end
99
+
100
+ def self.bind(*args, &b)
101
+ if self == WidgetClassNames[WidgetClassName] || self.name == ''
102
+ super(*args, &b)
103
+ else
104
+ TkDatabaseClass.new(self.name).bind(*args, &b)
105
+ end
106
+ end
107
+ def self.bind_append(*args, &b)
108
+ if self == WidgetClassNames[WidgetClassName] || self.name == ''
109
+ super(*args, &b)
110
+ else
111
+ TkDatabaseClass.new(self.name).bind_append(*args, &b)
112
+ end
113
+ end
114
+ def self.bind_remove(*args)
115
+ if self == WidgetClassNames[WidgetClassName] || self.name == ''
116
+ super(*args)
117
+ else
118
+ TkDatabaseClass.new(self.name).bind_remove(*args)
119
+ end
120
+ end
121
+ def self.bindinfo(*args)
122
+ if self == WidgetClassNames[WidgetClassName] || self.name == ''
123
+ super(*args)
124
+ else
125
+ TkDatabaseClass.new(self.name).bindinfo(*args)
126
+ end
127
+ end
128
+ end
129
+
130
+ #TkFrame = Tk::Frame unless Object.const_defined? :TkFrame
131
+ #Tk.__set_toplevel_aliases__(:Tk, Tk::Frame, :TkFrame)
132
+ Tk.__set_loaded_toplevel_aliases__('tk/frame.rb', :Tk, Tk::Frame, :TkFrame)
@@ -0,0 +1,279 @@
1
+ #
2
+ # tk/grid.rb : control grid geometry manager
3
+ #
4
+ require 'tk'
5
+
6
+ module TkGrid
7
+ include Tk
8
+ extend Tk
9
+
10
+ TkCommandNames = ['grid'.freeze].freeze
11
+
12
+ def anchor(master, anchor=None)
13
+ # master = master.epath if master.kind_of?(TkObject)
14
+ master = _epath(master)
15
+ tk_call_without_enc('grid', 'anchor', master, anchor)
16
+ end
17
+
18
+ def bbox(master, *args)
19
+ # master = master.epath if master.kind_of?(TkObject)
20
+ master = _epath(master)
21
+ args.unshift(master)
22
+ list(tk_call_without_enc('grid', 'bbox', *args))
23
+ end
24
+
25
+ =begin
26
+ def configure(win, *args)
27
+ if args[-1].kind_of?(Hash)
28
+ opts = args.pop
29
+ else
30
+ opts = {}
31
+ end
32
+ params = []
33
+ params.push(_epath(win))
34
+ args.each{|win|
35
+ case win
36
+ when '-', 'x', '^' # RELATIVE PLACEMENT
37
+ params.push(win)
38
+ else
39
+ params.push(_epath(win))
40
+ end
41
+ }
42
+ opts.each{|k, v|
43
+ params.push("-#{k}")
44
+ params.push((v.kind_of?(TkObject))? v.epath: v)
45
+ }
46
+ if Tk::TCL_MAJOR_VERSION < 8 ||
47
+ (Tk::TCL_MAJOR_VERSION == 8 && Tk::TCL_MINOR_VERSION <= 3)
48
+ if params[0] == '-' || params[0] == 'x' || params[0] == '^'
49
+ tk_call_without_enc('grid', *params)
50
+ else
51
+ tk_call_without_enc('grid', 'configure', *params)
52
+ end
53
+ else
54
+ tk_call_without_enc('grid', 'configure', *params)
55
+ end
56
+ end
57
+ =end
58
+ def configure(*args)
59
+ if args[-1].kind_of?(Hash)
60
+ opts = args.pop
61
+ else
62
+ opts = {}
63
+ end
64
+ fail ArgumentError, 'no widget is given' if args.empty?
65
+ params = []
66
+ args.flatten(1).each{|win|
67
+ case win
68
+ when '-', ?- # RELATIVE PLACEMENT (increase columnspan)
69
+ params.push('-')
70
+ when /^-+$/ # RELATIVE PLACEMENT (increase columnspan)
71
+ params.concat(win.to_s.split(//))
72
+ when '^', ?^ # RELATIVE PLACEMENT (increase rowspan)
73
+ params.push('^')
74
+ when /^\^+$/ # RELATIVE PLACEMENT (increase rowspan)
75
+ params.concat(win.to_s.split(//))
76
+ when 'x', :x, ?x, nil, '' # RELATIVE PLACEMENT (empty column)
77
+ params.push('x')
78
+ when /^x+$/ # RELATIVE PLACEMENT (empty column)
79
+ params.concat(win.to_s.split(//))
80
+ else
81
+ params.push(_epath(win))
82
+ end
83
+ }
84
+ opts.each{|k, v|
85
+ params.push("-#{k}")
86
+ params.push(_epath(v)) # have to use 'epath' (hash_kv() is unavailable)
87
+ }
88
+ if Tk::TCL_MAJOR_VERSION < 8 ||
89
+ (Tk::TCL_MAJOR_VERSION == 8 && Tk::TCL_MINOR_VERSION <= 3)
90
+ if params[0] == '-' || params[0] == 'x' || params[0] == '^'
91
+ tk_call_without_enc('grid', *params)
92
+ else
93
+ tk_call_without_enc('grid', 'configure', *params)
94
+ end
95
+ else
96
+ tk_call_without_enc('grid', 'configure', *params)
97
+ end
98
+ end
99
+ alias grid configure
100
+
101
+ def columnconfigure(master, index, args)
102
+ # master = master.epath if master.kind_of?(TkObject)
103
+ master = _epath(master)
104
+ tk_call_without_enc("grid", 'columnconfigure',
105
+ master, index, *hash_kv(args))
106
+ end
107
+
108
+ def rowconfigure(master, index, args)
109
+ # master = master.epath if master.kind_of?(TkObject)
110
+ master = _epath(master)
111
+ tk_call_without_enc("grid", 'rowconfigure', master, index, *hash_kv(args))
112
+ end
113
+
114
+ def columnconfiginfo(master, index, slot=nil)
115
+ # master = master.epath if master.kind_of?(TkObject)
116
+ master = _epath(master)
117
+ if slot
118
+ case slot
119
+ when 'uniform', :uniform
120
+ tk_call_without_enc('grid', 'columnconfigure',
121
+ master, index, "-#{slot}")
122
+ else
123
+ num_or_str(tk_call_without_enc('grid', 'columnconfigure',
124
+ master, index, "-#{slot}"))
125
+ end
126
+ else
127
+ #ilist = list(tk_call_without_enc('grid','columnconfigure',master,index))
128
+ ilist = simplelist(tk_call_without_enc('grid', 'columnconfigure',
129
+ master, index))
130
+ info = {}
131
+ while key = ilist.shift
132
+ case key
133
+ when 'uniform'
134
+ info[key[1..-1]] = ilist.shift
135
+ else
136
+ info[key[1..-1]] = tk_tcl2ruby(ilist.shift)
137
+ end
138
+ end
139
+ info
140
+ end
141
+ end
142
+
143
+ def rowconfiginfo(master, index, slot=nil)
144
+ # master = master.epath if master.kind_of?(TkObject)
145
+ master = _epath(master)
146
+ if slot
147
+ case slot
148
+ when 'uniform', :uniform
149
+ tk_call_without_enc('grid', 'rowconfigure',
150
+ master, index, "-#{slot}")
151
+ else
152
+ num_or_str(tk_call_without_enc('grid', 'rowconfigure',
153
+ master, index, "-#{slot}"))
154
+ end
155
+ else
156
+ #ilist = list(tk_call_without_enc('grid', 'rowconfigure', master, index))
157
+ ilist = simplelist(tk_call_without_enc('grid', 'rowconfigure',
158
+ master, index))
159
+ info = {}
160
+ while key = ilist.shift
161
+ case key
162
+ when 'uniform'
163
+ info[key[1..-1]] = ilist.shift
164
+ else
165
+ info[key[1..-1]] = tk_tcl2ruby(ilist.shift)
166
+ end
167
+ end
168
+ info
169
+ end
170
+ end
171
+
172
+ def column(master, index, keys=nil)
173
+ if keys.kind_of?(Hash)
174
+ columnconfigure(master, index, keys)
175
+ else
176
+ columnconfiginfo(master, index, keys)
177
+ end
178
+ end
179
+
180
+ def row(master, index, keys=nil)
181
+ if keys.kind_of?(Hash)
182
+ rowconfigure(master, index, keys)
183
+ else
184
+ rowconfiginfo(master, index, keys)
185
+ end
186
+ end
187
+
188
+ def add(widget, *args)
189
+ configure(widget, *args)
190
+ end
191
+
192
+ def forget(*args)
193
+ return '' if args.size == 0
194
+ wins = args.collect{|win|
195
+ # (win.kind_of?(TkObject))? win.epath: win
196
+ _epath(win)
197
+ }
198
+ tk_call_without_enc('grid', 'forget', *wins)
199
+ end
200
+
201
+ def info(slave)
202
+ # slave = slave.epath if slave.kind_of?(TkObject)
203
+ slave = _epath(slave)
204
+ #ilist = list(tk_call_without_enc('grid', 'info', slave))
205
+ ilist = simplelist(tk_call_without_enc('grid', 'info', slave))
206
+ info = {}
207
+ while key = ilist.shift
208
+ #info[key[1..-1]] = ilist.shift
209
+ info[key[1..-1]] = tk_tcl2ruby(ilist.shift)
210
+ end
211
+ return info
212
+ end
213
+
214
+ def location(master, x, y)
215
+ # master = master.epath if master.kind_of?(TkObject)
216
+ master = _epath(master)
217
+ list(tk_call_without_enc('grid', 'location', master, x, y))
218
+ end
219
+
220
+ def propagate(master, mode=None)
221
+ # master = master.epath if master.kind_of?(TkObject)
222
+ master = _epath(master)
223
+ if mode == None
224
+ bool(tk_call_without_enc('grid', 'propagate', master))
225
+ else
226
+ tk_call_without_enc('grid', 'propagate', master, mode)
227
+ end
228
+ end
229
+
230
+ def remove(*args)
231
+ return '' if args.size == 0
232
+ wins = args.collect{|win|
233
+ # (win.kind_of?(TkObject))? win.epath: win
234
+ _epath(win)
235
+ }
236
+ tk_call_without_enc('grid', 'remove', *wins)
237
+ end
238
+
239
+ def size(master)
240
+ # master = master.epath if master.kind_of?(TkObject)
241
+ master = _epath(master)
242
+ list(tk_call_without_enc('grid', 'size', master))
243
+ end
244
+
245
+ def slaves(master, keys=nil)
246
+ # master = master.epath if master.kind_of?(TkObject)
247
+ master = _epath(master)
248
+ list(tk_call_without_enc('grid', 'slaves', master, *hash_kv(args)))
249
+ end
250
+
251
+ module_function :anchor, :bbox, :add, :forget, :propagate, :info
252
+ module_function :remove, :size, :slaves, :location
253
+ module_function :grid, :configure, :columnconfigure, :rowconfigure
254
+ module_function :column, :row, :columnconfiginfo, :rowconfiginfo
255
+ end
256
+ =begin
257
+ def TkGrid(win, *args)
258
+ if args[-1].kind_of?(Hash)
259
+ opts = args.pop
260
+ else
261
+ opts = {}
262
+ end
263
+ params = []
264
+ params.push((win.kind_of?(TkObject))? win.epath: win)
265
+ args.each{|win|
266
+ case win
267
+ when '-', 'x', '^' # RELATIVE PLACEMENT
268
+ params.push(win)
269
+ else
270
+ params.push((win.kind_of?(TkObject))? win.epath: win)
271
+ end
272
+ }
273
+ opts.each{|k, v|
274
+ params.push("-#{k}")
275
+ params.push((v.kind_of?(TkObject))? v.epath: v)
276
+ }
277
+ tk_call_without_enc("grid", *params)
278
+ end
279
+ =end
@@ -0,0 +1,275 @@
1
+ #
2
+ # tk/image.rb : treat Tk image objects
3
+ #
4
+
5
+ require 'tk'
6
+
7
+ class TkImage<TkObject
8
+ include Tk
9
+
10
+ TkCommandNames = ['image'.freeze].freeze
11
+
12
+ Tk_IMGTBL = TkCore::INTERP.create_table
13
+
14
+ (Tk_Image_ID = ['i'.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
+ Tk_IMGTBL.mutex.synchronize{ Tk_IMGTBL.clear }
22
+ }
23
+
24
+ def self.new(keys=nil)
25
+ if keys.kind_of?(Hash)
26
+ name = nil
27
+ if keys.key?(:imagename)
28
+ name = keys[:imagename]
29
+ elsif keys.key?('imagename')
30
+ name = keys['imagename']
31
+ end
32
+ if name
33
+ if name.kind_of?(TkImage)
34
+ obj = name
35
+ else
36
+ name = _get_eval_string(name)
37
+ obj = nil
38
+ Tk_IMGTBL.mutex.synchronize{
39
+ obj = Tk_IMGTBL[name]
40
+ }
41
+ end
42
+ if obj
43
+ if !(keys[:without_creating] || keys['without_creating'])
44
+ keys = _symbolkey2str(keys)
45
+ keys.delete('imagename')
46
+ keys.delete('without_creating')
47
+ obj.instance_eval{
48
+ tk_call_without_enc('image', 'create',
49
+ @type, @path, *hash_kv(keys, true))
50
+ }
51
+ end
52
+ return obj
53
+ end
54
+ end
55
+ end
56
+ (obj = self.allocate).instance_eval{
57
+ Tk_IMGTBL.mutex.synchronize{
58
+ initialize(keys)
59
+ Tk_IMGTBL[@path] = self
60
+ }
61
+ }
62
+ obj
63
+ end
64
+
65
+ def initialize(keys=nil)
66
+ @path = nil
67
+ without_creating = false
68
+ if keys.kind_of?(Hash)
69
+ keys = _symbolkey2str(keys)
70
+ @path = keys.delete('imagename')
71
+ without_creating = keys.delete('without_creating')
72
+ end
73
+ unless @path
74
+ Tk_Image_ID.mutex.synchronize{
75
+ # @path = Tk_Image_ID.join('')
76
+ @path = Tk_Image_ID.join(TkCore::INTERP._ip_id_)
77
+ Tk_Image_ID[1].succ!
78
+ }
79
+ end
80
+ unless without_creating
81
+ tk_call_without_enc('image', 'create',
82
+ @type, @path, *hash_kv(keys, true))
83
+ end
84
+ end
85
+
86
+ def delete
87
+ Tk_IMGTBL.mutex.synchronize{
88
+ Tk_IMGTBL.delete(@id) if @id
89
+ }
90
+ tk_call_without_enc('image', 'delete', @path)
91
+ self
92
+ end
93
+ def height
94
+ number(tk_call_without_enc('image', 'height', @path))
95
+ end
96
+ def inuse
97
+ bool(tk_call_without_enc('image', 'inuse', @path))
98
+ end
99
+ def itemtype
100
+ tk_call_without_enc('image', 'type', @path)
101
+ end
102
+ def width
103
+ number(tk_call_without_enc('image', 'width', @path))
104
+ end
105
+
106
+ def TkImage.names
107
+ Tk_IMGTBL.mutex.synchronize{
108
+ Tk.tk_call_without_enc('image', 'names').split.collect!{|id|
109
+ (Tk_IMGTBL[id])? Tk_IMGTBL[id] : id
110
+ }
111
+ }
112
+ end
113
+
114
+ def TkImage.types
115
+ Tk.tk_call_without_enc('image', 'types').split
116
+ end
117
+ end
118
+
119
+ class TkBitmapImage<TkImage
120
+ def __strval_optkeys
121
+ super() + ['maskdata', 'maskfile']
122
+ end
123
+ private :__strval_optkeys
124
+
125
+ def initialize(*args)
126
+ @type = 'bitmap'
127
+ super(*args)
128
+ end
129
+ end
130
+
131
+ class TkPhotoImage<TkImage
132
+ NullArgOptionKeys = [ "shrink", "grayscale" ]
133
+
134
+ def _photo_hash_kv(keys)
135
+ keys = _symbolkey2str(keys)
136
+ NullArgOptionKeys.collect{|opt|
137
+ if keys[opt]
138
+ keys[opt] = None
139
+ else
140
+ keys.delete(opt)
141
+ end
142
+ }
143
+ keys.collect{|k,v|
144
+ ['-' << k, v]
145
+ }.flatten
146
+ end
147
+ private :_photo_hash_kv
148
+
149
+ def initialize(*args)
150
+ @type = 'photo'
151
+ super(*args)
152
+ end
153
+
154
+ def blank
155
+ tk_send_without_enc('blank')
156
+ self
157
+ end
158
+
159
+ def cget_strict(option)
160
+ case option.to_s
161
+ when 'data', 'file'
162
+ tk_send 'cget', '-' << option.to_s
163
+ else
164
+ tk_tcl2ruby(tk_send('cget', '-' << option.to_s))
165
+ end
166
+ end
167
+ def cget(option)
168
+ unless TkConfigMethod.__IGNORE_UNKNOWN_CONFIGURE_OPTION__
169
+ cget_strict(option)
170
+ else
171
+ begin
172
+ cget_strict(option)
173
+ rescue => e
174
+ if current_configinfo.has_key?(option.to_s)
175
+ # error on known option
176
+ fail e
177
+ else
178
+ # unknown option
179
+ nil
180
+ end
181
+ end
182
+ end
183
+ end
184
+
185
+ def copy(src, *opts)
186
+ if opts.size == 0
187
+ tk_send('copy', src)
188
+ elsif opts.size == 1 && opts[0].kind_of?(Hash)
189
+ tk_send('copy', src, *_photo_hash_kv(opts[0]))
190
+ else
191
+ # for backward compatibility
192
+ args = opts.collect{|term|
193
+ if term.kind_of?(String) && term.include?(?\s)
194
+ term.split
195
+ else
196
+ term
197
+ end
198
+ }.flatten
199
+ tk_send('copy', src, *args)
200
+ end
201
+ self
202
+ end
203
+
204
+ def data(keys={})
205
+ #tk_send('data', *_photo_hash_kv(keys))
206
+ tk_split_list(tk_send('data', *_photo_hash_kv(keys)))
207
+ end
208
+
209
+ def get(x, y)
210
+ tk_send('get', x, y).split.collect{|n| n.to_i}
211
+ end
212
+
213
+ def put(data, *opts)
214
+ if opts.empty?
215
+ tk_send('put', data)
216
+ elsif opts.size == 1 && opts[0].kind_of?(Hash)
217
+ tk_send('put', data, *_photo_hash_kv(opts[0]))
218
+ else
219
+ # for backward compatibility
220
+ tk_send('put', data, '-to', *opts)
221
+ end
222
+ self
223
+ end
224
+
225
+ def read(file, *opts)
226
+ if opts.size == 0
227
+ tk_send('read', file)
228
+ elsif opts.size == 1 && opts[0].kind_of?(Hash)
229
+ tk_send('read', file, *_photo_hash_kv(opts[0]))
230
+ else
231
+ # for backward compatibility
232
+ args = opts.collect{|term|
233
+ if term.kind_of?(String) && term.include?(?\s)
234
+ term.split
235
+ else
236
+ term
237
+ end
238
+ }.flatten
239
+ tk_send('read', file, *args)
240
+ end
241
+ self
242
+ end
243
+
244
+ def redither
245
+ tk_send 'redither'
246
+ self
247
+ end
248
+
249
+ def get_transparency(x, y)
250
+ bool(tk_send('transparency', 'get', x, y))
251
+ end
252
+ def set_transparency(x, y, st)
253
+ tk_send('transparency', 'set', x, y, st)
254
+ self
255
+ end
256
+
257
+ def write(file, *opts)
258
+ if opts.size == 0
259
+ tk_send('write', file)
260
+ elsif opts.size == 1 && opts[0].kind_of?(Hash)
261
+ tk_send('write', file, *_photo_hash_kv(opts[0]))
262
+ else
263
+ # for backward compatibility
264
+ args = opts.collect{|term|
265
+ if term.kind_of?(String) && term.include?(?\s)
266
+ term.split
267
+ else
268
+ term
269
+ end
270
+ }.flatten
271
+ tk_send('write', file, *args)
272
+ end
273
+ self
274
+ end
275
+ end