From ee695fb164796dc203306f1585c4f6dd74f06806 Mon Sep 17 00:00:00 2001 From: nagai Date: Wed, 27 Feb 2008 18:44:31 +0000 Subject: * 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. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15618 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/tk/lib/tk/autoload.rb | 383 ++++++++++++++++++++++++++---------------- ext/tk/lib/tk/button.rb | 5 +- ext/tk/lib/tk/canvas.rb | 7 +- ext/tk/lib/tk/checkbutton.rb | 8 +- ext/tk/lib/tk/composite.rb | 13 +- ext/tk/lib/tk/entry.rb | 5 +- ext/tk/lib/tk/event.rb | 27 ++- ext/tk/lib/tk/font.rb | 27 ++- ext/tk/lib/tk/frame.rb | 3 +- ext/tk/lib/tk/label.rb | 3 +- ext/tk/lib/tk/labelframe.rb | 9 +- ext/tk/lib/tk/listbox.rb | 3 +- ext/tk/lib/tk/macpkg.rb | 3 +- ext/tk/lib/tk/menu.rb | 53 +++--- ext/tk/lib/tk/menubar.rb | 2 +- ext/tk/lib/tk/menuspec.rb | 14 +- ext/tk/lib/tk/message.rb | 5 +- ext/tk/lib/tk/optiondb.rb | 2 +- ext/tk/lib/tk/panedwindow.rb | 6 +- ext/tk/lib/tk/radiobutton.rb | 8 +- ext/tk/lib/tk/root.rb | 28 +-- ext/tk/lib/tk/scale.rb | 3 +- ext/tk/lib/tk/scrollbar.rb | 13 +- ext/tk/lib/tk/scrollbox.rb | 6 +- ext/tk/lib/tk/spinbox.rb | 5 +- ext/tk/lib/tk/text.rb | 91 +++++----- ext/tk/lib/tk/textimage.rb | 8 +- ext/tk/lib/tk/textmark.rb | 24 +-- ext/tk/lib/tk/texttag.rb | 18 +- ext/tk/lib/tk/textwindow.rb | 8 +- ext/tk/lib/tk/toplevel.rb | 3 +- ext/tk/lib/tk/ttk_selector.rb | 110 ++++++------ ext/tk/lib/tk/variable.rb | 2 +- ext/tk/lib/tk/winpkg.rb | 6 +- 34 files changed, 539 insertions(+), 372 deletions(-) (limited to 'ext/tk/lib/tk') diff --git a/ext/tk/lib/tk/autoload.rb b/ext/tk/lib/tk/autoload.rb index ace0787fc2..bc8274c2e2 100644 --- a/ext/tk/lib/tk/autoload.rb +++ b/ext/tk/lib/tk/autoload.rb @@ -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 @@ autoload :TkPlace, 'tk/place' 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 @@ module Tk 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 @@ module Tk end -###################################### +############################################ # sub-module of Tk module Tk autoload :Clock, 'tk/clock' @@ -129,184 +113,287 @@ module Tk 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', + + :TkCanvas => 'tk/canvas', + + :TkCheckButton => 'tk/checkbutton', + :TkCheckbutton => 'tk/checkbutton', + + # :TkDialog => 'tk/dialog', + # :TkDialog2 => 'tk/dialog', + # :TkDialogObj => 'tk/dialog', + # :TkWarning => 'tk/dialog', + # :TkWarning2 => 'tk/dialog', + # :TkWarningObj => 'tk/dialog', + + :TkEntry => 'tk/entry', + + :TkFrame => 'tk/frame', - :TkTreatTagFont => 'tk/tagfont', + :TkLabel => 'tk/label', - :TkText => 'tk/text', + :TkLabelFrame => 'tk/labelframe', + :TkLabelframe => 'tk/labelframe', - :TkTextImage => 'tk/textimage', - :TktImage => 'tk/textimage', + :TkListbox => 'tk/listbox', - :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', + :TkMacResource => 'tk/macpkg', - :TkTextTag => 'tk/texttag', - :TkTextNamedTag => 'tk/texttag', - :TkTextTagSel => 'tk/texttag', - :TktTag => 'tk/texttag', - :TktNamedTag => 'tk/texttag', - :TktTagSel => 'tk/texttag', + :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', - :TkTextWindow => 'tk/textwindow', - :TktWindow => 'tk/textwindow', + :TkMessage => 'tk/message', - :TkAfter => 'tk/timer', - :TkTimer => 'tk/timer', - :TkRTTimer => 'tk/timer', + :TkPanedWindow => 'tk/panedwindow', + :TkPanedwindow => 'tk/panedwindow', - :TkToplevel => 'tk/toplevel', + :TkRadioButton => 'tk/radiobutton', + :TkRadiobutton => 'tk/radiobutton', - :TkTextWin => 'tk/txtwin_abst', + :TkRoot => 'tk/root', - :TkValidation => 'tk/validation', + :TkScale => 'tk/scale', - :TkVariable => 'tk/variable', - :TkVarAccess => 'tk/variable', + :TkScrollbar => 'tk/scrollbar', + :TkXScrollbar => 'tk/scrollbar', + :TkYScrollbar => 'tk/scrollbar', - :TkVirtualEvent => 'tk/virtevent', - :TkNamedVirtualEvent => 'tk/virtevent', + :TkSpinbox => 'tk/spinbox', - :TkWinfo => 'tk/winfo', + :TkText => 'tk/text', + + :TkToplevel => 'tk/toplevel', + + :TkWinDDE => 'tk/winpkg', + :TkWinRegistry => 'tk/winpkg', + } + + @TOPLEVEL_ALIAS_SETUP_PROC = {} + + @current_default_widget_set = nil +end - :TkWinDDE => 'tk/winpkg', - :TkWinRegistry => 'tk/winpkg', +############################################ - :TkXIM => 'tk/xim', -} -autoload_list.each{|mod, lib| - #autoload mod, lib unless - autoload mod, lib unless (Object.const_defined? mod) && (autoload? mod) -} +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 diff --git a/ext/tk/lib/tk/button.rb b/ext/tk/lib/tk/button.rb index 04454cc6f7..770a5785bb 100644 --- a/ext/tk/lib/tk/button.rb +++ b/ext/tk/lib/tk/button.rb @@ -4,7 +4,7 @@ require 'tk' require 'tk/label' -class Tk::Button use my classname base_class_name = self.class.name if base_class_name == '' @@ -69,7 +71,8 @@ module TkComposite 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 @@ module TkComposite 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 diff --git a/ext/tk/lib/tk/entry.rb b/ext/tk/lib/tk/entry.rb index 787e835c31..8ce8def1e7 100644 --- a/ext/tk/lib/tk/entry.rb +++ b/ext/tk/lib/tk/entry.rb @@ -7,7 +7,7 @@ require 'tk/label' require 'tk/scrollable' require 'tk/validation' -class Tk::Entry@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 @@ module TkFont::CoreMethods 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" diff --git a/ext/tk/lib/tk/frame.rb b/ext/tk/lib/tk/frame.rb index 471bb3cd00..263b160f29 100644 --- a/ext/tk/lib/tk/frame.rb +++ b/ext/tk/lib/tk/frame.rb @@ -127,4 +127,5 @@ class Tk::Framemenu_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 @@ module TkMenuSpec 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 @@ module TkMenuSpec 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 @@ module TkMenuSpec else # menubar by menubuttons + #mbtn = Tk::Menubutton.new(parent) + # --> use current TkMenubutton class mbtn = TkMenubutton.new(parent) menu_name = nil diff --git a/ext/tk/lib/tk/message.rb b/ext/tk/lib/tk/message.rb index e91e057a00..946b68c704 100644 --- a/ext/tk/lib/tk/message.rb +++ b/ext/tk/lib/tk/message.rb @@ -4,7 +4,7 @@ require 'tk' require 'tk/label' -class Tk::Messagetrue, :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 @@ class Tk::Root use current TkListbox class list = TkListbox.new(@frame) + #scroll = Tk::Scrollbar.new(@frame) + # -> use current TkScrollbar class scroll = TkScrollbar.new(@frame) @path = list.path diff --git a/ext/tk/lib/tk/spinbox.rb b/ext/tk/lib/tk/spinbox.rb index 028c1930ff..e7f223aea7 100644 --- a/ext/tk/lib/tk/spinbox.rb +++ b/ext/tk/lib/tk/spinbox.rb @@ -5,7 +5,7 @@ require 'tk' require 'tk/entry' -class Tk::Spinbox 'tkextlib/tile/tbutton', - def self.add(name) - @TTK_CLASS_NAMES[name] = true - end + :TkCheckbutton => 'tkextlib/tile/tcheckbutton', + :TkCheckButton => 'tkextlib/tile/tcheckbutton', - def self.remove(name) - @TTK_CLASS_NAMES[name] = false - end -end + # :TkDialog => 'tkextlib/tile/dialog', + + :TkEntry => 'tkextlib/tile/tentry', + + :TkCombobox => 'tkextlib/tile/tcombobox', + + :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', -#-------------------------------------------------------------------- - -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') - -#-------------------------------------------------------------------- + :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 diff --git a/ext/tk/lib/tk/variable.rb b/ext/tk/lib/tk/variable.rb index e5cacadc1a..632f00cedf 100644 --- a/ext/tk/lib/tk/variable.rb +++ b/ext/tk/lib/tk/variable.rb @@ -20,7 +20,7 @@ class TkVariable #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} { diff --git a/ext/tk/lib/tk/winpkg.rb b/ext/tk/lib/tk/winpkg.rb index 6c168da01b..89fb391c77 100644 --- a/ext/tk/lib/tk/winpkg.rb +++ b/ext/tk/lib/tk/winpkg.rb @@ -9,7 +9,8 @@ require 'tk' 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 @@ end module Tk::WinRegistry end -TkWinRegistry = Tk::WinRegistry +#TkWinRegistry = Tk::WinRegistry +Tk.__set_toplevel_aliases__(:Tk, Tk::WinRegistry, :TkWinRegistry) module Tk::WinRegistry extend Tk -- cgit v1.2.3