# class TktMark

### Constants

TMarkID_TBL
Tk_TextMark_ID

### Public Class Methods

id2obj(text, id) click to toggle source

    # File lib/tk/textmark.rb, line 23
    def TkTextMark.id2obj(text, id)
      tpath = text.path
      TMarkID_TBL.mutex.synchronize{
        if TMarkID_TBL[tpath]
          TMarkID_TBL[tpath][id]? TMarkID_TBL[tpath][id]: id
        else
          id
        end
      }
    end

new(parent, index) click to toggle source

    # File lib/tk/textmark.rb, line 34
    def initialize(parent, index)
      #unless parent.kind_of?(Tk::Text)
      #  fail ArgumentError, "expect Tk::Text for 1st argument"
      #end
      @parent = @t = parent
      @tpath = parent.path
      Tk_TextMark_ID.mutex.synchronize{
        # @path = @id = Tk_TextMark_ID.join('')
        @path = @id = Tk_TextMark_ID.join(TkCore::INTERP._ip_id_).freeze
        Tk_TextMark_ID[1].succ!
      }
      TMarkID_TBL.mutex.synchronize{
        TMarkID_TBL[@id] = self
        TMarkID_TBL[@tpath] = {} unless TMarkID_TBL[@tpath]
        TMarkID_TBL[@tpath][@id] = self
      }
      tk_call_without_enc(@t.path, 'mark', 'set', @id,
                          _get_eval_enc_str(index))
      @t._addtag id, self
    end

### Public Instance Methods

destroy()
Alias for: unset
exist?() click to toggle source

    # File lib/tk/textmark.rb, line 59
    def exist?
      #if ( tk_split_simplelist(_fromUTF8(tk_call_without_enc(@t.path, 'mark', 'names'))).find{|id| id == @id } )
      if ( tk_split_simplelist(tk_call_without_enc(@t.path, 'mark', 'names'), false, true).find{|id| id == @id } )
        true
      else
        false
      end
    end

gravity() click to toggle source

    # File lib/tk/textmark.rb, line 115
    def gravity
      tk_call_without_enc(@t.path, 'mark', 'gravity', @id)
    end

gravity=(direction) click to toggle source

    # File lib/tk/textmark.rb, line 119
    def gravity=(direction)
      tk_call_without_enc(@t.path, 'mark', 'gravity', @id, direction)
      #self
      direction
    end

id() click to toggle source

    # File lib/tk/textmark.rb, line 55
    def id
      Tk::Text::IndexString.new(@id)
    end

mutex() click to toggle source

    # File lib/tk/textmark.rb, line 15
    def mutex; @mutex; end

next(index = nil) click to toggle source

    # File lib/tk/textmark.rb, line 125
    def next(index = nil)
      if index
        @t.tagid2obj(_fromUTF8(tk_call_without_enc(@t.path, 'mark', 'next', _get_eval_enc_str(index))))
      else
        @t.tagid2obj(_fromUTF8(tk_call_without_enc(@t.path, 'mark', 'next', @id)))
      end
    end

pos() click to toggle source

# begin¶ ↑

    # move to Tk::Text::IndexModMethods module
    def +(mod)
      return chars(mod) if mod.kind_of?(Numeric)

      mod = mod.to_s
      if mod =~ /^\s*[+-]?\d/
        Tk::Text::IndexString.new(@id + ' + ' + mod)
      else
        Tk::Text::IndexString.new(@id + ' ' + mod)
      end
    end

    def -(mod)
      return chars(-mod) if mod.kind_of?(Numeric)

      mod = mod.to_s
      if mod =~ /^\s*[+-]?\d/
        Tk::Text::IndexString.new(@id + ' - ' + mod)
      elsif mod =~ /^\s*[-]\s+(\d.*)$/
        Tk::Text::IndexString.new(@id + ' - -' + $1)
      else
        Tk::Text::IndexString.new(@id + ' ' + mod)
      end
    end

# end¶ ↑

    # File lib/tk/textmark.rb, line 95
    def pos
      @t.index(@id)
    end

pos=(where) click to toggle source

    # File lib/tk/textmark.rb, line 99
    def pos=(where)
      set(where)
    end

previous(index = nil) click to toggle source

    # File lib/tk/textmark.rb, line 133
    def previous(index = nil)
      if index
        @t.tagid2obj(_fromUTF8(tk_call_without_enc(@t.path, 'mark', 'previous', _get_eval_enc_str(index))))
      else
        @t.tagid2obj(_fromUTF8(tk_call_without_enc(@t.path, 'mark', 'previous', @id)))
      end
    end

set(where) click to toggle source

    # File lib/tk/textmark.rb, line 103
    def set(where)
      tk_call_without_enc(@t.path, 'mark', 'set', @id,
                          _get_eval_enc_str(where))
      self
    end

unset() click to toggle source

    # File lib/tk/textmark.rb, line 109
    def unset
      tk_call_without_enc(@t.path, 'mark', 'unset', @id)
      self
    end

Also aliased as: destroy