# module TkItemConfigMethod

### Public Class Methods

__IGNORE_UNKNOWN_CONFIGURE_OPTION__() click to toggle source

    # File lib/tk/itemconfig.rb, line 124
    def TkItemConfigMethod.__IGNORE_UNKNOWN_CONFIGURE_OPTION__
      @mode || false
    end

__set_IGNORE_UNKNOWN_CONFIGURE_OPTION__!(mode) click to toggle source

    # File lib/tk/itemconfig.rb, line 127
    def TkItemConfigMethod.__set_IGNORE_UNKNOWN_CONFIGURE_OPTION__!(mode)
      @mode = (mode)? true: false
    end

### Public Instance Methods

__check_available_itemconfigure_options(tagOrId, keys) click to toggle source

    # File lib/tk/itemconfig.rb, line 357
    def __check_available_itemconfigure_options(tagOrId, keys)
      id = tagid(tagOrId)

      availables = self.__current_itemconfiginfo(id).keys

      # add non-standard keys
      availables |= __font_optkeys.map{|k|
        [k.to_s, "latin#{k}", "ascii#{k}", "kanji#{k}"]
      }.flatten
      availables |= __item_methodcall_optkeys(id).keys.map{|k| k.to_s}
      availables |= __item_keyonly_optkeys(id).keys.map{|k| k.to_s}

      keys = _symbolkey2str(keys)

      keys.delete_if{|k, v| !(availables.include?(k))}
    end

### Private Instance Methods

__current_itemconfiginfo(tagOrId, slot = nil) click to toggle source

    # File lib/tk/itemconfig.rb, line 1185
    def __current_itemconfiginfo(tagOrId, slot = nil)
      if TkComm::GET_CONFIGINFO_AS_ARRAY
        if slot
          org_slot = slot
          begin
            conf = __itemconfiginfo_core(tagOrId, slot)
            if ( ! __item_configinfo_struct(tagid(tagOrId))[:alias]                || conf.size > __item_configinfo_struct(tagid(tagOrId))[:alias] + 1 )
              return {conf[0] => conf[-1]}
            end
            slot = conf[__item_configinfo_struct(tagid(tagOrId))[:alias]]
          end while(org_slot != slot)
          fail RuntimeError,
            "there is a configure alias loop about '#{org_slot}'"
        else
          ret = {}
          __itemconfiginfo_core(tagOrId).each{|conf|
            if ( ! __item_configinfo_struct(tagid(tagOrId))[:alias]                || conf.size > __item_configinfo_struct(tagid(tagOrId))[:alias] + 1 )
              ret[conf[0]] = conf[-1]
            end
          }

          ret
        end
      else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
        ret = {}
        __itemconfiginfo_core(tagOrId, slot).each{|key, conf|
          ret[key] = conf[-1] if conf.kind_of?(Array)
        }
        ret
      end
    end

__item_cget_cmd(id) click to toggle source

    # File lib/tk/itemconfig.rb, line 131
    def __item_cget_cmd(id)
      # maybe need to override
      [self.path, 'itemcget', id]
    end

__item_config_cmd(id) click to toggle source

    # File lib/tk/itemconfig.rb, line 137
    def __item_config_cmd(id)
      # maybe need to override
      [self.path, 'itemconfigure', id]
    end

__item_configinfo_struct(id) click to toggle source

    # File lib/tk/itemconfig.rb, line 149
    def __item_configinfo_struct(id)
      # maybe need to override
      {:key=>0, :alias=>1, :db_name=>1, :db_class=>2,
        :default_value=>3, :current_value=>4}
    end

__item_confinfo_cmd(id) click to toggle source

    # File lib/tk/itemconfig.rb, line 143
    def __item_confinfo_cmd(id)
      # maybe need to override
      __item_config_cmd(id)
    end

