Class: TkTextTag
- Includes:
- TkText::IndexModMethods, TkTreatTagFont
- Defined in:
- lib/tk/texttag.rb
Constant Summary collapse
Constants included from TkCore
TkCore::EventFlag, TkCore::INTERP, TkCore::WIDGET_DESTROY_HOOK
Constants included from TkComm
TkComm::GET_CONFIGINFO_AS_ARRAY, TkComm::GET_CONFIGINFOwoRES_AS_ARRAY, TkComm::TkExtlibAutoloadModule, TkComm::Tk_CMDTBL, TkComm::Tk_IDs, TkComm::Tk_WINDOWS, TkComm::USE_TCLs_LIST_FUNCTIONS, TkComm::WidgetClassNames
Constants included from TkUtil
TkUtil::None, TkUtil::RELEASE_DATE
Constants included from Tk
Tk::AUTO_PATH, Tk::INTERP, Tk::JAPANIZED_TK, Tk::LIBRARY_PATH, Tk::MAINLOOP, Tk::PACKAGE_PATH, Tk::RELEASE_DATE, Tk::TCL_LIBRARY_PATH, Tk::TCL_MAJOR_VERSION, Tk::TCL_MINOR_VERSION, Tk::TCL_PACKAGE_PATH, Tk::TCL_PATCHLEVEL, Tk::TCL_PRECISION, Tk::TCL_VERSION, Tk::TK_MAJOR_VERSION, Tk::TK_MINOR_VERSION, Tk::TK_PATCHLEVEL, Tk::TK_VERSION, Tk::Tkextlib_RELEASE_DATE, Tk::TreeCtrl_Widget, Tk::X_Scrollable, Tk::Y_Scrollable
Constants included from Tk::Encoding
Class Method Summary collapse
Instance Method Summary collapse
- #[](key) ⇒ Object
- #[]=(key, val) ⇒ Object
- #add(*indices) ⇒ Object
-
#bind(seq, *args) ⇒ Object
def bind(seq, cmd=Proc.new, *args) _bind([@t.path, 'tag', 'bind', @id], seq, cmd, *args) self end.
-
#bind_append(seq, *args) ⇒ Object
def bind_append(seq, cmd=Proc.new, *args) _bind_append([@t.path, 'tag', 'bind', @id], seq, cmd, *args) self end.
- #bind_remove(seq) ⇒ Object
- #bindinfo(context = nil) ⇒ Object
- #cget(key) ⇒ Object
-
#configinfo(key = nil) ⇒ Object
def configure(key, val=None) if key.kind_of?(Hash) tk_call @t.path, 'tag', 'configure', @id, *hash_kv(key) else tk_call @t.path, 'tag', 'configure', @id, "-#key", val end end def configure(key, value) if value == FALSE value = "0" elsif value.kind_of?(Proc) value = install_cmd(value) end tk_call @t.path, 'tag', 'configure', @id, "-#key", value end.
-
#configure(key, val = None) ⇒ Object
def cget(key) case key.to_s when 'text', 'label', 'show', 'data', 'file' _fromUTF8(tk_call_without_enc(@t.path, 'tag', 'cget', @id, "-#key")) when 'font', 'kanjifont' #fnt = tk_tcl2ruby(tk_call(@t.path, 'tag', 'cget', @id, "-#key")) fnt = tk_tcl2ruby(_fromUTF8(tk_call_without_enc(@t.path, 'tag', 'cget', @id, '-font'))) unless fnt.kind_of?(TkFont) fnt = tagfontobj(@id, fnt) end if key.to_s == 'kanjifont' && JAPANIZED_TK && TK_VERSION =~ /^4.*/ # obsolete; just for compatibility fnt.kanji_font else fnt end else tk_tcl2ruby(_fromUTF8(tk_call_without_enc(@t.path, 'tag', 'cget', @id, "-#key"))) end end.
- #current_configinfo(key = nil) ⇒ Object
- #destroy ⇒ Object
- #exist? ⇒ Boolean
- #first ⇒ Object
- #id ⇒ Object
-
#initialize(parent, *args) ⇒ TkTextTag
constructor
A new instance of TkTextTag.
- #last ⇒ Object
- #lower(below = None) ⇒ Object
- #nextrange(first, last = None) ⇒ Object
- #prevrange(first, last = None) ⇒ Object
- #raise(above = None) ⇒ Object
- #ranges ⇒ Object
- #remove(*indices) ⇒ Object
Methods included from TkText::IndexModMethods
#+, #-, #any_chars, #any_indices, #any_lines, #chars, #display_chars, #display_indices, #display_lineend, #display_lines, #display_linestart, #display_wordend, #display_wordstart, #indices, #lineend, #lines, #linestart, #wordend, #wordstart
Methods included from TkTreatTagFont
#font_configinfo, #font_configure, #font_copy, #kanjifont_configure, #kanjifont_copy, #latinfont_configure, #latinfont_copy
Methods inherited from TkObject
#epath, #event_generate, #method_missing, #path, #tk_send, #tk_send_to_list, #tk_send_to_list_with_enc, #tk_send_to_list_without_enc, #tk_send_to_simplelist, #tk_send_to_simplelist_with_enc, #tk_send_to_simplelist_without_enc, #tk_send_with_enc, #tk_send_without_enc, #to_eval
Methods included from TkCore
#_tk_call_to_list_core, #after, #after_cancel, #after_idle, #appname, #appsend, #appsend_deny, #appsend_displayof, callback, #callback_break, #callback_continue, #callback_return, #chooseColor, #chooseDirectory, #do_one_event, #event_generate, #getMultipleOpenFile, #getMultipleSaveFile, #getOpenFile, #getSaveFile, #get_eventloop_tick, #get_eventloop_weight, #get_no_event_wait, #inactive, #inactive_displayof, #info, #ip_eval, #ip_eval_with_enc, #ip_eval_without_enc, #ip_invoke, #ip_invoke_with_enc, #ip_invoke_without_enc, #is_mainloop?, #load_cmd_on_ip, #mainloop, #mainloop_exist?, #mainloop_thread?, #mainloop_watchdog, #messageBox, #rb_appsend, #rb_appsend_displayof, #reset_inactive, #reset_inactive_displayof, #restart, #scaling, #scaling_displayof, #set_eventloop_tick, #set_eventloop_weight, #set_no_event_wait, #tk_call, #tk_call_to_list, #tk_call_to_list_with_enc, #tk_call_to_list_without_enc, #tk_call_to_simplelist, #tk_call_to_simplelist_with_enc, #tk_call_to_simplelist_without_enc, #tk_call_with_enc, #tk_call_without_enc, #windowingsystem
Methods included from TkComm
#_at, #bind_all, #bind_append_all, #bind_remove_all, #bindinfo_all, #image_obj, #install_cmd, #subst, #uninstall_cmd
Methods included from TkEvent
#install_bind, #install_bind_for_event_class
Methods included from TkUtil
_conv_args, #_conv_args, #_fromUTF8, _get_eval_enc_str, #_get_eval_enc_str, #_get_eval_string, _get_eval_string, _symbolkey2str, #_symbolkey2str, #_toUTF8, bool, #bool, callback, eval_cmd, #hash_kv, hash_kv, install_cmd, num_or_str, #num_or_str, number, #number, string, #string, uninstall_cmd
Methods included from TkConfigMethod
#config_hash_kv, #configure_cmd
Methods included from TkTreatFont
#font_configinfo, #font_configure, #font_copy, #kanjifont_configure, #kanjifont_copy, #latinfont_configure, #latinfont_copy
Methods included from Tk
BinaryString, EncodedString, UTF8_String, add_kinsoku, bell, bell_on_display, const_missing, current_grabs, cursor_display, delete_kinsoku, destroy, #encoding, #encoding=, errorCode, errorInfo, exit, focus, focus_lastfor, focus_next, focus_prev, focus_to, fromUTF8, grid, grid_forget, has_mainwindow?, load_tcllibrary, load_tclscript, load_tclscript_rsrc, load_tclscript_rsrcid, lower_window, pack, pack_forget, pkgconfig_get, pkgconfig_list, place, place_forget, raise_window, #root, show_kinsoku, strictMotif, subst_tk_backslash, subst_utf_backslash, tcl_pkgconfig_get, tcl_pkgconfig_list, thread_update, thread_update_idletasks, tk_pkgconfig_get, tk_pkgconfig_list, toUTF8, to_backslash_sequence, ungrid, unload_tcllibrary, unpack, unplace, #update, update, update_idletasks, utf_to_backslash, utf_to_backslash_sequence
Methods included from Tk::Encoding
#encoding, #encoding=, #encoding_convertfrom, #encoding_convertto, #encoding_dirs, #encoding_dirs=, #encoding_names, #encoding_system, #encoding_system=
Methods inherited from TkKernel
Constructor Details
#initialize(parent, *args) ⇒ TkTextTag
Returns a new instance of TkTextTag.
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/tk/texttag.rb', line 23 def initialize(parent, *args) #unless parent.kind_of?(TkText) # fail ArgumentError, "expect TkText for 1st argument" #end @parent = @t = parent @tpath = parent.path # @path = @id = Tk_TextTag_ID.join('') @path = @id = Tk_TextTag_ID.join(TkCore::INTERP._ip_id_).freeze # TTagID_TBL[@id] = self TTagID_TBL[@tpath] = {} unless TTagID_TBL[@tpath] TTagID_TBL[@tpath][@id] = self Tk_TextTag_ID[1].succ! #tk_call @t.path, "tag", "configure", @id, *hash_kv(keys) if args != [] keys = args.pop if keys.kind_of?(Hash) add(*args) if args != [] configure(keys) else args.push keys add(*args) end end @t._addtag id, self end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class TkObject
Class Method Details
.id2obj(text, id) ⇒ Object
17 18 19 20 21 |
# File 'lib/tk/texttag.rb', line 17 def TkTextTag.id2obj(text, id) tpath = text.path return id unless TTagID_TBL[tpath] TTagID_TBL[tpath][id]? TTagID_TBL[tpath][id]: id end |
Instance Method Details
#[](key) ⇒ Object
107 108 109 |
# File 'lib/tk/texttag.rb', line 107 def [](key) cget key end |
#[]=(key, val) ⇒ Object
111 112 113 114 |
# File 'lib/tk/texttag.rb', line 111 def []=(key,val) configure key, val val end |
#add(*indices) ⇒ Object
70 71 72 73 74 |
# File 'lib/tk/texttag.rb', line 70 def add(*indices) tk_call_without_enc(@t.path, 'tag', 'add', @id, *(indices.collect{|idx| _get_eval_enc_str(idx)})) self end |
#bind(seq, *args) ⇒ Object
def bind(seq, cmd=Proc.new, *args)
_bind([@t.path, 'tag', 'bind', @id], seq, cmd, *args)
self
end
175 176 177 178 179 180 181 182 183 184 |
# File 'lib/tk/texttag.rb', line 175 def bind(seq, *args) # if args[0].kind_of?(Proc) || args[0].kind_of?(Method) if TkComm._callback_entry?(args[0]) || !block_given? cmd = args.shift else cmd = Proc.new end _bind([@t.path, 'tag', 'bind', @id], seq, cmd, *args) self end |
#bind_append(seq, *args) ⇒ Object
def bind_append(seq, cmd=Proc.new, *args)
_bind_append([@t.path, 'tag', 'bind', @id], seq, cmd, *args)
self
end
190 191 192 193 194 195 196 197 198 199 |
# File 'lib/tk/texttag.rb', line 190 def bind_append(seq, *args) # if args[0].kind_of?(Proc) || args[0].kind_of?(Method) if TkComm._callback_entry?(args[0]) || !block_given? cmd = args.shift else cmd = Proc.new end _bind_append([@t.path, 'tag', 'bind', @id], seq, cmd, *args) self end |
#bind_remove(seq) ⇒ Object
201 202 203 204 |
# File 'lib/tk/texttag.rb', line 201 def bind_remove(seq) _bind_remove([@t.path, 'tag', 'bind', @id], seq) self end |
#bindinfo(context = nil) ⇒ Object
206 207 208 |
# File 'lib/tk/texttag.rb', line 206 def bindinfo(context=nil) _bindinfo([@t.path, 'tag', 'bind', @id], context) end |
#cget(key) ⇒ Object
116 117 118 |
# File 'lib/tk/texttag.rb', line 116 def cget(key) @t.tag_cget @id, key end |
#configinfo(key = nil) ⇒ Object
def configure(key, val=None)
if key.kind_of?(Hash)
tk_call @t.path, 'tag', 'configure', @id, *hash_kv(key)
else
tk_call @t.path, 'tag', 'configure', @id, "-#{key}", val
end
end
def configure(key, value)
if value == FALSE
value = "0"
elsif value.kind_of?(Proc)
value = install_cmd(value)
end
tk_call @t.path, 'tag', 'configure', @id, "-#{key}", value
end
163 164 165 |
# File 'lib/tk/texttag.rb', line 163 def configinfo(key=nil) @t.tag_configinfo @id, key end |
#configure(key, val = None) ⇒ Object
def cget(key)
case key.to_s
when 'text', 'label', 'show', 'data', 'file'
_fromUTF8(tk_call_without_enc(@t.path, 'tag', 'cget', @id, "-#{key}"))
when 'font', 'kanjifont'
#fnt = tk_tcl2ruby(tk_call(@t.path, 'tag', 'cget', @id, "-#{key}"))
fnt = tk_tcl2ruby(_fromUTF8(tk_call_without_enc(@t.path, 'tag', 'cget',
@id, '-font')))
unless fnt.kind_of?(TkFont)
fnt = tagfontobj(@id, fnt)
end
if key.to_s == 'kanjifont' && JAPANIZED_TK && TK_VERSION =~ /^4\.*/
# obsolete; just for compatibility
fnt.kanji_font
else
fnt
end
else
tk_tcl2ruby(_fromUTF8(tk_call_without_enc(@t.path, 'tag', 'cget',
@id, "-#{key}")))
end
end
144 145 146 |
# File 'lib/tk/texttag.rb', line 144 def configure(key, val=None) @t.tag_configure @id, key, val end |
#current_configinfo(key = nil) ⇒ Object
167 168 169 |
# File 'lib/tk/texttag.rb', line 167 def current_configinfo(key=nil) @t.current_tag_configinfo @id, key end |
#destroy ⇒ Object
222 223 224 225 226 |
# File 'lib/tk/texttag.rb', line 222 def destroy tk_call_without_enc(@t.path, 'tag', 'delete', @id) TTagID_TBL[@tpath].delete(@id) if TTagID_TBL[@tpath] self end |
#exist? ⇒ Boolean
53 54 55 56 57 58 59 60 |
# File 'lib/tk/texttag.rb', line 53 def exist? #if ( tk_split_simplelist(_fromUTF8(tk_call_without_enc(@t.path, 'tag', 'names'))).find{|id| id == @id } ) if ( tk_split_simplelist(tk_call_without_enc(@t.path, 'tag', 'names'), false, true).find{|id| id == @id } ) true else false end end |
#first ⇒ Object
62 63 64 |
# File 'lib/tk/texttag.rb', line 62 def first TkText::IndexString.new(@id + '.first') end |
#id ⇒ Object
49 50 51 |
# File 'lib/tk/texttag.rb', line 49 def id TkText::IndexString.new(@id) end |
#last ⇒ Object
66 67 68 |
# File 'lib/tk/texttag.rb', line 66 def last TkText::IndexString.new(@id + '.last') end |
#lower(below = None) ⇒ Object
216 217 218 219 220 |
# File 'lib/tk/texttag.rb', line 216 def lower(below=None) tk_call_without_enc(@t.path, 'tag', 'lower', @id, _get_eval_enc_str(below)) self end |
#nextrange(first, last = None) ⇒ Object
91 92 93 94 95 96 97 |
# File 'lib/tk/texttag.rb', line 91 def nextrange(first, last=None) simplelist(tk_call_without_enc(@t.path, 'tag', 'nextrange', @id, _get_eval_enc_str(first), _get_eval_enc_str(last))).collect{|idx| TkText::IndexString.new(idx) } end |
#prevrange(first, last = None) ⇒ Object
99 100 101 102 103 104 105 |
# File 'lib/tk/texttag.rb', line 99 def prevrange(first, last=None) simplelist(tk_call_without_enc(@t.path, 'tag', 'prevrange', @id, _get_eval_enc_str(first), _get_eval_enc_str(last))).collect{|idx| TkText::IndexString.new(idx) } end |
#raise(above = None) ⇒ Object
210 211 212 213 214 |
# File 'lib/tk/texttag.rb', line 210 def raise(above=None) tk_call_without_enc(@t.path, 'tag', 'raise', @id, _get_eval_enc_str(above)) self end |
#ranges ⇒ Object
82 83 84 85 86 87 88 89 |
# File 'lib/tk/texttag.rb', line 82 def ranges l = tk_split_simplelist(tk_call_without_enc(@t.path, 'tag', 'ranges', @id)) r = [] while key=l.shift r.push [TkText::IndexString.new(key), TkText::IndexString.new(l.shift)] end r end |
#remove(*indices) ⇒ Object
76 77 78 79 80 |
# File 'lib/tk/texttag.rb', line 76 def remove(*indices) tk_call_without_enc(@t.path, 'tag', 'remove', @id, *(indices.collect{|idx| _get_eval_enc_str(idx)})) self end |