File: tk/scale.rb

Overview
Module Structure
Class Hierarchy
Code

Overview

Module Structure

  module: <Toplevel Module>
  module: Tk
  class: Scale#6
inherits from
  TkWindow   
has properties
constant: TkCommandNames #7
constant: WidgetClassName #8
method: create_self / 1 #11
method: __strval_optkeys #49
method: _wrap_command_arg / 1 #54
method: configure_cmd / 2 #65
method: configure / 2 #69
method: command / 1 #80
method: get / 2 #84
method: coords / 1 #88
method: identify / 2 #92
method: set / 1 #96
method: value #100
method: value= / 1 #104

Class Hierarchy

Object ( Builtin-Module )
TkKernel
TkObject
TkWindow
  Scale ( Tk ) #6

Code

   1  #
   2  # tk/scale.rb : treat scale widget
   3  #
   4  require 'tk'
   5 
   6  class Tk::Scale<TkWindow
   7    TkCommandNames = ['scale'.freeze].freeze
   8    WidgetClassName = 'Scale'.freeze
   9    WidgetClassNames[WidgetClassName] = self
  10 
  11    def create_self(keys)
  12      if keys and keys != None
  13        if keys.key?('command') && ! keys['command'].kind_of?(String)
  14          cmd = keys.delete('command')
  15          keys['command'] = proc{|val| cmd.call(val.to_f)}
  16        end
  17        unless TkConfigMethod.__IGNORE_UNKNOWN_CONFIGURE_OPTION__
  18          #tk_call_without_enc('scale', @path, *hash_kv(keys, true))
  19          tk_call_without_enc(self.class::TkCommandNames[0], @path, 
  20                              *hash_kv(keys, true))
  21        else
  22          begin
  23            tk_call_without_enc(self.class::TkCommandNames[0], @path, 
  24                                *hash_kv(keys, true))
  25          rescue
  26            tk_call_without_enc(self.class::TkCommandNames[0], @path)
  27            keys = __check_available_configure_options(keys)
  28            unless keys.empty?
  29              begin
  30                tk_call_without_enc('destroy', @path)
  31              rescue
  32                # cannot destroy
  33                configure(keys)
  34              else
  35                # re-create widget
  36                tk_call_without_enc(self.class::TkCommandNames[0], @path, 
  37                                    *hash_kv(keys, true))
  38              end
  39            end
  40          end
  41        end
  42      else
  43        #tk_call_without_enc('scale', @path)
  44        tk_call_without_enc(self.class::TkCommandNames[0], @path)
  45      end
  46    end
  47    private :create_self
  48 
  49    def __strval_optkeys
  50      super() << 'label'
  51    end
  52    private :__strval_optkeys
  53 
  54    def _wrap_command_arg(cmd)
  55      proc{|val|
  56        if val.kind_of?(String)
  57          cmd.call(number(val))
  58        else
  59          cmd.call(val)
  60        end
  61      }
  62    end
  63    private :_wrap_command_arg
  64 
  65    def configure_cmd(slot, value)
  66      configure(slot=>value)
  67    end
  68 
  69    def configure(slot, value=None)
  70      if (slot == 'command' || slot == :command)
  71        configure('command'=>value)
  72      elsif slot.kind_of?(Hash) && 
  73          (slot.key?('command') || slot.key?(:command))
  74        slot = _symbolkey2str(slot)
  75        slot['command'] = _wrap_command_arg(slot.delete('command'))
  76      end
  77      super(slot, value)
  78    end
  79 
  80    def command(cmd=Proc.new)
  81      configure('command'=>cmd)
  82    end
  83 
  84    def get(x=None, y=None)
  85      number(tk_send_without_enc('get', x, y))
  86    end
  87 
  88    def coords(val=None)
  89      tk_split_list(tk_send_without_enc('coords', val))
  90    end
  91 
  92    def identify(x, y)
  93      tk_send_without_enc('identify', x, y)
  94    end
  95 
  96    def set(val)
  97      tk_send_without_enc('set', val)
  98    end
  99 
 100    def value
 101      get
 102    end
 103 
 104    def value= (val)
 105      set(val)
 106      val
 107    end
 108  end
 109 
 110  #TkScale = Tk::Scale unless Object.const_defined? :TkScale
 111  Tk.__set_toplevel_aliases__(:Tk, Tk::Scale, :TkScale)