mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* ext/tk/tcltklib.c: SEGV when tcltk-stubs is enabled.
* ext/tk/tcltklib.c: avoid error on a shared object. * ext/tk/extconf.rb: support --with-tcltkversion * ext/tk/README.tcltklib: add document about --with-tcltkversion * ext/tk/sample/demos-jp/widget, ext/tk/sample/demos-en/widget, ext/tk/sample/demos-jp/style.rb, ext/tk/sample/demos-en/style.rb, ext/tk/sample/demos-jp/bind.rb, ext/tk/sample/demos-en/bind.rb: bug fix. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@15943 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
99a6e8a3ed
commit
849892636f
12 changed files with 237 additions and 80 deletions
15
ChangeLog
15
ChangeLog
|
@ -1,3 +1,18 @@
|
|||
Wed Apr 9 23:12:41 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
|
||||
|
||||
* ext/tk/tcltklib.c: SEGV when tcltk-stubs is enabled.
|
||||
|
||||
* ext/tk/tcltklib.c: avoid error on a shared object.
|
||||
|
||||
* ext/tk/extconf.rb: support --with-tcltkversion
|
||||
|
||||
* ext/tk/README.tcltklib: add document about --with-tcltkversion
|
||||
|
||||
* ext/tk/sample/demos-jp/widget, ext/tk/sample/demos-en/widget,
|
||||
ext/tk/sample/demos-jp/style.rb, ext/tk/sample/demos-en/style.rb,
|
||||
ext/tk/sample/demos-jp/bind.rb, ext/tk/sample/demos-en/bind.rb:
|
||||
bug fix.
|
||||
|
||||
Wed Apr 9 21:54:45 2008 Akinori MUSHA <knu@iDaemons.org>
|
||||
|
||||
* array.c (rb_ary_pop): Do not reallocate too often; backported
|
||||
|
|
|
@ -5,10 +5,14 @@ Tcl/Tk libraries or header files are installed but are not found, you can
|
|||
give the information by arguments of the 'configure' script. Please give
|
||||
some or all of the following options.
|
||||
|
||||
--with-tcltkversion=<version>
|
||||
force version of Tcl/Tk libaray
|
||||
(e.g. libtcl8.4g.so ==> --with-tcltkversion=8.4g)
|
||||
|
||||
--with-tcllib=<libname> (e.g. libtcl8.4.so ==> --with-tcllib=tcl8.4)
|
||||
--with-tklib=<libname> (e.g. libtk8.4.so ==> --with-tklib=tk8.4)
|
||||
|
||||
--enable-tcltk_stubs (if you force to enable stubs)
|
||||
--enable-tcltk-stubs (if you force to enable stubs)
|
||||
|
||||
--with-tcl-dir=<path>
|
||||
equal to "--with-tcl-include=<path>/include --with-tcl-lib=<path>/lib"
|
||||
|
|
|
@ -48,15 +48,60 @@ tk_ldir2 = with_config("tk-lib")
|
|||
tcl_ldir2 = with_config("tcl-lib")
|
||||
x11_ldir2 = with_config("X11-lib")
|
||||
|
||||
tk_ldir_list = [tk_ldir2, tk_ldir]
|
||||
tcl_ldir_list = [tcl_ldir2, tcl_ldir]
|
||||
|
||||
tklib = with_config("tklib")
|
||||
tcllib = with_config("tcllib")
|
||||
stubs = enable_config("tcltk_stubs") || with_config("tcltk_stubs")
|
||||
|
||||
tcltk_version = with_config("tcltkversion")
|
||||
|
||||
use_X = with_config("X11", (! is_win32))
|
||||
|
||||
def find_tcl(tcllib, stubs, *opt_paths)
|
||||
def check_tcltk_version(version)
|
||||
return [nil, nil] unless version
|
||||
|
||||
version = version.strip
|
||||
|
||||
tclver = version.dup
|
||||
tkver = version.dup
|
||||
|
||||
major = dot = minor = dot = plvl = ext = nil
|
||||
|
||||
if version =~ /^(\d)(\.?)(\d)(\.?)(\d*)(.*)$/
|
||||
major = $1; minor_dot = $2; minor = $3; plvl_dot = $4; plvl = $5; ext = $6
|
||||
dot = ! minor_dot.empty?
|
||||
if plvl_dot.empty? && ! plvl.empty?
|
||||
minor << plvl
|
||||
end
|
||||
elsif version =~ /^(\d)(\.?)(\d?)(.*)$/
|
||||
major = $1; minor_dot = $2; minor = $3; ext = $4
|
||||
dot = ! minor_dot.empty?
|
||||
else # unknown -> believe user
|
||||
return [tclver, tkver]
|
||||
end
|
||||
|
||||
# check Tcl7.6 / Tk4.2 ?
|
||||
if major == "7" # Tcl7.6 ( not support Tclversion < 7.6 )
|
||||
# Tk4.2
|
||||
tkver = "4" + ((dot)? ".": "") + ((minor.empty)? "": "2") + ext
|
||||
elsif major == "4" # Tk4.2 ( not support Tkversion < 4.2 )
|
||||
# Tcl7.6
|
||||
tclver = "7" + ((dot)? ".": "") + ((minor.empty)? "": "6") + ext
|
||||
end
|
||||
|
||||
[tclver, tkver]
|
||||
end
|
||||
|
||||
def find_tcl(tcllib, stubs, version, *opt_paths)
|
||||
default_paths = ["/usr/local/lib", "/usr/pkg/lib", "/usr/lib"]
|
||||
paths = opt_paths.compact.concat(default_paths)
|
||||
default_paths << "/Tcl/lib" # default for ActiveTcl
|
||||
|
||||
if (paths = opt_paths.compact).empty?
|
||||
paths = default_paths
|
||||
end
|
||||
|
||||
if stubs
|
||||
func = "Tcl_InitStubs"
|
||||
lib = "tclstub"
|
||||
|
@ -64,25 +109,42 @@ def find_tcl(tcllib, stubs, *opt_paths)
|
|||
func = "Tcl_FindExecutable"
|
||||
lib = "tcl"
|
||||
end
|
||||
if tcllib
|
||||
find_library(tcllib, func, *paths)
|
||||
|
||||
if version && ! version.empty?
|
||||
versions = [version]
|
||||
else
|
||||
%w[8.6 8.5 8.4 8.3 8.2 8.1 8.0 7.6].find { |ver|
|
||||
find_library("#{lib}#{ver}", func, *paths) or
|
||||
find_library("#{lib}#{ver.delete('.')}", func, *paths) or
|
||||
find_library("#{lib}#{ver}g", func, *paths) or
|
||||
find_library("#{lib}#{ver.delete('.')}g", func, *paths) or
|
||||
find_library("tcl#{ver}", func, *paths) or
|
||||
find_library("tcl#{ver.delete('.')}", func, *paths) or
|
||||
find_library("tcl#{ver}g", func, *paths) or
|
||||
find_library("tcl#{ver.delete('.')}g", func, *paths)
|
||||
} || find_library(lib, func, *paths)
|
||||
versions = %w[8.6 8.5 8.4 8.3 8.2 8.1 8.0 7.6]
|
||||
end
|
||||
|
||||
if tcllib
|
||||
st = find_library(tcllib, func, *paths)
|
||||
else
|
||||
st = versions.find { |ver|
|
||||
find_library("#{lib}#{ver}", func, *paths) or
|
||||
find_library("#{lib}#{ver.delete('.')}", func, *paths) or
|
||||
find_library("#{lib}#{ver}g", func, *paths) or
|
||||
find_library("#{lib}#{ver.delete('.')}g", func, *paths) or
|
||||
find_library("tcl#{ver}", func, *paths) or
|
||||
find_library("tcl#{ver.delete('.')}", func, *paths) or
|
||||
find_library("tcl#{ver}g", func, *paths) or
|
||||
find_library("tcl#{ver.delete('.')}g", func, *paths)
|
||||
} || (!version && find_library(lib, func, *paths))
|
||||
end
|
||||
|
||||
unless st
|
||||
puts("Warning:: cannot find Tcl library. tcltklib will not be compiled (tcltklib is disabled on your Ruby == Ruby/Tk will not work). Please check configure options.")
|
||||
end
|
||||
st
|
||||
end
|
||||
|
||||
def find_tk(tklib, stubs, *opt_paths)
|
||||
def find_tk(tklib, stubs, version, *opt_paths)
|
||||
default_paths = ["/usr/local/lib", "/usr/pkg/lib", "/usr/lib"]
|
||||
paths = opt_paths.compact.concat(default_paths)
|
||||
default_paths << "/Tcl/lib" # default for ActiveTcl
|
||||
|
||||
if (paths = opt_paths.compact).empty?
|
||||
paths = default_paths
|
||||
end
|
||||
|
||||
if stubs
|
||||
func = "Tk_InitStubs"
|
||||
lib = "tkstub"
|
||||
|
@ -90,27 +152,43 @@ def find_tk(tklib, stubs, *opt_paths)
|
|||
func = "Tk_Init"
|
||||
lib = "tk"
|
||||
end
|
||||
if tklib
|
||||
find_library(tklib, func, *paths)
|
||||
|
||||
if version && ! version.empty?
|
||||
versions = [version]
|
||||
else
|
||||
%w[8.6 8.5 8.4 8.3 8.2 8.1 8.0 4.2].find { |ver|
|
||||
find_library("#{lib}#{ver}", func, *paths) or
|
||||
find_library("#{lib}#{ver.delete('.')}", func, *paths) or
|
||||
find_library("#{lib}#{ver}g", func, *paths) or
|
||||
find_library("#{lib}#{ver.delete('.')}g", func, *paths) or
|
||||
find_library("tk#{ver}", func, *paths) or
|
||||
find_library("tk#{ver.delete('.')}", func, *paths) or
|
||||
find_library("tk#{ver}g", func, *paths) or
|
||||
find_library("tk#{ver.delete('.')}g", func, *paths)
|
||||
} || find_library(lib, func, *paths)
|
||||
versions = %w[8.6 8.5 8.4 8.3 8.2 8.1 8.0 4.2]
|
||||
end
|
||||
|
||||
if tklib
|
||||
st = find_library(tklib, func, *paths)
|
||||
else
|
||||
st = versions.find { |ver|
|
||||
find_library("#{lib}#{ver}", func, *paths) or
|
||||
find_library("#{lib}#{ver.delete('.')}", func, *paths) or
|
||||
find_library("#{lib}#{ver}g", func, *paths) or
|
||||
find_library("#{lib}#{ver.delete('.')}g", func, *paths) or
|
||||
find_library("tk#{ver}", func, *paths) or
|
||||
find_library("tk#{ver.delete('.')}", func, *paths) or
|
||||
find_library("tk#{ver}g", func, *paths) or
|
||||
find_library("tk#{ver.delete('.')}g", func, *paths)
|
||||
} || (!version && find_library(lib, func, *paths))
|
||||
end
|
||||
|
||||
unless st
|
||||
puts("Warning:: cannot find Tk library. tcltklib will not be compiled (tcltklib is disabled on your Ruby == Ruby/Tk will not work). Please check configure options.")
|
||||
end
|
||||
st
|
||||
end
|
||||
|
||||
def find_X11(*opt_paths)
|
||||
default_paths =
|
||||
[ "/usr/X11/lib", "/usr/lib/X11", "/usr/X11R6/lib", "/usr/openwin/lib" ]
|
||||
paths = opt_paths.compact.concat(default_paths)
|
||||
find_library("X11", "XOpenDisplay", *paths)
|
||||
st = find_library("X11", "XOpenDisplay", *paths)
|
||||
unless st
|
||||
puts("Warning:: cannot find X11 library. tcltklib will not be compiled (tcltklib is disabled on your Ruby == Ruby/Tk will not work). Please check configure options. If your Tcl/Tk don't require X11, please try --without-X11.")
|
||||
end
|
||||
st
|
||||
end
|
||||
|
||||
def pthread_check()
|
||||
|
@ -291,11 +369,13 @@ EOF
|
|||
end
|
||||
end
|
||||
|
||||
if have_header("tcl.h") && have_header("tk.h") &&
|
||||
tclver, tkver = check_tcltk_version(tcltk_version)
|
||||
|
||||
if have_header("tcl.h") && have_header("tk.h") &&
|
||||
( tcltk_framework ||
|
||||
( ( !use_X || find_X11(x11_ldir2, x11_ldir) ) &&
|
||||
find_tcl(tcllib, stubs, tcl_ldir2, tcl_ldir) &&
|
||||
find_tk(tklib, stubs, tk_ldir2, tk_ldir) ) )
|
||||
find_tcl(tcllib, stubs, tclver, *tcl_ldir_list) &&
|
||||
find_tk(tklib, stubs, tkver, *tk_ldir_list) ) )
|
||||
$CPPFLAGS += ' -DUSE_TCL_STUBS -DUSE_TK_STUBS' if stubs
|
||||
$CPPFLAGS += ' -D_WIN32' if /cygwin/ =~ RUBY_PLATFORM
|
||||
|
||||
|
|
|
@ -3339,28 +3339,29 @@ end
|
|||
|
||||
|
||||
# remove methods for security
|
||||
class MultiTkIp
|
||||
INTERP_THREAD = @@DEFAULT_MASTER.instance_variable_get('@interp_thread')
|
||||
INTERP_MUTEX = INTERP_THREAD[:mutex]
|
||||
INTERP_ROOT_CHECK = INTERP_THREAD[:root_check]
|
||||
|
||||
# undef_method :instance_eval
|
||||
undef_method :instance_variable_get
|
||||
undef_method :instance_variable_set
|
||||
end
|
||||
|
||||
module TkCore
|
||||
if MultiTkIp::WITH_RUBY_VM &&
|
||||
! MultiTkIp::RUN_EVENTLOOP_ON_MAIN_THREAD ### check Ruby 1.9 !!!!!!!
|
||||
if MultiTkIp::WITH_RUBY_VM &&
|
||||
! MultiTkIp::RUN_EVENTLOOP_ON_MAIN_THREAD ### check Ruby 1.9 !!!!!!!
|
||||
class MultiTkIp
|
||||
INTERP_THREAD = @@DEFAULT_MASTER.instance_variable_get('@interp_thread')
|
||||
INTERP_MUTEX = INTERP_THREAD[:mutex]
|
||||
INTERP_ROOT_CHECK = INTERP_THREAD[:root_check]
|
||||
end
|
||||
module TkCore
|
||||
INTERP_THREAD = MultiTkIp::INTERP_THREAD
|
||||
INTERP_MUTEX = MultiTkIp::INTERP_MUTEX
|
||||
INTERP_ROOT_CHECK = MultiTkIp::INTERP_ROOT_CHECK
|
||||
end
|
||||
class MultiTkIp
|
||||
remove_const(:INTERP_THREAD)
|
||||
remove_const(:INTERP_MUTEX)
|
||||
remove_const(:INTERP_ROOT_CHECK)
|
||||
end
|
||||
end
|
||||
|
||||
class MultiTkIp
|
||||
remove_const(:INTERP_THREAD)
|
||||
remove_const(:INTERP_MUTEX)
|
||||
remove_const(:INTERP_ROOT_CHECK)
|
||||
# undef_method :instance_eval
|
||||
undef_method :instance_variable_get
|
||||
undef_method :instance_variable_set
|
||||
end
|
||||
# end of MultiTkIp definition
|
||||
|
||||
|
|
|
@ -775,7 +775,7 @@ end
|
|||
private :_curr_cmd_id, :_next_cmd_id
|
||||
module_function :_curr_cmd_id, :_next_cmd_id
|
||||
|
||||
def install_cmd(cmd)
|
||||
def TkComm.install_cmd(cmd)
|
||||
return '' if cmd == ''
|
||||
begin
|
||||
ns = TkCore::INTERP._invoke_without_enc('namespace', 'current')
|
||||
|
@ -801,14 +801,20 @@ end
|
|||
'rb_out' << TkCore::INTERP._ip_id_ << ' ' << id
|
||||
end
|
||||
end
|
||||
def uninstall_cmd(id)
|
||||
def TkComm.uninstall_cmd(id)
|
||||
#id = $1 if /rb_out\S* (c(_\d+_)?\d+)/ =~ id
|
||||
id = $4 if id =~ /rb_out\S*(?:\s+(::\S*|[{](::.*)[}]|["](::.*)["]))? (c(_\d+_)?(\d+))/
|
||||
#Tk_CMDTBL.delete(id)
|
||||
TkCore::INTERP.tk_cmd_tbl.delete(id)
|
||||
end
|
||||
# private :install_cmd, :uninstall_cmd
|
||||
module_function :install_cmd, :uninstall_cmd
|
||||
# module_function :install_cmd, :uninstall_cmd
|
||||
def install_cmd(cmd)
|
||||
TkComm.install_cmd(cmd)
|
||||
end
|
||||
def uninstall_cmd(id)
|
||||
TkComm.uninstall_cmd(id)
|
||||
end
|
||||
|
||||
=begin
|
||||
def install_win(ppath,name=nil)
|
||||
|
@ -5317,7 +5323,7 @@ TkWidget = TkWindow
|
|||
#Tk.freeze
|
||||
|
||||
module Tk
|
||||
RELEASE_DATE = '2008-03-29'.freeze
|
||||
RELEASE_DATE = '2008-04-02'.freeze
|
||||
|
||||
autoload :AUTO_PATH, 'tk/variable'
|
||||
autoload :TCL_PACKAGE_PATH, 'tk/variable'
|
||||
|
|
|
@ -122,4 +122,4 @@ txt = TkText.new($bind_demo){|t|
|
|||
}
|
||||
|
||||
txt.width 60
|
||||
txt.width 24
|
||||
txt.height 24
|
||||
|
|
|
@ -64,7 +64,7 @@ TkText.new($style_demo){|t|
|
|||
style_tag_bold = TkTextTag.new(t, 'font'=>[family, 12, :bold, :italic])
|
||||
style_tag_big = TkTextTag.new(t, 'font'=>[family, 14, :bold])
|
||||
style_tag_verybig = TkTextTag.new(t, 'font'=>['Helvetica', 24, :bold])
|
||||
style_tag_small = TkTextTag.new(t, 'font'=>['Times 8 bold'])
|
||||
style_tag_small = TkTextTag.new(t, 'font'=>'Times 8 bold')
|
||||
end
|
||||
###
|
||||
# case($tk_version)
|
||||
|
|
|
@ -257,7 +257,10 @@ the demonstration. Once the demonstration window appears, you can \
|
|||
click the "See Code" button to see the Ruby/Tk code that created the \
|
||||
demonstration. If you wish, you can edit the code and click the \
|
||||
"Rerun Demo" button in the code window to reinvoke the demonstration \
|
||||
with the modified code.
|
||||
with the modified code. \
|
||||
Don't worry about breaking the source code. \
|
||||
Your modifications are not reflected on the original file. \
|
||||
Please try many kind of changes.
|
||||
|
||||
Some demo scripts require the recent version of Tk library \
|
||||
(e.g. Tk8.4 or later) \
|
||||
|
@ -266,6 +269,20 @@ required by the demo script, the demo doesn't work. \
|
|||
In such a case, please re-compile tcltklib with the later Tk library \
|
||||
which supports the required functions.
|
||||
|
||||
If your Tk supports Ttk (Tile) extension (included or installed), \
|
||||
please try the demo of Ttk extension (sample/tkextlib/tile/demo.rb) too.
|
||||
( Probably, Ttk extension \
|
||||
#{
|
||||
begin
|
||||
require 'tkextlib/tile'
|
||||
"is already installed on your environment"
|
||||
rescue
|
||||
"is not installed on your environment yet"
|
||||
end
|
||||
}\
|
||||
. )
|
||||
Ttk extension is a standard feature of Tk8.5 or later.
|
||||
|
||||
|
||||
EOT
|
||||
|
||||
|
@ -914,7 +931,7 @@ end
|
|||
#
|
||||
def aboutBox
|
||||
Tk.messageBox('icon'=>'info', 'type'=>'ok', 'title'=>'About Widget Demo',
|
||||
'message'=>"Ruby/Tk widget demonstration Ver.1.6.3-en\n\n" +
|
||||
'message'=>"Ruby/Tk widget demonstration Ver.1.6.4-en\n\n" +
|
||||
"based on demos of Tk8.1 -- 8.5 " +
|
||||
"( Copyright:: " +
|
||||
"(c) 1996-1997 Sun Microsystems, Inc. / " +
|
||||
|
|
|
@ -120,4 +120,4 @@ txt = TkText.new($bind_demo){|t|
|
|||
}
|
||||
|
||||
txt.width 60
|
||||
txt.width 24
|
||||
txt.height 24
|
||||
|
|
|
@ -65,7 +65,7 @@ txt = TkText.new($style_demo){|t|
|
|||
style_tag_bold = TkTextTag.new(t, 'font'=>[family, 12, :bold, :italic])
|
||||
style_tag_big = TkTextTag.new(t, 'font'=>[family, 14, :bold])
|
||||
style_tag_verybig = TkTextTag.new(t, 'font'=>['Helvetica', 24, :bold])
|
||||
style_tag_small = TkTextTag.new(t, 'font'=>['Times 8 bold'])
|
||||
style_tag_small = TkTextTag.new(t, 'font'=>'Times 8 bold')
|
||||
end
|
||||
###
|
||||
# case($tk_version)
|
||||
|
|
|
@ -46,15 +46,15 @@ when /^4.*/
|
|||
# $msg_kanji_font=TkFont.new('Helvetica 16', 'Gothic 16 bold')
|
||||
|
||||
when /^8.*/
|
||||
$font = TkFont.new('Helvetica 12')
|
||||
$kanji_font = TkFont.new('Helvetica 12', 'Mincho 12')
|
||||
$font = TkFont.new('Helvetica -12')
|
||||
$kanji_font = TkFont.new('Helvetica -12', 'Mincho -12')
|
||||
TkOption.add('*kanjiFont', knjfont, 'startupFile')
|
||||
$msg_kanji_font=TkFont.new('Helvetica 18 bold', 'Gothic 18 bold')
|
||||
$msg_kanji_font=TkFont.new('Helvetica 16 bold', 'Gothic 16 bold')
|
||||
|
||||
else
|
||||
$font = TkFont.new('Helvetica 14', nil)
|
||||
knjfont = '-*--16-*-jisx0208.1983-0'
|
||||
$kanji_font = TkFont.new('Helvetic 14', knj)
|
||||
$kanji_font = TkFont.new('Helvetic 14', knjfont)
|
||||
TkOption.add('*kanjiFont', knjfont, 'startupFile')
|
||||
$msg_kanji_font=TkFont.new('Helvetica 14',
|
||||
'-*--24-*-jisx0208.1983-0')
|
||||
|
@ -276,14 +276,31 @@ txt.insert('end', <<"EOT")
|
|||
るために、"コード参照"ボタンをクリックすることができます。あなたが\
|
||||
望むなら、そのコードを修正することができます。修正したコードでデモ\
|
||||
ンストレーションを再実行するためには、コードが書かれたウィンドウに\
|
||||
ある"デモ再実行" ボタンをクリックしてください。
|
||||
ある"デモ再実行" ボタンをクリックしてください。\
|
||||
コードを修正してもオリジナルのファイルが書き換えられることは\
|
||||
ありませんから、心配せずに色々な変更を試してみてください。
|
||||
|
||||
一部のデモでは,比較的最近のバージョンの Tk でなければサポートして\
|
||||
いない機能を使って実装しています(例えば Tk8.4 以上など).そのため,\
|
||||
そうした機能を持たない Tk ライブラリを使っている場合には,そうした\
|
||||
デモは正しく動きません.そのような機能が必要であれば,それをサポート\
|
||||
している Tk ライブラリを使うように,tcltklib をコンパイルしなおして\
|
||||
ください.
|
||||
一部のデモでは、比較的最近のバージョンの Tk でなければサポートして\
|
||||
いない機能を使って実装しています(例えば Tk8.4 以上など)。そのため、\
|
||||
そうした機能を持たない Tk ライブラリを使っている場合には、そうした\
|
||||
デモは正しく動きません。そのような機能が必要であれば、それをサポート\
|
||||
している Tk ライブラリを使うように tcltklib をコンパイルしなおして\
|
||||
ください。
|
||||
|
||||
もしあなたの Tk が (最初から含むかインストールしたかにより) \
|
||||
Ttk (Tile) 拡張を利用できる状態であるなら、\
|
||||
Ttk 拡張のデモ (sample/tkextlib/tile/demo.rb) もぜひ試してみてください。
|
||||
( 多分,現在のあなたの環境には Ttk 拡張は\
|
||||
#{
|
||||
begin
|
||||
require 'tkextlib/tile'
|
||||
"すでに導入されています"
|
||||
rescue
|
||||
"まだインストールされていません"
|
||||
end
|
||||
}\
|
||||
。)
|
||||
Ttk 拡張は、Tk8.5 以上では標準の機能として組み込まれています。
|
||||
|
||||
|
||||
EOT
|
||||
|
@ -948,7 +965,7 @@ end
|
|||
#
|
||||
def aboutBox
|
||||
Tk.messageBox('icon'=>'info', 'type'=>'ok', 'title'=>'About Widget Demo',
|
||||
'message'=>"Ruby/Tk ウィジェットデモ Ver.1.6.3-jp\n\n" +
|
||||
'message'=>"Ruby/Tk ウィジェットデモ Ver.1.6.4-jp\n\n" +
|
||||
"based on demos of Tk8.1 -- 8.5 " +
|
||||
"( Copyright:: " +
|
||||
"(c) 1996-1997 Sun Microsystems, Inc. / " +
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* Oct. 24, 1997 Y. Matsumoto
|
||||
*/
|
||||
|
||||
#define TCLTKLIB_RELEASE_DATE "2008-03-29"
|
||||
#define TCLTKLIB_RELEASE_DATE "2008-04-02"
|
||||
|
||||
#include "ruby.h"
|
||||
|
||||
|
@ -2585,10 +2585,12 @@ ip_set_exc_message(interp, exc)
|
|||
if (NIL_P(enc)) {
|
||||
encoding = (Tcl_Encoding)NULL;
|
||||
} else if (TYPE(enc) == T_STRING) {
|
||||
encoding = Tcl_GetEncoding(interp, RSTRING_PTR(enc));
|
||||
/* encoding = Tcl_GetEncoding(interp, RSTRING_PTR(enc)); */
|
||||
encoding = Tcl_GetEncoding((Tcl_Interp*)NULL, RSTRING_PTR(enc));
|
||||
} else {
|
||||
enc = rb_funcall(enc, ID_to_s, 0, 0);
|
||||
encoding = Tcl_GetEncoding(interp, RSTRING_PTR(enc));
|
||||
/* encoding = Tcl_GetEncoding(interp, RSTRING_PTR(enc)); */
|
||||
encoding = Tcl_GetEncoding((Tcl_Interp*)NULL, RSTRING_PTR(enc));
|
||||
}
|
||||
|
||||
/* to avoid a garbled error message dialog */
|
||||
|
@ -7105,7 +7107,9 @@ lib_toUTF8_core(ip_obj, src, encodename)
|
|||
encoding = (Tcl_Encoding)NULL;
|
||||
} else {
|
||||
StringValue(enc);
|
||||
encoding = Tcl_GetEncoding(interp, RSTRING_PTR(enc));
|
||||
/* encoding = Tcl_GetEncoding(interp, RSTRING_PTR(enc)); */
|
||||
encoding = Tcl_GetEncoding((Tcl_Interp*)NULL,
|
||||
RSTRING_PTR(enc));
|
||||
if (encoding == (Tcl_Encoding)NULL) {
|
||||
rb_warning("Tk-interp has unknown encoding information (@encoding:'%s')", RSTRING_PTR(enc));
|
||||
}
|
||||
|
@ -7121,7 +7125,9 @@ lib_toUTF8_core(ip_obj, src, encodename)
|
|||
rb_thread_critical = thr_crit_bup;
|
||||
return str;
|
||||
}
|
||||
encoding = Tcl_GetEncoding(interp, RSTRING_PTR(enc));
|
||||
/* encoding = Tcl_GetEncoding(interp, RSTRING_PTR(enc)); */
|
||||
encoding = Tcl_GetEncoding((Tcl_Interp*)NULL,
|
||||
RSTRING_PTR(enc));
|
||||
if (encoding == (Tcl_Encoding)NULL) {
|
||||
rb_warning("string has unknown encoding information (@encoding:'%s')", RSTRING_PTR(enc));
|
||||
}
|
||||
|
@ -7139,7 +7145,8 @@ lib_toUTF8_core(ip_obj, src, encodename)
|
|||
rb_thread_critical = thr_crit_bup;
|
||||
return str;
|
||||
}
|
||||
encoding = Tcl_GetEncoding(interp, RSTRING_PTR(encodename));
|
||||
/* encoding = Tcl_GetEncoding(interp, RSTRING_PTR(encodename)); */
|
||||
encoding = Tcl_GetEncoding((Tcl_Interp*)NULL, RSTRING_PTR(encodename));
|
||||
if (encoding == (Tcl_Encoding)NULL) {
|
||||
/*
|
||||
rb_warning("unknown encoding name '%s'",
|
||||
|
@ -7174,9 +7181,11 @@ lib_toUTF8_core(ip_obj, src, encodename)
|
|||
rb_ivar_set(str, ID_at_enc, ENCODING_NAME_UTF8);
|
||||
if (taint_flag) OBJ_TAINT(str);
|
||||
|
||||
/*
|
||||
if (encoding != (Tcl_Encoding)NULL) {
|
||||
Tcl_FreeEncoding(encoding);
|
||||
}
|
||||
*/
|
||||
Tcl_DStringFree(&dstr);
|
||||
|
||||
free(buf);
|
||||
|
@ -7284,7 +7293,9 @@ lib_fromUTF8_core(ip_obj, src, encodename)
|
|||
encoding = (Tcl_Encoding)NULL;
|
||||
} else {
|
||||
StringValue(enc);
|
||||
encoding = Tcl_GetEncoding(interp, RSTRING_PTR(enc));
|
||||
/* encoding = Tcl_GetEncoding(interp, RSTRING_PTR(enc)); */
|
||||
encoding = Tcl_GetEncoding((Tcl_Interp*)NULL,
|
||||
RSTRING_PTR(enc));
|
||||
if (encoding == (Tcl_Encoding)NULL) {
|
||||
rb_warning("Tk-interp has unknown encoding information (@encoding:'%s')", RSTRING_PTR(enc));
|
||||
} else {
|
||||
|
@ -7314,7 +7325,8 @@ lib_fromUTF8_core(ip_obj, src, encodename)
|
|||
return str;
|
||||
}
|
||||
|
||||
encoding = Tcl_GetEncoding(interp, RSTRING_PTR(encodename));
|
||||
/* encoding = Tcl_GetEncoding(interp, RSTRING_PTR(encodename)); */
|
||||
encoding = Tcl_GetEncoding((Tcl_Interp*)NULL, RSTRING_PTR(encodename));
|
||||
if (encoding == (Tcl_Encoding)NULL) {
|
||||
/*
|
||||
rb_warning("unknown encoding name '%s'",
|
||||
|
@ -7363,9 +7375,11 @@ lib_fromUTF8_core(ip_obj, src, encodename)
|
|||
|
||||
if (taint_flag) OBJ_TAINT(str);
|
||||
|
||||
/*
|
||||
if (encoding != (Tcl_Encoding)NULL) {
|
||||
Tcl_FreeEncoding(encoding);
|
||||
}
|
||||
*/
|
||||
Tcl_DStringFree(&dstr);
|
||||
|
||||
free(buf);
|
||||
|
@ -9110,7 +9124,7 @@ create_dummy_encoding_for_tk_core(interp, name, error_mode)
|
|||
StringValue(name);
|
||||
|
||||
#if TCL_MAJOR_VERSION > 8 || (TCL_MAJOR_VERSION == 8 && TCL_MINOR_VERSION >= 1)
|
||||
if (Tcl_GetEncoding(ptr->ip, RSTRING_PTR(name)) == (Tcl_Encoding) NULL) {
|
||||
if (Tcl_GetEncoding((Tcl_Interp*)NULL, RSTRING_PTR(name)) == (Tcl_Encoding)NULL) {
|
||||
if (RTEST(error_mode)) {
|
||||
rb_raise(rb_eArgError, "invalid Tk encoding name '%s'",
|
||||
RSTRING_PTR(name));
|
||||
|
@ -10052,6 +10066,9 @@ Init_tcltklib()
|
|||
|
||||
/* --------------------------------------------------------------- */
|
||||
|
||||
/* Tcl stub check */
|
||||
tcl_stubs_check();
|
||||
|
||||
Tcl_ObjType_ByteArray = Tcl_GetObjType(Tcl_ObjTypeName_ByteArray);
|
||||
Tcl_ObjType_String = Tcl_GetObjType(Tcl_ObjTypeName_String);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue