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,91 @@
1
+ #
2
+ # tkextlib/bwidget/selectfont.rb
3
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
4
+ #
5
+
6
+ require 'tk'
7
+ require 'tkextlib/bwidget.rb'
8
+ require 'tkextlib/bwidget/messagedlg'
9
+
10
+ module Tk
11
+ module BWidget
12
+ class SelectFont < Tk::BWidget::MessageDlg
13
+ class Dialog < Tk::BWidget::SelectFont
14
+ end
15
+ class Toolbar < TkWindow
16
+ end
17
+ end
18
+ end
19
+ end
20
+
21
+ class Tk::BWidget::SelectFont
22
+ extend Tk
23
+
24
+ TkCommandNames = ['SelectFont'.freeze].freeze
25
+ WidgetClassName = 'SelectFont'.freeze
26
+ WidgetClassNames[WidgetClassName] ||= self
27
+
28
+ def __strval_optkeys
29
+ super() << 'sampletext' << 'title'
30
+ end
31
+ private :__strval_optkeys
32
+
33
+ def __boolval_optkeys
34
+ super() << 'nosizes'
35
+ end
36
+ private :__boolval_optkeys
37
+
38
+ def __font_optkeys
39
+ [] # without fontobj operation
40
+ end
41
+ private :__font_optkeys
42
+
43
+ def create
44
+ tk_call(self.class::TkCommandNames[0], @path, *hash_kv(@keys))
45
+ end
46
+
47
+ def self.load_font
48
+ tk_call('SelectFont::loadfont')
49
+ end
50
+ end
51
+
52
+ class Tk::BWidget::SelectFont::Dialog
53
+ def __font_optkeys
54
+ [] # without fontobj operation
55
+ end
56
+
57
+ def create_self(keys)
58
+ super(keys)
59
+ @keys['type'] = 'dialog'
60
+ end
61
+
62
+ def configure(slot, value=None)
63
+ if slot.kind_of?(Hash)
64
+ slot.delete['type']
65
+ slot.delete[:type]
66
+ return self if slot.empty?
67
+ else
68
+ return self if slot == 'type' || slot == :type
69
+ end
70
+ super(slot, value)
71
+ end
72
+
73
+ def create
74
+ @keys['type'] = 'dialog' # 'dialog' type returns font name
75
+ tk_call(Tk::BWidget::SelectFont::TkCommandNames[0], @path, *hash_kv(@keys))
76
+ end
77
+ end
78
+
79
+ class Tk::BWidget::SelectFont::Toolbar
80
+ def __font_optkeys
81
+ [] # without fontobj operation
82
+ end
83
+
84
+ def create_self(keys)
85
+ keys = {} unless keys
86
+ keys = _symbolkey2str(keys)
87
+ keys['type'] = 'toolbar' # 'toolbar' type returns widget path
88
+ window(tk_call(Tk::BWidget::SelectFont::TkCommandNames[0],
89
+ @path, *hash_kv(keys)))
90
+ end
91
+ end
@@ -0,0 +1,20 @@
1
+ #
2
+ # tkextlib/bwidget/separator.rb
3
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
4
+ #
5
+
6
+ require 'tk'
7
+ require 'tkextlib/bwidget.rb'
8
+
9
+ module Tk
10
+ module BWidget
11
+ class Separator < TkWindow
12
+ end
13
+ end
14
+ end
15
+
16
+ class Tk::BWidget::Separator
17
+ TkCommandNames = ['Separator'.freeze].freeze
18
+ WidgetClassName = 'Separator'.freeze
19
+ WidgetClassNames[WidgetClassName] ||= self
20
+ end
@@ -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,98 @@
1
+ #
2
+ # tkextlib/bwidget/entry.rb
3
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
4
+ #
5
+
6
+ require 'tk'
7
+ require 'tkextlib/bwidget.rb'
8
+ require 'tkextlib/bwidget/arrowbutton'
9
+ require 'tkextlib/bwidget/entry'
10
+
11
+ module Tk
12
+ module BWidget
13
+ class SpinBox < Tk::Entry
14
+ end
15
+ end
16
+ end
17
+
18
+ class Tk::BWidget::SpinBox
19
+ include Scrollable
20
+
21
+ TkCommandNames = ['SpinBox'.freeze].freeze
22
+ WidgetClassName = 'SpinBox'.freeze
23
+ WidgetClassNames[WidgetClassName] ||= self
24
+
25
+ def __strval_optkeys
26
+ super() << 'helptext' << 'insertbackground' << 'entryfg' << 'entrybg'
27
+ end
28
+ private :__strval_optkeys
29
+
30
+ def __boolval_optkeys
31
+ super() << 'dragenabled' << 'dropenabled' << 'editable'
32
+ end
33
+ private :__boolval_optkeys
34
+
35
+ def __listval_optkeys
36
+ super() << 'values'
37
+ end
38
+ private :__listval_optkeys
39
+
40
+ def __tkvariable_optkeys
41
+ super() << 'helpvar'
42
+ end
43
+ private :__tkvariable_optkeys
44
+
45
+ #def entrybind(*args)
46
+ # _bind([path, 'bind'], *args)
47
+ # self
48
+ #end
49
+ def entrybind(context, *args)
50
+ #if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
51
+ if TkComm._callback_entry?(args[0]) || !block_given?
52
+ cmd = args.shift
53
+ else
54
+ cmd = Proc.new
55
+ end
56
+ _bind([path, 'bind'], context, cmd, *args)
57
+ self
58
+ end
59
+
60
+ #def entrybind_append(*args)
61
+ # _bind_append([path, 'bind'], *args)
62
+ # self
63
+ #end
64
+ def entrybind_append(context, *args)
65
+ #if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
66
+ if TkComm._callback_entry?(args[0]) || !block_given?
67
+ cmd = args.shift
68
+ else
69
+ cmd = Proc.new
70
+ end
71
+ _bind_append([path, 'bind'], context, cmd, *args)
72
+ self
73
+ end
74
+
75
+ def entrybind_remove(*args)
76
+ _bind_remove([path, 'bind'], *args)
77
+ self
78
+ end
79
+
80
+ def entrybindinfo(*args)
81
+ _bindinfo([path, 'bind'], *args)
82
+ self
83
+ end
84
+
85
+ def get_index_of_value
86
+ number(tk_send_without_enc('getvalue'))
87
+ end
88
+ alias get_value get_index_of_value
89
+ alias get_value_index get_index_of_value
90
+
91
+ def set_value_by_index(idx)
92
+ idx = "@#{idx}" if idx.kind_of?(Integer)
93
+ tk_send_without_enc('setvalue', idx)
94
+ self
95
+ end
96
+ alias set_value set_value_by_index
97
+ alias set_index_value set_value_by_index
98
+ end
@@ -0,0 +1,62 @@
1
+ #
2
+ # tkextlib/bwidget/statusbar.rb
3
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
4
+ #
5
+
6
+ require 'tk'
7
+ require 'tk/frame'
8
+ require 'tkextlib/bwidget.rb'
9
+
10
+ module Tk
11
+ module BWidget
12
+ class StatusBar < TkWindow
13
+ end
14
+ end
15
+ end
16
+
17
+ class Tk::BWidget::StatusBar
18
+ TkCommandNames = ['StatusBar'.freeze].freeze
19
+ WidgetClassName = 'StatusBar'.freeze
20
+ WidgetClassNames[WidgetClassName] ||= self
21
+
22
+ def __boolval_optkeys
23
+ super() << 'showresize' << 'showseparator' << 'showresizesep'
24
+ end
25
+ private :__boolval_optkeys
26
+
27
+ def add(win, keys={})
28
+ tk_send('add', win, keys)
29
+ self
30
+ end
31
+
32
+ def remove(*wins)
33
+ tk_send('remove', *wins)
34
+ self
35
+ end
36
+
37
+ def remove_with_destroy(*wins)
38
+ tk_send('remove', '-destroy', *wins)
39
+ self
40
+ end
41
+
42
+ def delete(*wins) # same to 'remove_with_destroy'
43
+ tk_send('delete', *wins)
44
+ self
45
+ end
46
+
47
+ def get_frame(&b)
48
+ win = window(tk_send_without_enc('getframe'))
49
+ if b
50
+ if TkCore::WITH_RUBY_VM ### Ruby 1.9 !!!!
51
+ win.instance_exec(self, &b)
52
+ else
53
+ win.instance_eval(&b)
54
+ end
55
+ end
56
+ win
57
+ end
58
+
59
+ def items
60
+ simplelist(tk_send('items')).map{|w| window(w)}
61
+ end
62
+ end
@@ -0,0 +1,33 @@
1
+ #
2
+ # tkextlib/bwidget/titleframe.rb
3
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
4
+ #
5
+
6
+ require 'tk'
7
+ require 'tk/frame'
8
+ require 'tkextlib/bwidget.rb'
9
+
10
+ module Tk
11
+ module BWidget
12
+ class TitleFrame < TkWindow
13
+ end
14
+ end
15
+ end
16
+
17
+ class Tk::BWidget::TitleFrame
18
+ TkCommandNames = ['TitleFrame'.freeze].freeze
19
+ WidgetClassName = 'TitleFrame'.freeze
20
+ WidgetClassNames[WidgetClassName] ||= self
21
+
22
+ def get_frame(&b)
23
+ win = window(tk_send_without_enc('getframe'))
24
+ if b
25
+ if TkCore::WITH_RUBY_VM ### Ruby 1.9 !!!!
26
+ win.instance_exec(self, &b)
27
+ else
28
+ win.instance_eval(&b)
29
+ end
30
+ end
31
+ win
32
+ end
33
+ end
@@ -0,0 +1,500 @@
1
+ #
2
+ # tkextlib/bwidget/tree.rb
3
+ # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
4
+ #
5
+
6
+ require 'tk'
7
+ require 'tk/canvas'
8
+ require 'tkextlib/bwidget.rb'
9
+
10
+ module Tk
11
+ module BWidget
12
+ class Tree < TkWindow
13
+ class Node < TkObject
14
+ end
15
+ end
16
+ end
17
+ end
18
+
19
+ class Tk::BWidget::Tree
20
+ include TkItemConfigMethod
21
+ include Scrollable
22
+
23
+ TkCommandNames = ['Tree'.freeze].freeze
24
+ WidgetClassName = 'Tree'.freeze
25
+ WidgetClassNames[WidgetClassName] ||= self
26
+
27
+ class Event_for_Items < TkEvent::Event
28
+ def self._get_extra_args_tbl
29
+ [
30
+ TkComm.method(:string) # item idenfier
31
+ ]
32
+ end
33
+ end
34
+
35
+ def __strval_optkeys
36
+ super() << 'crossfill' << 'linesfill'
37
+ end
38
+ private :__strval_optkeys
39
+
40
+ def __boolval_optkeys
41
+ super() << 'dragenabled' << 'dropenabled' <<
42
+ 'redraw' << 'selectfill' << 'showlines'
43
+ end
44
+ private :__boolval_optkeys
45
+
46
+ def __tkvariable_optkeys
47
+ super() << 'helpvar'
48
+ end
49
+ private :__tkvariable_optkeys
50
+
51
+ def tagid(tag)
52
+ if tag.kind_of?(Tk::BWidget::Tree::Node)
53
+ tag.id
54
+ else
55
+ # tag
56
+ _get_eval_string(tag)
57
+ end
58
+ end
59
+
60
+ def areabind(context, *args)
61
+ if TkComm._callback_entry?(args[0]) || !block_given?
62
+ cmd = args.shift
63
+ else
64
+ cmd = Proc.new
65
+ end
66
+ _bind_for_event_class(Event_for_Items, [path, 'bindArea'],
67
+ context, cmd, *args)
68
+ self
69
+ end
70
+
71
+ def areabind_append(context, *args)
72
+ if TkComm._callback_entry?(args[0]) || !block_given?
73
+ cmd = args.shift
74
+ else
75
+ cmd = Proc.new
76
+ end
77
+ _bind_append_for_event_class(Event_for_Items, [path, 'bindArea'],
78
+ context, cmd, *args)
79
+ self
80
+ end
81
+
82
+ def areabind_remove(*args)
83
+ _bind_remove_for_event_class(Event_for_Items, [path, 'bindArea'], *args)
84
+ self
85
+ end
86
+
87
+ def areabindinfo(*args)
88
+ _bindinfo_for_event_class(Event_for_Items, [path, 'bindArea'], *args)
89
+ end
90
+
91
+ #def imagebind(*args)
92
+ # _bind_for_event_class(Event_for_Items, [path, 'bindImage'], *args)
93
+ # self
94
+ #end
95
+ def imagebind(context, *args)
96
+ #if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
97
+ if TkComm._callback_entry?(args[0]) || !block_given?
98
+ cmd = args.shift
99
+ else
100
+ cmd = Proc.new
101
+ end
102
+ _bind_for_event_class(Event_for_Items, [path, 'bindImage'],
103
+ context, cmd, *args)
104
+ self
105
+ end
106
+
107
+ #def imagebind_append(*args)
108
+ # _bind_append_for_event_class(Event_for_Items, [path, 'bindImage'], *args)
109
+ # self
110
+ #end
111
+ def imagebind_append(context, *args)
112
+ #if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
113
+ if TkComm._callback_entry?(args[0]) || !block_given?
114
+ cmd = args.shift
115
+ else
116
+ cmd = Proc.new
117
+ end
118
+ _bind_append_for_event_class(Event_for_Items, [path, 'bindImage'],
119
+ context, cmd, *args)
120
+ self
121
+ end
122
+
123
+ def imagebind_remove(*args)
124
+ _bind_remove_for_event_class(Event_for_Items, [path, 'bindImage'], *args)
125
+ self
126
+ end
127
+
128
+ def imagebindinfo(*args)
129
+ _bindinfo_for_event_class(Event_for_Items, [path, 'bindImage'], *args)
130
+ end
131
+
132
+ #def textbind(*args)
133
+ # _bind_for_event_class(Event_for_Items, [path, 'bindText'], *args)
134
+ # self
135
+ #end
136
+ def textbind(context, *args)
137
+ #if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
138
+ if TkComm._callback_entry?(args[0]) || !block_given?
139
+ cmd = args.shift
140
+ else
141
+ cmd = Proc.new
142
+ end
143
+ _bind_for_event_class(Event_for_Items, [path, 'bindText'],
144
+ context, cmd, *args)
145
+ self
146
+ end
147
+
148
+ #def textbind_append(*args)
149
+ # _bind_append_for_event_class(Event_for_Items, [path, 'bindText'], *args)
150
+ # self
151
+ #end
152
+ def textbind_append(context, *args)
153
+ #if args[0].kind_of?(Proc) || args[0].kind_of?(Method)
154
+ if TkComm._callback_entry?(args[0]) || !block_given?
155
+ cmd = args.shift
156
+ else
157
+ cmd = Proc.new
158
+ end
159
+ _bind_append_for_event_class(Event_for_Items, [path, 'bindText'],
160
+ context, cmd, *args)
161
+ self
162
+ end
163
+
164
+ def textbind_remove(*args)
165
+ _bind_remove_for_event_class(Event_for_Items, [path, 'bindText'], *args)
166
+ self
167
+ end
168
+
169
+ def textbindinfo(*args)
170
+ _bindinfo_for_event_class(Event_for_Items, [path, 'bindText'], *args)
171
+ end
172
+
173
+ def close_tree(node, recurse=None)
174
+ tk_send('closetree', tagid(node), recurse)
175
+ self
176
+ end
177
+
178
+ def delete(*args)
179
+ tk_send('delete', *(args.collect{|node| tagid(node)}))
180
+ self
181
+ end
182
+
183
+ def edit(node, text, *args)
184
+ tk_send('edit', tagid(node), text, *args)
185
+ self
186
+ end
187
+
188
+ def exist?(node)
189
+ bool(tk_send('exists', tagid(node)))
190
+ end
191
+
192
+ def find(findinfo, confine=None)
193
+ Tk::BWidget::Tree::Node.id2obj(self, tk_send(findinfo, confine))
194
+ end
195
+ def find_position(x, y, confine=None)
196
+ self.find(_at(x,y), confine)
197
+ end
198
+ def find_line(linenum)
199
+ self.find(linenum)
200
+ end
201
+
202
+ def index(node)
203
+ num_or_str(tk_send('index', tagid(node)))
204
+ end
205
+
206
+ def insert(idx, parent, node, keys={})
207
+ tk_send('insert', idx, tagid(parent), tagid(node), *hash_kv(keys))
208
+ self
209
+ end
210
+
211
+ def line(node)
212
+ number(tk_send('line', tagid(node)))
213
+ end
214
+
215
+ def move(parent, node, idx)
216
+ tk_send('move', tagid(parent), tagid(node), idx)
217
+ self
218
+ end
219
+
220
+ def get_node(node, idx)
221
+ Tk::BWidget::Tree::Node.id2obj(self, tk_send('nodes', tagid(node), idx))
222
+ end
223
+
224
+ def nodes(node, first=None, last=None)
225
+ simplelist(tk_send('nodes', tagid(node), first, last)).collect{|node|
226
+ Tk::BWidget::Tree::Node.id2obj(self, node)
227
+ }
228
+ end
229
+
230
+ def open?(node)
231
+ bool(self.itemcget(tagid(node), 'open'))
232
+ end
233
+
234
+ def open_tree(node, recurse=None)
235
+ tk_send('opentree', tagid(node), recurse)
236
+ self
237
+ end
238
+
239
+ def parent(node)
240
+ Tk::BWidget::Tree::Node.id2obj(self, tk_send('parent', tagid(node)))
241
+ end
242
+
243
+ def reorder(node, neworder)
244
+ tk_send('reorder', tagid(node), neworder)
245
+ self
246
+ end
247
+
248
+ def see(node)
249
+ tk_send('see', tagid(node))
250
+ self
251
+ end
252
+
253
+ def selection_add(*args)
254
+ tk_send_without_enc('selection', 'add',
255
+ *(args.collect{|node| tagid(node)}))
256
+ self
257
+ end
258
+
259
+ def selection_clear
260
+ tk_send_without_enc('selection', 'clear')
261
+ self
262
+ end
263
+
264
+ def selection_get
265
+ list(tk_send_without_enc('selection', 'get'))
266
+ end
267
+
268
+ def selection_include?(*args)
269
+ bool(tk_send_without_enc('selection', 'get',
270
+ *(args.collect{|node| tagid(node)})))
271
+ end
272
+
273
+ def selection_range(*args)
274
+ tk_send_without_enc('selection', 'range',
275
+ *(args.collect{|node| tagid(node)}))
276
+ self
277
+ end
278
+
279
+ def selection_remove(*args)
280
+ tk_send_without_enc('selection', 'remove',
281
+ *(args.collect{|node| tagid(node)}))
282
+ self
283
+ end
284
+
285
+ def selection_set(*args)
286
+ tk_send_without_enc('selection', 'set',
287
+ *(args.collect{|node| tagid(node)}))
288
+ self
289
+ end
290
+
291
+ def selection_toggle(*args)
292
+ tk_send_without_enc('selection', 'toggle',
293
+ *(args.collect{|node| tagid(node)}))
294
+ self
295
+ end
296
+
297
+ def toggle(node)
298
+ tk_send_without_enc('toggle', tagid(node))
299
+ self
300
+ end
301
+
302
+ def visible(node)
303
+ bool(tk_send_without_enc('visible', tagid(node)))
304
+ end
305
+ end
306
+
307
+ class Tk::BWidget::Tree::Node
308
+ include TkTreatTagFont
309
+
310
+ TreeNode_TBL = TkCore::INTERP.create_table
311
+
312
+ (TreeNode_ID = ['bw:node'.freeze, TkUtil.untrust('00000')]).instance_eval{
313
+ @mutex = Mutex.new
314
+ def mutex; @mutex; end
315
+ freeze
316
+ }
317
+
318
+ TkCore::INTERP.init_ip_env{
319
+ TreeNode_TBL.mutex.synchronize{ TreeNode_TBL.clear }
320
+ }
321
+
322
+ def self.id2obj(tree, id)
323
+ tpath = tree.path
324
+ TreeNode_TBL.mutex.synchronize{
325
+ if TreeNode_TBL[tpath]
326
+ TreeNode_TBL[tpath][id]? TreeNode_TBL[tpath][id]: id
327
+ else
328
+ id
329
+ end
330
+ }
331
+ end
332
+
333
+ def initialize(tree, *args)
334
+ if tree.kind_of?(Tk::BWidget::Tree)
335
+ @tree = tree
336
+ parent = args.shift
337
+ if parent.kind_of?(Tk::BWidget::Tree::Node)
338
+ if parent.tree.path != @tree.path
339
+ fail RuntimeError, 'tree of parent node is not match'
340
+ end
341
+ end
342
+ elsif tree.kind_of?(Tk::BWidget::Tree::Node)
343
+ @tree = tree.tree
344
+ parent = tree.parent
345
+ else
346
+ fail RuntimeError,
347
+ "expect Tk::BWidget::Tree or Tk::BWidget::Tree::Node for 1st argument"
348
+ end
349
+
350
+ if args[-1].kind_of?(Hash)
351
+ keys = _symbolkey2str(args.pop)
352
+ else
353
+ keys = {}
354
+ end
355
+
356
+ index = keys.delete('index')
357
+ unless args.empty?
358
+ index = args.shift
359
+ end
360
+ index = 'end' unless index
361
+
362
+ unless args.empty?
363
+ fail RuntimeError, 'too much arguments'
364
+ end
365
+
366
+ @tpath = @tree.path
367
+
368
+ if keys.key?('nodename')
369
+ @path = @id = keys.delete('nodename')
370
+ else
371
+ TreeNode_ID.mutex.synchronize{
372
+ @path = @id = TreeNode_ID.join(TkCore::INTERP._ip_id_)
373
+ TreeNode_ID[1].succ!
374
+ }
375
+ end
376
+
377
+ TreeNode_TBL.mutex.synchronize{
378
+ TreeNode_TBL[@id] = self
379
+ TreeNode_TBL[@tpath] = {} unless TreeNode_TBL[@tpath]
380
+ TreeNode_TBL[@tpath][@id] = self
381
+ }
382
+
383
+ @tree.insert(index, parent, @id, keys)
384
+ end
385
+
386
+ def tree
387
+ @tree
388
+ end
389
+
390
+ def id
391
+ @id
392
+ end
393
+
394
+ def [](key)
395
+ cget(key)
396
+ end
397
+
398
+ def []=(key, val)
399
+ configure(key, val)
400
+ val
401
+ end
402
+
403
+ def cget_tkstring(key)
404
+ @tree.itemcget_tkstring(@id, key)
405
+ end
406
+ def cget(key)
407
+ @tree.itemcget(@id, key)
408
+ end
409
+ def cget_strict(key)
410
+ @tree.itemcget_strict(@id, key)
411
+ end
412
+
413
+ def configure(key, val=None)
414
+ @tree.itemconfigure(@id, key, val)
415
+ end
416
+
417
+ def configinfo(key=nil)
418
+ @tree.itemconfiginfo(@id, key)
419
+ end
420
+
421
+ def current_configinfo(key=nil)
422
+ @tree.current_itemconfiginfo(@id, key)
423
+ end
424
+
425
+ def close_tree(recurse=None)
426
+ @tree.close_tree(@id, recurse)
427
+ self
428
+ end
429
+
430
+ def delete
431
+ @tree.delete(@id)
432
+ self
433
+ end
434
+
435
+ def edit(*args)
436
+ @tree.edit(@id, *args)
437
+ self
438
+ end
439
+
440
+ def exist?
441
+ @tree.exist?(@id)
442
+ end
443
+
444
+ def index
445
+ @tree.index(@id)
446
+ end
447
+
448
+ def move(index, parent=nil)
449
+ if parent
450
+ @tree.move(parent, @id, index)
451
+ else
452
+ @tree.move(self.parent, @id, index)
453
+ end
454
+ end
455
+
456
+ def open_tree(recurse=None)
457
+ @tree.open_tree(@id, recurse)
458
+ self
459
+ end
460
+
461
+ def open?
462
+ bool(@tree.itemcget(@id, 'open'))
463
+ end
464
+
465
+ def parent
466
+ @tree.parent(@id)
467
+ end
468
+
469
+ def reorder(neworder)
470
+ @tree.reorder(@id, neworder)
471
+ end
472
+
473
+ def see
474
+ @tree.see(@id)
475
+ end
476
+
477
+ def selection_add
478
+ @tree.selection_add(@id)
479
+ end
480
+
481
+ def selection_remove
482
+ @tree.selection_remove(@id)
483
+ end
484
+
485
+ def selection_set
486
+ @tree.selection_set(@id)
487
+ end
488
+
489
+ def selection_toggle
490
+ @tree.selection_toggle(@id)
491
+ end
492
+
493
+ def toggle
494
+ @tree.toggle(@id)
495
+ end
496
+
497
+ def visible
498
+ @tree.visible(@id)
499
+ end
500
+ end