1# 2# tk/textimage.rb - treat Tk text image object 3# 4require 'tk' 5require 'tk/text' 6 7class TkTextImage<TkObject 8 include Tk::Text::IndexModMethods 9 10 def initialize(parent, index, keys) 11 #unless parent.kind_of?(Tk::Text) 12 # fail ArgumentError, "expect Tk::Text for 1st argument" 13 #end 14 @t = parent 15 if index == 'end' || index == :end 16 @path = TkTextMark.new(@t, tk_call(@t.path, 'index', 'end - 1 chars')) 17 elsif index.kind_of? TkTextMark 18 if tk_call_without_enc(@t.path,'index',index.path) == tk_call_without_enc(@t.path,'index','end') 19 @path = TkTextMark.new(@t, tk_call_without_enc(@t.path, 'index', 20 'end - 1 chars')) 21 else 22 @path = TkTextMark.new(@t, tk_call_without_enc(@t.path, 'index', 23 index.path)) 24 end 25 else 26 @path = TkTextMark.new(@t, tk_call_without_enc(@t.path, 'index', 27 _get_eval_enc_str(index))) 28 end 29 @path.gravity = 'left' 30 @index = @path.path 31 @id = tk_call_without_enc(@t.path, 'image', 'create', @index, 32 *hash_kv(keys, true)).freeze 33 @path.gravity = 'right' 34 end 35 36 def id 37 Tk::Text::IndexString.new(@id) 38 end 39 def mark 40 @path 41 end 42 43 def [](slot) 44 cget(slot) 45 end 46 def []=(slot, value) 47 configure(slot, value) 48 value 49 end 50 51 def cget(slot) 52 @t.image_cget(@index, slot) 53 end 54 55 def cget_strict(slot) 56 @t.image_cget_strict(@index, slot) 57 end 58 59 def configure(slot, value=None) 60 @t.image_configure(@index, slot, value) 61 self 62 end 63# def configure(slot, value) 64# tk_call @t.path, 'image', 'configure', @index, "-#{slot}", value 65# end 66 67 def configinfo(slot = nil) 68 @t.image_configinfo(@index, slot) 69 end 70 71 def current_configinfo(slot = nil) 72 @t.current_image_configinfo(@index, slot) 73 end 74 75 def image 76 img = tk_call_without_enc(@t.path, 'image', 'cget', @index, '-image') 77 TkImage::Tk_IMGTBL[img]? TkImage::Tk_IMGTBL[img] : img 78 end 79 80 def image=(value) 81 tk_call_without_enc(@t.path, 'image', 'configure', @index, '-image', 82 _get_eval_enc_str(value)) 83 #self 84 value 85 end 86end 87 88TktImage = TkTextImage 89