Gets the value of the detail *detail_field* of paramter
        at index *row* from its selected components `auto_details`.
        All of the selected components value for *detail_field* must
        match

        :param row: the ith parameter number
        :type row: int
        :param detail_field: auto_details member key
        :type detail_field: str
        :returns: value type appropriate for parameter

def getDetail(self, row, detail_field):
        """Gets the value of the detail *detail_field* of paramter
        at index *row* from its selected components `auto_details`.
        All of the selected components value for *detail_field* must
        match

        :param row: the ith parameter number
        :type row: int
        :param detail_field: auto_details member key
        :type detail_field: str
        :returns: value type appropriate for parameter
        """
        param = self._parameters[row]
        param_type = param['parameter']
        components = param['selection']
        if len(components) == 0 or param_type == '':
            return None
        # all components must match
        matching_details = []
        # for comp in components:
        for comp in components:
            alldetails = comp.auto_details()
            if not param_type in alldetails:
                # self.hintRequested.emit('INCOMPATABLE COMPONENTS FOR PARAMETER TYPE {}'.format(param_type))
                return None
            details = alldetails[param_type]
            matching_details.append(details[detail_field])
        matching_details = set(matching_details)
        if len(matching_details) > 1:
            print 'Components with mis-matched units!'
            return None
        return matching_details.pop()