TkWindow (Class)

In: tk/lib/tk.rb
Parent: TkObject

Constants

WidgetClassName = ''.freeze

Included Modules

TkWinfo

Public Class methods

[Source]

# File tk/lib/tk.rb, line 2343
  def self.database_class
    WidgetClassNames[self::WidgetClassName]
  end

[Source]

# File tk/lib/tk.rb, line 2340
  def self.database_classname
    self::WidgetClassName
  end

[Source]

# File tk/lib/tk.rb, line 2269
  def initialize(parent=nil, keys=nil)
    if parent.kind_of? Hash
      keys = _symbolkey2str(parent)
      parent = keys.delete('parent')
      widgetname = keys.delete('widgetname')
      install_win(if parent then parent.path end, widgetname)
      without_creating = keys.delete('without_creating')
      if without_creating && !widgetname 
        fail ArgumentError, 
             "if set 'without_creating' to true, need to define 'widgetname'"
      end
    elsif keys
      keys = _symbolkey2str(keys)
      widgetname = keys.delete('widgetname')
      install_win(if parent then parent.path end, widgetname)
      without_creating = keys.delete('without_creating')
      if without_creating && !widgetname 
        fail ArgumentError, 
             "if set 'without_creating' to true, need to define 'widgetname'"
      end
    else
      install_win(if parent then parent.path end)
    end
    if self.method(:create_self).arity == 0
      p 'create_self has no arg' if $DEBUG
      create_self unless without_creating
      if keys
        # tk_call @path, 'configure', *hash_kv(keys)

        configure(keys)
      end
    else
      p 'create_self has args' if $DEBUG
      fontkeys = {}
      if keys
        ['font', 'kanjifont', 'latinfont', 'asciifont'].each{|key|
          fontkeys[key] = keys.delete(key) if keys.key?(key)
        }
      end
      if without_creating && keys
        configure(keys)
      else
        create_self(keys)
      end
      font_configure(fontkeys) unless fontkeys.empty?
    end
  end

[Source]

# File tk/lib/tk.rb, line 2265
  def self.to_eval
    self::WidgetClassName
  end

Public Instance methods

[Source]

# File tk/lib/tk.rb, line 2325
  def bind_class
    @db_class || self.class()
  end

[Source]

# File tk/lib/tk.rb, line 2771
  def bindtags(taglist=nil)
    if taglist
      fail ArgumentError, "taglist must be Array" unless taglist.kind_of? Array
      tk_call('bindtags', path, taglist)
      taglist
    else
      list(tk_call('bindtags', path)).collect{|tag|
        if tag.kind_of?(String) 
          if cls = WidgetClassNames[tag]
            cls
          elsif btag = TkBindTag.id2obj(tag)
            btag
          else
            tag
          end
        else
          tag
        end
      }
    end
  end

[Source]

# File tk/lib/tk.rb, line 2793
  def bindtags=(taglist)
    bindtags(taglist)
    taglist
  end

[Source]

# File tk/lib/tk.rb, line 2798
  def bindtags_shift
    taglist = bindtags
    tag = taglist.shift
    bindtags(taglist)
    tag
  end

[Source]

# File tk/lib/tk.rb, line 2805
  def bindtags_unshift(tag)
    bindtags(bindtags().unshift(tag))
  end

[Source]

# File tk/lib/tk.rb, line 2691
  def caret(keys=nil)
    TkXIM.caret(path, keys)
  end

[Source]

# File tk/lib/tk.rb, line 2686
  def colormodel(model=None)
    tk_call('tk', 'colormodel', path, model)
    self
  end

[Source]

# File tk/lib/tk.rb, line 2676
  def command(cmd=nil, &b)
    if cmd
      configure_cmd('command', cmd)
    elsif b
      configure_cmd('command', Proc.new(&b))
    else
      cget('command')
    end
  end

[Source]

# File tk/lib/tk.rb, line 2332
  def database_class
    name = database_classname()
    if WidgetClassNames[name]
      WidgetClassNames[name]
    else
      TkDatabaseClass.new(name)
    end
  end

[Source]

# File tk/lib/tk.rb, line 2329
  def database_classname
    TkWinfo.classname(self)
  end

[Source]

