File: tk/textwindow.rb

Overview
Module Structure
Class Hierarchy
Code

Overview

Module Structure

  module: <Toplevel Module>
  class: TkTextWindow#7
includes
  IndexModMethods ( Tk::Text )
inherits from
  TkObject   
has properties
method: initialize / 3 #10
method: id #57
method: mark #60
method: [] / 1 #64
method: []= / 2 #67
method: cget / 1 #72
method: cget_strict / 1 #75
method: configure / 2 #79
method: configinfo / 1 #110
method: current_configinfo / 1 #114
method: window #118
method: window= / 1 #122
method: create #131
method: create= / 1 #135

Class Hierarchy

Object ( Builtin-Module )
TkKernel
TkObject
  TkTextWindow    #7

Code

   1  #
   2  # tk/textwindow.rb - treat Tk text window object
   3  #
   4  require 'tk'
   5  require 'tk/text'
   6 
   7  class TkTextWindow<TkObject
   8    include Tk::Text::IndexModMethods
   9 
  10    def initialize(parent, index, keys = {})
  11      #unless parent.kind_of?(Tk::Text)
  12      #  fail ArgumentError, "expect Tk::Text for 1st argument"
  13      #end
  14      @t = parent
  15      if index == 'end' || index == :end
  16        @path = TkTextMark.new(@t, tk_call_without_enc(@t.path, 'index', 
  17                                                       'end - 1 chars'))
  18      elsif index.kind_of?(TkTextMark)
  19        if tk_call_without_enc(@t.path,'index',index.path) == tk_call_without_enc(@t.path,'index','end')
  20          @path = TkTextMark.new(@t, tk_call_without_enc(@t.path, 'index', 
  21                                                         'end - 1 chars'))
  22        else
  23          @path = TkTextMark.new(@t, tk_call_without_enc(@t.path, 'index', 
  24                                                         index.path))
  25        end
  26      else
  27        @path = TkTextMark.new(@t, tk_call_without_enc(@t.path, 'index', _get_eval_enc_str(index)))
  28      end
  29      @path.gravity = 'left'
  30      @index = @path.path
  31      keys = _symbolkey2str(keys)
  32      @id = keys['window']
  33      # keys['window'] = @id.epath if @id.kind_of?(TkWindow)
  34      keys['window'] = _epath(@id) if @id
  35      if keys['create']
  36        @p_create = keys['create']
  37        # if @p_create.kind_of?(Proc)
  38        if TkComm._callback_entry?(@p_create)
  39  =begin
  40          keys['create'] = install_cmd(proc{
  41                                         @id = @p_create.call
  42                                         if @id.kind_of?(TkWindow)
  43                                           @id.epath
  44                                         else
  45                                           @id
  46                                         end
  47                                       })
  48  =end
  49          keys['create'] = install_cmd(proc{@id = @p_create.call; _epath(@id)})
  50        end
  51      end
  52      tk_call_without_enc(@t.path, 'window', 'create', @index, 
  53                          *hash_kv(keys, true))
  54      @path.gravity = 'right'
  55    end
  56 
  57    def id
  58      Tk::Text::IndexString.new(_epath(@id))
  59    end
  60    def mark
  61      @path
  62    end
  63 
  64    def [](slot)
  65      cget(slot)
  66    end
  67    def []=(slot, value)
  68      configure(slot, value)
  69      value
  70    end
  71 
  72    def cget(slot)
  73      @t.window_cget(@index, slot)
  74    end
  75    def cget_strict(slot)
  76      @t.window_cget_strict(@index, slot)
  77    end
  78 
  79    def configure(slot, value=None)
  80      if slot.kind_of?(Hash)
  81        slot = _symbolkey2str(slot)
  82        if slot['window']
  83          @id = slot['window'] 
  84          # slot['window'] = @id.epath if @id.kind_of?(TkWindow)
  85          slot['window'] = _epath(@id) if @id
  86        end
  87        if slot['create']
  88          self.create=slot.delete('create')
  89        end
  90        if slot.size > 0
  91          tk_call_without_enc(@t.path, 'window', 'configure', @index, 
  92                              *hash_kv(slot, true))
  93        end
  94      else
  95        if slot == 'window' || slot == :window
  96          @id = value 
  97          # value = @id.epath if @id.kind_of?(TkWindow)
  98          value = _epath(@id) if @id
  99        end
 100        if slot == 'create' || slot == :create
 101          self.create=value
 102        else
 103          tk_call_without_enc(@t.path, 'window', 'configure', @index, 
 104                              "-#{slot}", _get_eval_enc_str(value))
 105        end
 106      end
 107      self
 108    end
 109 
 110    def configinfo(slot = nil)
 111      @t.window_configinfo(@index, slot)
 112    end
 113 
 114    def current_configinfo(slot = nil)
 115      @t.current_window_configinfo(@index, slot)
 116    end
 117 
 118    def window
 119      @id
 120    end
 121 
 122    def window=(value)
 123      @id = value
 124      # value = @id.epath if @id.kind_of?(TkWindow)
 125      value = _epath(@id) if @id
 126      tk_call_without_enc(@t.path, 'window', 'configure', @index, 
 127                          '-window', _get_eval_enc_str(value))
 128      value
 129    end
 130 
 131    def create
 132      @p_create
 133    end
 134 
 135    def create=(value)
 136      @p_create = value
 137      # if @p_create.kind_of?(Proc)
 138      if TkComm._callback_entry?(@p_create)
 139        value = install_cmd(proc{
 140                              @id = @p_create.call
 141                              if @id.kind_of?(TkWindow)
 142                                @id.epath
 143                              else
 144                                @id
 145                              end
 146                            })
 147      end
 148      tk_call_without_enc(@t.path, 'window', 'configure', @index, 
 149                          '-create', _get_eval_enc_str(value))
 150      value
 151    end
 152  end
 153 
 154  TktWindow = TkTextWindow