tk 0.3.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: de793924acb0bcb31d9cf7810b29ee8b955498771677127d14a8f84a0be28447
4
- data.tar.gz: 624bf1e5f517b16c2147b43b840189f711f91c585edda293ba55585dde6d2901
3
+ metadata.gz: 27203ca65a4961a7c3594cd5ec6c50d9f1440aec4640b48d3dc3a2749f599724
4
+ data.tar.gz: ec99535ddf2b33049fde77d89eee84b1665ca7252ea4ed0b6d5c2d37af87da33
5
5
  SHA512:
6
- metadata.gz: 496b71be86f3fad9951713a33c51cc2df0362914717adc915977d93b6197c5770938c82013cb84e97a1893e4489c549159ddbd96e2f1d42362d881ec50c6970e
7
- data.tar.gz: 39d4d96c72e0484684f0048f01fd7df53ce8ad20158c9a14d82de0d93c1732f9eab52e83003d4d4084743bde9898c91044b909e82eebf0b098329a666cc1a111
6
+ metadata.gz: 4d46c0686e090c00f1654ac716f19fe900d007e333fee2e88b01386093024315d30db0439765a7db95093f52f75346f3c7d9e241fa969109cfdb5d88de4b7576
7
+ data.tar.gz: bcb71a0b498617dc4fdf7a5a260923d99ecd2a8b966cc4c6de9d537b79a8153f1143c171769f06d6f05fdf452c2e059f863df430b1564a95c84e70c7e98e6d32
@@ -0,0 +1,6 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: 'github-actions'
4
+ directory: '/'
5
+ schedule:
6
+ interval: 'weekly'
@@ -0,0 +1,29 @@
1
+ name: build
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ build:
7
+ name: build (${{ matrix.ruby }}
8
+ strategy:
9
+ matrix:
10
+ ruby: [ 3.2, 3.1, '3.0', 2.7, head ]
11
+ runs-on: ubuntu-20.04
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+ - name: Set up Ruby
15
+ uses: ruby/setup-ruby@v1
16
+ with:
17
+ ruby-version: ${{ matrix.ruby }}
18
+ - name: Install dependencies
19
+ run: |
20
+ sudo apt install tk-dev
21
+ gem install bundler --no-document
22
+ bundle install
23
+ - name: Run test
24
+ run: |
25
+ rake compile -- --with-tcltkversion=8.6 \
26
+ --with-tcl-lib=/usr/lib/x86_64-linux-gnu \
27
+ --with-tk-lib=/usr/lib/x86_64-linux-gnu \
28
+ --with-tcl-include=/usr/include/tcl8.6 \
29
+ --with-tk-include=/usr/include/tcl8.6
data/README.macosx-aqua CHANGED
@@ -31,7 +31,7 @@ Tk.ip_eval(<<'EOS')
31
31
  }
32
32
  EOS
33
33
 
34
- # use a traditional dialog for Tk.getSaveFile() and Tk.getMultipleSaveFile()
34
+ # use a traditional dialog for Tk.getSaveFile()
35
35
  Tk.ip_eval(<<'EOS')
