def readEncoding(self, encoding_dict): # Create a encoding from parameters encoding = Encoding() encoding.data_source_field_name = encoding_dict['data_source_field_name'] encoding.data_source_field_data_type = encoding_dict['data_source_field_data_type'] encoding.enable_inference = encoding_dict['enable_inference'] encoding.encoder_module = encoding_dict['encoder_module'] encoding.encoder_class = encoding_dict['encoder_class'] encoding.encoder_params = encoding_dict['encoder_params'] encoding.encoder_field_name = encoding_dict['encoder_field_name'] encoding.encoder_field_data_type = encoding_dict['encoder_field_data_type'] return encoding
def buttonOk_click(self, event): """ Check if values changed and save the,. """ encoder_params = collections.OrderedDict() if self.text_box_data_source_field_name.text() == '': QtWidgets.QMessageBox.warning( self, "Warning", "Record field name was not specified.") return elif self.text_box_encoder_module.text() == '': QtWidgets.QMessageBox.warning(self, "Warning", "Encoder module was not specified.") return elif self.text_box_encoder_class.text() == '': QtWidgets.QMessageBox.warning(self, "Warning", "Encoder class was not specified.") return elif self.text_box_encoder_field_name.text() == '': QtWidgets.QMessageBox.warning( self, "Warning", "Encoder field name was not specified.") return elif self.duplicatedFieldName(self.text_box_encoder_field_name.text()): QtWidgets.QMessageBox.warning( self, "Warning", "Encoder field name already is used by other encoding.") return else: grid_data = self.data_grid_encoder_params.model().data for row in range(len(grid_data)): if grid_data[row][0] != '': # Valid parameter name try: grid_data[row][0] = grid_data[row][0].toString() except: pass param = str(grid_data[row][0]) valid_expr = QtCore.QRegExp('[a-zA-Z0-9_]+') if not valid_expr.exactMatch(param): QtWidgets.QMessageBox.warning( self, "Warning", "'" + param + "' is not a valid name.") return # Valid parameter value try: grid_data[row][1] = grid_data[row][1].toString() except: pass value = str(grid_data[row][1]) if len(value) == 0: QtWidgets.QMessageBox.warning( self, "Warning", "'" + param + "' value is empty.") return # Add param name and its value to dictionary encoder_params[param] = value data_source_field_name = str( self.text_box_data_source_field_name.text()) data_source_field_data_type = str( self.combo_box_data_source_field_data_type.currentText()) enable_inference = self.check_box_enable_inference.isChecked() encoder_module = str(self.text_box_encoder_module.text()) encoder_class = str(self.text_box_encoder_class.text()) encoder_field_name = str(self.text_box_encoder_field_name.text()) encoder_field_data_type = str( self.combo_box_encoder_field_data_type.currentText()) # If this is a new encoding get it from list else create a new one if self.encoding_idx >= 0: encoding = self.encodings[self.encoding_idx] else: encoding = Encoding() self.encodings.append(encoding) # If anything has changed if encoding.data_source_field_name != data_source_field_name or encoding.data_source_field_data_type != data_source_field_data_type or encoding.enable_inference != enable_inference or encoding.encoder_module != encoder_module or encoding.encoder_class != encoder_class or encoding.encoder_params != encoder_params or encoding.encoder_field_name != encoder_field_name or encoding.encoder_field_data_type != encoder_field_data_type: # Set encoding params with controls values encoding.data_source_field_name = data_source_field_name encoding.data_source_field_data_type = data_source_field_data_type encoding.enable_inference = enable_inference encoding.encoder_module = encoder_module encoding.encoder_class = encoder_class encoding.encoder_params = encoder_params encoding.encoder_field_name = encoder_field_name encoding.encoder_field_data_type = encoder_field_data_type self.accept() self.close()