[前][次][番号順一覧][スレッド一覧]

ruby-changes:4128

From: ko1@a...
Date: Thu, 28 Feb 2008 03:46:08 +0900 (JST)
Subject: [ruby-changes:4128] nagai - Ruby:r15618 (trunk): * ext/tk/lib/tk.rb, ext/tk/lib/*: make default widget set

nagai	2008-02-28 03:44:31 +0900 (Thu, 28 Feb 2008)

  New Revision: 15618

  Modified files:
    trunk/ChangeLog
    trunk/ext/tk/lib/tk/autoload.rb
    trunk/ext/tk/lib/tk/button.rb
    trunk/ext/tk/lib/tk/canvas.rb
    trunk/ext/tk/lib/tk/checkbutton.rb
    trunk/ext/tk/lib/tk/composite.rb
    trunk/ext/tk/lib/tk/entry.rb
    trunk/ext/tk/lib/tk/event.rb
    trunk/ext/tk/lib/tk/font.rb
    trunk/ext/tk/lib/tk/frame.rb
    trunk/ext/tk/lib/tk/label.rb
    trunk/ext/tk/lib/tk/labelframe.rb
    trunk/ext/tk/lib/tk/listbox.rb
    trunk/ext/tk/lib/tk/macpkg.rb
    trunk/ext/tk/lib/tk/menu.rb
    trunk/ext/tk/lib/tk/menubar.rb
    trunk/ext/tk/lib/tk/menuspec.rb
    trunk/ext/tk/lib/tk/message.rb
    trunk/ext/tk/lib/tk/optiondb.rb
    trunk/ext/tk/lib/tk/panedwindow.rb
    trunk/ext/tk/lib/tk/radiobutton.rb
    trunk/ext/tk/lib/tk/root.rb
    trunk/ext/tk/lib/tk/scale.rb
    trunk/ext/tk/lib/tk/scrollbar.rb
    trunk/ext/tk/lib/tk/scrollbox.rb
    trunk/ext/tk/lib/tk/spinbox.rb
    trunk/ext/tk/lib/tk/text.rb
    trunk/ext/tk/lib/tk/textimage.rb
    trunk/ext/tk/lib/tk/textmark.rb
    trunk/ext/tk/lib/tk/texttag.rb
    trunk/ext/tk/lib/tk/textwindow.rb
    trunk/ext/tk/lib/tk/toplevel.rb
    trunk/ext/tk/lib/tk/ttk_selector.rb
    trunk/ext/tk/lib/tk/variable.rb
    trunk/ext/tk/lib/tk/winpkg.rb
    trunk/ext/tk/lib/tk.rb
    trunk/ext/tk/lib/tkextlib/blt/busy.rb
    trunk/ext/tk/lib/tkextlib/blt/eps.rb
    trunk/ext/tk/lib/tkextlib/blt/tile/button.rb
    trunk/ext/tk/lib/tkextlib/blt/tile/checkbutton.rb
    trunk/ext/tk/lib/tkextlib/blt/tile/frame.rb
    trunk/ext/tk/lib/tkextlib/blt/tile/label.rb
    trunk/ext/tk/lib/tkextlib/blt/tile/radiobutton.rb
    trunk/ext/tk/lib/tkextlib/blt/tile/scrollbar.rb
    trunk/ext/tk/lib/tkextlib/blt/tile/toplevel.rb
    trunk/ext/tk/lib/tkextlib/bwidget/button.rb
    trunk/ext/tk/lib/tkextlib/bwidget/buttonbox.rb
    trunk/ext/tk/lib/tkextlib/bwidget/dialog.rb
    trunk/ext/tk/lib/tkextlib/bwidget/entry.rb
    trunk/ext/tk/lib/tkextlib/bwidget/label.rb
    trunk/ext/tk/lib/tkextlib/bwidget/labelentry.rb
    trunk/ext/tk/lib/tkextlib/bwidget/spinbox.rb
    trunk/ext/tk/lib/tkextlib/itk/incr_tk.rb
    trunk/ext/tk/lib/tkextlib/iwidgets/checkbox.rb
    trunk/ext/tk/lib/tkextlib/iwidgets/hierarchy.rb
    trunk/ext/tk/lib/tkextlib/iwidgets/notebook.rb
    trunk/ext/tk/lib/tkextlib/iwidgets/radiobox.rb
    trunk/ext/tk/lib/tkextlib/iwidgets/selectionbox.rb
    trunk/ext/tk/lib/tkextlib/iwidgets/selectiondialog.rb
    trunk/ext/tk/lib/tkextlib/iwidgets/tabnotebook.rb
    trunk/ext/tk/lib/tkextlib/iwidgets/tabset.rb
    trunk/ext/tk/lib/tkextlib/tcllib/autoscroll.rb
    trunk/ext/tk/lib/tkextlib/tcllib/ctext.rb
    trunk/ext/tk/lib/tkextlib/tcllib/datefield.rb
    trunk/ext/tk/lib/tkextlib/tcllib/ip_entry.rb
    trunk/ext/tk/lib/tkextlib/tcllib/plotchart.rb
    trunk/ext/tk/lib/tkextlib/tile/sizegrip.rb
    trunk/ext/tk/lib/tkextlib/tile/style.rb
    trunk/ext/tk/lib/tkextlib/tile/tbutton.rb
    trunk/ext/tk/lib/tkextlib/tile/tcheckbutton.rb
    trunk/ext/tk/lib/tkextlib/tile/tcombobox.rb
    trunk/ext/tk/lib/tkextlib/tile/tentry.rb
    trunk/ext/tk/lib/tkextlib/tile/tframe.rb
    trunk/ext/tk/lib/tkextlib/tile/tlabel.rb
    trunk/ext/tk/lib/tkextlib/tile/tlabelframe.rb
    trunk/ext/tk/lib/tkextlib/tile/tmenubutton.rb
    trunk/ext/tk/lib/tkextlib/tile/tnotebook.rb
    trunk/ext/tk/lib/tkextlib/tile/tpaned.rb
    trunk/ext/tk/lib/tkextlib/tile/tprogressbar.rb
    trunk/ext/tk/lib/tkextlib/tile/tradiobutton.rb
    trunk/ext/tk/lib/tkextlib/tile/treeview.rb
    trunk/ext/tk/lib/tkextlib/tile/tscale.rb
    trunk/ext/tk/lib/tkextlib/tile/tscrollbar.rb
    trunk/ext/tk/lib/tkextlib/tile/tseparator.rb
    trunk/ext/tk/lib/tkextlib/tile.rb
    trunk/ext/tk/lib/tkextlib/tktrans/tktrans.rb
    trunk/ext/tk/lib/tkextlib/vu/spinbox.rb
    trunk/ext/tk/sample/tkextlib/tile/toolbutton.tcl

  Log:
    * ext/tk/lib/tk.rb, ext/tk/lib/*: make default widget set 
      switchable between Tk (standard Tcl/Tk widget set) and 
      Ttk (Tile). Initial default widget set is Tk. Now, toplevel 
      widget classes are removed and defined as aliases. 
      For example, "TkButton" is an alias of the "Tk::Button" class. 
      Those aliases are replaced when switching default widget set. 
      "Tk.default_widget_set=" is the method for switching default 
      widget set. "Tk.default_widget_set = :Ttk" defines Ttk (Tile) 
      widget set as default. It means that "TkButton" denotes 
      "Tk::Tile::Button" class. And then, "TkButton.new" creates 
      a Tk::Tile::Button widget. Of course, you can back to use 
      standard Tk widgets as the default widget set by calling 
      "Tk.default_widget_set = :Tk", whenever you want. Based on 
      thie feature, you can use Ttk widget styling engine on your 
      old Ruby/Tk application without modifying its source, if you 
      don'tuse widget options unsupported on Ttk widgets (At first, 
      call "Tk.default_widget_set = :Ttk", and next load and run 
      your application). 
      This is one step for supporting Tcl/Tk8.5 features.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/tcllib/plotchart.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/event.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/tcllib/ip_entry.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/tile/tnotebook.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/macpkg.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/bwidget/labelentry.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/bwidget/spinbox.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/autoload.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/itk/incr_tk.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/iwidgets/hierarchy.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/tile/treeview.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/blt/tile/checkbutton.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/textwindow.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/root.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/blt/tile/frame.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/tile/tscale.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/font.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/bwidget/buttonbox.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/listbox.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/radiobutton.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/textimage.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/blt/tile/button.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/tile/sizegrip.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/checkbutton.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/scrollbar.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/iwidgets/notebook.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/label.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/ttk_selector.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/tile/tbutton.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/sample/tkextlib/tile/toolbutton.tcl?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/tile/tprogressbar.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/tile/tlabelframe.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/tile/tframe.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/tcllib/datefield.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/blt/tile/scrollbar.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/bwidget/label.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/iwidgets/checkbox.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/blt/tile/radiobutton.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/tile.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/tcllib/ctext.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/entry.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/bwidget/button.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/tile/tseparator.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/tile/tpaned.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/blt/busy.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/panedwindow.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/bwidget/entry.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/menu.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/menubar.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/bwidget/dialog.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/tile/tcheckbutton.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/text.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/button.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/message.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/tile/style.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/labelframe.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/winpkg.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/blt/tile/label.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/iwidgets/radiobox.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/scale.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/vu/spinbox.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/menuspec.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/canvas.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/composite.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/tile/tlabel.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/textmark.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/toplevel.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/spinbox.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/tile/tscrollbar.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/tile/tradiobutton.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/tile/tcombobox.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/iwidgets/selectionbox.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/iwidgets/selectiondialog.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/iwidgets/tabnotebook.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/scrollbox.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/tktrans/tktrans.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/frame.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/texttag.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/variable.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/tile/tmenubutton.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/tile/tentry.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/iwidgets/tabset.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/tcllib/autoscroll.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/blt/tile/toplevel.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tk/optiondb.rb?r1=15618&r2=15617&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ext/tk/lib/tkextlib/blt/eps.rb?r1=15618&r2=15617&diff_format=u

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 15617)
+++ ChangeLog	(revision 15618)
@@ -1,3 +1,25 @@
+Thu Feb 28 03:03:32 2008  Hidetoshi NAGAI  <nagai@a...>
+
+	* ext/tk/lib/tk.rb, ext/tk/lib/*: make default widget set 
+	  switchable between Tk (standard Tcl/Tk widget set) and 
+	  Ttk (Tile). Initial default widget set is Tk. Now, toplevel 
+	  widget classes are removed and defined as aliases. 
+	  For example, "TkButton" is an alias of the "Tk::Button" class. 
+	  Those aliases are replaced when switching default widget set. 
+	  "Tk.default_widget_set=" is the method for switching default 
+	  widget set. "Tk.default_widget_set = :Ttk" defines Ttk (Tile) 
+	  widget set as default. It means that "TkButton" denotes 
+	  "Tk::Tile::Button" class. And then, "TkButton.new" creates 
+	  a Tk::Tile::Button widget. Of course, you can back to use 
+	  standard Tk widgets as the default widget set by calling 
+	  "Tk.default_widget_set = :Tk", whenever you want. Based on 
+	  thie feature, you can use Ttk widget styling engine on your 
+	  old Ruby/Tk application without modifying its source, if you 
+	  don'tuse widget options unsupported on Ttk widgets (At first, 
+	  call "Tk.default_widget_set = :Ttk", and next load and run 
+	  your application). 
+	  This is one step for supporting Tcl/Tk8.5 features.
+
 Wed Feb 27 22:55:42 2008  NARUSE, Yui  <naruse@r...>
 
 	* string.c (rb_str_coderange_scan_restartable): coderange scaning
@@ -5079,7 +5101,7 @@
 
 	* bootstraptest/test_io.rb, test_knownbug.rb: move a fixed test.
 
-Fri Dec 21 17:56:30 2007    <nagai@o...>
+Fri Dec 21 17:56:30 2007  Hidetoshi NAGAI  <nagai@a...>
 
 	* ext/tk/tcltklib.c: provisional support on Ruby-VM.
 
Index: ext/tk/sample/tkextlib/tile/toolbutton.tcl
===================================================================
--- ext/tk/sample/tkextlib/tile/toolbutton.tcl	(revision 15617)
+++ ext/tk/sample/tkextlib/tile/toolbutton.tcl	(revision 15618)
@@ -4,6 +4,18 @@
 # Demonstration of custom widget styles.
 #
 
+set tile_ver [package require tile]
+if {[package vcompare $tile_ver 0.8] >= 0} {
+    set style ::ttk::style
+} {
+    set style style
+}
+if {[package vcompare $tile_ver 0.7] >= 0} {
+    set conf_subcmd configure
+} {
+    set conf_subcmd default
+}
+
 #
 # ~ BACKGROUND
 #
@@ -42,7 +54,8 @@
 # style; see demo.tcl.)
 #
 
-style theme settings "step" {
+#$style theme settings "step" {
+$style theme settings "alt" {
 
 #
 # First, we use [style layout] to define what elements to
@@ -51,7 +64,7 @@
 # and a label.  (See also the TScrollbar layout definition 
 # in demos/blue.tcl for a more complicated layout spec.)
 #
-    style layout Toolbutton {
+    $style layout Toolbutton {
         Toolbutton.background
         Toolbutton.border -children {
             Toolbutton.padding -children {
@@ -68,7 +81,7 @@
 # For many options (like -background), the defaults
 # inherited from the parent style are sufficient.
 #
-    style default Toolbutton -width 0 -padding 1 -relief flat -borderwidth 2
+    $style $conf_subcmd Toolbutton -width 0 -padding 1 -relief flat -borderwidth 2
 
 #
 # Finally, use [style map] to specify state-specific 
@@ -78,7 +91,7 @@
 # over the widget).  Each state-value pair is checked
 # in order, and the first matching state takes precedence.
 #
-    style map Toolbutton -relief {
+    $style map Toolbutton -relief {
 	disabled 	flat
     	selected	sunken  
 	pressed 	sunken  
@@ -93,19 +106,19 @@
 # design decisions from an aesthetic standpoint.)
 #
 if {![catch {package require tile::theme::blue}]} {
-style theme settings "blue" {
+$style theme settings "blue" {
 
     #
     # Default values:
     #
-    style default Toolbutton \
+    $style $conf_subcmd Toolbutton \
     	-width 0 -relief flat -borderwidth 2 \
 	-background #6699CC -foreground #000000 ;
 
     #
     # Configure state-specific values for -relief, as before:
     #
-    style map Toolbutton -relief {
+    $style map Toolbutton -relief {
 	disabled 	flat
     	selected	sunken  
 	pressed 	sunken  
@@ -116,8 +129,8 @@
     # Adjust the -padding at the same time, to enhance
     # the raised/sunken illusion:
     #
-    style default Toolbutton -padding 4
-    style map Toolbutton -padding {
+    $style $conf_subcmd Toolbutton -padding 4
+    $style map Toolbutton -padding {
 	disabled	{4}
 	selected	{6 6 2 2}
 	pressed		{6 6 2 2}
@@ -128,7 +141,7 @@
     # ... and change the foreground and background colors
     # when the mouse cursor is over the widget:
     #
-    style map Toolbutton -background {
+    $style map Toolbutton -background {
 	active  	#008800
     } -foreground {
 	active  	#FFFFFF
Index: ext/tk/lib/tk.rb
===================================================================
--- ext/tk/lib/tk.rb	(revision 15617)
+++ ext/tk/lib/tk.rb	(revision 15618)
@@ -935,7 +935,7 @@
 
   def _bindinfo(what, context=nil)
     if context
-      tk_call_without_enc(*what+["<#{tk_event_sequence(context)}>"]) .collect {|cmdline|
+      tk_call_without_enc(*what+["<#{tk_event_sequence(context)}>"]).each_line.collect {|cmdline|
 =begin
         if cmdline =~ /^rb_out\S* (c(?:_\d+_)?\d+)\s+(.*)$/
           #[Tk_CMDTBL[$1], $2]
@@ -4102,6 +4102,14 @@
   include TkWinfo
   extend TkBindCore
 
+  @@WIDGET_INSPECT_FULL = false
+  def TkWindow._widget_inspect_full_?
+    @@WIDGET_INSPECT_FULL
+  end
+  def TkWindow._widget_inspect_full_=(mode)
+    @@WIDGET_INSPECT_FULL = (mode && true) || false
+  end
+
   TkCommandNames = [].freeze
   ## ==> If TkCommandNames[0] is a string (not a null string), 
   ##     assume the string is a Tcl/Tk's create command of the widget class. 
@@ -4204,8 +4212,12 @@
   private :create_self
 
   def inspect
-    str = super
-    str[0..(str.index(' '))] << '@path=' << @path.inspect << '>'
+    if @@WIDGET_INSPECT_FULL
+      super
+    else
+      str = super
+      str[0..(str.index(' '))] << '@path=' << @path.inspect << '>'
+    end
   end
 
   def exist?
@@ -4717,6 +4729,7 @@
     bindtags(bindtags().unshift(tag))
   end
 end
+TkWidget = TkWindow
 
 # freeze core modules
 #TclTkLib.freeze
Index: ext/tk/lib/tkextlib/iwidgets/hierarchy.rb
===================================================================
--- ext/tk/lib/tkextlib/iwidgets/hierarchy.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/iwidgets/hierarchy.rb	(revision 15618)
@@ -207,7 +207,7 @@
     self
   end
 
-  # based on TkText widget
+  # based on Tk::Text widget
 
   def bbox(index)
     list(tk_send_without_enc('bbox', _get_eval_enc_str(index)))
Index: ext/tk/lib/tkextlib/iwidgets/tabset.rb
===================================================================
--- ext/tk/lib/tkextlib/iwidgets/tabset.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/iwidgets/tabset.rb	(revision 15618)
@@ -96,4 +96,48 @@
     tk_call(@path, 'select', index(idx))
     self
   end
+
+  def show_tab(idx)
+    if index(idx) == 0
+      self.start = 0
+      return
+    end
+
+    reutrn unless @canvas ||= self.winfo_children[0]
+
+    delta = 1 if (delta = cget(:gap)) == 'overlap' ||
+                   (delta = self.winfo_pixels(delta) + 1) <= 0
+
+    case cget(:tabpos)
+    when 's', 'n'
+      if (head = tabcget(idx, :left)) < 0
+        self.start -= head
+        return
+      end
+      tabs_size = @canvas.winfo_width
+      tab_start, tab_end = @canvas . 
+        find_overlapping(head, 0, head + delta, @canvas.winfo_height) . 
+        find_all{|id| @canvas.itemtype(id) == TkcPolygon} . 
+        map!{|id| bbox = @canvas.bbox(id); [bbox[0], bbox[2]]} . max
+
+    when 'e', 'w'
+      if (head = tabcget(idx, :top)) < 0
+        self.start -= head
+        return
+      end
+      tabs_size = @canvas.winfo_height
+      tab_start, tab_end = @canvas . 
+        find_overlapping(0, head, @canvas.winfo_width, head + delta) . 
+        find_all{|id| @canvas.itemtype(id) == TkcPolygon} . 
+        map!{|id| bbox = @canvas.bbox(id); [bbox[1], bbox[3]]} . max
+    end
+
+    if (size = tab_end - tab_start + 1) > tabs_size
+      self.start -= tab_start
+    elsif head + size > tabs_size
+      self.start -= head + size - tabs_size
+    end
+
+    self
+  end
 end
Index: ext/tk/lib/tkextlib/iwidgets/selectiondialog.rb
===================================================================
--- ext/tk/lib/tkextlib/iwidgets/selectiondialog.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/iwidgets/selectiondialog.rb	(revision 15618)
@@ -49,7 +49,7 @@
     self
   end
 
-  # based on TkListbox ( and TkTextWin )
+  # based on Tk::Listbox ( and TkTextWin )
   def curselection
     list(tk_send_without_enc('curselection'))
   end
Index: ext/tk/lib/tkextlib/iwidgets/radiobox.rb
===================================================================
--- ext/tk/lib/tkextlib/iwidgets/radiobox.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/iwidgets/radiobox.rb	(revision 15618)
@@ -85,12 +85,15 @@
     self
   end
 
-  def get(idx)
-    simplelist(tk_call(@path, 'get', index(idx))).collect{|id|
-      Tk::Itk::Component.id2obj(self, id)
-    }
+  def get_tag
+    ((tag = tk_call_without_enc(@path, 'get')).empty?)? nil: tag
   end
+  alias get get_tag
 
+  def get_obj
+    (tag = get_tag)? Tk::Itk::Component.id2obj(self, tag): nil
+  end
+
   def index(idx)
     number(tk_call(@path, 'index', tagid(idx)))
   end
Index: ext/tk/lib/tkextlib/iwidgets/tabnotebook.rb
===================================================================
--- ext/tk/lib/tkextlib/iwidgets/tabnotebook.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/iwidgets/tabnotebook.rb	(revision 15618)
@@ -116,6 +116,11 @@
     self
   end
 
+  def show_tab(idx)
+    @tabset.show_tab(idx)
+    self
+  end
+
   def scrollcommand(cmd=Proc.new)
     configure_cmd 'scrollcommand', cmd
     self
@@ -147,7 +152,12 @@
 
   def view(*index)
     if index.size == 0
-      window(tk_send_without_enc('view'))
+      idx = num_or_str(tk_send_without_enc('view'))
+      if idx.kind_of?(Fixnum) && idx < 0
+        nil
+      else
+        idx
+      end
     else
       tk_send_without_enc('view', *index)
       self
@@ -161,8 +171,8 @@
   end
   alias xview_moveto view_moveto
   alias yview_moveto view_moveto
-  def view_scroll(*index)
-    view('scroll', *index)
+  def view_scroll(index, what='pages')
+    view('scroll', index, what)
   end
   alias xview_scroll view_scroll
   alias yview_scroll view_scroll
Index: ext/tk/lib/tkextlib/iwidgets/notebook.rb
===================================================================
--- ext/tk/lib/tkextlib/iwidgets/notebook.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/iwidgets/notebook.rb	(revision 15618)
@@ -146,7 +146,12 @@
 
   def view(*idxs)
     if idxs.size == 0
-      window(tk_send_without_enc('view'))
+      idx = num_or_str(tk_send_without_enc('view'))
+      if idx.kind_of?(Fixnum) && idx < 0
+        nil
+      else
+        idx
+      end
     else
       tk_send_without_enc('view', *idxs)
       self
@@ -160,8 +165,8 @@
   end
   alias xview_moveto view_moveto
   alias yview_moveto view_moveto
-  def view_scroll(*idxs)
-    view('scroll', *idxs)
+  def view_scroll(index, what='pages')
+    view('scroll', index, what)
   end
   alias xview_scroll view_scroll
   alias yview_scroll view_scroll
Index: ext/tk/lib/tkextlib/iwidgets/checkbox.rb
===================================================================
--- ext/tk/lib/tkextlib/iwidgets/checkbox.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/iwidgets/checkbox.rb	(revision 15618)
@@ -85,12 +85,24 @@
     self
   end
 
-  def get(idx)
-    simplelist(tk_call(@path, 'get', index(idx))).collect{|id|
+  def get_tags
+    simplelist(tk_call_without_enc(@path, 'get'))
+  end
+
+  def get_objs
+    simplelist(tk_call_without_enc(@path, 'get')).collect{|id|
       Tk::Itk::Component.id2obj(self, id)
     }
   end
 
+  def get(idx=nil)
+    if idx
+      bool(tk_call_without_enc(@path, 'get', index(idx)))
+    else
+      get_tags
+    end
+  end
+
   def index(idx)
     number(tk_call(@path, 'index', tagid(idx)))
   end
Index: ext/tk/lib/tkextlib/iwidgets/selectionbox.rb
===================================================================
--- ext/tk/lib/tkextlib/iwidgets/selectionbox.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/iwidgets/selectionbox.rb	(revision 15618)
@@ -59,7 +59,7 @@
     self
   end
 
-  # based on TkListbox ( and TkTextWin )
+  # based on Tk::Listbox ( and TkTextWin )
   def curselection
     list(tk_send_without_enc('curselection'))
   end
Index: ext/tk/lib/tkextlib/blt/busy.rb
===================================================================
--- ext/tk/lib/tkextlib/blt/busy.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/blt/busy.rb	(revision 15618)
@@ -19,7 +19,7 @@
     class Shield < TkWindow
       def self.shield_path(win)
         win = window(win) unless win.kind_of?(TkWindow)
-        if win.kind_of?(TkToplevel)
+        if win.kind_of?(Tk::Toplevel)
           win.path + '._Busy'
         else
           win.path + '_Busy'
Index: ext/tk/lib/tkextlib/blt/eps.rb
===================================================================
--- ext/tk/lib/tkextlib/blt/eps.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/blt/eps.rb	(revision 15618)
@@ -14,7 +14,7 @@
   end
 end
 
-class TkCanvas
+class Tk::Canvas
   alias __BLT_EPS_item_strval_optkeys __item_strval_optkeys
   def __item_strval_optkeys(id)
     __BLT_EPS_item_strval_optkeys(id) + [
Index: ext/tk/lib/tkextlib/blt/tile/label.rb
===================================================================
--- ext/tk/lib/tkextlib/blt/tile/label.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/blt/tile/label.rb	(revision 15618)
@@ -9,7 +9,7 @@
 
 module Tk::BLT
   module Tile
-    class Label < TkLabel
+    class Label < Tk::Label
       TkCommandNames = ['::blt::tile::label'.freeze].freeze
     end
   end
Index: ext/tk/lib/tkextlib/blt/tile/scrollbar.rb
===================================================================
--- ext/tk/lib/tkextlib/blt/tile/scrollbar.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/blt/tile/scrollbar.rb	(revision 15618)
@@ -9,7 +9,7 @@
 
 module Tk::BLT
   module Tile
-    class Scrollbar < TkScrollbar
+    class Scrollbar < Tk::Scrollbar
       TkCommandNames = ['::blt::tile::scrollbar'.freeze].freeze
     end
   end
Index: ext/tk/lib/tkextlib/blt/tile/checkbutton.rb
===================================================================
--- ext/tk/lib/tkextlib/blt/tile/checkbutton.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/blt/tile/checkbutton.rb	(revision 15618)
@@ -9,7 +9,7 @@
 
 module Tk::BLT
   module Tile
-    class CheckButton < TkCheckButton
+    class CheckButton < Tk::CheckButton
       TkCommandNames = ['::blt::tile::checkbutton'.freeze].freeze
     end
     Checkbutton = CheckButton
Index: ext/tk/lib/tkextlib/blt/tile/frame.rb
===================================================================
--- ext/tk/lib/tkextlib/blt/tile/frame.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/blt/tile/frame.rb	(revision 15618)
@@ -9,7 +9,7 @@
 
 module Tk::BLT
   module Tile
-    class Frame < TkFrame
+    class Frame < Tk::Frame
       TkCommandNames = ['::blt::tile::frame'.freeze].freeze
     end
   end
Index: ext/tk/lib/tkextlib/blt/tile/radiobutton.rb
===================================================================
--- ext/tk/lib/tkextlib/blt/tile/radiobutton.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/blt/tile/radiobutton.rb	(revision 15618)
@@ -9,7 +9,7 @@
 
 module Tk::BLT
   module Tile
-    class RadioButton < TkRadioButton
+    class RadioButton < Tk::RadioButton
       TkCommandNames = ['::blt::tile::radiobutton'.freeze].freeze
     end
     Radiobutton = RadioButton
Index: ext/tk/lib/tkextlib/blt/tile/toplevel.rb
===================================================================
--- ext/tk/lib/tkextlib/blt/tile/toplevel.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/blt/tile/toplevel.rb	(revision 15618)
@@ -9,7 +9,7 @@
 
 module Tk::BLT
   module Tile
-    class Toplevel < TkToplevel
+    class Toplevel < Tk::Toplevel
       TkCommandNames = ['::blt::tile::toplevel'.freeze].freeze
     end
   end
Index: ext/tk/lib/tkextlib/blt/tile/button.rb
===================================================================
--- ext/tk/lib/tkextlib/blt/tile/button.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/blt/tile/button.rb	(revision 15618)
@@ -9,7 +9,7 @@
 
 module Tk::BLT
   module Tile
-    class Button < TkButton
+    class Button < Tk::Button
       TkCommandNames = ['::blt::tile::button'.freeze].freeze
     end
   end
Index: ext/tk/lib/tkextlib/itk/incr_tk.rb
===================================================================
--- ext/tk/lib/tkextlib/itk/incr_tk.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/itk/incr_tk.rb	(revision 15618)
@@ -156,7 +156,7 @@
           master = master.to_s
         end
         return id unless ComponentID_TBL.key?(master)
-        (ComponentID_TBL.key?(id))? ComponentID_TBL[master][id]: id
+        (ComponentID_TBL[master].key?(id))? ComponentID_TBL[master][id]: id
       end
 
       def self.new(master, component=nil)
Index: ext/tk/lib/tkextlib/tcllib/datefield.rb
===================================================================
--- ext/tk/lib/tkextlib/tcllib/datefield.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/tcllib/datefield.rb	(revision 15618)
@@ -24,7 +24,7 @@
 
 module Tk
   module Tcllib
-    class Datefield < TkEntry
+    class Datefield < Tk::Entry
       PACKAGE_NAME = 'datefield'.freeze
       def self.package_name
         PACKAGE_NAME
Index: ext/tk/lib/tkextlib/tcllib/ctext.rb
===================================================================
--- ext/tk/lib/tkextlib/tcllib/ctext.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/tcllib/ctext.rb	(revision 15618)
@@ -15,7 +15,7 @@
 
 module Tk
   module Tcllib
-    class CText < TkText
+    class CText < Tk::Text
       PACKAGE_NAME = 'ctext'.freeze
       def self.package_name
         PACKAGE_NAME
Index: ext/tk/lib/tkextlib/tcllib/autoscroll.rb
===================================================================
--- ext/tk/lib/tkextlib/tcllib/autoscroll.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/tcllib/autoscroll.rb	(revision 15618)
@@ -108,7 +108,7 @@
   end
 end
 
-class TkScrollbar
+class Tk::Scrollbar
   def autoscroll
     # Arranges for the already existing scrollbar to be mapped 
     # and unmapped as needed.
Index: ext/tk/lib/tkextlib/tcllib/ip_entry.rb
===================================================================
--- ext/tk/lib/tkextlib/tcllib/ip_entry.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/tcllib/ip_entry.rb	(revision 15618)
@@ -18,7 +18,7 @@
 
 module Tk
   module Tcllib
-    class IP_Entry < TkEntry
+    class IP_Entry < Tk::Entry
       PACKAGE_NAME = 'ipentry'.freeze
       def self.package_name
         PACKAGE_NAME
Index: ext/tk/lib/tkextlib/tcllib/plotchart.rb
===================================================================
--- ext/tk/lib/tkextlib/tcllib/plotchart.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/tcllib/plotchart.rb	(revision 15618)
@@ -225,7 +225,7 @@
   end
 
   ############################
-  class XYPlot < TkCanvas
+  class XYPlot < Tk::Canvas
     include ChartMethod
 
     TkCommandNames = [
@@ -247,7 +247,7 @@
         @xaxis = args.shift
         @yaxis = args.shift
 
-        if parent.kind_of?(TkCanvas)
+        if parent.kind_of?(Tk::Canvas)
           @path = parent.path
         else
           super(parent, *args) # create canvas widget
@@ -337,7 +337,7 @@
   end
 
   ############################
-  class PolarPlot < TkCanvas
+  class PolarPlot < Tk::Canvas
     include ChartMethod
 
     TkCommandNames = [
@@ -356,7 +356,7 @@
 
         @radius_data = args.shift
 
-        if parent.kind_of?(TkCanvas)
+        if parent.kind_of?(Tk::Canvas)
           @path = parent.path
         else
           super(parent, *args) # create canvas widget
@@ -395,7 +395,7 @@
   Polarplot = PolarPlot
 
   ############################
-  class IsometricPlot < TkCanvas
+  class IsometricPlot < Tk::Canvas
     include ChartMethod
 
     TkCommandNames = [
@@ -430,7 +430,7 @@
           @stepsize = args.shift
         end
 
-        if parent.kind_of?(TkCanvas)
+        if parent.kind_of?(Tk::Canvas)
           @path = parent.path
         else
           super(parent, *args) # create canvas widget
@@ -475,7 +475,7 @@
   Isometricplot = IsometricPlot
 
   ############################
-  class Plot3D < TkCanvas
+  class Plot3D < Tk::Canvas
     include ChartMethod
 
     TkCommandNames = [
@@ -500,7 +500,7 @@
         @yaxis = args.shift
         @zaxis = args.shift
 
-        if parent.kind_of?(TkCanvas)
+        if parent.kind_of?(Tk::Canvas)
           @path = parent.path
         else
           super(parent, *args) # create canvas widget
@@ -557,7 +557,7 @@
   end
 
   ############################
-  class Piechart < TkCanvas
+  class Piechart < Tk::Canvas
     include ChartMethod
 
     TkCommandNames = [
@@ -566,7 +566,7 @@
     ].freeze
 
     def initialize(*args) # args := ([parent] [, keys])
-      if args[0].kind_of?(TkCanvas)
+      if args[0].kind_of?(Tk::Canvas)
         parent = args.shift
         @path = parent.path
       else
@@ -588,7 +588,7 @@
   end
 
   ############################
-  class Barchart < TkCanvas
+  class Barchart < Tk::Canvas
     include ChartMethod
 
     TkCommandNames = [
@@ -626,7 +626,7 @@
           @series_size  = args.shift
         end
 
-        if parent.kind_of?(TkCanvas)
+        if parent.kind_of?(Tk::Canvas)
           @path = parent.path
         else
           super(parent, *args) # create canvas widget
@@ -672,7 +672,7 @@
   end
 
   ############################
-  class Timechart < TkCanvas
+  class Timechart < Tk::Canvas
     include ChartMethod
 
     TkCommandNames = [
@@ -699,7 +699,7 @@
         @time_end   = args.shift
         @items      = args.shift
 
-        if parent.kind_of?(TkCanvas)
+        if parent.kind_of?(Tk::Canvas)
           @path = parent.path
         else
           super(parent, *args) # create canvas widget
@@ -733,7 +733,7 @@
   end
 
   ############################
-  class Gnattchart < TkCanvas
+  class Gnattchart < Tk::Canvas
     include ChartMethod
 
     TkCommandNames = [
@@ -772,7 +772,7 @@
           @text_width = None
         end
 
-        if parent.kind_of?(TkCanvas)
+        if parent.kind_of?(Tk::Canvas)
           @path = parent.path
         else
           super(parent, *args) # create canvas widget
Index: ext/tk/lib/tkextlib/bwidget/label.rb
===================================================================
--- ext/tk/lib/tkextlib/bwidget/label.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/bwidget/label.rb	(revision 15618)
@@ -9,7 +9,7 @@
 
 module Tk
   module BWidget
-    class Label < TkLabel
+    class Label < Tk::Label
     end
   end
 end
Index: ext/tk/lib/tkextlib/bwidget/spinbox.rb
===================================================================
--- ext/tk/lib/tkextlib/bwidget/spinbox.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/bwidget/spinbox.rb	(revision 15618)
@@ -10,7 +10,7 @@
 
 module Tk
   module BWidget
-    class SpinBox < TkEntry
+    class SpinBox < Tk::Entry
     end
   end
 end
Index: ext/tk/lib/tkextlib/bwidget/buttonbox.rb
===================================================================
--- ext/tk/lib/tkextlib/bwidget/buttonbox.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/bwidget/buttonbox.rb	(revision 15618)
@@ -31,7 +31,7 @@
       name = tagOrId[:name]
       return index(name) unless name.empty?
     end
-    if tagOrId.kind_of?(TkButton)
+    if tagOrId.kind_of?(Tk::Button)
       return index(tagOrId[:text])
     end
     # index(tagOrId.to_s)
@@ -54,7 +54,7 @@
       name = idx[:name]
       idx = name unless name.empty?
     end
-    if idx.kind_of?(TkButton)
+    if idx.kind_of?(Tk::Button)
       idx = idx[:text]
     end
     number(tk_send('index', idx.to_s))
Index: ext/tk/lib/tkextlib/bwidget/dialog.rb
===================================================================
--- ext/tk/lib/tkextlib/bwidget/dialog.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/bwidget/dialog.rb	(revision 15618)
@@ -103,7 +103,7 @@
       name = tagOrId[:name]
       return index(name) unless name.empty?
     end
-    if tagOrId.kind_of?(TkButton)
+    if tagOrId.kind_of?(Tk::Button)
       return index(tagOrId[:text])
     end
     # index(tagOrId.to_s)
Index: ext/tk/lib/tkextlib/bwidget/entry.rb
===================================================================
--- ext/tk/lib/tkextlib/bwidget/entry.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/bwidget/entry.rb	(revision 15618)
@@ -9,7 +9,7 @@
 
 module Tk
   module BWidget
-    class Entry < TkEntry
+    class Entry < Tk::Entry
     end
   end
 end
Index: ext/tk/lib/tkextlib/bwidget/labelentry.rb
===================================================================
--- ext/tk/lib/tkextlib/bwidget/labelentry.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/bwidget/labelentry.rb	(revision 15618)
@@ -11,7 +11,7 @@
 
 module Tk
   module BWidget
-    class LabelEntry < TkEntry
+    class LabelEntry < Tk::Entry
     end
   end
 end
Index: ext/tk/lib/tkextlib/bwidget/button.rb
===================================================================
--- ext/tk/lib/tkextlib/bwidget/button.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/bwidget/button.rb	(revision 15618)
@@ -9,7 +9,7 @@
 
 module Tk
   module BWidget
-    class Button < TkButton
+    class Button < Tk::Button
     end
   end
 end
Index: ext/tk/lib/tkextlib/tktrans/tktrans.rb
===================================================================
--- ext/tk/lib/tkextlib/tktrans/tktrans.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/tktrans/tktrans.rb	(revision 15618)
@@ -39,7 +39,7 @@
   end
 end
 
-class TkRoot
+class Tk::Root
   undef tktrans_set_image, tktrans_get_image
 
   def tktrans_set_image(img)
@@ -51,7 +51,7 @@
   end
 end
 
-class TkToplevel
+class Tk::Toplevel
   undef tktrans_set_image, tktrans_get_image
 
   def tktrans_set_image(img)
Index: ext/tk/lib/tkextlib/vu/spinbox.rb
===================================================================
--- ext/tk/lib/tkextlib/vu/spinbox.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/vu/spinbox.rb	(revision 15618)
@@ -17,6 +17,6 @@
 
 module Tk
   module Vu
-    Spinbox = TkSpinbox
+    Spinbox = Tk::Spinbox
   end
 end
Index: ext/tk/lib/tkextlib/tile/tprogressbar.rb
===================================================================
--- ext/tk/lib/tkextlib/tile/tprogressbar.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/tile/tprogressbar.rb	(revision 15618)
@@ -13,6 +13,9 @@
   end
 end
 
+Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Progressbar, :TkProgressbar)
+
+
 class Tk::Tile::TProgressbar
   include Tk::Tile::TileWidget
 
Index: ext/tk/lib/tkextlib/tile/tradiobutton.rb
===================================================================
--- ext/tk/lib/tkextlib/tile/tradiobutton.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/tile/tradiobutton.rb	(revision 15618)
@@ -7,7 +7,7 @@
 
 module Tk
   module Tile
-    class TRadioButton < TkRadioButton
+    class TRadioButton < Tk::RadioButton
     end
     TRadiobutton = TRadioButton
     RadioButton  = TRadioButton
@@ -15,7 +15,11 @@
   end
 end
 
-class Tk::Tile::TRadioButton < TkRadioButton
+Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Radiobutton, 
+                            :TkRadiobutton, :TkRadioButton)
+
+
+class Tk::Tile::TRadioButton < Tk::RadioButton
   include Tk::Tile::TileWidget
 
   if Tk::Tile::USE_TTK_NAMESPACE
Index: ext/tk/lib/tkextlib/tile/tlabelframe.rb
===================================================================
--- ext/tk/lib/tkextlib/tile/tlabelframe.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/tile/tlabelframe.rb	(revision 15618)
@@ -9,10 +9,16 @@
   module Tile
     class TLabelframe < Tk::Tile::TFrame
     end
-    Labelframe = TLabelframe
+    TLabelFrame = TLabelframe
+    Labelframe  = TLabelframe
+    LabelFrame  = TLabelframe
   end
 end
 
+Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Labelframe, 
+                            :TkLabelframe, :TkLabelFrame)
+
+
 class Tk::Tile::TLabelframe < Tk::Tile::TFrame
   include Tk::Tile::TileWidget
 
Index: ext/tk/lib/tkextlib/tile/tframe.rb
===================================================================
--- ext/tk/lib/tkextlib/tile/tframe.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/tile/tframe.rb	(revision 15618)
@@ -7,13 +7,16 @@
 
 module Tk
   module Tile
-    class TFrame < TkFrame
+    class TFrame < Tk::Frame
     end
     Frame = TFrame
   end
 end
 
-class Tk::Tile::TFrame < TkFrame
+Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Frame, :TkFrame)
+
+
+class Tk::Tile::TFrame < Tk::Frame
   include Tk::Tile::TileWidget
 
   if Tk::Tile::USE_TTK_NAMESPACE
Index: ext/tk/lib/tkextlib/tile/tmenubutton.rb
===================================================================
--- ext/tk/lib/tkextlib/tile/tmenubutton.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/tile/tmenubutton.rb	(revision 15618)
@@ -7,13 +7,19 @@
 
 module Tk
   module Tile
-    class TMenubutton < TkMenubutton
+    class TMenubutton < Tk::Menubutton
     end
-    Menubutton = TMenubutton
+    TMenuButton = TMenubutton
+    Menubutton  = TMenubutton
+    MenuButton  = TMenubutton
   end
 end
 
-class Tk::Tile::TMenubutton < TkMenubutton
+Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Menubutton, 
+                            :TkMenubutton, :TkMenuButton)
+
+
+class Tk::Tile::TMenubutton < Tk::Menubutton
   include Tk::Tile::TileWidget
 
   if Tk::Tile::USE_TTK_NAMESPACE
Index: ext/tk/lib/tkextlib/tile/tseparator.rb
===================================================================
--- ext/tk/lib/tkextlib/tile/tseparator.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/tile/tseparator.rb	(revision 15618)
@@ -13,6 +13,9 @@
   end
 end
 
+Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Separator, :TkSeparator)
+
+
 class Tk::Tile::TSeparator < TkWindow
   include Tk::Tile::TileWidget
 
Index: ext/tk/lib/tkextlib/tile/tentry.rb
===================================================================
--- ext/tk/lib/tkextlib/tile/tentry.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/tile/tentry.rb	(revision 15618)
@@ -7,13 +7,16 @@
 
 module Tk
   module Tile
-    class TEntry < TkEntry
+    class TEntry < Tk::Entry
     end
     Entry = TEntry
   end
 end
 
-class Tk::Tile::TEntry < TkEntry
+Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Entry, :TkEntry)
+
+
+class Tk::Tile::TEntry < Tk::Entry
   include Tk::Tile::TileWidget
 
   if Tk::Tile::USE_TTK_NAMESPACE
Index: ext/tk/lib/tkextlib/tile/treeview.rb
===================================================================
--- ext/tk/lib/tkextlib/tile/treeview.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/tile/treeview.rb	(revision 15618)
@@ -12,6 +12,9 @@
   end
 end
 
+Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Treeview, :TkTreeview)
+
+
 module Tk::Tile::TreeviewConfig
   include TkItemConfigMethod
 
Index: ext/tk/lib/tkextlib/tile/tcombobox.rb
===================================================================
--- ext/tk/lib/tkextlib/tile/tcombobox.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/tile/tcombobox.rb	(revision 15618)
@@ -13,6 +13,9 @@
   end
 end
 
+Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Combobox, :TkCombobox)
+
+
 class Tk::Tile::TCombobox < Tk::Tile::TEntry
   include Tk::Tile::TileWidget
 
Index: ext/tk/lib/tkextlib/tile/sizegrip.rb
===================================================================
--- ext/tk/lib/tkextlib/tile/sizegrip.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/tile/sizegrip.rb	(revision 15618)
@@ -9,9 +9,13 @@
   module Tile
     class SizeGrip < TkWindow
     end
+    Sizegrip = SizeGrip
   end
 end
 
+Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Sizegrip, :TkSizegrip, :TkSizeGrip)
+
+
 class Tk::Tile::SizeGrip < TkWindow
   include Tk::Tile::TileWidget
 
Index: ext/tk/lib/tkextlib/tile/tcheckbutton.rb
===================================================================
--- ext/tk/lib/tkextlib/tile/tcheckbutton.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/tile/tcheckbutton.rb	(revision 15618)
@@ -7,7 +7,7 @@
 
 module Tk
   module Tile
-    class TCheckButton < TkCheckButton
+    class TCheckButton < Tk::CheckButton
     end
     TCheckbutton = TCheckButton
     CheckButton  = TCheckButton
@@ -15,7 +15,11 @@
   end
 end
 
-class Tk::Tile::TCheckButton < TkCheckButton
+Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Checkbutton, 
+                            :TkCheckbutton, :TkCheckButton)
+
+
+class Tk::Tile::TCheckButton < Tk::CheckButton
   include Tk::Tile::TileWidget
 
   if Tk::Tile::USE_TTK_NAMESPACE
Index: ext/tk/lib/tkextlib/tile/tbutton.rb
===================================================================
--- ext/tk/lib/tkextlib/tile/tbutton.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/tile/tbutton.rb	(revision 15618)
@@ -7,13 +7,16 @@
 
 module Tk
   module Tile
-    class TButton < TkButton
+    class TButton < Tk::Button
     end
     Button = TButton
   end
 end
 
-class Tk::Tile::TButton < TkButton
+Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Button, :TkButton)
+
+
+class Tk::Tile::TButton < Tk::Button
   include Tk::Tile::TileWidget
 
   if Tk::Tile::USE_TTK_NAMESPACE
Index: ext/tk/lib/tkextlib/tile/style.rb
===================================================================
--- ext/tk/lib/tkextlib/tile/style.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/tile/style.rb	(revision 15618)
@@ -52,12 +52,30 @@
     style = '.' unless style
 
     if keys && keys != None
-      tk_call(TkCommandNames[0], 'map', style, *hash_kv(keys))
+      if keys.kind_of?(Hash)
+        tk_call(TkCommandNames[0], 'map', style, *hash_kv(keys))
+      else
+        simplelist(tk_call(TkCommandNames[0], 'map', style, '-' << keys.to_s))
+      end
     else
-      tk_call(TkCommandNames[0], 'map', style)
+      ret = {}
+      Hash[*(simplelist(tk_call(TkCommandNames[0], 'map', style)))].each{|k, v|
+        ret[k[1..-1]] = list(v)
+      }
+      ret
     end
   end
+  alias map_configure map
 
+  def map_configinfo(style=nil, key=None)
+    style = '.' unless style
+    map(style, key)
+  end
+
+  def map_default_configinfo(key=None)
+    map('.', key)
+  end
+
   def lookup(style, opt, state=None, fallback_value=None)
     tk_call(TkCommandNames[0], 'lookup', style, 
             '-' << opt.to_s, state, fallback_value)
@@ -92,16 +110,20 @@
   end
 
   def theme_create(name, keys=nil)
+    name = name.to_s
     if keys && keys != None
       tk_call(TkCommandNames[0], 'theme', 'create', name, *hash_kv(keys))
     else
       tk_call(TkCommandNames[0], 'theme', 'create', name)
     end
+    name
   end
 
   def theme_settings(name, cmd=nil, &b)
+    name = name.to_s
     cmd = Proc.new(&b) if !cmd && b
     tk_call(TkCommandNames[0], 'theme', 'settings', name, cmd)
+    name
   end
 
   def theme_names()
@@ -109,6 +131,8 @@
   end
 
   def theme_use(name)
+    name = name.to_s
     tk_call(TkCommandNames[0], 'theme', 'use', name)
+    name
   end
 end
Index: ext/tk/lib/tkextlib/tile/tlabel.rb
===================================================================
--- ext/tk/lib/tkextlib/tile/tlabel.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/tile/tlabel.rb	(revision 15618)
@@ -7,13 +7,16 @@
 
 module Tk
   module Tile
-    class TLabel < TkLabel
+    class TLabel < Tk::Label
     end
     Label = TLabel
   end
 end
 
-class Tk::Tile::TLabel < TkLabel
+Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Label, :TkLabel)
+
+
+class Tk::Tile::TLabel < Tk::Label
   include Tk::Tile::TileWidget
 
   if Tk::Tile::USE_TTK_NAMESPACE
Index: ext/tk/lib/tkextlib/tile/tnotebook.rb
===================================================================
--- ext/tk/lib/tkextlib/tile/tnotebook.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/tile/tnotebook.rb	(revision 15618)
@@ -13,6 +13,9 @@
   end
 end
 
+Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Notebook, :TkNotebook)
+
+
 class Tk::Tile::TNotebook < TkWindow
   ################################
   include TkItemConfigMethod
Index: ext/tk/lib/tkextlib/tile/tscrollbar.rb
===================================================================
--- ext/tk/lib/tkextlib/tile/tscrollbar.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/tile/tscrollbar.rb	(revision 15618)
@@ -7,13 +7,16 @@
 
 module Tk
   module Tile
-    class TScrollbar < TkScrollbar
+    class TScrollbar < Tk::Scrollbar
     end
     Scrollbar = TScrollbar
   end
 end
 
-class Tk::Tile::TScrollbar < TkScrollbar
+Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Scrollbar, :TkScrollbar)
+
+
+class Tk::Tile::TScrollbar < Tk::Scrollbar
   include Tk::Tile::TileWidget
 
   if Tk::Tile::USE_TTK_NAMESPACE
@@ -47,3 +50,5 @@
   private :create_self
 end
 
+Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::XScrollbar, :TkXScrollbar)
+Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::YScrollbar, :TkYScrollbar)
Index: ext/tk/lib/tkextlib/tile/tpaned.rb
===================================================================
--- ext/tk/lib/tkextlib/tile/tpaned.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/tile/tpaned.rb	(revision 15618)
@@ -13,6 +13,10 @@
   end
 end
 
+Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Panedwindow, 
+                            :TkPanedwindow, :TkPanedWindow)
+
+
 class Tk::Tile::TPaned < TkWindow
   include Tk::Tile::TileWidget
 
Index: ext/tk/lib/tkextlib/tile/tscale.rb
===================================================================
--- ext/tk/lib/tkextlib/tile/tscale.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/tile/tscale.rb	(revision 15618)
@@ -7,7 +7,7 @@
 
 module Tk
   module Tile
-    class TScale < TkScale
+    class TScale < Tk::Scale
     end
     Scale = TScale
 
@@ -17,7 +17,10 @@
   end
 end
 
-class Tk::Tile::TScale < TkScale
+Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Scale, :TkScale)
+
+
+class Tk::Tile::TScale < Tk::Scale
   include Tk::Tile::TileWidget
 
   if Tk::Tile::USE_TTK_NAMESPACE
Index: ext/tk/lib/tkextlib/tile.rb
===================================================================
--- ext/tk/lib/tkextlib/tile.rb	(revision 15617)
+++ ext/tk/lib/tkextlib/tile.rb	(revision 15618)
@@ -4,6 +4,7 @@
 #
 
 require 'tk'
+require 'tk/ttk_selector'
 
 # call setup script for general 'tkextlib' libraries
 require 'tkextlib/setup.rb'
@@ -262,6 +263,9 @@
     autoload :TSquare,       'tkextlib/tile/tsquare'
     autoload :Square,        'tkextlib/tile/tsquare'
 
+    autoload :SizeGrip,      'tkextlib/tile/sizegrip'
+    autoload :Sizegrip,      'tkextlib/tile/sizegrip'
+
     autoload :Treeview,      'tkextlib/tile/treeview'
 
     autoload :Style,         'tkextlib/tile/style'
Index: ext/tk/lib/tk/optiondb.rb
===================================================================
--- ext/tk/lib/tk/optiondb.rb	(revision 15617)
+++ ext/tk/lib/tk/optiondb.rb	(revision 15618)
@@ -362,7 +362,7 @@
 
   def new_proc_class_random(klass, func, safe = 4, add = false, &b)
     eval_under_random_base(){
-      TkOption.new_proc_class(klass, func, safe, add, self, &b)
+      TkOptionDB.new_proc_class(klass, func, safe, add, self, &b)
     }
   end
   module_function :new_proc_class_random
Index: ext/tk/lib/tk/toplevel.rb
===================================================================
--- ext/tk/lib/tk/toplevel.rb	(revision 15617)
+++ ext/tk/lib/tk/toplevel.rb	(revision 15618)
@@ -258,4 +258,5 @@
   end
 end
 
-TkToplevel = Tk::Toplevel unless Object.const_defined? :TkToplevel
+#TkToplevel = Tk::Toplevel unless Object.const_defined? :TkToplevel
+Tk.__set_toplevel_aliases__(:Tk, Tk::Toplevel, :TkToplevel)
Index: ext/tk/lib/tk/frame.rb
===================================================================
--- ext/tk/lib/tk/frame.rb	(revision 15617)
+++ ext/tk/lib/tk/frame.rb	(revision 15618)
@@ -127,4 +127,5 @@
   end
 end
 
-TkFrame = Tk::Frame unless Object.const_defined? :TkFrame
+#TkFrame = Tk::Frame unless Object.const_defined? :TkFrame
+Tk.__set_toplevel_aliases__(:Tk, Tk::Frame, :TkFrame)
Index: ext/tk/lib/tk/labelframe.rb
===================================================================
--- ext/tk/lib/tk/labelframe.rb	(revision 15617)
+++ ext/tk/lib/tk/labelframe.rb	(revision 15618)
@@ -4,7 +4,7 @@
 require 'tk'
 require 'tk/frame'
 
-class Tk::LabelFrame<TkFrame
+class Tk::LabelFrame<Tk::Frame
   TkCommandNames = ['labelframe'.freeze].freeze
   WidgetClassName = 'Labelframe'.freeze
   WidgetClassNames[WidgetClassName] = self
@@ -23,6 +23,7 @@
   private :__val2ruby_optkeys
 end
 
-Tk::Labelframe = TkLabelFrame
-TkLabelFrame = Tk::LabelFrame unless Object.const_defined? :TkLabelFrame
-TkLabelframe = Tk::Labelframe unless Object.const_defined? :TkLabelframe
+Tk::Labelframe = Tk::LabelFrame
+#TkLabelFrame = Tk::LabelFrame unless Object.const_defined? :TkLabelFrame
+#TkLabelframe = Tk::Labelframe unless Object.const_defined? :TkLabelframe
+Tk.__set_toplevel_aliases__(:Tk, Tk::LabelFrame, :TkLabelFrame, :TkLabelframe)
Index: ext/tk/lib/tk/scrollbar.rb
===================================================================
--- ext/tk/lib/tk/scrollbar.rb	(revision 15617)
+++ ext/tk/lib/tk/scrollbar.rb	(revision 15618)
@@ -105,10 +105,11 @@
   end
 end
 
-TkScrollbar = Tk::Scrollbar unless Object.const_defined? :TkScrollbar
+#TkScrollbar = Tk::Scrollbar unless Object.const_defined? :TkScrollbar
+Tk.__set_toplevel_aliases__(:Tk, Tk::Scrollbar, :TkScrollbar)
 
 
-class Tk::XScrollbar<TkScrollbar
+class Tk::XScrollbar<Tk::Scrollbar
   def create_self(keys)
     keys = {} unless keys
     keys['orient'] = 'horizontal'
@@ -117,10 +118,11 @@
   private :create_self
 end
 
-TkXScrollbar = Tk::XScrollbar unless Object.const_defined? :TkXScrollbar
+#TkXScrollbar = Tk::XScrollbar unless Object.const_defined? :TkXScrollbar
+Tk.__set_toplevel_aliases__(:Tk, Tk::XScrollbar, :TkXScrollbar)
 
 
-class Tk::YScrollbar<TkScrollbar
+class Tk::YScrollbar<Tk::Scrollbar
   def create_self(keys)
     keys = {} unless keys
     keys['orient'] = 'vertical'
@@ -129,4 +131,5 @@
   private :create_self
 end
 
-TkYScrollbar = Tk::YScrollbar unless Object.const_defined? :TkYScrollbar
+#TkYScrollbar = Tk::YScrollbar unless Object.const_defined? :TkYScrollbar
+Tk.__set_toplevel_aliases__(:Tk, Tk::YScrollbar, :TkYScrollbar)
Index: ext/tk/lib/tk/text.rb
===================================================================
--- ext/tk/lib/tk/text.rb	(revision 15617)
+++ ext/tk/lib/tk/text.rb	(revision 15618)
@@ -73,9 +73,9 @@
 
       mod = mod.to_s
       if mod =~ /^\s*[+-]?\d/
-        TkText::IndexString.new(String.new(id) << ' + ' << mod)
+        Tk::Text::IndexString.new(String.new(id) << ' + ' << mod)
       else
-        TkText::IndexString.new(String.new(id) << ' ' << mod)
+        Tk::Text::IndexString.new(String.new(id) << ' ' << mod)
       end
     end
 
@@ -84,20 +84,20 @@
 
       mod = mod.to_s
       if mod =~ /^\s*[+-]?\d/
-        TkText::IndexString.new(String.new(id) << ' - ' << mod)
+        Tk::Text::IndexString.new(String.new(id) << ' - ' << mod)
       elsif mod =~ /^\s*[-]\s+(\d.*)$/
-        TkText::IndexString.new(String.new(id) << ' - -' << $1)
+        Tk::Text::IndexString.new(String.new(id) << ' - -' << $1)
       else
-        TkText::IndexString.new(String.new(id) << ' ' << mod)
+        Tk::Text::IndexString.new(String.new(id) << ' ' << mod)
       end
     end
 
     def chars(mod)
       fail ArgumentError, 'expect Integer'  unless mod.kind_of?(Integer)
       if mod < 0
-        TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' chars')
+        Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' chars')
       else
-        TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' chars')
+        Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' chars')
       end
     end
     alias char chars
@@ -106,9 +106,9 @@
       # Tk8.5 feature
       fail ArgumentError, 'expect Integer'  unless mod.kind_of?(Integer)
       if mod < 0
-        TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' display chars')
+        Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' display chars')
       else
-        TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' display chars')
+        Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' display chars')
       end
     end
     alias display_char display_chars
@@ -117,9 +117,9 @@
       # Tk8.5 feature
       fail ArgumentError, 'expect Integer'  unless mod.kind_of?(Integer)
       if mod < 0
-        TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' any chars')
+        Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' any chars')
       else
-        TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' any chars')
+        Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' any chars')
       end
     end
     alias any_char any_chars
@@ -128,9 +128,9 @@
       # Tk8.5 feature
       fail ArgumentError, 'expect Integer'  unless mod.kind_of?(Integer)
       if mod < 0
-        TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' indices')
+        Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' indices')
       else
-        TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' indices')
+        Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' indices')
       end
     end
 
@@ -138,9 +138,9 @@
       # Tk8.5 feature
       fail ArgumentError, 'expect Integer'  unless mod.kind_of?(Integer)
       if mod < 0
-        TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' display indices')
+        Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' display indices')
       else
-        TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' display indices')
+        Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' display indices')
       end
     end
 
@@ -148,18 +148,18 @@
       # Tk8.5 feature
       fail ArgumentError, 'expect Integer'  unless mod.kind_of?(Integer)
       if mod < 0
-        TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' any indices')
+        Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' any indices')
       else
-        TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' any indices')
+        Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' any indices')
       end
     end
 
     def lines(mod)
       fail ArgumentError, 'expect Integer'  unless mod.kind_of?(Integer)
       if mod < 0
-        TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' lines')
+        Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' lines')
       else
-        TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' lines')
+        Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' lines')
       end
     end
     alias line lines
@@ -168,9 +168,9 @@
       # Tk8.5 feature
       fail ArgumentError, 'expect Integer'  unless mod.kind_of?(Integer)
       if mod < 0
-        TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' display_lines')
+        Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' display_lines')
       else
-        TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' display lines')
+        Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' display lines')
       end
     end
     alias display_line display_lines
@@ -179,43 +179,43 @@
       # Tk8.5 feature
       fail ArgumentError, 'expect Integer'  unless mod.kind_of?(Integer)
       if mod < 0
-        TkText::IndexString.new(String.new(id) << ' ' << mod.to_s << ' any_lines')
+        Tk::Text::IndexString.new(String.new(id) << ' ' << mod.to_s << ' any_lines')
       else
-        TkText::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' any lines')
+        Tk::Text::IndexString.new(String.new(id) << ' + ' << mod.to_s << ' any lines')
       end
     end
     alias any_line any_lines
 
     def linestart
-      TkText::IndexString.new(String.new(id) << ' linestart')
+      Tk::Text::IndexString.new(String.new(id) << ' linestart')
     end
     def lineend
-      TkText::IndexString.new(String.new(id) << ' lineend')
+      Tk::Text::IndexString.new(String.new(id) << ' lineend')
     end
 
     def display_linestart
       # Tk8.5 feature
-      TkText::IndexString.new(String.new(id) << ' display linestart')
+      Tk::Text::IndexString.new(String.new(id) << ' display linestart')
     end
     def display_lineend
       # Tk8.5 feature
-      TkText::IndexString.new(String.new(id) << ' display lineend')
+      Tk::Text::IndexString.new(String.new(id) << ' display lineend')
     end
 
     def wordstart
-      TkText::IndexString.new(String.new(id) << ' wordstart')
+      Tk::Text::IndexString.new(String.new(id) << ' wordstart')
     end
     def wordend
-      TkText::IndexString.new(String.new(id) << ' wordend')
+      Tk::Text::IndexString.new(String.new(id) << ' wordend')
     end
 
     def display_wordstart
       # Tk8.5 feature
-      TkText::IndexString.new(String.new(id) << ' display wordstart')
+      Tk::Text::IndexString.new(String.new(id) << ' display wordstart')
     end
     def display_wordend
       # Tk8.5 feature
-      TkText::IndexString.new(String.new(id) << ' display wordend')
+      Tk::Text::IndexString.new(String.new(id) << ' display wordend')
     end
   end
 
@@ -284,16 +284,16 @@
   private :__strval_optkeys
 
   def self.at(x, y)
-    TkText::IndexString.at(x, y)
+    Tk::Text::IndexString.at(x, y)
   end
 
   def at(x, y)
-    TkText::IndexString.at(x, y)
+    Tk::Text::IndexString.at(x, y)
   end
 
   def index(idx)
-    TkText::IndexString.new(tk_send_without_enc('index', 
-                                                _get_eval_enc_str(idx)))
+    Tk::Text::IndexString.new(tk_send_without_enc('index', 
+                                                  _get_eval_enc_str(idx)))
   end
 
   def get_displaychars(*index)
@@ -967,7 +967,7 @@
                             false, true)
     r = []
     while key=l.shift
-      r.push [TkText::IndexString.new(key), TkText::IndexString.new(l.shift)]
+      r.push [Tk::Text::IndexString.new(key), Tk::Text::IndexString.new(l.shift)]
     end
     r
   end
@@ -977,7 +977,7 @@
                                    _get_eval_enc_str(tag), 
                                    _get_eval_enc_str(first), 
                                    _get_eval_enc_str(last))).collect{|idx|
-      TkText::IndexString.new(idx)
+      Tk::Text::IndexString.new(idx)
     }
   end
 
@@ -986,7 +986,7 @@
                                    _get_eval_enc_str(tag), 
                                    _get_eval_enc_str(first), 
                                    _get_eval_enc_str(last))).collect{|idx|
-      TkText::IndexString.new(idx)
+      Tk::Text::IndexString.new(idx)
     }
   end
 
@@ -1236,7 +1236,7 @@
     if ret == ""
       nil
     else
-      TkText::IndexString.new(ret)
+      Tk::Text::IndexString.new(ret)
     end
   end
 
@@ -1271,7 +1271,7 @@
     if ret == ""
       nil
     else
-      TkText::IndexString.new(ret)
+      Tk::Text::IndexString.new(ret)
     end
   end
 
@@ -1460,10 +1460,10 @@
       # retrieve index
       idx = str.index(/ /, i)
       if idx
-        result.push(TkText::IndexString.new(str[i..(idx-1)]))
+        result.push(Tk::Text::IndexString.new(str[i..(idx-1)]))
         i = idx + 1
       else
-        result.push(TkText::IndexString.new(str[i..-1]))
+        result.push(Tk::Text::IndexString.new(str[i..-1]))
         break
       end
     end
@@ -1531,15 +1531,16 @@
   end
 end
 
-TkText = Tk::Text unless Object.const_defined? :TkText
+#TkText = Tk::Text unless Object.const_defined? :TkText
+Tk.__set_toplevel_aliases__(:Tk, Tk::Text, :TkText)
 
 
 #######################################
 
-class TkText::Peer < TkText
+class Tk::Text::Peer < Tk::Text
   # Tk8.5 feature
   def initialize(text, parent=nil, keys={})
-    unless text.kind_of?(TkText)
+    unless text.kind_of?(Tk::Text)
       fail ArgumentError, "TkText is expected for 1st argument"
     end
     @src_text = text
Index: ext/tk/lib/tk/listbox.rb
===================================================================
--- ext/tk/lib/tk/listbox.rb	(revision 15617)
+++ ext/tk/lib/tk/listbox.rb	(revision 15618)
@@ -278,4 +278,5 @@
 =end
 end
 
-TkListbox = Tk::Listbox unless Object.const_defined? :TkListbox
+#TkListbox = Tk::Listbox unless Object.const_defined? :TkListbox
+Tk.__set_toplevel_aliases__(:Tk, Tk::Listbox, :TkListbox)
Index: ext/tk/lib/tk/message.rb
===================================================================
--- ext/tk/lib/tk/message.rb	(revision 15617)
+++ ext/tk/lib/tk/message.rb	(revision 15618)
@@ -4,7 +4,7 @@
 require 'tk'
 require 'tk/label'
 
-class Tk::Message<TkLabel
+class Tk::Message<Tk::Label
   TkCommandNames = ['message'.freeze].freeze
   WidgetClassName = 'Message'.freeze
   WidgetClassNames[WidgetClassName] = self
@@ -18,4 +18,5 @@
   private :create_self
 end
 
-TkMessage = Tk::Message unless Object.const_defined? :TkMessage
+#TkMessage = Tk::Message unless Object.const_defined? :TkMessage
+Tk.__set_toplevel_aliases__(:Tk, Tk::Message, :TkMessage)
Index: ext/tk/lib/tk/scale.rb
===================================================================
--- ext/tk/lib/tk/scale.rb	(revision 15617)
+++ ext/tk/lib/tk/scale.rb	(revision 15618)
@@ -85,4 +85,5 @@
   end
 end
 
-TkScale = Tk::Scale unless Object.const_defined? :TkScale
+#TkScale = Tk::Scale unless Object.const_defined? :TkScale
+Tk.__set_toplevel_aliases__(:Tk, Tk::Scale, :TkScale)
Index: ext/tk/lib/tk/entry.rb
===================================================================
--- ext/tk/lib/tk/entry.rb	(revision 15617)
+++ ext/tk/lib/tk/entry.rb	(revision 15618)
@@ -7,7 +7,7 @@
 require 'tk/scrollable'
 require 'tk/validation'
 
-class Tk::Entry<TkLabel
+class Tk::Entry<Tk::Label
   include X_Scrollable
   include TkValidation
 
@@ -115,4 +115,5 @@
   end
 end
 
-TkEntry = Tk::Entry unless Object.const_defined? :TkEntry
+#TkEntry = Tk::Entry unless Object.const_defined? :TkEntry
+Tk.__set_toplevel_aliases__(:Tk, Tk::Entry, :TkEntry)
Index: ext/tk/lib/tk/ttk_selector.rb
===================================================================
--- ext/tk/lib/tk/ttk_selector.rb	(revision 15617)
+++ ext/tk/lib/tk/ttk_selector.rb	(revision 15618)
@@ -1,55 +1,67 @@
 #
 #  ttk_selector
 #
-module Ttk_Selector
-  @TTK_CLASS_NAMES = {}
+######################################
+#  toplevel classes/modules
+module Tk
+  @TOPLEVEL_ALIAS_TABLE[:Ttk] = {
+    :TkButton       => 'tkextlib/tile/tbutton', 
 
-  def self.use_ttk_as_default(mode = true)
-    if mode # Use Ttk widgets
-      @TTK_CLASS_NAMES.each{|name, status|
-        eval("::Tk#{name} = ::Tk::#{(status)? 'Tile::': '::'}#{name}", 
-             TOPLEVEL_BINDING)
-      }
-    else # Use standard Tk widagets
-      @TTK_CLASS_NAMES.each{|name, status|
-        eval("::Tk#{name} = ::Tk::#{name}", TOPLEVEL_BINDING)
-      }
-    end
-  end
+    :TkCheckbutton  => 'tkextlib/tile/tcheckbutton', 
+    :TkCheckButton  => 'tkextlib/tile/tcheckbutton', 
 
-  def self.add(name)
-    @TTK_CLASS_NAMES[name] = true
-  end
+    # :TkDialog       => 'tkextlib/tile/dialog', 
 
-  def self.remove(name)
-    @TTK_CLASS_NAMES[name] = false
-  end
-end
+    :TkEntry        => 'tkextlib/tile/tentry', 
 
-#--------------------------------------------------------------------
+    :TkCombobox     => 'tkextlib/tile/tcombobox', 
 
-Ttk_Selector.add('Button')
-Ttk_Selector.add('Checkbutton')
-Ttk_Selector.add('Entry')
-##(ttk only)  Ttk_Selector.add('Combobox')
-##(ttk only)  Ttk_Selector.add('Dialog')
-Ttk_Selector.add('Frame')
-Ttk_Selector.add('Label')
-Ttk_Selector.add('Labelframe')
-##(std only)  Ttk_Selector.add('Listbox')
-Ttk_Selector.add('Menubutton')
-##(ttk only)  Ttk_Selector.add('Notebook')
-Ttk_Selector.add('Panedwindow')
-##(ttk only)  Ttk_Selector.add('Progressbar')
-Ttk_Selector.add('Radiobutton')
-Ttk_Selector.add('Scale')
-##(ttk only)  Ttk_Selector.add('Progress')
-Ttk_Selector.add('Scrollbar')
-Ttk_Selector.add('XScrollbar')
-Ttk_Selector.add('YScrollbar')
-##(ttk only)  Ttk_Selector.add('Separator')
-##(ttk only)  Ttk_Selector.add('SizeGrip')
-##(ttk only)  Ttk_Selector.add('Square')
-##(ttk only)  Ttk_Selector.add('Treeview')
+    :TkFrame        => 'tkextlib/tile/tframe', 
 
-#--------------------------------------------------------------------
+    :TkLabel        => 'tkextlib/tile/tlabel', 
+
+    :TkLabelframe   => 'tkextlib/tile/tlabelframe', 
+    :TkLabelFrame   => 'tkextlib/tile/tlabelframe', 
+
+    :TkMenubutton   => 'tkextlib/tile/tmenubutton', 
+    :TkMenuButton   => 'tkextlib/tile/tmenubutton', 
+
+    :TkNotebook     => 'tkextlib/tile/tnotebook', 
+
+    # :TkPaned        => 'tkextlib/tile/tpaned', 
+    :TkPanedwindow  => 'tkextlib/tile/tpaned', 
+    :TkPanedWindow  => 'tkextlib/tile/tpaned', 
+
+    :TkProgressbar  => 'tkextlib/tile/tprogressbar', 
+
+    :TkRadiobutton  => 'tkextlib/tile/tradiobutton', 
+    :TkRadioButton  => 'tkextlib/tile/tradiobutton', 
+
+    :TkScale        => 'tkextlib/tile/tscale', 
+    # :TkProgress     => 'tkextlib/tile/tscale', 
+
+    :TkScrollbar    => 'tkextlib/tile/tscrollbar', 
+    :TkXScrollbar   => 'tkextlib/tile/tscrollbar', 
+    :TkYScrollbar   => 'tkextlib/tile/tscrollbar', 
+
+    :TkSeparator    => 'tkextlib/tile/tseparator', 
+
+    :TkSizeGrip     => 'tkextlib/tile/sizegrip', 
+    :TkSizegrip     => 'tkextlib/tile/sizegrip', 
+
+    # :TkSquare       => 'tkextlib/tile/tsquare', 
+
+    :TkTreeview     => 'tkextlib/tile/treeview', 
+  }
+  @TOPLEVEL_ALIAS_TABLE[:Tile] = @TOPLEVEL_ALIAS_TABLE[:Ttk]
+
+  ################################################
+
+  @TOPLEVEL_ALIAS_SETUP_PROC[:Tile] = 
+    @TOPLEVEL_ALIAS_SETUP_PROC[:Ttk] = proc{|mod|
+    unless Tk.autoload?(:Tile) || Tk.const_defined?(:Tile) 
+      Object.autoload :Ttk, 'tkextlib/tile'
+      Tk.autoload :Tile, 'tkextlib/tile'
+    end
+  }
+end
Index: ext/tk/lib/tk/menu.rb
===================================================================
--- ext/tk/lib/tk/menu.rb	(revision 15617)
+++ ext/tk/lib/tk/menu.rb	(revision 15618)
@@ -140,9 +140,9 @@
     type = keys.delete('type') if keys.has_key?('type')
 
     if keys.empty?
-      TkMenuClone.new(self, parent, type)
+      Tk::MenuClone.new(self, parent, type)
     else
-      TkMenuClone.new(self, parent, type, keys)
+      Tk::MenuClone.new(self, parent, type, keys)
     end
   end
 
@@ -381,10 +381,11 @@
 =end
 end
 
-TkMenu = Tk::Menu unless Object.const_defined? :TkMenu
+#TkMenu = Tk::Menu unless Object.const_defined? :TkMenu
+Tk.__set_toplevel_aliases__(:Tk, Tk::Menu, :TkMenu)
 
 
-class Tk::MenuClone<TkMenu
+class Tk::MenuClone<Tk::Menu
 =begin
   def initialize(parent, type=None)
     widgetname = nil
@@ -439,10 +440,11 @@
   end
 end
 Tk::CloneMenu = Tk::MenuClone
-TkMenuClone = Tk::MenuClone unless Object.const_defined? :TkMenuClone
-TkCloneMenu = Tk::CloneMenu unless Object.const_defined? :TkCloneMenu
+#TkMenuClone = Tk::MenuClone unless Object.const_defined? :TkMenuClone
+#TkCloneMenu = Tk::CloneMenu unless Object.const_defined? :TkCloneMenu
+Tk.__set_toplevel_aliases__(:Tk, Tk::MenuClone, :TkMenuClone, :TkCloneMenu)
 
-module TkSystemMenu
+module Tk::SystemMenu
   def initialize(parent, keys=nil)
     if parent.kind_of? Hash
       keys = _symbolkey2str(parent)
@@ -465,33 +467,37 @@
     end
   end
 end
+TkSystemMenu = Tk::SystemMenu
 
 
-class Tk::SysMenu_Help<TkMenu
+class Tk::SysMenu_Help<Tk::Menu
   # for all platform
-  include TkSystemMenu
+  include Tk::SystemMenu
   SYSMENU_NAME = 'help'
 end
-TkSysMenu_Help = Tk::SysMenu_Help unless Object.const_defined? :TkSysMenu_Help
+#TkSysMenu_Help = Tk::SysMenu_Help unless Object.const_defined? :TkSysMenu_Help
+Tk.__set_toplevel_aliases__(:Tk, Tk::SysMenu_Help, :TkSysMenu_Help)
 
 
-class Tk::SysMenu_System<TkMenu
+class Tk::SysMenu_System<Tk::Menu
   # for Windows
-  include TkSystemMenu
+  include Tk::SystemMenu
   SYSMENU_NAME = 'system'
 end
-TkSysMenu_System = Tk::SysMenu_System unless Object.const_defined? :TkSysMenu_System
+#TkSysMenu_System = Tk::SysMenu_System unless Object.const_defined? :TkSysMenu_System
+Tk.__set_toplevel_aliases__(:Tk, Tk::SysMenu_System, :TkSysMenu_System)
 
 
-class Tk::SysMenu_Apple<TkMenu
+class Tk::SysMenu_Apple<Tk::Menu
   # for Machintosh
-  include TkSystemMenu
+  include Tk::SystemMenu
   SYSMENU_NAME = 'apple'
 end
-TkSysMenu_Apple = Tk::SysMenu_Apple unless Object.const_defined? :TkSysMenu_Apple
+#TkSysMenu_Apple = Tk::SysMenu_Apple unless Object.const_defined? :TkSysMenu_Apple
+Tk.__set_toplevel_aliases__(:Tk, Tk::SysMenu_Apple, :TkSysMenu_Apple)
 
 
-class Tk::Menubutton<TkLabel
+class Tk::Menubutton<Tk::Label
   TkCommandNames = ['menubutton'.freeze].freeze
   WidgetClassName = 'Menubutton'.freeze
   WidgetClassNames[WidgetClassName] = self
@@ -514,11 +520,12 @@
 
 end
 Tk::MenuButton = Tk::Menubutton
-TkMenubutton = Tk::Menubutton unless Object.const_defined? :TkMenubutton
-TkMenuButton = Tk::MenuButton unless Object.const_defined? :TkMenuButton
+#TkMenubutton = Tk::Menubutton unless Object.const_defined? :TkMenubutton
+#TkMenuButton = Tk::MenuButton unless Object.const_defined? :TkMenuButton
+Tk.__set_toplevel_aliases__(:Tk, Tk::Menubutton, :TkMenubutton, :TkMenuButton)
 
 
-class Tk::OptionMenubutton<TkMenubutton
+class Tk::OptionMenubutton<Tk::Menubutton
   TkCommandNames = ['tk_optionMenu'.freeze].freeze
 
   class OptionMenu<TkMenu
@@ -640,5 +647,7 @@
 end
 
 Tk::OptionMenuButton = Tk::OptionMenubutton
-TkOptionMenubutton = Tk::OptionMenubutton unless Object.const_defined? :TkOptionMenubutton
-TkOptionMenuButton = Tk::OptionMenuButton unless Object.const_defined? :TkOptionMenuButton
+#TkOptionMenubutton = Tk::OptionMenubutton unless Object.const_defined? :TkOptionMenubutton
+#TkOptionMenuButton = Tk::OptionMenuButton unless Object.const_defined? :TkOptionMenuButton
+Tk.__set_toplevel_aliases__(:Tk, Tk::OptionMenubutton, 
+                            :TkOptionMenubutton, :TkOptionMenuButton)
Index: ext/tk/lib/tk/label.rb
===================================================================
--- ext/tk/lib/tk/label.rb	(revision 15617)
+++ ext/tk/lib/tk/label.rb	(revision 15618)
@@ -17,4 +17,5 @@
   #private :create_self
 end
 
-TkLabel = Tk::Label unless Object.const_defined? :TkLabel
+#TkLabel = Tk::Label unless Object.const_defined? :TkLabel
+Tk.__set_toplevel_aliases__(:Tk, Tk::Label, :TkLabel)
Index: ext/tk/lib/tk/menuspec.rb
===================================================================
--- ext/tk/lib/tk/menuspec.rb	(revision 15617)
+++ ext/tk/lib/tk/menuspec.rb	(revision 15618)
@@ -61,8 +61,12 @@
     tearoff = orig_opts.delete('tearoff') if orig_opts.key?('tearoff')
 
     if menu_name
+      #menu = Tk::Menu.new(parent, :widgetname=>menu_name, :tearoff=>tearoff)
+      # --> use current TkMenu class
       menu = TkMenu.new(parent, :widgetname=>menu_name, :tearoff=>tearoff)
     else
+      #menu = Tk::Menu.new(parent, :tearoff=>tearoff)
+      # --> use current TkMenu class
       menu = TkMenu.new(parent, :tearoff=>tearoff)
     end
 
@@ -150,7 +154,7 @@
 
   def _use_menubar?(parent)
     use_menubar = false
-    if parent.kind_of?(TkRoot) || parent.kind_of?(TkToplevel)
+    if parent.kind_of?(Tk::Root) || parent.kind_of?(Tk::Toplevel)
       return true 
     else
       begin
@@ -164,7 +168,11 @@
   private :_use_menubar?
 
   def _create_menu_for_menubar(parent)
-    unless (mbar = parent.menu).kind_of?(TkMenu)
+    #unless (mbar = parent.menu).kind_of?(TkMenu)
+    # --> use current TkMenu class
+    mbar = parent.menu
+    unless parent.menu.kind_of?(Tk::Menu) || parent.menu.kind_of?(TkMenu)
+      #mbar = Tk::Menu.new(parent, :tearoff=>false)
       mbar = TkMenu.new(parent, :tearoff=>false)
       parent.menu(mbar)
     end
@@ -221,6 +229,8 @@
 
     else
       # menubar by menubuttons
+      #mbtn = Tk::Menubutton.new(parent)
+      # --> use current TkMenubutton class
       mbtn = TkMenubutton.new(parent)
 
       menu_name = nil
Index: ext/tk/lib/tk/spinbox.rb
===================================================================
--- ext/tk/lib/tk/spinbox.rb	(revision 15617)
+++ ext/tk/lib/tk/spinbox.rb	(revision 15618)
@@ -5,7 +5,7 @@
 require 'tk'
 require 'tk/entry'
 
-class Tk::Spinbox<TkEntry
+class Tk::Spinbox<Tk::Entry
   TkCommandNames = ['spinbox'.freeze].freeze
   WidgetClassName = 'Spinbox'.freeze
   WidgetClassNames[WidgetClassName] = self
@@ -97,4 +97,5 @@
   end
 end
 
-TkSpinbox = Tk::Spinbox unless Object.const_defined? :TkSpinbox
+#TkSpinbox = Tk::Spinbox unless Object.const_defined? :TkSpinbox
+Tk.__set_toplevel_aliases__(:Tk, Tk::Spinbox, :TkSpinbox)
Index: ext/tk/lib/tk/menubar.rb
===================================================================
--- ext/tk/lib/tk/menubar.rb	(revision 15617)
+++ ext/tk/lib/tk/menubar.rb	(revision 15618)
@@ -89,7 +89,7 @@
 require 'tk/composite'
 require 'tk/menuspec'
 
-class TkMenubar<TkFrame
+class TkMenubar<Tk::Frame
   include TkComposite
   include TkMenuSpec
   
Index: ext/tk/lib/tk/winpkg.rb
===================================================================
--- ext/tk/lib/tk/winpkg.rb	(revision 15617)
+++ ext/tk/lib/tk/winpkg.rb	(revision 15618)
@@ -9,7 +9,8 @@
 
 module Tk::WinDDE
 end
-TkWinDDE = Tk::WinDDE
+#TkWinDDE = Tk::WinDDE
+Tk.__set_toplevel_aliases__(:Tk, Tk::WinDDE, :TkWinDDE)
 
 module Tk::WinDDE
   extend Tk
@@ -91,7 +92,8 @@
 
 module Tk::WinRegistry
 end
-TkWinRegistry = Tk::WinRegistry
+#TkWinRegistry = Tk::WinRegistry
+Tk.__set_toplevel_aliases__(:Tk, Tk::WinRegistry, :TkWinRegistry)
 
 module Tk::WinRegistry
   extend Tk
Index: ext/tk/lib/tk/textmark.rb
===================================================================
--- ext/tk/lib/tk/textmark.rb	(revision 15617)
+++ ext/tk/lib/tk/textmark.rb	(revision 15618)
@@ -5,7 +5,7 @@
 require 'tk/text'
 
 class TkTextMark<TkObject
-  include TkText::IndexModMethods
+  include Tk::Text::IndexModMethods
 
   TMarkID_TBL = TkCore::INTERP.create_table
   Tk_TextMark_ID = ['mark'.freeze, '00000'.taint].freeze
@@ -19,8 +19,8 @@
   end
 
   def initialize(parent, index)
-    #unless parent.kind_of?(TkText)
-    #  fail ArgumentError, "expect TkText for 1st argument"
+    #unless parent.kind_of?(Tk::Text)
+    #  fail ArgumentError, "expect Tk::Text for 1st argument"
     #end
     @parent = @t = parent
     @tpath = parent.path
@@ -36,7 +36,7 @@
   end
 
   def id
-    TkText::IndexString.new(@id)
+    Tk::Text::IndexString.new(@id)
   end
 
   def exist?
@@ -49,15 +49,15 @@
   end
 
 =begin
-  # move to TkText::IndexModMethods module
+  # move to Tk::Text::IndexModMethods module
   def +(mod)
     return chars(mod) if mod.kind_of?(Numeric)
 
     mod = mod.to_s
     if mod =~ /^\s*[+-]?\d/
-      TkText::IndexString.new(@id + ' + ' + mod)
+      Tk::Text::IndexString.new(@id + ' + ' + mod)
     else
-      TkText::IndexString.new(@id + ' ' + mod)
+      Tk::Text::IndexString.new(@id + ' ' + mod)
     end
   end
 
@@ -66,11 +66,11 @@
 
     mod = mod.to_s
     if mod =~ /^\s*[+-]?\d/
-      TkText::IndexString.new(@id + ' - ' + mod)
+      Tk::Text::IndexString.new(@id + ' - ' + mod)
     elsif mod =~ /^\s*[-]\s+(\d.*)$/
-      TkText::IndexString.new(@id + ' - -' + $1)
+      Tk::Text::IndexString.new(@id + ' - -' + $1)
     else
-      TkText::IndexString.new(@id + ' ' + mod)
+      Tk::Text::IndexString.new(@id + ' ' + mod)
     end
   end
 =end
@@ -133,8 +133,8 @@
   end
 
   def initialize(parent, name, index=nil)
-    #unless parent.kind_of?(TkText)
-    #  fail ArgumentError, "expect TkText for 1st argument"
+    #unless parent.kind_of?(Tk::Text)
+    #  fail ArgumentError, "expect Tk::Text for 1st argument"
     #end
     @parent = @t = parent
     @tpath = parent.path
Index: ext/tk/lib/tk/font.rb
===================================================================
--- ext/tk/lib/tk/font.rb	(revision 15617)
+++ ext/tk/lib/tk/font.rb	(revision 15618)
@@ -899,13 +899,15 @@
       if key.include?(';')
         win, tag, optkey = key.split(';')
         winobj = tk_tcl2ruby(win)
-        if winobj.kind_of? TkText
+        #if winobj.kind_of? TkText
+        if winobj.kind_of?(TkText) || winobj.kind_of?(Tk::Text)
           if optkey
             ret.push([winobj, winobj.tagid2obj(tag), optkey])
           else
             ret.push([winobj, winobj.tagid2obj(tag)])
           end
-        elsif winobj.kind_of? TkCanvas
+        #elsif winobj.kind_of? TkCanvas
+        elsif winobj.kind_of?(TkCanvas) || winobj.kind_of?(Tk::Canvas)
           if (tagobj = TkcTag.id2obj(winobj, tag)).kind_of? TkcTag
             if optkey
               ret.push([winobj, tagobj, optkey])
@@ -925,7 +927,8 @@
               ret.push([winobj, tag])
             end
           end
-        elsif winobj.kind_of? TkMenu
+        #elsif winobj.kind_of? TkMenu
+        elsif winobj.kind_of?(TkMenu) || winobj.kind_of?(Tk::Menu)
           if optkey
             ret.push([winobj, tag, optkey])
           else
@@ -1504,11 +1507,14 @@
             optkey = 'font' if optkey == nil || optkey == ''
             winobj = tk_tcl2ruby(win)
 #           winobj.tagfont_configure(tag, {'font'=>@latinfont})
-            if winobj.kind_of? TkText
+            #if winobj.kind_of? TkText
+            if winobj.kind_of?(TkText) || winobj.kind_of?(Tk::Text)
               tk_call(win, 'tag', 'configure', tag, "-#{optkey}", @latinfont)
-            elsif winobj.kind_of? TkCanvas
+            #elsif winobj.kind_of? TkCanvas
+            elsif winobj.kind_of?(TkCanvas) || winobj.kind_of?(Tk::Canvas)
               tk_call(win, 'itemconfigure', tag, "-#{optkey}", @latinfont)
-            elsif winobj.kind_of? TkMenu
+            #elsif winobj.kind_of? TkMenu
+            elsif winobj.kind_of?(TkMenu) || winobj.kind_of?(Tk::Menu)
               tk_call(win, 'entryconfigure', tag, "-#{optkey}", @latinfont)
             else
               raise RuntimeError, "unknown widget type"
@@ -1539,11 +1545,14 @@
             optkey = 'kanjifont' unless optkey
             winobj = tk_tcl2ruby(win)
 #           winobj.tagfont_configure(tag, {'kanjifont'=>@kanjifont})
-            if winobj.kind_of? TkText
+            #if winobj.kind_of? TkText
+            if winobj.kind_of?(TkText) || winobj.kind_of?(Tk::Text)
               tk_call(win, 'tag', 'configure', tag, "-#{optkey}", @kanjifont)
-            elsif winobj.kind_of? TkCanvas
+            #elsif winobj.kind_of? TkCanvas
+            elsif winobj.kind_of?(TkCanvas) || winobj.kind_of?(Tk::Canvas)
               tk_call(win, 'itemconfigure', tag, "-#{optkey}", @kanjifont)
-            elsif winobj.kind_of? TkMenu
+            #elsif winobj.kind_of? TkMenu
+            elsif winobj.kind_of?(TkMenu) || winobj.kind_of?(Tk::Menu)
               tk_call(win, 'entryconfigure', tag, "-#{optkey}", @latinfont)
             else
               raise RuntimeError, "unknown widget type"
Index: ext/tk/lib/tk/checkbutton.rb
===================================================================
--- ext/tk/lib/tk/checkbutton.rb	(revision 15617)
+++ ext/tk/lib/tk/checkbutton.rb	(revision 15618)
@@ -4,7 +4,7 @@
 require 'tk'
 require 'tk/radiobutton'
 
-class Tk::CheckButton<TkRadioButton
+class Tk::CheckButton<Tk::RadioButton
   TkCommandNames = ['checkbutton'.freeze].freeze
   WidgetClassName = 'Checkbutton'.freeze
   WidgetClassNames[WidgetClassName] = self
@@ -24,5 +24,7 @@
 end
 
 Tk::Checkbutton = Tk::CheckButton
-TkCheckButton = Tk::CheckButton unless Object.const_defined? :TkCheckButton
-TkCheckbutton = Tk::Checkbutton unless Object.const_defined? :TkCheckbutton
+#TkCheckButton = Tk::CheckButton unless Object.const_defined? :TkCheckButton
+#TkCheckbutton = Tk::Checkbutton unless Object.const_defined? :TkCheckbutton
+Tk.__set_toplevel_aliases__(:Tk, Tk::CheckButton, 
+                            :TkCheckButton, :TkCheckbutton)
Index: ext/tk/lib/tk/panedwindow.rb
===================================================================
--- ext/tk/lib/tk/panedwindow.rb	(revision 15617)
+++ ext/tk/lib/tk/panedwindow.rb	(revision 15618)
@@ -231,5 +231,7 @@
 end
 
 Tk::Panedwindow = Tk::PanedWindow
-TkPanedWindow = Tk::PanedWindow unless Object.const_defined? :TkPanedWindow
-TkPanedwindow = Tk::Panedwindow unless Object.const_defined? :TkPanedwindow
+#TkPanedWindow = Tk::PanedWindow unless Object.const_defined? :TkPanedWindow
+#TkPanedwindow = Tk::Panedwindow unless Object.const_defined? :TkPanedwindow
+Tk.__set_toplevel_aliases__(:Tk, Tk::PanedWindow, 
+                            :TkPanedWindow, :TkPanedwindow)
Index: ext/tk/lib/tk/texttag.rb
===================================================================
--- ext/tk/lib/tk/texttag.rb	(revision 15617)
+++ ext/tk/lib/tk/texttag.rb	(revision 15618)
@@ -7,7 +7,7 @@
 
 class TkTextTag<TkObject
   include TkTreatTagFont
-  include TkText::IndexModMethods
+  include Tk::Text::IndexModMethods
 
   TTagID_TBL = TkCore::INTERP.create_table
   Tk_TextTag_ID = ['tag'.freeze, '00000'.taint].freeze
@@ -47,7 +47,7 @@
   end
 
   def id
-    TkText::IndexString.new(@id)
+    Tk::Text::IndexString.new(@id)
   end
 
   def exist?
@@ -60,11 +60,11 @@
   end
 
   def first
-    TkText::IndexString.new(@id + '.first')
+    Tk::Text::IndexString.new(@id + '.first')
   end
 
   def last
-    TkText::IndexString.new(@id + '.last')
+    Tk::Text::IndexString.new(@id + '.last')
   end
 
   def add(*indices)
@@ -83,7 +83,7 @@
     l = tk_split_simplelist(tk_call_without_enc(@t.path, 'tag', 'ranges', @id))
     r = []
     while key=l.shift
-      r.push [TkText::IndexString.new(key), TkText::IndexString.new(l.shift)]
+      r.push [Tk::Text::IndexString.new(key), Tk::Text::IndexString.new(l.shift)]
     end
     r
   end
@@ -92,7 +92,7 @@
     simplelist(tk_call_without_enc(@t.path, 'tag', 'nextrange', @id, 
                                    _get_eval_enc_str(first), 
                                    _get_eval_enc_str(last))).collect{|idx|
-      TkText::IndexString.new(idx)
+      Tk::Text::IndexString.new(idx)
     }
   end
 
@@ -100,7 +100,7 @@
     simplelist(tk_call_without_enc(@t.path, 'tag', 'prevrange', @id, 
                                    _get_eval_enc_str(first), 
                                    _get_eval_enc_str(last))).collect{|idx|
-      TkText::IndexString.new(idx)
+      Tk::Text::IndexString.new(idx)
     }
   end
 
@@ -248,8 +248,8 @@
   end
 
   def initialize(parent, name, *args)
-    #unless parent.kind_of?(TkText)
-    #  fail ArgumentError, "expect TkText for 1st argument"
+    #unless parent.kind_of?(Tk::Text)
+    #  fail ArgumentError, "expect Tk::Text for 1st argument"
     #end
     @parent = @t = parent
     @tpath = parent.path
Index: ext/tk/lib/tk/event.rb
===================================================================
--- ext/tk/lib/tk/event.rb	(revision 15617)
+++ ext/tk/lib/tk/event.rb	(revision 15618)
@@ -15,6 +15,8 @@
 module TkEvent
   class Event < TkUtil::CallbackSubst
     module Grp
+      major, minor, type, type_name, patchlevel = TclTkLib.get_version
+
       KEY         =           0x1
       BUTTON      =           0x2
       MOTION      =           0x4
@@ -39,7 +41,7 @@
       RESIZEREQ   =           0x200000
       CIRCREQ     =           0x400000
 
-      MWHEEL      =           0x10000000
+      MWHEEL      =           KEY
 
       ALL         =           0xFFFFFFFF
 
@@ -298,31 +300,54 @@
       [ ?b, ?n, :num ], 
       [ ?c, ?n, :count ], 
       [ ?d, ?s, :detail ], 
+      # ?e
       [ ?f, ?b, :focus ], 
+      # ?g
       [ ?h, ?n, :height ], 
       [ ?i, ?s, :win_hex ], 
+      # ?j
       [ ?k, ?n, :keycode ], 
+      # ?l
       [ ?m, ?s, :mode ], 
+      # ?n
       [ ?o, ?b, :override ], 
       [ ?p, ?s, :place ], 
+      # ?q
+      # ?r
       [ ?s, ?x, :state ], 
       [ ?t, ?n, :time ], 
+      # ?u
+      [ ?v, ?n, :value_mask ], 
       [ ?w, ?n, :width ], 
       [ ?x, ?n, :x ], 
       [ ?y, ?n, :y ], 
+      # ?z
       [ ?A, ?s, :char ], 
       [ ?B, ?n, :borderwidth ], 
+      # ?C
       [ ?D, ?n, :wheel_delta ], 
       [ ?E, ?b, :send_event ], 
+      # ?F
+      # ?G
+      # ?H
+      # ?I
+      # ?J
       [ ?K, ?s, :keysym ], 
+      # ?L
+      # ?M
       [ ?N, ?n, :keysym_num ], 
+      # ?O
       [ ?P, ?s, :property ], 
+      # ?Q
       [ ?R, ?s, :rootwin_id ], 
       [ ?S, ?s, :subwindow ], 
       [ ?T, ?n, :type ], 
+      # ?U
+      # ?V
       [ ?W, ?w, :widget ], 
       [ ?X, ?n, :x_root ], 
       [ ?Y, ?n, :y_root ], 
+      # ?Z
       nil
     ]
 
Index: ext/tk/lib/tk/root.rb
===================================================================
--- ext/tk/lib/tk/root.rb	(revision 15617)
+++ ext/tk/lib/tk/root.rb	(revision 15618)
@@ -14,28 +14,7 @@
   end
   private :__methodcall_optkeys
 
-=begin
-  ROOT = []
-  def TkRoot.new(keys=nil)
-    if ROOT[0]
-      Tk_WINDOWS["."] = ROOT[0]
-      return ROOT[0]
-    end
-    new = super(:without_creating=>true, :widgetname=>'.')
-    if keys  # wm commands
-      keys.each{|k,v|
-        if v.kind_of? Array
-          new.send(k,*v)
-        else
-          new.send(k,v)
-        end
-      }
-    end
-    ROOT[0] = new
-    Tk_WINDOWS["."] = new
-  end
-=end
-  def TkRoot.new(keys=nil, &b)
+  def Root.new(keys=nil, &b)
     unless TkCore::INTERP.tk_windows['.']
       TkCore::INTERP.tk_windows['.'] = 
         super(:without_creating=>true, :widgetname=>'.'){}
@@ -102,9 +81,10 @@
     self.menu
   end
 
-  def TkRoot.destroy
+  def Root.destroy
     TkCore::INTERP._invoke('destroy', '.')
   end
 end
 
-TkRoot = Tk::Root unless Object.const_defined? :TkRoot
+#TkRoot = Tk::Root unless Object.const_defined? :TkRoot
+Tk.__set_toplevel_aliases__(:Tk, Tk::Root, :TkRoot)
Index: ext/tk/lib/tk/variable.rb
===================================================================
--- ext/tk/lib/tk/variable.rb	(revision 15617)
+++ ext/tk/lib/tk/variable.rb	(revision 15618)
@@ -20,7 +20,7 @@
 
   #TkCore::INTERP.add_tk_procs('rb_var', 'args', 
   #     "ruby [format \"TkVariable.callback %%Q!%s!\" $args]")
-TkCore::INTERP.add_tk_procs('rb_var', 'args', <<-'EOL')
+  TkCore::INTERP.add_tk_procs('rb_var', 'args', <<-'EOL')
     if {[set st [catch {eval {ruby_cmd TkVariable callback} $args} ret]] != 0} {
        set idx [string first "\n\n" $ret]
        if {$idx > 0} {
Index: ext/tk/lib/tk/textimage.rb
===================================================================
--- ext/tk/lib/tk/textimage.rb	(revision 15617)
+++ ext/tk/lib/tk/textimage.rb	(revision 15618)
@@ -5,11 +5,11 @@
 require 'tk/text'
 
 class TkTextImage<TkObject
-  include TkText::IndexModMethods
+  include Tk::Text::IndexModMethods
 
   def initialize(parent, index, keys)
-    #unless parent.kind_of?(TkText)
-    #  fail ArgumentError, "expect TkText for 1st argument"
+    #unless parent.kind_of?(Tk::Text)
+    #  fail ArgumentError, "expect Tk::Text for 1st argument"
     #end
     @t = parent
     if index == 'end' || index == :end
@@ -34,7 +34,7 @@
   end
 
   def id
-    TkText::IndexString.new(@id)
+    Tk::Text::IndexString.new(@id)
   end
   def mark
     @path
Index: ext/tk/lib/tk/radiobutton.rb
===================================================================
--- ext/tk/lib/tk/radiobutton.rb	(revision 15617)
+++ ext/tk/lib/tk/radiobutton.rb	(revision 15618)
@@ -4,7 +4,7 @@
 require 'tk'
 require 'tk/button'
 
-class Tk::RadioButton<TkButton
+class Tk::RadioButton<Tk::Button
   TkCommandNames = ['radiobutton'.freeze].freeze
   WidgetClassName = 'Radiobutton'.freeze
   WidgetClassNames[WidgetClassName] = self
@@ -65,5 +65,7 @@
 end
 
 Tk::Radiobutton = Tk::RadioButton
-TkRadioButton = Tk::RadioButton unless Object.const_defined? :TkRadioButton
-TkRadiobutton = Tk::Radiobutton unless Object.const_defined? :TkRadiobutton
+#TkRadioButton = Tk::RadioButton unless Object.const_defined? :TkRadioButton
+#TkRadiobutton = Tk::Radiobutton unless Object.const_defined? :TkRadiobutton
+Tk.__set_toplevel_aliases__(:Tk, Tk::RadioButton, 
+                            :TkRadioButton, :TkRadiobutton)
Index: ext/tk/lib/tk/composite.rb
===================================================================
--- ext/tk/lib/tk/composite.rb	(revision 15617)
+++ ext/tk/lib/tk/composite.rb	(revision 15618)
@@ -34,7 +34,8 @@
 
     if klass
       # WidgetClassName is a known class
-      if klass <= TkFrame || klass < TkComposite
+      #if klass <= TkFrame || klass < TkComposite
+      if klass <= TkFrame || klass < Tk::Frame || klass < TkComposite
         # klass is valid for the base frame
         if self.class <= klass
           # use my classname
@@ -50,7 +51,8 @@
 
       else
         # klass is invalid for the base frame
-        if self.class < TkFrame || self.class.superclass < TkComposite
+        #if self.class < TkFrame || self.class.superclass < TkComposite
+        if self.class < TkFrame || self.class.superclass < Tk::Frame || self.class.superclass < TkComposite
           # my class name is valid for the base frame -> use my classname
           base_class_name = self.class.name
           if base_class_name == ''
@@ -69,7 +71,8 @@
 
     else
       # no valid WidgetClassName
-      if self.class < TkFrame || self.class.superclass < TkComposite
+      #if self.class < TkFrame || self.class.superclass < TkComposite
+      if self.class < TkFrame || self.class.superclass < Tk::Frame || self.class.superclass < TkComposite
         # my class name is valid for the base frame -> use my classname
         base_class_name = self.class.name
         if base_class_name == ''
@@ -108,8 +111,12 @@
     end
 
     if base_class_name
+      # @frame = Tk::Frame.new(parent, :class=>base_class_name)
+      # --> use current TkFrame class
       @frame = TkFrame.new(parent, :class=>base_class_name)
     else
+      # @frame = Tk::Frame.new(parent)
+      # --> use current TkFrame class
       @frame = TkFrame.new(parent)
     end
     @path = @epath = @frame.path
Index: ext/tk/lib/tk/macpkg.rb
===================================================================
--- ext/tk/lib/tk/macpkg.rb	(revision 15617)
+++ ext/tk/lib/tk/macpkg.rb	(revision 15618)
@@ -22,7 +22,8 @@
 
 module Tk::MacResource
 end
-TkMacResource = Tk::MacResource
+#TkMacResource = Tk::MacResource
+Tk.__set_toplevel_aliases__(:Tk, Tk::MacResource, :TkMacResource)
 
 module Tk::MacResource
   extend Tk
Index: ext/tk/lib/tk/scrollbox.rb
===================================================================
--- ext/tk/lib/tk/scrollbox.rb	(revision 15617)
+++ ext/tk/lib/tk/scrollbox.rb	(revision 15618)
@@ -6,10 +6,14 @@
 require 'tk'
 require 'tk/listbox'
 
-class TkScrollbox<TkListbox
+class TkScrollbox<Tk::Listbox
   include TkComposite
   def initialize_composite(keys=nil)
+    #list = Tk::Listbox.new(@frame)
+    # -> use current TkListbox class
     list = TkListbox.new(@frame)
+    #scroll = Tk::Scrollbar.new(@frame)
+    # -> use current TkScrollbar class
     scroll = TkScrollbar.new(@frame)
     @path = list.path
 
Index: ext/tk/lib/tk/autoload.rb
===================================================================
--- ext/tk/lib/tk/autoload.rb	(revision 15617)
+++ ext/tk/lib/tk/autoload.rb	(revision 15618)
@@ -1,21 +1,7 @@
 #
 #  autoload
 #
-major, minor, type, type_name, patchlevel = TclTkLib.get_version
-
-######################################
-#  depend on version of Tcl/Tk
-if major > 8 || 
-    (major == 8 && minor > 5) || 
-    (major == 8 && minor == 5 && type >= TclTkLib::RELEASE_TYPE::BETA) 
-  # Tcl/Tk 8.5 beta or later
-  autoload :Ttk, 'tkextlib/tile'
-  module Tk
-    autoload :Tile, 'tkextlib/tile'
-  end
-end
-
-######################################
+############################################
 #  geometry manager
 module Tk
   autoload :Grid,             'tk/grid'
@@ -38,12 +24,7 @@
 def TkPlace(*args); TkPlace.configure(*args); end
 
 
-######################################
-# Ttk (Tile) support
-require 'tk/ttk_selector'
-
-
-######################################
+############################################
 # classes on Tk module
 module Tk
   autoload :Button,           'tk/button'
@@ -66,12 +47,15 @@
 
   autoload :Menu,             'tk/menu'
   autoload :MenuClone,        'tk/menu'
+  autoload :CloneMenu,        'tk/menu'
   autoload :SystemMenu,       'tk/menu'
   autoload :SysMenu_Help,     'tk/menu'
   autoload :SysMenu_System,   'tk/menu'
   autoload :SysMenu_Apple,    'tk/menu'
   autoload :Menubutton,       'tk/menu'
+  autoload :MenuButton,       'tk/menu'
   autoload :OptionMenubutton, 'tk/menu'
+  autoload :OptionMenBbutton, 'tk/menu'
 
   autoload :Message,          'tk/message'
 
@@ -97,7 +81,7 @@
 end
 
 
-######################################
+############################################
 # sub-module of Tk
 module Tk
   autoload :Clock,            'tk/clock'
@@ -129,184 +113,287 @@
 
 end
 
-######################################
-#  toplevel classes/modules
-autoload_list = {
-  :TkBgError            => 'tk/bgerror', 
 
-  :TkBindTag            => 'tk/bindtag', 
-  :TkBindTagAll         => 'tk/bindtag', 
-  :TkDatabaseClass      => 'tk/bindtag', 
+############################################
+#  toplevel classes/modules (fixed)
+autoload :TkBgError,          'tk/bgerror'
 
-  :TkButton             => 'tk/button', 
+autoload :TkBindTag,          'tk/bindtag'
+autoload :TkBindTagAll,       'tk/bindtag'
+autoload :TkDatabaseClass,    'tk/bindtag'
 
-  :TkCanvas             => 'tk/canvas', 
+autoload :TkConsole,          'tk/console'
 
-  :TkcItem              => 'tk/canvas', 
-  :TkcArc               => 'tk/canvas', 
-  :TkcBitmap            => 'tk/canvas', 
-  :TkcImage             => 'tk/canvas', 
-  :TkcLine              => 'tk/canvas', 
-  :TkcOval              => 'tk/canvas', 
-  :TkcPolygon           => 'tk/canvas', 
-  :TkcRectangle         => 'tk/canvas', 
-  :TkcText              => 'tk/canvas', 
-  :TkcWindow            => 'tk/canvas', 
+autoload :TkcItem,            'tk/canvas'
+autoload :TkcArc,             'tk/canvas'
+autoload :TkcBitmap,          'tk/canvas'
+autoload :TkcImage,           'tk/canvas'
+autoload :TkcLine,            'tk/canvas'
+autoload :TkcOval,            'tk/canvas'
+autoload :TkcPolygon,         'tk/canvas'
+autoload :TkcRectangle,       'tk/canvas'
+autoload :TkcText,            'tk/canvas'
+autoload :TkcWindow,          'tk/canvas'
 
-  :TkcTagAccess         => 'tk/canvastag', 
-  :TkcTag               => 'tk/canvastag', 
-  :TkcTagString         => 'tk/canvastag', 
-  :TkcNamedTag          => 'tk/canvastag', 
-  :TkcTagAll            => 'tk/canvastag', 
-  :TkcTagCurrent        => 'tk/canvastag', 
-  :TkcTagGroup          => 'tk/canvastag', 
+autoload :TkcTagAccess,       'tk/canvastag'
+autoload :TkcTag,             'tk/canvastag'
+autoload :TkcTagString,       'tk/canvastag'
+autoload :TkcNamedTag,        'tk/canvastag'
+autoload :TkcTagAll,          'tk/canvastag'
+autoload :TkcTagCurrent,      'tk/canvastag'
+autoload :TkcTagGroup,        'tk/canvastag'
 
-  :TkCheckButton        => 'tk/checkbutton', 
-  :TkCheckbutton        => 'tk/checkbutton', 
+autoload :TkClipboard,        'tk/clipboard'
 
-  :TkClipboard          => 'tk/clipboard', 
+autoload :TkComposite,        'tk/composite'
 
-  :TkComposite          => 'tk/composite', 
+autoload :TkConsole,          'tk/console'
 
-  :TkConsole            => 'tk/console', 
+autoload :TkDialog,           'tk/dialog'
+autoload :TkDialog2,          'tk/dialog'
+autoload :TkDialogObj,        'tk/dialog'
+autoload :TkWarning,          'tk/dialog'
+autoload :TkWarning2,         'tk/dialog'
+autoload :TkWarningObj,       'tk/dialog'
 
-  :TkDialog             => 'tk/dialog', 
-  :TkDialog2            => 'tk/dialog', 
-  :TkDialogObj          => 'tk/dialog', 
-  :TkWarning            => 'tk/dialog', 
-  :TkWarning2           => 'tk/dialog', 
-  :TkWarningObj         => 'tk/dialog', 
+autoload :TkEvent,            'tk/event'
 
-  :TkEntry              => 'tk/entry', 
+autoload :TkFont,             'tk/font'
+autoload :TkTreatTagFont,     'tk/font'
 
-  :TkEvent              => 'tk/event', 
+autoload :TkImage,            'tk/image'
+autoload :TkBitmapImage,      'tk/image'
+autoload :TkPhotoImage,       'tk/image'
 
-  :TkFont               => 'tk/font', 
-  :TkTreatTagFont       => 'tk/font', 
+autoload :TkItemConfigMethod, 'tk/itemconfig'
 
-  :TkFrame              => 'tk/frame', 
+autoload :TkTreatItemFont,    'tk/itemfont'
 
-  :TkImage              => 'tk/image', 
-  :TkBitmapImage        => 'tk/image', 
-  :TkPhotoImage         => 'tk/image', 
+autoload :TkKinput,           'tk/kinput'
 
-  :TkItemConfigMethod   => 'tk/itemconfig', 
+autoload :TkSystemMenu,       'tk/menu'
 
-  :TkTreatItemFont      => 'tk/itemfont', 
+autoload :TkMenubar,          'tk/menubar'
 
-  :TkKinput             => 'tk/kinput', 
+autoload :TkMenuSpec,         'tk/menuspec'
 
-  :TkLabel              => 'tk/label', 
+autoload :TkManageFocus,      'tk/mngfocus'
 
-  :TkLabelFrame         => 'tk/labelframe', 
-  :TkLabelframe         => 'tk/labelframe', 
+autoload :TkMsgCatalog,       'tk/msgcat'
+autoload :TkMsgCat,           'tk/msgcat'
 
-  :TkListbox            => 'tk/listbox', 
+autoload :TkNamespace,        'tk/namespace'
 
-  :TkMacResource        => 'tk/macpkg', 
+autoload :TkOptionDB,         'tk/optiondb'
+autoload :TkOption,           'tk/optiondb'
+autoload :TkResourceDB,       'tk/optiondb'
 
-  :TkMenu               => 'tk/menu', 
-  :TkMenuClone          => 'tk/menu', 
-  :TkSystemMenu         => 'tk/menu', 
-  :TkSysMenu_Help       => 'tk/menu', 
-  :TkSysMenu_System     => 'tk/menu', 
-  :TkSysMenu_Apple      => 'tk/menu', 
-  :TkMenubutton         => 'tk/menu', 
-  :TkOptionMenubutton   => 'tk/menu', 
+autoload :TkPackage,          'tk/package'
 
-  :TkMenubar            => 'tk/menubar', 
+autoload :TkPalette,          'tk/palette'
 
-  :TkMenuSpec           => 'tk/menuspec', 
+autoload :TkScrollbox,        'tk/scrollbox'
 
-  :TkMessage            => 'tk/message', 
+autoload :TkSelection,        'tk/selection'
 
-  :TkManageFocus        => 'tk/mngfocus', 
+autoload :TkTreatTagFont,     'tk/tagfont'
 
-  :TkMsgCatalog         => 'tk/msgcat', 
-  :TkMsgCat             => 'tk/msgcat', 
+autoload :TkTextImage,        'tk/textimage'
+autoload :TktImage,           'tk/textimage'
 
-  :TkNamespace          => 'tk/namespace', 
+autoload :TkTextMark,         'tk/textmark'
+autoload :TkTextNamedMark,    'tk/textmark'
+autoload :TkTextMarkInsert,   'tk/textmark'
+autoload :TkTextMarkCurrent,  'tk/textmark'
+autoload :TkTextMarkAnchor,   'tk/textmark'
+autoload :TktMark,            'tk/textmark'
+autoload :TktNamedMark,       'tk/textmark'
+autoload :TktMarkInsert,      'tk/textmark'
+autoload :TktMarkCurrent,     'tk/textmark'
+autoload :TktMarkAnchor,      'tk/textmark'
 
-  :TkOptionDB           => 'tk/optiondb', 
-  :TkOption             => 'tk/optiondb', 
-  :TkResourceDB         => 'tk/optiondb', 
+autoload :TkTextTag,          'tk/texttag'
+autoload :TkTextNamedTag,     'tk/texttag'
+autoload :TkTextTagSel,       'tk/texttag'
+autoload :TktTag,             'tk/texttag'
+autoload :TktNamedTag,        'tk/texttag'
+autoload :TktTagSel,          'tk/texttag'
 
-  :TkPackage            => 'tk/package', 
+autoload :TkTextWindow,       'tk/textwindow'
+autoload :TktWindow,          'tk/textwindow'
 
-  :TkPalette            => 'tk/palette', 
+autoload :TkAfter,            'tk/timer'
+autoload :TkTimer,            'tk/timer'
+autoload :TkRTTimer,          'tk/timer'
 
-  :TkPanedWindow        => 'tk/panedwindow', 
-  :TkPanedwindow        => 'tk/panedwindow', 
+autoload :TkTextWin,          'tk/txtwin_abst'
 
-  :TkRadioButton        => 'tk/radiobutton', 
-  :TkRadiobutton        => 'tk/radiobutton', 
+autoload :TkValidation,       'tk/validation'
+autoload :TkValidateCommand,  'tk/validation'
 
-  :TkRoot               => 'tk/root', 
+autoload :TkVariable,         'tk/variable'
+autoload :TkVarAccess,        'tk/variable'
 
-  :TkScale              => 'tk/scale', 
+autoload :TkVirtualEvent,     'tk/virtevent'
+autoload :TkNamedVirtualEvent,'tk/virtevent'
 
-  :TkScrollbar          => 'tk/scrollbar', 
-  :TkXScrollbar         => 'tk/scrollbar', 
-  :TkYScrollbar         => 'tk/scrollbar', 
+autoload :TkWinfo,            'tk/winfo'
 
-  :TkScrollbox          => 'tk/scrollbox', 
+autoload :TkXIM,              'tk/xim'
 
-  :TkSelection          => 'tk/selection', 
 
-  :TkSpinbox            => 'tk/spinbox', 
+############################################
+#  toplevel classes/modules (switchable)
+module Tk
+  @TOPLEVEL_ALIAS_TABLE = {}
+  @TOPLEVEL_ALIAS_TABLE[:Tk] = {
+    :TkButton             => 'tk/button', 
 
-  :TkTreatTagFont       => 'tk/tagfont', 
+    :TkCanvas             => 'tk/canvas', 
 
-  :TkText               => 'tk/text', 
+    :TkCheckButton        => 'tk/checkbutton', 
+    :TkCheckbutton        => 'tk/checkbutton', 
 
-  :TkTextImage          => 'tk/textimage', 
-  :TktImage             => 'tk/textimage', 
+    # :TkDialog             => 'tk/dialog', 
+    # :TkDialog2            => 'tk/dialog', 
+    # :TkDialogObj          => 'tk/dialog', 
+    # :TkWarning            => 'tk/dialog', 
+    # :TkWarning2           => 'tk/dialog', 
+    # :TkWarningObj         => 'tk/dialog', 
 
-  :TkTextMark           => 'tk/textmark', 
-  :TkTextNamedMark      => 'tk/textmark', 
-  :TkTextMarkInsert     => 'tk/textmark', 
-  :TkTextMarkCurrent    => 'tk/textmark', 
-  :TkTextMarkAnchor     => 'tk/textmark', 
-  :TktMark              => 'tk/textmark', 
-  :TktNamedMark         => 'tk/textmark', 
-  :TktMarkInsert        => 'tk/textmark', 
-  :TktMarkCurrent       => 'tk/textmark', 
-  :TktMarkAnchor        => 'tk/textmark', 
+    :TkEntry              => 'tk/entry', 
 
-  :TkTextTag            => 'tk/texttag', 
-  :TkTextNamedTag       => 'tk/texttag', 
-  :TkTextTagSel         => 'tk/texttag', 
-  :TktTag               => 'tk/texttag', 
-  :TktNamedTag          => 'tk/texttag', 
-  :TktTagSel            => 'tk/texttag', 
+    :TkFrame              => 'tk/frame', 
 
-  :TkTextWindow         => 'tk/textwindow', 
-  :TktWindow           => 'tk/textwindow', 
+    :TkLabel              => 'tk/label', 
 
-  :TkAfter              => 'tk/timer', 
-  :TkTimer              => 'tk/timer', 
-  :TkRTTimer            => 'tk/timer', 
+    :TkLabelFrame         => 'tk/labelframe', 
+    :TkLabelframe         => 'tk/labelframe', 
 
-  :TkToplevel           => 'tk/toplevel', 
+    :TkListbox            => 'tk/listbox', 
 
-  :TkTextWin            => 'tk/txtwin_abst', 
+    :TkMacResource        => 'tk/macpkg', 
 
-  :TkValidation         => 'tk/validation', 
+    :TkMenu               => 'tk/menu', 
+    :TkMenuClone          => 'tk/menu', 
+    :TkCloneMenu          => 'tk/menu', 
+    # :TkSystemMenu         => 'tk/menu', 
+    :TkSysMenu_Help       => 'tk/menu', 
+    :TkSysMenu_System     => 'tk/menu', 
+    :TkSysMenu_Apple      => 'tk/menu', 
+    :TkMenubutton         => 'tk/menu', 
+    :TkMenuButton         => 'tk/menu', 
+    :TkOptionMenubutton   => 'tk/menu', 
+    :TkOptionMenuButton   => 'tk/menu', 
 
-  :TkVariable           => 'tk/variable', 
-  :TkVarAccess          => 'tk/variable', 
+    :TkMessage            => 'tk/message', 
 
-  :TkVirtualEvent       => 'tk/virtevent', 
-  :TkNamedVirtualEvent  => 'tk/virtevent', 
+    :TkPanedWindow        => 'tk/panedwindow', 
+    :TkPanedwindow        => 'tk/panedwindow', 
 
-  :TkWinfo              => 'tk/winfo', 
+    :TkRadioButton        => 'tk/radiobutton', 
+    :TkRadiobutton        => 'tk/radiobutton', 
 
-  :TkWinDDE             => 'tk/winpkg', 
-  :TkWinRegistry        => 'tk/winpkg', 
+    :TkRoot               => 'tk/root', 
 
-  :TkXIM                => 'tk/xim', 
-}
-autoload_list.each{|mod, lib|
-  #autoload mod, lib unless 
-  autoload mod, lib unless (Object.const_defined? mod) && (autoload? mod)
-}
+    :TkScale              => 'tk/scale', 
+
+    :TkScrollbar          => 'tk/scrollbar', 
+    :TkXScrollbar         => 'tk/scrollbar', 
+    :TkYScrollbar         => 'tk/scrollbar', 
+
+    :TkSpinbox            => 'tk/spinbox', 
+
+    :TkText               => 'tk/text', 
+
+    :TkToplevel           => 'tk/toplevel', 
+
+    :TkWinDDE             => 'tk/winpkg', 
+    :TkWinRegistry        => 'tk/winpkg', 
+  }
+
+  @TOPLEVEL_ALIAS_SETUP_PROC = {}
+
+  @current_default_widget_set = nil
+end
+
+############################################
+
+class << Tk
+  def default_widget_set
+    @current_default_widget_set
+  end
+
+  def default_widget_set=(target)
+    target = target.to_sym
+    return target if target == @current_default_widget_set
+
+    if (cmd = @TOPLEVEL_ALIAS_SETUP_PROC[target])
+      cmd.call(target)
+    end
+
+    _replace_toplevel_aliases(target)
+  end
+
+  def __set_toplevel_aliases__(target, obj, *symbols)
+    @TOPLEVEL_ALIAS_TABLE[target = target.to_sym] ||= {}
+    symbols.each{|sym|
+      @TOPLEVEL_ALIAS_TABLE[target][sym = sym.to_sym] = obj
+      if @current_default_widget_set == target
+        Object.class_eval{remove_const sym} if Object.const_defined?(sym)
+        Object.const_set(sym, obj)
+      end
+    }
+  end
+
+  ###################################
+  private
+  def _replace_toplevel_aliases(target)
+    # check already autoloaded
+    if (table = @TOPLEVEL_ALIAS_TABLE[current = @current_default_widget_set])
+      table.each{|sym, file|
+        if !Object.autoload?(sym) && Object.const_defined?(sym) && 
+            @TOPLEVEL_ALIAS_TABLE[current][sym].kind_of?(String)
+          # autoload -> class
+          @TOPLEVEL_ALIAS_TABLE[current][sym] = Object.const_get(sym)
+        end
+      }
+    end
+
+    # setup autoloads
+    @TOPLEVEL_ALIAS_TABLE[target].each{|sym, file|
+      Object.class_eval{remove_const sym} if Object.const_defined?(sym)
+      if file.kind_of?(String)
+        # file => autoload target file
+        Object.autoload(sym, file)
+      else
+        # file => loaded class object
+        Object.const_set(sym, file)
+      end
+    }
+
+    # update current alias
+    @current_default_widget_set = target
+  end
+end
+
+############################################
+# setup default widget set => :Tk
+Tk.default_widget_set = :Tk
+
+
+############################################
+#  depend on the version of Tcl/Tk
+major, minor, type, type_name, patchlevel = TclTkLib.get_version
+
+############################################
+# Ttk (Tile) support
+if major > 8 || 
+    (major == 8 && minor > 5) || 
+    (major == 8 && minor == 5 && type >= TclTkLib::RELEASE_TYPE::BETA) 
+  # Tcl/Tk 8.5 beta or later
+  Object.autoload :Ttk, 'tkextlib/tile'
+  Tk.autoload :Tile, 'tkextlib/tile'
+
+  require 'tk/ttk_selector'
+end
Index: ext/tk/lib/tk/canvas.rb
===================================================================
--- ext/tk/lib/tk/canvas.rb	(revision 15617)
+++ ext/tk/lib/tk/canvas.rb	(revision 15618)
@@ -572,7 +572,8 @@
   end
 end
 
-TkCanvas = Tk::Canvas unless Object.const_defined? :TkCanvas
+#TkCanvas = Tk::Canvas unless Object.const_defined? :TkCanvas
+Tk.__set_toplevel_aliases__(:Tk, Tk::Canvas, :TkCanvas)
 
 
 class TkcItem<TkObject
@@ -660,8 +661,8 @@
   ########################################
 
   def initialize(parent, *args)
-    #unless parent.kind_of?(TkCanvas)
-    #  fail ArgumentError, "expect TkCanvas for 1st argument"
+    #unless parent.kind_of?(Tk::Canvas)
+    #  fail ArgumentError, "expect Tk::Canvas for 1st argument"
     #end
     @parent = @c = parent
     @path = parent.path
Index: ext/tk/lib/tk/button.rb
===================================================================
--- ext/tk/lib/tk/button.rb	(revision 15617)
+++ ext/tk/lib/tk/button.rb	(revision 15618)
@@ -4,7 +4,7 @@
 require 'tk'
 require 'tk/label'
 
-class Tk::Button<TkLabel
+class Tk::Button<Tk::Label
   TkCommandNames = ['button'.freeze].freeze
   WidgetClassName = 'Button'.freeze
   WidgetClassNames[WidgetClassName] = self
@@ -26,4 +26,5 @@
   end
 end
 
-TkButton = Tk::Button unless Object.const_defined? :TkButton
+#TkButton = Tk::Button unless Object.const_defined? :TkButton
+Tk.__set_toplevel_aliases__(:Tk, Tk::Button, :TkButton)
Index: ext/tk/lib/tk/textwindow.rb
===================================================================
--- ext/tk/lib/tk/textwindow.rb	(revision 15617)
+++ ext/tk/lib/tk/textwindow.rb	(revision 15618)
@@ -5,11 +5,11 @@
 require 'tk/text'
 
 class TkTextWindow<TkObject
-  include TkText::IndexModMethods
+  include Tk::Text::IndexModMethods
 
   def initialize(parent, index, keys = {})
-    #unless parent.kind_of?(TkText)
-    #  fail ArgumentError, "expect TkText for 1st argument"
+    #unless parent.kind_of?(Tk::Text)
+    #  fail ArgumentError, "expect Tk::Text for 1st argument"
     #end
     @t = parent
     if index == 'end' || index == :end
@@ -55,7 +55,7 @@
   end
 
   def id
-    TkText::IndexString.new(_epath(@id))
+    Tk::Text::IndexString.new(_epath(@id))
   end
   def mark
     @path

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]