tk 0.4.0 → 0.5.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e1347bf6638e8e5c8ad7de473d26b0c8b3d2f4b8a2c195696c24c19d652cb426
4
- data.tar.gz: c52bc29bd1d742bc707c7d53f82c564355c32c43dd64e19a2b4df8ed63b9bbab
3
+ metadata.gz: 27203ca65a4961a7c3594cd5ec6c50d9f1440aec4640b48d3dc3a2749f599724
4
+ data.tar.gz: ec99535ddf2b33049fde77d89eee84b1665ca7252ea4ed0b6d5c2d37af87da33
5
5
  SHA512:
6
- metadata.gz: 47633e9b2b38bbde90c157d6fec882ea7747180de3ac28bbec7d0d8671ec709cf9a0cdff5335186e192b3fdf72c7f4b6de68479b8307d6ea426ba47e3de35482
7
- data.tar.gz: 7fb2f1dea579e612ea57eddd8136f855c68b4845d550559c136ca5e92e8c4af1fe437544721763b71f50df5d60e0c19de7ea01f4eb602e7cf177862cc94d0381
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/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.rb CHANGED
@@ -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 = true
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))
@@ -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.4.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.4.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: 2021-03-26 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.2.3
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