# File control/EditProperties/EditProperties.rb, line 22
  def src=(new_src)
    @src = new_src
    pos = @src.pos
    name = @src.name

    list = @src.list
    len = list.length
    if (0 <= pos && pos < len) then
      @params = list[pos]
      if (@params.name != name) then
        @params.init(name)
      end
    elsif (pos == len) then
      list.add_entry
      @params = list[pos]
      @params.init(name)
    else
      raise 'out of range'
    end

    query_params = driver.params
    if (query_params.include? 'path') then
      @params.path = query_params['path']
    end
    if (query_params.include? 'mask') then
      type, value = query_params['mask'].split(/:/, 2)
      case (type)
      when 'nil'
        @params.mask = nil
      when 'regexp'
        @params.mask = Rucy::MaskUtil.suffix_to_regexp(value)
      when 'string'
        @params.mask = value
      else
        raise "unknown mask: #{query_params['mask'].inspect}"
      end
    end
    if (query_params.include? 'vhost') then
      @params.virtual_host = query_params['vhost']
    end

    mask = @params.mask
    case (mask)
    when NilClass
      @mask = nil
      @mask_type = 'nil'
    when Regexp
      @mask = Rucy::MaskUtil.regexp_to_suffix(mask)
      @mask_type = 'regexp'
    when String
      @mask = mask
      @mask_type = 'string'
    else
      raise "unknown mask: #{mask.inspect}"
    end

    r = 0
    @args = @params.args2
    for arg_info in @args
      case (arg_info[:type])
      when :radio
        arg_info[:radio_group] = "RadioGroup#{r}"
        r += 1
      when :password
        arg_info[:clear] = false
      end
    end

    new_src
  end