ffi-tk 2010.01.02 → 2010.02
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/AUTHORS +1 -1
- data/CHANGELOG +130 -0
- data/MANIFEST +3 -0
- data/example/tile/themes.rb +13 -0
- data/ffi-tk.gemspec +3 -3
- data/lib/ffi-tk/command/bind.rb +21 -4
- data/lib/ffi-tk/command/bindtags.rb +6 -2
- data/lib/ffi-tk/command/clipboard.rb +7 -2
- data/lib/ffi-tk/command/event.rb +2 -2
- data/lib/ffi-tk/command/focus.rb +6 -6
- data/lib/ffi-tk/command/grab.rb +2 -2
- data/lib/ffi-tk/command/grid.rb +21 -8
- data/lib/ffi-tk/command/place.rb +2 -6
- data/lib/ffi-tk/command/scrollable.rb +19 -19
- data/lib/ffi-tk/command/selection.rb +3 -3
- data/lib/ffi-tk/command/tk_cmd.rb +4 -3
- data/lib/ffi-tk/command/winfo.rb +2 -2
- data/lib/ffi-tk/core_extensions.rb +6 -3
- data/lib/ffi-tk/event/data.rb +34 -3
- data/lib/ffi-tk/event/handler.rb +11 -2
- data/lib/ffi-tk/ffi/tcl/interp.rb +3 -0
- data/lib/ffi-tk/ffi/tk.rb +39 -0
- data/lib/ffi-tk/tk.rb +2 -2
- data/lib/ffi-tk/version.rb +1 -1
- data/lib/ffi-tk/widget/canvas.rb +1 -1
- data/lib/ffi-tk/widget/checkbutton.rb +3 -3
- data/lib/ffi-tk/widget/listbox.rb +3 -3
- data/lib/ffi-tk/widget/menu.rb +5 -6
- data/lib/ffi-tk/widget/panedwindow.rb +95 -69
- data/lib/ffi-tk/widget/text.rb +42 -10
- data/lib/ffi-tk/widget/tile/notebook.rb +17 -10
- data/lib/ffi-tk/widget/tile/panedwindow.rb +53 -1
- data/lib/ffi-tk/widget/tile/scrollbar.rb +0 -2
- data/lib/ffi-tk/widget/tile/sizegrip.rb +2 -2
- data/lib/ffi-tk/widget/tile/style.rb +1 -1
- data/lib/ffi-tk/widget/tile/treeview.rb +7 -3
- data/spec/ffi-tk/command/bind.rb +25 -0
- metadata +5 -2
@@ -35,9 +35,9 @@ module Tk
|
|
35
35
|
end
|
36
36
|
|
37
37
|
# Retrieves the value of selection from window's display and returns it as a
|
38
|
-
# result. Selection defaults to PRIMARY and window defaults to
|
38
|
+
# result. Selection defaults to PRIMARY and window defaults to ".".
|
39
39
|
# Type specifies the form in which the selection is to be returned (the
|
40
|
-
# desired
|
40
|
+
# desired "target" for conversion, in ICCCM terminology), and should be
|
41
41
|
# an atom name such as STRING or FILE_NAME; see the Inter-Client
|
42
42
|
# Communication Conventions Manual for complete details.
|
43
43
|
# Type defaults to STRING.
|
@@ -129,4 +129,4 @@ module Tk
|
|
129
129
|
end
|
130
130
|
end
|
131
131
|
end
|
132
|
-
end
|
132
|
+
end
|
@@ -51,8 +51,9 @@ module Tk
|
|
51
51
|
# application (the name that may be used in send commands to communicate
|
52
52
|
# with the application).
|
53
53
|
# If newName is specified, then the name of the application is changed to
|
54
|
-
# newName.
|
55
|
-
#
|
54
|
+
# newName.
|
55
|
+
# If the given name is already in use, then a suffix of the form "#2" or
|
56
|
+
# "#3" is appended in order to make the name unique.
|
56
57
|
# The command's result is the name actually chosen.
|
57
58
|
# newName should not start with a capital letter.
|
58
59
|
# This will interfere with option processing, since names starting with
|
@@ -90,7 +91,7 @@ module Tk
|
|
90
91
|
# If the window argument is omitted, it defaults to the main window.
|
91
92
|
# If the number argument is omitted, the current value of the scaling
|
92
93
|
# factor is returned.
|
93
|
-
# A
|
94
|
+
# A "point" is a unit of measurement equal to 1/72 inch.
|
94
95
|
# A scaling factor of 1.0 corresponds to 1 pixel per point, which is
|
95
96
|
# equivalent to a standard 72 dpi monitor.
|
96
97
|
# A scaling factor of 1.25 would mean 1.25 pixels per point, which is the
|
data/lib/ffi-tk/command/winfo.rb
CHANGED
@@ -434,7 +434,7 @@ module Tk
|
|
434
434
|
# Returns the number of pixels in window corresponding to the distance
|
435
435
|
# given by number.
|
436
436
|
# Number may be specified in any of the forms acceptable to Tk_GetPixels,
|
437
|
-
# such as
|
437
|
+
# such as "2.0c" or "1i".
|
438
438
|
# The result is rounded to the nearest integer value; for a fractional
|
439
439
|
# result, use winfo fpixels.
|
440
440
|
def pixels(window, number)
|
@@ -665,4 +665,4 @@ module Tk
|
|
665
665
|
Tk.execute(:winfo, :y, window)
|
666
666
|
end
|
667
667
|
end
|
668
|
-
end
|
668
|
+
end
|
@@ -14,6 +14,8 @@ module Tk
|
|
14
14
|
TclString.new('{' << map(&:to_tcl).compact.join(' ') << '}')
|
15
15
|
end
|
16
16
|
|
17
|
+
# try to convert to a Hash.
|
18
|
+
# it may return an Array if this contains none.
|
17
19
|
def tcl_options_to_hash(hints = {})
|
18
20
|
if first.respond_to?(:to_ary)
|
19
21
|
hash = {}
|
@@ -36,9 +38,8 @@ module Tk
|
|
36
38
|
end
|
37
39
|
|
38
40
|
hash
|
39
|
-
|
41
|
+
elsif first =~ /^-/
|
40
42
|
::Hash[each_slice(2).map{|key, value|
|
41
|
-
|
42
43
|
key = key.sub(/^-/, '').to_sym
|
43
44
|
|
44
45
|
case hint = hints[key]
|
@@ -52,6 +53,8 @@ module Tk
|
|
52
53
|
[key, value]
|
53
54
|
end
|
54
55
|
}]
|
56
|
+
else
|
57
|
+
self
|
55
58
|
end
|
56
59
|
end
|
57
60
|
end
|
@@ -95,7 +98,7 @@ module Tk
|
|
95
98
|
|
96
99
|
module String
|
97
100
|
def to_tcl
|
98
|
-
TclString.new('"' << gsub(/[\[\]$"\\]/, '\\\\\&') << '"')
|
101
|
+
TclString.new('"' << gsub(/[\[\]{}$"\\]/, '\\\\\&') << '"')
|
99
102
|
end
|
100
103
|
|
101
104
|
def to_tcl_option
|
data/lib/ffi-tk/event/data.rb
CHANGED
@@ -33,8 +33,8 @@ module Tk
|
|
33
33
|
['%K', :String, :keysym ],
|
34
34
|
['%N', :Integer, :keysym_number ],
|
35
35
|
['%P', :String, :property ],
|
36
|
-
['%R', :
|
37
|
-
['%S', :
|
36
|
+
['%R', :String, :root ],
|
37
|
+
['%S', :String, :subwindow ],
|
38
38
|
['%T', :Integer, :type ],
|
39
39
|
['%W', :String, :window_path ],
|
40
40
|
['%X', :Integer, :x_root ],
|
@@ -45,7 +45,8 @@ module Tk
|
|
45
45
|
super id, sequence
|
46
46
|
|
47
47
|
PROPERTIES.each do |code, conv, name|
|
48
|
-
|
48
|
+
value = properties.shift
|
49
|
+
converted = __send__(conv, value)
|
49
50
|
next if converted == '??'
|
50
51
|
self[name] = converted
|
51
52
|
end
|
@@ -54,6 +55,36 @@ module Tk
|
|
54
55
|
def call
|
55
56
|
Handler.invoke(id, self) if id
|
56
57
|
end
|
58
|
+
|
59
|
+
# Try to resend the event with as much information preserved as possible.
|
60
|
+
# Unfortunately that doesn't seem to be easy.
|
61
|
+
def resend(widget, virtual, changes = {})
|
62
|
+
original = {}
|
63
|
+
members.each do |name|
|
64
|
+
value = self[name]
|
65
|
+
|
66
|
+
case name
|
67
|
+
when :id, :sequence, :border_width, :button, :count, :focus, :height,
|
68
|
+
:keycode, :keysym, :keysym_number, :mode, :mousewheel_delta,
|
69
|
+
:override_redirect, :place, :property, :root, :send_event,
|
70
|
+
:subwindow, :type, :unicode, :width, :window, :window_path
|
71
|
+
when :x_root
|
72
|
+
original[:rootx] = value
|
73
|
+
when :y_root
|
74
|
+
original[:rooty] = value
|
75
|
+
when :detail
|
76
|
+
original[name] = value if value
|
77
|
+
else
|
78
|
+
original[name] = value
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
Event.generate(widget, virtual, original.merge(changes))
|
83
|
+
end
|
84
|
+
|
85
|
+
def widget
|
86
|
+
Tk.widgets[window_path]
|
87
|
+
end
|
57
88
|
end
|
58
89
|
end
|
59
90
|
end
|
data/lib/ffi-tk/event/handler.rb
CHANGED
@@ -4,6 +4,7 @@ module Tk
|
|
4
4
|
data = Data::PROPERTIES.transpose[0].join(' ').gsub(/%/, '%%')
|
5
5
|
@callback = %(bind %s %s { ::RubyFFI::event %d %s #{data} })
|
6
6
|
@store = []
|
7
|
+
@bound = {}
|
7
8
|
@mutex = Mutex.new
|
8
9
|
|
9
10
|
module_function
|
@@ -27,6 +28,7 @@ module Tk
|
|
27
28
|
def register(tag, sequence, &block)
|
28
29
|
id = register_block(block)
|
29
30
|
Tk.interp.eval(@callback % [tag, sequence, id, sequence])
|
31
|
+
@bound[[tag, sequence]] = block
|
30
32
|
id
|
31
33
|
end
|
32
34
|
|
@@ -36,8 +38,15 @@ module Tk
|
|
36
38
|
id
|
37
39
|
end
|
38
40
|
|
39
|
-
def unregister(
|
40
|
-
|
41
|
+
def unregister(tag, sequence)
|
42
|
+
key = [tag, sequence]
|
43
|
+
|
44
|
+
if block = @bound[key]
|
45
|
+
Tk.execute(:bind, tag, sequence, nil)
|
46
|
+
id = @store.index(block)
|
47
|
+
@store[id] = nil
|
48
|
+
@bound.delete(key)
|
49
|
+
end
|
41
50
|
end
|
42
51
|
end
|
43
52
|
end
|
@@ -30,6 +30,9 @@ module FFI
|
|
30
30
|
Tcl.new_string_obj(ruby_obj, ruby_obj.bytesize)
|
31
31
|
when Fixnum
|
32
32
|
Tcl.new_int_obj(ruby_obj)
|
33
|
+
when Exception
|
34
|
+
string = [ruby_obj.message, *ruby_obj.backtrace].join("\n")
|
35
|
+
Tcl.new_string_obj(string, string.bytesize)
|
33
36
|
else
|
34
37
|
if ruby_obj.respond_to?(:to_tcl)
|
35
38
|
ruby_obj.to_tcl
|
data/lib/ffi-tk/ffi/tk.rb
CHANGED
@@ -3,11 +3,50 @@ module FFI
|
|
3
3
|
extend FFI::Library
|
4
4
|
ffi_lib 'libtk8.5.so', 'libtk.so', *::Tk::LIBPATH[:tk]
|
5
5
|
|
6
|
+
class XColor < FFI::Struct
|
7
|
+
layout(
|
8
|
+
:pixel, :ulong,
|
9
|
+
:red, :ushort,
|
10
|
+
:green, :ushort,
|
11
|
+
:blue, :ushort,
|
12
|
+
:flags, :char,
|
13
|
+
:pad, :char
|
14
|
+
)
|
15
|
+
|
16
|
+
def red
|
17
|
+
self[:red]
|
18
|
+
end
|
19
|
+
|
20
|
+
def green
|
21
|
+
self[:green]
|
22
|
+
end
|
23
|
+
|
24
|
+
def blue
|
25
|
+
self[:blue]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# This is opaque
|
30
|
+
class Window < FFI::Struct
|
31
|
+
end
|
32
|
+
|
6
33
|
attach_function :Tk_Init, [:pointer], :int
|
34
|
+
attach_function :Tk_MainWindow, [Tcl::Interp], Window
|
35
|
+
attach_function :Tk_GetColor, [Tcl::Interp, Window, name = :string], XColor
|
7
36
|
attach_function :Tk_MainLoop, [], :void
|
8
37
|
|
9
38
|
module_function
|
10
39
|
|
40
|
+
def get_color(interp, string)
|
41
|
+
if ::Tk::RUN_EVENTLOOP_ON_MAIN_THREAD
|
42
|
+
XColor.new(Tk_GetColor(interp, Tk_MainWindow(interp), string))
|
43
|
+
else
|
44
|
+
Tcl.thread_sender.thread_send{
|
45
|
+
XColor.new(Tk_GetColor(interp, Tk_MainWindow(interp), string))
|
46
|
+
}
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
11
50
|
def mainloop
|
12
51
|
if ::Tk::RUN_EVENTLOOP_ON_MAIN_THREAD
|
13
52
|
Tk_MainLoop()
|
data/lib/ffi-tk/tk.rb
CHANGED
@@ -124,7 +124,7 @@ module Tk
|
|
124
124
|
|
125
125
|
return BREAK
|
126
126
|
rescue => ex
|
127
|
-
FFI::Tcl::Interp.new(interp).obj_result = ex
|
127
|
+
FFI::Tcl::Interp.new(interp).obj_result = ex
|
128
128
|
return ERROR
|
129
129
|
end
|
130
130
|
TCL_CALLBACK = method(:tcl_callback)
|
@@ -145,7 +145,7 @@ module Tk
|
|
145
145
|
|
146
146
|
return BREAK
|
147
147
|
rescue => ex
|
148
|
-
FFI::Tcl::Interp.new(interp).obj_result = ex
|
148
|
+
FFI::Tcl::Interp.new(interp).obj_result = ex
|
149
149
|
return ERROR
|
150
150
|
end
|
151
151
|
TCL_EVENT = method(:tcl_event)
|
data/lib/ffi-tk/version.rb
CHANGED
data/lib/ffi-tk/widget/canvas.rb
CHANGED
@@ -174,7 +174,7 @@ module Tk
|
|
174
174
|
# unregister_event(name)
|
175
175
|
|
176
176
|
Event::Handler.register_custom(script) do |id|
|
177
|
-
code = "%s bind %s %s {
|
177
|
+
code = "%s bind %s %s { ::RubyFFI::event %d %s %s }"
|
178
178
|
props = Event::Data::PROPERTIES.transpose[0].join(' ')
|
179
179
|
tcl = code % [tk_pathname, tag_or_id, sequence, id, sequence, props]
|
180
180
|
Tk.interp.eval(tcl)
|
@@ -15,7 +15,7 @@ module Tk
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
# Deselects the checkbutton and sets the associated variable to its
|
18
|
+
# Deselects the checkbutton and sets the associated variable to its "off"
|
19
19
|
# value.
|
20
20
|
def deselect
|
21
21
|
execute_only(:deselect)
|
@@ -36,12 +36,12 @@ module Tk
|
|
36
36
|
# Tcl command associated with the checkbutton, if there is one.
|
37
37
|
# The return value is the return value from the Tcl command, or an empty
|
38
38
|
# string if there is no command associated with the checkbutton.
|
39
|
-
# This command is ignored if the
|
39
|
+
# This command is ignored if the checkbutton's state is disabled.
|
40
40
|
def invoke
|
41
41
|
execute_only(:invoke)
|
42
42
|
end
|
43
43
|
|
44
|
-
# Selects the checkbutton and sets the associated variable to its
|
44
|
+
# Selects the checkbutton and sets the associated variable to its "on"
|
45
45
|
# value.
|
46
46
|
def select
|
47
47
|
execute_only(:select)
|
@@ -20,7 +20,7 @@ module Tk
|
|
20
20
|
# Sets the active element to the one indicated by index.
|
21
21
|
# If index is outside the range of elements in the listbox then the closest
|
22
22
|
# element is activated.
|
23
|
-
# The active element is drawn as
|
23
|
+
# The active element is drawn as specified by -activestyle when the
|
24
24
|
# widget has the input focus, and its index may be retrieved with the index
|
25
25
|
# active.
|
26
26
|
def activate(index)
|
@@ -100,7 +100,7 @@ module Tk
|
|
100
100
|
# of this list).
|
101
101
|
# If option is specified with no value, then the command returns a list
|
102
102
|
# describing the one named option (this list will be identical to the
|
103
|
-
#
|
103
|
+
# corresponding sublist of the value returned if no option is specified).
|
104
104
|
# If one or more option-value pairs are specified, then the command
|
105
105
|
# modifies the given widget option(s) to have the given value(s); in this
|
106
106
|
# case the command returns an empty string.
|
@@ -136,7 +136,7 @@ module Tk
|
|
136
136
|
|
137
137
|
# This command computes the difference between its x and y arguments and
|
138
138
|
# the x and y arguments to the last scan mark command for the widget.
|
139
|
-
# It then adjusts the view by 10 times the
|
139
|
+
# It then adjusts the view by 10 times the difference in coordinates.
|
140
140
|
# This command is typically associated with mouse motion events in the
|
141
141
|
# widget, to produce the effect of dragging the list at high speed through
|
142
142
|
# the window.
|
data/lib/ffi-tk/widget/menu.rb
CHANGED
@@ -44,7 +44,7 @@ module Tk
|
|
44
44
|
# This option is not available for separator or tear-off entries.
|
45
45
|
# -bitmap value Specifies a bitmap to display in the menu instead of a
|
46
46
|
# textual label, in any of the forms accepted by Tk_GetBitmap.
|
47
|
-
# This option overrides the -label option (as controlled by the -
|
47
|
+
# This option overrides the -label option (as controlled by the -compound
|
48
48
|
# option) but may be reset to an empty string to enable a textual label to
|
49
49
|
# be displayed.
|
50
50
|
# If a -image option has been specified, it overrides -bitmap.
|
@@ -58,7 +58,7 @@ module Tk
|
|
58
58
|
# -compound value Specifies whether the menu entry should display both an
|
59
59
|
# image and text, and if so, where the image should be placed relative to
|
60
60
|
# the text.
|
61
|
-
# Valid values for this option are bottom,
|
61
|
+
# Valid values for this option are bottom, center, left, none, right and
|
62
62
|
# top. The default value is none, meaning that the button will display
|
63
63
|
# either an image or text, depending on the values of the -image and
|
64
64
|
# -bitmap options.
|
@@ -122,7 +122,7 @@ module Tk
|
|
122
122
|
# bindings will refuse to activate or invoke the entry.
|
123
123
|
# In this state the entry is displayed according to the disabledForeground
|
124
124
|
# option for the menu and the background option from the entry.
|
125
|
-
# This option is not available for
|
125
|
+
# This option is not available for separator entries.
|
126
126
|
# -underline value Specifies the integer index of a character to underline
|
127
127
|
# in the entry.
|
128
128
|
# This option is also queried by the default bindings and used to implement
|
@@ -255,7 +255,7 @@ module Tk
|
|
255
255
|
# Unmap the window so that it is no longer displayed.
|
256
256
|
# If a lower-level cascaded menu is posted, unpost that menu.
|
257
257
|
# Returns an empty string.
|
258
|
-
# This subcommand does not work on Windows and the
|
258
|
+
# This subcommand does not work on Windows and the Macintosh, as those
|
259
259
|
# platforms have their own way of unposting menus.
|
260
260
|
def unpost
|
261
261
|
execute(:unpost)
|
@@ -263,7 +263,6 @@ module Tk
|
|
263
263
|
|
264
264
|
# Returns a decimal string giving the x-coordinate within the menu window
|
265
265
|
# of the leftmost pixel in the entry specified by index.
|
266
|
-
# │
|
267
266
|
def xposition(index)
|
268
267
|
execute(:xposition, index)
|
269
268
|
end
|
@@ -299,7 +298,7 @@ module Tk
|
|
299
298
|
# menus. You create a torn-off menu by invoking the tear-off entry at the
|
300
299
|
# top of an existing menu.
|
301
300
|
# The default bindings will create a new menu that is a copy of the
|
302
|
-
# original menu and leave it
|
301
|
+
# original menu and leave it permanently posted as a top-level window.
|
303
302
|
# The torn-off menu behaves just the same as the original menu.
|
304
303
|
# and unposts the menu.
|
305
304
|
# If the current menu is a top-level menu posted from a menubutton, then
|
@@ -62,7 +62,7 @@ module Tk
|
|
62
62
|
|
63
63
|
# This command computes the difference between the given coordinates and
|
64
64
|
# the coordinates given to the last sash mark command for the given sash.
|
65
|
-
# It then moves that sash the computed
|
65
|
+
# It then moves that sash the computed difference.
|
66
66
|
def sash_dragto(index, x, y)
|
67
67
|
execute_only(:sash, :dragto, index, x, y)
|
68
68
|
end
|
@@ -84,81 +84,107 @@ module Tk
|
|
84
84
|
execute(:panecget, window, option.to_tcl_option)
|
85
85
|
end
|
86
86
|
|
87
|
-
# Query or modify the management options for window
|
88
|
-
#
|
89
|
-
# options
|
87
|
+
# Query or modify the management options for +window+.
|
88
|
+
#
|
89
|
+
# If no +options+ is specified, returns a list describing all of the available
|
90
|
+
# options for +window+ (see Tk_ConfigureInfo for information on the format
|
90
91
|
# of this list).
|
91
|
-
#
|
92
|
+
#
|
93
|
+
# If +options+ is specified with no value, then the command returns a list
|
92
94
|
# describing the one named option (this list will be identical to the
|
93
95
|
# corresponding sublist of the value returned if no option is specified).
|
94
|
-
#
|
95
|
-
#
|
96
|
-
#
|
97
|
-
#
|
98
|
-
#
|
99
|
-
#
|
100
|
-
#
|
101
|
-
# window
|
102
|
-
#
|
103
|
-
#
|
104
|
-
#
|
105
|
-
#
|
106
|
-
#
|
107
|
-
#
|
108
|
-
#
|
109
|
-
#
|
110
|
-
#
|
111
|
-
#
|
112
|
-
#
|
113
|
-
#
|
114
|
-
#
|
115
|
-
#
|
116
|
-
#
|
117
|
-
#
|
118
|
-
#
|
119
|
-
#
|
120
|
-
#
|
121
|
-
#
|
122
|
-
#
|
123
|
-
#
|
124
|
-
#
|
125
|
-
#
|
126
|
-
#
|
127
|
-
#
|
128
|
-
#
|
129
|
-
#
|
130
|
-
#
|
131
|
-
#
|
132
|
-
#
|
133
|
-
#
|
134
|
-
#
|
135
|
-
#
|
136
|
-
#
|
137
|
-
#
|
138
|
-
#
|
139
|
-
#
|
140
|
-
#
|
141
|
-
#
|
142
|
-
#
|
143
|
-
#
|
144
|
-
#
|
145
|
-
#
|
146
|
-
#
|
147
|
-
#
|
148
|
-
#
|
149
|
-
#
|
150
|
-
#
|
151
|
-
#
|
152
|
-
#
|
153
|
-
#
|
154
|
-
#
|
96
|
+
#
|
97
|
+
# If one or more option-value pairs are specified, then the command modifies
|
98
|
+
# the given widget option(s) to have the given value(s); in this case the
|
99
|
+
# command returns an empty string.
|
100
|
+
#
|
101
|
+
# The following options are supported:
|
102
|
+
# :after window
|
103
|
+
# Insert the window after the window specified.
|
104
|
+
# window should be the name of a window already managed by +window+.
|
105
|
+
#
|
106
|
+
# :before window
|
107
|
+
# Insert the window before the window specified.
|
108
|
+
# window should be the name of a window already managed by +window+.
|
109
|
+
#
|
110
|
+
# :height size
|
111
|
+
# Specify a height for the window.
|
112
|
+
# The height will be the outer dimension of the window including its
|
113
|
+
# border, if any.
|
114
|
+
# If size is an empty string, or if -height is not specified, then the
|
115
|
+
# height requested internally by the window will be used initially; the
|
116
|
+
# height may later be adjusted by the movement of sashes in the
|
117
|
+
# panedwindow. Size may be any value accepted by Tk_GetPixels.
|
118
|
+
#
|
119
|
+
# :hide boolean
|
120
|
+
# Controls the visibility of a pane.
|
121
|
+
# When the boolean is true (according to Tcl_GetBoolean) the pane will
|
122
|
+
# not be visible, but it will still be maintained in the list of panes.
|
123
|
+
#
|
124
|
+
# :minsize n
|
125
|
+
# Specifies that the size of the window cannot be made less than n.
|
126
|
+
# This constraint only affects the size of the widget in the paned
|
127
|
+
# dimension -- the x dimension for horizontal panedwindows, the y
|
128
|
+
# dimension for vertical panedwindows.
|
129
|
+
# May be any value accepted by Tk_GetPixels.
|
130
|
+
#
|
131
|
+
# :padx n
|
132
|
+
# Specifies a non-negative value indicating how much extra space to
|
133
|
+
# leave on each side of the window in the X-direction.
|
134
|
+
# The value may have any of the forms accepted by Tk_GetPixels.
|
135
|
+
#
|
136
|
+
# :pady n
|
137
|
+
# Specifies a non-negative value indicating how much extra space to
|
138
|
+
# leave on each side of the window in the Y-direction.
|
139
|
+
# The value may have any of the forms accepted by Tk_GetPixels.
|
140
|
+
# :sticky style
|
141
|
+
# If a window's pane is larger than the requested dimensions of the
|
142
|
+
# window, this option may be used to position (or stretch) the window
|
143
|
+
# within its pane.
|
144
|
+
# Style is a string that contains zero or more of the characters n, s, e
|
145
|
+
# or w.
|
146
|
+
# The string can optionally contains spaces or commas, but they are
|
147
|
+
# ignored. Each letter refers to a side (north, south, east, or west)
|
148
|
+
# that the window will "stick" to.
|
149
|
+
# If both n and s (or e and w) are specified, the window will be
|
150
|
+
# stretched to fill the entire height (or width) of its cavity.
|
151
|
+
# :stretch when
|
152
|
+
# Controls how extra space is allocated to each of the panes.
|
153
|
+
# When is one of always, first, last, middle, and never.
|
154
|
+
# The panedwindow will calculate the required size of all its panes.
|
155
|
+
# Any remaining (or deficit) space will be distributed to those panes
|
156
|
+
# marked for stretching.
|
157
|
+
# The space will be distributed based on each panes current ratio of the
|
158
|
+
# whole.
|
159
|
+
# The when values have the following definition:
|
160
|
+
# :always
|
161
|
+
# This pane will always stretch.
|
162
|
+
# :first
|
163
|
+
# Only if this pane is the first pane (left-most or top-most) will
|
164
|
+
# it stretch.
|
165
|
+
# :last
|
166
|
+
# Only if this pane is the last pane (right-most or bottom-most)
|
167
|
+
# will it stretch. This is the default value.
|
168
|
+
# :middle
|
169
|
+
# Only if this pane is not the first or last pane will it stretch.
|
170
|
+
# :never
|
171
|
+
# This pane will never stretch.
|
172
|
+
#
|
173
|
+
# :width size
|
174
|
+
# Specify a width for the window.
|
175
|
+
# The width will be the outer dimension of the window including its
|
176
|
+
# border, if any.
|
177
|
+
# If size is an empty string, or if -width is not specified, then the
|
178
|
+
# width requested internally by the window will be used initially; the
|
179
|
+
# width may later be adjusted by the movement of sashes in the
|
180
|
+
# panedwindow. Size may be any value accepted by Tk_GetPixels.
|
155
181
|
def paneconfigure(window, options = None)
|
156
182
|
common_configure([:paneconfigure, window], options)
|
157
183
|
end
|
158
184
|
|
159
|
-
# Returns an ordered list of the widgets managed by
|
160
|
-
def panes
|
161
|
-
execute(:panes).to_a
|
185
|
+
# Returns an ordered list of the widgets managed by +window+.
|
186
|
+
def panes(window = None)
|
187
|
+
execute(:panes, window).to_a
|
162
188
|
end
|
163
189
|
end
|
164
190
|
end
|