def populate_info_text(dialog, data, force_tab=True, reset_text=True, tab_idx=1, call_disable_tabs=True): """ Populate txt_infolog QTextEdit widget :param dialog: QDialog :param data: Json :param force_tab: Force show tab (boolean) :param reset_text: Reset(or not) text for each iteration (boolean) :param tab_idx: index of tab to force (integer) :param call_disable_tabs: set all tabs, except the last, enabled or disabled (boolean) :return: Text received from data (String) """ change_tab = False text = qt_tools.getWidgetText(dialog, dialog.txt_infolog, return_string_null=False) if reset_text: text = "" for item in data['info']['values']: if 'message' in item: if item['message'] is not None: text += str(item['message']) + "\n" if force_tab: change_tab = True else: text += "\n" qt_tools.setWidgetText(dialog, 'txt_infolog', text + "\n") qtabwidget = dialog.findChild(QTabWidget, 'mainTab') if qtabwidget is not None: if change_tab and qtabwidget is not None: qtabwidget.setCurrentIndex(tab_idx) if call_disable_tabs: disable_tabs(dialog) return text
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 load_parametric_values(self, dialog, function): """ Load QGIS settings related with parametric toolbox options """ cur_user = self.controller.get_current_user() function_name = function[0]['functionname'] layout = dialog.findChild(QWidget, 'grb_parameters') widgets = layout.findChildren(QWidget) for widget in widgets: if type(widget) not in (QCheckBox, QComboBox, QLineEdit): continue if type(widget) is QCheckBox: if self.controller.plugin_settings_value( f"{function_name}_{cur_user}_{widget.objectName()}"): widget.setChecked(True) else: widget.setChecked(False) elif type(widget) is QComboBox: if widget.property('selectedId') in (None, '', 'NULL'): value = self.controller.plugin_settings_value( f"{function_name}_{cur_user}_{widget.objectName()}") else: value = widget.property('selectedId') qt_tools.set_combo_itemData(widget, value, 0) elif type(widget) in (QLineEdit, QSpinBox): value = self.controller.plugin_settings_value( f"{function_name}_{cur_user}_{widget.objectName()}") qt_tools.setWidgetText(dialog, widget, value)
def master_estimate_result_manager(self): """ Button 50: Plan estimate result manager """ # Create the dialog and signals self.dlg_merm = PriceManagerUi() load_settings(self.dlg_merm) # Set current value sql = (f"SELECT name FROM plan_result_cat WHERE result_id IN (SELECT result_id FROM selector_plan_result " f"WHERE cur_user = current_user)") row = self.controller.get_row(sql) if row: qt_tools.setWidgetText(self.dlg_merm, 'lbl_vdefault_price', str(row[0])) # Tables tablename = 'plan_result_cat' self.tbl_om_result_cat = self.dlg_merm.findChild(QTableView, "tbl_om_result_cat") qt_tools.set_qtv_config(self.tbl_om_result_cat) # Set signals self.dlg_merm.btn_cancel.clicked.connect(partial(close_dialog, self.dlg_merm)) self.dlg_merm.rejected.connect(partial(close_dialog, self.dlg_merm)) self.dlg_merm.btn_delete.clicked.connect(partial(self.delete_merm, self.dlg_merm)) self.dlg_merm.btn_update_result.clicked.connect(partial(self.update_price_vdefault)) self.dlg_merm.txt_name.textChanged.connect(partial(self.filter_merm, self.dlg_merm, tablename)) set_edit_strategy = QSqlTableModel.OnManualSubmit fill_table(self.tbl_om_result_cat, tablename, set_edit_strategy) set_table_columns(self.tbl_om_result_cat, self.dlg_merm.tbl_om_result_cat, tablename) # Open form self.dlg_merm.setWindowFlags(Qt.WindowStaysOnTopHint) open_dialog(self.dlg_merm, dlg_name="price_manager")
def fill_fields(self): """ Fill dates and combos cat_work/state type end """ sql = 'SELECT id as id, name as idval FROM value_state_type WHERE id IS NOT NULL AND state = 0' rows = self.controller.get_rows(sql) qt_tools.set_item_data(self.dlg_work_end.cmb_statetype_end, rows, 1) row = self.controller.get_config('statetype_end_vdefault') if row: qt_tools.set_combo_itemData(self.dlg_work_end.cmb_statetype_end, row[0], 0) row = self.controller.get_config('edit_enddate_vdefault') if row: enddate = self.manage_dates(row[0]).date() self.dlg_work_end.enddate.setDate(enddate) else: enddate = QDate.currentDate() qt_tools.setCalendarDate(self.dlg_work_end, "enddate", enddate) sql = "SELECT id FROM cat_work" rows = self.controller.get_rows(sql) qt_tools.fillComboBox(self.dlg_work_end, self.dlg_work_end.workcat_id_end, rows, allow_nulls=False) qt_tools.set_autocompleter(self.dlg_work_end.workcat_id_end) row = self.controller.get_config('edit_workcat_end_vdefault') if row: qt_tools.setWidgetText(self.dlg_work_end, self.dlg_work_end.workcat_id_end, row[0])
def show_feature_relation(self): # Get feature_type and feature_id feature_type = qt_tools.getWidgetText( self.dlg_feature_delete, self.dlg_feature_delete.feature_type) feature_id = qt_tools.getWidgetText(self.dlg_feature_delete, self.dlg_feature_delete.feature_id) if feature_id in (None, "null"): message = f"Select one" self.controller.show_warning(message, parameter=feature_type) return feature = '"type":"' + feature_type + '"' extras = '"feature_id":"' + feature_id + '"' body = create_body(feature=feature, extras=extras) result = self.controller.get_json('gw_fct_getfeaturerelation', body) if not result or ('status' in result and result['status'] == 'Failed'): return False # Construct message result result_msg = '' for value in result['body']['data']['info']['values']: result_msg += value['message'] + '\n\n' qt_tools.setWidgetText(self.dlg_feature_delete, self.dlg_feature_delete.txt_feature_infolog, result_msg) # Enable button delete feature if result_msg != '': self.dlg_feature_delete.btn_delete.setEnabled(True)
def load_parametric_values(self, dialog, function): """ Load QGIS settings related with parametric toolbox options """ function_name = function[0]['functionname'] layout = dialog.findChild(QWidget, 'grb_parameters') widgets = layout.findChildren(QWidget) for widget in widgets: if type(widget) not in (QCheckBox, QComboBox, QLineEdit, QRadioButton): continue if type(widget) in (QCheckBox, QRadioButton): value = get_parser_value( 'toolbox', f"parametric_{function_name}_{widget.objectName()}") qt_tools.setChecked(dialog, widget, value) elif type(widget) is QComboBox: if widget.property('selectedId') in (None, '', 'NULL'): value = get_parser_value( 'toolbox', f"parametric_{function_name}_{widget.objectName()}") else: value = widget.property('selectedId') qt_tools.set_combo_itemData(widget, value, 0) elif type(widget) in (QLineEdit, QSpinBox): value = get_parser_value( 'toolbox', f"parametric_{function_name}_{widget.objectName()}") qt_tools.setWidgetText(dialog, widget, value)
def open_selected_object(self, dialog, widget, table_object): """ Open object form with selected record of the table """ selected_list = widget.selectionModel().selectedRows() if len(selected_list) == 0: message = "Any record selected" self.controller.show_warning(message) return row = selected_list[0].row() # Get object_id from selected row field_object_id = "id" widget_id = table_object + "_id" if table_object == "element": field_object_id = table_object + "_id" if table_object == "v_ui_om_visit": widget_id = "visit_id" elif "v_ui_om_visitman_x_" in table_object: field_object_id = "visit_id" selected_object_id = widget.model().record(row).value(field_object_id) # Close this dialog and open selected object dialog.close() if table_object == "doc": self.manage_document(row=widget.model().record(row)) qt_tools.setWidgetText(self.dlg_add_doc, widget_id, selected_object_id) elif table_object == "element": self.manage_element(new_element_id=False) qt_tools.setWidgetText(self.dlg_add_element, widget_id, selected_object_id) elif table_object == "v_ui_om_visit": self.manage_visit(visit_id=selected_object_id) elif "v_ui_om_visitman_x_" in table_object: self.manage_visit(visit_id=selected_object_id)
def populate_info_text(self, dialog, data, force_tab=True, reset_text=True, tab_idx=1): change_tab = False text = qt_tools.getWidgetText(dialog, 'txt_infolog', return_string_null=False) if reset_text: text = "" for item in data['info']['values']: if 'message' in item: if item['message'] is not None: text += str(item['message']) + "\n" if force_tab: change_tab = True else: text += "\n" qt_tools.setWidgetText(dialog, 'txt_infolog', text + "\n") qtabwidget = dialog.findChild(QTabWidget, 'mainTab') if change_tab and qtabwidget is not None: qtabwidget.setCurrentIndex(tab_idx) return change_tab
def show_exceptions_msg(title, msg=""): dlg_info = DialogTextUi() dlg_info.btn_accept.setVisible(False) dlg_info.btn_close.clicked.connect(partial(close_dialog, dlg_info)) dlg_info.setWindowTitle(title) qt_tools.setWidgetText(dlg_info, dlg_info.txt_infolog, msg) open_dialog(dlg_info, dlg_name='dialog_text')
def set_label_current_psector(dialog): sql = ("SELECT t1.name FROM plan_psector AS t1 " " INNER JOIN config_param_user AS t2 ON t1.psector_id::text = t2.value " " WHERE t2.parameter='plan_psector_vdefault' AND cur_user = current_user") row = global_vars.controller.get_row(sql) if not row: return qt_tools.setWidgetText(dialog, 'lbl_vdefault_psector', row[0])
def set_combo(self, dialog, widget, table_name, parameter, field_id='id', field_name='id'): """ Executes query and set combo box """ sql = (f"SELECT t1.{field_name} FROM {table_name} as t1" f" INNER JOIN config_param_user as t2 ON t1.{field_id}::text = t2.value::text" f" WHERE parameter = '{parameter}' AND cur_user = current_user") row = self.controller.get_row(sql) if row: qt_tools.setWidgetText(dialog, widget, row[0])
def populate_cmb_language(self): """ Populate combo with languages values """ self.dlg_qm.btn_translate.setEnabled(True) host = qt_tools.getWidgetText(self.dlg_qm, self.dlg_qm.txt_host) qt_tools.setWidgetText(self.dlg_qm, 'lbl_info', f'Connected to {host}') sql = "SELECT user_language, py_language, xml_language, py_file FROM i18n.cat_language" rows = self.get_rows(sql) qt_tools.set_item_data(self.dlg_qm.cmb_language, rows, 0) cur_user = self.controller.get_current_user() language = self.controller.plugin_settings_value('qm_lang_language' + cur_user) qt_tools.set_combo_itemData(self.dlg_qm.cmb_language, language, 0)
def multi_rows_delete(self, dialog, widget, table_name, column_id, label, config_param, is_price=False): """ Delete selected elements of the table :param QTableView widget: origin :param table_name: table origin :param column_id: Refers to the id of the source table """ # Get selected rows selected_list = widget.selectionModel().selectedRows() if len(selected_list) == 0: message = "Any record selected" self.controller.show_warning(message) return cur_psector = self.controller.get_config('plan_psector_vdefault') inf_text = "" list_id = "" for i in range(0, len(selected_list)): row = selected_list[i].row() id_ = widget.model().record(row).value(str(column_id)) if cur_psector is not None and (str(id_) == str(cur_psector[0])): message = ( "You are trying to delete your current psector. " "Please, change your current psector before delete.") self.show_exceptions_msg('Current psector', self.controller.tr(message)) return list_id += f"'{id_}', " inf_text = inf_text[:-2] list_id = list_id[:-2] message = "Are you sure you want to delete these records?" answer = self.controller.ask_question(message, "Delete records", inf_text) if answer: if is_price is True: sql = "DELETE FROM selector_plan_result WHERE result_id in (" if list_id != '': sql += f"{list_id}) AND cur_user = current_user;" self.controller.execute_sql(sql, log_sql=True) qt_tools.setWidgetText(dialog, label, '') sql = (f"DELETE FROM {table_name}" f" WHERE {column_id} IN ({list_id});") self.controller.execute_sql(sql) widget.model().select()
def clicked_event(self): self.func_name = None self.dlg_csv = CsvUi() load_settings(self.dlg_csv) # Get roles from BD roles = self.controller.get_rolenames() temp_tablename = 'temp_csv' self.populate_cmb_unicodes(self.dlg_csv.cmb_unicode_list) self.populate_combos( self.dlg_csv.cmb_import_type, 'fid', 'alias, config_csv.descript, functionname, readheader, orderby', 'config_csv', roles) self.dlg_csv.lbl_info.setWordWrap(True) qt_tools.setWidgetText(self.dlg_csv, self.dlg_csv.cmb_unicode_list, 'utf8') self.dlg_csv.rb_comma.setChecked(False) self.dlg_csv.rb_semicolon.setChecked(True) # Signals self.dlg_csv.btn_cancel.clicked.connect( partial(close_dialog, self.dlg_csv)) self.dlg_csv.rejected.connect(partial(close_dialog, self.dlg_csv)) self.dlg_csv.btn_accept.clicked.connect( partial(self.write_csv, self.dlg_csv, temp_tablename)) self.dlg_csv.cmb_import_type.currentIndexChanged.connect( partial(self.update_info, self.dlg_csv)) self.dlg_csv.cmb_import_type.currentIndexChanged.connect( partial(self.get_function_name)) self.dlg_csv.btn_file_csv.clicked.connect(partial( self.select_file_csv)) self.dlg_csv.cmb_unicode_list.currentIndexChanged.connect( partial(self.preview_csv, self.dlg_csv)) self.dlg_csv.rb_comma.clicked.connect( partial(self.preview_csv, self.dlg_csv)) self.dlg_csv.rb_semicolon.clicked.connect( partial(self.preview_csv, self.dlg_csv)) self.get_function_name() self.load_settings_values() if str(qt_tools.getWidgetText(self.dlg_csv, self.dlg_csv.txt_file_csv)) != 'null': self.preview_csv(self.dlg_csv) self.dlg_csv.progressBar.setVisible(False) # Open dialog open_dialog(self.dlg_csv, dlg_name='csv')
def set_active_layer(self): # Get current layer and remove selection self.current_layer = self.iface.activeLayer() self.current_layer.removeSelection() # Set active layer layer_name = 'v_edit_' + \ qt_tools.getWidgetText(self.dlg_feature_delete, self.dlg_feature_delete.feature_type).lower() layer = self.controller.get_layer_by_tablename(layer_name) self.iface.setActiveLayer(layer) self.controller.set_layer_visible(layer) # Clear feature id field qt_tools.setWidgetText(self.dlg_feature_delete, self.dlg_feature_delete.feature_id, '')
def load_settings_values(self): """ Load QGIS settings related with csv options """ value = get_parser_value('csv2Pg', 'txt_file_csv') qt_tools.setWidgetText(self.dlg_csv, self.dlg_csv.txt_file_csv, value) unicode = get_parser_value('csv2Pg', 'cmb_unicode_list') if not unicode: unicode = 'latin1' qt_tools.setWidgetText(self.dlg_csv, self.dlg_csv.cmb_unicode_list, unicode) if get_parser_value('csv2Pg', 'rb_semicolon') == 'True': self.dlg_csv.rb_semicolon.setChecked(True) else: self.dlg_csv.rb_comma.setChecked(True)
def load_settings_values(self): """ Load QGIS settings related with csv options """ cur_user = self.controller.get_current_user() qt_tools.setWidgetText(self.dlg_csv, self.dlg_csv.txt_file_csv, self.controller.plugin_settings_value('Csv2Pg_txt_file_csv_' + cur_user)) unicode = self.controller.plugin_settings_value('Csv2Pg_cmb_unicode_list_' + cur_user) if not unicode: unicode = 'latin1' qt_tools.setWidgetText(self.dlg_csv, self.dlg_csv.cmb_unicode_list, unicode) if str(self.controller.plugin_settings_value('Csv2Pg_rb_comma_' + cur_user)).upper() == 'TRUE': self.dlg_csv.rb_comma.setChecked(True) else: self.dlg_csv.rb_semicolon.setChecked(True)
def check_connection(self): """ Check connection to database """ self.dlg_qm.cmb_language.clear() self.dlg_qm.lbl_info.clear() self.close_db() host = qt_tools.getWidgetText(self.dlg_qm, self.dlg_qm.txt_host) port = qt_tools.getWidgetText(self.dlg_qm, self.dlg_qm.txt_port) db = qt_tools.getWidgetText(self.dlg_qm, self.dlg_qm.txt_db) user = qt_tools.getWidgetText(self.dlg_qm, self.dlg_qm.txt_user) password = qt_tools.getWidgetText(self.dlg_qm, self.dlg_qm.txt_pass) status = self.init_db(host, port, db, user, password) if not status: self.dlg_qm.btn_translate.setEnabled(False) qt_tools.setWidgetText(self.dlg_qm, 'lbl_info', self.last_error) return self.populate_cmb_language()
def get_folder_dialog(dialog, widget): """ Get folder dialog """ # Check if selected folder exists. Set default value if necessary folder_path = qt_tools.getWidgetText(dialog, widget) if folder_path is None or folder_path == 'null' or not os.path.exists(folder_path): folder_path = os.path.expanduser("~") # Open dialog to select folder os.chdir(folder_path) file_dialog = QFileDialog() file_dialog.setFileMode(QFileDialog.Directory) message = "Select folder" folder_path = file_dialog.getExistingDirectory( parent=None, caption=global_vars.controller.tr(message), directory=folder_path) if folder_path: qt_tools.setWidgetText(dialog, widget, str(folder_path))
def go2epa_select_file_rpt(self): """ Select RPT file """ # Set default value if necessary if self.file_rpt is None or self.file_rpt == '': self.file_rpt = global_vars.plugin_dir # Get directory of that file folder_path = os.path.dirname(self.file_rpt) if not os.path.exists(folder_path): folder_path = os.path.dirname(__file__) os.chdir(folder_path) message = self.controller.tr("Select RPT file") self.file_rpt, filter_ = QFileDialog.getSaveFileName( None, message, "", '*.rpt') qt_tools.setWidgetText(self.dlg_go2epa, self.dlg_go2epa.txt_file_rpt, self.file_rpt)
def disable_tabs(self, dialog): """ Disable all tabs in the dialog except the log one and change the state of the buttons :param dialog: Dialog where tabs are disabled (QDialog) :return: """ qtabwidget = dialog.findChild(QTabWidget, 'mainTab') for x in range(0, qtabwidget.count() - 1): qtabwidget.widget(x).setEnabled(False) btn_accept = dialog.findChild(QPushButton, 'btn_accept') if btn_accept: btn_accept.hide() btn_cancel = dialog.findChild(QPushButton, 'btn_cancel') if btn_cancel: qt_tools.setWidgetText(dialog, btn_accept, 'Close')
def get_file_dialog(dialog, widget): """ Get file dialog """ # Check if selected file exists. Set default value if necessary file_path = qt_tools.getWidgetText(dialog, widget) if file_path is None or file_path == 'null' or not os.path.exists(str(file_path)): folder_path = global_vars.plugin_dir else: folder_path = os.path.dirname(file_path) # Open dialog to select file os.chdir(folder_path) file_dialog = QFileDialog() file_dialog.setFileMode(QFileDialog.AnyFile) message = "Select file" folder_path, filter_ = file_dialog.getOpenFileName(parent=None, caption=global_vars.controller.tr(message)) if folder_path: qt_tools.setWidgetText(dialog, widget, str(folder_path))
def select_file_csv(self): """ Select CSV file """ file_csv = qt_tools.getWidgetText(self.dlg_csv, 'txt_file_csv') # Set default value if necessary if file_csv is None or file_csv == '': file_csv = self.plugin_dir # Get directory of that file folder_path = os.path.dirname(file_csv) if not os.path.exists(folder_path): folder_path = os.path.dirname(__file__) os.chdir(folder_path) message = self.controller.tr("Select CSV file") file_csv, filter_ = QFileDialog.getOpenFileName(None, message, "", '*.csv') qt_tools.setWidgetText(self.dlg_csv, self.dlg_csv.txt_file_csv, file_csv) self.save_settings_values() self.preview_csv(self.dlg_csv)
def fill_geomcat_id(self, previous_dialog, widget_name): widget_id = self.dlg_catalog.findChild(QComboBox, 'id') catalog_id = qt_tools.getWidgetText(self.dlg_catalog, widget_id) widget = previous_dialog.findChild(QWidget, widget_name) if type(widget) is QLineEdit: widget.setText(catalog_id) widget.setFocus() elif type(widget) is QComboBox: qt_tools.setWidgetText(previous_dialog, widget, catalog_id) widget.setFocus() else: message = "Widget not found" self.controller.show_message(message, 2, parameter=str(widget_name)) close_dialog(self.dlg_catalog)
def get_folder_dialog(self, dialog, widget): """ Get folder dialog """ widget.setStyleSheet(None) if 'nt' in sys.builtin_module_names: folder_path = os.path.expanduser("~/Documents") else: folder_path = os.path.expanduser("~") # Open dialog to select folder os.chdir(folder_path) file_dialog = QFileDialog() file_dialog.setFileMode(QFileDialog.Directory) msg = "Save as" folder_path, filter_ = file_dialog.getSaveFileName( None, self.controller.tr(msg), folder_path, '*.csv') if folder_path: qt_tools.setWidgetText(dialog, widget, str(folder_path))
def go2epa_options_get_data(self, tablename, dialog): """ Get data from selected table """ sql = f"SELECT * FROM {tablename}" row = self.controller.get_row(sql) if not row: message = "Any data found in table" self.controller.show_warning(message, parameter=tablename) return None # Iterate over all columns and populate its corresponding widget columns = [] for i in range(0, len(row)): column_name = self.controller.dao.get_column_name(i) widget = dialog.findChild(QWidget, column_name) widget_type = qt_tools.getWidgetType(dialog, widget) if row[column_name] is not None: if widget_type is QCheckBox: qt_tools.setChecked(dialog, widget, row[column_name]) elif widget_type is QComboBox: qt_tools.set_combo_itemData(widget, row[column_name], 0) elif widget_type is QDateEdit: dateaux = row[column_name].replace('/', '-') date = QDate.fromString(dateaux, 'dd-MM-yyyy') qt_tools.setCalendarDate(dialog, widget, date) elif widget_type is QTimeEdit: timeparts = str(row[column_name]).split(':') if len(timeparts) < 3: timeparts.append("0") days = int(timeparts[0]) / 24 hours = int(timeparts[0]) % 24 minuts = int(timeparts[1]) seconds = int(timeparts[2]) time = QTime(hours, minuts, seconds) qt_tools.setTimeEdit(dialog, widget, time) qt_tools.setText(dialog, column_name + "_day", days) else: qt_tools.setWidgetText(dialog, widget, str(row[column_name])) columns.append(column_name) return columns
def go2epa_select_file_inp(self): """ Select INP file """ self.file_inp = qt_tools.getWidgetText(self.dlg_go2epa, self.dlg_go2epa.txt_file_inp) # Set default value if necessary if self.file_inp is None or self.file_inp == '': self.file_inp = self.plugin_dir # Get directory of that file folder_path = os.path.dirname(self.file_inp) if not os.path.exists(folder_path): folder_path = os.path.dirname(__file__) os.chdir(folder_path) message = self.controller.tr("Select INP file") self.file_inp, filter_ = QFileDialog.getSaveFileName( None, message, "", '*.inp') qt_tools.setWidgetText(self.dlg_go2epa, self.dlg_go2epa.txt_file_inp, self.file_inp)
def open_selected_object_document(self, dialog, widget, table_object): selected_list = widget.selectionModel().selectedRows() if len(selected_list) == 0: message = "Any record selected" self.controller.show_warning(message) return row = selected_list[0].row() # Get object_id from selected row field_object_id = "id" widget_id = table_object + "_id" selected_object_id = widget.model().record(row).value(field_object_id) # Close this dialog and open selected object dialog.close() self.manage_document(row=widget.model().record(row)) qt_tools.setWidgetText(self.dlg_add_doc, widget_id, selected_object_id)
def update_price_vdefault(self): selected_list = self.dlg_merm.tbl_om_result_cat.selectionModel().selectedRows() if len(selected_list) == 0: message = "Any record selected" self.controller.show_warning(message) return row = selected_list[0].row() price_name = self.dlg_merm.tbl_om_result_cat.model().record(row).value("name") result_id = self.dlg_merm.tbl_om_result_cat.model().record(row).value("result_id") qt_tools.setWidgetText(self.dlg_merm, 'lbl_vdefault_price', price_name) sql = (f"DELETE FROM selector_plan_result WHERE current_user = cur_user;" f"\nINSERT INTO selector_plan_result (result_id, cur_user)" f" VALUES({result_id}, current_user);") status = self.controller.execute_sql(sql) if status: message = "Values has been updated" self.controller.show_info(message) # Refresh canvas self.iface.mapCanvas().refreshAllLayers()