Module: Tk::ItemValidateConfigure

Included in:
BLT::Treeview
Defined in:
ext/lib/tk/validation.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.__def_validcmd(scope, klass, keys = nil) ⇒ Object



111
112
113
114
115
116
117
118
# File 'ext/lib/tk/validation.rb', line 111

def self.__def_validcmd(scope, klass, keys=nil)
  keys = klass._config_keys unless keys
  keys.each{|key|
    eval("def item_#{key}(id, *args, &b)
             __item_validcmd_call(#{klass.name}, '#{key}', id, *args, &b)
          end", scope)
  }
end

Instance Method Details

#__conv_item_vcmd_on_hash_kv(keys) ⇒ Object



148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# File 'ext/lib/tk/validation.rb', line 148

def __conv_item_vcmd_on_hash_kv(keys)
  key2class = __get_item_validate_key2class(tagid(tagOrId))

  keys = _symbolkey2str(keys)
  key2class.each{|key, klass|
    if keys[key].kind_of?(Array)
      cmd, *args = keys[key]
      #keys[key] = klass.new(cmd, args.join(' '))
      keys[key] = klass.new(cmd, *args)
    # elsif keys[key].kind_of?(Proc) || keys[key].kind_of?(Method)
    elsif TkComm._callback_entry?(keys[key])
      keys[key] = klass.new(keys[key])
    end
  }
  keys
end

#__get_item_validate_key2class(id) ⇒ Object



139
140
141
142
143
144
145
146
# File 'ext/lib/tk/validation.rb', line 139

def __get_item_validate_key2class(id)
  k2c = {}
  __item_validation_class_list(id).each{|klass|
    klass._config_keys.each{|key|
      k2c[key.to_s] = klass
    }
  }
end

#__item_validation_class_list(id) ⇒ Object



134
135
136
137
# File 'ext/lib/tk/validation.rb', line 134

def __item_validation_class_list(id)
  # maybe need to override
  []
end

#__item_validcmd_call(tagOrId, klass, key, *args, &b) ⇒ Object



120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'ext/lib/tk/validation.rb', line 120

def __item_validcmd_call(tagOrId, klass, key, *args, &b)
  return itemcget(tagid(tagOrId), key) if args.empty? && !b

  cmd = (b)? proc(&b) : args.shift

  if cmd.kind_of?(klass)
    itemconfigure(tagid(tagOrId), key, cmd)
  elsif !args.empty?
    itemconfigure(tagid(tagOrId), key, [cmd, args])
  else
    itemconfigure(tagid(tagOrId), key, cmd)
  end
end

#itemconfigure(tagOrId, slot, value = TkComm::None) ⇒ Object



165
166
167
168
169
170
171
172
# File 'ext/lib/tk/validation.rb', line 165

def itemconfigure(tagOrId, slot, value=TkComm::None)
  if slot.kind_of?(Hash)
    super(__conv_item_vcmd_on_hash_kv(slot))
  else
    super(__conv_item_vcmd_on_hash_kv(slot=>value))
  end
  self
end