ffi-tk 2009.11.29

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 (189) hide show
  1. data/CHANGELOG +748 -0
  2. data/MANIFEST +188 -0
  3. data/README.md +85 -0
  4. data/Rakefile +47 -0
  5. data/TODO.md +62 -0
  6. data/bin/rwish +33 -0
  7. data/doc/MIT_LICENSE +18 -0
  8. data/doc/TCL_LICENSE +39 -0
  9. data/example/choose_color.rb +22 -0
  10. data/example/choose_directory.rb +22 -0
  11. data/example/dialog.rb +37 -0
  12. data/example/hello.rb +11 -0
  13. data/example/message_box.rb +26 -0
  14. data/example/option_menu.rb +17 -0
  15. data/example/popup.rb +24 -0
  16. data/example/set_palette.rb +32 -0
  17. data/example/text.rb +47 -0
  18. data/example/tile/kroc_demo_small.rb +123 -0
  19. data/example/tile/kroc_rb_demo.rb +135 -0
  20. data/example/tile/notebook.rb +48 -0
  21. data/example/tile/theme_hello.rb +38 -0
  22. data/example/tile/treeview.rb +71 -0
  23. data/example/various.rb +25 -0
  24. data/example/wait.rb +16 -0
  25. data/ffi-tk.gemspec +33 -0
  26. data/lib/ffi-tk.rb +76 -0
  27. data/lib/ffi-tk/command.rb +39 -0
  28. data/lib/ffi-tk/command/after.rb +36 -0
  29. data/lib/ffi-tk/command/bell.rb +34 -0
  30. data/lib/ffi-tk/command/bind.rb +11 -0
  31. data/lib/ffi-tk/command/bindtags.rb +69 -0
  32. data/lib/ffi-tk/command/cget.rb +92 -0
  33. data/lib/ffi-tk/command/choose_color.rb +29 -0
  34. data/lib/ffi-tk/command/choose_directory.rb +45 -0
  35. data/lib/ffi-tk/command/clipboard.rb +102 -0
  36. data/lib/ffi-tk/command/configure.rb +88 -0
  37. data/lib/ffi-tk/command/destroy.rb +12 -0
  38. data/lib/ffi-tk/command/dialog.rb +54 -0
  39. data/lib/ffi-tk/command/event.rb +79 -0
  40. data/lib/ffi-tk/command/focus.rb +70 -0
  41. data/lib/ffi-tk/command/font.rb +124 -0
  42. data/lib/ffi-tk/command/get_open_file.rb +85 -0
  43. data/lib/ffi-tk/command/get_save_file.rb +83 -0
  44. data/lib/ffi-tk/command/grab.rb +141 -0
  45. data/lib/ffi-tk/command/grid.rb +246 -0
  46. data/lib/ffi-tk/command/image.rb +79 -0
  47. data/lib/ffi-tk/command/lower.rb +23 -0
  48. data/lib/ffi-tk/command/message_box.rb +65 -0
  49. data/lib/ffi-tk/command/option_menu.rb +8 -0
  50. data/lib/ffi-tk/command/pack.rb +99 -0
  51. data/lib/ffi-tk/command/place.rb +91 -0
  52. data/lib/ffi-tk/command/popup.rb +14 -0
  53. data/lib/ffi-tk/command/raise.rb +25 -0
  54. data/lib/ffi-tk/command/scrollable.rb +151 -0
  55. data/lib/ffi-tk/command/selection.rb +132 -0
  56. data/lib/ffi-tk/command/set_palette.rb +9 -0
  57. data/lib/ffi-tk/command/tk_cmd.rb +155 -0
  58. data/lib/ffi-tk/command/vars.rb +82 -0
  59. data/lib/ffi-tk/command/wait.rb +39 -0
  60. data/lib/ffi-tk/command/winfo.rb +668 -0
  61. data/lib/ffi-tk/command/wm.rb +1025 -0
  62. data/lib/ffi-tk/core_extensions.rb +154 -0
  63. data/lib/ffi-tk/event/data.rb +60 -0
  64. data/lib/ffi-tk/event/handler.rb +44 -0
  65. data/lib/ffi-tk/ffi/tcl.rb +92 -0
  66. data/lib/ffi-tk/ffi/tcl/cmd_proc.rb +10 -0
  67. data/lib/ffi-tk/ffi/tcl/eval_result.rb +148 -0
  68. data/lib/ffi-tk/ffi/tcl/interp.rb +95 -0
  69. data/lib/ffi-tk/ffi/tcl/obj.rb +89 -0
  70. data/lib/ffi-tk/ffi/tcl/time.rb +36 -0
  71. data/lib/ffi-tk/ffi/tk.rb +35 -0
  72. data/lib/ffi-tk/geometry.rb +32 -0
  73. data/lib/ffi-tk/thread_sender.rb +26 -0
  74. data/lib/ffi-tk/tk.rb +222 -0
  75. data/lib/ffi-tk/variable.rb +46 -0
  76. data/lib/ffi-tk/widget.rb +68 -0
  77. data/lib/ffi-tk/widget/button.rb +41 -0
  78. data/lib/ffi-tk/widget/canvas.rb +806 -0
  79. data/lib/ffi-tk/widget/canvas/arc.rb +18 -0
  80. data/lib/ffi-tk/widget/canvas/bitmap.rb +13 -0
  81. data/lib/ffi-tk/widget/canvas/image.rb +10 -0
  82. data/lib/ffi-tk/widget/canvas/item.rb +170 -0
  83. data/lib/ffi-tk/widget/canvas/line.rb +16 -0
  84. data/lib/ffi-tk/widget/canvas/oval.rb +15 -0
  85. data/lib/ffi-tk/widget/canvas/polygon.rb +16 -0
  86. data/lib/ffi-tk/widget/canvas/rectangle.rb +15 -0
  87. data/lib/ffi-tk/widget/canvas/text.rb +15 -0
  88. data/lib/ffi-tk/widget/canvas/window.rb +11 -0
  89. data/lib/ffi-tk/widget/checkbutton.rb +63 -0
  90. data/lib/ffi-tk/widget/entry.rb +208 -0
  91. data/lib/ffi-tk/widget/frame.rb +12 -0
  92. data/lib/ffi-tk/widget/label.rb +26 -0
  93. data/lib/ffi-tk/widget/labelframe.rb +7 -0
  94. data/lib/ffi-tk/widget/listbox.rb +192 -0
  95. data/lib/ffi-tk/widget/menu.rb +318 -0
  96. data/lib/ffi-tk/widget/menubutton.rb +7 -0
  97. data/lib/ffi-tk/widget/message.rb +36 -0
  98. data/lib/ffi-tk/widget/panedwindow.rb +164 -0
  99. data/lib/ffi-tk/widget/radiobutton.rb +43 -0
  100. data/lib/ffi-tk/widget/root.rb +8 -0
  101. data/lib/ffi-tk/widget/scale.rb +44 -0
  102. data/lib/ffi-tk/widget/scrollbar.rb +114 -0
  103. data/lib/ffi-tk/widget/spinbox.rb +198 -0
  104. data/lib/ffi-tk/widget/text.rb +893 -0
  105. data/lib/ffi-tk/widget/text/peer.rb +10 -0
  106. data/lib/ffi-tk/widget/tile.rb +70 -0
  107. data/lib/ffi-tk/widget/tile/button.rb +8 -0
  108. data/lib/ffi-tk/widget/tile/checkbutton.rb +8 -0
  109. data/lib/ffi-tk/widget/tile/combobox.rb +43 -0
  110. data/lib/ffi-tk/widget/tile/entry.rb +8 -0
  111. data/lib/ffi-tk/widget/tile/frame.rb +13 -0
  112. data/lib/ffi-tk/widget/tile/label.rb +9 -0
  113. data/lib/ffi-tk/widget/tile/labelframe.rb +8 -0
  114. data/lib/ffi-tk/widget/tile/menubutton.rb +8 -0
  115. data/lib/ffi-tk/widget/tile/notebook.rb +93 -0
  116. data/lib/ffi-tk/widget/tile/panedwindow.rb +9 -0
  117. data/lib/ffi-tk/widget/tile/progressbar.rb +59 -0
  118. data/lib/ffi-tk/widget/tile/radiobutton.rb +8 -0
  119. data/lib/ffi-tk/widget/tile/scale.rb +8 -0
  120. data/lib/ffi-tk/widget/tile/scrollbar.rb +41 -0
  121. data/lib/ffi-tk/widget/tile/separator.rb +23 -0
  122. data/lib/ffi-tk/widget/tile/sizegrip.rb +24 -0
  123. data/lib/ffi-tk/widget/tile/style.rb +114 -0
  124. data/lib/ffi-tk/widget/tile/treeview.rb +414 -0
  125. data/lib/ffi-tk/widget/toplevel.rb +14 -0
  126. data/spec/ffi-tk/command/bindtags.rb +18 -0
  127. data/spec/ffi-tk/command/clipboard.rb +18 -0
  128. data/spec/ffi-tk/command/font.rb +67 -0
  129. data/spec/ffi-tk/command/grid.rb +6 -0
  130. data/spec/ffi-tk/command/image.rb +26 -0
  131. data/spec/ffi-tk/command/pack.rb +20 -0
  132. data/spec/ffi-tk/command/place.rb +20 -0
  133. data/spec/ffi-tk/command/selection.rb +13 -0
  134. data/spec/ffi-tk/command/vars.rb +32 -0
  135. data/spec/ffi-tk/command/winfo.rb +233 -0
  136. data/spec/ffi-tk/command/wm.rb +185 -0
  137. data/spec/ffi-tk/event.rb +95 -0
  138. data/spec/ffi-tk/tile/button.rb +51 -0
  139. data/spec/ffi-tk/tile/checkbutton.rb +13 -0
  140. data/spec/ffi-tk/tile/combobox.rb +65 -0
  141. data/spec/ffi-tk/tile/entry.rb +61 -0
  142. data/spec/ffi-tk/tile/frame.rb +65 -0
  143. data/spec/ffi-tk/tile/label.rb +17 -0
  144. data/spec/ffi-tk/tile/labelframe.rb +13 -0
  145. data/spec/ffi-tk/tile/menubutton.rb +13 -0
  146. data/spec/ffi-tk/tile/notebook.rb +103 -0
  147. data/spec/ffi-tk/tile/panedwindow.rb +13 -0
  148. data/spec/ffi-tk/tile/progressbar.rb +78 -0
  149. data/spec/ffi-tk/tile/radiobutton.rb +13 -0
  150. data/spec/ffi-tk/tile/scale.rb +13 -0
  151. data/spec/ffi-tk/tile/scrollbar.rb +43 -0
  152. data/spec/ffi-tk/tile/separator.rb +22 -0
  153. data/spec/ffi-tk/tile/sizegrip.rb +13 -0
  154. data/spec/ffi-tk/tile/style.rb +161 -0
  155. data/spec/ffi-tk/tile/treeview.rb +101 -0
  156. data/spec/ffi-tk/variable.rb +24 -0
  157. data/spec/ffi-tk/widget/button.rb +22 -0
  158. data/spec/ffi-tk/widget/canvas.rb +169 -0
  159. data/spec/ffi-tk/widget/checkbutton.rb +44 -0
  160. data/spec/ffi-tk/widget/entry.rb +155 -0
  161. data/spec/ffi-tk/widget/frame.rb +8 -0
  162. data/spec/ffi-tk/widget/label.rb +16 -0
  163. data/spec/ffi-tk/widget/labelframe.rb +12 -0
  164. data/spec/ffi-tk/widget/listbox.rb +19 -0
  165. data/spec/ffi-tk/widget/menu.rb +12 -0
  166. data/spec/ffi-tk/widget/menubutton.rb +12 -0
  167. data/spec/ffi-tk/widget/message.rb +12 -0
  168. data/spec/ffi-tk/widget/panedwindow.rb +12 -0
  169. data/spec/ffi-tk/widget/radiobutton.rb +12 -0
  170. data/spec/ffi-tk/widget/root.rb +9 -0
  171. data/spec/ffi-tk/widget/scale.rb +12 -0
  172. data/spec/ffi-tk/widget/scrollbar.rb +12 -0
  173. data/spec/ffi-tk/widget/spinbox.rb +12 -0
  174. data/spec/ffi-tk/widget/text.rb +246 -0
  175. data/spec/ffi-tk/widget/toplevel.rb +12 -0
  176. data/spec/helper.rb +3 -0
  177. data/tasks/authors.rake +21 -0
  178. data/tasks/bacon.rake +66 -0
  179. data/tasks/changelog.rake +18 -0
  180. data/tasks/gem.rake +22 -0
  181. data/tasks/gem_setup.rake +113 -0
  182. data/tasks/grancher.rake +12 -0
  183. data/tasks/manifest.rake +4 -0
  184. data/tasks/rcov.rake +17 -0
  185. data/tasks/release.rake +65 -0
  186. data/tasks/reversion.rake +8 -0
  187. data/tasks/setup.rake +12 -0
  188. data/tasks/ycov.rake +84 -0
  189. metadata +261 -0
