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,183 @@
1
+ #
2
+ # tk/scrollbar.rb : treat scrollbar widget
3
+ #
4
+ require 'tk'
5
+
6
+ class Tk::Scrollbar<TkWindow
7
+ TkCommandNames = ['scrollbar'.freeze].freeze
8
+ WidgetClassName = 'Scrollbar'.freeze
9
+ WidgetClassNames[WidgetClassName] ||= self
10
+
11
+ def create_self(keys)
12
+ @assigned = []
13
+ @scroll_proc = proc{|*args|
14
+ if self.orient == 'horizontal'
15
+ @assigned.each{|w| w.xview(*args)}
16
+ else # 'vertical'
17
+ @assigned.each{|w| w.yview(*args)}
18
+ end
19
+ }
20
+
21
+ if keys and keys != None
22
+ unless TkConfigMethod.__IGNORE_UNKNOWN_CONFIGURE_OPTION__
23
+ #tk_call_without_enc('scrollbar', @path, *hash_kv(keys, true))
24
+ tk_call_without_enc(self.class::TkCommandNames[0], @path,
25
+ *hash_kv(keys, true))
26
+ else
27
+ begin
28
+ tk_call_without_enc(self.class::TkCommandNames[0], @path,
29
+ *hash_kv(keys, true))
30
+ rescue
31
+ tk_call_without_enc(self.class::TkCommandNames[0], @path)
32
+ keys = __check_available_configure_options(keys)
33
+ unless keys.empty?
34
+ begin
35
+ tk_call_without_enc('destroy', @path)
36
+ rescue
37
+ # cannot destroy
38
+ configure(keys)
39
+ else
40
+ # re-create widget
41
+ tk_call_without_enc(self.class::TkCommandNames[0], @path,
42
+ *hash_kv(keys, true))
43
+ end
44
+ end
45
+ end
46
+ end
47
+ else
48
+ #tk_call_without_enc('scrollbar', @path)
49
+ tk_call_without_enc(self.class::TkCommandNames[0], @path)
50
+ end
51
+ end
52
+ private :create_self
53
+
54
+ def propagate_set(src_win, first, last)
55
+ self.set(first, last)
56
+ if self.orient == 'horizontal'
57
+ @assigned.each{|w| w.xview('moveto', first) if w != src_win}
58
+ else # 'vertical'
59
+ @assigned.each{|w| w.yview('moveto', first) if w != src_win}
60
+ end
61
+ end
62
+
63
+ def assign(*wins)
64
+ begin
65
+ self.command(@scroll_proc) if self.cget('command').cmd != @scroll_proc
66
+ rescue Exception
67
+ self.command(@scroll_proc)
68
+ end
69
+ orient = self.orient
70
+ wins.each{|w|
71
+ @assigned << w unless @assigned.index(w)
72
+ if orient == 'horizontal'
73
+ w.xscrollcommand proc{|first, last| self.propagate_set(w, first, last)}
74
+ else # 'vertical'
75
+ w.yscrollcommand proc{|first, last| self.propagate_set(w, first, last)}
76
+ end
77
+ }
78
+ Tk.update # avoid scrollbar trouble
79
+ self
80
+ end
81
+
82
+ def assigned_list
83
+ begin
84
+ return @assigned.dup if self.cget('command').cmd == @scroll_proc
85
+ rescue Exception
86
+ end
87
+ fail RuntimeError, "not depend on the assigned_list"
88
+ end
89
+
90
+ def configure(*args)
91
+ ret = super(*args)
92
+ # Tk.update # avoid scrollbar trouble
93
+ ret
94
+ end
95
+
96
+ #def delta(deltax=None, deltay=None)
97
+ def delta(deltax, deltay)
98
+ number(tk_send_without_enc('delta', deltax, deltay))
99
+ end
100
+
101
+ #def fraction(x=None, y=None)
102
+ def fraction(x, y)
103
+ number(tk_send_without_enc('fraction', x, y))
104
+ end
105
+
106
+ def identify(x, y)
107
+ tk_send_without_enc('identify', x, y)
108
+ end
109
+
110
+ def get
111
+ #ary1 = tk_send('get').split
112
+ #ary2 = []
113
+ #for i in ary1
114
+ # ary2.push number(i)
115
+ #end
116
+ #ary2
117
+ list(tk_send_without_enc('get'))
118
+ end
119
+
120
+ def set(first, last)
121
+ tk_send_without_enc('set', first, last)
122
+ self
123
+ end
124
+
125
+ def activate(element=None)
126
+ tk_send_without_enc('activate', element)
127
+ end
128
+
129
+ def moveto(fraction)
130
+ tk_send_without_enc('moveto', fraction)
131
+ self
132
+ end
133
+
134
+ def scroll(*args)
135
+ tk_send_without_enc('scroll', *args)
136
+ self
137
+ end
138
+
139
+ def scroll_units(num)
140
+ scroll(num, 'units')
141
+ self
142
+ end
143
+
144
+ def scroll_pages(num)
145
+ scroll(num, 'pages')
146
+ self
147
+ end
148
+ end
149
+
150
+ #TkScrollbar = Tk::Scrollbar unless Object.const_defined? :TkScrollbar
151
+ #Tk.__set_toplevel_aliases__(:Tk, Tk::Scrollbar, :TkScrollbar)
152
+ Tk.__set_loaded_toplevel_aliases__('tk/scrollbar.rb', :Tk, Tk::Scrollbar,
153
+ :TkScrollbar)
154
+
155
+
156
+ class Tk::XScrollbar<Tk::Scrollbar
157
+ def create_self(keys)
158
+ keys = {} unless keys
159
+ keys['orient'] = 'horizontal'
160
+ super(keys)
161
+ end
162
+ private :create_self
163
+ end
164
+
165
+ #TkXScrollbar = Tk::XScrollbar unless Object.const_defined? :TkXScrollbar
166
+ #Tk.__set_toplevel_aliases__(:Tk, Tk::XScrollbar, :TkXScrollbar)
167
+ Tk.__set_loaded_toplevel_aliases__('tk/scrollbar.rb', :Tk, Tk::XScrollbar,
168
+ :TkXScrollbar)
169
+
170
+
171
+ class Tk::YScrollbar<Tk::Scrollbar
172
+ def create_self(keys)
173
+ keys = {} unless keys
174
+ keys['orient'] = 'vertical'
175
+ super(keys)
176
+ end
177
+ private :create_self
178
+ end
179
+
180
+ #TkYScrollbar = Tk::YScrollbar unless Object.const_defined? :TkYScrollbar
181
+ #Tk.__set_toplevel_aliases__(:Tk, Tk::YScrollbar, :TkYScrollbar)
182
+ Tk.__set_loaded_toplevel_aliases__('tk/scrollbar.rb', :Tk, Tk::YScrollbar,
183
+ :TkYScrollbar)
@@ -0,0 +1,39 @@
1
+ #
2
+ # tk/scrollbox.rb - Tk Listbox with Scrollbar
3
+ # as an example of Composite Widget
4
+ # by Yukihiro Matsumoto <matz@netlab.co.jp>
5
+ #
6
+ require 'tk'
7
+ require 'tk/listbox'
8
+
9
+ class TkScrollbox<Tk::Listbox
10
+ include TkComposite
11
+ def initialize_composite(keys=nil)
12
+ #list = Tk::Listbox.new(@frame)
13
+ # -> use current TkListbox class
14
+ list = TkListbox.new(@frame)
15
+ #scroll = Tk::Scrollbar.new(@frame)
16
+ # -> use current TkScrollbar class
17
+ scroll = TkScrollbar.new(@frame)
18
+ @path = list.path
19
+
20
+ =begin
21
+ list.configure 'yscroll', scroll.path+" set"
22
+ list.pack 'side'=>'left','fill'=>'both','expand'=>'yes'
23
+ scroll.configure 'command', list.path+" yview"
24
+ scroll.pack 'side'=>'right','fill'=>'y'
25
+ =end
26
+ list.yscrollbar(scroll)
27
+ list.pack('side'=>'left','fill'=>'both','expand'=>'yes')
28
+ scroll.pack('side'=>'right','fill'=>'y')
29
+
30
+ delegate('DEFAULT', list)
31
+ delegate('foreground', list)
32
+ delegate('background', list, scroll)
33
+ delegate('borderwidth', @frame)
34
+ delegate('relief', @frame)
35
+
36
+ configure keys if keys
37
+ end
38
+ private :initialize_composite
39
+ end
@@ -0,0 +1,86 @@
1
+ #
2
+ # tk/selection.rb : control selection
3
+ #
4
+ require 'tk'
5
+
6
+ module TkSelection
7
+ include Tk
8
+ extend Tk
9
+
10
+ TkCommandNames = ['selection'.freeze].freeze
11
+
12
+ def self.clear(sel=nil)
13
+ if sel
14
+ tk_call_without_enc('selection', 'clear', '-selection', sel)
15
+ else
16
+ tk_call_without_enc('selection', 'clear')
17
+ end
18
+ end
19
+ def self.clear_on_display(win, sel=nil)
20
+ if sel
21
+ tk_call_without_enc('selection', 'clear',
22
+ '-displayof', win, '-selection', sel)
23
+ else
24
+ tk_call_without_enc('selection', 'clear', '-displayof', win)
25
+ end
26
+ end
27
+ def clear(sel=nil)
28
+ TkSelection.clear_on_display(self, sel)
29
+ self
30
+ end
31
+
32
+ def self.get(keys=nil)
33
+ #tk_call('selection', 'get', *hash_kv(keys))
34
+ _fromUTF8(tk_call_without_enc('selection', 'get', *hash_kv(keys)))
35
+ end
36
+ def self.get_on_display(win, keys=nil)
37
+ #tk_call('selection', 'get', '-displayof', win, *hash_kv(keys))
38
+ _fromUTF8(tk_call_without_enc('selection', 'get', '-displayof',
39
+ win, *hash_kv(keys)))
40
+ end
41
+ def get(keys=nil)
42
+ TkSelection.get_on_display(self, sel)
43
+ end
44
+
45
+ def self.handle(win, func=Proc.new, keys=nil, &b)
46
+ if func.kind_of?(Hash) && keys == nil
47
+ keys = func
48
+ func = Proc.new(&b)
49
+ end
50
+ args = ['selection', 'handle']
51
+ args.concat(hash_kv(keys))
52
+ args.concat([win, func])
53
+ tk_call_without_enc(*args)
54
+ end
55
+ def handle(func=Proc.new, keys=nil, &b)
56
+ TkSelection.handle(self, func, keys, &b)
57
+ end
58
+
59
+ def self.get_owner(sel=nil)
60
+ if sel
61
+ window(tk_call_without_enc('selection', 'own', '-selection', sel))
62
+ else
63
+ window(tk_call_without_enc('selection', 'own'))
64
+ end
65
+ end
66
+ def self.get_owner_on_display(win, sel=nil)
67
+ if sel
68
+ window(tk_call_without_enc('selection', 'own',
69
+ '-displayof', win, '-selection', sel))
70
+ else
71
+ window(tk_call_without_enc('selection', 'own', '-displayof', win))
72
+ end
73
+ end
74
+ def get_owner(sel=nil)
75
+ TkSelection.get_owner_on_display(self, sel)
76
+ self
77
+ end
78
+
79
+ def self.set_owner(win, keys=nil)
80
+ tk_call_without_enc('selection', 'own', *(hash_kv(keys) << win))
81
+ end
82
+ def set_owner(keys=nil)
83
+ TkSelection.set_owner(self, keys)
84
+ self
85
+ end
86
+ end
@@ -0,0 +1,144 @@
1
+ #
2
+ # tk/spinbox.rb - Tk spinbox classes
3
+ # by Yukihiro Matsumoto <matz@caelum.co.jp>
4
+ #
5
+ require 'tk'
6
+ require 'tk/entry'
7
+
8
+ class Tk::Spinbox<Tk::Entry
9
+ TkCommandNames = ['spinbox'.freeze].freeze
10
+ WidgetClassName = 'Spinbox'.freeze
11
+ WidgetClassNames[WidgetClassName] ||= self
12
+
13
+ class SpinCommand < TkValidateCommand
14
+ class ValidateArgs < TkUtil::CallbackSubst
15
+ KEY_TBL = [
16
+ [ ?d, ?s, :direction ],
17
+ [ ?s, ?e, :current ],
18
+ [ ?W, ?w, :widget ],
19
+ nil
20
+ ]
21
+
22
+ PROC_TBL = [
23
+ [ ?s, TkComm.method(:string) ],
24
+ [ ?w, TkComm.method(:window) ],
25
+
26
+ [ ?e, proc{|val|
27
+ #enc = Tk.encoding
28
+ enc = ((Tk.encoding)? Tk.encoding : Tk.encoding_system)
29
+ if enc
30
+ Tk.fromUTF8(TkComm::string(val), enc)
31
+ else
32
+ TkComm::string(val)
33
+ end
34
+ }
35
+ ],
36
+
37
+ nil
38
+ ]
39
+
40
+ =begin
41
+ # for Ruby m17n :: ?x --> String --> char-code ( getbyte(0) )
42
+ KEY_TBL.map!{|inf|
43
+ if inf.kind_of?(Array)
44
+ inf[0] = inf[0].getbyte(0) if inf[0].kind_of?(String)
45
+ inf[1] = inf[1].getbyte(0) if inf[1].kind_of?(String)
46
+ end
47
+ inf
48
+ }
49
+
50
+ PROC_TBL.map!{|inf|
51
+ if inf.kind_of?(Array)
52
+ inf[0] = inf[0].getbyte(0) if inf[0].kind_of?(String)
53
+ end
54
+ inf
55
+ }
56
+ =end
57
+
58
+ _setup_subst_table(KEY_TBL, PROC_TBL);
59
+
60
+ def self.ret_val(val)
61
+ (val)? '1': '0'
62
+ end
63
+ end
64
+
65
+ def self._config_keys
66
+ ['command']
67
+ end
68
+ end
69
+
70
+ def __validation_class_list
71
+ super() << SpinCommand
72
+ end
73
+
74
+ Tk::ValidateConfigure.__def_validcmd(binding, SpinCommand)
75
+
76
+ #def create_self(keys)
77
+ # tk_call_without_enc('spinbox', @path)
78
+ # if keys and keys != None
79
+ # configure(keys)
80
+ # end
81
+ #end
82
+ #private :create_self
83
+
84
+ def __boolval_optkeys
85
+ super() << 'wrap'
86
+ end
87
+ private :__boolval_optkeys
88
+
89
+ def __strval_optkeys
90
+ super() << 'buttonbackground' << 'format'
91
+ end
92
+ private :__strval_optkeys
93
+
94
+ def __listval_optkeys
95
+ super() << 'values'
96
+ end
97
+ private :__listval_optkeys
98
+
99
+ def identify(x, y)
100
+ tk_send_without_enc('identify', x, y)
101
+ end
102
+
103
+ def invoke(elem)
104
+ tk_send_without_enc('invoke', elem)
105
+ self
106
+ end
107
+
108
+ def spinup
109
+ begin
110
+ tk_send_without_enc('invoke', 'buttonup')
111
+ rescue RuntimeError => e
112
+ # old version of element?
113
+ begin
114
+ tk_send_without_enc('invoke', 'spinup')
115
+ rescue
116
+ fail e
117
+ end
118
+ end
119
+ self
120
+ end
121
+
122
+ def spindown
123
+ begin
124
+ tk_send_without_enc('invoke', 'buttondown')
125
+ rescue RuntimeError => e
126
+ # old version of element?
127
+ begin
128
+ tk_send_without_enc('invoke', 'spinup')
129
+ rescue
130
+ fail e
131
+ end
132
+ end
133
+ self
134
+ end
135
+
136
+ def set(str)
137
+ _fromUTF8(tk_send_without_enc('set', _get_eval_enc_str(str)))
138
+ end
139
+ end
140
+
141
+ #TkSpinbox = Tk::Spinbox unless Object.const_defined? :TkSpinbox
142
+ #Tk.__set_toplevel_aliases__(:Tk, Tk::Spinbox, :TkSpinbox)
143
+ Tk.__set_loaded_toplevel_aliases__('tk/spinbox.rb', :Tk, Tk::Spinbox,
144
+ :TkSpinbox)