diff options
Diffstat (limited to 'ext/tk/lib/tkextlib/ICONS/icons.rb')
-rw-r--r-- | ext/tk/lib/tkextlib/ICONS/icons.rb | 46 |
1 files changed, 35 insertions, 11 deletions
diff --git a/ext/tk/lib/tkextlib/ICONS/icons.rb b/ext/tk/lib/tkextlib/ICONS/icons.rb index fe8351fa52..275903f302 100644 --- a/ext/tk/lib/tkextlib/ICONS/icons.rb +++ b/ext/tk/lib/tkextlib/ICONS/icons.rb @@ -9,39 +9,63 @@ require 'tk' require 'tkextlib/setup.rb' # call setup script -require File.join(File.dirname(File.expand_path(__FILE__)), 'setup.rb') +require 'tkextlib/ICONS/setup.rb' # TkPackage.require('icons', '1.0') TkPackage.require('icons') module Tk class ICONS < TkImage - def self.create(*args) # icon, icon, ..., keys + extend Tk + + def self.package_version + begin + TkPackage.require('icons') + rescue + '' + end + end + + def self.create(*args) # icon, icon, ..., ?option=>value, ...? if args[-1].kind_of?(Hash) keys = args.pop icons = simplelist(tk_call('::icons::icons', 'create', - *(hash_kv(keys).concat(args.flatten)))) + *(hash_kv(keys) << (args.flatten)))) else icons = simplelist(tk_call('::icons::icons', 'create', - *(args.flatten))) + args.flatten)) end icons.collect{|icon| self.new(icon, :without_creating=>true)} end - def self.delete(*icons) + def self.delete(*icons) # icon, icon, ... + icons = icons.flatten return if icons.empty? + icons.map!{|icon| + if icon.kind_of?(Tk::ICONS) + Tk_IMGTBL.delete(icon.path) + icon.name + elsif icon.to_s =~ /^::icon::(.*)/ + name = $1 + Tk_IMGTBL.delete(icon) + name + else + Tk_IMGTBL.delete("::icon::#{icon}") + icon + end + } tk_call('::icons::icons', 'delete', icons) end - def self.query(*args) + def self.query(*args) # icon, icon, ..., ?option=>value, ...? if args[-1].kind_of?(Hash) keys = args.pop - list(tk_call('::icons::icons', 'query', - *(hash_kv(keys).concat(args.flatten)))) + simplelist(tk_call('::icons::icons', 'query', + *(hash_kv(keys) << (args.flatten)))) else - list(tk_call('::icons::icons', 'query', *(args.flatten))) - end + simplelist(tk_call('::icons::icons', 'query', args.flatten)) + end . map{|inf| list(inf) } end ########################################## @@ -75,7 +99,7 @@ module Tk self end - def query(keys) + def query(keys={}) list(simplelist(tk_call('::icons::icons', 'query', *(hash_kv(keys) << @name)) )[0]) |