Class: TkTextTag
- Includes:
- Tk::Text::IndexModMethods, TkTreatTagFont
- Defined in:
- ext/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::JAPANIZED_TK, Tk::LIBRARY_PATH, Tk::Labelframe, 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
-
#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_str, number, procedure, simplelist, 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_str, #num_or_str, number, #number, string, #string, uninstall_cmd
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, __set_toplevel_aliases__, add_kinsoku, bell, bell_on_display, const_missing, current_grabs, cursor_display, default_widget_set, default_widget_set=, delete_kinsoku, destroy, 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, 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, ungrid, unload_tcllibrary, unpack, unplace, #update, update, update_idletasks, utf_to_backslash, utf_to_backslash_sequence, wakeup
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 'ext/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 'ext/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 'ext/lib/tk/texttag.rb', line 123 def [](key) cget key end |
#[]=(key, val) ⇒ Object
127 128 129 130 |
# File 'ext/lib/tk/texttag.rb', line 127 def []=(key,val) configure key, val val end |
#add(*indices) ⇒ Object
86 87 88 89 90 |
# File 'ext/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
194 195 196 197 198 199 200 201 202 203 |
# File 'ext/lib/tk/texttag.rb', line 194 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
209 210 211 212 213 214 215 216 217 218 |
# File 'ext/lib/tk/texttag.rb', line 209 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
220 221 222 223 |
# File 'ext/lib/tk/texttag.rb', line 220 def bind_remove(seq) _bind_remove([@t.path, 'tag', 'bind', @id], seq) self end |
#bindinfo(context = nil) ⇒ Object
225 226 227 |
# File 'ext/lib/tk/texttag.rb', line 225 def bindinfo(context=nil) _bindinfo([@t.path, 'tag', 'bind', @id], context) end |
#cget(key) ⇒ Object
132 133 134 |
# File 'ext/lib/tk/texttag.rb', line 132 def cget(key) @t.tag_cget @id, key end |
#cget_strict(key) ⇒ Object
135 136 137 |
# File 'ext/lib/tk/texttag.rb', line 135 def cget_strict(key) @t.tag_cget_strict @id, key end |
#configinfo(key = nil) ⇒ Object
end
182 183 184 |
# File 'ext/lib/tk/texttag.rb', line 182 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
163 164 165 |
# File 'ext/lib/tk/texttag.rb', line 163 def configure(key, val=None) @t.tag_configure @id, key, val end |
#current_configinfo(key = nil) ⇒ Object
186 187 188 |
# File 'ext/lib/tk/texttag.rb', line 186 def current_configinfo(key=nil) @t.current_tag_configinfo @id, key end |
#destroy ⇒ Object
241 242 243 244 245 246 247 |
# File 'ext/lib/tk/texttag.rb', line 241 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 'ext/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 'ext/lib/tk/texttag.rb', line 78 def first Tk::Text::IndexString.new(@id + '.first') end |
#id ⇒ Object
65 66 67 |
# File 'ext/lib/tk/texttag.rb', line 65 def id Tk::Text::IndexString.new(@id) end |
#last ⇒ Object
82 83 84 |
# File 'ext/lib/tk/texttag.rb', line 82 def last Tk::Text::IndexString.new(@id + '.last') end |
#lower(below = None) ⇒ Object
235 236 237 238 239 |
# File 'ext/lib/tk/texttag.rb', line 235 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 'ext/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 'ext/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
229 230 231 232 233 |
# File 'ext/lib/tk/texttag.rb', line 229 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 'ext/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 'ext/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 |