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.
Files changed (199) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -0
  3. data/.rubocop.yml +7 -0
  4. data/.rubocop_todo.yml +371 -0
  5. data/AUTHORS +4 -2
  6. data/CHANGELOG +302 -262
  7. data/Gemfile +10 -0
  8. data/Gemfile.lock +45 -0
  9. data/MANIFEST +6 -6
  10. data/README.md +1 -1
  11. data/Rakefile +12 -11
  12. data/bin/rwish +6 -5
  13. data/example/choose_color.rb +5 -4
  14. data/example/choose_directory.rb +5 -4
  15. data/example/dialog.rb +9 -8
  16. data/example/hello.rb +2 -1
  17. data/example/message_box.rb +8 -5
  18. data/example/option_menu.rb +4 -3
  19. data/example/popup.rb +4 -3
  20. data/example/set_palette.rb +5 -4
  21. data/example/text.rb +30 -30
  22. data/example/tile/kroc_demo_small.rb +51 -55
  23. data/example/tile/kroc_rb_demo.rb +74 -83
  24. data/example/tile/notebook.rb +6 -9
  25. data/example/tile/theme_hello.rb +6 -8
  26. data/example/tile/themes.rb +4 -2
  27. data/example/tile/treeview.rb +16 -14
  28. data/example/tkgo.rb +120 -88
  29. data/example/various.rb +8 -7
  30. data/example/wait.rb +3 -2
  31. data/ffi-tk.gemspec +21 -20
  32. data/gemset.nix +134 -0
  33. data/lib/ffi-tk.rb +10 -11
  34. data/lib/ffi-tk/command.rb +3 -2
  35. data/lib/ffi-tk/command/after.rb +8 -7
  36. data/lib/ffi-tk/command/bell.rb +2 -1
  37. data/lib/ffi-tk/command/bind.rb +1 -0
  38. data/lib/ffi-tk/command/bindtags.rb +1 -0
  39. data/lib/ffi-tk/command/cget.rb +31 -24
  40. data/lib/ffi-tk/command/choose_color.rb +2 -1
  41. data/lib/ffi-tk/command/choose_directory.rb +2 -1
  42. data/lib/ffi-tk/command/clipboard.rb +6 -5
  43. data/lib/ffi-tk/command/configure.rb +23 -21
  44. data/lib/ffi-tk/command/destroy.rb +2 -1
  45. data/lib/ffi-tk/command/dialog.rb +4 -3
  46. data/lib/ffi-tk/command/event.rb +1 -0
  47. data/lib/ffi-tk/command/focus.rb +2 -1
  48. data/lib/ffi-tk/command/font.rb +12 -9
  49. data/lib/ffi-tk/command/get_open_file.rb +1 -0
  50. data/lib/ffi-tk/command/get_save_file.rb +1 -0
  51. data/lib/ffi-tk/command/grab.rb +2 -1
  52. data/lib/ffi-tk/command/grid.rb +7 -6
  53. data/lib/ffi-tk/command/image.rb +5 -4
  54. data/lib/ffi-tk/command/lower.rb +1 -0
  55. data/lib/ffi-tk/command/message_box.rb +2 -1
  56. data/lib/ffi-tk/command/option_menu.rb +3 -2
  57. data/lib/ffi-tk/command/pack.rb +5 -4
  58. data/lib/ffi-tk/command/place.rb +5 -4
  59. data/lib/ffi-tk/command/popup.rb +2 -1
  60. data/lib/ffi-tk/command/raise.rb +1 -0
  61. data/lib/ffi-tk/command/scrollable.rb +7 -10
  62. data/lib/ffi-tk/command/selection.rb +4 -3
  63. data/lib/ffi-tk/command/set_palette.rb +2 -1
  64. data/lib/ffi-tk/command/tk_cmd.rb +1 -0
  65. data/lib/ffi-tk/command/vars.rb +2 -1
  66. data/lib/ffi-tk/command/wait.rb +2 -1
  67. data/lib/ffi-tk/command/winfo.rb +9 -8
  68. data/lib/ffi-tk/command/wm.rb +11 -10
  69. data/lib/ffi-tk/core_extensions.rb +5 -4
  70. data/lib/ffi-tk/event/data.rb +32 -31
  71. data/lib/ffi-tk/event/handler.rb +4 -3
  72. data/lib/ffi-tk/ffi/tcl.rb +42 -31
  73. data/lib/ffi-tk/ffi/tcl/cmd_proc.rb +2 -1
  74. data/lib/ffi-tk/ffi/tcl/eval_result.rb +47 -8
  75. data/lib/ffi-tk/ffi/tcl/interp.rb +7 -4
  76. data/lib/ffi-tk/ffi/tcl/obj.rb +7 -32
  77. data/lib/ffi-tk/ffi/tcl/time.rb +2 -1
  78. data/lib/ffi-tk/ffi/tk.rb +8 -7
  79. data/lib/ffi-tk/geometry.rb +20 -17
  80. data/lib/ffi-tk/thread_sender.rb +1 -0
  81. data/lib/ffi-tk/tk.rb +23 -23
  82. data/lib/ffi-tk/variable.rb +25 -3
  83. data/lib/ffi-tk/version.rb +1 -1
  84. data/lib/ffi-tk/widget.rb +2 -1
  85. data/lib/ffi-tk/widget/button.rb +4 -1
  86. data/lib/ffi-tk/widget/canvas.rb +18 -15
  87. data/lib/ffi-tk/widget/canvas/arc.rb +2 -1
  88. data/lib/ffi-tk/widget/canvas/bitmap.rb +2 -1
  89. data/lib/ffi-tk/widget/canvas/image.rb +2 -1
  90. data/lib/ffi-tk/widget/canvas/item.rb +4 -4
  91. data/lib/ffi-tk/widget/canvas/line.rb +2 -1
  92. data/lib/ffi-tk/widget/canvas/oval.rb +2 -1
  93. data/lib/ffi-tk/widget/canvas/polygon.rb +2 -1
  94. data/lib/ffi-tk/widget/canvas/rectangle.rb +2 -1
  95. data/lib/ffi-tk/widget/canvas/text.rb +2 -1
  96. data/lib/ffi-tk/widget/canvas/window.rb +2 -1
  97. data/lib/ffi-tk/widget/checkbutton.rb +4 -1
  98. data/lib/ffi-tk/widget/entry.rb +4 -1
  99. data/lib/ffi-tk/widget/frame.rb +4 -1
  100. data/lib/ffi-tk/widget/label.rb +4 -1
  101. data/lib/ffi-tk/widget/labelframe.rb +4 -1
  102. data/lib/ffi-tk/widget/listbox.rb +5 -2
  103. data/lib/ffi-tk/widget/menu.rb +4 -1
  104. data/lib/ffi-tk/widget/menubutton.rb +4 -1
  105. data/lib/ffi-tk/widget/message.rb +4 -1
  106. data/lib/ffi-tk/widget/panedwindow.rb +5 -2
  107. data/lib/ffi-tk/widget/radiobutton.rb +4 -1
  108. data/lib/ffi-tk/widget/root.rb +1 -0
  109. data/lib/ffi-tk/widget/scale.rb +4 -1
  110. data/lib/ffi-tk/widget/scrollbar.rb +4 -1
  111. data/lib/ffi-tk/widget/spinbox.rb +4 -1
  112. data/lib/ffi-tk/widget/text.rb +20 -16
  113. data/lib/ffi-tk/widget/text/peer.rb +1 -0
  114. data/lib/ffi-tk/widget/tile.rb +2 -1
  115. data/lib/ffi-tk/widget/tile/button.rb +4 -1
  116. data/lib/ffi-tk/widget/tile/checkbutton.rb +4 -1
  117. data/lib/ffi-tk/widget/tile/combobox.rb +5 -2
  118. data/lib/ffi-tk/widget/tile/entry.rb +4 -1
  119. data/lib/ffi-tk/widget/tile/frame.rb +4 -1
  120. data/lib/ffi-tk/widget/tile/label.rb +4 -2
  121. data/lib/ffi-tk/widget/tile/labelframe.rb +4 -1
  122. data/lib/ffi-tk/widget/tile/menubutton.rb +4 -1
  123. data/lib/ffi-tk/widget/tile/notebook.rb +4 -1
  124. data/lib/ffi-tk/widget/tile/panedwindow.rb +4 -1
  125. data/lib/ffi-tk/widget/tile/progressbar.rb +4 -2
  126. data/lib/ffi-tk/widget/tile/radiobutton.rb +4 -1
  127. data/lib/ffi-tk/widget/tile/scale.rb +4 -1
  128. data/lib/ffi-tk/widget/tile/scrollbar.rb +7 -4
  129. data/lib/ffi-tk/widget/tile/separator.rb +4 -1
  130. data/lib/ffi-tk/widget/tile/sizegrip.rb +4 -1
  131. data/lib/ffi-tk/widget/tile/style.rb +16 -17
  132. data/lib/ffi-tk/widget/tile/treeview.rb +11 -5
  133. data/lib/ffi-tk/widget/toplevel.rb +4 -1
  134. data/shell.nix +19 -0
  135. data/spec/ffi-tk/command/bind.rb +5 -4
  136. data/spec/ffi-tk/command/bindtags.rb +2 -1
  137. data/spec/ffi-tk/command/clipboard.rb +4 -3
  138. data/spec/ffi-tk/command/font.rb +20 -19
  139. data/spec/ffi-tk/command/image.rb +13 -5
  140. data/spec/ffi-tk/command/pack.rb +3 -2
  141. data/spec/ffi-tk/command/place.rb +4 -3
  142. data/spec/ffi-tk/command/selection.rb +2 -1
  143. data/spec/ffi-tk/command/vars.rb +3 -2
  144. data/spec/ffi-tk/command/winfo.rb +10 -10
  145. data/spec/ffi-tk/command/wm.rb +23 -22
  146. data/spec/ffi-tk/event.rb +23 -21
  147. data/spec/ffi-tk/tile/button.rb +8 -8
  148. data/spec/ffi-tk/tile/checkbutton.rb +1 -1
  149. data/spec/ffi-tk/tile/combobox.rb +11 -12
  150. data/spec/ffi-tk/tile/entry.rb +18 -19
  151. data/spec/ffi-tk/tile/frame.rb +13 -13
  152. data/spec/ffi-tk/tile/label.rb +2 -2
  153. data/spec/ffi-tk/tile/labelframe.rb +1 -1
  154. data/spec/ffi-tk/tile/menubutton.rb +1 -1
  155. data/spec/ffi-tk/tile/notebook.rb +22 -20
  156. data/spec/ffi-tk/tile/panedwindow.rb +1 -1
  157. data/spec/ffi-tk/tile/progressbar.rb +1 -1
  158. data/spec/ffi-tk/tile/radiobutton.rb +1 -1
  159. data/spec/ffi-tk/tile/scale.rb +1 -1
  160. data/spec/ffi-tk/tile/scrollbar.rb +1 -16
  161. data/spec/ffi-tk/tile/separator.rb +2 -2
  162. data/spec/ffi-tk/tile/sizegrip.rb +1 -1
  163. data/spec/ffi-tk/tile/style.rb +63 -65
  164. data/spec/ffi-tk/tile/treeview.rb +11 -10
  165. data/spec/ffi-tk/variable.rb +5 -4
  166. data/spec/ffi-tk/widget/button.rb +3 -2
  167. data/spec/ffi-tk/widget/canvas.rb +59 -58
  168. data/spec/ffi-tk/widget/checkbutton.rb +6 -5
  169. data/spec/ffi-tk/widget/entry.rb +112 -103
  170. data/spec/ffi-tk/widget/frame.rb +2 -1
  171. data/spec/ffi-tk/widget/label.rb +2 -1
  172. data/spec/ffi-tk/widget/labelframe.rb +1 -0
  173. data/spec/ffi-tk/widget/listbox.rb +5 -4
  174. data/spec/ffi-tk/widget/menu.rb +3 -2
  175. data/spec/ffi-tk/widget/menubutton.rb +1 -0
  176. data/spec/ffi-tk/widget/message.rb +1 -0
  177. data/spec/ffi-tk/widget/panedwindow.rb +1 -0
  178. data/spec/ffi-tk/widget/radiobutton.rb +1 -0
  179. data/spec/ffi-tk/widget/root.rb +2 -1
  180. data/spec/ffi-tk/widget/scale.rb +1 -0
  181. data/spec/ffi-tk/widget/scrollbar.rb +1 -0
  182. data/spec/ffi-tk/widget/spinbox.rb +1 -0
  183. data/spec/ffi-tk/widget/text.rb +63 -54
  184. data/spec/ffi-tk/widget/toplevel.rb +1 -0
  185. data/spec/helper.rb +3 -1
  186. data/tasks/authors.rake +3 -2
  187. data/tasks/bacon.rake +13 -11
  188. data/tasks/changelog.rake +1 -0
  189. data/tasks/gem.rake +13 -11
  190. data/tasks/manifest.rake +2 -1
  191. data/tasks/release.rake +11 -32
  192. data/tasks/reversion.rake +2 -1
  193. metadata +52 -75
  194. data/spec/ffi-tk/command/grid.rb +0 -6
  195. data/tasks/gem_setup.rake +0 -113
  196. data/tasks/grancher.rake +0 -12
  197. data/tasks/rcov.rake +0 -17
  198. data/tasks/setup.rake +0 -12
  199. data/tasks/ycov.rake +0 -84
