ffi-tk 2010.01.02 → 2010.02
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/.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
data/lib/ffi-tk/widget/text.rb
CHANGED
@@ -201,18 +201,22 @@ module Tk
|
|
201
201
|
indices = [given_index]
|
202
202
|
|
203
203
|
while arg = arguments.shift
|
204
|
-
|
205
|
-
|
206
|
-
command
|
207
|
-
|
208
|
-
|
209
|
-
|
204
|
+
if arg.respond_to?(:to_tcl_option)
|
205
|
+
case tcl_option = arg.to_tcl_option
|
206
|
+
when '-command'
|
207
|
+
command = arguments.shift
|
208
|
+
invocation << ['-command', command]
|
209
|
+
when /^-(?:all|image|mark|tag|text|window)$/
|
210
|
+
invocation << tcl_option
|
211
|
+
else
|
212
|
+
indices.unshift(arg)
|
213
|
+
end
|
210
214
|
else
|
211
215
|
indices.unshift(arg)
|
212
216
|
end
|
213
217
|
end
|
214
218
|
|
215
|
-
execute('dump', *invocation, *indices)
|
219
|
+
execute('dump', *invocation, *indices).to_a.each_slice(3).to_a
|
216
220
|
end
|
217
221
|
|
218
222
|
# If boolean is not specified, returns the modified flag of the widget.
|
@@ -655,7 +659,7 @@ module Tk
|
|
655
659
|
# and the substitutions performed on script before invoking it.
|
656
660
|
# If all arguments are specified then a new binding is created, replacing
|
657
661
|
# any existing binding for the same sequence and tagName (if the first
|
658
|
-
# character of script is
|
662
|
+
# character of script is "+" then script augments an existing binding
|
659
663
|
# rather than replacing it).
|
660
664
|
# In this case the return value is an empty string.
|
661
665
|
# If script is omitted then the command returns the script associated
|
@@ -765,8 +769,8 @@ module Tk
|
|
765
769
|
# active at the character position given by index.
|
766
770
|
# If index is omitted, then the return value will describe all of the tags
|
767
771
|
# that exist for the text (this includes all tags that have been named in a
|
768
|
-
#
|
769
|
-
# tag delete
|
772
|
+
# "pathName tag" widget command but have not been deleted by a "pathName
|
773
|
+
# tag delete" widget command, even if no characters are currently marked
|
770
774
|
# with the tag).
|
771
775
|
# The list will be sorted in order from lowest priority to highest
|
772
776
|
# priority.
|
@@ -889,5 +893,33 @@ module Tk
|
|
889
893
|
def paste
|
890
894
|
Tk.execute(:tk_textPaste, self)
|
891
895
|
end
|
896
|
+
|
897
|
+
def tk_prev_word_pos(start)
|
898
|
+
Tk.execute('tk::TextPrevPos', self, start, 'tcl_startOfPreviousWord').to_s
|
899
|
+
end
|
900
|
+
|
901
|
+
def tk_next_word_pos(start)
|
902
|
+
Tk.execute('tk::TextNextPos', self, start, 'tcl_startOfNextWord').to_s
|
903
|
+
end
|
904
|
+
|
905
|
+
def tk_next_word_pos_end(start)
|
906
|
+
Tk.execute('tk::TextNextWord', self, start).to_s
|
907
|
+
end
|
908
|
+
|
909
|
+
def tk_prev_line_pos(count)
|
910
|
+
Tk.execute('tk::TextUpDownLine', self, -count.abs).to_s
|
911
|
+
end
|
912
|
+
|
913
|
+
def tk_next_line_pos(count)
|
914
|
+
Tk.execute('tk::TextUpDownLine', self, count).to_s
|
915
|
+
end
|
916
|
+
|
917
|
+
def tk_prev_page_pos(count)
|
918
|
+
Tk.execute('tk::TextScrollPages', self, -count.abs).to_s
|
919
|
+
end
|
920
|
+
|
921
|
+
def tk_next_page_pos(count)
|
922
|
+
Tk.execute('tk::TextScrollPages', self, count).to_s
|
923
|
+
end
|
892
924
|
end
|
893
925
|
end
|
@@ -38,17 +38,20 @@ module Tk
|
|
38
38
|
# the string end, an integer index, or the name of a managed subwindow.
|
39
39
|
# If subwindow is already managed by the notebook, moves it to
|
40
40
|
# the specified position.
|
41
|
-
def insert(pos, window, options)
|
42
|
-
|
41
|
+
def insert(pos, window, options = {})
|
42
|
+
execute_only(:insert, pos, window, options.to_tcl_options)
|
43
43
|
end
|
44
44
|
|
45
45
|
# Selects the specified tab. The associated slave window
|
46
46
|
# will be displayed, and the previously-selected window
|
47
47
|
# (if different) is unmapped. If tabid is omitted, returns
|
48
48
|
# the widget name of the currently selected pane.
|
49
|
-
def select(window)
|
50
|
-
|
51
|
-
|
49
|
+
def select(window = None)
|
50
|
+
if None == window
|
51
|
+
execute(:select)
|
52
|
+
else
|
53
|
+
execute_only(:select, window)
|
54
|
+
end
|
52
55
|
end
|
53
56
|
|
54
57
|
# Remove the pane containing window from the panedwindow.
|
@@ -57,14 +60,18 @@ module Tk
|
|
57
60
|
execute_only(:forget, window, *windows)
|
58
61
|
end
|
59
62
|
|
60
|
-
|
61
|
-
|
63
|
+
# Hides the tab specified by +tabid+.
|
64
|
+
# The tab will not be displayed, but the associated window remains managed
|
65
|
+
# by the notebook and its configuration remembered.
|
66
|
+
# Hidden tabs may be restored with the add command.
|
67
|
+
def hide(tabid)
|
68
|
+
execute_only(:hide, tabid)
|
62
69
|
end
|
63
70
|
|
64
|
-
# Returns the numeric index of the tab specified by tabid
|
71
|
+
# Returns the numeric index of the tab specified by +tabid+,
|
65
72
|
# or the total number of tabs if tabid is the string 'end'.
|
66
|
-
def index(
|
67
|
-
execute(:index,
|
73
|
+
def index(tabid)
|
74
|
+
execute(:index, tabid).to_i
|
68
75
|
end
|
69
76
|
|
70
77
|
def identify(x, y)
|
@@ -3,7 +3,59 @@ module Tk
|
|
3
3
|
class PanedWindow < Tk::PanedWindow
|
4
4
|
def self.tk_command; 'ttk::panedwindow'; end
|
5
5
|
include TileWidget
|
6
|
+
|
7
|
+
# pathname add subwindow options...
|
8
|
+
# Adds a new pane to the window.
|
9
|
+
# subwindow must be a direct child of the paned window pathname.
|
10
|
+
# See PANE OPTIONS for the list of available options.
|
11
|
+
def add(subwindow, options = {})
|
12
|
+
execute_only(:add, subwindow, options.to_tcl_options)
|
13
|
+
end
|
14
|
+
|
15
|
+
# pathname forget pane
|
16
|
+
# Removes the specified subpane from the widget.
|
17
|
+
# pane is either an integer index or the name of a managed subwindow.
|
18
|
+
def forget(pane)
|
19
|
+
execute_only(:forget, pane)
|
20
|
+
end
|
21
|
+
|
22
|
+
# pathname identify x y
|
23
|
+
# Returns the index of the sash at point x,y, or the empty string if x,y
|
24
|
+
# is not over a sash.
|
25
|
+
def identify(x, y)
|
26
|
+
execute(:identify, x, y)
|
27
|
+
end
|
28
|
+
|
29
|
+
# pathname insert pos subwindow options...
|
30
|
+
# Inserts a pane at the specified position.
|
31
|
+
# pos is either the string end, an integer index, or the name of a managed
|
32
|
+
# subwindow. If subwindow is already managed by the paned window, moves it
|
33
|
+
# to the specified position.
|
34
|
+
# See PANE OPTIONS for the list of available options.
|
35
|
+
def insert(pos, subwindow, options = {})
|
36
|
+
execute_only(:insert, pos, subwindow, options.to_tcl_options)
|
37
|
+
end
|
38
|
+
|
39
|
+
# pathname pane pane -option ?value ?-option value...
|
40
|
+
# Query or modify the options of the specified pane, where pane is either
|
41
|
+
# an integer index or the name of a managed subwindow.
|
42
|
+
# If no -option is specified, returns a dictionary of the pane option
|
43
|
+
# values. If one -option is specified, returns the value of that option.
|
44
|
+
# Otherwise, sets the -options to the corresponding values.
|
45
|
+
def pane(pane, options = {})
|
46
|
+
common_configure([:pane, pane], options)
|
47
|
+
end
|
48
|
+
|
49
|
+
# pathname sashpos index ?newpos?
|
50
|
+
# If newpos is specified, sets the position of sash number index.
|
51
|
+
# May adjust the positions of adjacent sashes to ensure that positions are
|
52
|
+
# monotonically increasing.
|
53
|
+
# Sash positions are further constrained to be between 0 and the total
|
54
|
+
# size of the widget.
|
55
|
+
# Returns the new position of sash number index.
|
56
|
+
def sashpos(index, newpos = None)
|
57
|
+
execute(:sashpos, index, newpos)
|
58
|
+
end
|
6
59
|
end
|
7
60
|
end
|
8
61
|
end
|
9
|
-
|
@@ -17,8 +17,8 @@ module Tk
|
|
17
17
|
# BUG: http://tcl.activestate.com/man/tcl8.5/TkCmd/ttk_sizegrip.htm
|
18
18
|
# If the containing toplevel's position was specified relative to the
|
19
19
|
# right or bottom of the screen (e.g., 'wm geometry ... wxh-x-y' instead
|
20
|
-
# of
|
21
|
-
# window. ttk::sizegrip widgets only support
|
20
|
+
# of "wm geometry ... wxh+x+y"), the sizegrip widget will not resize the
|
21
|
+
# window. ttk::sizegrip widgets only support "southeast" resizing.
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -103,7 +103,7 @@ module Tk
|
|
103
103
|
# Returns the value specified for -option in style style in state
|
104
104
|
# state, using the standard lookup rules for element options.
|
105
105
|
# state is a list of state names; if omitted, it defaults to all
|
106
|
-
# bits off (the
|
106
|
+
# bits off (the "normal" state). If the default argument is present,
|
107
107
|
# it is used as a fallback value in case no specification
|
108
108
|
# for -option is found.
|
109
109
|
def self.lookup(style, option, state=Tk::None, default=Tk::None)
|
@@ -19,7 +19,7 @@ module Tk
|
|
19
19
|
# Treeview widgets support horizontal and vertical scrolling with the
|
20
20
|
# standard -[xy]scrollcommand options and [xy]view widget commands.
|
21
21
|
class Treeview < Tk::Widget
|
22
|
-
include Tk::Tile::TileWidget, Cget, Configure
|
22
|
+
include Tk::Tile::TileWidget, Scrollable, Cget, Configure
|
23
23
|
|
24
24
|
def self.tk_command; 'ttk::treeview'; end
|
25
25
|
|
@@ -217,6 +217,10 @@ module Tk
|
|
217
217
|
tk_parent.children(id, *new_children)
|
218
218
|
end
|
219
219
|
|
220
|
+
def selection_set
|
221
|
+
tk_parent.selection_set(id)
|
222
|
+
end
|
223
|
+
|
220
224
|
def selection_add
|
221
225
|
tk_parent.selection_add(id)
|
222
226
|
end
|
@@ -322,12 +326,12 @@ module Tk
|
|
322
326
|
|
323
327
|
# Returns the list of selected items.
|
324
328
|
def selection
|
325
|
-
execute(:selection).to_a
|
329
|
+
execute(:selection).to_a.map{|id| Item.new(self, id) }
|
326
330
|
end
|
327
331
|
|
328
332
|
# +items+ becomes the new selection.
|
329
333
|
def selection_set(*items)
|
330
|
-
execute(:selection, set, *items.flatten)
|
334
|
+
execute(:selection, :set, *items.flatten)
|
331
335
|
end
|
332
336
|
|
333
337
|
# Add +items+ to the selection
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require_relative '../../helper'
|
2
|
+
|
3
|
+
describe Tk::Bind do
|
4
|
+
entry = Tk::Entry.new
|
5
|
+
entry.pack
|
6
|
+
entry.focus
|
7
|
+
|
8
|
+
it 'should bind a block' do
|
9
|
+
foo = false
|
10
|
+
entry.bind('f'){ foo = true }
|
11
|
+
Tk.interp.do_events_until{
|
12
|
+
Tk::Event.generate(entry, 'f')
|
13
|
+
foo
|
14
|
+
}
|
15
|
+
foo.should == true
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should return the bound proc' do
|
19
|
+
entry.bind('f').should == ' ::RubyFFI::event 0 f %# %b %c %d %f %h %i %k %m %o %p %s %t %w %x %y %A %B %D %E %K %N %P %R %S %T %W %X %Y '
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should list the sequences bound' do
|
23
|
+
entry.bind.should == ['f']
|
24
|
+
end
|
25
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ffi-tk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2010.
|
4
|
+
version: "2010.02"
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael 'manveru' Fellinger
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-
|
12
|
+
date: 2010-02-15 00:00:00 +09:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -41,6 +41,7 @@ extensions: []
|
|
41
41
|
extra_rdoc_files: []
|
42
42
|
|
43
43
|
files:
|
44
|
+
- .gitignore
|
44
45
|
- AUTHORS
|
45
46
|
- CHANGELOG
|
46
47
|
- MANIFEST
|
@@ -63,6 +64,7 @@ files:
|
|
63
64
|
- example/tile/kroc_rb_demo.rb
|
64
65
|
- example/tile/notebook.rb
|
65
66
|
- example/tile/theme_hello.rb
|
67
|
+
- example/tile/themes.rb
|
66
68
|
- example/tile/treeview.rb
|
67
69
|
- example/tkgo.rb
|
68
70
|
- example/various.rb
|
@@ -169,6 +171,7 @@ files:
|
|
169
171
|
- lib/ffi-tk/widget/tile/style.rb
|
170
172
|
- lib/ffi-tk/widget/tile/treeview.rb
|
171
173
|
- lib/ffi-tk/widget/toplevel.rb
|
174
|
+
- spec/ffi-tk/command/bind.rb
|
172
175
|
- spec/ffi-tk/command/bindtags.rb
|
173
176
|
- spec/ffi-tk/command/clipboard.rb
|
174
177
|
- spec/ffi-tk/command/font.rb
|