Class: TkTextTag
- Includes:
- Tk::Text::IndexModMethods, TkTreatTagFont
- Defined in:
- lib/tk/texttag.rb
Direct Known Subclasses
Constant Summary collapse
- TTagID_TBL =
TkCore::INTERP.create_table
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::Checkbutton, Tk::CloneMenu, Tk::Fontchooser, Tk::INTERP, Tk::JAPANIZED_TK, Tk::LIBRARY_PATH, Tk::Labelframe, Tk::MAINLOOP, Tk::MenuButton, Tk::OptionMenuButton, Tk::PACKAGE_PATH, Tk::Panedwindow, Tk::RELEASE_DATE, Tk::Radiobutton, 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
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 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 TkEvent
#install_bind, #install_bind_for_event_class
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
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
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 |