OSDN Git Service

ruby-1.9.1-rc1
[splhack/AndroidRuby.git] / lib / ruby-1.9.1-rc1 / ext / tk / lib / tkextlib / iwidgets / entryfield.rb
diff --git a/lib/ruby-1.9.1-rc1/ext/tk/lib/tkextlib/iwidgets/entryfield.rb b/lib/ruby-1.9.1-rc1/ext/tk/lib/tkextlib/iwidgets/entryfield.rb
new file mode 100644 (file)
index 0000000..d53df21
--- /dev/null
@@ -0,0 +1,185 @@
+#
+#  tkextlib/iwidgets/entryfield.rb
+#                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
+#
+
+require 'tk'
+require 'tkextlib/iwidgets.rb'
+
+module Tk
+  module Iwidgets
+    class  Entryfield < Tk::Iwidgets::Labeledwidget
+    end
+  end
+end
+
+class Tk::Iwidgets::Entryfield
+  TkCommandNames = ['::iwidgets::entryfield'.freeze].freeze
+  WidgetClassName = 'Entryfield'.freeze
+  WidgetClassNames[WidgetClassName] = self
+
+  def __font_optkeys
+    super() << 'textfont'
+  end
+  private :__font_optkeys
+
+  ####################################
+
+  include Tk::ValidateConfigure
+
+  class EntryfieldValidate < TkValidateCommand
+    #class CalCmdArgs < TkUtil::CallbackSubst
+    class ValidateArgs < TkUtil::CallbackSubst
+      KEY_TBL  = [ 
+        [ ?c, ?s, :char ], 
+        [ ?P, ?s, :post ], 
+        [ ?S, ?s, :current ], 
+        [ ?W, ?w, :widget ], 
+        nil
+      ]
+      PROC_TBL = [ 
+        [ ?s, TkComm.method(:string) ], 
+        [ ?w, TkComm.method(:window) ], 
+        nil
+      ]
+
+=begin
+      # for Ruby m17n :: ?x --> String --> char-code ( getbyte(0) )
+      KEY_TBL.map!{|inf|
+        if inf.kind_of?(Array)
+          inf[0] = inf[0].getbyte(0) if inf[0].kind_of?(String)
+          inf[1] = inf[1].getbyte(0) if inf[1].kind_of?(String)
+        end
+        inf
+      }
+
+      PROC_TBL.map!{|inf|
+        if inf.kind_of?(Array)
+          inf[0] = inf[0].getbyte(0) if inf[0].kind_of?(String)
+        end
+        inf
+      }
+=end
+
+      _setup_subst_table(KEY_TBL, PROC_TBL);
+    end
+
+    def self._config_keys
+      ['validate', 'invalid']
+    end
+  end
+
+  def __validation_class_list
+    super() << EntryfieldValidate
+  end
+
+  Tk::ValidateConfigure.__def_validcmd(binding, EntryfieldValidate)
+=begin
+  def validate(cmd = Proc.new, args = nil)
+    if cmd.kind_of?(ValidateCmd)
+      configure('validate', cmd)
+    elsif args
+      configure('validate', [cmd, args])
+    else
+      configure('validate', cmd)
+    end
+  end
+
+  def invalid(cmd = Proc.new, args = nil)
+    if cmd.kind_of?(ValidateCmd)
+      configure('invalid', cmd)
+    elsif args
+      configure('invalid', [cmd, args])
+    else
+      configure('invalid', cmd)
+    end
+  end
+=end
+
+  ####################################
+
+  def clear
+    tk_call(@path, 'clear')
+    self
+  end
+
+  def delete(first, last=None)
+    tk_send_without_enc('delete', first, last)
+    self
+  end
+
+  def value
+    _fromUTF8(tk_send_without_enc('get'))
+  end
+  def value= (val)
+    tk_send_without_enc('delete', 0, 'end')
+    tk_send_without_enc('insert', 0, _get_eval_enc_str(val))
+    val
+  end
+  alias get value
+  alias set value=
+
+  def cursor=(index)
+    tk_send_without_enc('icursor', index)
+    #self
+    index
+  end
+  alias icursor cursor=
+
+  def index(index)
+    number(tk_send_without_enc('index', index))
+  end
+
+  def insert(pos,text)
+    tk_send_without_enc('insert', pos, _get_eval_enc_str(text))
+    self
+  end
+
+  def mark(pos)
+    tk_send_without_enc('scan', 'mark', pos)
+    self
+  end
+  def dragto(pos)
+    tk_send_without_enc('scan', 'dragto', pos)
+    self
+  end
+  def selection_adjust(index)
+    tk_send_without_enc('selection', 'adjust', index)
+    self
+  end
+  def selection_clear
+    tk_send_without_enc('selection', 'clear')
+    self
+  end
+  def selection_from(index)
+    tk_send_without_enc('selection', 'from', index)
+    self
+  end
+  def selection_present()
+    bool(tk_send_without_enc('selection', 'present'))
+  end
+  def selection_range(s, e)
+    tk_send_without_enc('selection', 'range', s, e)
+    self
+  end
+  def selection_to(index)
+    tk_send_without_enc('selection', 'to', index)
+    self
+  end
+
+  # based on tk/scrollable.rb
+  def xview(*index)
+    if index.size == 0
+      list(tk_send_without_enc('xview'))
+    else
+      tk_send_without_enc('xview', *index)
+      self
+    end
+  end
+  def xview_moveto(*index)
+    xview('moveto', *index)
+  end
+  def xview_scroll(*index)
+    xview('scroll', *index)
+  end
+end