ffi-tk 2009.12.14 → 2010.01
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/AUTHORS +5 -0
- data/CHANGELOG +340 -192
- data/MANIFEST +5 -0
- data/README.md +3 -4
- data/Rakefile +1 -1
- data/example/tile/themes.rb +13 -0
- data/ffi-tk.gemspec +6 -6
- 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/get_open_file.rb +4 -2
- data/lib/ffi-tk/command/get_save_file.rb +4 -2
- data/lib/ffi-tk/command/grab.rb +2 -2
- data/lib/ffi-tk/command/grid.rb +7 -7
- 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 +41 -14
- data/lib/ffi-tk/event/data.rb +40 -10
- data/lib/ffi-tk/event/handler.rb +11 -2
- data/lib/ffi-tk/ffi/tcl/interp.rb +3 -0
- data/lib/ffi-tk/ffi/tcl.rb +1 -0
- data/lib/ffi-tk/ffi/tk.rb +33 -0
- data/lib/ffi-tk/tk.rb +2 -2
- data/lib/ffi-tk/version.rb +3 -0
- data/lib/ffi-tk/widget/canvas.rb +11 -7
- 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 +43 -11
- 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/sizegrip.rb +2 -2
- data/lib/ffi-tk/widget/tile/style.rb +1 -1
- data/lib/ffi-tk/widget/tile/treeview.rb +6 -2
- data/spec/ffi-tk/command/bind.rb +25 -0
- metadata +8 -3
data/MANIFEST
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
.gitignore
|
2
|
+
AUTHORS
|
1
3
|
CHANGELOG
|
2
4
|
MANIFEST
|
3
5
|
README.md
|
@@ -19,6 +21,7 @@ example/tile/kroc_demo_small.rb
|
|
19
21
|
example/tile/kroc_rb_demo.rb
|
20
22
|
example/tile/notebook.rb
|
21
23
|
example/tile/theme_hello.rb
|
24
|
+
example/tile/themes.rb
|
22
25
|
example/tile/treeview.rb
|
23
26
|
example/tkgo.rb
|
24
27
|
example/various.rb
|
@@ -74,6 +77,7 @@ lib/ffi-tk/geometry.rb
|
|
74
77
|
lib/ffi-tk/thread_sender.rb
|
75
78
|
lib/ffi-tk/tk.rb
|
76
79
|
lib/ffi-tk/variable.rb
|
80
|
+
lib/ffi-tk/version.rb
|
77
81
|
lib/ffi-tk/widget.rb
|
78
82
|
lib/ffi-tk/widget/button.rb
|
79
83
|
lib/ffi-tk/widget/canvas.rb
|
@@ -124,6 +128,7 @@ lib/ffi-tk/widget/tile/sizegrip.rb
|
|
124
128
|
lib/ffi-tk/widget/tile/style.rb
|
125
129
|
lib/ffi-tk/widget/tile/treeview.rb
|
126
130
|
lib/ffi-tk/widget/toplevel.rb
|
131
|
+
spec/ffi-tk/command/bind.rb
|
127
132
|
spec/ffi-tk/command/bindtags.rb
|
128
133
|
spec/ffi-tk/command/clipboard.rb
|
129
134
|
spec/ffi-tk/command/font.rb
|
data/README.md
CHANGED
@@ -5,15 +5,14 @@ This library provides you with a wrapper for the Tk windowing toolkit.
|
|
5
5
|
|
6
6
|
## Installation
|
7
7
|
|
8
|
-
|
9
|
-
be obtained there.
|
10
|
-
Once feature-complete, a gem will be provided.
|
8
|
+
gem install ffi-tk
|
11
9
|
|
12
10
|
No compilation is required, but I'm not yet confident that this will run on
|
13
11
|
every architecture without changes, FFI::Tk is being developed on Archlinux and
|
14
12
|
Debian on Intel i686 and AMD x86_64, testers for other platforms are invited to
|
15
13
|
give it a try and report any problems that occur.
|
16
14
|
|
15
|
+
You will need to have tk installed in order to actually use the library.
|
17
16
|
|
18
17
|
## Ruby-FFI
|
19
18
|
|
@@ -82,4 +81,4 @@ Parts of the documentation were obtained from the tcl/tk manpages and modified
|
|
82
81
|
to clarify and apply to the specifics of the FFI::Tk wrapper.
|
83
82
|
These parts of the documentation are under Tcl license.
|
84
83
|
|
85
|
-
The licenses can be found in doc/TCL_LICENSE and doc/MIT_LICENSE respectively.
|
84
|
+
The licenses can be found in doc/TCL_LICENSE and doc/MIT_LICENSE respectively.
|
data/Rakefile
CHANGED
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'ffi-tk'
|
2
|
+
|
3
|
+
Tk::Tile::Style.theme_names.each do |name|
|
4
|
+
button = Tk::Tile::Button.new(
|
5
|
+
text: name,
|
6
|
+
command: ->{ Tk::Tile.set_theme(name) })
|
7
|
+
button.pack side: :top, anchor: :nw
|
8
|
+
end
|
9
|
+
|
10
|
+
button = Tk::Tile::Button.new(text: 'Exit', command: ->{ Tk.exit })
|
11
|
+
button.pack side: :top, anchor: :nw
|
12
|
+
|
13
|
+
Tk.mainloop
|
data/ffi-tk.gemspec
CHANGED
@@ -2,14 +2,14 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{ffi-tk}
|
5
|
-
s.version = "
|
5
|
+
s.version = "2010.01"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.3.5") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Michael 'manveru' Fellinger"]
|
9
|
-
s.date = %q{
|
9
|
+
s.date = %q{2010-01-30}
|
10
10
|
s.description = %q{Pure Ruby FFI wrapper for the Tk GUI toolkit.}
|
11
11
|
s.email = %q{m.fellinger@gmail.com}
|
12
|
-
s.files = ["CHANGELOG", "MANIFEST", "README.md", "Rakefile", "TODO.md", "bin/rwish", "doc/MIT_LICENSE", "doc/TCL_LICENSE", "example/choose_color.rb", "example/choose_directory.rb", "example/dialog.rb", "example/hello.rb", "example/message_box.rb", "example/option_menu.rb", "example/popup.rb", "example/set_palette.rb", "example/text.rb", "example/tile/kroc_demo_small.rb", "example/tile/kroc_rb_demo.rb", "example/tile/notebook.rb", "example/tile/theme_hello.rb", "example/tile/treeview.rb", "example/tkgo.rb", "example/various.rb", "example/wait.rb", "ffi-tk.gemspec", "lib/ffi-tk.rb", "lib/ffi-tk/command.rb", "lib/ffi-tk/command/after.rb", "lib/ffi-tk/command/bell.rb", "lib/ffi-tk/command/bind.rb", "lib/ffi-tk/command/bindtags.rb", "lib/ffi-tk/command/cget.rb", "lib/ffi-tk/command/choose_color.rb", "lib/ffi-tk/command/choose_directory.rb", "lib/ffi-tk/command/clipboard.rb", "lib/ffi-tk/command/configure.rb", "lib/ffi-tk/command/destroy.rb", "lib/ffi-tk/command/dialog.rb", "lib/ffi-tk/command/event.rb", "lib/ffi-tk/command/focus.rb", "lib/ffi-tk/command/font.rb", "lib/ffi-tk/command/get_open_file.rb", "lib/ffi-tk/command/get_save_file.rb", "lib/ffi-tk/command/grab.rb", "lib/ffi-tk/command/grid.rb", "lib/ffi-tk/command/image.rb", "lib/ffi-tk/command/lower.rb", "lib/ffi-tk/command/message_box.rb", "lib/ffi-tk/command/option_menu.rb", "lib/ffi-tk/command/pack.rb", "lib/ffi-tk/command/place.rb", "lib/ffi-tk/command/popup.rb", "lib/ffi-tk/command/raise.rb", "lib/ffi-tk/command/scrollable.rb", "lib/ffi-tk/command/selection.rb", "lib/ffi-tk/command/set_palette.rb", "lib/ffi-tk/command/tk_cmd.rb", "lib/ffi-tk/command/vars.rb", "lib/ffi-tk/command/wait.rb", "lib/ffi-tk/command/winfo.rb", "lib/ffi-tk/command/wm.rb", "lib/ffi-tk/core_extensions.rb", "lib/ffi-tk/event/data.rb", "lib/ffi-tk/event/handler.rb", "lib/ffi-tk/ffi/tcl.rb", "lib/ffi-tk/ffi/tcl/cmd_proc.rb", "lib/ffi-tk/ffi/tcl/eval_result.rb", "lib/ffi-tk/ffi/tcl/interp.rb", "lib/ffi-tk/ffi/tcl/obj.rb", "lib/ffi-tk/ffi/tcl/time.rb", "lib/ffi-tk/ffi/tk.rb", "lib/ffi-tk/geometry.rb", "lib/ffi-tk/thread_sender.rb", "lib/ffi-tk/tk.rb", "lib/ffi-tk/variable.rb", "lib/ffi-tk/widget.rb", "lib/ffi-tk/widget/button.rb", "lib/ffi-tk/widget/canvas.rb", "lib/ffi-tk/widget/canvas/arc.rb", "lib/ffi-tk/widget/canvas/bitmap.rb", "lib/ffi-tk/widget/canvas/image.rb", "lib/ffi-tk/widget/canvas/item.rb", "lib/ffi-tk/widget/canvas/line.rb", "lib/ffi-tk/widget/canvas/oval.rb", "lib/ffi-tk/widget/canvas/polygon.rb", "lib/ffi-tk/widget/canvas/rectangle.rb", "lib/ffi-tk/widget/canvas/text.rb", "lib/ffi-tk/widget/canvas/window.rb", "lib/ffi-tk/widget/checkbutton.rb", "lib/ffi-tk/widget/entry.rb", "lib/ffi-tk/widget/frame.rb", "lib/ffi-tk/widget/label.rb", "lib/ffi-tk/widget/labelframe.rb", "lib/ffi-tk/widget/listbox.rb", "lib/ffi-tk/widget/menu.rb", "lib/ffi-tk/widget/menubutton.rb", "lib/ffi-tk/widget/message.rb", "lib/ffi-tk/widget/panedwindow.rb", "lib/ffi-tk/widget/radiobutton.rb", "lib/ffi-tk/widget/root.rb", "lib/ffi-tk/widget/scale.rb", "lib/ffi-tk/widget/scrollbar.rb", "lib/ffi-tk/widget/spinbox.rb", "lib/ffi-tk/widget/text.rb", "lib/ffi-tk/widget/text/peer.rb", "lib/ffi-tk/widget/tile.rb", "lib/ffi-tk/widget/tile/button.rb", "lib/ffi-tk/widget/tile/checkbutton.rb", "lib/ffi-tk/widget/tile/combobox.rb", "lib/ffi-tk/widget/tile/entry.rb", "lib/ffi-tk/widget/tile/frame.rb", "lib/ffi-tk/widget/tile/label.rb", "lib/ffi-tk/widget/tile/labelframe.rb", "lib/ffi-tk/widget/tile/menubutton.rb", "lib/ffi-tk/widget/tile/notebook.rb", "lib/ffi-tk/widget/tile/panedwindow.rb", "lib/ffi-tk/widget/tile/progressbar.rb", "lib/ffi-tk/widget/tile/radiobutton.rb", "lib/ffi-tk/widget/tile/scale.rb", "lib/ffi-tk/widget/tile/scrollbar.rb", "lib/ffi-tk/widget/tile/separator.rb", "lib/ffi-tk/widget/tile/sizegrip.rb", "lib/ffi-tk/widget/tile/style.rb", "lib/ffi-tk/widget/tile/treeview.rb", "lib/ffi-tk/widget/toplevel.rb", "spec/ffi-tk/command/bindtags.rb", "spec/ffi-tk/command/clipboard.rb", "spec/ffi-tk/command/font.rb", "spec/ffi-tk/command/grid.rb", "spec/ffi-tk/command/image.rb", "spec/ffi-tk/command/pack.rb", "spec/ffi-tk/command/place.rb", "spec/ffi-tk/command/selection.rb", "spec/ffi-tk/command/vars.rb", "spec/ffi-tk/command/winfo.rb", "spec/ffi-tk/command/wm.rb", "spec/ffi-tk/event.rb", "spec/ffi-tk/tile/button.rb", "spec/ffi-tk/tile/checkbutton.rb", "spec/ffi-tk/tile/combobox.rb", "spec/ffi-tk/tile/entry.rb", "spec/ffi-tk/tile/frame.rb", "spec/ffi-tk/tile/label.rb", "spec/ffi-tk/tile/labelframe.rb", "spec/ffi-tk/tile/menubutton.rb", "spec/ffi-tk/tile/notebook.rb", "spec/ffi-tk/tile/panedwindow.rb", "spec/ffi-tk/tile/progressbar.rb", "spec/ffi-tk/tile/radiobutton.rb", "spec/ffi-tk/tile/scale.rb", "spec/ffi-tk/tile/scrollbar.rb", "spec/ffi-tk/tile/separator.rb", "spec/ffi-tk/tile/sizegrip.rb", "spec/ffi-tk/tile/style.rb", "spec/ffi-tk/tile/treeview.rb", "spec/ffi-tk/variable.rb", "spec/ffi-tk/widget/button.rb", "spec/ffi-tk/widget/canvas.rb", "spec/ffi-tk/widget/checkbutton.rb", "spec/ffi-tk/widget/entry.rb", "spec/ffi-tk/widget/frame.rb", "spec/ffi-tk/widget/label.rb", "spec/ffi-tk/widget/labelframe.rb", "spec/ffi-tk/widget/listbox.rb", "spec/ffi-tk/widget/menu.rb", "spec/ffi-tk/widget/menubutton.rb", "spec/ffi-tk/widget/message.rb", "spec/ffi-tk/widget/panedwindow.rb", "spec/ffi-tk/widget/radiobutton.rb", "spec/ffi-tk/widget/root.rb", "spec/ffi-tk/widget/scale.rb", "spec/ffi-tk/widget/scrollbar.rb", "spec/ffi-tk/widget/spinbox.rb", "spec/ffi-tk/widget/text.rb", "spec/ffi-tk/widget/toplevel.rb", "spec/helper.rb", "tasks/authors.rake", "tasks/bacon.rake", "tasks/changelog.rake", "tasks/gem.rake", "tasks/gem_setup.rake", "tasks/grancher.rake", "tasks/manifest.rake", "tasks/rcov.rake", "tasks/release.rake", "tasks/reversion.rake", "tasks/setup.rake", "tasks/ycov.rake"]
|
12
|
+
s.files = [".gitignore", "AUTHORS", "CHANGELOG", "MANIFEST", "README.md", "Rakefile", "TODO.md", "bin/rwish", "doc/MIT_LICENSE", "doc/TCL_LICENSE", "example/choose_color.rb", "example/choose_directory.rb", "example/dialog.rb", "example/hello.rb", "example/message_box.rb", "example/option_menu.rb", "example/popup.rb", "example/set_palette.rb", "example/text.rb", "example/tile/kroc_demo_small.rb", "example/tile/kroc_rb_demo.rb", "example/tile/notebook.rb", "example/tile/theme_hello.rb", "example/tile/themes.rb", "example/tile/treeview.rb", "example/tkgo.rb", "example/various.rb", "example/wait.rb", "ffi-tk.gemspec", "lib/ffi-tk.rb", "lib/ffi-tk/command.rb", "lib/ffi-tk/command/after.rb", "lib/ffi-tk/command/bell.rb", "lib/ffi-tk/command/bind.rb", "lib/ffi-tk/command/bindtags.rb", "lib/ffi-tk/command/cget.rb", "lib/ffi-tk/command/choose_color.rb", "lib/ffi-tk/command/choose_directory.rb", "lib/ffi-tk/command/clipboard.rb", "lib/ffi-tk/command/configure.rb", "lib/ffi-tk/command/destroy.rb", "lib/ffi-tk/command/dialog.rb", "lib/ffi-tk/command/event.rb", "lib/ffi-tk/command/focus.rb", "lib/ffi-tk/command/font.rb", "lib/ffi-tk/command/get_open_file.rb", "lib/ffi-tk/command/get_save_file.rb", "lib/ffi-tk/command/grab.rb", "lib/ffi-tk/command/grid.rb", "lib/ffi-tk/command/image.rb", "lib/ffi-tk/command/lower.rb", "lib/ffi-tk/command/message_box.rb", "lib/ffi-tk/command/option_menu.rb", "lib/ffi-tk/command/pack.rb", "lib/ffi-tk/command/place.rb", "lib/ffi-tk/command/popup.rb", "lib/ffi-tk/command/raise.rb", "lib/ffi-tk/command/scrollable.rb", "lib/ffi-tk/command/selection.rb", "lib/ffi-tk/command/set_palette.rb", "lib/ffi-tk/command/tk_cmd.rb", "lib/ffi-tk/command/vars.rb", "lib/ffi-tk/command/wait.rb", "lib/ffi-tk/command/winfo.rb", "lib/ffi-tk/command/wm.rb", "lib/ffi-tk/core_extensions.rb", "lib/ffi-tk/event/data.rb", "lib/ffi-tk/event/handler.rb", "lib/ffi-tk/ffi/tcl.rb", "lib/ffi-tk/ffi/tcl/cmd_proc.rb", "lib/ffi-tk/ffi/tcl/eval_result.rb", "lib/ffi-tk/ffi/tcl/interp.rb", "lib/ffi-tk/ffi/tcl/obj.rb", "lib/ffi-tk/ffi/tcl/time.rb", "lib/ffi-tk/ffi/tk.rb", "lib/ffi-tk/geometry.rb", "lib/ffi-tk/thread_sender.rb", "lib/ffi-tk/tk.rb", "lib/ffi-tk/variable.rb", "lib/ffi-tk/version.rb", "lib/ffi-tk/widget.rb", "lib/ffi-tk/widget/button.rb", "lib/ffi-tk/widget/canvas.rb", "lib/ffi-tk/widget/canvas/arc.rb", "lib/ffi-tk/widget/canvas/bitmap.rb", "lib/ffi-tk/widget/canvas/image.rb", "lib/ffi-tk/widget/canvas/item.rb", "lib/ffi-tk/widget/canvas/line.rb", "lib/ffi-tk/widget/canvas/oval.rb", "lib/ffi-tk/widget/canvas/polygon.rb", "lib/ffi-tk/widget/canvas/rectangle.rb", "lib/ffi-tk/widget/canvas/text.rb", "lib/ffi-tk/widget/canvas/window.rb", "lib/ffi-tk/widget/checkbutton.rb", "lib/ffi-tk/widget/entry.rb", "lib/ffi-tk/widget/frame.rb", "lib/ffi-tk/widget/label.rb", "lib/ffi-tk/widget/labelframe.rb", "lib/ffi-tk/widget/listbox.rb", "lib/ffi-tk/widget/menu.rb", "lib/ffi-tk/widget/menubutton.rb", "lib/ffi-tk/widget/message.rb", "lib/ffi-tk/widget/panedwindow.rb", "lib/ffi-tk/widget/radiobutton.rb", "lib/ffi-tk/widget/root.rb", "lib/ffi-tk/widget/scale.rb", "lib/ffi-tk/widget/scrollbar.rb", "lib/ffi-tk/widget/spinbox.rb", "lib/ffi-tk/widget/text.rb", "lib/ffi-tk/widget/text/peer.rb", "lib/ffi-tk/widget/tile.rb", "lib/ffi-tk/widget/tile/button.rb", "lib/ffi-tk/widget/tile/checkbutton.rb", "lib/ffi-tk/widget/tile/combobox.rb", "lib/ffi-tk/widget/tile/entry.rb", "lib/ffi-tk/widget/tile/frame.rb", "lib/ffi-tk/widget/tile/label.rb", "lib/ffi-tk/widget/tile/labelframe.rb", "lib/ffi-tk/widget/tile/menubutton.rb", "lib/ffi-tk/widget/tile/notebook.rb", "lib/ffi-tk/widget/tile/panedwindow.rb", "lib/ffi-tk/widget/tile/progressbar.rb", "lib/ffi-tk/widget/tile/radiobutton.rb", "lib/ffi-tk/widget/tile/scale.rb", "lib/ffi-tk/widget/tile/scrollbar.rb", "lib/ffi-tk/widget/tile/separator.rb", "lib/ffi-tk/widget/tile/sizegrip.rb", "lib/ffi-tk/widget/tile/style.rb", "lib/ffi-tk/widget/tile/treeview.rb", "lib/ffi-tk/widget/toplevel.rb", "spec/ffi-tk/command/bind.rb", "spec/ffi-tk/command/bindtags.rb", "spec/ffi-tk/command/clipboard.rb", "spec/ffi-tk/command/font.rb", "spec/ffi-tk/command/grid.rb", "spec/ffi-tk/command/image.rb", "spec/ffi-tk/command/pack.rb", "spec/ffi-tk/command/place.rb", "spec/ffi-tk/command/selection.rb", "spec/ffi-tk/command/vars.rb", "spec/ffi-tk/command/winfo.rb", "spec/ffi-tk/command/wm.rb", "spec/ffi-tk/event.rb", "spec/ffi-tk/tile/button.rb", "spec/ffi-tk/tile/checkbutton.rb", "spec/ffi-tk/tile/combobox.rb", "spec/ffi-tk/tile/entry.rb", "spec/ffi-tk/tile/frame.rb", "spec/ffi-tk/tile/label.rb", "spec/ffi-tk/tile/labelframe.rb", "spec/ffi-tk/tile/menubutton.rb", "spec/ffi-tk/tile/notebook.rb", "spec/ffi-tk/tile/panedwindow.rb", "spec/ffi-tk/tile/progressbar.rb", "spec/ffi-tk/tile/radiobutton.rb", "spec/ffi-tk/tile/scale.rb", "spec/ffi-tk/tile/scrollbar.rb", "spec/ffi-tk/tile/separator.rb", "spec/ffi-tk/tile/sizegrip.rb", "spec/ffi-tk/tile/style.rb", "spec/ffi-tk/tile/treeview.rb", "spec/ffi-tk/variable.rb", "spec/ffi-tk/widget/button.rb", "spec/ffi-tk/widget/canvas.rb", "spec/ffi-tk/widget/checkbutton.rb", "spec/ffi-tk/widget/entry.rb", "spec/ffi-tk/widget/frame.rb", "spec/ffi-tk/widget/label.rb", "spec/ffi-tk/widget/labelframe.rb", "spec/ffi-tk/widget/listbox.rb", "spec/ffi-tk/widget/menu.rb", "spec/ffi-tk/widget/menubutton.rb", "spec/ffi-tk/widget/message.rb", "spec/ffi-tk/widget/panedwindow.rb", "spec/ffi-tk/widget/radiobutton.rb", "spec/ffi-tk/widget/root.rb", "spec/ffi-tk/widget/scale.rb", "spec/ffi-tk/widget/scrollbar.rb", "spec/ffi-tk/widget/spinbox.rb", "spec/ffi-tk/widget/text.rb", "spec/ffi-tk/widget/toplevel.rb", "spec/helper.rb", "tasks/authors.rake", "tasks/bacon.rake", "tasks/changelog.rake", "tasks/gem.rake", "tasks/gem_setup.rake", "tasks/grancher.rake", "tasks/manifest.rake", "tasks/rcov.rake", "tasks/release.rake", "tasks/reversion.rake", "tasks/setup.rake", "tasks/ycov.rake"]
|
13
13
|
s.homepage = %q{http://github.com/manveru/ffi-tk}
|
14
14
|
s.require_paths = ["lib"]
|
15
15
|
s.rubygems_version = %q{1.3.5}
|
@@ -20,14 +20,14 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.specification_version = 3
|
21
21
|
|
22
22
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
23
|
-
s.add_runtime_dependency(%q<ffi>, ["~> 0.5.
|
23
|
+
s.add_runtime_dependency(%q<ffi>, ["~> 0.5.4"])
|
24
24
|
s.add_development_dependency(%q<bacon>, [">= 1.1.0"])
|
25
25
|
else
|
26
|
-
s.add_dependency(%q<ffi>, ["~> 0.5.
|
26
|
+
s.add_dependency(%q<ffi>, ["~> 0.5.4"])
|
27
27
|
s.add_dependency(%q<bacon>, [">= 1.1.0"])
|
28
28
|
end
|
29
29
|
else
|
30
|
-
s.add_dependency(%q<ffi>, ["~> 0.5.
|
30
|
+
s.add_dependency(%q<ffi>, ["~> 0.5.4"])
|
31
31
|
s.add_dependency(%q<bacon>, [">= 1.1.0"])
|
32
32
|
end
|
33
33
|
end
|
data/lib/ffi-tk/command/bind.rb
CHANGED
@@ -1,11 +1,28 @@
|
|
1
1
|
module Tk
|
2
2
|
module Bind
|
3
|
-
def self.bind(
|
4
|
-
|
3
|
+
def self.bind(tag, sequence = None)
|
4
|
+
if None == sequence
|
5
|
+
Tk.execute(:bind, tag).to_a
|
6
|
+
else
|
7
|
+
if block_given?
|
8
|
+
Event::Handler.register(tag, sequence, &Proc.new)
|
9
|
+
else
|
10
|
+
Tk.execute(:bind, tag, sequence).to_s
|
11
|
+
end
|
12
|
+
end
|
5
13
|
end
|
6
14
|
|
7
|
-
|
15
|
+
# TODO: remove the block associated
|
16
|
+
def self.unbind(tag, sequence)
|
17
|
+
Event::Handler.unregister(tag, sequence)
|
18
|
+
end
|
19
|
+
|
20
|
+
def bind(sequence = None, &block)
|
8
21
|
Bind.bind(tk_pathname, sequence, &block)
|
9
22
|
end
|
23
|
+
|
24
|
+
def unbind(sequence)
|
25
|
+
Bind.unbind(tk_pathname, sequence)
|
26
|
+
end
|
10
27
|
end
|
11
|
-
end
|
28
|
+
end
|
@@ -58,12 +58,16 @@ module Tk
|
|
58
58
|
end
|
59
59
|
|
60
60
|
class BindTag < Struct.new(:name)
|
61
|
-
def bind(sequence, &block)
|
61
|
+
def bind(sequence = None, &block)
|
62
62
|
Bind.bind(name, sequence, &block)
|
63
63
|
end
|
64
64
|
|
65
|
+
def unbind(sequence)
|
66
|
+
Bind.unbind(name, sequence)
|
67
|
+
end
|
68
|
+
|
65
69
|
def to_tcl
|
66
70
|
TclString.new(name)
|
67
71
|
end
|
68
72
|
end
|
69
|
-
end
|
73
|
+
end
|
@@ -21,8 +21,7 @@ module Tk
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def clipboard_set(string, options = {})
|
24
|
-
|
25
|
-
clipboard_append(options.merge(data: string))
|
24
|
+
Clipboard.set(string, options)
|
26
25
|
end
|
27
26
|
|
28
27
|
module_function
|
@@ -85,6 +84,12 @@ module Tk
|
|
85
84
|
Tk.execute_only(:clipboard, :append, *args)
|
86
85
|
end
|
87
86
|
|
87
|
+
# Shortcut to clear clipboard and append given +string+.
|
88
|
+
def set(string, options = {})
|
89
|
+
clear
|
90
|
+
append(options.merge(data: string))
|
91
|
+
end
|
92
|
+
|
88
93
|
# Retrieve data from the clipboard on +window+'s display.
|
89
94
|
# +window+ defaults to ".".
|
90
95
|
# +type+ specifies the form in which the data is to be returned and should be
|
data/lib/ffi-tk/command/event.rb
CHANGED
@@ -60,7 +60,7 @@ module Tk
|
|
60
60
|
# processed. Certain events, such as key events, require that the window has
|
61
61
|
# focus to receive the event properly.
|
62
62
|
def self.generate(window = None, event = None, options = {})
|
63
|
-
Tk.execute_only(:event, :generate, window, event, options)
|
63
|
+
Tk.execute_only(:event, :generate, window, event, options.to_tcl_options)
|
64
64
|
end
|
65
65
|
|
66
66
|
# Returns information about virtual events.
|
@@ -76,4 +76,4 @@ module Tk
|
|
76
76
|
Tk.execute(:event, :info, virtual).to_a
|
77
77
|
end
|
78
78
|
end
|
79
|
-
end
|
79
|
+
end
|
@@ -80,6 +80,8 @@ module Tk
|
|
80
80
|
# Extensions without a full stop character (e.g. "~") are allowed but may not
|
81
81
|
# work on all platforms.
|
82
82
|
def get_open_file(options = None)
|
83
|
-
Tk.execute(:tk_getOpenFile, options.to_tcl_options?)
|
83
|
+
result = Tk.execute(:tk_getOpenFile, options.to_tcl_options?)
|
84
|
+
path = result.respond_to?(:to_str) ? result.to_str : result.to_s?
|
85
|
+
path unless path.empty?
|
84
86
|
end
|
85
|
-
end
|
87
|
+
end
|
@@ -78,6 +78,8 @@ module Tk
|
|
78
78
|
# Extensions without a full stop character (e.g. "~") are allowed but may not
|
79
79
|
# work on all platforms.
|
80
80
|
def get_save_file(options = None)
|
81
|
-
Tk.execute(:tk_getSaveFile, options.to_tcl_options?)
|
81
|
+
result = Tk.execute(:tk_getSaveFile, options.to_tcl_options?)
|
82
|
+
path = result.respond_to?(:to_str) ? result.to_str : result.to_s?
|
83
|
+
path unless path.empty?
|
82
84
|
end
|
83
|
-
end
|
85
|
+
end
|
data/lib/ffi-tk/command/grab.rb
CHANGED
@@ -25,7 +25,7 @@ module Tk
|
|
25
25
|
# mouse motion events are reported to window, and window entry and window exit
|
26
26
|
# events are ignored.
|
27
27
|
#
|
28
|
-
# The grab subtree
|
28
|
+
# The grab subtree owns the pointer: windows outside the grab subtree
|
29
29
|
# will be visible on the screen but they will be insensitive until the grab is
|
30
30
|
# released. The tree of windows underneath the grab window can include
|
31
31
|
# top-level windows, in which case all of those top-level windows and their
|
@@ -138,4 +138,4 @@ module Tk
|
|
138
138
|
Tk.execute(:grab, :set, '-global', window)
|
139
139
|
end
|
140
140
|
end
|
141
|
-
end
|
141
|
+
end
|
data/lib/ffi-tk/command/grid.rb
CHANGED
@@ -70,9 +70,9 @@ module Tk
|
|
70
70
|
# If only an option is specified, with no value, the current value of that
|
71
71
|
# option is returned.
|
72
72
|
# If only the master window and index is specified, all the current settings
|
73
|
-
# are returned in a list of
|
74
|
-
def self.columnconfigure(master, index, options =
|
75
|
-
Tk.execute('grid', 'columnconfigure', master, index, options)
|
73
|
+
# are returned in a list of "-option value" pairs.
|
74
|
+
def self.columnconfigure(master, index, options = None)
|
75
|
+
Tk.execute('grid', 'columnconfigure', master, index, options.to_tcl_options?)
|
76
76
|
end
|
77
77
|
|
78
78
|
# The arguments consist of the names of one or more slave windows followed
|
@@ -97,7 +97,7 @@ module Tk
|
|
97
97
|
# Returns a list whose elements are the current configuration state of the
|
98
98
|
# slave given by slave in the same option-value form that might be specified
|
99
99
|
# to grid configure.
|
100
|
-
# The first two elements of the list are
|
100
|
+
# The first two elements of the list are "-in master" where master is
|
101
101
|
# the slave's master.
|
102
102
|
def self.info(slave)
|
103
103
|
Tk.execute('grid', 'info', slave)
|
@@ -148,7 +148,7 @@ module Tk
|
|
148
148
|
# If only an option is specified, with no value, the current value of that
|
149
149
|
# option is returned.
|
150
150
|
# If only the master window and index is specified, all the current settings
|
151
|
-
# are returned in a list of
|
151
|
+
# are returned in a list of "-option value" pairs.
|
152
152
|
def self.rowconfigure(master, index, options = None)
|
153
153
|
Tk.execute('grid', 'rowconfigure', master, index, options.to_tcl_options?)
|
154
154
|
end
|
@@ -194,8 +194,8 @@ module Tk
|
|
194
194
|
end
|
195
195
|
|
196
196
|
# @see Grid::columnconfigure
|
197
|
-
def grid_columnconfigure(index, options =
|
198
|
-
Grid.columnconfigure(self, index, options
|
197
|
+
def grid_columnconfigure(index, options = None)
|
198
|
+
Grid.columnconfigure(self, index, options)
|
199
199
|
end
|
200
200
|
|
201
201
|
# @see Grid::configure
|
data/lib/ffi-tk/command/place.rb
CHANGED
@@ -32,11 +32,7 @@ module Tk
|
|
32
32
|
# option(s) to have the given value(s); in this case the command returns
|
33
33
|
# nil.
|
34
34
|
def self.configure(window, options = None)
|
35
|
-
|
36
|
-
Tk.execute('place', 'configure', window)
|
37
|
-
else
|
38
|
-
Tk.execute_only('place', 'configure', window, options)
|
39
|
-
end
|
35
|
+
Configure.common(Tk, [:place, :configure, window], options)
|
40
36
|
end
|
41
37
|
|
42
38
|
def self.forget(window)
|
@@ -88,4 +84,4 @@ module Tk
|
|
88
84
|
Place.slaves(self)
|
89
85
|
end
|
90
86
|
end
|
91
|
-
end
|
87
|
+
end
|
@@ -31,14 +31,14 @@ module Tk
|
|
31
31
|
# This command shifts the view in the window left or right according to
|
32
32
|
# number and what.
|
33
33
|
# What must be units, pages or pixels.
|
34
|
-
# If what is units or pages then number
|
35
|
-
# number may be specified in any of the forms
|
36
|
-
# Tk_GetPixels, such as
|
37
|
-
# nearest
|
34
|
+
# If what is units or pages then number must be an integer, otherwise
|
35
|
+
# number may be specified in any of the forms acceptable to
|
36
|
+
# Tk_GetPixels, such as "2.0c" or "1i" (the result is rounded to the
|
37
|
+
# nearest integer value.
|
38
38
|
# If no units are given, pixels are assumed).
|
39
|
-
# If what is units, the
|
40
|
-
# average-width characters on the display; if
|
41
|
-
# adjusts by number screenfuls; if it is pixels then the
|
39
|
+
# If what is units, the view adjusts left or right by number
|
40
|
+
# average-width characters on the display; if it is pages then the view
|
41
|
+
# adjusts by number screenfuls; if it is pixels then the view adjusts by
|
42
42
|
# number pixels.
|
43
43
|
# If number is negative then characters farther to the left become visible;
|
44
44
|
# if it is positive then characters farther to the right become visible.
|
@@ -75,11 +75,11 @@ module Tk
|
|
75
75
|
# Fraction is a fraction between 0 and 1; 0 indicates the first pixel of
|
76
76
|
# the first character in the text, 0.33 indicates the pixel that is
|
77
77
|
# one-third the way through the text; and so on.
|
78
|
-
# Values close to 1
|
79
|
-
# text (1 actually refers to one
|
80
|
-
# such cases the widget will never scroll
|
81
|
-
# value of 1 will effectively be rounded back to
|
82
|
-
# ensures the last pixel is at the bottom of the window, and some
|
78
|
+
# Values close to 1 will indicate values close to the last pixel in the
|
79
|
+
# text (1 actually refers to one pixel beyond the last pixel), but in
|
80
|
+
# such cases the widget will never scroll beyond the last pixel, and so a
|
81
|
+
# value of 1 will effectively be rounded back to whatever fraction
|
82
|
+
# ensures the last pixel is at the bottom of the window, and some other
|
83
83
|
# pixel is at the top.
|
84
84
|
def yview_moveto(fraction)
|
85
85
|
execute_only(:yview, :moveto, fraction)
|
@@ -88,14 +88,14 @@ module Tk
|
|
88
88
|
# This command adjust the view in the window up or down according to number
|
89
89
|
# and what.
|
90
90
|
# What must be units, pages or pixels.
|
91
|
-
# If what is units or pages then number
|
92
|
-
# number may be specified in any of the forms
|
93
|
-
# Tk_GetPixels, such as
|
94
|
-
# nearest
|
91
|
+
# If what is units or pages then number must be an integer, otherwise
|
92
|
+
# number may be specified in any of the forms acceptable to
|
93
|
+
# Tk_GetPixels, such as "2.0c" or "1i" (the result is rounded to the
|
94
|
+
# nearest integer value.
|
95
95
|
# If no units are given, pixels are assumed).
|
96
|
-
# If what is units, the
|
97
|
-
# display; if it is pages then the
|
98
|
-
# it is pixels then the view adjusts by number
|
96
|
+
# If what is units, the view adjusts up or down by number lines on the
|
97
|
+
# display; if it is pages then the view adjusts by number screenfuls; if
|
98
|
+
# it is pixels then the view adjusts by number pixels.
|
99
99
|
# If number is negative then earlier positions in the text become visible;
|
100
100
|
# if it is positive then later positions in the text become visible.
|
101
101
|
def yview_scroll(number, what)
|
@@ -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,21 +14,48 @@ 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
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
[key
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
20
|
+
if first.respond_to?(:to_ary)
|
21
|
+
hash = {}
|
22
|
+
|
23
|
+
each do |key, _, _, _, value|
|
24
|
+
next if !value || (value.respond_to?(:empty?) && value.empty?)
|
25
|
+
key = key.sub(/^-/, '').to_sym
|
26
|
+
|
27
|
+
hash[key] =
|
28
|
+
case hint = hints[key]
|
29
|
+
when :boolean
|
30
|
+
Tk.boolean(value)
|
31
|
+
when :symbol
|
32
|
+
value.to_sym
|
33
|
+
when :float
|
34
|
+
Float(value)
|
35
|
+
else
|
36
|
+
value
|
37
|
+
end
|
30
38
|
end
|
31
|
-
|
39
|
+
|
40
|
+
hash
|
41
|
+
elsif first =~ /^-/
|
42
|
+
::Hash[each_slice(2).map{|key, value|
|
43
|
+
key = key.sub(/^-/, '').to_sym
|
44
|
+
|
45
|
+
case hint = hints[key]
|
46
|
+
when :boolean
|
47
|
+
[key, Tk.boolean(value)]
|
48
|
+
when :symbol
|
49
|
+
[key, value.to_sym]
|
50
|
+
when :float
|
51
|
+
[key, Float(value)]
|
52
|
+
else
|
53
|
+
[key, value]
|
54
|
+
end
|
55
|
+
}]
|
56
|
+
else
|
57
|
+
self
|
58
|
+
end
|
32
59
|
end
|
33
60
|
end
|
34
61
|
|
@@ -71,7 +98,7 @@ module Tk
|
|
71
98
|
|
72
99
|
module String
|
73
100
|
def to_tcl
|
74
|
-
TclString.new('"' << gsub(/[\[\]$"\\]/, '\\\\\&') << '"')
|
101
|
+
TclString.new('"' << gsub(/[\[\]{}$"\\]/, '\\\\\&') << '"')
|
75
102
|
end
|
76
103
|
|
77
104
|
def to_tcl_option
|
data/lib/ffi-tk/event/data.rb
CHANGED
@@ -17,24 +17,24 @@ module Tk
|
|
17
17
|
['%f', :String, :focus ],
|
18
18
|
['%h', :Integer, :height ],
|
19
19
|
['%i', :String, :window ],
|
20
|
-
['%k', :
|
20
|
+
['%k', :Integer, :keycode ],
|
21
21
|
['%m', :String, :mode ],
|
22
22
|
['%o', :String, :override_redirect ],
|
23
23
|
['%p', :String, :place ],
|
24
24
|
['%s', :String, :state ],
|
25
|
-
['%t', :
|
25
|
+
['%t', :Integer, :time ],
|
26
26
|
['%w', :Integer, :width ],
|
27
27
|
['%x', :Integer, :x ],
|
28
28
|
['%y', :Integer, :y ],
|
29
29
|
['%A', :String, :unicode ],
|
30
30
|
['%B', :Integer, :border_width ],
|
31
|
-
['%D', :
|
32
|
-
['%E', :
|
31
|
+
['%D', :Integer, :mousewheel_delta ],
|
32
|
+
['%E', :Integer, :send_event ],
|
33
33
|
['%K', :String, :keysym ],
|
34
|
-
['%N', :
|
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,9 +45,9 @@ module Tk
|
|
45
45
|
super id, sequence
|
46
46
|
|
47
47
|
PROPERTIES.each do |code, conv, name|
|
48
|
-
|
49
|
-
|
50
|
-
converted
|
48
|
+
value = properties.shift
|
49
|
+
converted = __send__(conv, value)
|
50
|
+
next if converted == '??'
|
51
51
|
self[name] = converted
|
52
52
|
end
|
53
53
|
end
|
@@ -55,6 +55,36 @@ module Tk
|
|
55
55
|
def call
|
56
56
|
Handler.invoke(id, self) if id
|
57
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
|
58
88
|
end
|
59
89
|
end
|
60
90
|
end
|