# 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}}', <<-'EOS') 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] EOS } } 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