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.rb | 19 +- 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 +- ext/tk/lib/tkextlib/blt/busy.rb | 2 +- ext/tk/lib/tkextlib/blt/eps.rb | 2 +- ext/tk/lib/tkextlib/blt/tile/button.rb | 2 +- ext/tk/lib/tkextlib/blt/tile/checkbutton.rb | 2 +- ext/tk/lib/tkextlib/blt/tile/frame.rb | 2 +- ext/tk/lib/tkextlib/blt/tile/label.rb | 2 +- ext/tk/lib/tkextlib/blt/tile/radiobutton.rb | 2 +- ext/tk/lib/tkextlib/blt/tile/scrollbar.rb | 2 +- ext/tk/lib/tkextlib/blt/tile/toplevel.rb | 2 +- ext/tk/lib/tkextlib/bwidget/button.rb | 2 +- ext/tk/lib/tkextlib/bwidget/buttonbox.rb | 4 +- ext/tk/lib/tkextlib/bwidget/dialog.rb | 2 +- ext/tk/lib/tkextlib/bwidget/entry.rb | 2 +- ext/tk/lib/tkextlib/bwidget/label.rb | 2 +- ext/tk/lib/tkextlib/bwidget/labelentry.rb | 2 +- ext/tk/lib/tkextlib/bwidget/spinbox.rb | 2 +- ext/tk/lib/tkextlib/itk/incr_tk.rb | 2 +- ext/tk/lib/tkextlib/iwidgets/checkbox.rb | 16 +- ext/tk/lib/tkextlib/iwidgets/hierarchy.rb | 2 +- ext/tk/lib/tkextlib/iwidgets/notebook.rb | 11 +- ext/tk/lib/tkextlib/iwidgets/radiobox.rb | 11 +- ext/tk/lib/tkextlib/iwidgets/selectionbox.rb | 2 +- ext/tk/lib/tkextlib/iwidgets/selectiondialog.rb | 2 +- ext/tk/lib/tkextlib/iwidgets/tabnotebook.rb | 16 +- ext/tk/lib/tkextlib/iwidgets/tabset.rb | 44 +++ ext/tk/lib/tkextlib/tcllib/autoscroll.rb | 2 +- ext/tk/lib/tkextlib/tcllib/ctext.rb | 2 +- ext/tk/lib/tkextlib/tcllib/datefield.rb | 2 +- ext/tk/lib/tkextlib/tcllib/ip_entry.rb | 2 +- ext/tk/lib/tkextlib/tcllib/plotchart.rb | 32 +- ext/tk/lib/tkextlib/tile.rb | 4 + ext/tk/lib/tkextlib/tile/sizegrip.rb | 4 + ext/tk/lib/tkextlib/tile/style.rb | 28 +- ext/tk/lib/tkextlib/tile/tbutton.rb | 7 +- ext/tk/lib/tkextlib/tile/tcheckbutton.rb | 8 +- ext/tk/lib/tkextlib/tile/tcombobox.rb | 3 + ext/tk/lib/tkextlib/tile/tentry.rb | 7 +- ext/tk/lib/tkextlib/tile/tframe.rb | 7 +- ext/tk/lib/tkextlib/tile/tlabel.rb | 7 +- ext/tk/lib/tkextlib/tile/tlabelframe.rb | 8 +- ext/tk/lib/tkextlib/tile/tmenubutton.rb | 12 +- ext/tk/lib/tkextlib/tile/tnotebook.rb | 3 + ext/tk/lib/tkextlib/tile/tpaned.rb | 4 + ext/tk/lib/tkextlib/tile/tprogressbar.rb | 3 + ext/tk/lib/tkextlib/tile/tradiobutton.rb | 8 +- ext/tk/lib/tkextlib/tile/treeview.rb | 3 + ext/tk/lib/tkextlib/tile/tscale.rb | 7 +- ext/tk/lib/tkextlib/tile/tscrollbar.rb | 9 +- ext/tk/lib/tkextlib/tile/tseparator.rb | 3 + ext/tk/lib/tkextlib/tktrans/tktrans.rb | 4 +- ext/tk/lib/tkextlib/vu/spinbox.rb | 2 +- ext/tk/sample/tkextlib/tile/toolbutton.tcl | 33 +- 87 files changed, 821 insertions(+), 463 deletions(-) (limited to 'ext') 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 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' + 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 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 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 -- cgit v1.2.3