ffi-tk 2010.08.23 → 2018.02.20
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.
- 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
|