def get_values_checked_param_user(self, chk, widget, field, value=None): elem = {} elem['widget'] = str(widget.objectName()) elem['chk'] = str(chk.objectName()) if type(widget) is QLineEdit: value = qt_tools.getWidgetText(self.dlg_config, widget, return_string_null=False) elem['widget_type'] = 'text' elif type(widget) is QComboBox: value = qt_tools.get_item_data(self.dlg_config, widget, 0) elem['widget_type'] = 'combo' elif type(widget) is QCheckBox: value = qt_tools.isChecked(self.dlg_config, chk) elem['widget_type'] = 'check' elif type(widget) is QDateEdit: value = qt_tools.getCalendarDate(self.dlg_config, widget) elem['widget_type'] = 'datetime' elif type(widget) is QgsDateTimeEdit: value = qt_tools.getCalendarDate(self.dlg_config, widget) elem['widget_type'] = 'datetime' elem['isChecked'] = str(qt_tools.isChecked(self.dlg_config, chk)) elem['value'] = value self.list_update.append(elem)
def check_translate_options(self): py_msg = qt_tools.isChecked(self.dlg_qm, self.dlg_qm.chk_py_msg) db_msg = qt_tools.isChecked(self.dlg_qm, self.dlg_qm.chk_db_msg) self.dlg_qm.lbl_info.clear() msg = '' if py_msg: status_py_msg = self.create_files_py_message() if status_py_msg is True: msg += "Python translation successful\n" elif status_py_msg is False: msg += "Python translation failed\n" elif status_py_msg is None: msg += "Python translation canceled\n" if db_msg: status_db_msg = self.get_files_db_messages() if status_db_msg is True: msg += "Data base translation successful\n" elif status_db_msg is False: msg += "Data base translation failed\n" elif status_db_msg is None: msg += "Data base translation canceled\n" status_cfg_msg = self.get_files_config_messages() if status_cfg_msg is True: msg += "Data base config translation successful\n" elif status_cfg_msg is False: msg += "Data base config translation failed\n" elif status_cfg_msg is None: msg += "Data base config translation canceled\n" if msg != '': qt_tools.setWidgetText(self.dlg_qm, 'lbl_info', msg)
def save_user_values(self): """ Save selected user values """ host = qt_tools.getWidgetText(self.dlg_qm, self.dlg_qm.txt_host, return_string_null=False) port = qt_tools.getWidgetText(self.dlg_qm, self.dlg_qm.txt_port, return_string_null=False) db = qt_tools.getWidgetText(self.dlg_qm, self.dlg_qm.txt_db, return_string_null=False) user = qt_tools.getWidgetText(self.dlg_qm, self.dlg_qm.txt_user, return_string_null=False) language = qt_tools.get_item_data(self.dlg_qm, self.dlg_qm.cmb_language, 0) py_msg = qt_tools.isChecked(self.dlg_qm, self.dlg_qm.chk_py_msg) db_msg = qt_tools.isChecked(self.dlg_qm, self.dlg_qm.chk_db_msg) set_parser_value('i18n_generator', 'qm_lang_host', f"{host}") set_parser_value('i18n_generator', 'qm_lang_port', f"{port}") set_parser_value('i18n_generator', 'qm_lang_db', f"{db}") set_parser_value('i18n_generator', 'qm_lang_user', f"{user}") set_parser_value('i18n_generator', 'qm_lang_language', f"{language}") set_parser_value('i18n_generator', 'qm_lang_py_msg', f"{py_msg}") set_parser_value('i18n_generator', 'qm_lang_db_msg', f"{db_msg}")
def check_fields(self): file_inp = qt_tools.getWidgetText(self.dlg_go2epa, self.dlg_go2epa.txt_file_inp) file_rpt = qt_tools.getWidgetText(self.dlg_go2epa, self.dlg_go2epa.txt_file_rpt) result_name = qt_tools.getWidgetText(self.dlg_go2epa, self.dlg_go2epa.txt_result_name, False, False) # Control export INP if qt_tools.isChecked(self.dlg_go2epa, self.dlg_go2epa.chk_export): if self.check_inp_chk(file_inp) is False: return False # Control execute epa software if self.check_rpt() is False: return False # Control import result if qt_tools.isChecked(self.dlg_go2epa, self.dlg_go2epa.chk_import_result): if file_rpt is None: msg = "Select valid RPT file" self.controller.show_warning(msg, parameter=str(file_rpt)) return False if not qt_tools.isChecked(self.dlg_go2epa, self.dlg_go2epa.chk_exec): if not os.path.exists(file_rpt): msg = "File RPT not found" self.controller.show_warning(msg, parameter=str(file_rpt)) return False else: if self.check_rpt() is False: return False # Control result name if result_name == '': self.dlg_go2epa.txt_result_name.setStyleSheet( "border: 1px solid red") msg = "This parameter is mandatory. Please, set a value" self.controller.show_details(msg, title="Rpt fail", inf_text=None) return False sql = (f"SELECT result_id FROM rpt_cat_result " f"WHERE result_id = '{result_name}' LIMIT 1") row = self.controller.get_row(sql) if row: msg = "Result name already exists, do you want overwrite?" answer = self.controller.ask_question(msg, title="Alert") if not answer: return False return True
def get_radius(self, point): self.radius = self.dlg_create_circle.radius.text() if not self.radius: self.radius = 0.1 self.delete_prev = qt_tools.isChecked(self.dlg_create_circle, self.dlg_create_circle.chk_delete_prev) if self.layer_circle: self.layer_circle.startEditing() close_dialog(self.dlg_create_circle, self.controller) if self.delete_prev: selection = self.layer_circle.getFeatures() self.layer_circle.selectByIds([f.id() for f in selection]) if self.layer_circle.selectedFeatureCount() > 0: features = self.layer_circle.selectedFeatures() for feature in features: self.layer_circle.deleteFeature(feature.id()) if not self.cancel_circle: feature = QgsFeature() feature.setGeometry(QgsGeometry.fromPointXY(point).buffer(float(self.radius), 100)) provider = self.layer_circle.dataProvider() # Next line generate: WARNING Attribute index 0 out of bounds [0;0] # but all work ok provider.addFeatures([feature]) self.layer_circle.commitChanges() self.layer_circle.dataProvider().forceReload() self.layer_circle.triggerRepaint() else: self.iface.actionPan().trigger() self.cancel_circle = False return
def go2epa_accept(self): """ Save INP, RPT and result name into GSW file """ # Save user values self.save_user_values() self.dlg_go2epa.txt_infolog.clear() self.dlg_go2epa.txt_file_rpt.setStyleSheet(None) status = self.check_fields() if status is False: return # Get widgets values self.result_name = qt_tools.getWidgetText( self.dlg_go2epa, self.dlg_go2epa.txt_result_name, False, False) self.net_geom = qt_tools.isChecked(self.dlg_go2epa, self.dlg_go2epa.chk_only_check) self.export_inp = qt_tools.isChecked(self.dlg_go2epa, self.dlg_go2epa.chk_export) self.export_subcatch = qt_tools.isChecked( self.dlg_go2epa, self.dlg_go2epa.chk_export_subcatch) self.file_inp = qt_tools.getWidgetText(self.dlg_go2epa, self.dlg_go2epa.txt_file_inp) self.exec_epa = qt_tools.isChecked(self.dlg_go2epa, self.dlg_go2epa.chk_exec) self.file_rpt = qt_tools.getWidgetText(self.dlg_go2epa, self.dlg_go2epa.txt_file_rpt) self.import_result = qt_tools.isChecked( self.dlg_go2epa, self.dlg_go2epa.chk_import_result) # Check for sector selector if self.export_inp: sql = "SELECT sector_id FROM selector_sector LIMIT 1" row = self.controller.get_row(sql) if row is None: msg = "You need to select some sector" self.controller.show_info_box(msg) return # Set background task 'Go2Epa' description = f"Go2Epa" self.task_go2epa = GwGo2EpaTask(description, self) QgsApplication.taskManager().addTask(self.task_go2epa) QgsApplication.taskManager().triggerTask(self.task_go2epa)
def check_rpt(self): file_inp = qt_tools.getWidgetText(self.dlg_go2epa, self.dlg_go2epa.txt_file_inp) file_rpt = qt_tools.getWidgetText(self.dlg_go2epa, self.dlg_go2epa.txt_file_rpt) # Control execute epa software if qt_tools.isChecked(self.dlg_go2epa, self.dlg_go2epa.chk_exec): if self.check_inp_chk(file_inp) is False: return False if file_rpt is None: msg = "Select valid RPT file" self.controller.show_warning(msg, parameter=str(file_rpt)) return False if not qt_tools.isChecked(self.dlg_go2epa, self.dlg_go2epa.chk_export): if not os.path.exists(file_inp): msg = "File INP not found" self.controller.show_warning(msg, parameter=str(file_rpt)) return False
def save_user_values(self): """ Save QGIS settings related with file_manager """ cur_user = self.controller.get_current_user() self.controller.plugin_settings_set_value( 'go2epa_RESULT_NAME' + cur_user, qt_tools.getWidgetText(self.dlg_go2epa, 'txt_result_name', return_string_null=False)) self.controller.plugin_settings_set_value( 'go2epa_FILE_INP' + cur_user, qt_tools.getWidgetText(self.dlg_go2epa, 'txt_file_inp', return_string_null=False)) self.controller.plugin_settings_set_value( 'go2epa_FILE_RPT' + cur_user, qt_tools.getWidgetText(self.dlg_go2epa, 'txt_file_rpt', return_string_null=False)) self.controller.plugin_settings_set_value( 'go2epa_chk_NETWORK_GEOM' + cur_user, qt_tools.isChecked(self.dlg_go2epa, self.dlg_go2epa.chk_only_check)) self.controller.plugin_settings_set_value( 'go2epa_chk_INP' + cur_user, qt_tools.isChecked(self.dlg_go2epa, self.dlg_go2epa.chk_export)) self.controller.plugin_settings_set_value( 'go2epa_chk_UD' + cur_user, qt_tools.isChecked(self.dlg_go2epa, self.dlg_go2epa.chk_export_subcatch)) self.controller.plugin_settings_set_value( 'go2epa_chk_EPA' + cur_user, qt_tools.isChecked(self.dlg_go2epa, self.dlg_go2epa.chk_exec)) self.controller.plugin_settings_set_value( 'go2epa_chk_RPT' + cur_user, qt_tools.isChecked(self.dlg_go2epa, self.dlg_go2epa.chk_import_result))
def get_values(self, point_1, point_2): self.controller.plugin_settings_set_value( self.dlg_create_point.rb_left.objectName(), self.dlg_create_point.rb_left.isChecked()) self.dist_x = self.dlg_create_point.dist_x.text() if not self.dist_x: self.dist_x = 0 self.dist_y = self.dlg_create_point.dist_y.text() if not self.dist_y: self.dist_y = 0 self.delete_prev = qt_tools.isChecked( self.dlg_create_point, self.dlg_create_point.chk_delete_prev) if self.layer_points: self.layer_points.startEditing() close_dialog(self.dlg_create_point, self.controller) if self.dlg_create_point.rb_left.isChecked(): self.direction = 1 else: self.direction = 2 sql = f"SELECT ST_GeomFromText('POINT({point_1[0]} {point_1[1]})', {self.srid})" row = self.controller.get_row(sql) point_1 = row[0] sql = f"SELECT ST_GeomFromText('POINT({point_2[0]} {point_2[1]})', {self.srid})" row = self.controller.get_row(sql) point_2 = row[0] sql = (f"SELECT gw_fct_cad_add_relative_point " f"('{point_1}', '{point_2}', {self.dist_x}, " f"{self.dist_y}, {self.direction}, {self.delete_prev})") self.controller.execute_sql(sql) self.layer_points.commitChanges() self.layer_points.dataProvider().forceReload() self.layer_points.triggerRepaint() else: self.iface.actionPan().trigger() self.cancel_point = False return
def get_values_changed_param_system(self, widget, value=None): elem = {} if type(widget) is QLineEdit: value = qt_tools.getWidgetText(self.dlg_config, widget, return_string_null=False) elif type(widget) is QComboBox: value = qt_tools.get_item_data(self.dlg_config, widget, 0) elif type(widget) is QCheckBox: value = qt_tools.isChecked(self.dlg_config, widget) elif type(widget) is QDateEdit: value = qt_tools.getCalendarDate(self.dlg_config, widget) elem['widget'] = str(widget.objectName()) elem['chk'] = str('') elem['isChecked'] = str('') elem['value'] = value elem['sysRoleId'] = 'role_admin' self.list_update.append(elem)
def execute_function(self, dialog, combo, result): dialog.btn_cancel.setEnabled(False) dialog.progressBar.setMaximum(0) dialog.progressBar.setMinimum(0) dialog.progressBar.setVisible(True) extras = '' feature_field = '' # TODO Check if time functions is short or long, activate and set undetermined if not short # Get function name function = None function_name = None for group, function in list(result['fields'].items()): if len(function) != 0: self.save_settings_values(dialog, function) self.save_parametric_values(dialog, function) function_name = function[0]['functionname'] break if function_name is None: return # If function is not parametrized, call function(old) without json if self.is_paramtetric is False: self.execute_no_parametric(dialog, function_name) dialog.progressBar.setVisible(False) dialog.progressBar.setMinimum(0) dialog.progressBar.setMaximum(1) dialog.progressBar.setValue(1) return if function[0]['input_params']['featureType']: layer = None layer_name = qt_tools.get_item_data(dialog, combo, 1) if layer_name != -1: layer = self.set_selected_layer(dialog, combo) if not layer: dialog.progressBar.setVisible(False) dialog.progressBar.setMinimum(0) dialog.progressBar.setMaximum(1) dialog.progressBar.setValue(1) return selection_mode = self.rbt_checked['widget'] extras += f'"selectionMode":"{selection_mode}",' # Check selection mode and get (or not get) all feature id feature_id_list = '"id":[' if (selection_mode == 'wholeSelection') or ( selection_mode == 'previousSelection' and layer is None): feature_id_list += ']' elif selection_mode == 'previousSelection' and layer is not None: features = layer.selectedFeatures() feature_type = qt_tools.get_item_data(dialog, dialog.cmb_geom_type, 0) for feature in features: feature_id = feature.attribute(feature_type + "_id") feature_id_list += f'"{feature_id}", ' if len(features) > 0: feature_id_list = feature_id_list[:-2] + ']' else: feature_id_list += ']' if layer_name != -1: feature_field = f'"tableName":"{layer_name}", ' feature_type = qt_tools.get_item_data(dialog, dialog.cmb_geom_type, 0) feature_field += f'"featureType":"{feature_type}", ' feature_field += feature_id_list widget_list = dialog.grb_parameters.findChildren(QWidget) widget_is_void = False extras += '"parameters":{' for group, function in list(result['fields'].items()): if len(function) != 0: if function[0]['return_type'] not in (None, ''): for field in function[0]['return_type']: widget = dialog.findChild(QWidget, field['widgetname']) param_name = widget.objectName() if type(widget) in ('', QLineEdit): widget.setStyleSheet(None) value = qt_tools.getWidgetText( dialog, widget, False, False) extras += f'"{param_name}":"{value}", '.replace( '""', 'null') if value is '' and widget.property('ismandatory'): widget_is_void = True widget.setStyleSheet("border: 1px solid red") elif type(widget) in ('', QSpinBox, QDoubleSpinBox): value = qt_tools.getWidgetText( dialog, widget, False, False) if value == '': value = 0 extras += f'"{param_name}":"{value}", ' elif type(widget) in ('', QComboBox): value = qt_tools.get_item_data(dialog, widget, 0) extras += f'"{param_name}":"{value}", ' elif type(widget) in ('', QCheckBox): value = qt_tools.isChecked(dialog, widget) extras += f'"{param_name}":"{str(value).lower()}", ' elif type(widget) in ('', QgsDateTimeEdit): value = qt_tools.getCalendarDate(dialog, widget) if value == "" or value is None: extras += f'"{param_name}":null, ' else: extras += f'"{param_name}":"{value}", ' if widget_is_void: message = "This param is mandatory. Please, set a value" self.controller.show_warning(message, parameter='') dialog.progressBar.setVisible(False) dialog.progressBar.setMinimum(0) dialog.progressBar.setMaximum(1) dialog.progressBar.setValue(1) return dialog.progressBar.setFormat(f"Running function: {function_name}") dialog.progressBar.setAlignment(Qt.AlignCenter) if len(widget_list) > 0: extras = extras[:-2] + '}' else: extras += '}' body = self.create_body(feature=feature_field, extras=extras) json_result = self.controller.get_json(function_name, body, log_sql=True) self.add_layer.populate_info_text(dialog, json_result['body']['data'], True, True, 1, True) dialog.progressBar.setAlignment(Qt.AlignCenter) dialog.progressBar.setMinimum(0) dialog.progressBar.setMaximum(1) dialog.progressBar.setValue(1) if json_result is None: dialog.progressBar.setFormat( f"Function: {function_name} executed with no result") return True if not json_result: dialog.progressBar.setFormat( f"Function: {function_name} failed. See log file for more details" ) return False try: dialog.progressBar.setFormat( f"Function {function_name} has finished") # getting simbology capabilities if 'setStyle' in json_result['body']['data']: set_sytle = json_result['body']['data']['setStyle'] if set_sytle == "Mapzones": # call function to simbolize mapzones self.set_style_mapzones() except KeyError as e: msg = f"<b>Key: </b>{e}<br>" msg += f"<b>key container: </b>'body/data/ <br>" msg += f"<b>Python file: </b>{__name__} <br>" msg += f"<b>Python function:</b> {self.execute_function.__name__} <br>" self.show_exceptions_msg( "Key on returned json from ddbb is missed.", msg) self.remove_layers()