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,82 @@
1
+ #
2
+ # tkextlib/tcllib/widget.rb
3
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
4
+ #
5
+ # * Part of tcllib extension
6
+ # * megawidget package that uses snit as the object system (snidgets)
7
+ #
8
+
9
+ require 'tk'
10
+ require 'tkextlib/tcllib.rb'
11
+
12
+ # TkPackage.require('widget', '3.0')
13
+ TkPackage.require('widget')
14
+
15
+ module Tk::Tcllib
16
+ module Widget
17
+ PACKAGE_NAME = 'widget'.freeze
18
+ def self.package_name
19
+ PACKAGE_NAME
20
+ end
21
+
22
+ def self.package_version
23
+ begin
24
+ TkPackage.require('widget')
25
+ rescue
26
+ ''
27
+ end
28
+ end
29
+
30
+ #--- followings may be private functions of tklib
31
+ def self.isa(compare_as, *args)
32
+ begin
33
+ return Tk.tk_call('::widget::isa', compare_as, *args)
34
+ rescue => e
35
+ if TkComm.bool(Tk.tk_call('info','command','::widget::isa')) ||
36
+ ! TkComm.bool(Tk.tk_call('info','command','::widget::validate'))
37
+ fail e
38
+ end
39
+ end
40
+ Tk.tk_call('::widget::validate', compare_as, *args)
41
+ end
42
+ def self.validate(compare_as, *args)
43
+ begin
44
+ return Tk.tk_call('::widget::validate', compare_as, *args)
45
+ rescue => e
46
+ if TkComm.bool(Tk.tk_call('info','command','::widget::validate')) ||
47
+ ! TkComm.bool(Tk.tk_call('info','command','::widget::isa'))
48
+ fail e
49
+ end
50
+ end
51
+ Tk.tk_call('::widget::isa', compare_as, *args)
52
+ end
53
+ end
54
+ end
55
+
56
+ module Tk::Tcllib::Widget
57
+ TkComm::TkExtlibAutoloadModule.unshift(self)
58
+
59
+ autoload :Calendar, 'tkextlib/tcllib/calendar'
60
+
61
+ autoload :Canvas_Sqmap, 'tkextlib/tcllib/canvas_sqmap'
62
+ autoload :Canvas_Zoom, 'tkextlib/tcllib/canvas_zoom'
63
+
64
+ autoload :Dialog, 'tkextlib/tcllib/dialog'
65
+
66
+ autoload :Panelframe, 'tkextlib/tcllib/panelframe'
67
+ autoload :PanelFrame, 'tkextlib/tcllib/panelframe'
68
+
69
+ autoload :Ruler, 'tkextlib/tcllib/ruler'
70
+
71
+ autoload :Screenruler, 'tkextlib/tcllib/screenruler'
72
+ autoload :ScreenRuler, 'tkextlib/tcllib/screenruler'
73
+
74
+ autoload :Scrolledwindow, 'tkextlib/tcllib/scrollwin'
75
+ autoload :ScrolledWindow, 'tkextlib/tcllib/scrollwin'
76
+
77
+ autoload :Superframe, 'tkextlib/tcllib/superframe'
78
+ autoload :SuperFrame, 'tkextlib/tcllib/superframe'
79
+
80
+ autoload :Toolbar, 'tkextlib/tcllib/toolbar'
81
+ autoload :ToolbarItem, 'tkextlib/tcllib/toolbar'
82
+ end
@@ -0,0 +1,13 @@
1
+ #
2
+ # TclX support
3
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
4
+ #
5
+
6
+ # call setup script for general 'tkextlib' libraries
7
+ require 'tkextlib/setup.rb'
8
+
9
+ # call setup script
10
+ require 'tkextlib/tclx/setup.rb'
11
+
12
+ # load library
13
+ require 'tkextlib/tclx/tclx'
@@ -0,0 +1,8 @@
1
+ #
2
+ # setup.rb -- setup script before calling TkPackage.require()
3
+ #
4
+ # If you need some setup operations (for example, add a library path
5
+ # to the library search path) before using Tcl/Tk library packages
6
+ # wrapped by Ruby scripts in this directory, please write the setup
7
+ # operations in this file.
8
+ #
@@ -0,0 +1,74 @@
1
+ #
2
+ # tclx/tclx.rb
3
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
4
+ #
5
+ require 'tk'
6
+
7
+ # call setup script for general 'tkextlib' libraries
8
+ require 'tkextlib/setup.rb'
9
+
10
+ # call setup script
11
+ require 'tkextlib/tclx/setup.rb'
12
+
13
+ # TkPackage.require('Tclx', '8.0')
14
+ TkPackage.require('Tclx')
15
+
16
+ module Tk
17
+ module TclX
18
+ PACKAGE_NAME = 'Tclx'.freeze
19
+ def self.package_name
20
+ PACKAGE_NAME
21
+ end
22
+
23
+ def self.package_version
24
+ begin
25
+ TkPackage.require('Tclx')
26
+ rescue
27
+ ''
28
+ end
29
+ end
30
+
31
+ def self.infox(*args)
32
+ Tk.tk_call('infox', *args)
33
+ end
34
+
35
+ def self.signal(*args)
36
+ warn("Warning: Don't recommend to use TclX's 'signal' command. Please use Ruby's 'Signal.trap' method")
37
+ Tk.tk_call('signal', *args)
38
+ end
39
+
40
+ def self.signal_restart(*args)
41
+ warn("Warning: Don't recommend to use TclX's 'signal' command. Please use Ruby's 'Signal.trap' method")
42
+ Tk.tk_call('signal', '-restart', *args)
43
+ end
44
+
45
+ ##############################
46
+
47
+ class XPG3_MsgCat
48
+ class << self
49
+ alias open new
50
+ end
51
+
52
+ def initialize(catname, fail_mode=false)
53
+ if fail_mode
54
+ @msgcat_id = Tk.tk_call('catopen', '-fail', catname)
55
+ else
56
+ @msgcat_id = Tk.tk_call('catopen', '-nofail', catname)
57
+ end
58
+ end
59
+
60
+ def close(fail_mode=false)
61
+ if fail_mode
62
+ Tk.tk_call('catclose', '-fail', @msgcat_id)
63
+ else
64
+ Tk.tk_call('catclose', '-nofail', @msgcat_id)
65
+ end
66
+ self
67
+ end
68
+
69
+ def get(setnum, msgnum, defaultstr)
70
+ Tk.tk_call('catgets', @msgcat_id, setnum, msgnum, defaultstr)
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,449 @@
1
+ #
2
+ # Tile theme engin (tile widget set) support
3
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
4
+ #
5
+
6
+ require 'tk'
7
+ require 'tk/ttk_selector'
8
+
9
+ # call setup script for general 'tkextlib' libraries
10
+ require 'tkextlib/setup.rb'
11
+
12
+ # library directory
13
+ require 'tkextlib/tile/setup.rb'
14
+
15
+ # load package
16
+ # TkPackage.require('tile', '0.4')
17
+ # TkPackage.require('tile', '0.6')
18
+ # TkPackage.require('tile', '0.7')
19
+ if Tk::TK_MAJOR_VERSION > 8 ||
20
+ (Tk::TK_MAJOR_VERSION == 8 && Tk::TK_MINOR_VERSION >= 5)
21
+ begin
22
+ TkPackage.require('tile') # for compatibility (version check of 'tile')
23
+ rescue RuntimeError
24
+ # ignore, even if cannot find package 'tile'
25
+ end
26
+ pkgname = 'Ttk'
27
+ else
28
+ pkgname = 'tile'
29
+ end
30
+
31
+ begin
32
+ verstr = TkPackage.require(pkgname)
33
+ rescue RuntimeError
34
+ # define dummy methods
35
+ module Tk
36
+ module Tile
37
+ CANNOT_FIND_PACKAGE = true
38
+ def self.const_missing(sym)
39
+ TkPackage.require(PACKAGE_NAME)
40
+ end
41
+ def self.method_missing(*args)
42
+ TkPackage.require(PACKAGE_NAME)
43
+ end
44
+ end
45
+ end
46
+ Tk.__cannot_find_tk_package_for_widget_set__(:Ttk, pkgname)
47
+ if pkgname == 'Ttk'
48
+ verstr = Tk::TK_PATCHLEVEL # dummy
49
+ else
50
+ verstr = '0.7' # dummy
51
+ end
52
+ end
53
+
54
+ ver = verstr.split('.')
55
+ if ver[0].to_i == 0
56
+ # Tile extension package
57
+ if ver[1].to_i <= 4
58
+ # version 0.4 or former
59
+ module Tk
60
+ module Tile
61
+ USE_TILE_NAMESPACE = true
62
+ USE_TTK_NAMESPACE = false
63
+ TILE_SPEC_VERSION_ID = 0
64
+ end
65
+ end
66
+ elsif ver[1].to_i <= 6
67
+ # version 0.5 -- version 0.6
68
+ module Tk
69
+ module Tile
70
+ USE_TILE_NAMESPACE = true
71
+ USE_TTK_NAMESPACE = true
72
+ TILE_SPEC_VERSION_ID = 5
73
+ end
74
+ end
75
+ elsif ver[1].to_i <= 7
76
+ module Tk
77
+ module Tile
78
+ USE_TILE_NAMESPACE = false
79
+ USE_TTK_NAMESPACE = true
80
+ TILE_SPEC_VERSION_ID = 7
81
+ end
82
+ end
83
+ else
84
+ # version 0.8 or later
85
+ module Tk
86
+ module Tile
87
+ USE_TILE_NAMESPACE = false
88
+ USE_TTK_NAMESPACE = true
89
+ TILE_SPEC_VERSION_ID = 8
90
+ end
91
+ end
92
+ end
93
+
94
+ module Tk::Tile
95
+ PACKAGE_NAME = 'tile'.freeze
96
+ end
97
+ else
98
+ # Ttk package merged Tcl/Tk core (Tcl/Tk 8.5+)
99
+ module Tk
100
+ module Tile
101
+ USE_TILE_NAMESPACE = false
102
+ USE_TTK_NAMESPACE = true
103
+ TILE_SPEC_VERSION_ID = 8
104
+
105
+ PACKAGE_NAME = 'Ttk'.freeze
106
+ end
107
+ end
108
+ end
109
+
110
+ # autoload
111
+ module Tk
112
+ module Tile
113
+ TkComm::TkExtlibAutoloadModule.unshift(self)
114
+
115
+ def self.package_name
116
+ PACKAGE_NAME
117
+ end
118
+
119
+ def self.package_version
120
+ begin
121
+ TkPackage.require(PACKAGE_NAME)
122
+ rescue
123
+ ''
124
+ end
125
+ end
126
+
127
+ def self.__Import_Tile_Widgets__!
128
+ warn 'Warning: "Tk::Tile::__Import_Tile_Widgets__!" is obsolete.' <<
129
+ ' To control default widget set, use "Tk.default_widget_set = :Ttk"'
130
+ Tk.tk_call('namespace', 'import', '-force', 'ttk::*')
131
+ end
132
+
133
+ def self.__define_LoadImages_proc_for_compatibility__!
134
+ # Ttk 8.5 (Tile 0.8) lost 'LoadImages' utility procedure.
135
+ # So, some old scripts doen't work, because those scripts use the
136
+ # procedure to define local styles.
137
+ # Of course, rewriting such Tcl/Tk scripts isn't difficult for
138
+ # Tcl/Tk users. However, it may be troublesome for Ruby/Tk users
139
+ # who use such Tcl/Tk scripts as it is.
140
+ # This method may help Ruby/Tk users who don't want to modify old
141
+ # Tcl/Tk scripts for the latest version of Ttk (Tile) extension.
142
+ # This method defines a comaptible 'LoadImages' procedure on the
143
+ # Tcl/Tk interpreter working under Ruby/Tk.
144
+ # Please give attention to use this method. It may conflict with
145
+ # some definitions on Tcl/Tk scripts.
146
+ klass_name = self.name
147
+ proc_name = 'LoadImages'
148
+ if Tk::Tile::USE_TTK_NAMESPACE
149
+ ns_list = ['::tile']
150
+ if Tk.info(:commands, "::ttk::#{proc_name}").empty?
151
+ ns_list << '::ttk'
152
+ end
153
+ else # Tk::Tile::USE_TILE_NAMESPACE
154
+ ns_list = ['::ttk']
155
+ if Tk.info(:commands, "::tile::#{proc_name}").empty?
156
+ ns_list << '::tile'
157
+ end
158
+ end
159
+
160
+ ns_list.each{|ns|
161
+ cmd = "#{ns}::#{proc_name}"
162
+ unless Tk.info(:commands, cmd).empty?
163
+ #fail RuntimeError, "can't define '#{cmd}' command (already exist)"
164
+
165
+ # do nothing !!!
166
+ warn "Warning: can't define '#{cmd}' command (already exist)" if $DEBUG
167
+ next
168
+ end
169
+ TkNamespace.eval(ns){
170
+ TkCore::INTERP.add_tk_procs(proc_name, 'imgdir {patterns {*.gif}}',
171
+ <<-'EOS')
172
+ foreach pattern $patterns {
173
+ foreach file [glob -directory $imgdir $pattern] {
174
+ set img [file tail [file rootname $file]]
175
+ if {![info exists images($img)]} {
176
+ set images($img) [image create photo -file $file]
177
+ }
178
+ }
179
+ }
180
+ return [array get images]
181
+ EOS
182
+ }
183
+ }
184
+ end
185
+
186
+ def self.load_images(imgdir, pat=nil)
187
+ if Tk::Tile::TILE_SPEC_VERSION_ID < 8
188
+ if Tk::Tile::USE_TTK_NAMESPACE
189
+ cmd = '::ttk::LoadImages'
190
+ else # Tk::Tile::USE_TILE_NAMESPACE
191
+ cmd = '::tile::LoadImages'
192
+ end
193
+ pat ||= TkComm::None
194
+ images = Hash[*TkComm.simplelist(Tk.tk_call(cmd, imgdir, pat))]
195
+ images.keys.each{|k|
196
+ images[k] = TkPhotoImage.new(:imagename=>images[k],
197
+ :without_creating=>true)
198
+ }
199
+ else ## TILE_SPEC_VERSION_ID >= 8
200
+ pat ||= '*.gif'
201
+ if pat.kind_of?(Array)
202
+ pat_list = pat
203
+ else
204
+ pat_list = [ pat ]
205
+ end
206
+ Dir.chdir(imgdir){
207
+ pat_list.each{|pat|
208
+ Dir.glob(pat).each{|f|
209
+ img = File.basename(f, '.*')
210
+ unless TkComm.bool(Tk.info('exists', "images(#{img})"))
211
+ Tk.tk_call('set', "images(#{img})",
212
+ Tk.tk_call('image', 'create', 'photo', '-file', f))
213
+ end
214
+ }
215
+ }
216
+ }
217
+ images = Hash[*TkComm.simplelist(Tk.tk_call('array', 'get', 'images'))]
218
+ images.keys.each{|k|
219
+ images[k] = TkPhotoImage.new(:imagename=>images[k],
220
+ :without_creating=>true)
221
+ }
222
+ end
223
+
224
+ images
225
+ end
226
+
227
+ def self.style(*args)
228
+ args.map!{|arg| TkComm._get_eval_string(arg)}.join('.')
229
+ end
230
+
231
+ def self.themes(glob_ptn = nil)
232
+ if TILE_SPEC_VERSION_ID < 8 && Tk.info(:commands, '::ttk::themes').empty?
233
+ fail RuntimeError, 'not support glob option' if glob_ptn
234
+ cmd = ['::tile::availableThemes']
235
+ else
236
+ glob_ptn = '*' unless glob_ptn
237
+ cmd = ['::ttk::themes', glob_ptn]
238
+ end
239
+
240
+ begin
241
+ TkComm.simplelist(Tk.tk_call_without_enc(*cmd))
242
+ rescue
243
+ TkComm.simplelist(Tk.tk_call('lsearch', '-all', '-inline',
244
+ Tk::Tile::Style.theme_names,
245
+ glob_ptn))
246
+ end
247
+ end
248
+
249
+ def self.set_theme(theme)
250
+ if TILE_SPEC_VERSION_ID < 8 && Tk.info(:commands, '::ttk::setTheme').empty?
251
+ cmd = '::tile::setTheme'
252
+ else
253
+ cmd = '::ttk::setTheme'
254
+ end
255
+
256
+ begin
257
+ Tk.tk_call_without_enc(cmd, theme)
258
+ rescue
259
+ Tk::Tile::Style.theme_use(theme)
260
+ end
261
+ end
262
+
263
+ module KeyNav
264
+ if Tk::Tile::TILE_SPEC_VERSION_ID < 8
265
+ def self.enableMnemonics(w)
266
+ Tk.tk_call('::keynav::enableMnemonics', w)
267
+ end
268
+ def self.defaultButton(w)
269
+ Tk.tk_call('::keynav::defaultButton', w)
270
+ end
271
+ else # dummy
272
+ def self.enableMnemonics(w)
273
+ ""
274
+ end
275
+ def self.defaultButton(w)
276
+ ""
277
+ end
278
+ end
279
+ end
280
+
281
+ module Font
282
+ Default = 'TkDefaultFont'
283
+ Text = 'TkTextFont'
284
+ Heading = 'TkHeadingFont'
285
+ Caption = 'TkCaptionFont'
286
+ Tooltip = 'TkTooltipFont'
287
+
288
+ Fixed = 'TkFixedFont'
289
+ Menu = 'TkMenuFont'
290
+ SmallCaption = 'TkSmallCaptionFont'
291
+ Icon = 'TkIconFont'
292
+
293
+ TkFont::SYSTEM_FONT_NAMES.add [
294
+ 'TkDefaultFont', 'TkTextFont', 'TkHeadingFont',
295
+ 'TkCaptionFont', 'TkTooltipFont', 'TkFixedFont',
296
+ 'TkMenuFont', 'TkSmallCaptionFont', 'TkIconFont'
297
+ ]
298
+ end
299
+
300
+ module ParseStyleLayout
301
+ def _style_layout(lst)
302
+ ret = []
303
+ until lst.empty?
304
+ sub = [lst.shift]
305
+ keys = {}
306
+
307
+ until lst.empty?
308
+ if lst[0][0] == ?-
309
+ k = lst.shift[1..-1]
310
+ children = lst.shift
311
+ children = _style_layout(children) if children.kind_of?(Array)
312
+ keys[k] = children
313
+ else
314
+ break
315
+ end
316
+ end
317
+
318
+ sub << keys unless keys.empty?
319
+ ret << sub
320
+ end
321
+ ret
322
+ end
323
+ private :_style_layout
324
+ end
325
+
326
+ module TileWidget
327
+ include Tk::Tile::ParseStyleLayout
328
+
329
+ def __val2ruby_optkeys # { key=>proc, ... }
330
+ # The method is used to convert a opt-value to a ruby's object.
331
+ # When get the value of the option "key", "proc.call(value)" is called.
332
+ super().update('style'=>proc{|v| _style_layout(list(v))})
333
+ end
334
+ private :__val2ruby_optkeys
335
+
336
+ def ttk_instate(state, script=nil, &b)
337
+ if script
338
+ tk_send('instate', state, script)
339
+ elsif b
340
+ tk_send('instate', state, Proc.new(&b))
341
+ else
342
+ bool(tk_send('instate', state))
343
+ end
344
+ end
345
+ alias tile_instate ttk_instate
346
+
347
+ def ttk_state(state=nil)
348
+ if state
349
+ tk_send('state', state)
350
+ else
351
+ list(tk_send('state'))
352
+ end
353
+ end
354
+ alias tile_state ttk_state
355
+
356
+ def ttk_identify(x, y)
357
+ ret = tk_send_without_enc('identify', x, y)
358
+ (ret.empty?)? nil: ret
359
+ end
360
+ alias tile_identify ttk_identify
361
+
362
+ # remove instate/state/identify method
363
+ # to avoid the conflict with widget options
364
+ if Tk.const_defined?(:USE_OBSOLETE_TILE_STATE_METHOD) && Tk::USE_OBSOLETE_TILE_STATE_METHOD
365
+ alias instate ttk_instate
366
+ alias state ttk_state
367
+ alias identify ttk_identify
368
+ end
369
+ end
370
+
371
+ ######################################
372
+
373
+ autoload :TButton, 'tkextlib/tile/tbutton'
374
+ autoload :Button, 'tkextlib/tile/tbutton'
375
+
376
+ autoload :TCheckButton, 'tkextlib/tile/tcheckbutton'
377
+ autoload :CheckButton, 'tkextlib/tile/tcheckbutton'
378
+ autoload :TCheckbutton, 'tkextlib/tile/tcheckbutton'
379
+ autoload :Checkbutton, 'tkextlib/tile/tcheckbutton'
380
+
381
+ autoload :Dialog, 'tkextlib/tile/dialog'
382
+
383
+ autoload :TEntry, 'tkextlib/tile/tentry'
384
+ autoload :Entry, 'tkextlib/tile/tentry'
385
+
386
+ autoload :TCombobox, 'tkextlib/tile/tcombobox'
387
+ autoload :Combobox, 'tkextlib/tile/tcombobox'
388
+
389
+ autoload :TFrame, 'tkextlib/tile/tframe'
390
+ autoload :Frame, 'tkextlib/tile/tframe'
391
+
392
+ autoload :TLabelframe, 'tkextlib/tile/tlabelframe'
393
+ autoload :Labelframe, 'tkextlib/tile/tlabelframe'
394
+ autoload :TLabelFrame, 'tkextlib/tile/tlabelframe'
395
+ autoload :LabelFrame, 'tkextlib/tile/tlabelframe'
396
+
397
+ autoload :TLabel, 'tkextlib/tile/tlabel'
398
+ autoload :Label, 'tkextlib/tile/tlabel'
399
+
400
+ autoload :TMenubutton, 'tkextlib/tile/tmenubutton'
401
+ autoload :Menubutton, 'tkextlib/tile/tmenubutton'
402
+ autoload :TMenuButton, 'tkextlib/tile/tmenubutton'
403
+ autoload :MenuButton, 'tkextlib/tile/tmenubutton'
404
+
405
+ autoload :TNotebook, 'tkextlib/tile/tnotebook'
406
+ autoload :Notebook, 'tkextlib/tile/tnotebook'
407
+
408
+ autoload :TPaned, 'tkextlib/tile/tpaned'
409
+ autoload :Paned, 'tkextlib/tile/tpaned'
410
+ autoload :PanedWindow, 'tkextlib/tile/tpaned'
411
+ autoload :Panedwindow, 'tkextlib/tile/tpaned'
412
+
413
+ autoload :TProgressbar, 'tkextlib/tile/tprogressbar'
414
+ autoload :Progressbar, 'tkextlib/tile/tprogressbar'
415
+
416
+ autoload :TRadioButton, 'tkextlib/tile/tradiobutton'
417
+ autoload :RadioButton, 'tkextlib/tile/tradiobutton'
418
+ autoload :TRadiobutton, 'tkextlib/tile/tradiobutton'
419
+ autoload :Radiobutton, 'tkextlib/tile/tradiobutton'
420
+
421
+ autoload :TScale, 'tkextlib/tile/tscale'
422
+ autoload :Scale, 'tkextlib/tile/tscale'
423
+ autoload :TProgress, 'tkextlib/tile/tscale'
424
+ autoload :Progress, 'tkextlib/tile/tscale'
425
+
426
+ autoload :TScrollbar, 'tkextlib/tile/tscrollbar'
427
+ autoload :Scrollbar, 'tkextlib/tile/tscrollbar'
428
+ autoload :XScrollbar, 'tkextlib/tile/tscrollbar'
429
+ autoload :YScrollbar, 'tkextlib/tile/tscrollbar'
430
+
431
+ autoload :TSeparator, 'tkextlib/tile/tseparator'
432
+ autoload :Separator, 'tkextlib/tile/tseparator'
433
+
434
+ autoload :TSpinbox, 'tkextlib/tile/tspinbox'
435
+ autoload :Spinbox, 'tkextlib/tile/tspinbox'
436
+
437
+ autoload :TSquare, 'tkextlib/tile/tsquare'
438
+ autoload :Square, 'tkextlib/tile/tsquare'
439
+
440
+ autoload :SizeGrip, 'tkextlib/tile/sizegrip'
441
+ autoload :Sizegrip, 'tkextlib/tile/sizegrip'
442
+
443
+ autoload :Treeview, 'tkextlib/tile/treeview'
444
+
445
+ autoload :Style, 'tkextlib/tile/style'
446
+ end
447
+ end
448
+
449
+ Ttk = Tk::Tile