Class TkWindow
In: tk/lib/tk.rb
tk/lib/tkextlib/tktrans/tktrans.rb
tk/lib/tkextlib/tkDND/shape.rb
tk/lib/tkextlib/tkDND/tkdnd.rb
tk/lib/tkextlib/tcllib/cursor.rb
Parent: TkObject

Methods

bind_class   bindtags   bindtags=   bindtags_shift   bindtags_unshift   caret   colormodel   command   current_grab   cursor_propagate   cursor_restore   database_class   database_class   database_classname   database_classname   destroy   eventloop_tkwait   eventloop_tkwait_destroy   eventloop_tkwait_visibility   eventloop_tkwait_window   eventloop_wait   eventloop_wait_destroy   eventloop_wait_visibility   eventloop_wait_window   exist?   focus   grab   grab_current   grab_release   grab_set   grab_set_global   grab_status   grid   grid_bbox   grid_columnconfig   grid_columnconfiginfo   grid_columnconfigure   grid_config   grid_configure   grid_forget   grid_in   grid_info   grid_location   grid_propagate   grid_remove   grid_rowconfig   grid_rowconfiginfo   grid_rowconfigure   grid_size   grid_slaves   lower   lower_window   new   pack   pack_config   pack_configure   pack_forget   pack_in   pack_info   pack_propagate   pack_slaves   place   place_config   place_configinfo   place_configure   place_forget   place_in   place_info   place_slaves   raise   raise_window   release_grab   set_focus   set_global_grab   set_grab   thread_tkwait   thread_tkwait_destroy   thread_tkwait_visibility   thread_tkwait_window   thread_wait   thread_wait_destroy   thread_wait_visibility   thread_wait_window   tktrans_get_image   tktrans_set_image   tkwait   tkwait_destroy   tkwait_window   to_eval   ungrid   unpack   unplace   wait   wait_destroy   wait_visibility   wait_window  

Included Modules

TkWinfo Tk::TkDND::Shape Tk::TkDND::DND

Constants

TkCommandNames = [].freeze
WidgetClassName = ''.freeze  

> If TkCommandNames[0] is a string (not a null string),

    assume the string is a Tcl/Tk's create command of the widget class.

Public Class methods

[Source]

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

[Source]

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

[Source]

# File tk/lib/tk.rb, line 3989
  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 = {}
      methodkeys = {}
      if keys
        #['font', 'kanjifont', 'latinfont', 'asciifont'].each{|key|
        #  fontkeys[key] = keys.delete(key) if keys.key?(key)
        #}
        __font_optkeys.each{|key|
          fkey = key.to_s
          fontkeys[fkey] = keys.delete(fkey) if keys.key?(fkey)

          fkey = "kanji#{key}"
          fontkeys[fkey] = keys.delete(fkey) if keys.key?(fkey)

          fkey = "latin#{key}"
          fontkeys[fkey] = keys.delete(fkey) if keys.key?(fkey)

          fkey = "ascii#{key}"
          fontkeys[fkey] = keys.delete(fkey) if keys.key?(fkey)
        }

        __methodcall_optkeys.each{|key|
          key = key.to_s
          methodkeys[key] = keys.delete(key) if keys.key?(key)
        }

        __ruby2val_optkeys.each{|key, method|
          key = key.to_s
          keys[key] = method.call(keys[key]) if keys.has_key?(key)
        }
      end
      if without_creating && keys
        #configure(keys)
        configure(__conv_keyonly_opts(keys))
      else
        #create_self(keys)
        create_self(__conv_keyonly_opts(keys))
      end
      font_configure(fontkeys) unless fontkeys.empty?
      configure(methodkeys) unless methodkeys.empty?
    end
  end

WidgetClassNames[WidgetClassName] = self

 ==> If self is a widget class, entry to the WidgetClassNames table.

[Source]

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

Public Instance methods

[Source]

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

[Source]

# File tk/lib/tk.rb, line 4551
  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 4573
  def bindtags=(taglist)
    bindtags(taglist)
    taglist
  end

[Source]

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

[Source]

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

[Source]

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

[Source]

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

[Source]

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

Alias for grab_current

[Source]

# File tk/lib/tkextlib/tcllib/cursor.rb, line 56
  def cursor_propagate(cursor)
    # Sets the cursor for self and all its descendants to cursor. 
    #tk_call_without_enc('::cursor::propagate', @path, cursor)
    Tk::Tcllib::Cursor.cursor_propagate(self, cursor)
  end

[Source]

# File tk/lib/tkextlib/tcllib/cursor.rb, line 61
  def cursor_restore(cursor = None)
    # Restore the original or previously set cursor for self and all its 
    # descendants. If cursor is specified, that will be used if on any 
    # widget that did not have a preset cursor (set by a previous call 
    # to TkWindow#cursor_propagate). 
    #tk_call_without_enc('::cursor::restore', @path, cursor)
    Tk::Tcllib::Cursor.cursor_restore(self, cursor)
  end

[Source]

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

[Source]

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

[Source]

# File tk/lib/tk.rb, line 4466
  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_tkwait_window()
eventloop_wait()

[Source]

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

[Source]

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