# File tk/lib/tk.rb, line 2695
  def destroy
    super
    children = []
    rexp = /^#{self.path}\.[^.]+$/
    TkCore::INTERP.tk_windows.each{|path, obj|
      children << [path, obj] if path =~ rexp
    }
    if defined?(@cmdtbl)
      for id in @cmdtbl
        uninstall_cmd id
      end
    end

    children.each{|path, obj|
      if defined?(@cmdtbl)
        for id in @cmdtbl
          uninstall_cmd id
        end
      end
      TkCore::INTERP.tk_windows.delete(path)
    }

    begin
      tk_call_without_enc('destroy', epath)
    rescue
    end
    uninstall_win
  end
eventloop_tkwait()
eventloop_tkwait_destroy()
eventloop_tkwait_visibility()
eventloop_wait()

[Source]

# File tk/lib/tk.rb, line 2761
  def eventloop_wait_destroy
    wait_destroy(false)
  end

[Source]

# File tk/lib/tk.rb, line 2735
  def eventloop_wait_visibility
    wait_visibility(false)
  end

[Source]

# File tk/lib/tk.rb, line 2321
  def exist?
    TkWinfo.exist?(self)
  end
focus(force=false)

Alias for set_focus

[Source]

# File tk/lib/tk.rb, line 2623
  def grab(opt = nil)
    unless opt
      tk_call_without_enc('grab', 'set', path)
      return self
    end

    case opt
    when 'global', :global
      #return(tk_call('grab', 'set', '-global', path))

      tk_call_without_enc('grab', 'set', '-global', path)
      return self
    when 'release', :release
      #return tk_call('grab', 'release', path)

      tk_call_without_enc('grab', 'release', path)
      return self
    when 'current', :current
      return window(tk_call_without_enc('grab', 'current', path))
    when 'status', :status
      return tk_call_without_enc('grab', 'status', path)
    else
      return tk_call_without_enc('grab', args[0], path)
    end
  end

[Source]

# File tk/lib/tk.rb, line 2647
  def grab_current
    grab('current')
  end

[Source]

# File tk/lib/tk.rb, line 2650
  def grab_release
    grab('release')
  end

[Source]

# File tk/lib/tk.rb, line 2653
  def grab_set
    grab('set')
  end

[Source]

# File tk/lib/tk.rb, line 2656
  def grab_set_global
    grab('global')
  end

[Source]

# File tk/lib/tk.rb, line 2659
  def grab_status
    grab('status')
  end

[Source]

# File tk/lib/tk.rb, line 2419
  def grid(keys = nil)
    #tk_call 'grid', epath, *hash_kv(keys)

    if keys
      TkGrid.configure(self, keys)
    else
      TkGrid.configure(self)
    end
    self
  end

[Source]

# File tk/lib/tk.rb, line 2448
  def grid_bbox(*args)
    #list(tk_call('grid', 'bbox', epath, *args))

    TkGrid.bbox(self, *args)
  end

[Source]

# File tk/lib/tk.rb, line 2466
  def grid_columnconfig(index, keys)
    #tk_call('grid', 'columnconfigure', epath, index, *hash_kv(keys))

    TkGrid.columnconfigure(self, index, keys)
  end

[Source]

# File tk/lib/tk.rb, line 2478
  def grid_columnconfiginfo(index, slot=nil)
    #if slot

    #  tk_call('grid', 'columnconfigure', epath, index, "-#{slot}").to_i

    #else

    #  ilist = list(tk_call('grid', 'columnconfigure', epath, index))

    #  info = {}

    #  while key = ilist.shift

    #   info[key[1..-1]] = ilist.shift

    #  end

    #  info

    #end

    TkGrid.columnconfiginfo(self, index, slot)
  end
grid_columnconfigure(index, keys)

Alias for grid_columnconfig

[Source]

# File tk/lib/tk.rb, line 2453
  def grid_config(slot, value=None)
    #if slot.kind_of? Hash

    #  tk_call 'grid', 'configure', epath, *hash_kv(slot)

    #else

    #  tk_call 'grid', 'configure', epath, "-#{slot}", value

    #end

    if slot.kind_of? Hash
      TkGrid.configure(self, slot)
    else
      TkGrid.configure(self, slot=>value)
    end
  end

[Source]

# File tk/lib/tk.rb, line 2441
  def  grid_forget
    #tk_call('grid', 'forget', epath)

    TkGrid.forget(self)
    self
  end

[Source]

