diff options
Diffstat (limited to 'ext/tk/lib/tk/autoload.rb')
-rw-r--r-- | ext/tk/lib/tk/autoload.rb | 763 |
1 files changed, 0 insertions, 763 deletions
diff --git a/ext/tk/lib/tk/autoload.rb b/ext/tk/lib/tk/autoload.rb deleted file mode 100644 index ef82c8944c..0000000000 --- a/ext/tk/lib/tk/autoload.rb +++ /dev/null @@ -1,763 +0,0 @@ -# frozen_string_literal: false -# -# autoload -# -############################################ -# geometry manager -module Tk - autoload :Grid, 'tk/grid' - def Grid(*args); TkGrid.configure(*args); end - - autoload :Pack, 'tk/pack' - def Pack(*args); TkPack.configure(*args); end - - autoload :Place, 'tk/place' - def Place(*args); TkPlace.configure(*args); end -end - -autoload :TkGrid, 'tk/grid' -def TkGrid(*args); TkGrid.configure(*args); end - -autoload :TkPack, 'tk/pack' -def TkPack(*args); TkPack.configure(*args); end - -autoload :TkPlace, 'tk/place' -def TkPlace(*args); TkPlace.configure(*args); end - - -############################################ -# classes on Tk module -module Tk - autoload :Busy, 'tk/busy' - - autoload :Button, 'tk/button' - - autoload :Canvas, 'tk/canvas' - - autoload :CheckButton, 'tk/checkbutton' - autoload :Checkbutton, 'tk/checkbutton' - - autoload :Entry, 'tk/entry' - - autoload :Frame, 'tk/frame' - - autoload :Label, 'tk/label' - - autoload :LabelFrame, 'tk/labelframe' - autoload :Labelframe, 'tk/labelframe' - - autoload :Listbox, 'tk/listbox' - - 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' - - autoload :PanedWindow, 'tk/panedwindow' - autoload :Panedwindow, 'tk/panedwindow' - - autoload :RadioButton, 'tk/radiobutton' - autoload :Radiobutton, 'tk/radiobutton' - - autoload :Root, 'tk/root' - - autoload :Scale, 'tk/scale' - - autoload :Scrollbar, 'tk/scrollbar' - autoload :XScrollbar, 'tk/scrollbar' - autoload :YScrollbar, 'tk/scrollbar' - - autoload :Spinbox, 'tk/spinbox' - - autoload :Text, 'tk/text' - - autoload :Toplevel, 'tk/toplevel' -end - - -############################################ -# sub-module of Tk -module Tk - autoload :Clock, 'tk/clock' - - autoload :OptionObj, 'tk/optionobj' - - autoload :X_Scrollable, 'tk/scrollable' - autoload :Y_Scrollable, 'tk/scrollable' - autoload :Scrollable, 'tk/scrollable' - - autoload :Fontchooser, 'tk/fontchooser' - - autoload :Wm, 'tk/wm' - autoload :Wm_for_General, 'tk/wm' - - autoload :MacResource, 'tk/macpkg' - - autoload :WinDDE, 'tk/winpkg' - autoload :WinRegistry, 'tk/winpkg' - - autoload :ValidateConfigure, 'tk/validation' - autoload :ItemValidateConfigure, 'tk/validation' - - autoload :EncodedString, 'tk/encodedstr' - def Tk.EncodedString(str, enc = nil); Tk::EncodedString.new(str, enc); end - - autoload :BinaryString, 'tk/encodedstr' - def Tk.BinaryString(str); Tk::BinaryString.new(str); end - - autoload :UTF8_String, 'tk/encodedstr' - def Tk.UTF8_String(str); Tk::UTF8_String.new(str); end - -end - - -############################################ -# toplevel classes/modules (fixed) -autoload :TkBgError, 'tk/bgerror' - -autoload :TkBindTag, 'tk/bindtag' -autoload :TkBindTagAll, 'tk/bindtag' -autoload :TkDatabaseClass, 'tk/bindtag' - -autoload :TkConsole, 'tk/console' - -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' - -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' - -autoload :TkClipboard, 'tk/clipboard' - -autoload :TkComposite, 'tk/composite' - -autoload :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' - -autoload :TkEvent, 'tk/event' - -autoload :TkFont, 'tk/font' -autoload :TkNamedFont, 'tk/font' - -autoload :TkImage, 'tk/image' -autoload :TkBitmapImage, 'tk/image' -autoload :TkPhotoImage, 'tk/image' - -autoload :TkItemConfigMethod, 'tk/itemconfig' - -autoload :TkTreatItemFont, 'tk/itemfont' - -autoload :TkKinput, 'tk/kinput' - -autoload :TkSystemMenu, 'tk/menu' - -autoload :TkMenubar, 'tk/menubar' - -autoload :TkMenuSpec, 'tk/menuspec' - -autoload :TkManageFocus, 'tk/mngfocus' - -autoload :TkMsgCatalog, 'tk/msgcat' -autoload :TkMsgCat, 'tk/msgcat' - -autoload :TkNamespace, 'tk/namespace' - -autoload :TkOptionDB, 'tk/optiondb' -autoload :TkOption, 'tk/optiondb' -autoload :TkResourceDB, 'tk/optiondb' - -autoload :TkPackage, 'tk/package' - -autoload :TkPalette, 'tk/palette' - -autoload :TkRoot, 'tk/root' - -autoload :TkScrollbox, 'tk/scrollbox' - -autoload :TkSelection, 'tk/selection' - -autoload :TkTreatTagFont, 'tk/tagfont' - -autoload :TkTextImage, 'tk/textimage' -autoload :TktImage, 'tk/textimage' - -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' - -autoload :TkTextTag, 'tk/texttag' -autoload :TkTextNamedTag, 'tk/texttag' -autoload :TkTextTagSel, 'tk/texttag' -autoload :TktTag, 'tk/texttag' -autoload :TktNamedTag, 'tk/texttag' -autoload :TktTagSel, 'tk/texttag' - -autoload :TkTextWindow, 'tk/textwindow' -autoload :TktWindow, 'tk/textwindow' - -autoload :TkAfter, 'tk/timer' -autoload :TkTimer, 'tk/timer' -autoload :TkRTTimer, 'tk/timer' - -autoload :TkTextWin, 'tk/txtwin_abst' - -autoload :TkValidation, 'tk/validation' -autoload :TkValidateCommand, 'tk/validation' - -autoload :TkVariable, 'tk/variable' -autoload :TkVarAccess, 'tk/variable' - -autoload :TkVirtualEvent, 'tk/virtevent' -autoload :TkNamedVirtualEvent,'tk/virtevent' - -autoload :TkWinfo, 'tk/winfo' - -autoload :TkXIM, 'tk/xim' - - -############################################ -# 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', - - :TkLabel => 'tk/label', - - :TkLabelFrame => 'tk/labelframe', - :TkLabelframe => 'tk/labelframe', - - :TkListbox => 'tk/listbox', - - :TkMacResource => 'tk/macpkg', - - :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', - - :TkMessage => 'tk/message', - - :TkPanedWindow => 'tk/panedwindow', - :TkPanedwindow => 'tk/panedwindow', - - :TkRadioButton => 'tk/radiobutton', - :TkRadiobutton => 'tk/radiobutton', - - # :TkRoot => 'tk/root', - - :TkScale => 'tk/scale', - - :TkScrollbar => 'tk/scrollbar', - :TkXScrollbar => 'tk/scrollbar', - :TkYScrollbar => 'tk/scrollbar', - - :TkSpinbox => 'tk/spinbox', - - :TkText => 'tk/text', - - :TkToplevel => 'tk/toplevel', - - :TkWinDDE => 'tk/winpkg', - :TkWinRegistry => 'tk/winpkg', - } - - @TOPLEVEL_ALIAS_OWNER = {} - - @TOPLEVEL_ALIAS_SETUP_PROC = {} - - @AUTOLOAD_FILE_SYM_TABLE = Hash.new{|h,k| h[k]={}} # TABLE[file][sym] -> obj - - @current_default_widget_set = nil - - module TOPLEVEL_ALIASES; end -end - -class Object - include Tk::TOPLEVEL_ALIASES -end - -############################################ -# methods to control default widget set -############################################ - -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 widget_set_symbols - @TOPLEVEL_ALIAS_TABLE.keys - end - - def toplevel_aliases_on_widget_set(widget_set) - if (tbl = @TOPLEVEL_ALIAS_TABLE[widget_set.to_sym]) - tbl.collect{|k, v| (v.nil?)? nil: k}.compact - else - fail ArgumentError, "unknown widget_set #{widget_set.to_sym.inspect}" - end - end - - def __toplevel_alias_setup_proc__(*target_list, &cmd) - target_list.each{|target| @TOPLEVEL_ALIAS_SETUP_PROC[target.to_sym] = cmd} - end - - def topobj_defined?(sym) #=> alias_filename or object or false - Object.autoload?(sym) || - (Object.const_defined?(sym) && Object.const_get(sym)) - end - def topalias_defined?(sym) #=> alias_filename or object or false - Tk::TOPLEVEL_ALIASES.autoload?(sym) || - (Tk::TOPLEVEL_ALIASES.const_defined?(sym) && - Tk::TOPLEVEL_ALIASES.const_get(sym)) - end - def define_topobj(sym, obj) - if obj.kind_of? String - # obj is an autoload path - Object.autoload(sym, obj) - unless Object.autoload?(sym) - # file is autoloaded? - if @AUTOLOAD_FILE_SYM_TABLE.has_key?(obj) && - (loaded_obj = @AUTOLOAD_FILE_SYM_TABLE[obj][sym]) - Object.const_set(sym, loaded_obj) - else - fail ArgumentError, "cannot define autoload file (already loaded?)" - end - end - else - # object - Object.const_set(sym, obj) - end - end - def define_topalias(sym, obj) - if obj.kind_of? String - # obj is an autoload path - Tk::TOPLEVEL_ALIASES.autoload(sym, obj) - unless Tk::TOPLEVEL_ALIASES.autoload?(sym) - # file is autoloaded? - if @AUTOLOAD_FILE_SYM_TABLE.has_key?(obj) && - (loaded_obj = @AUTOLOAD_FILE_SYM_TABLE[obj][sym]) - Tk::TOPLEVEL_ALIASES.const_set(sym, loaded_obj) - else - fail ArgumentError, "cannot define autoload file (already loaded?)" - end - end - else - # object - Tk::TOPLEVEL_ALIASES.const_set(sym, obj) - end - end - def replace_topobj(sym, obj) #=> old_obj (alias_filename or object) or nil - if old_obj = topobj_defined?(sym) - Object.class_eval{remove_const sym} rescue nil # ignore err - end - define_topobj(sym, obj) - old_obj - end - def replace_topalias(sym, obj) #=> old_obj (alias_filename or object) or nil - if old_obj = topalias_defined?(sym) - Tk::TOPLEVEL_ALIASES.module_eval{remove_const sym} rescue nil #ignore err - end - define_topalias(sym, obj) - old_obj - end - private :topobj_defined?, :topalias_defined? - private :define_topobj, :define_topalias - private :replace_topobj, :replace_topalias - - def __regist_toplevel_aliases__(target, obj, *symbols) - # initial regist - @TOPLEVEL_ALIAS_TABLE[target = target.to_sym] ||= {} - symbols.each{|sym| - @TOPLEVEL_ALIAS_TABLE[target][sym = sym.to_sym] = obj - if !topalias_defined?(sym) || target == @current_default_widget_set - @TOPLEVEL_ALIAS_OWNER[sym] = target - replace_topalias(sym, obj) - replace_topobj(sym, obj) unless obj.kind_of?(String) # NOT autoload - end - } - end - - def regist_sym_for_loaded_file(auto, obj, sym) - @AUTOLOAD_FILE_SYM_TABLE[auto][sym] = obj - - reg = /^#{Regexp.quote(auto)}(\.rb|\.so|)$/ - @TOPLEVEL_ALIAS_TABLE.each_key{|set| - if @TOPLEVEL_ALIAS_TABLE[set][sym] =~ reg - @TOPLEVEL_ALIAS_TABLE[set][sym] = obj - if @TOPLEVEL_ALIAS_OWNER[sym].nil? || @TOPLEVEL_ALIAS_OWNER[sym] == set - replace_topalias(sym, obj) - replace_topobj(sym, obj) if set == @current_default_widget_set - end - end - } - if (f = Object.autoload?(sym)) && f =~ reg - replace_topobj(sym, obj) - end - if (f = Tk::TOPLEVEL_ALIASES.autoload?(sym)) && f =~ reg - replace_topalias(sym, obj) - end - end - private :regist_sym_for_loaded_file - - def set_topalias(target, obj, sym) - # obj is a kind of String : define autoload path - # Class : use the class object - if target == @current_default_widget_set - case @TOPLEVEL_ALIAS_OWNER[sym] - when false - # Object::sym is out of control. --> not change - # Make ALIAS::sym under control, because target widget set is current. - # Keep OWNER[sym] - @TOPLEVEL_ALIAS_TABLE[target][sym] = obj - replace_topalias(sym, obj) - - when target - if current_obj = topobj_defined?(sym) - if current_obj == obj - # Make current_obj under control. - # Keep Object::sym. - # Keep OWNER[sym]. - @TOPLEVEL_ALIAS_TABLE[target][sym] = obj - replace_topalias(sym, obj) - - else # current_obj != obj - if current_obj == topalias_defined?(sym) - # Change controlled object - # Keep OWNER[sym]. - @TOPLEVEL_ALIAS_TABLE[target][sym] = obj - replace_topalias(sym, obj) - replace_topobj(sym, obj) - - else # current_obj != topalias_defined?(sym) - # Maybe current_obj is defined by user. --> OWNER[sym] = false - # Keep Object::sym. - @TOPLEVEL_ALIAS_OWNER[sym] = false - @TOPLEVEL_ALIAS_TABLE[target][sym] = obj - replace_topalias(sym, obj) - end - end - - else # NOT topobj_defined?(sym) - # New definition for sym at target. - # Keep OWNER[sym]. - @TOPLEVEL_ALIAS_TABLE[target][sym] = obj - replace_topalias(sym, obj) - define_topobj(sym, obj) - end - - when nil - # New definition for sym at target. - @TOPLEVEL_ALIAS_OWNER[sym] = target - @TOPLEVEL_ALIAS_TABLE[target][sym] = obj - replace_topalias(sym, obj) - - else # others - # Maybe planning to make sym under control. - @TOPLEVEL_ALIAS_OWNER[sym] = target - @TOPLEVEL_ALIAS_TABLE[target][sym] = obj - replace_topalias(sym, obj) - replace_topobj(sym, obj) - end - - else # target != @current_default_widget_set - case @TOPLEVEL_ALIAS_OWNER[sym] - when false - # Object::sym is out of control. --> not change - if topalias_defined?(sym) - # ALIAS[sym] may be defined by other widget set. - # Keep Object::sym (even if it is not defined) - # Keep ALIAS[sym]. - # Keep OWNER[sym]. - @TOPLEVEL_ALIAS_TABLE[target][sym] = obj - - else # NOT topalias_defined?(sym) - # Nobody controls ALIAS[sym]. - # At least, current widget set doesn't control ALIAS[sym]. - # Keep Object::sym (even if it is not defined) - # Keep OWNER[sym]. - @TOPLEVEL_ALIAS_TABLE[target][sym] = obj - define_topalias(sym, obj) - end - - when target - # Maybe change controlled object, because Object::sym is under control. - # Keep OWNER[sym]. - @TOPLEVEL_ALIAS_TABLE[target][sym] = obj - replace_topalias(sym, obj) - replace_topobj(sym, obj) - - when nil - # New definition for sym - @TOPLEVEL_ALIAS_OWNER[sym] = target - @TOPLEVEL_ALIAS_TABLE[target][sym] = obj - replace_topalias(sym, obj) - replace_topobj(sym, obj) - - else # others - # An other widget set controls sym. - # Keep Object::sym (even if it is not defined) - # Keep ALIAS[sym]. - # Keep OWNER[sym]. - @TOPLEVEL_ALIAS_TABLE[target][sym] = obj - - end - end - - sym - end - private :set_topalias - - def __set_toplevel_aliases__(target, obj, *symbols) - # obj is a kind of String : define autoload path - # Class : use the class object - target = target.to_sym - symbols.each{|sym| set_topalias(target, obj, sym.to_sym)} - end - - def __set_loaded_toplevel_aliases__(autopath, target, obj, *symbols) - # autopath is an autoload file - # Currently, this method doesn't support that autoload loads - # different toplevels between <basename>.rb and <basename>.so extension. - shortpath = (autopath =~ /^(.*)(.rb|.so)$/)? $1: autopath - target = target.to_sym - symbols.map!{|sym| sym.to_sym} - - symbols.each{|sym| regist_sym_for_loaded_file(shortpath, obj, sym) } - symbols.each{|sym| set_topalias(target, obj, sym)} - end - - def backup_current_topdef(sym) - return if (current = @current_default_widget_set).nil? - - case @TOPLEVEL_ALIAS_OWNER[sym] - when false - # Object::sym is out of control. - if (cur_alias = topalias_defined?(sym)) && ! cur_alias.kind_of?(String) - @TOPLEVEL_ALIAS_TABLE[current][sym] = cur_alias - end - - when current - if cur_obj = topobj_defined?(sym) - if ! cur_obj.kind_of?(String) && (cur_alias = topalias_defined?(sym)) - if cur_alias.kind_of?(String) - # Maybe, user replaced Object::sym. - # Make Object::sym out of control. - @TOPLEVEL_ALIAS_OWNER[sym] = false - elsif cur_obj == cur_alias - # Possibly, defined normally. Backup it - @TOPLEVEL_ALIAS_TABLE[current][sym] = cur_alias - else - # Maybe, user replaced Object::sym. - # Make Object::sym out of control. - @TOPLEVEL_ALIAS_OWNER[sym] = false - end - end - else - # Maybe, user replaced Object::sym. - # Make Object::sym out of control. - @TOPLEVEL_ALIAS_OWNER[sym] = false - end - - when nil - # Object::sym is out of control. - if (cur_alias = topalias_defined?(sym)) && ! cur_alias.kind_of?(String) - # Possibly, defined normally. Backup it. - @TOPLEVEL_ALIAS_TABLE[current][sym] = cur_alias - end - else - # No authority to control Object::sym and ALIASES::sym. - # Do nothing. - end - end - private :backup_current_topdef - - def _replace_toplevel_aliases(target) - # backup - @TOPLEVEL_ALIAS_TABLE[target].each_key{|sym| - backup_current_topdef(sym) - } - - # replace - @TOPLEVEL_ALIAS_TABLE[target].each_key{|sym| - next if (obj = @TOPLEVEL_ALIAS_TABLE[target][sym]).nil? - if @TOPLEVEL_ALIAS_OWNER[sym] == false - # Object::sym is out of control. --> not change - # Keep OWNER[sym]. - replace_topalias(sym, obj) - else - # New definition - @TOPLEVEL_ALIAS_OWNER[sym] = target - replace_topalias(sym, obj) - replace_topobj(sym, obj) - end - } - - # change default_widget_set - @current_default_widget_set = target - end - private :_replace_toplevel_aliases - - def __import_toplevel_aliases__(target, *symbols) - current = @current_default_widget_set - symbols.each{|sym| - sym = sym.to_sym - if (obj = @TOPLEVEL_ALIAS_TABLE[target][sym]).nil? - # remove - @TOPLEVEL_ALIAS_TABLE[current].delete(sym) - @TOPLEVEL_ALIAS_OWNER.delete(sym) - Tk::TOPLEVEL_ALIASES.module_eval{remove_const sym} if topalias_defined?(sym) - Object.class_eval{remove_const sym} if topobj_defined?(sym) - - elsif obj == false - # remove, but OWNER[sym] <- false and not treat Object::sym - @TOPLEVEL_ALIAS_TABLE[current].delete(sym) - @TOPLEVEL_ALIAS_OWNER[sym] = false - Tk::TOPLEVEL_ALIASES.module_eval{remove_const sym} if topalias_defined?(sym) - - elsif @TOPLEVEL_ALIAS_OWNER[sym] == false - # Object::sym is out of control. --> not change - # Keep OWNER[sym]. - @TOPLEVEL_ALIAS_TABLE[current][sym] = obj - replace_topalias(sym, obj) - - else - # new definition under control - @TOPLEVEL_ALIAS_OWNER[sym] = current - @TOPLEVEL_ALIAS_TABLE[current][sym] = obj - replace_topalias(sym, obj) - replace_topobj(sym, obj) - end - } - end - - def __remove_toplevel_aliases__(*symbols) - # remove toplevel aliases of current widget set - current = @current_default_widget_set - symbols.each{|sym| - sym = sym.to_sym - @TOPLEVEL_ALIAS_TABLE[current].delete(sym) - @TOPLEVEL_ALIAS_OWNER.delete(sym) - Tk::TOPLEVEL_ALIASES.module_eval{remove_const sym} if topalias_defined?(sym) - Object.class_eval{remove_const sym} if topobj_defined?(sym) - } - end - - def __reset_toplevel_owner__(*symbols) - symbols.each{|sym| @TOPLEVEL_ALIAS_OWNER.delete(sym.to_sym)} - end - - def __disable_toplevel_control__(*symbols) - symbols.each{|sym| @TOPLEVEL_ALIAS_OWNER[sym.to_sym] = false} - end - - def __create_widget_set__(new_set, src_set={}) - new_set = new_set.to_sym - if @TOPLEVEL_ALIAS_TABLE[new_set] - fail RuntimeError, "A widget-set #{new_set.inspect} is already exist." - end - if src_set.kind_of?(Symbol) - # new_set is an alias name of existed widget set. - @TOPLEVEL_ALIAS_TABLE[new_set] = @TOPLEVEL_ALIAS_TABLE[src_set] - else - @TOPLEVEL_ALIAS_TABLE[new_set] = {} - src_set.each{|sym, obj| set_topalias(new_set, obj, sym.to_sym) } - end - end -end - - -############################################ -# setup default widget set => :Tk -Tk.default_widget_set = :Tk - - -############################################ -# depend on the version of Tcl/Tk -# major, minor, type, patchlevel = TclTkLib.get_version - -############################################ -# Ttk (Tile) support -=begin -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 -=end -Object.autoload :Ttk, 'tkextlib/tile' -Tk.autoload :Tile, 'tkextlib/tile' -require 'tk/ttk_selector' |