@@ -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
+ }
@@ -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
- if FFI::Platform.mac?
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
- if FFI::Platform.mac?
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
@@ -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
@@ -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{|*args|
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(&block)
24
+ def idle
24
25
  id = nil
25
-
26
- wrap = lambda{|*args|
27
- block.call
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)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Tk
2
3
  module Bell
3
4
  # This command rings the bell on the display for window and returns an empty
@@ -31,4 +32,4 @@ module Tk
31
32
  Bell.bell(options)
32
33
  end
33
34
  end
34
- end
35
+ end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Tk
2
3
  module Bind
3
4
  def self.bind(tag, sequence = None)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Tk
2
3
  # Determine which bindings apply to a window, and order of evaluation
3
4
  #
@@ -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{|type, array|
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[ tabs cursor text show default class ]]
27
- insert[:font, %w[ font ]]
28
- insert[:symbol, %w[ wrap tabstyle relief justify validate orient mode selectmode ]]
29
- insert[:variable, %w[ textvariable ]]
30
- insert[:bitmap, %w[ stipple ]]
31
- insert[:list, %w[ padding state style columns displaycolumns ]]
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 "Unknown type for %p: %p" % [name, value]
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.to_sym?
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 name = value.to_s?
60
- Variable.new(name)
61
- end
61
+ Variable.new(value.to_s?) if value.respond_to?(:to_s?)
62
62
  when :list
63
- value.to_a
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 "Unknown type: %p: %p" % [type, value]
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
  module_function
3
4
 
@@ -26,4 +27,4 @@ module Tk
26
27
  def choose_color(options = None)
27
28
  Tk.execute(:tk_chooseColor, options.to_tcl_options?).to_s?
28
29
  end
29
- end
30
+ end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Tk
2
3
  module_function
3
4
 
@@ -42,4 +43,4 @@ module Tk
42
43
  def choose_directory(options = None)
43
44
  Tk.execute(:tk_chooseDirectory, options.to_tcl_options?).to_s?
44
45
  end
45
- end
46
+ end
@@ -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 << "-displayof" << displayof if displayof
80
- args << "-format" << format.to_s.upcase if format
81
- args << "-type" << type.to_s.upcase if type
82
- args << "--" << data.to_s
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, "Invalid argument: %p" % [argument]
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
- case name
50
- when :validatecommand
51
- # %d Type of action: 1 for insert, 0 for delete, or -1 for focus, forced
52
- # or textvariable validation.
53
- # %i Index of char string to be inserted/deleted, if any, otherwise -1.
54
- # %P The value of the entry if the edit is allowed.
55
- # If you are configuring the entry widget to have a new textvariable,
56
- # this will be the value of that textvariable.
57
- # %s The current value of entry prior to editing.
58
- # %S The text string being inserted/deleted, if any, {} otherwise.
59
- # %v The type of validation currently set.
60
- # %V The type of validation that triggered the callback (key, focusin,
61
- # focusout, forced).
62
- # %W The name of the entry widget.
63
- arg = '%d %i %P %s %S %v %V %W'
64
- else
65
- arg = ''
66
- end
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
- return command
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