# File tk/lib/tk.rb, line 2429
  def grid_in(target, keys = nil)
    if keys
      keys = keys.dup
      keys['in'] = target
    else
      keys = {'in'=>target}
    end
    #tk_call 'grid', epath, *hash_kv(keys)

    TkGrid.configure(self, keys)
    self
  end

[Source]

# File tk/lib/tk.rb, line 2506
  def grid_info()
    #list(tk_call('grid', 'info', epath))

    TkGrid.info(self)
  end

[Source]

# File tk/lib/tk.rb, line 2511
  def grid_location(x, y)
    #list(tk_call('grid', 'location', epath, x, y))

    TkGrid.location(self, x, y)
  end

[Source]

# File tk/lib/tk.rb, line 2516
  def grid_propagate(mode=None)
    #if mode == None

    #  bool(tk_call('grid', 'propagate', epath))

    #else

    #  tk_call('grid', 'propagate', epath, mode)

    #  self

    #end

    if mode == None
      TkGrid.propagete(self)
    else
      TkGrid.propagete(self, mode)
      self
    end
  end

[Source]

# File tk/lib/tk.rb, line 2531
  def grid_remove()
    #tk_call 'grid', 'remove', epath

    TkGrid.remove(self)
    self
  end

[Source]

# File tk/lib/tk.rb, line 2472
  def grid_rowconfig(index, keys)
    #tk_call('grid', 'rowconfigure', epath, index, *hash_kv(keys))

    TkGrid.rowconfigure(self, index, keys)
  end

[Source]

# File tk/lib/tk.rb, line 2492
  def grid_rowconfiginfo(index, slot=nil)
    #if slot

    #  tk_call('grid', 'rowconfigure', epath, index, "-#{slot}").to_i

    #else

    #  ilist = list(tk_call('grid', 'rowconfigure', epath, index))

    #  info = {}

    #  while key = ilist.shift

    #   info[key[1..-1]] = ilist.shift

    #  end

    #  info

    #end

    TkGrid.rowconfiginfo(self, index, slot)
  end
grid_rowconfigure(index, keys)

Alias for grid_rowconfig

[Source]

# File tk/lib/tk.rb, line 2537
  def grid_size()
    #list(tk_call('grid', 'size', epath))

    TkGrid.size(self)
  end

[Source]

# File tk/lib/tk.rb, line 2542
  def grid_slaves(args)
    #list(tk_call('grid', 'slaves', epath, *hash_kv(args)))

    TkGrid.slaves(self, args)
  end

[Source]

# File tk/lib/tk.rb, line 2663
  def lower(below=None)
    # below = below.epath if below.kind_of?(TkObject)

    below = _epath(below)
    tk_call 'lower', epath, below
    self
  end

[Source]

# File tk/lib/tk.rb, line 2347
  def pack(keys = nil)
    #tk_call_without_enc('pack', epath, *hash_kv(keys, true))

    if keys
      TkPack.configure(self, keys)
    else
      TkPack.configure(self)
    end
    self
  end

[Source]

# File tk/lib/tk.rb, line 2376
  def pack_config(slot, value=None)
    #if slot.kind_of? Hash

    #  tk_call 'pack', 'configure', epath, *hash_kv(slot)

    #else

    #  tk_call 'pack', 'configure', epath, "-#{slot}", value

    #end

    if slot.kind_of? Hash
      TkPack.configure(self, slot)
    else
      TkPack.configure(self, slot=>value)
    end
  end

[Source]

# File tk/lib/tk.rb, line 2369
  def pack_forget
    #tk_call_without_enc('pack', 'forget', epath)

    TkPack.forget(self)
    self
  end

[Source]

# File tk/lib/tk.rb, line 2357
  def pack_in(target, keys = nil)
    if keys
      keys = keys.dup
      keys['in'] = target
    else
      keys = {'in'=>target}
    end
    #tk_call 'pack', epath, *hash_kv(keys)

    TkPack.configure(self, keys)
    self
  end

[Source]

# File tk/lib/tk.rb, line 2389
  def pack_info()
    #ilist = list(tk_call('pack', 'info', epath))

    #info = {}

    #while key = ilist.shift

    #  info[key[1..-1]] = ilist.shift

    #end

    #return info

    TkPack.info(self)
  end

[Source]

# File tk/lib/tk.rb, line 2399
  def pack_propagate(mode=None)
    #if mode == None

    #  bool(tk_call('pack', 'propagate', epath))

    #else

    #  tk_call('pack', 'propagate', epath, mode)

    #  self

    #end

    if mode == None
      TkPack.propagate(self)
    else
      TkPack.propagate(self, mode)
      self
    end
  end

