ffi-tk 2010.08.23 → 2018.02.20
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +2 -0
- data/.rubocop.yml +7 -0
- data/.rubocop_todo.yml +371 -0
- data/AUTHORS +4 -2
- data/CHANGELOG +302 -262
- data/Gemfile +10 -0
- data/Gemfile.lock +45 -0
- data/MANIFEST +6 -6
- data/README.md +1 -1
- data/Rakefile +12 -11
- data/bin/rwish +6 -5
- data/example/choose_color.rb +5 -4
- data/example/choose_directory.rb +5 -4
- data/example/dialog.rb +9 -8
- data/example/hello.rb +2 -1
- data/example/message_box.rb +8 -5
- data/example/option_menu.rb +4 -3
- data/example/popup.rb +4 -3
- data/example/set_palette.rb +5 -4
- data/example/text.rb +30 -30
- data/example/tile/kroc_demo_small.rb +51 -55
- data/example/tile/kroc_rb_demo.rb +74 -83
- data/example/tile/notebook.rb +6 -9
- data/example/tile/theme_hello.rb +6 -8
- data/example/tile/themes.rb +4 -2
- data/example/tile/treeview.rb +16 -14
- data/example/tkgo.rb +120 -88
- data/example/various.rb +8 -7
- data/example/wait.rb +3 -2
- data/ffi-tk.gemspec +21 -20
- data/gemset.nix +134 -0
- data/lib/ffi-tk.rb +10 -11
- data/lib/ffi-tk/command.rb +3 -2
- data/lib/ffi-tk/command/after.rb +8 -7
- data/lib/ffi-tk/command/bell.rb +2 -1
- data/lib/ffi-tk/command/bind.rb +1 -0
- data/lib/ffi-tk/command/bindtags.rb +1 -0
- data/lib/ffi-tk/command/cget.rb +31 -24
- data/lib/ffi-tk/command/choose_color.rb +2 -1
- data/lib/ffi-tk/command/choose_directory.rb +2 -1
- data/lib/ffi-tk/command/clipboard.rb +6 -5
- data/lib/ffi-tk/command/configure.rb +23 -21
- data/lib/ffi-tk/command/destroy.rb +2 -1
- data/lib/ffi-tk/command/dialog.rb +4 -3
- data/lib/ffi-tk/command/event.rb +1 -0
- data/lib/ffi-tk/command/focus.rb +2 -1
- data/lib/ffi-tk/command/font.rb +12 -9
- data/lib/ffi-tk/command/get_open_file.rb +1 -0
- data/lib/ffi-tk/command/get_save_file.rb +1 -0
- data/lib/ffi-tk/command/grab.rb +2 -1
- data/lib/ffi-tk/command/grid.rb +7 -6
- data/lib/ffi-tk/command/image.rb +5 -4
- data/lib/ffi-tk/command/lower.rb +1 -0
- data/lib/ffi-tk/command/message_box.rb +2 -1
- data/lib/ffi-tk/command/option_menu.rb +3 -2
- data/lib/ffi-tk/command/pack.rb +5 -4
- data/lib/ffi-tk/command/place.rb +5 -4
- data/lib/ffi-tk/command/popup.rb +2 -1
- data/lib/ffi-tk/command/raise.rb +1 -0
- data/lib/ffi-tk/command/scrollable.rb +7 -10
- data/lib/ffi-tk/command/selection.rb +4 -3
- data/lib/ffi-tk/command/set_palette.rb +2 -1
- data/lib/ffi-tk/command/tk_cmd.rb +1 -0
- data/lib/ffi-tk/command/vars.rb +2 -1
- data/lib/ffi-tk/command/wait.rb +2 -1
- data/lib/ffi-tk/command/winfo.rb +9 -8
- data/lib/ffi-tk/command/wm.rb +11 -10
- data/lib/ffi-tk/core_extensions.rb +5 -4
- data/lib/ffi-tk/event/data.rb +32 -31
- data/lib/ffi-tk/event/handler.rb +4 -3
- data/lib/ffi-tk/ffi/tcl.rb +42 -31
- data/lib/ffi-tk/ffi/tcl/cmd_proc.rb +2 -1
- data/lib/ffi-tk/ffi/tcl/eval_result.rb +47 -8
- data/lib/ffi-tk/ffi/tcl/interp.rb +7 -4
- data/lib/ffi-tk/ffi/tcl/obj.rb +7 -32
- data/lib/ffi-tk/ffi/tcl/time.rb +2 -1
- data/lib/ffi-tk/ffi/tk.rb +8 -7
- data/lib/ffi-tk/geometry.rb +20 -17
- data/lib/ffi-tk/thread_sender.rb +1 -0
- data/lib/ffi-tk/tk.rb +23 -23
- data/lib/ffi-tk/variable.rb +25 -3
- data/lib/ffi-tk/version.rb +1 -1
- data/lib/ffi-tk/widget.rb +2 -1
- data/lib/ffi-tk/widget/button.rb +4 -1
- data/lib/ffi-tk/widget/canvas.rb +18 -15
- data/lib/ffi-tk/widget/canvas/arc.rb +2 -1
- data/lib/ffi-tk/widget/canvas/bitmap.rb +2 -1
- data/lib/ffi-tk/widget/canvas/image.rb +2 -1
- data/lib/ffi-tk/widget/canvas/item.rb +4 -4
- data/lib/ffi-tk/widget/canvas/line.rb +2 -1
- data/lib/ffi-tk/widget/canvas/oval.rb +2 -1
- data/lib/ffi-tk/widget/canvas/polygon.rb +2 -1
- data/lib/ffi-tk/widget/canvas/rectangle.rb +2 -1
- data/lib/ffi-tk/widget/canvas/text.rb +2 -1
- data/lib/ffi-tk/widget/canvas/window.rb +2 -1
- data/lib/ffi-tk/widget/checkbutton.rb +4 -1
- data/lib/ffi-tk/widget/entry.rb +4 -1
- data/lib/ffi-tk/widget/frame.rb +4 -1
- data/lib/ffi-tk/widget/label.rb +4 -1
- data/lib/ffi-tk/widget/labelframe.rb +4 -1
- data/lib/ffi-tk/widget/listbox.rb +5 -2
- data/lib/ffi-tk/widget/menu.rb +4 -1
- data/lib/ffi-tk/widget/menubutton.rb +4 -1
- data/lib/ffi-tk/widget/message.rb +4 -1
- data/lib/ffi-tk/widget/panedwindow.rb +5 -2
- data/lib/ffi-tk/widget/radiobutton.rb +4 -1
- data/lib/ffi-tk/widget/root.rb +1 -0
- data/lib/ffi-tk/widget/scale.rb +4 -1
- data/lib/ffi-tk/widget/scrollbar.rb +4 -1
- data/lib/ffi-tk/widget/spinbox.rb +4 -1
- data/lib/ffi-tk/widget/text.rb +20 -16
- data/lib/ffi-tk/widget/text/peer.rb +1 -0
- data/lib/ffi-tk/widget/tile.rb +2 -1
- data/lib/ffi-tk/widget/tile/button.rb +4 -1
- data/lib/ffi-tk/widget/tile/checkbutton.rb +4 -1
- data/lib/ffi-tk/widget/tile/combobox.rb +5 -2
- data/lib/ffi-tk/widget/tile/entry.rb +4 -1
- data/lib/ffi-tk/widget/tile/frame.rb +4 -1
- data/lib/ffi-tk/widget/tile/label.rb +4 -2
- data/lib/ffi-tk/widget/tile/labelframe.rb +4 -1
- data/lib/ffi-tk/widget/tile/menubutton.rb +4 -1
- data/lib/ffi-tk/widget/tile/notebook.rb +4 -1
- data/lib/ffi-tk/widget/tile/panedwindow.rb +4 -1
- data/lib/ffi-tk/widget/tile/progressbar.rb +4 -2
- data/lib/ffi-tk/widget/tile/radiobutton.rb +4 -1
- data/lib/ffi-tk/widget/tile/scale.rb +4 -1
- data/lib/ffi-tk/widget/tile/scrollbar.rb +7 -4
- data/lib/ffi-tk/widget/tile/separator.rb +4 -1
- data/lib/ffi-tk/widget/tile/sizegrip.rb +4 -1
- data/lib/ffi-tk/widget/tile/style.rb +16 -17
- data/lib/ffi-tk/widget/tile/treeview.rb +11 -5
- data/lib/ffi-tk/widget/toplevel.rb +4 -1
- data/shell.nix +19 -0
- data/spec/ffi-tk/command/bind.rb +5 -4
- data/spec/ffi-tk/command/bindtags.rb +2 -1
- data/spec/ffi-tk/command/clipboard.rb +4 -3
- data/spec/ffi-tk/command/font.rb +20 -19
- data/spec/ffi-tk/command/image.rb +13 -5
- data/spec/ffi-tk/command/pack.rb +3 -2
- data/spec/ffi-tk/command/place.rb +4 -3
- data/spec/ffi-tk/command/selection.rb +2 -1
- data/spec/ffi-tk/command/vars.rb +3 -2
- data/spec/ffi-tk/command/winfo.rb +10 -10
- data/spec/ffi-tk/command/wm.rb +23 -22
- data/spec/ffi-tk/event.rb +23 -21
- data/spec/ffi-tk/tile/button.rb +8 -8
- data/spec/ffi-tk/tile/checkbutton.rb +1 -1
- data/spec/ffi-tk/tile/combobox.rb +11 -12
- data/spec/ffi-tk/tile/entry.rb +18 -19
- data/spec/ffi-tk/tile/frame.rb +13 -13
- data/spec/ffi-tk/tile/label.rb +2 -2
- data/spec/ffi-tk/tile/labelframe.rb +1 -1
- data/spec/ffi-tk/tile/menubutton.rb +1 -1
- data/spec/ffi-tk/tile/notebook.rb +22 -20
- data/spec/ffi-tk/tile/panedwindow.rb +1 -1
- data/spec/ffi-tk/tile/progressbar.rb +1 -1
- data/spec/ffi-tk/tile/radiobutton.rb +1 -1
- data/spec/ffi-tk/tile/scale.rb +1 -1
- data/spec/ffi-tk/tile/scrollbar.rb +1 -16
- data/spec/ffi-tk/tile/separator.rb +2 -2
- data/spec/ffi-tk/tile/sizegrip.rb +1 -1
- data/spec/ffi-tk/tile/style.rb +63 -65
- data/spec/ffi-tk/tile/treeview.rb +11 -10
- data/spec/ffi-tk/variable.rb +5 -4
- data/spec/ffi-tk/widget/button.rb +3 -2
- data/spec/ffi-tk/widget/canvas.rb +59 -58
- data/spec/ffi-tk/widget/checkbutton.rb +6 -5
- data/spec/ffi-tk/widget/entry.rb +112 -103
- data/spec/ffi-tk/widget/frame.rb +2 -1
- data/spec/ffi-tk/widget/label.rb +2 -1
- data/spec/ffi-tk/widget/labelframe.rb +1 -0
- data/spec/ffi-tk/widget/listbox.rb +5 -4
- data/spec/ffi-tk/widget/menu.rb +3 -2
- data/spec/ffi-tk/widget/menubutton.rb +1 -0
- data/spec/ffi-tk/widget/message.rb +1 -0
- data/spec/ffi-tk/widget/panedwindow.rb +1 -0
- data/spec/ffi-tk/widget/radiobutton.rb +1 -0
- data/spec/ffi-tk/widget/root.rb +2 -1
- data/spec/ffi-tk/widget/scale.rb +1 -0
- data/spec/ffi-tk/widget/scrollbar.rb +1 -0
- data/spec/ffi-tk/widget/spinbox.rb +1 -0
- data/spec/ffi-tk/widget/text.rb +63 -54
- data/spec/ffi-tk/widget/toplevel.rb +1 -0
- data/spec/helper.rb +3 -1
- data/tasks/authors.rake +3 -2
- data/tasks/bacon.rake +13 -11
- data/tasks/changelog.rake +1 -0
- data/tasks/gem.rake +13 -11
- data/tasks/manifest.rake +2 -1
- data/tasks/release.rake +11 -32
- data/tasks/reversion.rake +2 -1
- metadata +52 -75
- data/spec/ffi-tk/command/grid.rb +0 -6
- data/tasks/gem_setup.rake +0 -113
- data/tasks/grancher.rake +0 -12
- data/tasks/rcov.rake +0 -17
- data/tasks/setup.rake +0 -12
- data/tasks/ycov.rake +0 -84
data/gemset.nix
ADDED
@@ -0,0 +1,134 @@
|
|
1
|
+
{
|
2
|
+
ast = {
|
3
|
+
source = {
|
4
|
+
remotes = ["https://rubygems.org"];
|
5
|
+
sha256 = "0pp82blr5fakdk27d1d21xq9zchzb6vmyb1zcsl520s3ygvprn8m";
|
6
|
+
type = "gem";
|
7
|
+
};
|
8
|
+
version = "2.3.0";
|
9
|
+
};
|
10
|
+
bacon = {
|
11
|
+
source = {
|
12
|
+
remotes = ["https://rubygems.org"];
|
13
|
+
sha256 = "1f06gdj77bmwzc1k5iragl1595hbn67yc7sqvs56ca8plrr2vmai";
|
14
|
+
type = "gem";
|
15
|
+
};
|
16
|
+
version = "1.2.0";
|
17
|
+
};
|
18
|
+
coderay = {
|
19
|
+
source = {
|
20
|
+
remotes = ["https://rubygems.org"];
|
21
|
+
sha256 = "15vav4bhcc2x3jmi3izb11l4d9f3xv8hp2fszb7iqmpsccv1pz4y";
|
22
|
+
type = "gem";
|
23
|
+
};
|
24
|
+
version = "1.1.2";
|
25
|
+
};
|
26
|
+
docile = {
|
27
|
+
source = {
|
28
|
+
remotes = ["https://rubygems.org"];
|
29
|
+
sha256 = "0m8j31whq7bm5ljgmsrlfkiqvacrw6iz9wq10r3gwrv5785y8gjx";
|
30
|
+
type = "gem";
|
31
|
+
};
|
32
|
+
version = "1.1.5";
|
33
|
+
};
|
34
|
+
ffi = {
|
35
|
+
source = {
|
36
|
+
remotes = ["https://rubygems.org"];
|
37
|
+
sha256 = "1nkcrmxqr0vb1y4rwliclwlj2ajsi4ddpdx2gvzjy0xbkk5iqzfp";
|
38
|
+
type = "gem";
|
39
|
+
};
|
40
|
+
version = "1.9.14";
|
41
|
+
};
|
42
|
+
json = {
|
43
|
+
source = {
|
44
|
+
remotes = ["https://rubygems.org"];
|
45
|
+
sha256 = "1lhinj9vj7mw59jqid0bjn2hlfcnq02bnvsx9iv81nl2han603s0";
|
46
|
+
type = "gem";
|
47
|
+
};
|
48
|
+
version = "2.0.2";
|
49
|
+
};
|
50
|
+
method_source = {
|
51
|
+
source = {
|
52
|
+
remotes = ["https://rubygems.org"];
|
53
|
+
sha256 = "0xqj21j3vfq4ldia6i2akhn2qd84m0iqcnsl49kfpq3xk6x0dzgn";
|
54
|
+
type = "gem";
|
55
|
+
};
|
56
|
+
version = "0.9.0";
|
57
|
+
};
|
58
|
+
parser = {
|
59
|
+
dependencies = ["ast"];
|
60
|
+
source = {
|
61
|
+
remotes = ["https://rubygems.org"];
|
62
|
+
sha256 = "1nply96nqrkgx8d3jay31sfy5p4q74dg8ymln0mdazxx5cz2n8bq";
|
63
|
+
type = "gem";
|
64
|
+
};
|
65
|
+
version = "2.3.3.1";
|
66
|
+
};
|
67
|
+
powerpack = {
|
68
|
+
source = {
|
69
|
+
remotes = ["https://rubygems.org"];
|
70
|
+
sha256 = "1fnn3fli5wkzyjl4ryh0k90316shqjfnhydmc7f8lqpi0q21va43";
|
71
|
+
type = "gem";
|
72
|
+
};
|
73
|
+
version = "0.1.1";
|
74
|
+
};
|
75
|
+
pry = {
|
76
|
+
dependencies = ["coderay" "method_source"];
|
77
|
+
source = {
|
78
|
+
remotes = ["https://rubygems.org"];
|
79
|
+
sha256 = "1mh312k3y94sj0pi160wpia0ps8f4kmzvm505i6bvwynfdh7v30g";
|
80
|
+
type = "gem";
|
81
|
+
};
|
82
|
+
version = "0.11.3";
|
83
|
+
};
|
84
|
+
rainbow = {
|
85
|
+
source = {
|
86
|
+
remotes = ["https://rubygems.org"];
|
87
|
+
sha256 = "0frz90gyi5k26jx3ham1x661hpkxf82rkxb85nakcz70dna7i8ri";
|
88
|
+
type = "gem";
|
89
|
+
};
|
90
|
+
version = "2.2.1";
|
91
|
+
};
|
92
|
+
rubocop = {
|
93
|
+
dependencies = ["parser" "powerpack" "rainbow" "ruby-progressbar" "unicode-display_width"];
|
94
|
+
source = {
|
95
|
+
remotes = ["https://rubygems.org"];
|
96
|
+
sha256 = "0604qa0s0xcq0avnh9aa6iw58azpz6a7bavcs0ch61xnaz0qfl0c";
|
97
|
+
type = "gem";
|
98
|
+
};
|
99
|
+
version = "0.46.0";
|
100
|
+
};
|
101
|
+
ruby-progressbar = {
|
102
|
+
source = {
|
103
|
+
remotes = ["https://rubygems.org"];
|
104
|
+
sha256 = "1qzc7s7r21bd7ah06kskajc2bjzkr9y0v5q48y0xwh2l55axgplm";
|
105
|
+
type = "gem";
|
106
|
+
};
|
107
|
+
version = "1.8.1";
|
108
|
+
};
|
109
|
+
simplecov = {
|
110
|
+
dependencies = ["docile" "json" "simplecov-html"];
|
111
|
+
source = {
|
112
|
+
remotes = ["https://rubygems.org"];
|
113
|
+
sha256 = "0ffhyrfnq2zm2mc1742a4hqy475g3qa1zf6yfldwg1ldh5sn3qbx";
|
114
|
+
type = "gem";
|
115
|
+
};
|
116
|
+
version = "0.12.0";
|
117
|
+
};
|
118
|
+
simplecov-html = {
|
119
|
+
source = {
|
120
|
+
remotes = ["https://rubygems.org"];
|
121
|
+
sha256 = "1qni8g0xxglkx25w54qcfbi4wjkpvmb28cb7rj5zk3iqynjcdrqf";
|
122
|
+
type = "gem";
|
123
|
+
};
|
124
|
+
version = "0.10.0";
|
125
|
+
};
|
126
|
+
unicode-display_width = {
|
127
|
+
source = {
|
128
|
+
remotes = ["https://rubygems.org"];
|
129
|
+
sha256 = "0lfkyv3c6nyy96jv8wvy33x6g1gmigbm1ficpb2mzhyk07assrnr";
|
130
|
+
type = "gem";
|
131
|
+
};
|
132
|
+
version = "1.1.2";
|
133
|
+
};
|
134
|
+
}
|
data/lib/ffi-tk.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'thread'
|
2
3
|
require 'ffi'
|
3
4
|
|
@@ -7,7 +8,9 @@ module Tk
|
|
7
8
|
TCL_LIBPATH = ENV['TCL_LIBPATH'].to_s.split(':')
|
8
9
|
TK_LIBPATH = ENV[ 'TK_LIBPATH'].to_s.split(':')
|
9
10
|
|
10
|
-
|
11
|
+
HOST_OS = RbConfig::CONFIG['host_os']
|
12
|
+
|
13
|
+
if HOST_OS =~ /darwin/
|
11
14
|
if ENV['NO_AQUA'] || ENV['USE_X11'] # macports-x11 libtk
|
12
15
|
TCL_LIBPATH << '/opt/local/lib/libtcl8.5.dylib'
|
13
16
|
TK_LIBPATH << '/opt/local/lib/libtk8.5.dylib'
|
@@ -20,17 +23,13 @@ module Tk
|
|
20
23
|
TCL_LIBPATH << 'tcl' << 'tcl86' << 'tcl85' << 'tcl8.6' << 'tcl8.5'
|
21
24
|
TK_LIBPATH << 'tk' << 'tk86' << 'tk85' << 'tk8.6' << 'tk8.5'
|
22
25
|
|
26
|
+
# In some cases Tk has trouble running, this seems to happen on windows and
|
27
|
+
# OSX/TkAqua mostly.
|
28
|
+
# In these cases please use:
|
29
|
+
# module Tk; RUN_EVENTLOOP_ON_MAIN_THREAD = true; end
|
30
|
+
# before you require 'tk'
|
23
31
|
unless const_defined?(:RUN_EVENTLOOP_ON_MAIN_THREAD)
|
24
|
-
|
25
|
-
# In some cases Tk has trouble running, this seems to happen on windows and
|
26
|
-
# OSX/TkAqua mostly.
|
27
|
-
# In these cases please use:
|
28
|
-
# module Tk; RUN_EVENTLOOP_ON_MAIN_THREAD = true; end
|
29
|
-
# before you require 'tk'
|
30
|
-
RUN_EVENTLOOP_ON_MAIN_THREAD = true
|
31
|
-
else
|
32
|
-
RUN_EVENTLOOP_ON_MAIN_THREAD = false
|
33
|
-
end
|
32
|
+
RUN_EVENTLOOP_ON_MAIN_THREAD = HOST_OS =~ /darwin/
|
34
33
|
end
|
35
34
|
|
36
35
|
DONT_WAIT = 1 << 1
|
data/lib/ffi-tk/command.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Tk
|
2
3
|
require 'ffi-tk/command/choose_color'
|
3
4
|
require 'ffi-tk/command/choose_directory'
|
5
|
+
require 'ffi-tk/command/dialog'
|
4
6
|
require 'ffi-tk/command/event'
|
5
7
|
require 'ffi-tk/command/get_open_file'
|
6
8
|
require 'ffi-tk/command/get_save_file'
|
@@ -19,7 +21,6 @@ module Tk
|
|
19
21
|
autoload :Clipboard, 'ffi-tk/command/clipboard'
|
20
22
|
autoload :Configure, 'ffi-tk/command/configure'
|
21
23
|
autoload :Destroy, 'ffi-tk/command/destroy'
|
22
|
-
autoload :Dialog, 'ffi-tk/command/dialog'
|
23
24
|
autoload :Focus, 'ffi-tk/command/focus'
|
24
25
|
autoload :Font, 'ffi-tk/command/font'
|
25
26
|
autoload :Grab, 'ffi-tk/command/grab'
|
@@ -35,5 +36,5 @@ module Tk
|
|
35
36
|
autoload :WM, 'ffi-tk/command/wm'
|
36
37
|
autoload :Wait, 'ffi-tk/command/wait'
|
37
38
|
autoload :Winfo, 'ffi-tk/command/winfo'
|
38
|
-
autoload :Scrollable,'ffi-tk/command/scrollable'
|
39
|
+
autoload :Scrollable, 'ffi-tk/command/scrollable'
|
39
40
|
end
|
data/lib/ffi-tk/command/after.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Tk
|
2
3
|
module After
|
3
4
|
module_function
|
@@ -7,11 +8,11 @@ module Tk
|
|
7
8
|
id = nil
|
8
9
|
block = Proc.new
|
9
10
|
|
10
|
-
wrap = lambda
|
11
|
+
wrap = lambda do |*_args|
|
11
12
|
block.call
|
12
13
|
Tk.unregister_proc(id)
|
13
14
|
true
|
14
|
-
|
15
|
+
end
|
15
16
|
|
16
17
|
id, command = Tk.register_proc(wrap, 'after_ms')
|
17
18
|
Tk.execute_only(:after, ms, command)
|
@@ -20,14 +21,14 @@ module Tk
|
|
20
21
|
end
|
21
22
|
end
|
22
23
|
|
23
|
-
def idle
|
24
|
+
def idle
|
24
25
|
id = nil
|
25
|
-
|
26
|
-
wrap = lambda
|
27
|
-
|
26
|
+
|
27
|
+
wrap = lambda do |*_args|
|
28
|
+
yield
|
28
29
|
Tk.unregister_proc(id)
|
29
30
|
true
|
30
|
-
|
31
|
+
end
|
31
32
|
|
32
33
|
id, command = Tk.register_proc(wrap, 'after_idle')
|
33
34
|
Tk.execute_only(:after, :idle, command)
|
data/lib/ffi-tk/command/bell.rb
CHANGED
data/lib/ffi-tk/command/bind.rb
CHANGED
data/lib/ffi-tk/command/cget.rb
CHANGED
@@ -1,34 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Tk
|
2
3
|
module Cget
|
3
4
|
CGET_MAP = {}
|
4
5
|
|
5
|
-
insert = lambda
|
6
|
-
array.each{|option| CGET_MAP["-#{option}"] = type }
|
6
|
+
insert = lambda do |type, array|
|
7
|
+
array.each { |option| CGET_MAP["-#{option}"] = type }
|
8
|
+
end
|
7
9
|
|
8
|
-
insert[:integer, %w
|
10
|
+
insert[:integer, %w(
|
9
11
|
height width maxundo spacing1 spacing2 spacing3 borderwidth bd
|
10
12
|
highlightthickness insertborderwidth insertofftime insertontime
|
11
13
|
insertwidth padx pady selectborderwidth endline startline length
|
12
14
|
maximum
|
13
|
-
]
|
14
|
-
insert[:boolean, %w
|
15
|
+
)]
|
16
|
+
insert[:boolean, %w(
|
15
17
|
autoseparators blockcursor undo exportselection setgrid takefocus
|
16
|
-
]
|
17
|
-
insert[:color, %w
|
18
|
+
)]
|
19
|
+
insert[:color, %w(
|
18
20
|
inactiveselectbackground disabledbackground disabledforeground background
|
19
21
|
bg foreground fg highlightbackground highlightcolor insertbackground
|
20
22
|
selectbackground selectforeground readonlybackground
|
21
|
-
]
|
22
|
-
insert[:command, %w
|
23
|
+
)]
|
24
|
+
insert[:command, %w(
|
23
25
|
invalidcommand invcmd yscrollcommand xscrollcommand validatecommand
|
24
26
|
command vcmd
|
25
|
-
]
|
26
|
-
insert[:string, %w
|
27
|
-
insert[:font, %w
|
28
|
-
insert[:symbol, %w
|
29
|
-
insert[:variable, %w
|
30
|
-
insert[:bitmap, %w
|
31
|
-
insert[:list, %w
|
27
|
+
)]
|
28
|
+
insert[:string, %w(tabs cursor text show default class)]
|
29
|
+
insert[:font, %w(font)]
|
30
|
+
insert[:symbol, %w(wrap tabstyle relief justify validate orient mode selectmode)]
|
31
|
+
insert[:variable, %w(textvariable)]
|
32
|
+
insert[:bitmap, %w(stipple)]
|
33
|
+
insert[:list, %w(padding state style columns displaycolumns)]
|
32
34
|
|
33
35
|
def cget(option)
|
34
36
|
option = option.to_tcl_option
|
@@ -41,26 +43,31 @@ module Tk
|
|
41
43
|
if type = CGET_MAP[name.to_tcl_option]
|
42
44
|
type_to_ruby(type, value)
|
43
45
|
else
|
44
|
-
raise
|
46
|
+
raise 'Unknown type for %p: %p' % [name, value]
|
45
47
|
end
|
46
48
|
end
|
47
49
|
|
48
50
|
def type_to_ruby(type, value)
|
49
51
|
case type
|
50
52
|
when :integer
|
51
|
-
value.to_i
|
53
|
+
value.respond_to?(:to_i?) ? value.to_i? : value.to_i
|
52
54
|
when :symbol
|
53
|
-
value
|
55
|
+
value&.to_sym
|
54
56
|
when :boolean
|
55
57
|
Tk.boolean(value)
|
56
58
|
when :color, :string, :font, :bitmap
|
57
59
|
value.respond_to?(:to_s?) ? value.to_s? : value
|
58
60
|
when :variable
|
59
|
-
if
|
60
|
-
Variable.new(name)
|
61
|
-
end
|
61
|
+
Variable.new(value.to_s?) if value.respond_to?(:to_s?)
|
62
62
|
when :list
|
63
|
-
value
|
63
|
+
case value
|
64
|
+
when Array
|
65
|
+
value
|
66
|
+
when String
|
67
|
+
value.split
|
68
|
+
else
|
69
|
+
value.to_a
|
70
|
+
end
|
64
71
|
when :float
|
65
72
|
value.to_f
|
66
73
|
when :pathname
|
@@ -69,7 +76,7 @@ module Tk
|
|
69
76
|
string = value.to_s
|
70
77
|
string unless string.empty?
|
71
78
|
else
|
72
|
-
raise
|
79
|
+
raise 'Unknown type: %p: %p' % [type, value]
|
73
80
|
end
|
74
81
|
end
|
75
82
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Tk
|
2
3
|
# Manipulate Tk clipboard
|
3
4
|
#
|
@@ -13,7 +14,7 @@ module Tk
|
|
13
14
|
end
|
14
15
|
|
15
16
|
def clipboard_append(options = {})
|
16
|
-
Clipboard.append({displayof: self}.merge(options))
|
17
|
+
Clipboard.append({ displayof: self }.merge(options))
|
17
18
|
end
|
18
19
|
|
19
20
|
def clipboard_get(type = None)
|
@@ -76,10 +77,10 @@ module Tk
|
|
76
77
|
|
77
78
|
format = format.to_s.upcase if format
|
78
79
|
|
79
|
-
args <<
|
80
|
-
args <<
|
81
|
-
args <<
|
82
|
-
args <<
|
80
|
+
args << '-displayof' << displayof if displayof
|
81
|
+
args << '-format' << format.to_s.upcase if format
|
82
|
+
args << '-type' << type.to_s.upcase if type
|
83
|
+
args << '--' << data.to_s
|
83
84
|
|
84
85
|
Tk.execute_only(:clipboard, :append, *args)
|
85
86
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Tk
|
2
3
|
module Configure
|
3
4
|
# Query or modify the configuration options of the widget.
|
@@ -31,7 +32,7 @@ module Tk
|
|
31
32
|
elsif argument.respond_to?(:to_tcl_option)
|
32
33
|
receiver.execute(*invocation, argument.to_tcl_option)
|
33
34
|
else
|
34
|
-
raise ArgumentError,
|
35
|
+
raise ArgumentError, 'Invalid argument: %p' % [argument]
|
35
36
|
end
|
36
37
|
|
37
38
|
if result.respond_to?(:tcl_options_to_hash)
|
@@ -46,24 +47,25 @@ module Tk
|
|
46
47
|
end
|
47
48
|
|
48
49
|
def register_command(name, &block)
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
50
|
+
arg =
|
51
|
+
case name
|
52
|
+
when :validatecommand
|
53
|
+
# %d Type of action: 1 for insert, 0 for delete, or -1 for focus, forced
|
54
|
+
# or textvariable validation.
|
55
|
+
# %i Index of char string to be inserted/deleted, if any, otherwise -1.
|
56
|
+
# %P The value of the entry if the edit is allowed.
|
57
|
+
# If you are configuring the entry widget to have a new textvariable,
|
58
|
+
# this will be the value of that textvariable.
|
59
|
+
# %s The current value of entry prior to editing.
|
60
|
+
# %S The text string being inserted/deleted, if any, {} otherwise.
|
61
|
+
# %v The type of validation currently set.
|
62
|
+
# %V The type of validation that triggered the callback (key, focusin,
|
63
|
+
# focusout, forced).
|
64
|
+
# %W The name of the entry widget.
|
65
|
+
'%d %i %P %s %S %v %V %W'
|
66
|
+
else
|
67
|
+
''
|
68
|
+
end
|
67
69
|
|
68
70
|
@commands ||= {}
|
69
71
|
|
@@ -71,7 +73,7 @@ module Tk
|
|
71
73
|
id, command = Tk.register_proc(block, arg)
|
72
74
|
@commands[name] = id
|
73
75
|
|
74
|
-
|
76
|
+
command
|
75
77
|
end
|
76
78
|
|
77
79
|
def unregister_command(name, id = @commands[name])
|
@@ -82,7 +84,7 @@ module Tk
|
|
82
84
|
|
83
85
|
def unregister_commands
|
84
86
|
return unless @commands
|
85
|
-
@commands.each{|name, id| unregister_command(name, id) }
|
87
|
+
@commands.each { |name, id| unregister_command(name, id) }
|
86
88
|
end
|
87
89
|
end
|
88
90
|
end
|