@@ -0,0 +1,10 @@
1
+ module Tk
2
+ class Text
3
+ class Peer < Text
4
+ def initialize(tk_parent, options = {})
5
+ @tk_parent = tk_parent
6
+ Tk.execute(tk_parent.tk_pathname, 'peer', 'create', assign_pathname, options)
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,70 @@
1
+ # Ttk package merged Tcl/Tk core (Tcl/Tk 8.5+)
2
+ module Tk
3
+ module Tile
4
+ autoload :Entry, 'ffi-tk/widget/tile/entry'
5
+ autoload :Frame, 'ffi-tk/widget/tile/frame'
6
+ autoload :Button, 'ffi-tk/widget/tile/button'
7
+ autoload :LabelFrame, 'ffi-tk/widget/tile/labelframe'
8
+ autoload :CheckButton, 'ffi-tk/widget/tile/checkbutton'
9
+ autoload :RadioButton, 'ffi-tk/widget/tile/radiobutton'
10
+ autoload :MenuButton, 'ffi-tk/widget/tile/menubutton'
11
+ autoload :PanedWindow, 'ffi-tk/widget/tile/panedwindow'
12
+ autoload :Label, 'ffi-tk/widget/tile/label'
13
+ autoload :Scale, 'ffi-tk/widget/tile/scale'
14
+ autoload :Scrollbar, 'ffi-tk/widget/tile/scrollbar'
15
+ autoload :YScrollbar, 'ffi-tk/widget/tile/scrollbar'
16
+ autoload :XScrollbar, 'ffi-tk/widget/tile/scrollbar'
17
+ autoload :Notebook, 'ffi-tk/widget/tile/notebook'
18
+ autoload :Separator, 'ffi-tk/widget/tile/separator'
19
+ autoload :Sizegrip, 'ffi-tk/widget/tile/sizegrip'
20
+ autoload :ComboBox, 'ffi-tk/widget/tile/combobox'
21
+ autoload :Progressbar, 'ffi-tk/widget/tile/progressbar'
22
+ autoload :Treeview, 'ffi-tk/widget/tile/treeview'
23
+
24
+ autoload :Style, 'ffi-tk/widget/tile/style'
25
+
26
+ def self.style(style, parent_name)
27
+ Style.style(style, parent_name)
28
+ end
29
+
30
+ def self.set_theme(theme)
31
+ Style.theme_use(theme)
32
+ end
33
+
34
+ module TileWidget
35
+ def ttk_state(new_state = None)
36
+ if new_state == None
37
+ execute(:state).to_a
38
+ else
39
+ execute_only(:state, new_state)
40
+ end
41
+ end
42
+
43
+ def state(new_state = None)
44
+ ttk_state(new_state)
45
+ end
46
+
47
+ def style(layout_spec, name = tk_pathname)
48
+ Tk::Tile::Style.layout(name, layout_spec)
49
+ end
50
+
51
+ include Tk::Grid
52
+
53
+ def grid(options)
54
+ grid_configure options
55
+ end
56
+ end
57
+
58
+ module Font
59
+ Default = 'TkDefaultFont'
60
+ Text = 'TkTextFont'
61
+ Heading = 'TkHeadingFont'
62
+ Caption = 'TkCaptionFont'
63
+ Tooltip = 'TkTooltipFont'
64
+ Fixed = 'TkFixedFont'
65
+ Menu = 'TkMenuFont'
66
+ SmallCaption = 'TkSmallCaptionFont'
67
+ Icon = 'TkIconFont'
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,8 @@
1
+ module Tk
2
+ module Tile
3
+ class Button < Tk::Button
4
+ def self.tk_command; 'ttk::button'; end
5
+ include TileWidget
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Tk
2
+ module Tile
3
+ class CheckButton < Tk::CheckButton
4
+ def self.tk_command; 'ttk::checkbutton'; end
5
+ include TileWidget
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,43 @@
1
+ module Tk
2
+ module Tile
3
+ # combobox combines a text field with a pop-down list of values.
4
+ # the user may select the value of the text field from among the values in the list.
5
+ class ComboBox < Tile::Entry
6
+ def self.tk_command; 'ttk::combobox'; end
7
+ include TileWidget
8
+ # include Cget, Configure
9
+
10
+ def postcommand(&block)
11
+ configure(:postcommand => block) if block
12
+ end
13
+
14
+ # Sets the value of the combobox to value.
15
+ def set(value)
16
+ execute_only(:set, value)
17
+ end
18
+
19
+ # Returns the current value of the combobox.
20
+ def get
21
+ execute(:get).to_s
22
+ end
23
+
24
+ # If newIndex is supplied, sets the combobox value to the element
25
+ # at position newIndex in the list of -values. Otherwise, returns
26
+ # the index of the current value in the list of -values or -1 if
27
+ # the current value does not appear in the list.
28
+ def current(newindex = None)
29
+ if None == newindex
30
+ execute(:current)
31
+ else
32
+ execute_only(:current, newindex)
33
+ end
34
+ end
35
+
36
+ # VIRTUAL EVENTS
37
+ # The combobox widget generates a <<ComboboxSelected>> virtual event
38
+ # when the user selects an element from the list of values. If the
39
+ # selection action unposts the listbox, this event is delivered after
40
+ # the listbox is unposted.
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,8 @@
1
+ module Tk
2
+ module Tile
3
+ class Entry < Tk::Entry
4
+ def self.tk_command; 'ttk::entry'; end
5
+ include TileWidget
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,13 @@
1
+ module Tk
2
+ module Tile
3
+ class Frame < Tk::Frame
4
+ def self.tk_command; 'ttk::frame'; end
5
+ include TileWidget
6
+
7
+ def initialize(parent = Tk.root, options = {})
8
+ options = { relief: :flat }.merge(options)
9
+ super
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,9 @@
1
+ module Tk
2
+ module Tile
3
+ class Label < Tk::Label
4
+ def self.tk_command; 'ttk::label'; end
5
+ include TileWidget
6
+ end
7
+ end
8
+ end
9
+
@@ -0,0 +1,8 @@
1
+ module Tk
2
+ module Tile
3
+ class LabelFrame < Tk::LabelFrame
4
+ def self.tk_command; 'ttk::labelframe'; end
5
+ include TileWidget
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Tk
2
+ module Tile
3
+ class MenuButton < Tk::MenuButton
4
+ def self.tk_command; 'ttk::menubutton'; end
5
+ include TileWidget
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,93 @@
1
+ module Tk
2
+ module Tile
3
+ # Tk::Tile::Notebook widget manages a collection of windows
4
+ # and displays a single one at a time. Each slave window
5
+ # is associated with a tab, which the user may select to
6
+ # change the currently-displayed window.
7
+ class Notebook < Widget
8
+ def self.tk_command; 'ttk::notebook'; end
9
+ include TileWidget
10
+
11
+ def initialize(parent = Tk.root, options = {})
12
+ super
13
+ end
14
+
15
+ def add(window, options)
16
+ execute_only(:add, window, options.to_tcl_options)
17
+ end
18
+
19
+ # Returns the list of windows managed by the notebook.
20
+ def tabs
21
+ execute(:tabs).to_a
22
+ end
23
+
24
+ # Query or modify the options of the specific tab.
25
+ # If no -option is specified, returns a dictionary of the
26
+ # tab option values. If one -option is specified, returns
27
+ # the value of that option. Otherwise, sets the -options
28
+ # to the corresponding values.
29
+ def tab(window, options = None)
30
+ if None == options
31
+ execute(:tab, window)
32
+ else
33
+ execute_only(:tab, window, options.to_tcl_options)
34
+ end
35
+ end
36
+
37
+ # Inserts a pane at the specified position. pos is either
38
+ # the string end, an integer index, or the name of a managed subwindow.
39
+ # If subwindow is already managed by the notebook, moves it to
40
+ # the specified position.
41
+ def insert(pos, window, options)
42
+ execute_only(:insert, pos, window, options.to_tcl_options)
43
+ end
44
+
45
+ # Selects the specified tab. The associated slave window
46
+ # will be displayed, and the previously-selected window
47
+ # (if different) is unmapped. If tabid is omitted, returns
48
+ # the widget name of the currently selected pane.
49
+ def select(window)
50
+ execute_only(:select, window)
51
+ window.tk_pathname
52
+ end
53
+
54
+ # Remove the pane containing window from the panedwindow.
55
+ # All geometry management options for window will be forgotten.
56
+ def forget(window, *windows)
57
+ execute_only(:forget, window, *windows)
58
+ end
59
+
60
+ def hide(window)
61
+ execute_only(:hide, window)
62
+ end
63
+
64
+ # Returns the numeric index of the tab specified by tabid,
65
+ # or the total number of tabs if tabid is the string 'end'.
66
+ def index(window)
67
+ execute(:index, window).to_i
68
+ end
69
+
70
+ def identify(x, y)
71
+ execute(:identify, x, y)
72
+ end
73
+
74
+ def enable_traversal
75
+ self.class.enable_traversal self
76
+ end
77
+
78
+ def self.enable_traversal(nb)
79
+ Tk.execute_only('ttk::notebook::enableTraversal', nb)
80
+ end
81
+
82
+ # TAB IDENTIFIERS, the tabid argument may take any of the following forms:
83
+ # * An integer between zero and the number of tabs;
84
+ # * The name of a slave window;
85
+ # * A positional specification of the form '@x,y', which identifies the tab
86
+ # * string 'current', which identifies the currently-selected tab; or:
87
+ # * string 'end', which returns the number of tabs (only valid for 'pathname index').
88
+
89
+ # VIRTUAL EVENTS
90
+ # The notebook widget generates a <<NotebookTabChanged>> virtual event after a new tab is selected.
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,9 @@
1
+ module Tk
2
+ module Tile
3
+ class PanedWindow < Tk::PanedWindow
4
+ def self.tk_command; 'ttk::panedwindow'; end
5
+ include TileWidget
6
+ end
7
+ end
8
+ end
9
+
@@ -0,0 +1,59 @@
1
+ module Tk
2
+ module Tile
3
+ # progressbar widget shows the status of a long-running operation.
4
+ # They can operate in two modes: determinate mode shows the amount
5
+ # completed relative to the total amount of work to be done, and
6
+ # indeterminate mode provides an animated display to let the user
7
+ # know that something is happening.
8
+ class Progressbar < Widget
9
+ def self.tk_command; 'ttk::progressbar'; end
10
+ include TileWidget, Cget, Configure
11
+
12
+ # Begin autoincrement mode
13
+ # schedules a recurring timer event that calls step every
14
+ # interval milliseconds. If omitted, interval defaults to
15
+ # 50 milliseconds (20 steps/second).
16
+ def start(interval = None)
17
+ execute_only(:start, interval)
18
+ end
19
+
20
+ # Stop autoincrement mode
21
+ # cancels any recurring timer event initiated by #start
22
+ def stop
23
+ execute_only(:stop)
24
+ end
25
+
26
+ # Increments the -value by amount. amount defaults to 1.0 if omitted.
27
+ def step(amount = 1.0)
28
+ execute_only(:step, amount)
29
+ end
30
+
31
+ # the current value of the progress bar. In determinate mode,
32
+ # this represents the amount of work completed. In indeterminate mode,
33
+ # it is interpreted modulo -maximum; that is, the progress bar
34
+ # completes one 'cycle' when the -value increases by -maximum.
35
+ def value
36
+ execute(:cget, '-value').to_f
37
+ end
38
+
39
+ def phase
40
+ execute(:cget, '-phase').to_i
41
+ end
42
+
43
+
44
+ def identify(x, y)
45
+ execute(:identify, x, y)
46
+ end
47
+
48
+ # Specifies the orientation of the scrollbar.
49
+ # horizontal or vertical
50
+ def orient(orientation = None)
51
+ if None == orientation
52
+ cget(:orient)
53
+ else
54
+ configure orient: orientation
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,8 @@
1
+ module Tk
2
+ module Tile
3
+ class RadioButton < Tk::RadioButton
4
+ def self.tk_command; 'ttk::radiobutton'; end
5
+ include TileWidget
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Tk
2
+ module Tile
3
+ class Scale < Tk::Scale
4
+ def self.tk_command; 'ttk::scale'; end
5
+ include TileWidget
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,41 @@
1
+ module Tk
2
+ module Tile
3
+ class Scrollbar < Tk::Scrollbar
4
+ def self.tk_command; 'ttk::scrollbar'; end
5
+ include TileWidget
6
+
7
+ def initialize(parent = Tk.root, options = {})
8
+ super
9
+ scrollbar_default
10
+ end
11
+
12
+ # Specifies the orientation of the scrollbar.
13
+ # horizontal or vertical
14
+ def orient(orientation = None)
15
+ if None == orientation
16
+ cget(:orient)
17
+ else
18
+ configure orient: orientation
19
+ end
20
+ end
21
+
22
+ def command(&block)
23
+ configure(:command => block) if block
24
+ end
25
+
26
+ def scrollbar_default; end
27
+ end
28
+
29
+ class YScrollbar < Tk::Tile::Scrollbar
30
+ def scrollbar_default
31
+ #configure :orient => :vertical
32
+ end
33
+ end
34
+
35
+ class XScrollbar < Tk::Tile::Scrollbar
36
+ def scrollbar_default
37
+ configure :orient => :horizontal
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,23 @@
1
+ module Tk
2
+ module Tile
3
+ # Separator widget displays a horizontal or vertical separator bar.
4
+ class Separator < Widget
5
+ def self.tk_command; 'ttk::separator'; end
6
+ include TileWidget, Cget, Configure
7
+
8
+ # Specifies the orientation of the separator.
9
+ # horizontal or vertical
10
+ def orient(orientation = None)
11
+ if None == orientation
12
+ cget(:orient)
13
+ else
14
+ configure orient: orientation
15
+ end
16
+ end
17
+
18
+ def identify(x, y)
19
+ execute_only(:identify, x, y)
20
+ end
21
+ end
22
+ end
23
+ end