code: def createEditor(self, parent, option, index):
          
          # bring up separate window for component parameters
          view = parent.parentWidget()
          component = view.model().data(index)
  
          if component is not None:
              editor = component.showEditor()
          else:
              print 'delegate data type', type(component)
              raise Exception('UnknownDelegateType')
  
          # connect editor to update defaults
          editor.attributesSaved.connect(view.updateDefaults)
          editor.attributesSaved.connect(view.somethingChanged)
  
          if component.name == 'Vocalization':
              # find any associated file auto-parameters
              files = view.model().autoParams().findFileParam(component)
              if files is not None:
                  editor.selectMany(files)
              editor.vocalFilesChanged.connect(view.updateVocalAuto)
  
          return editor
docs: Creates an editor in a separate window, specific for the component
          type this delegate represents. :qtdoc:`Re-implemented<QStyledItemDelegate.createEditor>`