[Source]

# File tk/lib/tk.rb, line 2414
  def pack_slaves()
    #list(tk_call('pack', 'slaves', epath))

    TkPack.slaves(self)
  end

[Source]

# File tk/lib/tk.rb, line 2547
  def place(keys)
    #tk_call 'place', epath, *hash_kv(keys)

    TkPlace.configure(self, keys)
    self
  end

[Source]

# File tk/lib/tk.rb, line 2572
  def place_config(slot, value=None)
    #if slot.kind_of? Hash

    #  tk_call 'place', 'configure', epath, *hash_kv(slot)

    #else

    #  tk_call 'place', 'configure', epath, "-#{slot}", value

    #end

    TkPlace.configure(self, slot, value)
  end

[Source]

# File tk/lib/tk.rb, line 2581
  def place_configinfo(slot = nil)
    # for >= Tk8.4a2 ?

    #if slot

    #  conf = tk_split_list(tk_call('place', 'configure', epath, "-#{slot}") )

    #  conf[0] = conf[0][1..-1]

    #  conf

    #else

    #  tk_split_simplelist(tk_call('place', 

    #                             'configure', epath)).collect{|conflist|

    #   conf = tk_split_simplelist(conflist)

    #   conf[0] = conf[0][1..-1]

    #   conf

    #  }

    #end

    TkPlace.configinfo(slot)
  end

[Source]

# File tk/lib/tk.rb, line 2565
  def  place_forget
    #tk_call 'place', 'forget', epath

    TkPlace.forget(self)
    self
  end

[Source]

# File tk/lib/tk.rb, line 2553
  def place_in(target, keys = nil)
    if keys
      keys = keys.dup
      keys['in'] = target
    else
      keys = {'in'=>target}
    end
    #tk_call 'place', epath, *hash_kv(keys)

    TkPlace.configure(self, keys)
    self
  end

[Source]

# File tk/lib/tk.rb, line 2598
  def place_info()
    #ilist = list(tk_call('place', 'info', epath))

    #info = {}

    #while key = ilist.shift

    #  info[key[1..-1]] = ilist.shift

    #end

    #return info

    TkPlace.info(self)
  end

[Source]

# File tk/lib/tk.rb, line 2608
  def place_slaves()
    #list(tk_call('place', 'slaves', epath))

    TkPlace.slaves(self)
  end

[Source]

# File tk/lib/tk.rb, line 2669
  def raise(above=None)
    #above = above.epath if above.kind_of?(TkObject)

    above = _epath(above)
    tk_call 'raise', epath, above
    self
  end

[Source]

# File tk/lib/tk.rb, line 2613
  def set_focus(force=false)
    if force
      tk_call_without_enc('focus', '-force', path)
    else
      tk_call_without_enc('focus', path)
    end
    self
  end
thread_tkwait()
thread_tkwait_destroy()
thread_tkwait_visibility()
thread_wait()

[Source]

# File tk/lib/tk.rb, line 2764
  def thread_wait_destroy
    wait_destroy(true)
  end

[Source]

# File tk/lib/tk.rb, line 2738
  def thread_wait_visibility
    wait_visibility(true)
  end
tkwait(on_thread = true)

Alias for wait_visibility

tkwait_destroy(on_thread = true)

Alias for wait_destroy

ungrid()

Alias for grid_forget

unpack()

Alias for pack_forget

unplace()

Alias for place_forget

wait(on_thread = true)

Alias for wait_visibility

[Source]

# File tk/lib/tk.rb, line 2750
  def wait_destroy(on_thread = true)
    if $SAFE >= 4
      fail SecurityError, "can't wait destroy at $SAFE >= 4"
    end
    on_thread &= (Thread.list.size != 1)
    if on_thread
      INTERP._thread_tkwait('window', epath)
    else
      INTERP._invoke('tkwait', 'window', epath)
    end
  end

[Source]

# File tk/lib/tk.rb, line 2724
  def wait_visibility(on_thread = true)
    if $SAFE >= 4
      fail SecurityError, "can't wait visibility at $SAFE >= 4"
    end
    on_thread &= (Thread.list.size != 1)
    if on_thread
      INTERP._thread_tkwait('visibility', path)
    else
      INTERP._invoke('tkwait', 'visibility', path)
    end
  end

[Validate]