36
36
  proc ::tk_getSaveFile {args} {
37
37
  if {$::tk_strictMotif} {
data/ext/tk/extconf.rb CHANGED
@@ -510,9 +510,9 @@ def get_tclConfig_dirs
510
510
  '/usr/local/opt', '/usr/local/pkg', '/usr/local/share', '/usr/local',
511
511
  '/usr/opt', '/usr/pkg', '/usr/share', '/usr/contrib', '/usr'
512
512
  ].map{|dir|
513
- Dir.glob(dir + "/{tcltk,tcl,tk}[#{TkLib_Config['major_nums']}*/lib",
513
+ Dir.glob(dir + "/{tcltk,tcl,tk}[#{TkLib_Config['major_nums']}]*/lib",
514
514
  File::FNM_CASEFOLD)
515
- Dir.glob(dir + "/{tcltk,tcl,tk}[#{TkLib_Config['major_nums']}*",
515
+ Dir.glob(dir + "/{tcltk,tcl,tk}[#{TkLib_Config['major_nums']}]*",
516
516
  File::FNM_CASEFOLD)
517
517
  Dir.glob(dir + '/{tcltk,tcl,tk}/lib', File::FNM_CASEFOLD)
518
518
  Dir.glob(dir + '/{tcltk,tcl,tk}', File::FNM_CASEFOLD)
@@ -327,7 +327,7 @@ tk_symbolkey2str(self, keys)
327
327
 
328
328
  if (NIL_P(keys)) return new_keys;
329
329
  keys = rb_convert_type(keys, T_HASH, "Hash", "to_hash");
330
- st_foreach_check(RHASH_TBL(keys), to_strkey, new_keys, Qundef);
330
+ rb_hash_foreach(keys, to_strkey, new_keys);
331
331
  return new_keys;
332
332
  }
333
333
 
@@ -718,7 +718,7 @@ hash2kv(hash, ary, self)
718
718
  volatile VALUE dst = rb_ary_new2(2 * RHASH_SIZE(hash));
719
719
  volatile VALUE args = rb_ary_new3(2, dst, self);
720
720
 
721
- st_foreach_check(RHASH_TBL(hash), push_kv, args, Qundef);
721
+ rb_hash_foreach(hash, push_kv, args);
722
722
 
723
723
  if (NIL_P(ary)) {
724
724
  return dst;
@@ -762,7 +762,7 @@ hash2kv_enc(hash, ary, self)
762
762
  volatile VALUE dst = rb_ary_new2(2 * RHASH_SIZE(hash));
763
763
  volatile VALUE args = rb_ary_new3(2, dst, self);
764
764
 
765
- st_foreach_check(RHASH_TBL(hash), push_kv_enc, args, Qundef);
765
+ rb_hash_foreach(hash, push_kv_enc, args);
766
766
 
767
767
  if (NIL_P(ary)) {
768
768
  return dst;
@@ -1797,6 +1797,7 @@ Init_tkutil(void)
1797
1797
  rb_define_singleton_method(cCB_SUBST, "inspect", cbsubst_inspect, 0);
1798
1798
 
1799
1799
  cSUBST_INFO = rb_define_class_under(cCB_SUBST, "Info", rb_cObject);
1800
+ rb_undef_alloc_func(cSUBST_INFO);
1800
1801
  rb_define_singleton_method(cSUBST_INFO, "inspect", substinfo_inspect, 0);
1801
1802
 
1802
1803
  ID_SUBST_INFO = rb_intern("SUBST_INFO");
data/lib/multi-tk.rb CHANGED
@@ -266,7 +266,7 @@ class MultiTkIp
266
266
 
267
267
  begin
268
268
  @interp._eval_without_enc(@interp._merge_tklist('bgerror', msg))
269
- rescue Exception => e
269
+ rescue Exception
270
270
  warn("Warning (#{self}): " + msg)
271
271
  end
272
272
  end
@@ -659,7 +659,7 @@ class MultiTkIp
659
659
  loop do
660
660
  Thread.pass
661
661
  begin
662
- thread, cmd, *args = @cmd_queue.deq(true) # non-block
662
+ thread, _, *_ = @cmd_queue.deq(true) # non-block
663
663
  rescue ThreadError
664
664
  # queue is empty
665
665
  retry_count -= 1
@@ -928,7 +928,6 @@ class MultiTkIp
928
928
 
929
929
  @init_ip_env_queue = Queue.new
930
930
  Thread.new{
931
- current = Thread.current
932
931
  loop {
933
932
  mtx, cond, ret, table, script = @init_ip_env_queue.deq
934
933
  begin
@@ -1917,7 +1916,7 @@ if (!defined?(Use_PseudoToplevel_Feature_of_MultiTkIp) ||
1917
1916
  top.respond_to?(:pseudo_toplevel_evaluable?) &&
1918
1917
  top.pseudo_toplevel_evaluable? &&
1919
1918
  top.respond_to?(id)
1920
- rescue Exception => e
1919
+ rescue Exception
1921
1920
  has_top = false
1922
1921
  end
1923
1922
 
@@ -2316,7 +2315,7 @@ class << MultiTkIp
2316
2315
  __getip.allow_ruby_exit?
2317
2316
  end
2318
2317
 
2319
- def allow_ruby_exit= (mode)
2318
+ def allow_ruby_exit=(mode)
2320
2319
  __getip.allow_ruby_exit = mode
2321
2320
  end
2322
2321
 
@@ -2642,7 +2641,7 @@ class MultiTkIp
2642
2641
  @interp.allow_ruby_exit?
2643
2642
  end
2644
2643
 
2645
- def allow_ruby_exit= (mode)
2644
+ def allow_ruby_exit=(mode)
2646
2645
  raise SecurityError, "no permission to manipulate" unless self.manipulable?
2647
2646
  @interp.allow_ruby_exit = mode
2648
2647
  end
data/lib/remote-tk.rb CHANGED
@@ -270,7 +270,7 @@ class RemoteTkIp
270
270
  false
271
271
  end
272
272
 
273
- def allow_ruby_exit= (mode)
273
+ def allow_ruby_exit=(mode)
274
274
  fail RuntimeError, 'cannot change mode of the remote interpreter'
275
275
  end
276
276
 
data/lib/thread_tk.rb ADDED
@@ -0,0 +1,13 @@
1
+ #
2
+ # thread_tk.rb :
3
+ # The eventloop of Tk (Tk.mainloop) can run on a thread other than the
4
+ # main thread. That is, when "require 'thread_tk'" is executed instead
5
+ # of or before "require 'tk'", "Thread.new{Tk.mainloop}" works properly.
6
+ #
7
+
8
+ if defined?(TkCore::RUN_EVENTLOOP_ON_MAIN_THREAD) && TkCore::RUN_EVENTLOOP_ON_MAIN_THREAD
9
+ raise LoadError, "thread_tk.rb must be loaded before tk.rb"
10
+ end
11
+
12
+ module TkCore; RUN_EVENTLOOP_ON_MAIN_THREAD = false; end
13
+ require 'tk'
data/lib/tk/autoload.rb CHANGED
@@ -452,7 +452,7 @@ class << Tk
452
452
 
453
453
  reg = /^#{Regexp.quote(auto)}(\.rb|\.so|)$/
454
454
  @TOPLEVEL_ALIAS_TABLE.each_key{|set|
455
- if @TOPLEVEL_ALIAS_TABLE[set][sym] =~ reg
455
+ if reg =~ @TOPLEVEL_ALIAS_TABLE[set][sym].to_s
456
456
  @TOPLEVEL_ALIAS_TABLE[set][sym] = obj
457
457
  if @TOPLEVEL_ALIAS_OWNER[sym].nil? || @TOPLEVEL_ALIAS_OWNER[sym] == set
458
458
  replace_topalias(sym, obj)
@@ -460,10 +460,10 @@ class << Tk
460
460
  end
461
461
  end
462
462
  }
463
- if (f = Object.autoload?(sym)) && f =~ reg
463
+ if (f = Object.autoload?(sym)) && reg =~ f.to_s
464
464
  replace_topobj(sym, obj)
465
465
  end
466
- if (f = Tk::TOPLEVEL_ALIASES.autoload?(sym)) && f =~ reg
466
+ if (f = Tk::TOPLEVEL_ALIASES.autoload?(sym)) && reg =~ f.to_s
467
467
  replace_topalias(sym, obj)
468
468
  end
469
469
  end
data/lib/tk/canvastag.rb CHANGED
@@ -187,7 +187,7 @@ module TkcTagAccess
187
187
  # ltag = tag1 | tag2; ltag.path => "(t1)||(t2)"
188
188
  # ltag = tag1 ^ tag2; ltag.path => "(t1)^(t2)"
189
189
  # ltag = - tag1; ltag.path => "!(t1)"
190
- def & (tag)
190
+ def &(tag)
191
191
  if tag.kind_of? TkObject
192
192
  TkcTagString.new(@c, '(' + @id + ')&&(' + tag.path + ')')
193
193
  else
@@ -195,7 +195,7 @@ module TkcTagAccess
195
195
  end
196
196
  end
197
197
 
198
- def | (tag)
198
+ def |(tag)
199
199
  if tag.kind_of? TkObject
200
200
  TkcTagString.new(@c, '(' + @id + ')||(' + tag.path + ')')
201
201
  else
@@ -203,7 +203,7 @@ module TkcTagAccess
203
203
  end
204
204
  end
205
205
 
206
- def ^ (tag)
206
+ def ^(tag)
207
207
  if tag.kind_of? TkObject
208
208
  TkcTagString.new(@c, '(' + @id + ')^(' + tag.path + ')')
209
209
  else
data/lib/tk/entry.rb CHANGED
@@ -96,7 +96,7 @@ class Tk::Entry<Tk::Label
96
96
  def value
97
97
  _fromUTF8(tk_send_without_enc('get'))
98
98
  end
99
- def value= (val)
99
+ def value=(val)
100
100
  tk_send_without_enc('delete', 0, 'end')
101
101
  tk_send_without_enc('insert', 0, _get_eval_enc_str(val))
102
102
  val
data/lib/tk/grid.rb CHANGED
@@ -66,15 +66,15 @@ module TkGrid
66
66
  params = []
67
67
  args.flatten(1).each{|win|
68
68
  case win
69
- when '-', ?- # RELATIVE PLACEMENT (increase columnspan)
69
+ when '-', ?-.ord # RELATIVE PLACEMENT (increase columnspan)
70
70
  params.push('-')
71
71
  when /^-+$/ # RELATIVE PLACEMENT (increase columnspan)
72
72
  params.concat(win.to_s.split(//))
73
- when '^', ?^ # RELATIVE PLACEMENT (increase rowspan)
73
+ when '^', ?^.ord # RELATIVE PLACEMENT (increase rowspan)
74
74
  params.push('^')
75
75
  when /^\^+$/ # RELATIVE PLACEMENT (increase rowspan)
76
76
  params.concat(win.to_s.split(//))
77
- when 'x', :x, ?x, nil, '' # RELATIVE PLACEMENT (empty column)
77
+ when 'x', :x, ?x.ord, nil, '' # RELATIVE PLACEMENT (empty column)
78
78
  params.push('x')
79
79
  when /^x+$/ # RELATIVE PLACEMENT (empty column)
80
80
  params.concat(win.to_s.split(//))
data/lib/tk/itemconfig.rb CHANGED
@@ -177,7 +177,7 @@ module TkItemConfigMethod
177
177
  fail ArgumentError, "Invalid option `#{orig_opt.inspect}'"
178
178
  end
179
179
 
180
- alias_name, real_name = __item_optkey_aliases(tagid(tagOrId)).find{|k, v| k.to_s == option}
180
+ _, real_name = __item_optkey_aliases(tagid(tagOrId)).find{|k, v| k.to_s == option}
181
181
  if real_name
182
182
  option = real_name.to_s
183
183
  end
@@ -324,7 +324,7 @@ module TkItemConfigMethod
324
324
  fail ArgumentError, "Invalid option `#{orig_slot.inspect}'"
325
325
  end
326
326
 
327
- alias_name, real_name = __item_optkey_aliases(tagid(tagOrId)).find{|k, v| k.to_s == slot}
327
+ _, real_name = __item_optkey_aliases(tagid(tagOrId)).find{|k, v| k.to_s == slot}
328
328
  if real_name
329
329
  slot = real_name.to_s
330
330
  end
@@ -429,7 +429,7 @@ module TkItemConfigMethod
429
429
  if slot
430
430
  slot = slot.to_s
431
431
 
432
- alias_name, real_name = __item_optkey_aliases(tagid(tagOrId)).find{|k, v| k.to_s == slot}
432
+ _, real_name = __item_optkey_aliases(tagid(tagOrId)).find{|k, v| k.to_s == slot}
433
433
  if real_name
434
434
  slot = real_name.to_s
435
435
  end
@@ -806,7 +806,7 @@ module TkItemConfigMethod
806
806
  if slot
807
807
  slot = slot.to_s
808
808
 
809
- alias_name, real_name = __item_optkey_aliases(tagid(tagOrId)).find{|k, v| k.to_s == slot}
809
+ _, real_name = __item_optkey_aliases(tagid(tagOrId)).find{|k, v| k.to_s == slot}
810
810
  if real_name
811
811
  slot = real_name.to_s
812
812
  end
data/lib/tk/itemfont.rb CHANGED
@@ -101,7 +101,7 @@ module TkTreatItemFont
101
101
  else
102
102
  begin
103
103
  tk_call(*(__item_config_cmd(tagid(tagOrId)) << "-#{optkey}" << fnt))
104
- rescue => e
104
+ rescue
105
105
  # ignore
106
106
  end
107
107
  end
@@ -163,7 +163,7 @@ module TkTreatItemFont
163
163
  else
164
164
  begin
165
165
  tk_call(*(__item_config_cmd(tagid(tagOrId)) << "-#{optkey}" << ltn))
166
- rescue => e
166
+ rescue
167
167
  # ignore
168
168
  end
169
169
  end
@@ -223,7 +223,7 @@ module TkTreatItemFont
223
223
  else
224
224
  begin
225
225
  tk_call(*(__item_config_cmd(tagid(tagOrId)) << "-#{optkey}" << knj))
226
- rescue => e
226
+ rescue
227
227
  # ignore
228
228
  end
229
229
  end
data/lib/tk/listbox.rb CHANGED
@@ -88,7 +88,7 @@ class Tk::Listbox<TkTextWin
88
88
  get('0', 'end')
89
89
  end
90
90
 
91
- def value= (vals)
91
+ def value=(vals)
92
92
  unless vals.kind_of?(Array)
93
93
  fail ArgumentError, 'an Array is expected'
94
94
  end
data/lib/tk/menuspec.rb CHANGED
@@ -210,7 +210,6 @@ module TkMenuSpec
210
210
  private :_create_menu
211
211
 
212
212
  def _use_menubar?(parent)
213
- use_menubar = false
214
213
  if parent.kind_of?(Tk::Root) || parent.kind_of?(Tk::Toplevel)
215
214
  true
216
215
  elsif parent.current_configinfo.has_key?('menu')
data/lib/tk/namespace.rb CHANGED
@@ -257,7 +257,7 @@ class TkNamespace < TkObject
257
257
  if name =~ /^::/
258
258
  @fullname = parent + name
259
259
  else
260
- @fullname = parent +'::'+ name
260
+ @fullname = parent + '::' + name
261
261
  end
262
262
  else
263
263
  ancestor = __tk_call('namespace', 'current')
@@ -265,7 +265,7 @@ class TkNamespace < TkObject
265
265
  if name =~ /^::/
266
266
  @fullname = ancestor + '::' + parent + name
267
267
  else
268
- @fullname = ancestor + '::'+ parent +'::'+ name
268
+ @fullname = ancestor + '::' + parent + '::' + name
269
269
  end
270
270
  end
271
271
  else # parent == nil
data/lib/tk/optiondb.rb CHANGED
@@ -210,7 +210,6 @@ module TkOptionDB
210
210
  unless func.kind_of?(Array)
211
211
  fail ArgumentError, "method-list must be Array"
212
212
  end
213
- func_str = func.join(' ')
214
213
 
215
214
  if parent.kind_of?(Class) && parent <= @@resource_proc_class
216
215
  cmd_klass = Class.new(parent)
data/lib/tk/optionobj.rb CHANGED
@@ -36,7 +36,7 @@ module Tk
36
36
 
37
37
  def _remove_win(win)
38
38
  if win.kind_of?(Array)
39
- widget, method = win
39
+ widget, _ = win
40
40
  @observ.delete_if{|x|
41
41
  if x.kind_of?(Array)
42
42
  x[0] == widget
data/lib/tk/scale.rb CHANGED
@@ -102,7 +102,7 @@ class Tk::Scale<TkWindow
102
102
  get
103
103
  end
104
104
 
105
- def value= (val)
105
+ def value=(val)
106
106
  set(val)
107
107
  val
108
108
  end
data/lib/tk/text.rb CHANGED
@@ -326,7 +326,7 @@ class Tk::Text<TkTextWin
326
326
  _fromUTF8(tk_send_without_enc('get', "1.0", "end - 1 char"))
327
327
  end
328
328
 
329
- def value= (val)
329
+ def value=(val)
330
330
  tk_send_without_enc('delete', "1.0", 'end')
331
331
  tk_send_without_enc('insert', "1.0", _get_eval_enc_str(val))
332
332
  val
data/lib/tk/validation.rb CHANGED
@@ -303,7 +303,7 @@ class TkValidateCommand
303
303
  args = args.join(' ')
304
304
  keys = klass._get_subst_key(args)
305
305
  if cmd.kind_of?(String)
306
- id = cmd
306
+ @id = cmd
307
307
  elsif cmd.kind_of?(TkCallbackEntry)
308
308
  @id = install_cmd(cmd)
309
309
  else
@@ -318,7 +318,7 @@ class TkValidateCommand
318
318
  else
319
319
  keys, args = klass._get_all_subst_keys
320
320
  if cmd.kind_of?(String)
321
- id = cmd
321
+ @id = cmd
322
322
  elsif cmd.kind_of?(TkCallbackEntry)
323
323
  @id = install_cmd(cmd)
324
324
  else
data/lib/tk/variable.rb CHANGED
@@ -27,7 +27,7 @@ class TkVariable
27
27
  TkVar_ID_TBL.mutex.synchronize{ TkVar_ID_TBL.clear }
28
28
  }
29
29
 
30
- major, minor, type, patchlevel = TclTkLib.get_version
30
+ major, minor, _, _ = TclTkLib.get_version
31
31
  USE_OLD_TRACE_OPTION_STYLE = (major < 8) || (major == 8 && minor < 4)
32
32
 
33
33
  #TkCore::INTERP.add_tk_procs('rb_var', 'args',
@@ -1772,11 +1772,11 @@ module Tk
1772
1772
  begin
1773
1773
  INTERP._invoke_without_enc('global', 'auto_path')
1774
1774
  auto_path = INTERP._invoke('set', 'auto_path')
1775
- rescue => e
1775
+ rescue
1776
1776
  begin
1777
1777
  INTERP._invoke_without_enc('global', 'env')
1778
1778
  auto_path = INTERP._invoke('set', 'env(TCLLIBPATH)')
1779
- rescue => e
1779
+ rescue
1780
1780
  auto_path = Tk::LIBRARY
1781
1781
  end
1782
1782
  end
data/lib/tk/winfo.rb CHANGED
@@ -239,7 +239,7 @@ module TkWinfo
239
239
  TkWinfo.screendepth self
240
240
  end
241
241
 
242
- def TkWinfo.screenheight (win)
242
+ def TkWinfo.screenheight(win)
243
243
  number(tk_call_without_enc('winfo', 'screenheight', win))
244
244
  end
245
245
  def winfo_screenheight
data/lib/tk.rb CHANGED
@@ -818,7 +818,7 @@ end
818
818
 
819
819
  def _curr_cmd_id
820
820
  #id = format("c%.4d", Tk_IDs[0])
821
- id = "c" + TkCore::INTERP._ip_id_ + TkComm::Tk_IDs[0]
821
+ "c" + TkCore::INTERP._ip_id_ + TkComm::Tk_IDs[0]
822
822
  end
823
823
  def _next_cmd_id
824
824
  TkComm::Tk_IDs.mutex.synchronize{
@@ -1158,63 +1158,15 @@ module TkCore
1158
1158
  opts = ''
1159
1159
  end
1160
1160
 
1161
- # RUN_EVENTLOOP_ON_MAIN_THREAD = true
1161
+ if defined? ::TK_MAINLOOP_ON_MAIN_THREAD_ONLY
1162
+ RUN_EVENTLOOP_ON_MAIN_THREAD = ::TK_MAINLOOP_ON_MAIN_THREAD_ONLY
1163
+ end
1162
1164
 
1163
1165
  unless self.const_defined? :RUN_EVENTLOOP_ON_MAIN_THREAD
1164
- if WITH_RUBY_VM ### check Ruby 1.9 !!!!!!!
1165
- # *** NEED TO FIX ***
1166
- case RUBY_PLATFORM
1167
- when /cygwin/
1168
- RUN_EVENTLOOP_ON_MAIN_THREAD = true
1169
- when /darwin/ # MacOS X
1170
- =begin
1171
- ip = TclTkIp.new(name, opts)
1172
- if ip._invoke_without_enc('tk', 'windowingsystem') == 'aqua' &&
1173
- (TclTkLib.get_version<=>[8,4,TclTkLib::RELEASE_TYPE::FINAL,6]) > 0
1174
- =end
1175
- if TclTkLib::WINDOWING_SYSTEM == 'aqua' &&
1176
- (TclTkLib.get_version<=>[8,4,TclTkLib::RELEASE_TYPE::FINAL,6]) > 0
1177
- # *** KNOWN BUG ***
1178
- # Main event loop thread of TkAqua (> Tk8.4.9) must be the main
1179
- # application thread. So, ruby1.9 users must call Tk.mainloop on
1180
- # the main application thread.
1181
- #
1182
- # *** ADD (2009/05/10) ***
1183
- # In some cases (I don't know the description of conditions),
1184
- # TkAqua 8.4.7 has a same kind of hang-up trouble.
1185
- # So, if 8.4.7 or later, set RUN_EVENTLOOP_ON_MAIN_THREAD to true.
1186
- # When you want to control this mode, please call the following
1187
- # (set true/false as you want) before "require 'tk'".
1188
- # ----------------------------------------------------------
1189
- # module TkCore; RUN_EVENTLOOP_ON_MAIN_THREAD = true; end
1190
- # ----------------------------------------------------------
1191
- #
1192
- # *** ADD (2010/07/05) ***
1193
- # The value of TclTkLib::WINDOWING_SYSTEM is defined at compiling.
1194
- # If it is inconsistent with linked DLL, please call the following
1195
- # before "require 'tk'".
1196
- # ----------------------------------------------------------
1197
- # require 'tcltklib'
1198
- # module TclTkLib
1199
- # remove_const :WINDOWING_SYSTEM
1200
- # WINDOWING_SYSTEM = 'x11' # or 'aqua'
1201
- # end
1202
- # ----------------------------------------------------------
1203
- #
1204
- RUN_EVENTLOOP_ON_MAIN_THREAD = true
1205
- else
1206
- RUN_EVENTLOOP_ON_MAIN_THREAD = false
1207
- =begin
1208
- ip.delete
1209
- ip = nil
1210
- =end
1211
- end
1212
- else
1213
- RUN_EVENTLOOP_ON_MAIN_THREAD = false
1214
- end
1215
-
1216
- else # Ruby 1.8.x
1166
+ if defined? ::IRB
1217
1167
  RUN_EVENTLOOP_ON_MAIN_THREAD = false
1168
+ else
1169
+ RUN_EVENTLOOP_ON_MAIN_THREAD = WITH_RUBY_VM
1218
1170
  end
1219
1171
  end
1220
1172
 
@@ -1935,9 +1887,6 @@ EOS
1935
1887
  def getSaveFile(keys = nil)
1936
1888
  tk_call('tk_getSaveFile', *hash_kv(keys))
1937
1889
  end
1938
- def getMultipleSaveFile(keys = nil)
1939
- simplelist(tk_call('tk_getSaveFile', '-multiple', '1', *hash_kv(keys)))
1940
- end
1941
1890
 
1942
1891
  def chooseColor(keys = nil)
1943
1892
  tk_call('tk_chooseColor', *hash_kv(keys))
@@ -3487,7 +3436,7 @@ module TkTreatFont
3487
3436
  else
3488
3437
  begin
3489
3438
  tk_call(*(__config_cmd << "-#{optkey}" << ltn))
3490
- rescue => e
3439
+ rescue
3491
3440
  # ignore
3492
3441
  end
3493
3442
  end
@@ -3547,7 +3496,7 @@ module TkTreatFont
3547
3496
  else
3548
3497
  begin
3549
3498
  tk_call(*(__config_cmd << "-#{optkey}" << knj))
3550
- rescue => e
3499
+ rescue
3551
3500
  # ignore
3552
3501
  end
3553
3502
  end
@@ -3804,7 +3753,7 @@ module TkConfigMethod
3804
3753
  fail ArgumentError, "Invalid option `#{orig_slot.inspect}'"
3805
3754
  end
3806
3755
 
3807
- alias_name, real_name = __optkey_aliases.find{|k, v| k.to_s == slot}
3756
+ _, real_name = __optkey_aliases.find{|k, v| k.to_s == slot}
3808
3757
  if real_name
3809
3758
  slot = real_name.to_s
3810
3759
  end
@@ -3948,7 +3897,7 @@ module TkConfigMethod
3948
3897
  fail ArgumentError, "Invalid option `#{orig_slot.inspect}'"
3949
3898
  end
3950
3899
 
3951
- alias_name, real_name = __optkey_aliases.find{|k, v| k.to_s == slot}
3900
+ _, real_name = __optkey_aliases.find{|k, v| k.to_s == slot}
3952
3901
  if real_name
3953
3902
  slot = real_name.to_s
3954
3903
  end
@@ -4051,7 +4000,7 @@ module TkConfigMethod
4051
4000
  if slot
4052
4001
  slot = slot.to_s
4053
4002
 
4054
- alias_name, real_name = __optkey_aliases.find{|k, v| k.to_s == slot}
4003
+ _, real_name = __optkey_aliases.find{|k, v| k.to_s == slot}
4055
4004
  if real_name
4056
4005
  slot = real_name.to_s
4057
4006
  end
@@ -4431,7 +4380,7 @@ module TkConfigMethod
4431
4380
  if slot
4432
4381
  slot = slot.to_s
4433
4382
 
4434
- alias_name, real_name = __optkey_aliases.find{|k,var| k.to_s == slot}
4383
+ _, real_name = __optkey_aliases.find{|k,var| k.to_s == slot}
4435
4384
  if real_name
4436
4385
  slot = real_name.to_s
4437
4386
  end
@@ -84,13 +84,13 @@ module Tk::BLT
84
84
  private :__item_pathname
85
85
 
86
86
  def axis_cget_tkstring(id, option)
87
- ret = itemcget_tkstring(['axis', tagid(id)], option)
87
+ itemcget_tkstring(['axis', tagid(id)], option)
88
88
  end
89
89
  def axis_cget(id, option)
90
- ret = itemcget(['axis', tagid(id)], option)
90
+ itemcget(['axis', tagid(id)], option)
91
91
  end
92
92
  def axis_cget_strict(id, option)
93
- ret = itemcget_strict(['axis', tagid(id)], option)
93
+ itemcget_strict(['axis', tagid(id)], option)
94
94
  end
95
95
  def axis_configure(*args)
96
96
  slot = args.pop
@@ -37,7 +37,7 @@ class Tk::BWidget::ProgressDlg
37
37
  @keys['textvariable'].value
38
38
  end
39
39
 
40
- def text= (txt)
40
+ def text=(txt)
41
41
  @keys['textvariable'].value = txt
42
42
  end
43
43
 
@@ -49,7 +49,7 @@ class Tk::BWidget::ProgressDlg
49
49
  @keys['variable'].value
50
50
  end
51
51
 
52
- def value= (val)
52
+ def value=(val)
53
53
  @keys['variable'].value = val
54
54
  end
55
55
 
@@ -91,7 +91,7 @@ class Tk::Iwidgets::Entryfield
91
91
  def value
92
92
  _fromUTF8(tk_send_without_enc('get'))
93
93
  end
94
- def value= (val)
94
+ def value=(val)
95
95
  tk_send_without_enc('delete', 0, 'end')
96
96
  tk_send_without_enc('insert', 0, _get_eval_enc_str(val))
97
97
  val
@@ -59,7 +59,7 @@ class Tk::Iwidgets::Promptdialog
59
59
  def value
60
60
  _fromUTF8(tk_send_without_enc('get'))
61
61
  end
62
- def value= (val)
62
+ def value=(val)
63
63
  tk_send_without_enc('delete', 0, 'end')
64
64
  tk_send_without_enc('insert', 0, _get_eval_enc_str(val))
65
65
  val
@@ -96,7 +96,7 @@ class Tk::Iwidgets::Spinner
96
96
  def value
97
97
  _fromUTF8(tk_send_without_enc('get'))
98
98
  end
99
- def value= (val)
99
+ def value=(val)
100
100
  tk_send_without_enc('delete', 0, 'end')
101
101
  tk_send_without_enc('insert', 0, _get_eval_enc_str(val))
102
102
  val
@@ -212,7 +212,7 @@ class Tk::Tcllib::Tablelist
212
212
  nil
213
213
  else # cmd
214
214
  tk_tcl2ruby(cmd)
215
- end
215
+ end
216
216
  })
217
217
  end
218
218
  private :__val2ruby_optkeys
@@ -32,7 +32,7 @@ module Tk::Tile::TreeviewConfig
32
32
  if slot
33
33
  slot = slot.to_s
34
34
 
35
- alias_name, real_name = __item_optkey_aliases(tagid(tagOrId)).find{|k, v| k.to_s == slot}
35
+ _, real_name = __item_optkey_aliases(tagid(tagOrId)).find{|k, v| k.to_s == slot}
36
36
  if real_name
37
37
  slot = real_name.to_s
38
38
  end
@@ -203,7 +203,7 @@ module Tk::Tile::TreeviewConfig
203
203
  if slot
204
204
  slot = slot.to_s
205
205
 
206
- alias_name, real_name = __item_optkey_aliases(tagid(tagOrId)).find{|k, v| k.to_s == slot}
206
+ _, real_name = __item_optkey_aliases(tagid(tagOrId)).find{|k, v| k.to_s == slot}
207
207
  if real_name
208
208
  slot = real_name.to_s
209
209
  end
data/lib/tkextlib/tile.rb CHANGED
@@ -144,7 +144,6 @@ module Tk
144
144
  # Tcl/Tk interpreter working under Ruby/Tk.
145
145
  # Please give attention to use this method. It may conflict with
146
146
  # some definitions on Tcl/Tk scripts.
147
- klass_name = self.name
148
147
  proc_name = 'LoadImages'
149
148
  if Tk::Tile::USE_TTK_NAMESPACE
150
149
  ns_list = ['::tile']
@@ -155,7 +155,7 @@ class Tk::TkTable::CellTag
155
155
 
156
156
  def initialize(parent, keys=nil)
157
157
  @parent = @t = parent
158
- @tpath - parent.path
158
+ @tpath = parent.path
159
159
  CellTag_ID.mutex.synchronize{
160
160
  @path = @id = CellTag_ID.join(TkCore::INTERP._ip_id_)
161
161
  CellTag_ID[1].succ!
@@ -1294,7 +1294,7 @@ class Tk::TreeCtrl
1294
1294
 
1295
1295
  def item_state_get(item, *args)
1296
1296
  if args.empty?
1297
- list(tk_send('item', 'state', 'get', item *args))
1297
+ list(tk_send('item', 'state', 'get', item * args))
1298
1298
  else
1299
1299
  bool(tk_send('item', 'state', 'get', item))
1300
1300
  end
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env ruby -r thread_tk
1
2
  # frozen_string_literal: false
2
3
  # Based on the widget demo of Tcl/Tk8.5.2
3
4
  # The following is the original copyright text.
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env ruby -r thread_tk
1
2
  # -*- coding: utf-8 -*-
2
3
  # frozen_string_literal: false
3
4
  #
@@ -4,9 +4,9 @@
4
4
  # 漢字コード設定 ( tk.rb のロード時の encoding 推定/設定に使われる )
5
5
  #if RUBY_VERSION < '1.9.0' ### !!!!!!!!!!!!!!
6
6
  unless defined?(::Encoding.default_external)
7
- $KCODE = 'euc'
7
+ $KCODE = 'utf-8'
8
8
  else
9
- DEFAULT_TK_ENCODING = 'EUC-JP'
9
+ DEFAULT_TK_ENCODING = 'utf-8'
10
10
  end
11
11
 
12
12
  # tk 関係ライブラリの読み込み
@@ -888,7 +888,7 @@ def showCode1(demo)
888
888
  $code_window.iconname(file)
889
889
  code = open([$demo_dir, file].join(File::Separator), 'r'){|fid| fid.read }
890
890
  $code_text.delete('1.0', 'end')
891
- code.force_encoding('EUC-JP') if defined?(::Encoding.default_external)
891
+ code.force_encoding('utf-8') if defined?(::Encoding.default_external)
892
892
  $code_text.insert('1.0', code)
893
893
  TkTextMarkInsert.new($code_text,'1.0')
894
894
  $set_linenum.call($code_text)
@@ -974,7 +974,7 @@ def showCode2(demo)
974
974
  $code_window.iconname(file)
975
975
  code = open([$demo_dir, file].join(File::Separator), 'r'){|fid| fid.read }
976
976
  $code_text.delete('1.0', 'end')
977
- code.force_encoding('EUC-JP') if defined?(::Encoding.default_external)
977
+ code.force_encoding('utf-8') if defined?(::Encoding.default_external)
978
978
  $code_text.insert('1.0', code)
979
979
  TkTextMarkInsert.new($code_text,'1.0')
980
980
  $set_linenum.call($code_text)
data/sample/irbtk.rb CHANGED
@@ -9,6 +9,8 @@
9
9
  # 'remote-tk.rb' includes 'multi-tk.rb'.
10
10
  # ( There is no trouble even if you give both options. )
11
11
  #
12
+ require "thread_tk"
13
+
12
14
  require 'remote-tk' if ARGV.delete('--remote-tk')
13
15
  require 'multi-tk' if ARGV.delete('--multi-tk')
14
16
 
data/sample/irbtkw.rbw CHANGED
@@ -6,6 +6,7 @@
6
6
  #
7
7
  release = '2008/03/08'
8
8
 
9
+ require 'thread_tk'
9
10
  require 'tk'
10
11
  begin
11
12
  require 'tktextio'
@@ -13,8 +14,6 @@ rescue LoadError
13
14
  require File.join(File.dirname(File.expand_path(__FILE__)), 'tktextio.rb')
14
15
  end
15
16
 
16
- require 'irb'
17
-
18
17
  if TkCore::WITH_ENCODING
19
18
  else
20
19
  # $KCODE setup
@@ -110,8 +109,15 @@ def STDIN.tty?
110
109
  end
111
110
 
112
111
  # IRB setup
112
+ require 'irb'
113
+
113
114
  IRB.init_config(nil)
114
115
  IRB.conf[:USE_READLINE] = false
116
+ IRB.conf[:USE_MULTILINE] = false
117
+ IRB.conf[:USE_SINGLELINE] = false
118
+ IRB.conf[:USE_COLORIZE] = false
119
+ IRB.conf[:PROMPT_MODE] = :DEFAULT
120
+ IRB.conf[:VERBOSE] = false
115
121
  IRB.init_error
116
122
  irb = IRB::Irb.new
117
123
  IRB.conf[:MAIN_CONTEXT] = irb.context
@@ -152,5 +158,8 @@ console.bind('Control-c'){
152
158
  irb_thread.join
153
159
 
154
160
  # exit
155
- ev_loop.kill
156
- Tk.exit
161
+ begin
162
+ ev_loop.kill
163
+ Tk.exit
164
+ rescue
165
+ end
data/sample/tktextio.rb CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env ruby
1
+ #!/usr/bin/env ruby -r thread_tk
2
2
  # frozen_string_literal: false
3
3
  #
4
4
  # TkTextIO class :: handling I/O stream on a TkText widget
@@ -395,6 +395,10 @@ class TkTextIO < TkText
395
395
 
396
396
  ####################################
397
397
 
398
+ def set_encoding(extern, intern = nil)
399
+ # not suppot -> do nothing
400
+ end
401
+
398
402
  def <<(obj)
399
403
  _write(obj)
400
404
  self
data/tk.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "tk"
3
- spec.version = "0.3.0"
3
+ spec.version = "0.5.0"
4
4
  spec.authors = ["SHIBATA Hiroshi", "Nobuyoshi Nakada", "Jeremy Evans"]
5
5
  spec.email = ["hsbt@ruby-lang.org", "nobu@ruby-lang.org", "code@jeremyevans.net"]
6
6
 
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - SHIBATA Hiroshi
8
8
  - Nobuyoshi Nakada
9
9
  - Jeremy Evans
10
- autorequire:
10
+ autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2020-10-08 00:00:00.000000000 Z
13
+ date: 2023-11-11 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -65,8 +65,9 @@ extensions:
65
65
  - ext/tk/tkutil/extconf.rb
66
66
  extra_rdoc_files: []
67
67
  files:
68
+ - ".github/dependabot.yml"
69
+ - ".github/workflows/test.yml"
68
70
  - ".gitignore"
69
- - ".travis.yml"
70
71
  - BSDL
71
72
  - Gemfile
72
73
  - LICENSE.txt
@@ -93,6 +94,7 @@ files:
93
94
  - lib/multi-tk.rb
94
95
  - lib/remote-tk.rb
95
96
  - lib/tcltk.rb
97
+ - lib/thread_tk.rb
96
98
  - lib/tk.rb
97
99
  - lib/tk/after.rb
98
100
  - lib/tk/autoload.rb
@@ -1120,7 +1122,7 @@ licenses:
1120
1122
  - BSD-2-Clause
1121
1123
  metadata:
1122
1124
  msys2_mingw_dependencies: tk
1123
- post_install_message:
1125
+ post_install_message:
1124
1126
  rdoc_options: []
1125
1127
  require_paths:
1126
1128
  - lib
@@ -1135,8 +1137,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1135
1137
  - !ruby/object:Gem::Version
1136
1138
  version: '0'
1137
1139
  requirements: []
1138
- rubygems_version: 3.1.4
1139
- signing_key:
1140
+ rubygems_version: 3.4.10
1141
+ signing_key:
1140
1142
  specification_version: 4
1141
1143
  summary: Tk interface module using tcltklib.
1142
1144
  test_files: []
data/.travis.yml DELETED
@@ -1,6 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - ruby-head
4
- before_install:
5
- - sudo apt-get install tk tk-dev
6
- - gem install bundler --no-document