diff options
author | nagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-07-01 22:08:19 +0000 |
---|---|---|
committer | nagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-07-01 22:08:19 +0000 |
commit | 28f8fc7f880ff06c296f7399b4e09a1db48e19fa (patch) | |
tree | 267471cf841b06e6fb0b3d779f32440235ac3761 /ext/tk | |
parent | 2e4fc59d1c8cff7c4575588f08247d73e90ce194 (diff) | |
download | ruby-28f8fc7f880ff06c296f7399b4e09a1db48e19fa.tar.gz |
tk.rb :
* TkWindow include TkWinfo
* treat unknown widget classes as subclasses of TkWindow
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4024 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/tk')
-rw-r--r-- | ext/tk/lib/tk.rb | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/ext/tk/lib/tk.rb b/ext/tk/lib/tk.rb index 74821f41c4..3c399a24a7 100644 --- a/ext/tk/lib/tk.rb +++ b/ext/tk/lib/tk.rb @@ -62,19 +62,32 @@ module TkComm return path end - ruby_class = WidgetClassNames[tk_class] - gen_class_name = ruby_class.name + 'GeneratedOnTk' + if ruby_class = WidgetClassNames[tk_class] + ruby_class_name = ruby_class.name + gen_class_name = ruby_class_name + 'GeneratedOnTk' + classname_def = '' + elsif Object.const_defined?('Tk' + tk_class) + ruby_class_name = 'Tk' + tk_class + gen_class_name = ruby_class_name + 'GeneratedOnTk' + classname_def = '' + else + ruby_class_name = 'TkWindow' + gen_class_name = ruby_class_name + tk_class + 'GeneratedOnTk' + classname_def = "WidgetClassName = '#{tk_class}'.freeze" + end unless Object.const_defined? gen_class_name - eval "class #{gen_class_name}<#{ruby_class.name} - def initialize(path) - @path=path - Tk_WINDOWS[@path] = self - end - end" + Object.class_eval "class #{gen_class_name}<#{ruby_class_name} + #{classname_def} + def initialize(path) + @path=path + Tk_WINDOWS[@path] = self + end + end" end - eval "#{gen_class_name}.new('#{path}')" + Object.class_eval "#{gen_class_name}.new('#{path}')" end private :_genobj_for_tkwidget + module_function :_genobj_for_tkwidget def tk_tcl2ruby(val) if val =~ /^rb_out (c\d+)/ @@ -3224,6 +3237,7 @@ class TkObject<TkKernel end class TkWindow<TkObject + include TkWinfo extend TkBindCore WidgetClassName = ''.freeze |