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.
- data/CHANGELOG +748 -0
- data/MANIFEST +188 -0
- data/README.md +85 -0
- data/Rakefile +47 -0
- data/TODO.md +62 -0
- data/bin/rwish +33 -0
- data/doc/MIT_LICENSE +18 -0
- data/doc/TCL_LICENSE +39 -0
- data/example/choose_color.rb +22 -0
- data/example/choose_directory.rb +22 -0
- data/example/dialog.rb +37 -0
- data/example/hello.rb +11 -0
- data/example/message_box.rb +26 -0
- data/example/option_menu.rb +17 -0
- data/example/popup.rb +24 -0
- data/example/set_palette.rb +32 -0
- data/example/text.rb +47 -0
- data/example/tile/kroc_demo_small.rb +123 -0
- data/example/tile/kroc_rb_demo.rb +135 -0
- data/example/tile/notebook.rb +48 -0
- data/example/tile/theme_hello.rb +38 -0
- data/example/tile/treeview.rb +71 -0
- data/example/various.rb +25 -0
- data/example/wait.rb +16 -0
- data/ffi-tk.gemspec +33 -0
- data/lib/ffi-tk.rb +76 -0
- data/lib/ffi-tk/command.rb +39 -0
- data/lib/ffi-tk/command/after.rb +36 -0
- data/lib/ffi-tk/command/bell.rb +34 -0
- data/lib/ffi-tk/command/bind.rb +11 -0
- data/lib/ffi-tk/command/bindtags.rb +69 -0
- data/lib/ffi-tk/command/cget.rb +92 -0
- data/lib/ffi-tk/command/choose_color.rb +29 -0
- data/lib/ffi-tk/command/choose_directory.rb +45 -0
- data/lib/ffi-tk/command/clipboard.rb +102 -0
- data/lib/ffi-tk/command/configure.rb +88 -0
- data/lib/ffi-tk/command/destroy.rb +12 -0
- data/lib/ffi-tk/command/dialog.rb +54 -0
- data/lib/ffi-tk/command/event.rb +79 -0
- data/lib/ffi-tk/command/focus.rb +70 -0
- data/lib/ffi-tk/command/font.rb +124 -0
- data/lib/ffi-tk/command/get_open_file.rb +85 -0
- data/lib/ffi-tk/command/get_save_file.rb +83 -0
- data/lib/ffi-tk/command/grab.rb +141 -0
- data/lib/ffi-tk/command/grid.rb +246 -0
- data/lib/ffi-tk/command/image.rb +79 -0
- data/lib/ffi-tk/command/lower.rb +23 -0
- data/lib/ffi-tk/command/message_box.rb +65 -0
- data/lib/ffi-tk/command/option_menu.rb +8 -0
- data/lib/ffi-tk/command/pack.rb +99 -0
- data/lib/ffi-tk/command/place.rb +91 -0
- data/lib/ffi-tk/command/popup.rb +14 -0
- data/lib/ffi-tk/command/raise.rb +25 -0
- data/lib/ffi-tk/command/scrollable.rb +151 -0
- data/lib/ffi-tk/command/selection.rb +132 -0
- data/lib/ffi-tk/command/set_palette.rb +9 -0
- data/lib/ffi-tk/command/tk_cmd.rb +155 -0
- data/lib/ffi-tk/command/vars.rb +82 -0
- data/lib/ffi-tk/command/wait.rb +39 -0
- data/lib/ffi-tk/command/winfo.rb +668 -0
- data/lib/ffi-tk/command/wm.rb +1025 -0
- data/lib/ffi-tk/core_extensions.rb +154 -0
- data/lib/ffi-tk/event/data.rb +60 -0
- data/lib/ffi-tk/event/handler.rb +44 -0
- data/lib/ffi-tk/ffi/tcl.rb +92 -0
- data/lib/ffi-tk/ffi/tcl/cmd_proc.rb +10 -0
- data/lib/ffi-tk/ffi/tcl/eval_result.rb +148 -0
- data/lib/ffi-tk/ffi/tcl/interp.rb +95 -0
- data/lib/ffi-tk/ffi/tcl/obj.rb +89 -0
- data/lib/ffi-tk/ffi/tcl/time.rb +36 -0
- data/lib/ffi-tk/ffi/tk.rb +35 -0
- data/lib/ffi-tk/geometry.rb +32 -0
- data/lib/ffi-tk/thread_sender.rb +26 -0
- data/lib/ffi-tk/tk.rb +222 -0
- data/lib/ffi-tk/variable.rb +46 -0
- data/lib/ffi-tk/widget.rb +68 -0
- data/lib/ffi-tk/widget/button.rb +41 -0
- data/lib/ffi-tk/widget/canvas.rb +806 -0
- data/lib/ffi-tk/widget/canvas/arc.rb +18 -0
- data/lib/ffi-tk/widget/canvas/bitmap.rb +13 -0
- data/lib/ffi-tk/widget/canvas/image.rb +10 -0
- data/lib/ffi-tk/widget/canvas/item.rb +170 -0
- data/lib/ffi-tk/widget/canvas/line.rb +16 -0
- data/lib/ffi-tk/widget/canvas/oval.rb +15 -0
- data/lib/ffi-tk/widget/canvas/polygon.rb +16 -0
- data/lib/ffi-tk/widget/canvas/rectangle.rb +15 -0
- data/lib/ffi-tk/widget/canvas/text.rb +15 -0
- data/lib/ffi-tk/widget/canvas/window.rb +11 -0
- data/lib/ffi-tk/widget/checkbutton.rb +63 -0
- data/lib/ffi-tk/widget/entry.rb +208 -0
- data/lib/ffi-tk/widget/frame.rb +12 -0
- data/lib/ffi-tk/widget/label.rb +26 -0
- data/lib/ffi-tk/widget/labelframe.rb +7 -0
- data/lib/ffi-tk/widget/listbox.rb +192 -0
- data/lib/ffi-tk/widget/menu.rb +318 -0
- data/lib/ffi-tk/widget/menubutton.rb +7 -0
- data/lib/ffi-tk/widget/message.rb +36 -0
- data/lib/ffi-tk/widget/panedwindow.rb +164 -0
- data/lib/ffi-tk/widget/radiobutton.rb +43 -0
- data/lib/ffi-tk/widget/root.rb +8 -0
- data/lib/ffi-tk/widget/scale.rb +44 -0
- data/lib/ffi-tk/widget/scrollbar.rb +114 -0
- data/lib/ffi-tk/widget/spinbox.rb +198 -0
- data/lib/ffi-tk/widget/text.rb +893 -0
- data/lib/ffi-tk/widget/text/peer.rb +10 -0
- data/lib/ffi-tk/widget/tile.rb +70 -0
- data/lib/ffi-tk/widget/tile/button.rb +8 -0
- data/lib/ffi-tk/widget/tile/checkbutton.rb +8 -0
- data/lib/ffi-tk/widget/tile/combobox.rb +43 -0
- data/lib/ffi-tk/widget/tile/entry.rb +8 -0
- data/lib/ffi-tk/widget/tile/frame.rb +13 -0
- data/lib/ffi-tk/widget/tile/label.rb +9 -0
- data/lib/ffi-tk/widget/tile/labelframe.rb +8 -0
- data/lib/ffi-tk/widget/tile/menubutton.rb +8 -0
- data/lib/ffi-tk/widget/tile/notebook.rb +93 -0
- data/lib/ffi-tk/widget/tile/panedwindow.rb +9 -0
- data/lib/ffi-tk/widget/tile/progressbar.rb +59 -0
- data/lib/ffi-tk/widget/tile/radiobutton.rb +8 -0
- data/lib/ffi-tk/widget/tile/scale.rb +8 -0
- data/lib/ffi-tk/widget/tile/scrollbar.rb +41 -0
- data/lib/ffi-tk/widget/tile/separator.rb +23 -0
- data/lib/ffi-tk/widget/tile/sizegrip.rb +24 -0
- data/lib/ffi-tk/widget/tile/style.rb +114 -0
- data/lib/ffi-tk/widget/tile/treeview.rb +414 -0
- data/lib/ffi-tk/widget/toplevel.rb +14 -0
- data/spec/ffi-tk/command/bindtags.rb +18 -0
- data/spec/ffi-tk/command/clipboard.rb +18 -0
- data/spec/ffi-tk/command/font.rb +67 -0
- data/spec/ffi-tk/command/grid.rb +6 -0
- data/spec/ffi-tk/command/image.rb +26 -0
- data/spec/ffi-tk/command/pack.rb +20 -0
- data/spec/ffi-tk/command/place.rb +20 -0
- data/spec/ffi-tk/command/selection.rb +13 -0
- data/spec/ffi-tk/command/vars.rb +32 -0
- data/spec/ffi-tk/command/winfo.rb +233 -0
- data/spec/ffi-tk/command/wm.rb +185 -0
- data/spec/ffi-tk/event.rb +95 -0
- data/spec/ffi-tk/tile/button.rb +51 -0
- data/spec/ffi-tk/tile/checkbutton.rb +13 -0
- data/spec/ffi-tk/tile/combobox.rb +65 -0
- data/spec/ffi-tk/tile/entry.rb +61 -0
- data/spec/ffi-tk/tile/frame.rb +65 -0
- data/spec/ffi-tk/tile/label.rb +17 -0
- data/spec/ffi-tk/tile/labelframe.rb +13 -0
- data/spec/ffi-tk/tile/menubutton.rb +13 -0
- data/spec/ffi-tk/tile/notebook.rb +103 -0
- data/spec/ffi-tk/tile/panedwindow.rb +13 -0
- data/spec/ffi-tk/tile/progressbar.rb +78 -0
- data/spec/ffi-tk/tile/radiobutton.rb +13 -0
- data/spec/ffi-tk/tile/scale.rb +13 -0
- data/spec/ffi-tk/tile/scrollbar.rb +43 -0
- data/spec/ffi-tk/tile/separator.rb +22 -0
- data/spec/ffi-tk/tile/sizegrip.rb +13 -0
- data/spec/ffi-tk/tile/style.rb +161 -0
- data/spec/ffi-tk/tile/treeview.rb +101 -0
- data/spec/ffi-tk/variable.rb +24 -0
- data/spec/ffi-tk/widget/button.rb +22 -0
- data/spec/ffi-tk/widget/canvas.rb +169 -0
- data/spec/ffi-tk/widget/checkbutton.rb +44 -0
- data/spec/ffi-tk/widget/entry.rb +155 -0
- data/spec/ffi-tk/widget/frame.rb +8 -0
- data/spec/ffi-tk/widget/label.rb +16 -0
- data/spec/ffi-tk/widget/labelframe.rb +12 -0
- data/spec/ffi-tk/widget/listbox.rb +19 -0
- data/spec/ffi-tk/widget/menu.rb +12 -0
- data/spec/ffi-tk/widget/menubutton.rb +12 -0
- data/spec/ffi-tk/widget/message.rb +12 -0
- data/spec/ffi-tk/widget/panedwindow.rb +12 -0
- data/spec/ffi-tk/widget/radiobutton.rb +12 -0
- data/spec/ffi-tk/widget/root.rb +9 -0
- data/spec/ffi-tk/widget/scale.rb +12 -0
- data/spec/ffi-tk/widget/scrollbar.rb +12 -0
- data/spec/ffi-tk/widget/spinbox.rb +12 -0
- data/spec/ffi-tk/widget/text.rb +246 -0
- data/spec/ffi-tk/widget/toplevel.rb +12 -0
- data/spec/helper.rb +3 -0
- data/tasks/authors.rake +21 -0
- data/tasks/bacon.rake +66 -0
- data/tasks/changelog.rake +18 -0
- data/tasks/gem.rake +22 -0
- data/tasks/gem_setup.rake +113 -0
- data/tasks/grancher.rake +12 -0
- data/tasks/manifest.rake +4 -0
- data/tasks/rcov.rake +17 -0
- data/tasks/release.rake +65 -0
- data/tasks/reversion.rake +8 -0
- data/tasks/setup.rake +12 -0
- data/tasks/ycov.rake +84 -0
- metadata +261 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module Tk
|
|
2
|
+
# Create and manipulate message widgets
|
|
3
|
+
#
|
|
4
|
+
# A message is a widget that displays a textual string.
|
|
5
|
+
#
|
|
6
|
+
# A message widget has three special features.
|
|
7
|
+
#
|
|
8
|
+
# First, it breaks up its string into lines in order to produce a given aspect
|
|
9
|
+
# ratio for the window.
|
|
10
|
+
# The line breaks are chosen at word boundaries wherever possible (if not even
|
|
11
|
+
# a single word would fit on a line, then the word will be split across
|
|
12
|
+
# lines). Newline characters in the string will force line breaks; they can be
|
|
13
|
+
# used, for example, to leave blank lines in the display.
|
|
14
|
+
#
|
|
15
|
+
# The second feature of a message widget is justification.
|
|
16
|
+
# The text may be displayed left-justified (each line starts at the left side
|
|
17
|
+
# of the window), centered on a line-by-line basis, or right-justified (each
|
|
18
|
+
# line ends at the right side of the window).
|
|
19
|
+
#
|
|
20
|
+
# The third feature of a message widget is that it handles control characters
|
|
21
|
+
# and non-printing characters specially.
|
|
22
|
+
# Tab characters are replaced with enough blank space to line up on the next
|
|
23
|
+
# 8-character boundary.
|
|
24
|
+
# Newlines cause line breaks.
|
|
25
|
+
# Other control characters (ASCII code less than 0x20) and characters not
|
|
26
|
+
# defined in the font are displayed as a four-character sequence \xhh where hh
|
|
27
|
+
# is the two-digit hexadecimal number corresponding to the character.
|
|
28
|
+
# In the unusual case where the font does not contain all of the characters in
|
|
29
|
+
# "0123456789abcdef\x" then control characters and undefined characters
|
|
30
|
+
# are not displayed at all.
|
|
31
|
+
class Message < Widget
|
|
32
|
+
include Cget, Configure
|
|
33
|
+
|
|
34
|
+
def self.tk_command; 'message'; end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
module Tk
|
|
2
|
+
class PanedWindow < Widget
|
|
3
|
+
include Cget, Configure
|
|
4
|
+
|
|
5
|
+
def self.tk_command; 'panedwindow'; end
|
|
6
|
+
|
|
7
|
+
# Add one or more windows to the panedwindow, each in a separate pane.
|
|
8
|
+
# The arguments consist of the names of one or more windows followed by
|
|
9
|
+
# pairs of arguments that specify how to manage the windows.
|
|
10
|
+
# Option may have any of the values accepted by the configure subcommand.
|
|
11
|
+
def add(window, *arguments)
|
|
12
|
+
options, windows = arguments.partition{|arg| arg.respond_to?(:to_tcl_options) }
|
|
13
|
+
|
|
14
|
+
if option = options.first
|
|
15
|
+
execute(:add, window, *windows, option.to_tcl_options)
|
|
16
|
+
else
|
|
17
|
+
execute(:add, window, *windows)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Remove the pane containing window from the panedwindow.
|
|
22
|
+
# All geometry management options for window will be forgotten.
|
|
23
|
+
def forget(window, *windows)
|
|
24
|
+
execute_only(:forget, window, *windows)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Identify the panedwindow component underneath the point given by x and y,
|
|
28
|
+
# in window coordinates.
|
|
29
|
+
# If the point is over a sash or a sash handle, the result is a two element
|
|
30
|
+
# list containing the index of the sash or handle, and a word indicating
|
|
31
|
+
# whether it is over a sash or a handle, such as {0 sash} or {2 handle}.
|
|
32
|
+
# If the point is over any other part of the panedwindow, the result is an
|
|
33
|
+
# empty list.
|
|
34
|
+
def identify(x, y)
|
|
35
|
+
execute(:identify, x, y)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Return a list containing the x and y coordinates of the most recent proxy
|
|
39
|
+
# location.
|
|
40
|
+
def proxy_coord
|
|
41
|
+
execute(:proxy, :coord).to_a
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Remove the proxy from the display.
|
|
45
|
+
def proxy_forget
|
|
46
|
+
execute(:proxy, :forget)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Place the proxy at the given x and y coordinates.
|
|
50
|
+
def proxy_place(x, y)
|
|
51
|
+
execute(:proxy, :place, x, y)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Return the current x and y coordinate pair for the sash given by index.
|
|
55
|
+
# Index must be an integer between 0 and 1 less than the number of panes in
|
|
56
|
+
# the panedwindow.
|
|
57
|
+
# The coordinates given are those of the top left corner of the region
|
|
58
|
+
# containing the sash.
|
|
59
|
+
def sash_coord(index)
|
|
60
|
+
execute(:sash, :coord, index)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# This command computes the difference between the given coordinates and
|
|
64
|
+
# the coordinates given to the last sash mark command for the given sash.
|
|
65
|
+
# It then moves that sash the computed dif‐ ference.
|
|
66
|
+
def sash_dragto(index, x, y)
|
|
67
|
+
execute_only(:sash, :dragto, index, x, y)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Records x and y for the sash given by index; used in conjunction with
|
|
71
|
+
# later sash dragto commands to move the sash.
|
|
72
|
+
def sash_mark(index, x, y)
|
|
73
|
+
execute(:sash, :mark, index, x, y)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# Place the sash given by index at the given coordinates.
|
|
77
|
+
def sash_place(index, x, y)
|
|
78
|
+
execute(:sash, :place, index, x, y)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Query a management option for window.
|
|
82
|
+
# Option may be any value allowed by the paneconfigure subcommand.
|
|
83
|
+
def panecget(window, option)
|
|
84
|
+
execute(:panecget, window, option.to_tcl_option)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# Query or modify the management options for window.
|
|
88
|
+
# If no option is specified, returns a list describing all of the available
|
|
89
|
+
# options for pathName (see Tk_ConfigureInfo for information on the format
|
|
90
|
+
# of this list).
|
|
91
|
+
# If option is specified with no value, then the command returns a list
|
|
92
|
+
# describing the one named option (this list will be identical to the
|
|
93
|
+
# corresponding sublist of the value returned if no option is specified).
|
|
94
|
+
# If one or more option-value pairs are specified, then the command
|
|
95
|
+
# modifies the given widget option(s) to have the given value(s); in this
|
|
96
|
+
# case the command returns an empty string.
|
|
97
|
+
# The following options are supported: -after window Insert the window
|
|
98
|
+
# after the window specified.
|
|
99
|
+
# window should be the name of a window already managed by pathName.
|
|
100
|
+
# -before window Insert the window before the window specified.
|
|
101
|
+
# window should be the name of a window already managed by pathName.
|
|
102
|
+
# -height size Specify a height for the window.
|
|
103
|
+
# The height will be the outer dimension of the window including its
|
|
104
|
+
# border, if any.
|
|
105
|
+
# If size is an empty string, or if -height is not specified, then the
|
|
106
|
+
# height requested internally by the window will be used initially; the
|
|
107
|
+
# height may later be adjusted by the movement of sashes in the
|
|
108
|
+
# panedwindow. Size may be any value accepted by Tk_GetPixels.
|
|
109
|
+
# -hide boolean Controls the visibility of a pane.
|
|
110
|
+
# When the boolean is true (according to Tcl_GetBoolean) the pane will not
|
|
111
|
+
# be visible, but it will still be maintained in the list of panes.
|
|
112
|
+
# │ -minsize n Specifies that the size of the window cannot be made less
|
|
113
|
+
# than n.
|
|
114
|
+
# This constraint only affects the size of the widget in the paned
|
|
115
|
+
# dimension — the x dimension for horizontal panedwin‐ dows, the y
|
|
116
|
+
# dimension for vertical panedwindows.
|
|
117
|
+
# May be any value accepted by Tk_GetPixels.
|
|
118
|
+
# -padx n Specifies a non-negative value indicating how much extra space to
|
|
119
|
+
# leave on each side of the window in the X-direction.
|
|
120
|
+
# The value may have any of the forms accepted by Tk_GetPixels.
|
|
121
|
+
# -pady n Specifies a non-negative value indicating how much extra space to
|
|
122
|
+
# leave on each side of the window in the Y-direction.
|
|
123
|
+
# The value may have any of the forms accepted by Tk_GetPixels.
|
|
124
|
+
# -sticky style If a window's pane is larger than the requested dimensions
|
|
125
|
+
# of the window, this option may be used to position (or stretch) the
|
|
126
|
+
# window within its pane.
|
|
127
|
+
# Style is a string that contains zero or more of the characters n, s, e or
|
|
128
|
+
# w. The string can optionally contains spaces or commas, but they are
|
|
129
|
+
# ignored. Each letter refers to a side (north, south, east, or west) that
|
|
130
|
+
# the window will “stick” to.
|
|
131
|
+
# If both n and s (or e and w) are specified, the window will be stretched
|
|
132
|
+
# to fill the entire height (or width) of its cavity.
|
|
133
|
+
# -stretch when Controls how extra space is allocated to each of the panes.
|
|
134
|
+
# When is one of always, first, last, middle, and never.
|
|
135
|
+
# The panedwindow will calculate the required size of all its panes.
|
|
136
|
+
# │ Any remaining (or deficit) space will be distributed to those panes
|
|
137
|
+
# marked for stretching.
|
|
138
|
+
# The space will be distributed based on each panes current ratio of the
|
|
139
|
+
# whole. The when values │ have the following definition: │ always │ This
|
|
140
|
+
# pane will always stretch.
|
|
141
|
+
# │ first │ Only if this pane is the first pane (left-most or top-most)
|
|
142
|
+
# will it stretch.
|
|
143
|
+
# │ last │ Only if this pane is the last pane (right-most or bottom-most)
|
|
144
|
+
# will it stretch.
|
|
145
|
+
# This is the default value.
|
|
146
|
+
# │ middle │ Only if this pane is not the first or last pane will it
|
|
147
|
+
# stretch. │ never │ This pane will never stretch.
|
|
148
|
+
# │ -width size Specify a width for the window.
|
|
149
|
+
# The width will be the outer dimension of the window including its border,
|
|
150
|
+
# if any.
|
|
151
|
+
# If size is an empty string, or if -width is not specified, then the width
|
|
152
|
+
# requested internally by the window will be used initially; the width may
|
|
153
|
+
# later be adjusted by the movement of sashes in the panedwindow.
|
|
154
|
+
# Size may be any value accepted by Tk_Get‐ Pixels.
|
|
155
|
+
def paneconfigure(window, options = None)
|
|
156
|
+
common_configure([:paneconfigure, window], options)
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
# Returns an ordered list of the widgets managed by pathName.
|
|
160
|
+
def panes
|
|
161
|
+
execute(:panes).to_a
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
module Tk
|
|
2
|
+
class RadioButton < Button
|
|
3
|
+
include Cget, Configure
|
|
4
|
+
|
|
5
|
+
def self.tk_command; 'radiobutton'; end
|
|
6
|
+
|
|
7
|
+
# Deselects the radiobutton and sets the associated variable to an empty
|
|
8
|
+
# string. If this radiobutton was not currently selected, the command has
|
|
9
|
+
# no effect.
|
|
10
|
+
def deselect
|
|
11
|
+
execute_only(:deselect)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Flashes the radiobutton.
|
|
15
|
+
# This is accomplished by redisplaying the radiobutton several times,
|
|
16
|
+
# alternating between active and normal colors.
|
|
17
|
+
# At the end of the flash the radiobutton is left in the same normal/active
|
|
18
|
+
# state as when the command was invoked.
|
|
19
|
+
# This command is ignored if the radiobutton's state is disabled.
|
|
20
|
+
def flash
|
|
21
|
+
execute_only(:flash)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Does just what would have happened if the user invoked the radiobutton
|
|
25
|
+
# with the mouse: selects the button and invokes its associated Tcl
|
|
26
|
+
# command, if there is one.
|
|
27
|
+
# The return value is the return value from the Tcl command, or an empty
|
|
28
|
+
# string if there is no command associated with the radiobutton.
|
|
29
|
+
# This command is ignored if the radiobutton's state is disabled.
|
|
30
|
+
def invoke
|
|
31
|
+
execute_only(:invoke)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Selects the radiobutton and sets the associated variable to the value
|
|
35
|
+
# corresponding to this widget.
|
|
36
|
+
# pressed over a radiobutton, the button activates whenever the mouse
|
|
37
|
+
# pointer is inside the button, and deactivates whenever the mouse pointer
|
|
38
|
+
# leaves the button.
|
|
39
|
+
def select
|
|
40
|
+
execute_only(:select)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
module Tk
|
|
2
|
+
class Scale < Widget
|
|
3
|
+
include Cget, Configure
|
|
4
|
+
|
|
5
|
+
def self.tk_command; 'scale'; end
|
|
6
|
+
|
|
7
|
+
# Returns a list whose elements are the x and y coordinates of the point
|
|
8
|
+
# along the centerline of the trough that corresponds to value.
|
|
9
|
+
# If value is omitted then the scale's current value is used.
|
|
10
|
+
def coords(value = None)
|
|
11
|
+
execute(:coords, value)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# If x and y are omitted, returns the current value of the scale.
|
|
15
|
+
# If x and y are specified, they give pixel coordinates within the widget;
|
|
16
|
+
# the command returns the scale value corresponding to the given pixel.
|
|
17
|
+
# Only one of x or y is used: for horizontal scales y is ignored, and for
|
|
18
|
+
# vertical scales x is ignored.
|
|
19
|
+
def get(x = None, y = None)
|
|
20
|
+
execute(:get, x, y)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Returns a string indicating what part of the scale lies under the
|
|
24
|
+
# coordinates given by x and y.
|
|
25
|
+
# A return value of slider means that the point is over the slider; trough1
|
|
26
|
+
# means that the point is over the portion of the slider above or to the
|
|
27
|
+
# left of the slider; and trough2 means that the point is over the portion
|
|
28
|
+
# of the slider below or to the right of the slider.
|
|
29
|
+
# If the point is not over one of these elements, an empty string is
|
|
30
|
+
# returned.
|
|
31
|
+
def identify(x, y)
|
|
32
|
+
execute(:identify, x, y)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# This command is invoked to change the current value of the scale, and
|
|
36
|
+
# hence the position at which the slider is displayed.
|
|
37
|
+
# Value gives the new value for the scale.
|
|
38
|
+
# The command has no effect if the scale is disabled.
|
|
39
|
+
# the button is held down, the action auto-repeats.
|
|
40
|
+
def set(value)
|
|
41
|
+
execute(:set, value)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
module Tk
|
|
2
|
+
class Scrollbar < Widget
|
|
3
|
+
include Cget, Configure
|
|
4
|
+
|
|
5
|
+
def self.tk_command; 'scrollbar'; end
|
|
6
|
+
|
|
7
|
+
# Marks the element indicated by element as active, which causes it to be
|
|
8
|
+
# displayed as specified by the activeBackground and activeRelief options.
|
|
9
|
+
# The only element values understood by this command are arrow1, slider, or
|
|
10
|
+
# arrow2. If any other value is specified then no element of the scrollbar
|
|
11
|
+
# will be active.
|
|
12
|
+
# If element is not specified, the command returns the name of the element
|
|
13
|
+
# that is currently active, or an empty string if no element is
|
|
14
|
+
# active.
|
|
15
|
+
def activate(element = None)
|
|
16
|
+
execute(:activate, element).to_s?
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Returns a real number indicating the fractional change in the scrollbar
|
|
20
|
+
# setting that corresponds to a given change in slider position.
|
|
21
|
+
# For example, if the scrollbar is horizontal, the result indicates how
|
|
22
|
+
# much the scrollbar setting must change to move the slider deltaX pixels
|
|
23
|
+
# to the right (deltaY is ignored in this case).
|
|
24
|
+
# If the scrollbar is vertical, the result indicates how much the scrollbar
|
|
25
|
+
# setting must change to move the slider deltaY pixels down.
|
|
26
|
+
# The arguments and the result may be zero or negative.
|
|
27
|
+
def delta(delta_x, delta_y)
|
|
28
|
+
execute(:delta, delta_x, delta_y)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Returns a real number between 0 and 1 indicating where the point given by
|
|
32
|
+
# x and y lies in the trough area of the scrollbar.
|
|
33
|
+
# The value 0 corresponds to the top or left of the trough, the value 1
|
|
34
|
+
# corresponds to the bottom or right, 0.5 corresponds to the middle, and so
|
|
35
|
+
# on. X and y must be pixel coordinates relative to the scrollbar widget.
|
|
36
|
+
# If x and y refer to a point outside the trough, the closest point in the
|
|
37
|
+
# trough is used.
|
|
38
|
+
def fraction(x, y)
|
|
39
|
+
execute(:fraction, x, y)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Returns the scrollbar settings in the form of a list whose elements are
|
|
43
|
+
# the arguments to the most recent set widget command.
|
|
44
|
+
def get
|
|
45
|
+
execute(:get)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Returns the name of the element under the point given by x and y (such as
|
|
49
|
+
# arrow1), or an empty string if the point does not lie in any element of
|
|
50
|
+
# the scrollbar.
|
|
51
|
+
# X and y must be pixel coordinates relative to the scrollbar widget.
|
|
52
|
+
def identify(x, y)
|
|
53
|
+
execute(:identify, x, y)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# This command is invoked by the scrollbar's associated widget to tell the
|
|
57
|
+
# scrollbar about the current view in the widget.
|
|
58
|
+
# The command takes two arguments, each of which is a real fraction between
|
|
59
|
+
# 0 and 1.
|
|
60
|
+
# The fractions describe the range of the document that is visible in the
|
|
61
|
+
# associated widget.
|
|
62
|
+
# For example, if first is 0.2 and last is 0.4, it means that the first
|
|
63
|
+
# part of the document visible in the window is 20% of the way through the
|
|
64
|
+
# document, and the last visible part is 40% of the way through.
|
|
65
|
+
# Fraction is a real number between 0 and 1.
|
|
66
|
+
# The widget should adjust its view so that the point given by fraction
|
|
67
|
+
# appears at the beginning of the widget.
|
|
68
|
+
# If fraction is 0 it refers to the beginning of the document.
|
|
69
|
+
# 1.0 refers to the end of the document, 0.333 refers to a point one-third
|
|
70
|
+
# of the way through the document, and so on.
|
|
71
|
+
# The widget should adjust its view by number units.
|
|
72
|
+
# The units are defined in whatever way makes sense for the widget, such as
|
|
73
|
+
# characters or lines in a text widget.
|
|
74
|
+
# Number is either 1, which means one unit should scroll off the top or
|
|
75
|
+
# left of the window, or -1, which means that one unit should scroll off
|
|
76
|
+
# the bottom or right of the window.
|
|
77
|
+
# The widget should adjust its view by number pages.
|
|
78
|
+
# It is up to the widget to define the meaning of a page; typically it is
|
|
79
|
+
# slightly less than what fits in the window, so that there is a slight
|
|
80
|
+
# overlap between the old and new views.
|
|
81
|
+
# Number is either 1, which means the next page should become visible, or
|
|
82
|
+
# -1, which means that the previous page should become visible.
|
|
83
|
+
#
|
|
84
|
+
# In this form the arguments are all integers.
|
|
85
|
+
# TotalUnits gives the total size of the object being displayed in the
|
|
86
|
+
# associated widget.
|
|
87
|
+
# The meaning of one unit depends on the associated widget; for example, in
|
|
88
|
+
# a text editor widget units might correspond to lines of text.
|
|
89
|
+
# WindowUnits indicates the total number of units that can fit in the
|
|
90
|
+
# associated window at one time.
|
|
91
|
+
# FirstUnit and lastUnit give the indices of the first and last units
|
|
92
|
+
# currently visible in the associated window (zero corresponds to the first
|
|
93
|
+
# unit of the object).
|
|
94
|
+
# Unit is an integer that indicates what should appear at the top or left
|
|
95
|
+
# of the associated widget's window.
|
|
96
|
+
# It has the same meaning as the firstUnit and lastUnit arguments to the
|
|
97
|
+
# set widget command.
|
|
98
|
+
# the action auto-repeats.
|
|
99
|
+
# held down, the action auto-repeats.
|
|
100
|
+
# the mouse button is released.
|
|
101
|
+
# held down, the action auto-repeats.
|
|
102
|
+
# the action auto-repeats.
|
|
103
|
+
# button 2 is pressed over one of the arrows, it causes the same behavior
|
|
104
|
+
# as pressing button 1.
|
|
105
|
+
# the view changes to the very bottom (right) of the document; if the mouse
|
|
106
|
+
# is anywhere else then the button press has no effect.
|
|
107
|
+
# toplevel .tl text .tl.t -yscrollcommand {.tl.s set} scrollbar .tl.s
|
|
108
|
+
# -command {.tl.t yview} grid .tl.t .tl.s -sticky nsew grid columnconfigure
|
|
109
|
+
# .tl 0 -weight 1 grid rowconfigure .tl 0 -weight 1
|
|
110
|
+
def set(first, second, third = None, fourth = None)
|
|
111
|
+
execute(:set, first, second, third, fourth)
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
module Tk
|
|
2
|
+
class Spinbox < Widget
|
|
3
|
+
include Cget, Configure
|
|
4
|
+
|
|
5
|
+
def self.tk_command; 'spinbox'; end
|
|
6
|
+
|
|
7
|
+
# Returns a list of four numbers describing the bounding box of the
|
|
8
|
+
# character given by index.
|
|
9
|
+
# The first two elements of the list give the x and y coordinates of the
|
|
10
|
+
# upper-left corner of the screen area covered by the character (in pixels
|
|
11
|
+
# relative to the widget) and the last two elements give the width and
|
|
12
|
+
# height of the character, in pixels.
|
|
13
|
+
# The bounding box may refer to a region outside the visible area of the
|
|
14
|
+
# window.
|
|
15
|
+
def bbox(index)
|
|
16
|
+
execute(:bbox, index).to_a(&:to_i)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Delete one or more elements of the spinbox.
|
|
20
|
+
# First is the index of the first character to delete, and last is the
|
|
21
|
+
# index of the character just after the last one to delete.
|
|
22
|
+
# If last is not specified it defaults to first+1, i.e.
|
|
23
|
+
# a single character is deleted.
|
|
24
|
+
# This command returns an empty string.
|
|
25
|
+
def delete(first, last = None)
|
|
26
|
+
execute_only(:delete, first, last)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Returns the spinbox's string.
|
|
30
|
+
def get
|
|
31
|
+
execute(:get)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Arrange for the insertion cursor to be displayed just before the
|
|
35
|
+
# character given by index.
|
|
36
|
+
def icursor(index)
|
|
37
|
+
execute_only(:icursor, index)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Returns the name of the window element corresponding to coordinates x and
|
|
41
|
+
# y in the spinbox.
|
|
42
|
+
# Return value is one of: none, buttondown, buttonup, entry.
|
|
43
|
+
def identify(x, y)
|
|
44
|
+
execute(:identify, x, y).to_sym
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Returns the numerical index corresponding to index.
|
|
48
|
+
def index(index)
|
|
49
|
+
execute(:index, index)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Insert the characters of string just before the character indicated by
|
|
53
|
+
# index. Returns an empty string.
|
|
54
|
+
def insert(index, string)
|
|
55
|
+
execute_only(:insert, index, string)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Causes the specified element, either buttondown or buttonup, to be
|
|
59
|
+
# invoked, triggering the action associated with it.
|
|
60
|
+
def invoke(element)
|
|
61
|
+
execute(:invoke, element)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Records x and the current view in the spinbox window; used in conjunction
|
|
65
|
+
# with later scan dragto commands.
|
|
66
|
+
# Typically this command is associated with a mouse button press in the
|
|
67
|
+
# widget.
|
|
68
|
+
def scan_mark(x)
|
|
69
|
+
execute_only(:scan, :mark, x)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# This command computes the difference between its x argument and the x
|
|
73
|
+
# argument to the last scan mark command for the widget.
|
|
74
|
+
# It then adjusts the view left or right by 10 times the difference in
|
|
75
|
+
# x-coordinates. This command is typically associated with mouse motion
|
|
76
|
+
# events in the widget, to produce the effect of dragging the spinbox at
|
|
77
|
+
# high speed through the window.
|
|
78
|
+
def scan_dragto(x)
|
|
79
|
+
execute_only(:scan, :dragto, x)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# Locate the end of the selection nearest to the character given by index,
|
|
83
|
+
# and adjust that end of the selection to be at index (i.e.
|
|
84
|
+
# including but not going beyond index).
|
|
85
|
+
# The other end of the selection is made the anchor point for future select
|
|
86
|
+
# to commands.
|
|
87
|
+
# If the selection is not currently in the spinbox, then a new selection is
|
|
88
|
+
# created to include the characters between index and the most recent
|
|
89
|
+
# selection anchor point, inclusive.
|
|
90
|
+
def selection_adjust(index)
|
|
91
|
+
execute_only(:selection, :adjust, index)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# Clear the selection if it is currently in this widget.
|
|
95
|
+
# If the selection is not in this widget then the command has no effect.
|
|
96
|
+
def selection_clear
|
|
97
|
+
execute_only(:selection, :clear)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# Sets or gets the currently selected element.
|
|
101
|
+
# If a spinbutton element is specified, it will be displayed depressed.
|
|
102
|
+
def selection_element(element = None)
|
|
103
|
+
execute(:selection, :element, element)
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# Set the selection anchor point to just before the character given by
|
|
107
|
+
# index. Does not change the selection.
|
|
108
|
+
def selection_from(index)
|
|
109
|
+
execute_only(:selection, :from, index)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# Returns 1 if there is are characters selected in the spinbox, 0 if
|
|
113
|
+
# nothing is selected.
|
|
114
|
+
def selection_present
|
|
115
|
+
execute(:selection, :present).to_boolean
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
# Sets the selection to include the characters starting with the one
|
|
119
|
+
# indexed by start and ending with the one just before end.
|
|
120
|
+
# If end refers to the same character as start or an earlier one, then the
|
|
121
|
+
# spinbox's selection is cleared.
|
|
122
|
+
def selection_range(from, to)
|
|
123
|
+
execute(:selection, :range, from, to)
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
# If index is before the anchor point, set the selection to the characters
|
|
127
|
+
# from index up to but not including the anchor point.
|
|
128
|
+
# If index is the same as the anchor point, do nothing.
|
|
129
|
+
# If index is after the anchor point, set the selection to the characters
|
|
130
|
+
# from the anchor point up to but not including index.
|
|
131
|
+
# The anchor point is determined by the most recent select from or select
|
|
132
|
+
# adjust command in this widget.
|
|
133
|
+
# If the selection is not in this widget then a new selection is created
|
|
134
|
+
# using the most recent anchor point specified for the widget.
|
|
135
|
+
# Returns an empty string.
|
|
136
|
+
def selection_to(index)
|
|
137
|
+
execute(:selection, :to, index)
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
# If string is specified, the spinbox will try and set it to this value,
|
|
141
|
+
# otherwise it just returns the spinbox's string.
|
|
142
|
+
# If validation is on, it will occur when setting the string.
|
|
143
|
+
def set(string = None)
|
|
144
|
+
if None == string
|
|
145
|
+
execute(:set)
|
|
146
|
+
else
|
|
147
|
+
execute_only(:set, string)
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
# This command is used to force an evaluation of the validateCommand
|
|
152
|
+
# independent of the conditions specified by the validate option.
|
|
153
|
+
# This is done by temporarily setting the validate option to all.
|
|
154
|
+
# It returns 0 or 1.
|
|
155
|
+
def validate
|
|
156
|
+
execute(:validate).to_boolean
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
# Returns a list containing two elements.
|
|
160
|
+
# Each element is a real fraction between 0 and 1; together they describe
|
|
161
|
+
# the horizontal span that is visible in the window.
|
|
162
|
+
# For example, if the first element is .2 and the second element is .6, 20%
|
|
163
|
+
# of the spinbox's text is off-screen to the left, the middle 40% is
|
|
164
|
+
# visible in the window, and 40% of the text is off-screen to the right.
|
|
165
|
+
# These are the same values passed to scrollbars via the -xscrollcommand
|
|
166
|
+
# option.
|
|
167
|
+
#
|
|
168
|
+
# Adjusts the view in the window so that the character given by index is
|
|
169
|
+
# displayed at the left edge of the window.
|
|
170
|
+
def xview(index = None)
|
|
171
|
+
if None == index
|
|
172
|
+
execute(:xview)
|
|
173
|
+
else
|
|
174
|
+
execute_only(:xview, index)
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
# Adjusts the view in the window so that the character fraction of the way
|
|
179
|
+
# through the text appears at the left edge of the window.
|
|
180
|
+
# Fraction must be a fraction between 0 and 1.
|
|
181
|
+
def xview_moveto(fraction)
|
|
182
|
+
execute(:xview, :moveto, fraction)
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
# This command shifts the view in the window left or right according to
|
|
186
|
+
# number and what.
|
|
187
|
+
# Number must be an integer.
|
|
188
|
+
# What must be either units or pages or an abbreviation of one of these.
|
|
189
|
+
# If what is units, the view adjusts left or right by number average-width
|
|
190
|
+
# characters on the display; if it is pages then the view adjusts by number
|
|
191
|
+
# screenfuls. If number is negative then characters farther to the left
|
|
192
|
+
# become visible; if it is positive then characters farther to the right
|
|
193
|
+
# become visible.
|
|
194
|
+
def xview_scroll(number, what)
|
|
195
|
+
execute(:xview, :scroll, number, what)
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
end
|