Saves the values from the editor to the system.

def save( self ):
        """
        Saves the values from the editor to the system.
        """
        schema = self.schema()
        if ( not schema ):
            self.saved.emit()
            return
        
        record = self.record()
        if not record:
            record = self._model()
        
        # validate the information
        save_data    = []
        column_edits = self.findChildren(XOrbColumnEdit)
        for widget in column_edits:
            columnName  = widget.columnName()
            column      = schema.column(columnName)
            
            if ( not column ):
                logger.warning('%s is not a valid column of %s.' % \
                               (columnName, schema.name()))
                continue
            
            value = widget.value()
            if ( value == IGNORED ):
                continue
            
            # check for required columns
            if ( column.required() and not value ):
                name = column.displayName()
                QMessageBox.information(self, 
                                        'Missing Required Field',
                                        '%s is a required field.' % name)
                return
            
            # check for unique columns
            elif ( column.unique() ):
                # check for uniqueness
                query        = Q(column.name()) == value
                if ( record.isRecord() ):
                    query   &= Q(self._model) != record
                
                columns  = self._model.schema().primaryColumns()
                result   = self._model.select(columns = columns, where = query)
                
                if ( result.total() ):
                    QMessageBox.information(self,
                                            'Duplicate Entry',
                                            '%s already exists.' % value)
                    return
            
            save_data.append((column, value))
        
        # record the properties for the record
        for column, value in save_data:
            record.setRecordValue(column.name(), value)
        
        self._record = record
        
        self.saved.emit()