diff options
author | nagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-02-27 18:44:31 +0000 |
---|---|---|
committer | nagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-02-27 18:44:31 +0000 |
commit | ee695fb164796dc203306f1585c4f6dd74f06806 (patch) | |
tree | 278f46cf1b6a9afafd3391af2b29e8a2ecf31dd4 /ext | |
parent | 4dd9fd71b34cd21613404a2900085868dfac5cd4 (diff) | |
download | ruby-ee695fb164796dc203306f1585c4f6dd74f06806.tar.gz |
* 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
Diffstat (limited to 'ext')
87 files changed, 821 insertions, 463 deletions
diff --git a/ext/tk/lib/tk.rb b/ext/tk/lib/tk.rb index 7625724784..007c5bd436 100644 --- a/ext/tk/lib/tk.rb +++ b/ext/tk/lib/tk.rb @@ -935,7 +935,7 @@ module TkComm 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 @@ class TkWindow<TkObject 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 @@ class TkWindow<TkObject 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 @@ class TkWindow<TkObject bindtags(bindtags().unshift(tag)) end end +TkWidget = TkWindow # freeze core modules #TclTkLib.freeze 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<TkLabel +class Tk::Button<Tk::Label TkCommandNames = ['button'.freeze].freeze WidgetClassName = 'Button'.freeze WidgetClassNames[WidgetClassName] = self @@ -26,4 +26,5 @@ class Tk::Button<TkLabel 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) diff --git a/ext/tk/lib/tk/canvas.rb b/ext/tk/lib/tk/canvas.rb index 93bf2c6340..4abc992027 100644 --- a/ext/tk/lib/tk/canvas.rb +++ b/ext/tk/lib/tk/canvas.rb @@ -572,7 +572,8 @@ class Tk::Canvas<TkWindow 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 @@ class TkcItem<TkObject ######################################## 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 diff --git a/ext/tk/lib/tk/checkbutton.rb b/ext/tk/lib/tk/checkbutton.rb index 40d502ebf7..b1186a87ed 100644 --- a/ext/tk/lib/tk/checkbutton.rb +++ b/ext/tk/lib/tk/checkbutton.rb @@ -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 @@ class Tk::CheckButton<TkRadioButton 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) diff --git a/ext/tk/lib/tk/composite.rb b/ext/tk/lib/tk/composite.rb index d3dad4d268..728b02f608 100644 --- a/ext/tk/lib/tk/composite.rb +++ b/ext/tk/lib/tk/composite.rb @@ -34,7 +34,8 @@ module TkComposite 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 @@ module TkComposite 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 @@ 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<TkLabel +class Tk::Entry<Tk::Label include X_Scrollable include TkValidation @@ -115,4 +115,5 @@ class Tk::Entry<TkLabel 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) diff --git a/ext/tk/lib/tk/event.rb b/ext/tk/lib/tk/event.rb index 70a1e38bbe..9884ca02e7 100644 --- a/ext/tk/lib/tk/event.rb +++ b/ext/tk/lib/tk/event.rb @@ -15,6 +15,8 @@ require 'tk' 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 @@ module TkEvent RESIZEREQ = 0x200000 CIRCREQ = 0x400000 - MWHEEL = 0x10000000 + MWHEEL = KEY ALL = 0xFFFFFFFF @@ -298,31 +300,54 @@ module TkEvent [ ?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 ] diff --git a/ext/tk/lib/tk/font.rb b/ext/tk/lib/tk/font.rb index ab58ac5762..444118e6ae 100644 --- a/ext/tk/lib/tk/font.rb +++ b/ext/tk/lib/tk/font.rb @@ -899,13 +899,15 @@ class TkFont 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 @@ class TkFont 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 @@ module TkFont::CoreMethods 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 @@ 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::Frame<TkWindow 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) diff --git a/ext/tk/lib/tk/label.rb b/ext/tk/lib/tk/label.rb index 9904953e81..80b3d778f1 100644 --- a/ext/tk/lib/tk/label.rb +++ b/ext/tk/lib/tk/label.rb @@ -17,4 +17,5 @@ class Tk::Label<TkWindow #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) diff --git a/ext/tk/lib/tk/labelframe.rb b/ext/tk/lib/tk/labelframe.rb index e1712889ce..995b5b7e72 100644 --- a/ext/tk/lib/tk/labelframe.rb +++ b/ext/tk/lib/tk/labelframe.rb @@ -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 @@ class Tk::LabelFrame<TkFrame 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) diff --git a/ext/tk/lib/tk/listbox.rb b/ext/tk/lib/tk/listbox.rb index 1937fd22ef..bb039ffb0e 100644 --- a/ext/tk/lib/tk/listbox.rb +++ b/ext/tk/lib/tk/listbox.rb @@ -278,4 +278,5 @@ class Tk::Listbox<TkTextWin =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) diff --git a/ext/tk/lib/tk/macpkg.rb b/ext/tk/lib/tk/macpkg.rb index 3975c5255c..67b0a4bb60 100644 --- a/ext/tk/lib/tk/macpkg.rb +++ b/ext/tk/lib/tk/macpkg.rb @@ -22,7 +22,8 @@ end module Tk::MacResource end -TkMacResource = Tk::MacResource +#TkMacResource = Tk::MacResource +Tk.__set_toplevel_aliases__(:Tk, Tk::MacResource, :TkMacResource) module Tk::MacResource extend Tk diff --git a/ext/tk/lib/tk/menu.rb b/ext/tk/lib/tk/menu.rb index 1a6c1bd06a..e44f0e3ff1 100644 --- a/ext/tk/lib/tk/menu.rb +++ b/ext/tk/lib/tk/menu.rb @@ -140,9 +140,9 @@ class Tk::Menu<TkWindow 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 @@ class Tk::Menu<TkWindow =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 @@ class Tk::MenuClone<TkMenu 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 @@ module TkSystemMenu 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 @@ class Tk::Menubutton<TkLabel 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 @@ class Tk::OptionMenubutton<TkMenubutton 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) diff --git a/ext/tk/lib/tk/menubar.rb b/ext/tk/lib/tk/menubar.rb index 392b6fbd4e..ef9da809b9 100644 --- a/ext/tk/lib/tk/menubar.rb +++ b/ext/tk/lib/tk/menubar.rb @@ -89,7 +89,7 @@ require 'tk/frame' require 'tk/composite' require 'tk/menuspec' -class TkMenubar<TkFrame +class TkMenubar<Tk::Frame include TkComposite include TkMenuSpec diff --git a/ext/tk/lib/tk/menuspec.rb b/ext/tk/lib/tk/menuspec.rb index 118a4f42b1..d9322c9986 100644 --- a/ext/tk/lib/tk/menuspec.rb +++ b/ext/tk/lib/tk/menuspec.rb @@ -61,8 +61,12 @@ module TkMenuSpec 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 @@ 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::Message<TkLabel +class Tk::Message<Tk::Label TkCommandNames = ['message'.freeze].freeze WidgetClassName = 'Message'.freeze WidgetClassNames[WidgetClassName] = self @@ -18,4 +18,5 @@ class Tk::Message<TkLabel 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) diff --git a/ext/tk/lib/tk/optiondb.rb b/ext/tk/lib/tk/optiondb.rb index a806f3971d..6a7708ac53 100644 --- a/ext/tk/lib/tk/optiondb.rb +++ b/ext/tk/lib/tk/optiondb.rb @@ -362,7 +362,7 @@ module TkOptionDB 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 diff --git a/ext/tk/lib/tk/panedwindow.rb b/ext/tk/lib/tk/panedwindow.rb index 7e818fc928..ba8a7e9743 100644 --- a/ext/tk/lib/tk/panedwindow.rb +++ b/ext/tk/lib/tk/panedwindow.rb @@ -231,5 +231,7 @@ class Tk::PanedWindow<TkWindow 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) diff --git a/ext/tk/lib/tk/radiobutton.rb b/ext/tk/lib/tk/radiobutton.rb index 15b29ccd26..1f864ec06b 100644 --- a/ext/tk/lib/tk/radiobutton.rb +++ b/ext/tk/lib/tk/radiobutton.rb @@ -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 @@ class Tk::RadioButton<TkButton 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) diff --git a/ext/tk/lib/tk/root.rb b/ext/tk/lib/tk/root.rb index a66c9fe454..02e546d86e 100644 --- a/ext/tk/lib/tk/root.rb +++ b/ext/tk/lib/tk/root.rb @@ -14,28 +14,7 @@ class Tk::Root<TkWindow 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 @@ class Tk::Root<TkWindow 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) diff --git a/ext/tk/lib/tk/scale.rb b/ext/tk/lib/tk/scale.rb index d9e88080cf..b97ed68072 100644 --- a/ext/tk/lib/tk/scale.rb +++ b/ext/tk/lib/tk/scale.rb @@ -85,4 +85,5 @@ class Tk::Scale<TkWindow 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) diff --git a/ext/tk/lib/tk/scrollbar.rb b/ext/tk/lib/tk/scrollbar.rb index dda7a96d87..66eadbd65f 100644 --- a/ext/tk/lib/tk/scrollbar.rb +++ b/ext/tk/lib/tk/scrollbar.rb @@ -105,10 +105,11 @@ class Tk::Scrollbar<TkWindow 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 @@ class Tk::XScrollbar<TkScrollbar 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 @@ class Tk::YScrollbar<TkScrollbar 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) diff --git a/ext/tk/lib/tk/scrollbox.rb b/ext/tk/lib/tk/scrollbox.rb index 6ee0f29f26..d20742a666 100644 --- a/ext/tk/lib/tk/scrollbox.rb +++ b/ext/tk/lib/tk/scrollbox.rb @@ -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 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<TkEntry +class Tk::Spinbox<Tk::Entry TkCommandNames = ['spinbox'.freeze].freeze WidgetClassName = 'Spinbox'.freeze WidgetClassNames[WidgetClassName] = self @@ -97,4 +97,5 @@ class Tk::Spinbox<TkEntry 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) diff --git a/ext/tk/lib/tk/text.rb b/ext/tk/lib/tk/text.rb index cc53f5dcad..8aad74ef34 100644 --- a/ext/tk/lib/tk/text.rb +++ b/ext/tk/lib/tk/text.rb @@ -73,9 +73,9 @@ class Tk::Text<TkTextWin 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 @@ class Tk::Text<TkTextWin 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 @@ class Tk::Text<TkTextWin # 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 @@ class Tk::Text<TkTextWin # 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 @@ class Tk::Text<TkTextWin # 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 @@ class Tk::Text<TkTextWin # 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 @@ class Tk::Text<TkTextWin # 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 @@ class Tk::Text<TkTextWin # 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 @@ class Tk::Text<TkTextWin # 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 @@ class Tk::Text<TkTextWin 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 @@ class Tk::Text<TkTextWin 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 @@ class Tk::Text<TkTextWin _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 @@ class Tk::Text<TkTextWin _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 @@ class Tk::Text<TkTextWin if ret == "" nil else - TkText::IndexString.new(ret) + Tk::Text::IndexString.new(ret) end end @@ -1271,7 +1271,7 @@ class Tk::Text<TkTextWin if ret == "" nil else - TkText::IndexString.new(ret) + Tk::Text::IndexString.new(ret) end end @@ -1460,10 +1460,10 @@ class Tk::Text<TkTextWin # 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 @@ class Tk::Text<TkTextWin 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 diff --git a/ext/tk/lib/tk/textimage.rb b/ext/tk/lib/tk/textimage.rb index ea2b7c6a36..d4c973213d 100644 --- a/ext/tk/lib/tk/textimage.rb +++ b/ext/tk/lib/tk/textimage.rb @@ -5,11 +5,11 @@ require 'tk' 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 @@ class TkTextImage<TkObject end def id - TkText::IndexString.new(@id) + Tk::Text::IndexString.new(@id) end def mark @path diff --git a/ext/tk/lib/tk/textmark.rb b/ext/tk/lib/tk/textmark.rb index 9f7ad751e5..6ce52b58d7 100644 --- a/ext/tk/lib/tk/textmark.rb +++ b/ext/tk/lib/tk/textmark.rb @@ -5,7 +5,7 @@ require 'tk' 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 @@ class TkTextMark<TkObject 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 @@ class TkTextMark<TkObject end def id - TkText::IndexString.new(@id) + Tk::Text::IndexString.new(@id) end def exist? @@ -49,15 +49,15 @@ class TkTextMark<TkObject 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 @@ class TkTextMark<TkObject 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 @@ class TkTextNamedMark<TkTextMark 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 diff --git a/ext/tk/lib/tk/texttag.rb b/ext/tk/lib/tk/texttag.rb index 731e6bebd6..8264d52938 100644 --- a/ext/tk/lib/tk/texttag.rb +++ b/ext/tk/lib/tk/texttag.rb @@ -7,7 +7,7 @@ require 'tk/tagfont' 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 @@ class TkTextTag<TkObject end def id - TkText::IndexString.new(@id) + Tk::Text::IndexString.new(@id) end def exist? @@ -60,11 +60,11 @@ class TkTextTag<TkObject 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 @@ class TkTextTag<TkObject 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 @@ class TkTextTag<TkObject 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 @@ class TkTextTag<TkObject 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 @@ class TkTextNamedTag<TkTextTag 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 diff --git a/ext/tk/lib/tk/textwindow.rb b/ext/tk/lib/tk/textwindow.rb index 6735f2585a..a577329358 100644 --- a/ext/tk/lib/tk/textwindow.rb +++ b/ext/tk/lib/tk/textwindow.rb @@ -5,11 +5,11 @@ require 'tk' 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 @@ class TkTextWindow<TkObject end def id - TkText::IndexString.new(_epath(@id)) + Tk::Text::IndexString.new(_epath(@id)) end def mark @path diff --git a/ext/tk/lib/tk/toplevel.rb b/ext/tk/lib/tk/toplevel.rb index 87229aaba9..2d99eda44c 100644 --- a/ext/tk/lib/tk/toplevel.rb +++ b/ext/tk/lib/tk/toplevel.rb @@ -258,4 +258,5 @@ class Tk::Toplevel<TkWindow 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) diff --git a/ext/tk/lib/tk/ttk_selector.rb b/ext/tk/lib/tk/ttk_selector.rb index 8960da95a2..f89b5c76be 100644 --- a/ext/tk/lib/tk/ttk_selector.rb +++ b/ext/tk/lib/tk/ttk_selector.rb @@ -1,55 +1,67 @@ # # ttk_selector # -module Ttk_Selector - @TTK_CLASS_NAMES = {} - - 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 +###################################### +# toplevel classes/modules +module Tk + @TOPLEVEL_ALIAS_TABLE[:Ttk] = { + :TkButton => '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 diff --git a/ext/tk/lib/tkextlib/blt/busy.rb b/ext/tk/lib/tkextlib/blt/busy.rb index 4726e466f4..2f807fcd9c 100644 --- a/ext/tk/lib/tkextlib/blt/busy.rb +++ b/ext/tk/lib/tkextlib/blt/busy.rb @@ -19,7 +19,7 @@ module Tk::BLT 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' diff --git a/ext/tk/lib/tkextlib/blt/eps.rb b/ext/tk/lib/tkextlib/blt/eps.rb index 586a42470c..0dba87a7cc 100644 --- a/ext/tk/lib/tkextlib/blt/eps.rb +++ b/ext/tk/lib/tkextlib/blt/eps.rb @@ -14,7 +14,7 @@ module Tk::BLT 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) + [ diff --git a/ext/tk/lib/tkextlib/blt/tile/button.rb b/ext/tk/lib/tkextlib/blt/tile/button.rb index dd715c8b98..2e0863cfbe 100644 --- a/ext/tk/lib/tkextlib/blt/tile/button.rb +++ b/ext/tk/lib/tkextlib/blt/tile/button.rb @@ -9,7 +9,7 @@ require 'tkextlib/blt/tile.rb' module Tk::BLT module Tile - class Button < TkButton + class Button < Tk::Button TkCommandNames = ['::blt::tile::button'.freeze].freeze end end diff --git a/ext/tk/lib/tkextlib/blt/tile/checkbutton.rb b/ext/tk/lib/tkextlib/blt/tile/checkbutton.rb index ad58999d86..da230b5925 100644 --- a/ext/tk/lib/tkextlib/blt/tile/checkbutton.rb +++ b/ext/tk/lib/tkextlib/blt/tile/checkbutton.rb @@ -9,7 +9,7 @@ require 'tkextlib/blt/tile.rb' module Tk::BLT module Tile - class CheckButton < TkCheckButton + class CheckButton < Tk::CheckButton TkCommandNames = ['::blt::tile::checkbutton'.freeze].freeze end Checkbutton = CheckButton diff --git a/ext/tk/lib/tkextlib/blt/tile/frame.rb b/ext/tk/lib/tkextlib/blt/tile/frame.rb index 10469fd35f..5434af4b72 100644 --- a/ext/tk/lib/tkextlib/blt/tile/frame.rb +++ b/ext/tk/lib/tkextlib/blt/tile/frame.rb @@ -9,7 +9,7 @@ require 'tkextlib/blt/tile.rb' module Tk::BLT module Tile - class Frame < TkFrame + class Frame < Tk::Frame TkCommandNames = ['::blt::tile::frame'.freeze].freeze end end diff --git a/ext/tk/lib/tkextlib/blt/tile/label.rb b/ext/tk/lib/tkextlib/blt/tile/label.rb index ec67babd58..f370c1403b 100644 --- a/ext/tk/lib/tkextlib/blt/tile/label.rb +++ b/ext/tk/lib/tkextlib/blt/tile/label.rb @@ -9,7 +9,7 @@ require 'tkextlib/blt/tile.rb' module Tk::BLT module Tile - class Label < TkLabel + class Label < Tk::Label TkCommandNames = ['::blt::tile::label'.freeze].freeze end end diff --git a/ext/tk/lib/tkextlib/blt/tile/radiobutton.rb b/ext/tk/lib/tkextlib/blt/tile/radiobutton.rb index 2316923b19..814f9a5cc4 100644 --- a/ext/tk/lib/tkextlib/blt/tile/radiobutton.rb +++ b/ext/tk/lib/tkextlib/blt/tile/radiobutton.rb @@ -9,7 +9,7 @@ require 'tkextlib/blt/tile.rb' module Tk::BLT module Tile - class RadioButton < TkRadioButton + class RadioButton < Tk::RadioButton TkCommandNames = ['::blt::tile::radiobutton'.freeze].freeze end Radiobutton = RadioButton diff --git a/ext/tk/lib/tkextlib/blt/tile/scrollbar.rb b/ext/tk/lib/tkextlib/blt/tile/scrollbar.rb index ba3bf316f0..2ae871d518 100644 --- a/ext/tk/lib/tkextlib/blt/tile/scrollbar.rb +++ b/ext/tk/lib/tkextlib/blt/tile/scrollbar.rb @@ -9,7 +9,7 @@ require 'tkextlib/blt/tile.rb' module Tk::BLT module Tile - class Scrollbar < TkScrollbar + class Scrollbar < Tk::Scrollbar TkCommandNames = ['::blt::tile::scrollbar'.freeze].freeze end end diff --git a/ext/tk/lib/tkextlib/blt/tile/toplevel.rb b/ext/tk/lib/tkextlib/blt/tile/toplevel.rb index 6cc2c91415..76d5f86b1b 100644 --- a/ext/tk/lib/tkextlib/blt/tile/toplevel.rb +++ b/ext/tk/lib/tkextlib/blt/tile/toplevel.rb @@ -9,7 +9,7 @@ require 'tkextlib/blt/tile.rb' module Tk::BLT module Tile - class Toplevel < TkToplevel + class Toplevel < Tk::Toplevel TkCommandNames = ['::blt::tile::toplevel'.freeze].freeze end end diff --git a/ext/tk/lib/tkextlib/bwidget/button.rb b/ext/tk/lib/tkextlib/bwidget/button.rb index 4a9d4a7948..8f3087d098 100644 --- a/ext/tk/lib/tkextlib/bwidget/button.rb +++ b/ext/tk/lib/tkextlib/bwidget/button.rb @@ -9,7 +9,7 @@ require 'tkextlib/bwidget.rb' module Tk module BWidget - class Button < TkButton + class Button < Tk::Button end end end diff --git a/ext/tk/lib/tkextlib/bwidget/buttonbox.rb b/ext/tk/lib/tkextlib/bwidget/buttonbox.rb index ef999239f9..a8f23e8749 100644 --- a/ext/tk/lib/tkextlib/bwidget/buttonbox.rb +++ b/ext/tk/lib/tkextlib/bwidget/buttonbox.rb @@ -31,7 +31,7 @@ class Tk::BWidget::ButtonBox 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 @@ class Tk::BWidget::ButtonBox 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)) diff --git a/ext/tk/lib/tkextlib/bwidget/dialog.rb b/ext/tk/lib/tkextlib/bwidget/dialog.rb index 2790d88d24..ae5f0238a3 100644 --- a/ext/tk/lib/tkextlib/bwidget/dialog.rb +++ b/ext/tk/lib/tkextlib/bwidget/dialog.rb @@ -103,7 +103,7 @@ class Tk::BWidget::Dialog 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) diff --git a/ext/tk/lib/tkextlib/bwidget/entry.rb b/ext/tk/lib/tkextlib/bwidget/entry.rb index aafb4aa7ff..a56890f4e3 100644 --- a/ext/tk/lib/tkextlib/bwidget/entry.rb +++ b/ext/tk/lib/tkextlib/bwidget/entry.rb @@ -9,7 +9,7 @@ require 'tkextlib/bwidget.rb' module Tk module BWidget - class Entry < TkEntry + class Entry < Tk::Entry end end end diff --git a/ext/tk/lib/tkextlib/bwidget/label.rb b/ext/tk/lib/tkextlib/bwidget/label.rb index ce10ecaf8b..88a504aa50 100644 --- a/ext/tk/lib/tkextlib/bwidget/label.rb +++ b/ext/tk/lib/tkextlib/bwidget/label.rb @@ -9,7 +9,7 @@ require 'tkextlib/bwidget.rb' module Tk module BWidget - class Label < TkLabel + class Label < Tk::Label end end end diff --git a/ext/tk/lib/tkextlib/bwidget/labelentry.rb b/ext/tk/lib/tkextlib/bwidget/labelentry.rb index 931feb9b48..95b40946a6 100644 --- a/ext/tk/lib/tkextlib/bwidget/labelentry.rb +++ b/ext/tk/lib/tkextlib/bwidget/labelentry.rb @@ -11,7 +11,7 @@ require 'tkextlib/bwidget/entry' module Tk module BWidget - class LabelEntry < TkEntry + class LabelEntry < Tk::Entry end end end diff --git a/ext/tk/lib/tkextlib/bwidget/spinbox.rb b/ext/tk/lib/tkextlib/bwidget/spinbox.rb index ca4c046e5c..48358baa5c 100644 --- a/ext/tk/lib/tkextlib/bwidget/spinbox.rb +++ b/ext/tk/lib/tkextlib/bwidget/spinbox.rb @@ -10,7 +10,7 @@ require 'tkextlib/bwidget/entry' module Tk module BWidget - class SpinBox < TkEntry + class SpinBox < Tk::Entry end end end diff --git a/ext/tk/lib/tkextlib/itk/incr_tk.rb b/ext/tk/lib/tkextlib/itk/incr_tk.rb index 0626536e36..c7b4e40af8 100644 --- a/ext/tk/lib/tkextlib/itk/incr_tk.rb +++ b/ext/tk/lib/tkextlib/itk/incr_tk.rb @@ -156,7 +156,7 @@ module Tk 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) diff --git a/ext/tk/lib/tkextlib/iwidgets/checkbox.rb b/ext/tk/lib/tkextlib/iwidgets/checkbox.rb index 46ca389db2..7d2b41f806 100644 --- a/ext/tk/lib/tkextlib/iwidgets/checkbox.rb +++ b/ext/tk/lib/tkextlib/iwidgets/checkbox.rb @@ -85,12 +85,24 @@ class Tk::Iwidgets::Checkbox 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 diff --git a/ext/tk/lib/tkextlib/iwidgets/hierarchy.rb b/ext/tk/lib/tkextlib/iwidgets/hierarchy.rb index 4cc6aeecbd..028f6ac0e7 100644 --- a/ext/tk/lib/tkextlib/iwidgets/hierarchy.rb +++ b/ext/tk/lib/tkextlib/iwidgets/hierarchy.rb @@ -207,7 +207,7 @@ class Tk::Iwidgets::Hierarchy 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))) diff --git a/ext/tk/lib/tkextlib/iwidgets/notebook.rb b/ext/tk/lib/tkextlib/iwidgets/notebook.rb index 0f9d713ea1..268452afec 100644 --- a/ext/tk/lib/tkextlib/iwidgets/notebook.rb +++ b/ext/tk/lib/tkextlib/iwidgets/notebook.rb @@ -146,7 +146,12 @@ class Tk::Iwidgets::Notebook 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 @@ class Tk::Iwidgets::Notebook 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 diff --git a/ext/tk/lib/tkextlib/iwidgets/radiobox.rb b/ext/tk/lib/tkextlib/iwidgets/radiobox.rb index 1a2821bd6a..cfcbca1aad 100644 --- a/ext/tk/lib/tkextlib/iwidgets/radiobox.rb +++ b/ext/tk/lib/tkextlib/iwidgets/radiobox.rb @@ -85,10 +85,13 @@ class Tk::Iwidgets::Radiobox 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) diff --git a/ext/tk/lib/tkextlib/iwidgets/selectionbox.rb b/ext/tk/lib/tkextlib/iwidgets/selectionbox.rb index bb81fcca5e..bf9b5ec30a 100644 --- a/ext/tk/lib/tkextlib/iwidgets/selectionbox.rb +++ b/ext/tk/lib/tkextlib/iwidgets/selectionbox.rb @@ -59,7 +59,7 @@ class Tk::Iwidgets::Selectionbox self end - # based on TkListbox ( and TkTextWin ) + # based on Tk::Listbox ( and TkTextWin ) def curselection list(tk_send_without_enc('curselection')) end diff --git a/ext/tk/lib/tkextlib/iwidgets/selectiondialog.rb b/ext/tk/lib/tkextlib/iwidgets/selectiondialog.rb index ab790e97a6..f772ecf8c2 100644 --- a/ext/tk/lib/tkextlib/iwidgets/selectiondialog.rb +++ b/ext/tk/lib/tkextlib/iwidgets/selectiondialog.rb @@ -49,7 +49,7 @@ class Tk::Iwidgets::Selectiondialog self end - # based on TkListbox ( and TkTextWin ) + # based on Tk::Listbox ( and TkTextWin ) def curselection list(tk_send_without_enc('curselection')) end diff --git a/ext/tk/lib/tkextlib/iwidgets/tabnotebook.rb b/ext/tk/lib/tkextlib/iwidgets/tabnotebook.rb index 0d9715f87b..382604102e 100644 --- a/ext/tk/lib/tkextlib/iwidgets/tabnotebook.rb +++ b/ext/tk/lib/tkextlib/iwidgets/tabnotebook.rb @@ -116,6 +116,11 @@ class Tk::Iwidgets::Tabnotebook 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 @@ class Tk::Iwidgets::Tabnotebook 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 @@ class Tk::Iwidgets::Tabnotebook 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 diff --git a/ext/tk/lib/tkextlib/iwidgets/tabset.rb b/ext/tk/lib/tkextlib/iwidgets/tabset.rb index 54e56d0514..618260e8e3 100644 --- a/ext/tk/lib/tkextlib/iwidgets/tabset.rb +++ b/ext/tk/lib/tkextlib/iwidgets/tabset.rb @@ -96,4 +96,48 @@ class Tk::Iwidgets::Tabset 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 diff --git a/ext/tk/lib/tkextlib/tcllib/autoscroll.rb b/ext/tk/lib/tkextlib/tcllib/autoscroll.rb index 6940a9174c..7db3c2e2b7 100644 --- a/ext/tk/lib/tkextlib/tcllib/autoscroll.rb +++ b/ext/tk/lib/tkextlib/tcllib/autoscroll.rb @@ -108,7 +108,7 @@ module Tk end end -class TkScrollbar +class Tk::Scrollbar def autoscroll # Arranges for the already existing scrollbar to be mapped # and unmapped as needed. diff --git a/ext/tk/lib/tkextlib/tcllib/ctext.rb b/ext/tk/lib/tkextlib/tcllib/ctext.rb index 70a45dd8e7..9014037f3d 100644 --- a/ext/tk/lib/tkextlib/tcllib/ctext.rb +++ b/ext/tk/lib/tkextlib/tcllib/ctext.rb @@ -15,7 +15,7 @@ TkPackage.require('ctext') module Tk module Tcllib - class CText < TkText + class CText < Tk::Text PACKAGE_NAME = 'ctext'.freeze def self.package_name PACKAGE_NAME diff --git a/ext/tk/lib/tkextlib/tcllib/datefield.rb b/ext/tk/lib/tkextlib/tcllib/datefield.rb index bd84488101..2244dd7a9a 100644 --- a/ext/tk/lib/tkextlib/tcllib/datefield.rb +++ b/ext/tk/lib/tkextlib/tcllib/datefield.rb @@ -24,7 +24,7 @@ TkPackage.require('datefield') module Tk module Tcllib - class Datefield < TkEntry + class Datefield < Tk::Entry PACKAGE_NAME = 'datefield'.freeze def self.package_name PACKAGE_NAME diff --git a/ext/tk/lib/tkextlib/tcllib/ip_entry.rb b/ext/tk/lib/tkextlib/tcllib/ip_entry.rb index 8c9e0bd683..c4b8240c04 100644 --- a/ext/tk/lib/tkextlib/tcllib/ip_entry.rb +++ b/ext/tk/lib/tkextlib/tcllib/ip_entry.rb @@ -18,7 +18,7 @@ TkPackage.require('ipentry') module Tk module Tcllib - class IP_Entry < TkEntry + class IP_Entry < Tk::Entry PACKAGE_NAME = 'ipentry'.freeze def self.package_name PACKAGE_NAME diff --git a/ext/tk/lib/tkextlib/tcllib/plotchart.rb b/ext/tk/lib/tkextlib/tcllib/plotchart.rb index f5f344ceb3..cde42c8a0a 100644 --- a/ext/tk/lib/tkextlib/tcllib/plotchart.rb +++ b/ext/tk/lib/tkextlib/tcllib/plotchart.rb @@ -225,7 +225,7 @@ module Tk::Tcllib::Plotchart end ############################ - class XYPlot < TkCanvas + class XYPlot < Tk::Canvas include ChartMethod TkCommandNames = [ @@ -247,7 +247,7 @@ module Tk::Tcllib::Plotchart @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 @@ module Tk::Tcllib::Plotchart end ############################ - class PolarPlot < TkCanvas + class PolarPlot < Tk::Canvas include ChartMethod TkCommandNames = [ @@ -356,7 +356,7 @@ module Tk::Tcllib::Plotchart @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 @@ module Tk::Tcllib::Plotchart Polarplot = PolarPlot ############################ - class IsometricPlot < TkCanvas + class IsometricPlot < Tk::Canvas include ChartMethod TkCommandNames = [ @@ -430,7 +430,7 @@ module Tk::Tcllib::Plotchart @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 @@ module Tk::Tcllib::Plotchart Isometricplot = IsometricPlot ############################ - class Plot3D < TkCanvas + class Plot3D < Tk::Canvas include ChartMethod TkCommandNames = [ @@ -500,7 +500,7 @@ module Tk::Tcllib::Plotchart @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 @@ module Tk::Tcllib::Plotchart end ############################ - class Piechart < TkCanvas + class Piechart < Tk::Canvas include ChartMethod TkCommandNames = [ @@ -566,7 +566,7 @@ module Tk::Tcllib::Plotchart ].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 @@ module Tk::Tcllib::Plotchart end ############################ - class Barchart < TkCanvas + class Barchart < Tk::Canvas include ChartMethod TkCommandNames = [ @@ -626,7 +626,7 @@ module Tk::Tcllib::Plotchart @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 @@ module Tk::Tcllib::Plotchart end ############################ - class Timechart < TkCanvas + class Timechart < Tk::Canvas include ChartMethod TkCommandNames = [ @@ -699,7 +699,7 @@ module Tk::Tcllib::Plotchart @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 @@ module Tk::Tcllib::Plotchart end ############################ - class Gnattchart < TkCanvas + class Gnattchart < Tk::Canvas include ChartMethod TkCommandNames = [ @@ -772,7 +772,7 @@ module Tk::Tcllib::Plotchart @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 diff --git a/ext/tk/lib/tkextlib/tile.rb b/ext/tk/lib/tkextlib/tile.rb index 7ed33b03e8..b527935a60 100644 --- a/ext/tk/lib/tkextlib/tile.rb +++ b/ext/tk/lib/tkextlib/tile.rb @@ -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 @@ module Tk 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' diff --git a/ext/tk/lib/tkextlib/tile/sizegrip.rb b/ext/tk/lib/tkextlib/tile/sizegrip.rb index ea796583b0..c5068919a4 100644 --- a/ext/tk/lib/tkextlib/tile/sizegrip.rb +++ b/ext/tk/lib/tkextlib/tile/sizegrip.rb @@ -9,9 +9,13 @@ module Tk 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 diff --git a/ext/tk/lib/tkextlib/tile/style.rb b/ext/tk/lib/tkextlib/tile/style.rb index b319d24d54..e01011cb21 100644 --- a/ext/tk/lib/tkextlib/tile/style.rb +++ b/ext/tk/lib/tkextlib/tile/style.rb @@ -52,11 +52,29 @@ class << Tk::Tile::Style 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, @@ -92,16 +110,20 @@ class << Tk::Tile::Style 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 @@ class << Tk::Tile::Style end def theme_use(name) + name = name.to_s tk_call(TkCommandNames[0], 'theme', 'use', name) + name end end diff --git a/ext/tk/lib/tkextlib/tile/tbutton.rb b/ext/tk/lib/tkextlib/tile/tbutton.rb index 1142a27100..5d7db10fe9 100644 --- a/ext/tk/lib/tkextlib/tile/tbutton.rb +++ b/ext/tk/lib/tkextlib/tile/tbutton.rb @@ -7,13 +7,16 @@ require 'tkextlib/tile.rb' 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 diff --git a/ext/tk/lib/tkextlib/tile/tcheckbutton.rb b/ext/tk/lib/tkextlib/tile/tcheckbutton.rb index fce799683d..172225fcec 100644 --- a/ext/tk/lib/tkextlib/tile/tcheckbutton.rb +++ b/ext/tk/lib/tkextlib/tile/tcheckbutton.rb @@ -7,7 +7,7 @@ require 'tkextlib/tile.rb' module Tk module Tile - class TCheckButton < TkCheckButton + class TCheckButton < Tk::CheckButton end TCheckbutton = TCheckButton CheckButton = TCheckButton @@ -15,7 +15,11 @@ module Tk 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 diff --git a/ext/tk/lib/tkextlib/tile/tcombobox.rb b/ext/tk/lib/tkextlib/tile/tcombobox.rb index e8e042fbd9..b64372f1c9 100644 --- a/ext/tk/lib/tkextlib/tile/tcombobox.rb +++ b/ext/tk/lib/tkextlib/tile/tcombobox.rb @@ -13,6 +13,9 @@ module Tk end end +Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Combobox, :TkCombobox) + + class Tk::Tile::TCombobox < Tk::Tile::TEntry include Tk::Tile::TileWidget diff --git a/ext/tk/lib/tkextlib/tile/tentry.rb b/ext/tk/lib/tkextlib/tile/tentry.rb index 4d57ce7756..4b221fcb88 100644 --- a/ext/tk/lib/tkextlib/tile/tentry.rb +++ b/ext/tk/lib/tkextlib/tile/tentry.rb @@ -7,13 +7,16 @@ require 'tkextlib/tile.rb' 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 diff --git a/ext/tk/lib/tkextlib/tile/tframe.rb b/ext/tk/lib/tkextlib/tile/tframe.rb index 691c9c42af..3b5f98bb6e 100644 --- a/ext/tk/lib/tkextlib/tile/tframe.rb +++ b/ext/tk/lib/tkextlib/tile/tframe.rb @@ -7,13 +7,16 @@ require 'tkextlib/tile.rb' 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 diff --git a/ext/tk/lib/tkextlib/tile/tlabel.rb b/ext/tk/lib/tkextlib/tile/tlabel.rb index 4111d1906a..7d074d3842 100644 --- a/ext/tk/lib/tkextlib/tile/tlabel.rb +++ b/ext/tk/lib/tkextlib/tile/tlabel.rb @@ -7,13 +7,16 @@ require 'tkextlib/tile.rb' 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 diff --git a/ext/tk/lib/tkextlib/tile/tlabelframe.rb b/ext/tk/lib/tkextlib/tile/tlabelframe.rb index 8981232b25..cff66d8658 100644 --- a/ext/tk/lib/tkextlib/tile/tlabelframe.rb +++ b/ext/tk/lib/tkextlib/tile/tlabelframe.rb @@ -9,10 +9,16 @@ module Tk 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 diff --git a/ext/tk/lib/tkextlib/tile/tmenubutton.rb b/ext/tk/lib/tkextlib/tile/tmenubutton.rb index 4b81fa1c81..7c6ab28e52 100644 --- a/ext/tk/lib/tkextlib/tile/tmenubutton.rb +++ b/ext/tk/lib/tkextlib/tile/tmenubutton.rb @@ -7,13 +7,19 @@ require 'tkextlib/tile.rb' 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 diff --git a/ext/tk/lib/tkextlib/tile/tnotebook.rb b/ext/tk/lib/tkextlib/tile/tnotebook.rb index a928e64b61..76f225c579 100644 --- a/ext/tk/lib/tkextlib/tile/tnotebook.rb +++ b/ext/tk/lib/tkextlib/tile/tnotebook.rb @@ -13,6 +13,9 @@ module Tk end end +Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Notebook, :TkNotebook) + + class Tk::Tile::TNotebook < TkWindow ################################ include TkItemConfigMethod diff --git a/ext/tk/lib/tkextlib/tile/tpaned.rb b/ext/tk/lib/tkextlib/tile/tpaned.rb index 2a2a25ea59..342b54d253 100644 --- a/ext/tk/lib/tkextlib/tile/tpaned.rb +++ b/ext/tk/lib/tkextlib/tile/tpaned.rb @@ -13,6 +13,10 @@ module Tk end end +Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Panedwindow, + :TkPanedwindow, :TkPanedWindow) + + class Tk::Tile::TPaned < TkWindow include Tk::Tile::TileWidget diff --git a/ext/tk/lib/tkextlib/tile/tprogressbar.rb b/ext/tk/lib/tkextlib/tile/tprogressbar.rb index 36c1c75c23..f786d370dd 100644 --- a/ext/tk/lib/tkextlib/tile/tprogressbar.rb +++ b/ext/tk/lib/tkextlib/tile/tprogressbar.rb @@ -13,6 +13,9 @@ module Tk end end +Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Progressbar, :TkProgressbar) + + class Tk::Tile::TProgressbar include Tk::Tile::TileWidget diff --git a/ext/tk/lib/tkextlib/tile/tradiobutton.rb b/ext/tk/lib/tkextlib/tile/tradiobutton.rb index e2f614cb97..d653a6d256 100644 --- a/ext/tk/lib/tkextlib/tile/tradiobutton.rb +++ b/ext/tk/lib/tkextlib/tile/tradiobutton.rb @@ -7,7 +7,7 @@ require 'tkextlib/tile.rb' module Tk module Tile - class TRadioButton < TkRadioButton + class TRadioButton < Tk::RadioButton end TRadiobutton = TRadioButton RadioButton = TRadioButton @@ -15,7 +15,11 @@ module Tk 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 diff --git a/ext/tk/lib/tkextlib/tile/treeview.rb b/ext/tk/lib/tkextlib/tile/treeview.rb index 68e478896c..36496ee0b9 100644 --- a/ext/tk/lib/tkextlib/tile/treeview.rb +++ b/ext/tk/lib/tkextlib/tile/treeview.rb @@ -12,6 +12,9 @@ module Tk end end +Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Treeview, :TkTreeview) + + module Tk::Tile::TreeviewConfig include TkItemConfigMethod diff --git a/ext/tk/lib/tkextlib/tile/tscale.rb b/ext/tk/lib/tkextlib/tile/tscale.rb index 7ec72e3515..2c46fd9bd4 100644 --- a/ext/tk/lib/tkextlib/tile/tscale.rb +++ b/ext/tk/lib/tkextlib/tile/tscale.rb @@ -7,7 +7,7 @@ require 'tkextlib/tile.rb' module Tk module Tile - class TScale < TkScale + class TScale < Tk::Scale end Scale = TScale @@ -17,7 +17,10 @@ module Tk 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 diff --git a/ext/tk/lib/tkextlib/tile/tscrollbar.rb b/ext/tk/lib/tkextlib/tile/tscrollbar.rb index 10b84e84a0..163b8f4713 100644 --- a/ext/tk/lib/tkextlib/tile/tscrollbar.rb +++ b/ext/tk/lib/tkextlib/tile/tscrollbar.rb @@ -7,13 +7,16 @@ require 'tkextlib/tile.rb' 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 @@ class Tk::Tile::YScrollbar < Tk::Tile::TScrollbar private :create_self end +Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::XScrollbar, :TkXScrollbar) +Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::YScrollbar, :TkYScrollbar) diff --git a/ext/tk/lib/tkextlib/tile/tseparator.rb b/ext/tk/lib/tkextlib/tile/tseparator.rb index ca731d4e5b..30fae2c525 100644 --- a/ext/tk/lib/tkextlib/tile/tseparator.rb +++ b/ext/tk/lib/tkextlib/tile/tseparator.rb @@ -13,6 +13,9 @@ module Tk end end +Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Separator, :TkSeparator) + + class Tk::Tile::TSeparator < TkWindow include Tk::Tile::TileWidget diff --git a/ext/tk/lib/tkextlib/tktrans/tktrans.rb b/ext/tk/lib/tkextlib/tktrans/tktrans.rb index 665c57af0c..e051c09211 100644 --- a/ext/tk/lib/tkextlib/tktrans/tktrans.rb +++ b/ext/tk/lib/tkextlib/tktrans/tktrans.rb @@ -39,7 +39,7 @@ class TkWindow end end -class TkRoot +class Tk::Root undef tktrans_set_image, tktrans_get_image def tktrans_set_image(img) @@ -51,7 +51,7 @@ class TkRoot end end -class TkToplevel +class Tk::Toplevel undef tktrans_set_image, tktrans_get_image def tktrans_set_image(img) diff --git a/ext/tk/lib/tkextlib/vu/spinbox.rb b/ext/tk/lib/tkextlib/vu/spinbox.rb index b6499645a3..a7e40ea319 100644 --- a/ext/tk/lib/tkextlib/vu/spinbox.rb +++ b/ext/tk/lib/tkextlib/vu/spinbox.rb @@ -17,6 +17,6 @@ end module Tk module Vu - Spinbox = TkSpinbox + Spinbox = Tk::Spinbox end end diff --git a/ext/tk/sample/tkextlib/tile/toolbutton.tcl b/ext/tk/sample/tkextlib/tile/toolbutton.tcl index 4e08034e31..2656fff6d8 100644 --- a/ext/tk/sample/tkextlib/tile/toolbutton.tcl +++ b/ext/tk/sample/tkextlib/tile/toolbutton.tcl @@ -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 @@ style theme settings "step" { # 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 @@ style theme settings "step" { # 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 @@ style theme settings "step" { # 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 @@ style theme settings "step" { # 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 @@ style theme settings "blue" { # 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 @@ style theme settings "blue" { # ... 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 |