string with Tcl's encoding
dummy methods
freeze core modules
TclTkLib.freeze TclTkIp.freeze TkUtil.freeze TkKernel.freeze TkComm.freeze TkComm::Event.freeze TkCore.freeze Tk.freeze
autoload
geometry manager
classes on Tk module
sub-module of Tk
toplevel classes/modules (switchable)
methods to control default widget set
string with Tcl's encoding
ttk_selector
toplevel classes/modules
autoload
tkextlib/tcllib/tablelist_core.rb
by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) * Part of tcllib extension * This file is required by 'tkextlib/tcllib/tablelist.rb' or 'tkextlib/tcllib/tablelist_tile.rb'.
define dummy methods
version 0.4 or former
version 0.5 – version 0.6
version 0.8 or later
Ttk package merged Tcl/Tk core (Tcl/Tk 8.5+)
autoload
release date of tkextlib
autoload
create module/class
create module/class
create module/class
AUTO_OLDPATH = tk_split_simplelist(INTERP._invoke('set', 'auto_oldpath')) AUTO_OLDPATH.each{|s| s.freeze} AUTO_OLDPATH.freeze
# File tk/lib/tk/autoload.rb, line 114 def Tk.BinaryString(str); Tk::BinaryString.new(str); end
# File tk/lib/tk/autoload.rb, line 111 def Tk.EncodedString(str, enc = nil); Tk::EncodedString.new(str, enc); end
# File tk/lib/tk/autoload.rb, line 117 def Tk.UTF8_String(str); Tk::UTF8_String.new(str); end
# File tk/lib/tk/autoload.rb, line 722 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
# File tk/lib/tk/autoload.rb, line 718 def __disable_toplevel_control__(*symbols) symbols.each{|sym| @TOPLEVEL_ALIAS_OWNER[sym.to_sym] = false} end
# File tk/lib/tk/autoload.rb, line 669 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
# File tk/lib/tk/autoload.rb, line 436 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
# File tk/lib/tk/autoload.rb, line 702 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
# File tk/lib/tk/autoload.rb, line 714 def __reset_toplevel_owner__(*symbols) symbols.each{|sym| @TOPLEVEL_ALIAS_OWNER.delete(sym.to_sym)} end
# File tk/lib/tk/autoload.rb, line 586 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
# File tk/lib/tk/autoload.rb, line 579 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
# File tk/lib/tk/autoload.rb, line 369 def __toplevel_alias_setup_proc__(*target_list, &cmd) target_list.each{|target| @TOPLEVEL_ALIAS_SETUP_PROC[target.to_sym] = cmd} end
# File tk/lib/tk.rb, line 2539 def Tk.add_kinsoku(chars, mode='both') begin if /^8\.*/ === TK_VERSION && JAPANIZED_TK tk_split_simplelist(tk_call('kinsoku', 'add', mode, *(chars.split('')))) else [] end rescue [] end end
# File tk/lib/tk.rb, line 2367 def Tk.bell(nice = false) if nice tk_call_without_enc('bell', '-nice') else tk_call_without_enc('bell') end nil end
# File tk/lib/tk.rb, line 2376 def Tk.bell_on_display(win, nice = false) if nice tk_call_without_enc('bell', '-displayof', win, '-nice') else tk_call_without_enc('bell', '-displayof', win) end nil end
# File tk/lib/tk.rb, line 2190 def Tk.const_missing(sym) case(sym) when :TCL_LIBRARY INTERP._invoke_without_enc('global', 'tcl_library') INTERP._invoke("set", "tcl_library").freeze when :TK_LIBRARY INTERP._invoke_without_enc('global', 'tk_library') INTERP._invoke("set", "tk_library").freeze when :LIBRARY INTERP._invoke("info", "library").freeze #when :PKG_PATH, :PACKAGE_PATH, :TCL_PACKAGE_PATH # INTERP._invoke_without_enc('global', 'tcl_pkgPath') # tk_split_simplelist(INTERP._invoke('set', 'tcl_pkgPath')) #when :LIB_PATH, :LIBRARY_PATH, :TCL_LIBRARY_PATH # INTERP._invoke_without_enc('global', 'tcl_libPath') # tk_split_simplelist(INTERP._invoke('set', 'tcl_libPath')) when :PLATFORM, :TCL_PLATFORM if $SAFE >= 4 fail SecurityError, "can't get #{sym} when $SAFE >= 4" end INTERP._invoke_without_enc('global', 'tcl_platform') Hash[*tk_split_simplelist(INTERP._invoke_without_enc('array', 'get', 'tcl_platform'))] when :ENV INTERP._invoke_without_enc('global', 'env') Hash[*tk_split_simplelist(INTERP._invoke('array', 'get', 'env'))] #when :AUTO_PATH #<=== # tk_split_simplelist(INTERP._invoke('set', 'auto_path')) #when :AUTO_OLDPATH # tk_split_simplelist(INTERP._invoke('set', 'auto_oldpath')) when :AUTO_INDEX INTERP._invoke_without_enc('global', 'auto_index') Hash[*tk_split_simplelist(INTERP._invoke('array', 'get', 'auto_index'))] when :PRIV, :PRIVATE, :TK_PRIV priv = {} if INTERP._invoke_without_enc('info', 'vars', 'tk::Priv') != "" var_nam = 'tk::Priv' else var_nam = 'tkPriv' end INTERP._invoke_without_enc('global', var_nam) Hash[*tk_split_simplelist(INTERP._invoke('array', 'get', var_nam))].each{|k,v| k.freeze case v when /^-?\d+$/ priv[k] = v.to_i when /^-?\d+\.?\d*(e[-+]?\d+)?$/ priv[k] = v.to_f else priv[k] = v.freeze end } priv else raise NameError, 'uninitialized constant Tk::' + sym.id2name end end
# File tk/lib/tk.rb, line 2491 def Tk.current_grabs(win = nil) if win window(tk_call_without_enc('grab', 'current', win)) else tk_split_list(tk_call_without_enc('grab', 'current')) end end
# File tk/lib/tkextlib/tcllib/cursor.rb, line 46 def self.cursor_display(parent=None) # Pops up a dialog with a listbox containing all the cursor names. # Selecting a cursor name will display it in that dialog. # This is simply for viewing any available cursors on the platform . #tk_call_without_enc('::cursor::display', parent) Tk::Tcllib::Cursor.cursor_display(parent) end
# File tk/lib/tk/autoload.rb, line 342 def default_widget_set @current_default_widget_set end
# File tk/lib/tk/autoload.rb, line 346 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
# File tk/lib/tk.rb, line 2551 def Tk.delete_kinsoku(chars, mode='both') begin if /^8\.*/ === TK_VERSION && JAPANIZED_TK tk_split_simplelist(tk_call('kinsoku', 'delete', mode, *(chars.split('')))) end rescue end end
# File tk/lib/tk.rb, line 2385 def Tk.destroy(*wins) #tk_call_without_enc('destroy', *wins) tk_call_without_enc('destroy', *(wins.collect{|win| if win.kind_of?(TkWindow) win.epath else win end })) end
# File tk/lib/tk.rb, line 2265 def Tk.errorCode INTERP._invoke_without_enc('global', 'errorCode') code = tk_split_simplelist(INTERP._invoke_without_enc('set', 'errorCode')) case code[0] when 'CHILDKILLED', 'CHILDSTATUS', 'CHILDSUSP' begin pid = Integer(code[1]) code[1] = pid rescue end end code end
# File tk/lib/tk.rb, line 2260 def Tk.errorInfo INTERP._invoke_without_enc('global', 'errorInfo') INTERP._invoke_without_enc('set', 'errorInfo') end
# File tk/lib/tk.rb, line 2396 def Tk.exit TkCore::INTERP.has_mainwindow? && tk_call_without_enc('destroy', '.') end
# File tk/lib/tk.rb, line 2499 def Tk.focus(display=nil) if display == nil window(tk_call_without_enc('focus')) else window(tk_call_without_enc('focus', '-displayof', display)) end end
# File tk/lib/tk.rb, line 2515 def Tk.focus_lastfor(win) window(tk_call_without_enc('focus', '-lastfor', win)) end
# File tk/lib/tk.rb, line 2519 def Tk.focus_next(win) TkManageFocus.next(win) end
# File tk/lib/tk.rb, line 2523 def Tk.focus_prev(win) TkManageFocus.prev(win) end
# File tk/lib/tk.rb, line 2507 def Tk.focus_to(win, force=false) if force tk_call_without_enc('focus', '-force', win) else tk_call_without_enc('focus', win) end end
# File tk/lib/tk.rb, line 2565 def Tk.fromUTF8(str, encoding = nil) _fromUTF8(str, encoding) end
# File tk/lib/tk.rb, line 2431 def Tk.grid(*args) TkGrid.configure(*args) end
# File tk/lib/tk.rb, line 2434 def Tk.grid_forget(*args) TkGrid.forget(*args) end
# File tk/lib/tk.rb, line 2279 def Tk.has_mainwindow? INTERP.has_mainwindow? end
# File tk/lib/tk.rb, line 2296 def Tk.load_tcllibrary(file, pkg_name=None, interp=None) tk_call('load', file, pkg_name, interp) end
# File tk/lib/tk.rb, line 2287 def Tk.load_tclscript(file, enc=nil) if enc # TCL_VERSION >= 8.5 tk_call('source', '-encoding', enc, file) else tk_call('source', file) end end
# File tk/lib/tk/macpkg.rb, line 12 def Tk.load_tclscript_rsrc(resource_name, file=None) # Mac only tk_call('source', '-rsrc', resource_name, file) end
# File tk/lib/tk/macpkg.rb, line 17 def Tk.load_tclscript_rsrcid(resource_id, file=None) # Mac only tk_call('source', '-rsrcid', resource_id, file) end
# File tk/lib/tk.rb, line 2482 def Tk.lower_window(win, below=None) tk_call('lower', _epath(win), _epath(below)) nil end
# File tk/lib/tk.rb, line 2421 def Tk.pack(*args) TkPack.configure(*args) end
# File tk/lib/tk.rb, line 2424 def Tk.pack_forget(*args) TkPack.forget(*args) end
# File tk/lib/tk.rb, line 2330 def Tk.pkgconfig_get(mod, key) # Tk8.5 feature if mod.kind_of?(Module) if mod.respond_to?(:package_name) pkgname = mod.package_name else fail NotImplementedError, 'may not be a module for a Tcl extension' end else pkgname = mod.to_s end pkgname = '::' << pkgname unless pkgname =~ /^::/ tk_call(pkgname + '::pkgconfig', 'get', key) end
# File tk/lib/tk.rb, line 2311 def Tk.pkgconfig_list(mod) # Tk8.5 feature if mod.kind_of?(Module) if mod.respond_to?(:package_name) pkgname = mod.package_name elsif mod.const_defined?(:PACKAGE_NAME) pkgname = mod::PACKAGE_NAME else fail NotImplementedError, 'may not be a module for a Tcl extension' end else pkgname = mod.to_s end pkgname = '::' << pkgname unless pkgname =~ /^::/ tk_split_list(tk_call(pkgname + '::pkgconfig', 'list')) end
# File tk/lib/tk.rb, line 2441 def Tk.place(*args) TkPlace.configure(*args) end
# File tk/lib/tk.rb, line 2444 def Tk.place_forget(*args) TkPlace.forget(*args) end
# File tk/lib/tk.rb, line 2486 def Tk.raise_window(win, above=None) tk_call('raise', _epath(win), _epath(above)) nil end
# File tk/lib/tk.rb, line 2531 def Tk.show_kinsoku(mode='both') begin if /^8\.*/ === TK_VERSION && JAPANIZED_TK tk_split_simplelist(tk_call('kinsoku', 'show', mode)) end rescue end end
# File tk/lib/tk.rb, line 2402 def Tk.sleep(ms = nil, id = nil) if id var = (id.kind_of?(TkVariable))? id: TkVarAccess.new(id.to_s) else var = TkVariable.new end var.value = tk_call_without_enc('after', ms, proc{ var.value = 0 }) if ms var.thread_wait ms end
# File tk/lib/tk.rb, line 2527 def Tk.strictMotif(mode=None) bool(tk_call_without_enc('set', 'tk_strictMotif', mode)) end
# File tk/lib/tk.rb, line 2577 def Tk.subst_tk_backslash(str) Tk::EncodedString.subst_tk_backslash(str) end
# File tk/lib/tk.rb, line 2574 def Tk.subst_utf_backslash(str) Tk::EncodedString.subst_utf_backslash(str) end
# File tk/lib/tk.rb, line 2352 def Tk.tcl_pkgconfig_get(key) # Tk8.5 feature Tk.pkgconfig_get('::tcl', key) end
# File tk/lib/tk.rb, line 2347 def Tk.tcl_pkgconfig_list # Tk8.5 feature Tk.pkgconfig_list('::tcl') end
If no eventloop-thread is running, “thread_update” method is same to “update” method. Else, “thread_update” method waits to complete idletask operation on the eventloop-thread.
# File tk/lib/tk.rb, line 2471 def Tk.thread_update(idle=nil) if idle tk_call_without_enc('thread_update', 'idletasks') else tk_call_without_enc('thread_update') end end
# File tk/lib/tk.rb, line 2478 def Tk.thread_update_idletasks thread_update(true) end
# File tk/lib/tk.rb, line 2362 def Tk.tk_pkgconfig_get(key) # Tk8.5 feature Tk.pkgconfig_get('::tk', key) end
# File tk/lib/tk.rb, line 2357 def Tk.tk_pkgconfig_list # Tk8.5 feature Tk.pkgconfig_list('::tk') end
# File tk/lib/tk.rb, line 2561 def Tk.toUTF8(str, encoding = nil) _toUTF8(str, encoding) end
# File tk/lib/tk.rb, line 2586 def Tk.to_backslash_sequence(str) Tk::EncodedString.to_backslash_sequence(str) end
# File tk/lib/tk/autoload.rb, line 361 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
# File tk/lib/tk.rb, line 2437 def Tk.ungrid(*args) TkGrid.forget(*args) end
# File tk/lib/tk.rb, line 2300 def Tk.unload_tcllibrary(*args) if args[-1].kind_of?(Hash) keys = _symbolkey2str(args.pop) nocomp = (keys['nocomplain'])? '-nocomplain': None keeplib = (keys['keeplibrary'])? '-keeplibrary': None tk_call('unload', nocomp, keeplib, '--', *args) else tk_call('unload', *args) end end
# File tk/lib/tk.rb, line 2427 def Tk.unpack(*args) TkPack.forget(*args) end
# File tk/lib/tk.rb, line 2447 def Tk.unplace(*args) TkPlace.forget(*args) end
# File tk/lib/tk.rb, line 2451 def Tk.update(idle=nil) if idle tk_call_without_enc('update', 'idletasks') else tk_call_without_enc('update') end end
# File tk/lib/tk.rb, line 2458 def Tk.update_idletasks update(true) end
# File tk/lib/tk.rb, line 2583 def Tk.utf_to_backslash(str) Tk::EncodedString.utf_to_backslash_sequence(str) end
# File tk/lib/tk.rb, line 2580 def Tk.utf_to_backslash_sequence(str) Tk::EncodedString.utf_to_backslash_sequence(str) end
# File tk/lib/tk/autoload.rb, line 8 def Grid(*args); TkGrid.configure(*args); end
# File tk/lib/tk/autoload.rb, line 11 def Pack(*args); TkPack.configure(*args); end