__itemcget_core(tagOrId, option) click to toggle source

    # File lib/tk/itemconfig.rb, line 172
    def __itemcget_core(tagOrId, option)
      orig_opt = option
      option = option.to_s

      if option.length == 0
        fail ArgumentError, "Invalid option `#{orig_opt.inspect}'"
      end

      alias_name, real_name = __item_optkey_aliases(tagid(tagOrId)).find{|k, v| k.to_s == option}
      if real_name
        option = real_name.to_s
      end

      if ( method = _symbolkey2str(__item_val2ruby_optkeys(tagid(tagOrId)))[option] )
        optval = tk_call_without_enc(*(__item_cget_cmd(tagid(tagOrId)) << "-#{option}"))
        begin
          return method.call(tagOrId, optval)
        rescue => e
          warn("Warning:: #{e.message} (when #{method}.call(#{tagOrId.inspect}, #{optval.inspect})") if $DEBUG
          return optval
        end
      end

      if ( method = _symbolkey2str(__item_methodcall_optkeys(tagid(tagOrId)))[option] )
        return self.__send__(method, tagOrId)
      end

      case option
      when /^(#{__item_numval_optkeys(tagid(tagOrId)).join('|')})$/
        begin
          number(tk_call_without_enc(*(__item_cget_cmd(tagid(tagOrId)) << "-#{option}")))
        rescue
          nil
        end

      when /^(#{__item_numstrval_optkeys(tagid(tagOrId)).join('|')})$/
        num_or_str(tk_call_without_enc(*(__item_cget_cmd(tagid(tagOrId)) << "-#{option}")))

      when /^(#{__item_boolval_optkeys(tagid(tagOrId)).join('|')})$/
        begin
          bool(tk_call_without_enc(*(__item_cget_cmd(tagid(tagOrId)) << "-#{option}")))
        rescue
          nil
        end

      when /^(#{__item_listval_optkeys(tagid(tagOrId)).join('|')})$/
        simplelist(tk_call_without_enc(*(__item_cget_cmd(tagid(tagOrId)) << "-#{option}")))

      when /^(#{__item_numlistval_optkeys(tagid(tagOrId)).join('|')})$/
        conf = tk_call_without_enc(*(__item_cget_cmd(tagid(tagOrId)) << "-#{option}"))
        if conf =~ /^[0-9]/
          list(conf)
        else
          conf
        end

      when /^(#{__item_tkvariable_optkeys(tagid(tagOrId)).join('|')})$/
        v = tk_call_without_enc(*(__item_cget_cmd(tagid(tagOrId)) << "-#{option}"))
        (v.empty?)? nil: TkVarAccess.new(v)

      when /^(#{__item_strval_optkeys(tagid(tagOrId)).join('|')})$/
        _fromUTF8(tk_call_without_enc(*(__item_cget_cmd(tagid(tagOrId)) << "-#{option}")))

      when /^(|latin|ascii|kanji)(#{__item_font_optkeys(tagid(tagOrId)).join('|')})$/
        fontcode = $1
        fontkey  = $2
        fnt = tk_tcl2ruby(tk_call_without_enc(*(__item_cget_cmd(tagid(tagOrId)) << "-#{fontkey}")), true)
        unless fnt.kind_of?(TkFont)
          fnt = tagfontobj(tagid(tagOrId), fontkey)
        end
        if fontcode == 'kanji' && JAPANIZED_TK && TK_VERSION =~ /^4\.*/
          # obsolete; just for compatibility
          fnt.kanji_font
        else
          fnt
        end
      else
        tk_tcl2ruby(tk_call_without_enc(*(__item_cget_cmd(tagid(tagOrId)) << "-#{option}")), true)
      end
    end

__itemconfiginfo_core(tagOrId, slot = nil) click to toggle source

    # File lib/tk/itemconfig.rb, line 406
    def __itemconfiginfo_core(tagOrId, slot = nil)
      if TkComm::GET_CONFIGINFO_AS_ARRAY
        if (slot && slot.to_s =~ /^(|latin|ascii|kanji)(#{__item_font_optkeys(tagid(tagOrId)).join('|')})$/)
          fontkey  = $2
          # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{fontkey}"))))
          conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{fontkey}")), false, true)
          conf[__item_configinfo_struct(tagid(tagOrId))[:key]] =
            conf[__item_configinfo_struct(tagid(tagOrId))[:key]][1..-1]
          if ( ! __item_configinfo_struct(tagid(tagOrId))[:alias]              || conf.size > __item_configinfo_struct(tagid(tagOrId))[:alias] + 1 )
            fnt = conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]
            if TkFont.is_system_font?(fnt)
              conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = TkNamedFont.new(fnt)
            end
            conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = tagfontobj(tagid(tagOrId), fontkey)
          elsif ( __item_configinfo_struct(tagid(tagOrId))[:alias]                 && conf.size == __item_configinfo_struct(tagid(tagOrId))[:alias] + 1                 && conf[__item_configinfo_struct(tagid(tagOrId))[:alias]][0] == ?- )
            conf[__item_configinfo_struct(tagid(tagOrId))[:alias]] =
              conf[__item_configinfo_struct(tagid(tagOrId))[:alias]][1..-1]
          end
          conf
        else
          if slot
            slot = slot.to_s

            alias_name, real_name = __item_optkey_aliases(tagid(tagOrId)).find{|k, v| k.to_s == slot}
            if real_name
              slot = real_name.to_s
            end

            case slot
            when /^(#{__item_val2ruby_optkeys(tagid(tagOrId)).keys.join('|')})$/
              method = _symbolkey2str(__item_val2ruby_optkeys(tagid(tagOrId)))[slot]
              conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)
              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
                optval = conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]
                begin
                  val = method.call(tagOrId, optval)
                rescue => e
                  warn("Warning:: #{e.message} (when #{method}.call(#{tagOrId.inspect}, #{optval.inspect})") if $DEBUG
                  val = optval
                end
                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = val
              end
              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
                optval = conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]
                begin
                  val = method.call(tagOrId, optval)
                rescue => e
                  warn("Warning:: #{e.message} (when #{method}lcall(#{tagOrId.inspect}, #{optval.inspect})") if $DEBUG
                  val = optval
                end
                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = val
              end

            when /^(#{__item_methodcall_optkeys(tagid(tagOrId)).keys.join('|')})$/
              method = _symbolkey2str(__item_methodcall_optkeys(tagid(tagOrId)))[slot]
              return [slot, '', '', '', self.__send__(method, tagOrId)]

            when /^(#{__item_numval_optkeys(tagid(tagOrId)).join('|')})$/
              # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
              conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)

              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
                begin
                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =
                    number(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
                rescue
                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = nil
                end
              end
              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
                begin
                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =
                    number(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
                rescue
                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = nil
                end
              end

            when /^(#{__item_numstrval_optkeys(tagid(tagOrId)).join('|')})$/
              # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
              conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)

              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =
                  num_or_str(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
              end
              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =
                  num_or_str(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
              end

            when /^(#{__item_boolval_optkeys(tagid(tagOrId)).join('|')})$/
              # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
              conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)

              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
                begin
                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =
                    bool(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
                rescue
                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = nil
                end
              end
              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
                begin
                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =
                    bool(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
                rescue
                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = nil
                end
              end

            when /^(#{__item_listval_optkeys(tagid(tagOrId)).join('|')})$/
              # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
              conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)

              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =
                  simplelist(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
              end
              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =
                  simplelist(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
              end

            when /^(#{__item_numlistval_optkeys(tagid(tagOrId)).join('|')})$/
              # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
              conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)

              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =~ /^[0-9]/ )
                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =
                  list(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
              end
              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]                  && conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =~ /^[0-9]/ )
                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =
                  list(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
              end

            when /^(#{__item_strval_optkeys(tagid(tagOrId)).join('|')})$/
              # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
              conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)

            when /^(#{__item_tkvariable_optkeys(tagid(tagOrId)).join('|')})$/
              conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)

              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
                v = conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]
                if v.empty?
                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = nil
                else
                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = TkVarAccess.new(v)
                end
              end
              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
                v = conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]
                if v.empty?
                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = nil
                else
                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = TkVarAccess.new(v)
                end
              end

            else
              # conf = tk_split_list(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
              conf = tk_split_list(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), 0, false, true)
            end
            conf[__item_configinfo_struct(tagid(tagOrId))[:key]] =
              conf[__item_configinfo_struct(tagid(tagOrId))[:key]][1..-1]

            if ( __item_configinfo_struct(tagid(tagOrId))[:alias]                && conf.size == __item_configinfo_struct(tagid(tagOrId))[:alias] + 1                && conf[__item_configinfo_struct(tagid(tagOrId))[:alias]][0] == ?- )
              conf[__item_configinfo_struct(tagid(tagOrId))[:alias]] =
                conf[__item_configinfo_struct(tagid(tagOrId))[:alias]][1..-1]
            end

            conf

          else
            # ret = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)))))).collect{|conflist|
            #   conf = tk_split_simplelist(conflist)
            ret = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)))), false, false).collect{|conflist|
              conf = tk_split_simplelist(conflist, false, true)
              conf[__item_configinfo_struct(tagid(tagOrId))[:key]] =
                conf[__item_configinfo_struct(tagid(tagOrId))[:key]][1..-1]

              optkey = conf[__item_configinfo_struct(tagid(tagOrId))[:key]]
              case optkey
              when /^(#{__item_val2ruby_optkeys(tagid(tagOrId)).keys.join('|')})$/
                method = _symbolkey2str(__item_val2ruby_optkeys(tagid(tagOrId)))[optkey]
                if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                    && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
                  optval = conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]
                  begin
                    val = method(tagOrId, optval)
                  rescue => e
                    warn("Warning:: #{e.message} (when #{method}.call(#{tagOrId.inspect}, #{optval.inspect})") if $DEBUG
                    val = optval
                  end
                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = val
                end
                if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
                  optval = conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]
                  begin
                    val = method.call(tagOrId, optval)
                  rescue => e
                    warn("Warning:: #{e.message} (when #{method}.call(#{tagOrId.inspect}, #{optval.inspect})") if $DEBUG
                    val = optval
                  end
                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = val
                end

              when /^(#{__item_strval_optkeys(tagid(tagOrId)).join('|')})$/
                # do nothing

              when /^(#{__item_numval_optkeys(tagid(tagOrId)).join('|')})$/
                if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                    && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
                  begin
                    conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =
                      number(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
                  rescue
                    conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = nil
                  end
                end
                if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
                  begin
                    conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =
                      number(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
                  rescue
                    conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = nil
                  end
                end

              when /^(#{__item_numstrval_optkeys(tagid(tagOrId)).join('|')})$/
                if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                    && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =
                    num_or_str(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
                end
                if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =
                    num_or_str(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
                end

              when /^(#{__item_boolval_optkeys(tagid(tagOrId)).join('|')})$/
                if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                    && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
                  begin
                    conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =
                      bool(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
                  rescue
                    conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = nil
                  end
                end
                if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
                  begin
                    conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =
                      bool(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
                  rescue
                    conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = nil
                  end
                end

              when /^(#{__item_listval_optkeys(tagid(tagOrId)).join('|')})$/
                if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                    && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =
                    simplelist(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
                end
                if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =
                    simplelist(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
                end

              when /^(#{__item_numlistval_optkeys(tagid(tagOrId)).join('|')})$/
                if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                    && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]                    && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =~ /^[0-9]/ )
                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =
                    list(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
                end
                if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]                    && conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =~ /^[0-9]/ )
                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =
                    list(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
                end

              when /^(#{__item_tkvariable_optkeys(tagid(tagOrId)).join('|')})$/
                if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                    && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
                  v = conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]
                  if v.empty?
                    conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = nil
                  else
                    conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = TkVarAccess.new(v)
                  end
                end
                if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
                  v = conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]
                  if v.empty?
                    conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = nil
                  else
                    conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = TkVarAccess.new(v)
                  end
                end

              else
                if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                    && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
                  if conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]].index('{')
                    conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =
                      tk_split_list(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
                  else
                    conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =
                      tk_tcl2ruby(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
                  end
                end
                if conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]
                  if conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]].index('{')
                    conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =
                      tk_split_list(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
                  else
                    conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =
                      tk_tcl2ruby(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
                  end
                end
              end

              if ( __item_configinfo_struct(tagid(tagOrId))[:alias]                  && conf.size == __item_configinfo_struct(tagid(tagOrId))[:alias] + 1                  && conf[__item_configinfo_struct(tagid(tagOrId))[:alias]][0] == ?- )
                conf[__item_configinfo_struct(tagid(tagOrId))[:alias]] =
                  conf[__item_configinfo_struct(tagid(tagOrId))[:alias]][1..-1]
              end

              conf
            }

            __item_font_optkeys(tagid(tagOrId)).each{|optkey|
              optkey = optkey.to_s
              fontconf = ret.assoc(optkey)
              if fontconf && fontconf.size > 2
                ret.delete_if{|inf| inf[0] =~ /^(|latin|ascii|kanji)#{optkey}$/}
                fnt = fontconf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]
                if TkFont.is_system_font?(fnt)
                  fontconf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = TkNamedFont.new(fnt)
                end
                fontconf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = tagfontobj(tagid(tagOrId), optkey)
                ret.push(fontconf)
              end
            }

            __item_methodcall_optkeys(tagid(tagOrId)).each{|optkey, method|
              ret << [optkey.to_s, '', '', '', self.__send__(method, tagOrId)]
            }

            ret
          end
        end

      else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
        if (slot && slot.to_s =~ /^(|latin|ascii|kanji)(#{__item_font_optkeys(tagid(tagOrId)).join('|')})$/)
          fontkey  = $2
          # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{fontkey}"))))
          conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{fontkey}")), false, true)
          conf[__item_configinfo_struct(tagid(tagOrId))[:key]] =
            conf[__item_configinfo_struct(tagid(tagOrId))[:key]][1..-1]

          if ( ! __item_configinfo_struct(tagid(tagOrId))[:alias]              || conf.size > __item_configinfo_struct(tagid(tagOrId))[:alias] + 1 )
            fnt = conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]
            if TkFont.is_system_font?(fnt)
              conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = TkNamedFont.new(fnt)
            end
            conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = tagfontobj(tagid(tagOrId), fontkey)
            { conf.shift => conf }
          elsif ( __item_configinfo_struct(tagid(tagOrId))[:alias]                 && conf.size == __item_configinfo_struct(tagid(tagOrId))[:alias] + 1 )
            if conf[__item_configinfo_struct(tagid(tagOrId))[:alias]][0] == ?-
              conf[__item_configinfo_struct(tagid(tagOrId))[:alias]] =
                conf[__item_configinfo_struct(tagid(tagOrId))[:alias]][1..-1]
            end
            { conf[0] => conf[1] }
          else
            { conf.shift => conf }
          end
        else
          if slot
            slot = slot.to_s

            alias_name, real_name = __item_optkey_aliases(tagid(tagOrId)).find{|k, v| k.to_s == slot}
            if real_name
              slot = real_name.to_s
            end

            case slot
            when /^(#{__item_val2ruby_optkeys(tagid(tagOrId)).keys.join('|')})$/
              method = _symbolkey2str(__item_val2ruby_optkeys(tagid(tagOrId)))[slot]
              conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)
              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
                optval = conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]
                begin
                  val = method.call(tagOrId, optval)
                rescue => e
                  warn("Warning:: #{e.message} (when #{method}.call(#{tagOrId.inspect}, #{optval.inspect})") if $DEBUG
                  val = optval
                end
                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = val
              end
              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
                optval = conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]
                begin
                  val = method.call(tagOrId, optval)
                rescue => e
                  warn("Warning:: #{e.message} (when #{method}.call(#{tagOrId.inspect}, #{optval.inspect})") if $DEBUG
                  val = optval
                end
                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = val
              end

            when /^(#{__item_methodcall_optkeys(tagid(tagOrId)).keys.join('|')})$/
              method = _symbolkey2str(__item_methodcall_optkeys(tagid(tagOrId)))[slot]
              return {slot => ['', '', '', self.__send__(method, tagOrId)]}

            when /^(#{__item_numval_optkeys(tagid(tagOrId)).join('|')})$/
              # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
              conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)

              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
                begin
                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =
                    number(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
                rescue
                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = nil
                end
              end
              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
                begin
                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =
                    number(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
                rescue
                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = nil
                end
              end

            when /^(#{__item_numstrval_optkeys(tagid(tagOrId)).join('|')})$/
              # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
              conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)

              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =
                  num_or_stre(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
              end
              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =
                  num_or_str(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
              end

            when /^(#{__item_boolval_optkeys(tagid(tagOrId)).join('|')})$/
              # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
              conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)

              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
                begin
                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =
                    bool(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
                rescue
                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = nil
                end
              end
              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
                begin
                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =
                    bool(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
                rescue
                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = nil
                end
              end

            when /^(#{__item_listval_optkeys(tagid(tagOrId)).join('|')})$/
              # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
              conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)

              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =
                  simplelist(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
              end
              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =
                  simplelist(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
              end

            when /^(#{__item_numlistval_optkeys(tagid(tagOrId)).join('|')})$/
              # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
              conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)

              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =~ /^[0-9]/ )
                conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =
                  list(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
              end
              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]                  && conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =~ /^[0-9]/ )
                conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =
                  list(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
              end

            when /^(#{__item_strval_optkeys(tagid(tagOrId)).join('|')})$/
              # conf = tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
              conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)

            when /^(#{__item_tkvariable_optkeys(tagid(tagOrId)).join('|')})$/
              conf = tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), false, true)

              if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                  && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
                v = conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]
                if v.empty?
                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = nil
                else
                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = TkVarAccess.new(v)
                end
              end
              if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
                v = conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]
                if v.empty?
                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = nil
                else
                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = TkVarAccess.new(v)
                end
              end

            else
              # conf = tk_split_list(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}"))))
              conf = tk_split_list(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{slot}")), 0, false, true)
            end
            conf[__item_configinfo_struct(tagid(tagOrId))[:key]] =
              conf[__item_configinfo_struct(tagid(tagOrId))[:key]][1..-1]

            if ( __item_configinfo_struct(tagid(tagOrId))[:alias]                && conf.size == __item_configinfo_struct(tagid(tagOrId))[:alias] + 1 )
              if conf[__item_configinfo_struct(tagid(tagOrId))[:alias]][0] == ?-
                conf[__item_configinfo_struct(tagid(tagOrId))[:alias]] =
                  conf[__item_configinfo_struct(tagid(tagOrId))[:alias]][1..-1]
              end
              { conf[0] => conf[1] }
            else
              { conf.shift => conf }
            end

          else
            ret = {}
            # tk_split_simplelist(_fromUTF8(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)))))).each{|conflist|
            #   conf = tk_split_simplelist(conflist)
            tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)))), false, false).each{|conflist|
              conf = tk_split_simplelist(conflist, false, true)
              conf[__item_configinfo_struct(tagid(tagOrId))[:key]] =
                conf[__item_configinfo_struct(tagid(tagOrId))[:key]][1..-1]

              optkey = conf[__item_configinfo_struct(tagid(tagOrId))[:key]]
              case optkey
              when /^(#{__item_val2ruby_optkeys(tagid(tagOrId)).keys.join('|')})$/
                method = _symbolkey2str(__item_val2ruby_optkeys(tagid(tagOrId)))[optkey]
                if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                    && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
                  optval = conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]
                  begin
                    val = method.call(tagOrId, optval)
                  rescue => e
                    warn("Warning:: #{e.message} (when #{method}.call(#{tagOrId.inspect}, #{optval.inspect})") if $DEBUG
                    val = optval
                  end
                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = val
                end
                if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
                  optval = conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]
                  begin
                    val = method.call(tagOrId, optval)
                  rescue => e
                    warn("Warning:: #{e.message} (when #{method}.call(#{tagOrId.inspect}, #{optval.inspect})") if $DEBUG
                    val = optval
                  end
                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = val
                end

              when /^(#{__item_strval_optkeys(tagid(tagOrId)).join('|')})$/
                # do nothing

              when /^(#{__item_numval_optkeys(tagid(tagOrId)).join('|')})$/
                if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                    && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
                  begin
                    conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =
                      number(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
                  rescue
                    conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = nil
                  end
                end
                if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
                  begin
                    conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =
                      number(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
                  rescue
                    conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = nil
                  end
                end

              when /^(#{__item_numstrval_optkeys(tagid(tagOrId)).join('|')})$/
                if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                    && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =
                    num_or_str(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
                end
                if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =
                    num_or_str(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
                end

              when /^(#{__item_boolval_optkeys(tagid(tagOrId)).join('|')})$/
                if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                    && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
                  begin
                    conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =
                      bool(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
                  rescue
                    conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = nil
                  end
                end
                if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
                  begin
                    conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =
                      bool(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
                  rescue
                    conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = nil
                  end
                end

              when /^(#{__item_listval_optkeys(tagid(tagOrId)).join('|')})$/
                if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                    && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =
                    simplelist(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
                end
                if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =
                    simplelist(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
                end

              when /^(#{__item_numlistval_optkeys(tagid(tagOrId)).join('|')})$/
                if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                    && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]                    && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =~ /^[0-9]/ )
                  conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =
                    list(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
                end
                if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]                    && conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =~ /^[0-9]/ )
                  conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =
                    list(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
                end

              when /^(#{__item_tkvariable_optkeys(tagid(tagOrId)).join('|')})$/
                if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                    && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
                  v = conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]
                  if v.empty?
                    conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = nil
                  else
                    conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = TkVarAccess.new(v)
                  end
                end
                if ( conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] )
                  v = conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]
                  if v.empty?
                    conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = nil
                  else
                    conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = TkVarAccess.new(v)
                  end
                end

              else
                if ( __item_configinfo_struct(tagid(tagOrId))[:default_value]                    && conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] )
                  if conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]].index('{')
                    conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =
                      tk_split_list(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
                  else
                    conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] =
                      tk_tcl2ruby(conf[__item_configinfo_struct(tagid(tagOrId))[:default_value]])
                  end
                end
                if conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]]
                  if conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]].index('{')
                    conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =
                      tk_split_list(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
                  else
                    conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] =
                      tk_tcl2ruby(conf[__item_configinfo_struct(tagid(tagOrId))[:current_value]])
                  end
                end
              end

              if ( __item_configinfo_struct(tagid(tagOrId))[:alias]                  && conf.size == __item_configinfo_struct(tagid(tagOrId))[:alias] + 1 )
                if conf[__item_configinfo_struct(tagid(tagOrId))[:alias]][0] == ?-
                  conf[__item_configinfo_struct(tagid(tagOrId))[:alias]] =
                    conf[__item_configinfo_struct(tagid(tagOrId))[:alias]][1..-1]
                end
                ret[conf[0]] = conf[1]
              else
                ret[conf.shift] = conf
              end
            }

            __item_font_optkeys(tagid(tagOrId)).each{|optkey|
              optkey = optkey.to_s
              fontconf = ret[optkey]
              if fontconf.kind_of?(Array)
                ret.delete(optkey)
                ret.delete('latin' << optkey)
                ret.delete('ascii' << optkey)
                ret.delete('kanji' << optkey)
                fnt = fontconf[__item_configinfo_struct(tagid(tagOrId))[:default_value]]
                if TkFont.is_system_font?(fnt)
                  fontconf[__item_configinfo_struct(tagid(tagOrId))[:default_value]] = TkNamedFont.new(fnt)
                end
                fontconf[__item_configinfo_struct(tagid(tagOrId))[:current_value]] = tagfontobj(tagid(tagOrId), optkey)
                ret[optkey] = fontconf
              end
            }

            __item_methodcall_optkeys(tagid(tagOrId)).each{|optkey, method|
              ret[optkey.to_s] = ['', '', '', self.__send__(method, tagOrId)]
            }

            ret
          end
        end
      end
    end

__itemconfigure_core(tagOrId, slot, value=None) click to toggle source

    # File lib/tk/itemconfig.rb, line 280
    def __itemconfigure_core(tagOrId, slot, value=None)
      if slot.kind_of? Hash
        slot = _symbolkey2str(slot)

        __item_optkey_aliases(tagid(tagOrId)).each{|alias_name, real_name|
          alias_name = alias_name.to_s
          if slot.has_key?(alias_name)
            slot[real_name.to_s] = slot.delete(alias_name)
          end
        }

        __item_methodcall_optkeys(tagid(tagOrId)).each{|key, method|
          value = slot.delete(key.to_s)
          self.__send__(method, tagOrId, value) if value
        }

        __item_ruby2val_optkeys(tagid(tagOrId)).each{|key, method|
          key = key.to_s
          slot[key] = method.call(tagOrId, slot[key]) if slot.has_key?(key)
        }

        __item_keyonly_optkeys(tagid(tagOrId)).each{|defkey, undefkey|
          conf = slot.find{|kk, vv| kk == defkey.to_s}
          if conf
            k, v = conf
            if v
              slot[k] = None
            else
              slot[undefkey.to_s] = None if undefkey
              slot.delete(k)
            end
          end
        }

        if (slot.find{|k, v| k =~ /^(|latin|ascii|kanji)(#{__item_font_optkeys(tagid(tagOrId)).join('|')})$/})
          tagfont_configure(tagid(tagOrId), slot)
        elsif slot.size > 0
          tk_call(*(__item_config_cmd(tagid(tagOrId)).concat(hash_kv(slot))))
        end

      else
        orig_slot = slot
        slot = slot.to_s
        if slot.length == 0
          fail ArgumentError, "Invalid option `#{orig_slot.inspect}'"
        end

        alias_name, real_name = __item_optkey_aliases(tagid(tagOrId)).find{|k, v| k.to_s == slot}
        if real_name
          slot = real_name.to_s
        end

        if ( conf = __item_keyonly_optkeys(tagid(tagOrId)).find{|k, v| k.to_s == slot } )
          defkey, undefkey = conf
          if value
            tk_call(*(__item_config_cmd(tagid(tagOrId)) << "-#{defkey}"))
          elsif undefkey
            tk_call(*(__item_config_cmd(tagid(tagOrId)) << "-#{undefkey}"))
          end
        elsif ( method = _symbolkey2str(__item_ruby2val_optkeys(tagid(tagOrId)))[slot] )
          tk_call(*(__item_config_cmd(tagid(tagOrId)) << "-#{slot}" << method.call(tagOrId, value)))
        elsif ( method = _symbolkey2str(__item_methodcall_optkeys(tagid(tagOrId)))[slot] )
          self.__send__(method, tagOrId, value)
        elsif (slot =~ /^(|latin|ascii|kanji)(#{__item_font_optkeys(tagid(tagOrId)).join('|')})$/)
          if value == None
            tagfontobj(tagid(tagOrId), $2)
          else
            tagfont_configure(tagid(tagOrId), {slot=>value})
          end
        else
          tk_call(*(__item_config_cmd(tagid(tagOrId)) << "-#{slot}" << value))
        end
      end
      self
    end

current_itemconfiginfo(tagOrId, slot = nil) click to toggle source

    # File lib/tk/itemconfig.rb, line 1219
    def current_itemconfiginfo(tagOrId, slot = nil)
      __current_itemconfiginfo(tagOrId, slot)
    end

itemcget(tagOrId, option) click to toggle source

    # File lib/tk/itemconfig.rb, line 254
    def itemcget(tagOrId, option)
      unless TkItemConfigMethod.__IGNORE_UNKNOWN_CONFIGURE_OPTION__
        __itemcget_core(tagOrId, option)
      else
        begin
          __itemcget_core(tagOrId, option)
        rescue => e
          begin
            if __current_itemconfiginfo(tagOrId).has_key?(option.to_s)
              # not tag error & option is known -> error on known option
              fail e
            else
              # not tag error & option is unknown
              nil
            end
          rescue
            fail e  # tag error
          end
        end
      end
    end

itemcget_strict(tagOrId, option) click to toggle source

    # File lib/tk/itemconfig.rb, line 275
    def itemcget_strict(tagOrId, option)
      # never use TkItemConfigMethod.__IGNORE_UNKNOWN_CONFIGURE_OPTION__
      __itemcget_core(tagOrId, option)
    end

itemcget_tkstring(tagOrId, option) click to toggle source

    # File lib/tk/itemconfig.rb, line 166
    def itemcget_tkstring(tagOrId, option)
      opt = option.to_s
      fail ArgumentError, "Invalid option `#{option.inspect}'" if opt.length == 0
      tk_call_without_enc(*(__item_cget_cmd(tagid(tagOrId)) << "-#{opt}"))
    end

itemconfiginfo(tagOrId, slot = nil) click to toggle source

    # File lib/tk/itemconfig.rb, line 1167
    def itemconfiginfo(tagOrId, slot = nil)
      if slot && TkItemConfigMethod.__IGNORE_UNKNOWN_CONFIGURE_OPTION__
        begin
          __itemconfiginfo_core(tagOrId, slot)
        rescue => e
          begin
            __itemconfiginfo_core(tagOrId)
            # not tag error -> option is unknown
            Array.new(__item_configinfo_struct.values.max).unshift(slot.to_s)
          rescue
            fail e  # tag error
          end
        end
      else
        __itemconfiginfo_core(tagOrId, slot)
      end
    end

itemconfigure(tagOrId, slot, value=None) click to toggle source

    # File lib/tk/itemconfig.rb, line 374
    def itemconfigure(tagOrId, slot, value=None)
      unless TkItemConfigMethod.__IGNORE_UNKNOWN_CONFIGURE_OPTION__
        __itemconfigure_core(tagOrId, slot, value)
      else
        if slot.kind_of?(Hash)
          begin
            __itemconfigure_core(tagOrId, slot)
          rescue
            slot = __check_available_itemconfigure_options(tagOrId, slot)
            __itemconfigure_core(tagOrId, slot) unless slot.empty?
          end
        else
          begin
            __itemconfigure_core(tagOrId, slot, value)
          rescue => e
            begin
              if __current_itemconfiginfo(tagOrId).has_key?(slot.to_s)
                # not tag error & option is known -> error on known option
                fail e
              else
                # not tag error & option is unknown
                nil
              end
            rescue
              fail e  # tag error
            end
          end
        end
      end
      self
    end

tagid(tagOrId) click to toggle source

    # File lib/tk/itemconfig.rb, line 158
    def tagid(tagOrId)
      # maybe need to override
      tagOrId
    end