From 9521e7d91d8d3341ba9694491c8fba3f55f0d020 Mon Sep 17 00:00:00 2001 From: nagai Date: Thu, 31 Jul 2003 20:52:40 +0000 Subject: * (IMPORTANT BUG FIX) scan of event keywords doesn't work on recent versions of Tck/Tk * (bug fix) initialize error of instance variable on TkComposite * (bug fix) initialize error on encoding-system on MultiTkIp * (bug fix) trouble on destroying widgets * (new) add JP and EN version of Ruby/Tk widget demos git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@4249 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/tk/lib/multi-tk.rb | 43 +++++++++++++++++++++++++++++++++++++++ ext/tk/lib/tk.rb | 55 +++++++++++++++++++++++++++----------------------- 2 files changed, 73 insertions(+), 25 deletions(-) (limited to 'ext/tk/lib') diff --git a/ext/tk/lib/multi-tk.rb b/ext/tk/lib/multi-tk.rb index 99c25f259..af9420425 100644 --- a/ext/tk/lib/multi-tk.rb +++ b/ext/tk/lib/multi-tk.rb @@ -174,6 +174,8 @@ class MultiTkIp @@DEFAULT_MASTER = self.allocate @@DEFAULT_MASTER.instance_eval{ + @encoding = [] + @tk_windows = {} @tk_table_list = [] @@ -433,6 +435,8 @@ class MultiTkIp fail ArgumentError, "expecting a Hash object for the 2nd argument" end + @encoding = [] + @tk_windows = {} @tk_table_list = [] @@ -792,6 +796,10 @@ end # class methods to delegate to TclTkIp class << MultiTkIp + def method_missing(id, *args) + __getip.send(id, *args) + end + def make_safe __getip.make_safe end @@ -1141,6 +1149,41 @@ class MultiTkIp end end + +# encoding convert +class MultiTkIp + # from tkencoding.rb by ttate@jaist.ac.jp + alias __eval _eval + alias __invoke _invoke + private :__eval + private :__invoke + + def encoding + @encoding[0] + end + def encoding=(enc) + @encoding[0] = enc + end + + def _eval(cmd) + if @encoding[0] != nil + _fromUTF8(__eval(_toUTF8(cmd, @encoding[0])), @encoding[0]) + else + __eval(cmd) + end + end + + def _invoke(*cmds) + if defined?(@encoding[0]) && @encoding[0] != nil + cmds = cmds.collect{|cmd| _toUTF8(cmd, @encoding[0])} + _fromUTF8(__invoke(*cmds), @encoding[0]) + else + __invoke(*cmds) + end + end +end + + # end of MultiTkIp definition MultiTkIp.freeze # defend against modification diff --git a/ext/tk/lib/tk.rb b/ext/tk/lib/tk.rb index b25c5f3a1..0a9aacaaa 100644 --- a/ext/tk/lib/tk.rb +++ b/ext/tk/lib/tk.rb @@ -407,7 +407,13 @@ module TkComm if num = EV_KEY.index($1) case EV_TYPE[num] when ?n - arg_cnv << TkComm::number(arg_val[idx]) + begin + val = TkComm::number(arg_val[idx]) + rescue ArgumentError + # ignore --> no convert + val = TkComm::string(arg_val[idx]) + end + arg_cnv << val when ?s arg_cnv << TkComm::string(arg_val[idx]) when ?b @@ -3748,24 +3754,28 @@ class TkWindow