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.
35 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 |
# File 'lib/tk/texttag.rb', line 35 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
24 25 26 27 28 29 30 31 32 33 |
# File 'lib/tk/texttag.rb', line 24 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
123 124 125 |
# File 'lib/tk/texttag.rb', line 123 def [](key) cget key end |
#[]=(key, val) ⇒ Object
127 128 129 130 |
# File 'lib/tk/texttag.rb', line 127 def []=(key,val) configure key, val val end |
#add(*indices) ⇒ Object
86 87 88 89 90 |
# File 'lib/tk/texttag.rb', line 86 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
197 198 199 200 201 202 203 204 205 206 |
# File 'lib/tk/texttag.rb', line 197 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
212 213 214 215 216 217 218 219 220 221 |
# File 'lib/tk/texttag.rb', line 212 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
223 224 225 226 |
# File 'lib/tk/texttag.rb', line 223 def bind_remove(seq) _bind_remove([@t.path, 'tag', 'bind', @id], seq) self end |
#bindinfo(context = nil) ⇒ Object
228 229 230 |
# File 'lib/tk/texttag.rb', line 228 def bindinfo(context=nil) _bindinfo([@t.path, 'tag', 'bind', @id], context) end |
#cget(key) ⇒ Object
135 136 137 |
# File 'lib/tk/texttag.rb', line 135 def cget(key) @t.tag_cget @id, key end |
#cget_strict(key) ⇒ Object
138 139 140 |
# File 'lib/tk/texttag.rb', line 138 def cget_strict(key) @t.tag_cget_strict @id, key end |
#cget_tkstring(key) ⇒ Object
132 133 134 |
# File 'lib/tk/texttag.rb', line 132 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
185 186 187 |
# File 'lib/tk/texttag.rb', line 185 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
166 167 168 |
# File 'lib/tk/texttag.rb', line 166 def configure(key, val=None) @t.tag_configure @id, key, val end |
#current_configinfo(key = nil) ⇒ Object
189 190 191 |
# File 'lib/tk/texttag.rb', line 189 def current_configinfo(key=nil) @t.current_tag_configinfo @id, key end |
#destroy ⇒ Object
244 245 246 247 248 249 250 |
# File 'lib/tk/texttag.rb', line 244 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
69 70 71 72 73 74 75 76 |
# File 'lib/tk/texttag.rb', line 69 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
78 79 80 |
# File 'lib/tk/texttag.rb', line 78 def first Tk::Text::IndexString.new(@id + '.first') end |
#id ⇒ Object
65 66 67 |
# File 'lib/tk/texttag.rb', line 65 def id Tk::Text::IndexString.new(@id) end |
#last ⇒ Object
82 83 84 |
# File 'lib/tk/texttag.rb', line 82 def last Tk::Text::IndexString.new(@id + '.last') end |
#lower(below = None) ⇒ Object
238 239 240 241 242 |
# File 'lib/tk/texttag.rb', line 238 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
107 108 109 110 111 112 113 |
# File 'lib/tk/texttag.rb', line 107 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
115 116 117 118 119 120 121 |
# File 'lib/tk/texttag.rb', line 115 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
232 233 234 235 236 |
# File 'lib/tk/texttag.rb', line 232 def raise(above=None) tk_call_without_enc(@t.path, 'tag', 'raise', @id, _get_eval_enc_str(above)) self end |
#ranges ⇒ Object
98 99 100 101 102 103 104 105 |
# File 'lib/tk/texttag.rb', line 98 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
92 93 94 95 96 |
# File 'lib/tk/texttag.rb', line 92 def remove(*indices) tk_call_without_enc(@t.path, 'tag', 'remove', @id, *(indices.collect{|idx| _get_eval_enc_str(idx)})) self end |