code: def getDetail(self, row, detail_field):
          
          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()
docs: 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