def editRecord(self, record, pos=None):
        """
        Prompts the user to edit using a preset editor defined in the
        setRecordEditors method.
        
        :param      record | <orb.Table>
        
        :return     <bool> | success
        """
        
        typ = type(record)
        editor = self._recordEditors.get(typ)
        if not editor:
            return False
        
        if self.popupEditing():
            popup = self.popupWidget()
            edit = popup.centralWidget()
            
            # create a new editor if required
            if type(edit) != editor:
                if edit:
                    edit.close()
                    edit.deleteLater()
                
                edit = editor(popup)
                edit.setAutoCommitOnSave(True)
                popup.setCentralWidget(edit)
                popup.accepted.connect(edit.save)
                edit.aboutToSaveRecord.connect(self.recordUpdated)
                edit.saved.connect(self.refresh)
            
            edit.setRecord(record)
            popup.popup(pos)
        
        else:
            if editor.edit(record, autoCommit=False):
                self.recordUpdated.emit(record)
                record.commit()
                self.refresh()
        
        return True