[Source]

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

Alias for set_focus

[Source]

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

    case opt
    when 'set', :set
      tk_call_without_enc('grab', 'set', path)
      return self
    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', opt, path)
    end
  end

[Source]

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

[Source]

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

[Source]

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

[Source]

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

[Source]

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

[Source]

# File tk/lib/tk.rb, line 4179
  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 4208
  def grid_bbox(*args)
    #list(tk_call('grid', 'bbox', epath, *args))
    TkGrid.bbox(self, *args)
  end

[Source]

# File tk/lib/tk.rb, line 4227
  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 4239
  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 4213
  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
grid_configure(slot, value=None)

Alias for grid_config

[Source]

# File tk/lib/tk.rb, line 4201
  def grid_forget
    #tk_call('grid', 'forget', epath)
    TkGrid.forget(self)
    self
  end

[Source]

# File tk/lib/tk.rb, line 4189
  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 4267
  def grid_info()
    #list(tk_call('grid', 'info', epath))
    TkGrid.info(self)
  end

[Source]

# File tk/lib/tk.rb, line 4272
  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 4277
  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.propagate(self)
    else
      TkGrid.propagate(self, mode)
      self
    end
  end

[Source]

# File tk/lib/tk.rb, line 4292
  def grid_remove()
    #tk_call 'grid', 'remove', epath
    TkGrid.remove(self)
    self
  end

[Source]

# File tk/lib/tk.rb, line 4233
  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 4253
  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 4298
  def grid_size()
    #list(tk_call('grid', 'size', epath))
    TkGrid.size(self)
  end

[Source]

# File tk/lib/tk.rb, line 4303
  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 4432
  def lower(below=None)
    # below = below.epath if below.kind_of?(TkObject)
    below = _epath(below)
    tk_call 'lower', epath, below
    self
  end
lower_window(below=None)

Alias for lower

[Source]

# File tk/lib/tk.rb, line 4106
  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 4135
  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
pack_configure(slot, value=None)

Alias for pack_config

[Source]

# File tk/lib/tk.rb, line 4128
  def pack_forget
    #tk_call_without_enc('pack', 'forget', epath)
    TkPack.forget(self)
    self
  end

[Source]

# File tk/lib/tk.rb, line 4116
  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 4149
  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 4159
  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 4174
  def pack_slaves()
    #list(tk_call('pack', 'slaves', epath))
    TkPack.slaves(self)
  end

[Source]

# File tk/lib/tk.rb, line 4308
  def place(keys)
    #tk_call 'place', epath, *hash_kv(keys)
    TkPlace.configure(self, keys)
    self
  end

[Source]

# File tk/lib/tk.rb, line 4333
  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 4343
  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(self, slot)
  end
place_configure(slot, value=None)

Alias for place_config

[Source]

# File tk/lib/tk.rb, line 4326
  def  place_forget
    #tk_call 'place', 'forget', epath
    TkPlace.forget(self)
    self
  end

[Source]

# File tk/lib/tk.rb, line 4314
  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 4360
  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 4370
  def place_slaves()
    #list(tk_call('place', 'slaves', epath))
    TkPlace.slaves(self)
  end

[Source]

# File tk/lib/tk.rb, line 4439
  def raise(above=None)
    #above = above.epath if above.kind_of?(TkObject)
    above = _epath(above)
    tk_call 'raise', epath, above
    self
  end
raise_window(above=None)

Alias for raise

release_grab()

Alias for grab_release

[Source]

# File tk/lib/tk.rb, line 4375
  def set_focus(force=false)
    if force
      tk_call_without_enc('focus', '-force', path)
    else
      tk_call_without_enc('focus', path)
    end
    self
  end
set_global_grab()

Alias for grab_set_global

set_grab()

Alias for grab_set

thread_tkwait()
thread_tkwait_destroy()
thread_tkwait_visibility()
thread_tkwait_window()
thread_wait()

[Source]

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

[Source]

# File tk/lib/tk.rb, line 4509
  def thread_wait_visibility
    wait_visibility(true)
  end
thread_wait_window()

[Source]

# File tk/lib/tkextlib/tktrans/tktrans.rb, line 37
  def tktrans_get_image()
    tk_send('tktrans::setwidget', @path)
  end

[Source]

# File tk/lib/tkextlib/tktrans/tktrans.rb, line 33
  def tktrans_set_image(img)
    tk_send('tktrans::setwidget', @path, img)
    self
  end
tkwait(on_thread = true)

Alias for wait_visibility

tkwait_destroy(on_thread = true)

Alias for wait_destroy

tkwait_window(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 4521
  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 4495
  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
wait_window(on_thread = true)

Alias for wait_destroy

[Validate]

ruby-doc.org is hosted and maintained by James Britt and Happy Camper Studios, a Ruby application development company in Phoenix, Arizona. The site was created in 2002 as part of the Ruby Documentation Project to promote the Ruby language and to help other Ruby hackers.

Documentation content on ruby-doc.org is provided by remarkable members of the Ruby community.

For more information on the Ruby programming language, visit ruby-lang.org.

Want to help improve Ruby's API docs? See Ruby Documentation Guidelines.