Class: TkTextTag
- Includes:
- Tk::Text::IndexModMethods, TkTreatTagFont
- Defined in:
- lib/tk/texttag.rb
Direct Known Subclasses
Constant Summary collapse
Constants included from TkCore
TkCore::EventFlag, TkCore::INTERP, TkCore::INTERP_MUTEX, TkCore::INTERP_ROOT_CHECK, TkCore::INTERP_THREAD, TkCore::INTERP_THREAD_STATUS, TkCore::RUN_EVENTLOOP_ON_MAIN_THREAD, TkCore::WIDGET_DESTROY_HOOK, TkCore::WITH_ENCODING, TkCore::WITH_RUBY_VM
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::Fontchooser, 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
Tk::Encoding::BINARY, Tk::Encoding::BINARY_NAME, Tk::Encoding::DEFAULT_EXTERNAL_NAME, Tk::Encoding::DEFAULT_INTERNAL_NAME, Tk::Encoding::ENCODING_TABLE, Tk::Encoding::RubyEncoding, Tk::Encoding::TkCommandNames, Tk::Encoding::UNKNOWN, Tk::Encoding::UTF8_NAME
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
- #cget_strict(key) ⇒ Object
- #cget_tkstring(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 Tk::Text::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, _callback_entry?, _callback_entry_class?, _curr_cmd_id, _fromUTF8, _genobj_for_tkwidget, _next_cmd_id, _toUTF8, array2tk_list, #bind_all, #bind_append_all, #bind_remove_all, #bindinfo_all, bool, image_obj, install_cmd, #install_cmd, list, num_or_nil, num_or_str, number, procedure, simplelist, slice_ary, string, #subst, tk_tcl2ruby, uninstall_cmd, #uninstall_cmd, window
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_nil, num_or_nil, num_or_str, #num_or_str, number, #number, string, #string, uninstall_cmd, untrust
Methods included from TkConfigMethod
__IGNORE_UNKNOWN_CONFIGURE_OPTION__, #__check_available_configure_options, __set_IGNORE_UNKNOWN_CONFIGURE_OPTION__!, #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, #Grid, #Pack, #Place, UTF8_String, __create_widget_set__, __disable_toplevel_control__, __import_toplevel_aliases__, __regist_toplevel_aliases__, __remove_toplevel_aliases__, __reset_toplevel_owner__, __set_loaded_toplevel_aliases__, __set_toplevel_aliases__, __toplevel_alias_setup_proc__, _replace_toplevel_aliases, add_kinsoku, backup_current_topdef, bell, bell_on_display, const_missing, current_grabs, cursor_display, default_widget_set, default_widget_set=, define_topalias, define_topobj, 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, regist_sym_for_loaded_file, replace_topalias, replace_topobj, #root, set_topalias, show_kinsoku, sleep, 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, topalias_defined?, toplevel_aliases_on_widget_set, topobj_defined?, ungrid, unload_tcllibrary, unpack, unplace, update, #update, update_idletasks, utf_to_backslash, utf_to_backslash_sequence, wakeup, widget_set_symbols
Methods included from Tk::Encoding
#default_encoding=, #encoding=, #encoding_convertfrom, #encoding_convertto, #encoding_dirs, #encoding_dirs=, #encoding_name, #encoding_names, #encoding_obj, #encoding_objs, #encoding_system=, #encoding_system_name, #encoding_system_obj, #force_default_encoding, #force_default_encoding=, #force_default_encoding?, #tk_encoding_names
Methods inherited from TkKernel
Constructor Details
#initialize(parent, *args) ⇒ TkTextTag
Returns a new instance of TkTextTag.
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/tk/texttag.rb', line 36 def initialize(parent, *args) #unless parent.kind_of?(TkText) # fail ArgumentError, "expect TkText for 1st argument" #end @parent = @t = parent @tpath = parent.path Tk_TextTag_ID.mutex.synchronize{ # @path = @id = Tk_TextTag_ID.join('') @path = @id = Tk_TextTag_ID.join(TkCore::INTERP._ip_id_).freeze Tk_TextTag_ID[1].succ! } TTagID_TBL.mutex.synchronize{ TTagID_TBL[@id] = self TTagID_TBL[@tpath] = {} unless TTagID_TBL[@tpath] TTagID_TBL[@tpath][@id] = self } #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
25 26 27 28 29 30 31 32 33 34 |
# File 'lib/tk/texttag.rb', line 25 def TkTextTag.id2obj(text, id) tpath = text.path TTagID_TBL.mutex.synchronize{ if TTagID_TBL[tpath] TTagID_TBL[tpath][id]? TTagID_TBL[tpath][id]: id else id end } end |
Instance Method Details
#[](key) ⇒ Object
124 125 126 |
# File 'lib/tk/texttag.rb', line 124 def [](key) cget key end |
#[]=(key, val) ⇒ Object
128 129 130 131 |
# File 'lib/tk/texttag.rb', line 128 def []=(key,val) configure key, val val end |
#add(*indices) ⇒ Object
87 88 89 90 91 |
# File 'lib/tk/texttag.rb', line 87 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
198 199 200 201 202 203 204 205 206 207 |
# File 'lib/tk/texttag.rb', line 198 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
213 214 215 216 217 218 219 220 221 222 |
# File 'lib/tk/texttag.rb', line 213 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
224 225 226 227 |
# File 'lib/tk/texttag.rb', line 224 def bind_remove(seq) _bind_remove([@t.path, 'tag', 'bind', @id], seq) self end |
#bindinfo(context = nil) ⇒ Object
229 230 231 |
# File 'lib/tk/texttag.rb', line 229 def bindinfo(context=nil) _bindinfo([@t.path, 'tag', 'bind', @id], context) end |
#cget(key) ⇒ Object
136 137 138 |
# File 'lib/tk/texttag.rb', line 136 def cget(key) @t.tag_cget @id, key end |
#cget_strict(key) ⇒ Object
139 140 141 |
# File 'lib/tk/texttag.rb', line 139 def cget_strict(key) @t.tag_cget_strict @id, key end |
#cget_tkstring(key) ⇒ Object
133 134 135 |
# File 'lib/tk/texttag.rb', line 133 def cget_tkstring(key) @t.tag_cget_tkstring @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
186 187 188 |
# File 'lib/tk/texttag.rb', line 186 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
167 168 169 |
# File 'lib/tk/texttag.rb', line 167 def configure(key, val=None) @t.tag_configure @id, key, val end |
#current_configinfo(key = nil) ⇒ Object
190 191 192 |
# File 'lib/tk/texttag.rb', line 190 def current_configinfo(key=nil) @t.current_tag_configinfo @id, key end |
#destroy ⇒ Object
245 246 247 248 249 250 251 |
# File 'lib/tk/texttag.rb', line 245 def destroy tk_call_without_enc(@t.path, 'tag', 'delete', @id) TTagID_TBL.mutex.synchronize{ TTagID_TBL[@tpath].delete(@id) if TTagID_TBL[@tpath] } self end |
#exist? ⇒ Boolean
70 71 72 73 74 75 76 77 |
# File 'lib/tk/texttag.rb', line 70 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
79 80 81 |
# File 'lib/tk/texttag.rb', line 79 def first Tk::Text::IndexString.new(@id + '.first') end |
#id ⇒ Object
66 67 68 |
# File 'lib/tk/texttag.rb', line 66 def id Tk::Text::IndexString.new(@id) end |
#last ⇒ Object
83 84 85 |
# File 'lib/tk/texttag.rb', line 83 def last Tk::Text::IndexString.new(@id + '.last') end |
#lower(below = None) ⇒ Object
239 240 241 242 243 |
# File 'lib/tk/texttag.rb', line 239 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
108 109 110 111 112 113 114 |
# File 'lib/tk/texttag.rb', line 108 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| Tk::Text::IndexString.new(idx) } end |
#prevrange(first, last = None) ⇒ Object
116 117 118 119 120 121 122 |
# File 'lib/tk/texttag.rb', line 116 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| Tk::Text::IndexString.new(idx) } end |
#raise(above = None) ⇒ Object
233 234 235 236 237 |
# File 'lib/tk/texttag.rb', line 233 def raise(above=None) tk_call_without_enc(@t.path, 'tag', 'raise', @id, _get_eval_enc_str(above)) self end |
#ranges ⇒ Object
99 100 101 102 103 104 105 106 |
# File 'lib/tk/texttag.rb', line 99 def ranges l = tk_split_simplelist(tk_call_without_enc(@t.path, 'tag', 'ranges', @id)) r = [] while key=l.shift r.push [Tk::Text::IndexString.new(key), Tk::Text::IndexString.new(l.shift)] end r end |
#remove(*indices) ⇒ Object
93 94 95 96 97 |
# File 'lib/tk/texttag.rb', line 93 def remove(*indices) tk_call_without_enc(@t.path, 'tag', 'remove', @id, *(indices.collect{|idx| _get_eval_enc_str(idx)})) self end |