# File tk/lib/tkextlib/tile.rb, line 127
def self.__Import_Tile_Widgets__!
warn 'Warning: "Tk::Tile::__Import_Tile_Widgets__!" is obsolete.' <<
' To control default widget set, use "Tk.default_widget_set = :Ttk"'
Tk.tk_call('namespace', 'import', '-force', 'ttk::*')
end
# File tk/lib/tkextlib/tile.rb, line 133
def self.__define_LoadImages_proc_for_compatibility__!
# Ttk 8.5 (Tile 0.8) lost 'LoadImages' utility procedure.
# So, some old scripts doen't work, because those scripts use the
# procedure to define local styles.
# Of course, rewriting such Tcl/Tk scripts isn't difficult for
# Tcl/Tk users. However, it may be troublesome for Ruby/Tk users
# who use such Tcl/Tk scripts as it is.
# This method may help Ruby/Tk users who don't want to modify old
# Tcl/Tk scripts for the latest version of Ttk (Tile) extension.
# This method defines a comaptible 'LoadImages' procedure on the
# Tcl/Tk interpreter working under Ruby/Tk.
# Please give attention to use this method. It may conflict with
# some definitions on Tcl/Tk scripts.
klass_name = self.name
proc_name = 'LoadImages'
if Tk::Tile::USE_TTK_NAMESPACE
ns_list = ['::tile']
if Tk.info(:commands, "::ttk::#{proc_name}").empty?
ns_list << '::ttk'
end
else # Tk::Tile::USE_TILE_NAMESPACE
ns_list = ['::ttk']
if Tk.info(:commands, "::tile::#{proc_name}").empty?
ns_list << '::tile'
end
end
ns_list.each{|ns|
cmd = "#{ns}::#{proc_name}"
unless Tk.info(:commands, cmd).empty?
#fail RuntimeError, "can't define '#{cmd}' command (already exist)"
# do nothing !!!
warn "Warning: can't define '#{cmd}' command (already exist)" if $DEBUG
next
end
TkNamespace.eval(ns){
TkCore::INTERP.add_tk_procs(proc_name, 'imgdir {patterns {*.gif}}',
foreach pattern $patterns { foreach file [glob -directory $imgdir $pattern] { set img [file tail [file rootname $file]] if {![info exists images($img)]} { set images($img) [image create photo -file $file] } } } return [array get images])
}
}
end
# File tk/lib/tkextlib/tile.rb, line 38
def self.const_missing(sym)
TkPackage.require(PACKAGE_NAME)
end
# File tk/lib/tkextlib/tile.rb, line 186
def self.load_images(imgdir, pat=nil)
if Tk::Tile::TILE_SPEC_VERSION_ID < 8
if Tk::Tile::USE_TTK_NAMESPACE
cmd = '::ttk::LoadImages'
else # Tk::Tile::USE_TILE_NAMESPACE
cmd = '::tile::LoadImages'
end
pat ||= TkComm::None
images = Hash[*TkComm.simplelist(Tk.tk_call(cmd, imgdir, pat))]
images.keys.each{|k|
images[k] = TkPhotoImage.new(:imagename=>images[k],
:without_creating=>true)
}
else ## TILE_SPEC_VERSION_ID >= 8
pat ||= '*.gif'
if pat.kind_of?(Array)
pat_list = pat
else
pat_list = [ pat ]
end
Dir.chdir(imgdir){
pat_list.each{|pat|
Dir.glob(pat).each{|f|
img = File.basename(f, '.*')
unless TkComm.bool(Tk.info('exists', "images(#{img})"))
Tk.tk_call('set', "images(#{img})",
Tk.tk_call('image', 'create', 'photo', '-file', f))
end
}
}
}
images = Hash[*TkComm.simplelist(Tk.tk_call('array', 'get', 'images'))]
images.keys.each{|k|
images[k] = TkPhotoImage.new(:imagename=>images[k],
:without_creating=>true)
}
end
images
end
# File tk/lib/tkextlib/tile.rb, line 41
def self.method_missing(*args)
TkPackage.require(PACKAGE_NAME)
end
# File tk/lib/tkextlib/tile.rb, line 115
def self.package_name
PACKAGE_NAME
end
# File tk/lib/tkextlib/tile.rb, line 119
def self.package_version
begin
TkPackage.require(PACKAGE_NAME)
rescue
''
end
end
# File tk/lib/tkextlib/tile.rb, line 249
def self.set_theme(theme)
if TILE_SPEC_VERSION_ID < 8 && Tk.info(:commands, '::ttk::setTheme').empty?
cmd = '::tile::setTheme'
else
cmd = '::ttk::setTheme'
end
begin
Tk.tk_call_without_enc(cmd, theme)
rescue
Tk::Tile::Style.theme_use(theme)
end
end
# File tk/lib/tkextlib/tile.rb, line 227
def self.style(*args)
args.map!{|arg| TkComm._get_eval_string(arg)}.join('.')
end
# File tk/lib/tkextlib/tile.rb, line 231
def self.themes(glob_ptn = nil)
if TILE_SPEC_VERSION_ID < 8 && Tk.info(:commands, '::ttk::themes').empty?
fail RuntimeError, 'not support glob option' if glob_ptn
cmd = ['::tile::availableThemes']
else
glob_ptn = '*' unless glob_ptn
cmd = ['::ttk::themes', glob_ptn]
end
begin
TkComm.simplelist(Tk.tk_call_without_enc(*cmd))
rescue
TkComm.simplelist(Tk.tk_call('lsearch', '-all', '-inline',
Tk::Tile::Style.theme_names,
glob_ptn))
end
end