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,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
@@ -0,0 +1,21 @@
1
+ ## MAC OS
2
+ .DS_Store
3
+
4
+ ## TEXTMATE
5
+ *.tmproj
6
+ tmtags
7
+
8
+ ## EMACS
9
+ *~
10
+ \#*
11
+ .\#*
12
+
13
+ ## VIM
14
+ *.swp
15
+
16
+ ## PROJECT::GENERAL
17
+ coverage
18
+ rdoc
19
+ pkg
20
+
21
+ ## PROJECT::SPECIFIC
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Elia Schito
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,17 @@
1
+ = tk-win
2
+
3
+ Description goes here.
4
+
5
+ == Note on Patches/Pull Requests
6
+
7
+ * Fork the project.
8
+ * Make your feature addition or bug fix.
9
+ * Add tests for it. This is important so I don't break it in a
10
+ future version unintentionally.
11
+ * Commit, do not mess with rakefile, version, or history.
12
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
13
+ * Send me a pull request. Bonus points for topic branches.
14
+
15
+ == Copyright
16
+
17
+ Copyright (c) 2010 Elia Schito. See LICENSE for details.
@@ -0,0 +1,46 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "tk-win"
8
+ gem.summary = %Q{RubyTk bindings for windows bundled with tcltklib and tkutil}
9
+ gem.description = %Q{RubyTk bindings for windows bundled with Tcl8.5}
10
+ gem.email = "elia.schito@gmail.com"
11
+ gem.homepage = "http://github.com/elia/tk-win"
12
+ gem.authors = ["Hidetoshi NAGAI", "Elia Schito"]
13
+ gem.add_development_dependency "rspec", "~> 1.2.9"
14
+ gem.platform = 'x86-mingw32'
15
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
16
+ end
17
+ Jeweler::GemcutterTasks.new
18
+ rescue LoadError
19
+ puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
20
+ end
21
+
22
+ require 'spec/rake/spectask'
23
+ Spec::Rake::SpecTask.new(:spec) do |spec|
24
+ spec.libs << 'lib' << 'spec'
25
+ spec.spec_files = FileList['spec/**/*_spec.rb']
26
+ end
27
+
28
+ Spec::Rake::SpecTask.new(:rcov) do |spec|
29
+ spec.libs << 'lib' << 'spec'
30
+ spec.pattern = 'spec/**/*_spec.rb'
31
+ spec.rcov = true
32
+ end
33
+
34
+ task :spec => :check_dependencies
35
+
36
+ task :default => :spec
37
+
38
+ require 'rake/rdoctask'
39
+ Rake::RDocTask.new do |rdoc|
40
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
41
+
42
+ rdoc.rdoc_dir = 'rdoc'
43
+ rdoc.title = "tk-win #{version}"
44
+ rdoc.rdoc_files.include('README*')
45
+ rdoc.rdoc_files.include('lib/**/*.rb')
46
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.2.0
@@ -0,0 +1,367 @@
1
+ # tof
2
+
3
+ #### tcltk library, more direct manipulation of tcl/tk
4
+ #### Sep. 5, 1997 Y. Shigehiro
5
+
6
+ require "tcltklib"
7
+
8
+ ################
9
+
10
+ # module TclTk: collection of tcl/tk utilities (supplies namespace.)
11
+ module TclTk
12
+
13
+ # initialize Hash to hold unique symbols and such
14
+ @namecnt = {}
15
+
16
+ # initialize Hash to hold callbacks
17
+ @callback = {}
18
+ end
19
+
20
+ # TclTk.mainloop(): call TclTkLib.mainloop()
21
+ def TclTk.mainloop()
22
+ print("mainloop: start\n") if $DEBUG
23
+ TclTkLib.mainloop()
24
+ print("mainloop: end\n") if $DEBUG
25
+ end
26
+
27
+ # TclTk.deletecallbackkey(ca): remove callback from TclTk module
28
+ # this does not remove callbacks from tcl/tk interpreter
29
+ # without calling this method, TclTkInterpreter will not be GCed
30
+ # ca: callback(TclTkCallback)
31
+ def TclTk.deletecallbackkey(ca)
32
+ print("deletecallbackkey: ", ca.to_s(), "\n") if $DEBUG
33
+ @callback.delete(ca.to_s)
34
+ end
35
+
36
+ # TclTk.dcb(ca, wid, W): call TclTk.deletecallbackkey() for each callbacks
37
+ # in an array.
38
+ # this is for callback for top-level <Destroy>
39
+ # ca: array of callbacks(TclTkCallback)
40
+ # wid: top-level widget(TclTkWidget)
41
+ # w: information about window given by %W(String)
42
+ def TclTk.dcb(ca, wid, w)
43
+ if wid.to_s() == w
44
+ ca.each{|i|
45
+ TclTk.deletecallbackkey(i)
46
+ }
47
+ end
48
+ end
49
+
50
+ # TclTk._addcallback(ca): register callback
51
+ # ca: callback(TclTkCallback)
52
+ def TclTk._addcallback(ca)
53
+ print("_addcallback: ", ca.to_s(), "\n") if $DEBUG
54
+ @callback[ca.to_s()] = ca
55
+ end
56
+
57
+ # TclTk._callcallback(key, arg): invoke registered callback
58
+ # key: key to select callback (to_s value of the TclTkCallback)
59
+ # arg: parameter from tcl/tk interpreter
60
+ def TclTk._callcallback(key, arg)
61
+ print("_callcallback: ", @callback[key].inspect, "\n") if $DEBUG
62
+ @callback[key]._call(arg)
63
+ # throw out callback value
64
+ # should return String to satisfy rb_eval_string()
65
+ return ""
66
+ end
67
+
68
+ # TclTk._newname(prefix): generate unique name(String)
69
+ # prefix: prefix of the unique name
70
+ def TclTk._newname(prefix)
71
+ # generated name counter is stored in @namecnt
72
+ if !@namecnt.key?(prefix)
73
+ # first appearing prefix, initialize
74
+ @namecnt[prefix] = 1
75
+ else
76
+ # already appeared prefix, generate next name
77
+ @namecnt[prefix] += 1
78
+ end
79
+ return "#{prefix}#{@namecnt[prefix]}"
80
+ end
81
+
82
+ ################
83
+
84
+ # class TclTkInterpreter: tcl/tk interpreter
85
+ class TclTkInterpreter
86
+
87
+ # initialize():
88
+ def initialize()
89
+ # generate interpreter object
90
+ @ip = TclTkIp.new()
91
+
92
+ # add ruby_fmt command to tcl interpreter
93
+ # ruby_fmt command format arguments by `format' and call `ruby' command
94
+ # (notice ruby command receives only one argument)
95
+ if $DEBUG
96
+ @ip._eval("proc ruby_fmt {fmt args} { puts \"ruby_fmt: $fmt $args\" ; set cmd [list ruby [format $fmt $args]] ; uplevel $cmd }")
97
+ else
98
+ @ip._eval("proc ruby_fmt {fmt args} { set cmd [list ruby [format $fmt $args]] ; uplevel $cmd }")
99
+ end
100
+
101
+ # @ip._get_eval_string(*args): generate string to evaluate in tcl interpreter
102
+ # *args: script which is going to be evaluated under tcl/tk
103
+ def @ip._get_eval_string(*args)
104
+ argstr = ""
105
+ args.each{|arg|
106
+ argstr += " " if argstr != ""
107
+ # call to_eval if it is defined
108
+ if (arg.respond_to?(:to_eval))
109
+ argstr += arg.to_eval()
110
+ else
111
+ # call to_s unless defined
112
+ argstr += arg.to_s()
113
+ end
114
+ }
115
+ return argstr
116
+ end
117
+
118
+ # @ip._eval_args(*args): evaluate string under tcl/tk interpreter
119
+ # returns result string.
120
+ # *args: script which is going to be evaluated under tcl/tk
121
+ def @ip._eval_args(*args)
122
+ # calculate the string to eval in the interpreter
123
+ argstr = _get_eval_string(*args)
124
+
125
+ # evaluate under the interpreter
126
+ print("_eval: \"", argstr, "\"") if $DEBUG
127
+ res = _eval(argstr)
128
+ if $DEBUG
129
+ print(" -> \"", res, "\"\n")
130
+ elsif _return_value() != 0
131
+ print(res, "\n")
132
+ end
133
+ fail(%Q/can't eval "#{argstr}"/) if _return_value() != 0 #'
134
+ return res
135
+ end
136
+
137
+ # generate tcl/tk command object and register in the hash
138
+ @commands = {}
139
+ # for all commands registered in tcl/tk interpreter:
140
+ @ip._eval("info command").split(/ /).each{|comname|
141
+ if comname =~ /^[.]/
142
+ # if command is a widget (path), generate TclTkWidget,
143
+ # and register it in the hash
144
+ @commands[comname] = TclTkWidget.new(@ip, comname)
145
+ else
146
+ # otherwise, generate TclTkCommand
147
+ @commands[comname] = TclTkCommand.new(@ip, comname)
148
+ end
149
+ }
150
+ end
151
+
152
+ # commands(): returns hash of the tcl/tk commands
153
+ def commands()
154
+ return @commands
155
+ end
156
+
157
+ # rootwidget(): returns root widget(TclTkWidget)
158
+ def rootwidget()
159
+ return @commands["."]
160
+ end
161
+
162
+ # _tcltkip(): returns @ip(TclTkIp)
163
+ def _tcltkip()
164
+ return @ip
165
+ end
166
+
167
+ # method_missing(id, *args): execute undefined method as tcl/tk command
168
+ # id: method symbol
169
+ # *args: method arguments
170
+ def method_missing(id, *args)
171
+ # if command named by id registered, then execute it
172
+ if @commands.key?(id.id2name)
173
+ return @commands[id.id2name].e(*args)
174
+ else
175
+ # otherwise, exception
176
+ super
177
+ end
178
+ end
179
+ end
180
+
181
+ # class TclTkObject: base class of the tcl/tk objects
182
+ class TclTkObject
183
+
184
+ # initialize(ip, exp):
185
+ # ip: interpreter(TclTkIp)
186
+ # exp: tcl/tk representation
187
+ def initialize(ip, exp)
188
+ fail("type is not TclTkIp") if !ip.kind_of?(TclTkIp)
189
+ @ip = ip
190
+ @exp = exp
191
+ end
192
+
193
+ # to_s(): returns tcl/tk representation
194
+ def to_s()
195
+ return @exp
196
+ end
197
+ end
198
+
199
+ # class TclTkCommand: tcl/tk commands
200
+ # you should not call TclTkCommand.new()
201
+ # commands are created by TclTkInterpreter:initialize()
202
+ class TclTkCommand < TclTkObject
203
+
204
+ # e(*args): execute command. returns String (e is for exec or eval)
205
+ # *args: command arguments
206
+ def e(*args)
207
+ return @ip._eval_args(to_s(), *args)
208
+ end
209
+ end
210
+
211
+ # class TclTkLibCommand: tcl/tk commands in the library
212
+ class TclTkLibCommand < TclTkCommand
213
+
214
+ # initialize(ip, name):
215
+ # ip: interpreter(TclTkInterpreter)
216
+ # name: command name (String)
217
+ def initialize(ip, name)
218
+ super(ip._tcltkip, name)
219
+ end
220
+ end
221
+
222
+ # class TclTkVariable: tcl/tk variable
223
+ class TclTkVariable < TclTkObject
224
+
225
+ # initialize(interp, dat):
226
+ # interp: interpreter(TclTkInterpreter)
227
+ # dat: the value to set(String)
228
+ # if nil, not initialize variable
229
+ def initialize(interp, dat)
230
+ # auto-generate tcl/tk representation (variable name)
231
+ exp = TclTk._newname("v_")
232
+ # initialize TclTkObject
233
+ super(interp._tcltkip(), exp)
234
+ # safe this for `set' command
235
+ @set = interp.commands()["set"]
236
+ # set value
237
+ set(dat) if dat
238
+ end
239
+
240
+ # although you can set/read variables by using set in tcl/tk,
241
+ # we provide the method for accessing variables
242
+
243
+ # set(data): set tcl/tk variable using `set'
244
+ # data: new value
245
+ def set(data)
246
+ @set.e(to_s(), data.to_s())
247
+ end
248
+
249
+ # get(): read tcl/tk variable(String) using `set'
250
+ def get()
251
+ return @set.e(to_s())
252
+ end
253
+ end
254
+
255
+ # class TclTkWidget: tcl/tk widget
256
+ class TclTkWidget < TclTkCommand
257
+
258
+ # initialize(*args):
259
+ # *args: parameters
260
+ def initialize(*args)
261
+ if args[0].kind_of?(TclTkIp)
262
+ # in case the 1st argument is TclTkIp:
263
+
264
+ # Wrap tcl/tk widget by TclTkWidget
265
+ # (used in TclTkInterpreter#initialize())
266
+
267
+ # need two arguments
268
+ fail("invalid # of parameter") if args.size != 2
269
+
270
+ # ip: interpreter(TclTkIp)
271
+ # exp: tcl/tk representation
272
+ ip, exp = args
273
+
274
+ # initialize TclTkObject
275
+ super(ip, exp)
276
+ elsif args[0].kind_of?(TclTkInterpreter)
277
+ # in case 1st parameter is TclTkInterpreter:
278
+
279
+ # generate new widget from parent widget
280
+
281
+ # interp: interpreter(TclTkInterpreter)
282
+ # parent: parent widget
283
+ # command: widget generating tk command(label ��)
284
+ # *args: argument to the command
285
+ interp, parent, command, *args = args
286
+
287
+ # generate widget name
288
+ exp = parent.to_s()
289
+ exp += "." if exp !~ /[.]$/
290
+ exp += TclTk._newname("w_")
291
+ # initialize TclTkObject
292
+ super(interp._tcltkip(), exp)
293
+ # generate widget
294
+ res = @ip._eval_args(command, exp, *args)
295
+ # fail("can't create Widget") if res != exp
296
+ # for tk_optionMenu, it is legal res != exp
297
+ else
298
+ fail("first parameter is not TclTkInterpreter")
299
+ end
300
+ end
301
+ end
302
+
303
+ # class TclTkCallback: tcl/tk callbacks
304
+ class TclTkCallback < TclTkObject
305
+
306
+ # initialize(interp, pr, arg):
307
+ # interp: interpreter(TclTkInterpreter)
308
+ # pr: callback procedure(Proc)
309
+ # arg: string to pass as block parameters of pr
310
+ # bind command of tcl/tk uses % replacement for parameters
311
+ # pr can receive replaced data using block parameter
312
+ # its format is specified by arg string
313
+ # You should not specify arg for the command like
314
+ # scrollbar with -command option, which receives parameters
315
+ # without specifying any replacement
316
+ def initialize(interp, pr, arg = nil)
317
+ # auto-generate tcl/tk representation (variable name)
318
+ exp = TclTk._newname("c_")
319
+ # initialize TclTkObject
320
+ super(interp._tcltkip(), exp)
321
+ # save parameters
322
+ @pr = pr
323
+ @arg = arg
324
+ # register in the module
325
+ TclTk._addcallback(self)
326
+ end
327
+
328
+ # to_eval(): retuens string representation for @ip._eval_args
329
+ def to_eval()
330
+ if @arg
331
+ # bind replaces %s before calling ruby_fmt, so %%s is used
332
+ s = %Q/{ruby_fmt {TclTk._callcallback("#{to_s()}", "%%s")} #{@arg}}/
333
+ else
334
+ s = %Q/{ruby_fmt {TclTk._callcallback("#{to_s()}", "%s")}}/
335
+ end
336
+
337
+ return s
338
+ end
339
+
340
+ # _call(arg): invoke callback
341
+ # arg: callback parameter
342
+ def _call(arg)
343
+ @pr.call(arg)
344
+ end
345
+ end
346
+
347
+ # class TclTkImage: tcl/tk images
348
+ class TclTkImage < TclTkCommand
349
+
350
+ # initialize(interp, t, *args):
351
+ # generating image is done by TclTkImage.new()
352
+ # destrying is done by image delete (inconsistent, sigh)
353
+ # interp: interpreter(TclTkInterpreter)
354
+ # t: image type (photo, bitmap, etc.)
355
+ # *args: command argument
356
+ def initialize(interp, t, *args)
357
+ # auto-generate tcl/tk representation
358
+ exp = TclTk._newname("i_")
359
+ # initialize TclTkObject
360
+ super(interp._tcltkip(), exp)
361
+ # generate image
362
+ res = @ip._eval_args("image create", t, exp, *args)
363
+ fail("can't create Image") if res != exp
364
+ end
365
+ end
366
+
367
+ # eof