class ParentDialog(object): def __init__(self, dialog, layer, feature): ''' Constructor class ''' self.dialog = dialog self.layer = layer self.feature = feature self.context_name = "ws_parent" self.iface = iface self.init_config() def init_config(self): # initialize plugin directory user_folder = os.path.expanduser("~") self.plugin_name = 'giswater' self.plugin_dir = os.path.join(user_folder, '.qgis2/python/plugins/'+self.plugin_name) # Get config file setting_file = os.path.join(self.plugin_dir, 'config', self.plugin_name+'.config') if not os.path.isfile(setting_file): message = "Config file not found at: "+setting_file self.iface.messageBar().pushMessage(message, QgsMessageBar.WARNING, 5) self.close() return self.settings = QSettings(setting_file, QSettings.IniFormat) self.settings.setIniCodec(sys.getfilesystemencoding()) # Set controller to handle settings and database connection # TODO: Try to make only one connection self.controller = DaoController(self.settings, self.plugin_name, iface) status = self.controller.set_database_connection() if not status: message = self.controller.getLastError() self.iface.messageBar().pushMessage(message, QgsMessageBar.WARNING, 5) return self.schema_name = self.settings.value("db/schema_name") self.dao = self.controller.dao def translate_form(self, context_name): ''' Translate widgets of the form to current language ''' # Get objects of type: QLabel widget_list = self.dialog.findChildren(QLabel) for widget in widget_list: self.translate_widget(context_name, widget) def translate_widget(self, context_name, widget): ''' Translate widget text ''' if widget: widget_name = widget.objectName() text = self.controller.tr(widget_name, context_name) if text != widget_name: widget.setText(text) def load_tab_add_info(self): ''' Load data from tab 'Add. info' ''' pass def load_tab_analysis(self): ''' Load data from tab 'Analysis' ''' pass def load_tab_document(self): ''' TODO: Load data from tab 'Document' ''' pass def load_tab_picture(self): ''' TODO: Load data from tab 'Document' ''' pass def load_tab_event(self): ''' TODO: Load data from tab 'Event' ''' pass def load_tab_log(self): ''' TODO: Load data from tab 'Log' ''' pass def load_tab_rtc(self): ''' TODO: Load data from tab 'RTC' ''' pass def load_data(self): ''' Load data from related tables ''' self.load_tab_add_info() self.load_tab_analysis() self.load_tab_document() self.load_tab_picture() self.load_tab_event() self.load_tab_log() self.load_tab_rtc() def save_tab_add_info(self): ''' Save tab from tab 'Add. info' ''' pass def save_tab_analysis(self): ''' Save tab from tab 'Analysis' ''' pass def save_tab_document(self): ''' TODO: Save tab from tab 'Document' ''' pass def save_tab_picture(self): ''' TODO: Save tab from tab 'Document' ''' pass def save_tab_event(self): ''' TODO: Save tab from tab 'Event' ''' pass def save_tab_log(self): ''' TODO: Save tab from tab 'Log' ''' pass def save_tab_rtc(self): ''' TODO: Save tab from tab 'RTC' ''' pass def save_data(self): ''' Save data from related tables ''' self.save_tab_add_info() self.save_tab_analysis() self.save_tab_document() self.save_tab_picture() self.save_tab_event() self.save_tab_log() self.save_tab_rtc() ''' Slot functions ''' def save(self): ''' Save feature ''' self.save_data() self.dialog.accept() self.layer.commitChanges() self.close() def close(self): ''' Close form without saving ''' self.layer.rollBack() self.dialog.parent().setVisible(False) def set_model_to_table(self, widget, table_name, filter_): ''' Set a model with selected filter. Attach that model to selected table ''' # Set model model = QSqlTableModel(); model.setTable(table_name) model.setEditStrategy(QSqlTableModel.OnManualSubmit) model.setFilter(filter_) model.select() # Check for errors if model.lastError().isValid(): self.controller.show_warning(model.lastError().text()) # Attach model to table view widget.setModel(model) def delete_records(self, widget, table_name): ''' Delete selected elements of the table ''' # Get selected rows selected_list = widget.selectionModel().selectedRows() if len(selected_list) == 0: message = "Any record selected" self.controller.show_warning(message, context_name='ui_message' ) return inf_text = "" list_id = "" for i in range(0, len(selected_list)): row = selected_list[i].row() id_ = widget.model().record(row).value("id") inf_text+= str(id_)+", " list_id = list_id+"'"+str(id_)+"', " inf_text = inf_text[:-2] list_id = list_id[:-2] answer = self.controller.ask_question("Are you sure you want to delete these records?", "Delete records", inf_text) if answer: sql = "DELETE FROM "+self.schema_name+"."+table_name sql+= " WHERE id IN ("+list_id+")" self.dao.execute_sql(sql) widget.model().select() def open_selected_document(self): ''' Get value from selected cell ("PATH") Open the document ''' # Check if clicked value is from the column "PATH" position_column = self.tbl_document.currentIndex().column() if position_column == 4: # Get data from address in memory (pointer) self.path = self.tbl_document.selectedIndexes()[0].data() # Check if file exist if not os.path.exists(self.path): message = "File not found!" self.controller.show_warning(message, context_name='ui_message') else: # Open the document os.startfile(self.path) def set_filter_table(self, widget): ''' Get values selected by the user and sets a new filter for its table model ''' # Get selected dates date_from = self.date_document_from.date().toString('yyyyMMdd') date_to = self.date_document_to.date().toString('yyyyMMdd') if (date_from > date_to): message = "Selected date interval is not valid" self.controller.show_warning(message, context_name='ui_message') return # Set filter expr = self.field_id+" = '"+self.id+"'" expr+= " AND date >= '"+date_from+"' AND date <= '"+date_to+"'" # Get selected values in Comboboxes doc_type_value = utils_giswater.getWidgetText("doc_type") if doc_type_value != 'null': expr+= " AND doc_type = '"+doc_type_value+"'" doc_tag_value = utils_giswater.getWidgetText("doc_tag") if doc_tag_value != 'null': expr+= " AND tagcat_id = '"+doc_tag_value+"'" doc_user_value = utils_giswater.getWidgetText("doc_user") if doc_user_value != 'null': expr+= " AND user_name = '"+doc_user_value+"'" # Refresh model with selected filter widget.model().setFilter(expr) widget.model().select() def set_configuration(self, widget, table_name): ''' Configuration of tables Set visibility of columns Set width of columns ''' # Set width and alias of visible columns columns_to_delete = [] sql = "SELECT column_index, width, alias, status" sql+= " FROM "+self.schema_name+".config_ui_forms" sql+= " WHERE ui_table = '"+table_name+"'" sql+= " ORDER BY column_index" rows = self.controller.get_rows(sql) if rows: for row in rows: if not row['status']: columns_to_delete.append(row['column_index']-1) else: width = row['width'] if width is None: width = 100 widget.setColumnWidth(row['column_index']-1, width) widget.model().setHeaderData(row['column_index']-1, Qt.Horizontal, row['alias']) # Set order widget.model().setSort(0, Qt.AscendingOrder) widget.model().select() # Delete columns for column in columns_to_delete: widget.hideColumn(column) def fill_tbl_document(self, widget, table_name, filter_): ''' Fill the table control to show documents''' # Get widgets doc_user = self.dialog.findChild(QComboBox, "doc_user") doc_type = self.dialog.findChild(QComboBox, "doc_type") doc_tag = self.dialog.findChild(QComboBox, "doc_tag") self.date_document_to = self.dialog.findChild(QDateEdit, "date_document_to") self.date_document_from = self.dialog.findChild(QDateEdit, "date_document_from") # Set signals doc_user.activated.connect(partial(self.set_filter_table, widget)) doc_type.activated.connect(partial(self.set_filter_table, widget)) doc_tag.activated.connect(partial(self.set_filter_table, widget)) self.date_document_to.dateChanged.connect(partial(self.set_filter_table, widget)) self.date_document_from.dateChanged.connect(partial(self.set_filter_table, widget)) self.tbl_document.doubleClicked.connect(self.open_selected_document) # Fill ComboBox tagcat_id sql = "SELECT DISTINCT(tagcat_id)" sql+= " FROM "+table_name sql+= " ORDER BY tagcat_id" rows = self.dao.get_rows(sql) utils_giswater.fillComboBox("doc_tag", rows) # Fill ComboBox doccat_id sql = "SELECT DISTINCT(doc_type)" sql+= " FROM "+table_name sql+= " ORDER BY doc_type" rows = self.dao.get_rows(sql) utils_giswater.fillComboBox("doc_type", rows) # Fill ComboBox doc_user sql = "SELECT DISTINCT(user_name)" sql+= " FROM "+table_name sql+= " ORDER BY user_name" rows = self.dao.get_rows(sql) utils_giswater.fillComboBox("doc_user", rows) # Set model of selected widget self.set_model_to_table(widget, table_name, filter_) def fill_table(self, widget, table_name, filter_): ''' Fill info tab of node ''' self.set_model_to_table(widget, table_name, filter_)
class ParentDialog(object): def __init__(self, iface, dialog, layer, feature): ''' Constructor class ''' self.iface = iface self.dialog = dialog self.layer = layer self.feature = feature self.init_config() def init_config(self): # initialize plugin directory user_folder = os.path.expanduser("~") self.plugin_name = 'giswater' self.plugin_dir = os.path.join( user_folder, '.qgis2/python/plugins/' + self.plugin_name) # Get config file setting_file = os.path.join(self.plugin_dir, 'config', self.plugin_name + '.config') if not os.path.isfile(setting_file): message = "Config file not found at: " + setting_file self.iface.messageBar().pushMessage(message, QgsMessageBar.WARNING, 5) self.close() return self.settings = QSettings(setting_file, QSettings.IniFormat) self.settings.setIniCodec(sys.getfilesystemencoding()) # Set controller to handle settings and database connection # TODO: Try to make only one connection self.controller = DaoController(self.settings, self.plugin_name) status = self.controller.set_database_connection() if not status: message = self.controller.getLastError() self.iface.messageBar().pushMessage(message, QgsMessageBar.WARNING, 5) return self.schema_name = self.controller.getSchemaName() self.dao = self.controller.getDao() def translate_form(self, context_name): ''' Translate widgets of the form to current language ''' # Get objects of type: QLabel widget_list = self.dialog.findChildren(QLabel) for widget in widget_list: self.translate_widget(context_name, widget) def translate_widget(self, context_name, widget): ''' Translate widget text ''' if widget: widget_name = widget.objectName() text = utils_giswater.tr(context_name, widget_name) if text != widget_name: widget.setText(text) def load_tab_add_info(self): ''' Load data from tab 'Add. info' ''' pass def load_tab_analysis(self): ''' Load data from tab 'Analysis' ''' pass def load_tab_document(self): ''' TODO: Load data from tab 'Document' ''' pass def load_tab_picture(self): ''' TODO: Load data from tab 'Document' ''' pass def load_tab_event(self): ''' TODO: Load data from tab 'Event' ''' pass def load_tab_log(self): ''' TODO: Load data from tab 'Log' ''' pass def load_tab_rtc(self): ''' TODO: Load data from tab 'RTC' ''' pass def load_data(self): ''' Load data from related tables ''' self.load_tab_add_info() self.load_tab_analysis() self.load_tab_document() self.load_tab_picture() self.load_tab_event() self.load_tab_log() self.load_tab_rtc() def save_tab_add_info(self): ''' Save tab from tab 'Add. info' ''' pass def save_tab_analysis(self): ''' Save tab from tab 'Analysis' ''' pass def save_tab_document(self): ''' TODO: Save tab from tab 'Document' ''' pass def save_tab_picture(self): ''' TODO: Save tab from tab 'Document' ''' pass def save_tab_event(self): ''' TODO: Save tab from tab 'Event' ''' pass def save_tab_log(self): ''' TODO: Save tab from tab 'Log' ''' pass def save_tab_rtc(self): ''' TODO: Save tab from tab 'RTC' ''' pass def save_data(self): ''' Save data from related tables ''' self.save_tab_add_info() self.save_tab_analysis() self.save_tab_document() self.save_tab_picture() self.save_tab_event() self.save_tab_log() self.save_tab_rtc() ''' Slot functions ''' def save(self): ''' Save feature ''' self.save_data() self.dialog.accept() self.layer.commitChanges() self.close() def close(self): ''' Close form without saving ''' self.layer.rollBack() self.dialog.parent().setVisible(False)
class ParentDialog(object): def __init__(self, iface, dialog, layer, feature): ''' Constructor class ''' self.iface = iface self.dialog = dialog self.layer = layer self.feature = feature self.init_config() def init_config(self): # initialize plugin directory user_folder = os.path.expanduser("~") self.plugin_name = 'giswater' self.plugin_dir = os.path.join(user_folder, '.qgis2/python/plugins/'+self.plugin_name) # Get config file setting_file = os.path.join(self.plugin_dir, 'config', self.plugin_name+'.config') if not os.path.isfile(setting_file): message = "Config file not found at: "+setting_file self.iface.messageBar().pushMessage(message, QgsMessageBar.WARNING, 5) self.close() return self.settings = QSettings(setting_file, QSettings.IniFormat) self.settings.setIniCodec(sys.getfilesystemencoding()) # Set controller to handle settings and database connection # TODO: Try to make only one connection self.controller = DaoController(self.settings, self.plugin_name) status = self.controller.set_database_connection() if not status: message = self.controller.getLastError() self.iface.messageBar().pushMessage(message, QgsMessageBar.WARNING, 5) return self.schema_name = self.controller.getSchemaName() self.dao = self.controller.getDao() def translate_form(self, context_name): ''' Translate widgets of the form to current language ''' # Get objects of type: QLabel widget_list = self.dialog.findChildren(QLabel) for widget in widget_list: self.translate_widget(context_name, widget) def translate_widget(self, context_name, widget): ''' Translate widget text ''' if widget: widget_name = widget.objectName() text = utils_giswater.tr(context_name, widget_name) if text != widget_name: widget.setText(text) def load_tab_add_info(self): ''' Load data from tab 'Add. info' ''' pass def load_tab_analysis(self): ''' Load data from tab 'Analysis' ''' pass def load_tab_document(self): ''' TODO: Load data from tab 'Document' ''' pass def load_tab_picture(self): ''' TODO: Load data from tab 'Document' ''' pass def load_tab_event(self): ''' TODO: Load data from tab 'Event' ''' pass def load_tab_log(self): ''' TODO: Load data from tab 'Log' ''' pass def load_tab_rtc(self): ''' TODO: Load data from tab 'RTC' ''' pass def load_data(self): ''' Load data from related tables ''' self.load_tab_add_info() self.load_tab_analysis() self.load_tab_document() self.load_tab_picture() self.load_tab_event() self.load_tab_log() self.load_tab_rtc() def save_tab_add_info(self): ''' Save tab from tab 'Add. info' ''' pass def save_tab_analysis(self): ''' Save tab from tab 'Analysis' ''' pass def save_tab_document(self): ''' TODO: Save tab from tab 'Document' ''' pass def save_tab_picture(self): ''' TODO: Save tab from tab 'Document' ''' pass def save_tab_event(self): ''' TODO: Save tab from tab 'Event' ''' pass def save_tab_log(self): ''' TODO: Save tab from tab 'Log' ''' pass def save_tab_rtc(self): ''' TODO: Save tab from tab 'RTC' ''' pass def save_data(self): ''' Save data from related tables ''' self.save_tab_add_info() self.save_tab_analysis() self.save_tab_document() self.save_tab_picture() self.save_tab_event() self.save_tab_log() self.save_tab_rtc() ''' Slot functions ''' def save(self): ''' Save feature ''' self.save_data() self.dialog.accept() self.layer.commitChanges() self.close() def close(self): ''' Close form without saving ''' self.layer.rollBack() self.dialog.parent().setVisible(False)
class NodeDialog(): def __init__(self, iface, dialog, layer, feature): self.iface = iface self.dialog = dialog self.layer = layer self.feature = feature self.initConfig() def initConfig(self): self.node_id = utils_giswater.getStringValue2("node_id") self.epa_type = utils_giswater.getSelectedItem("epa_type") # initialize plugin directory user_folder = os.path.expanduser("~") self.plugin_name = 'giswater' self.plugin_dir = os.path.join( user_folder, '.qgis2/python/plugins/' + self.plugin_name) # Get config file setting_file = os.path.join(self.plugin_dir, 'config', self.plugin_name + '.config') if not os.path.isfile(setting_file): message = "Config file not found at: " + setting_file self.iface.messageBar().pushMessage(message, QgsMessageBar.WARNING, 5) self.close() return self.settings = QSettings(setting_file, QSettings.IniFormat) self.settings.setIniCodec(sys.getfilesystemencoding()) # Get widget controls self.cbo_cat_nodetype_id = self.dialog.findChild( QComboBox, "cat_nodetype_iddd") self.cbo_nodecat_id = self.dialog.findChild(QComboBox, "nodecat_id") self.tab_analysis = self.dialog.findChild(QTabWidget, "tab_analysis") self.tab_event = self.dialog.findChild(QTabWidget, "tab_event") # Set controller to handle settings and database connection # TODO: Try to make only one connection self.controller = DaoController(self.settings, self.plugin_name) status = self.controller.set_database_connection() if not status: message = self.controller.getLastError() self.iface.messageBar().pushMessage(message, QgsMessageBar.WARNING, 5) return self.schema_name = self.controller.getSchemaName() self.dao = self.controller.getDao() # Manage tab visibility self.setTabsVisibility() # Manage i18n self.translateForm() # Fill combo 'node type' from 'epa_type' self.fillNodeType() # Load data from related tables self.loadData() # Set layer in editing mode self.layer.startEditing() def translateForm(self): # Get objects of type: QLabel context_name = 'ws_node' widget_list = self.dialog.findChildren(QLabel) for widget in widget_list: self.translateWidget(context_name, widget) def translateWidget(self, context_name, widget): if widget: widget_name = widget.objectName() text = utils_giswater.tr(context_name, widget_name) if text != widget_name: widget.setText(text) def loadData(self): # Tab 'Add. info' if self.epa_type == 'TANK': sql = "SELECT vmax, area FROM " + self.schema_name + ".man_tank WHERE node_id = " + self.node_id row = self.dao.get_row(sql) if row: utils_giswater.setText("man_tank_vmax", str(row[0])) utils_giswater.setText("man_tank_area", str(row[1])) ''' Slots ''' def fillNodeType(self): """ Define and execute query to populate combo 'cat_nodetype_id' """ cat_nodetype_id = utils_giswater.getSelectedItem("cat_nodetype_id") sql = "SELECT id, man_table, epa_table FROM " + self.schema_name + ".arc_type WHERE epa_default = '" + self.epa_type + "' UNION " sql += "SELECT id, man_table, epa_table FROM " + self.schema_name + ".node_type WHERE epa_default = '" + self.epa_type + "' ORDER BY id" rows = self.dao.get_rows(sql) self.cbo_cat_nodetype_id = self.dialog.findChild( QComboBox, "cat_nodetype_id") utils_giswater.fillComboBox(self.cbo_cat_nodetype_id, rows) utils_giswater.setSelectedItem('cat_nodetype_id', cat_nodetype_id) def changeNodeType(self, index): """ Define and execute query to populate combo 'nodecat_id_dummy' """ cat_nodetype_id = utils_giswater.getSelectedItem("cat_nodetype_id") sql = "SELECT id FROM " + self.schema_name + ".cat_arc WHERE arctype_id = '" + cat_nodetype_id + "' UNION " sql += "SELECT id FROM " + self.schema_name + ".cat_node WHERE nodetype_id = '" + cat_nodetype_id + "' ORDER BY id" rows = self.dao.get_rows(sql) self.cbo_nodecat_id = self.dialog.findChild(QComboBox, "nodecat_id_dummy") utils_giswater.fillComboBox(self.cbo_nodecat_id, rows, False) self.changeNodeCat(0) def changeNodeCat(self, index): """ Just select item to 'real' combo 'nodecat_id' (that is hidden) """ dummy = utils_giswater.getSelectedItem("nodecat_id_dummy") utils_giswater.setSelectedItem("nodecat_id", dummy) def changeEpaType(self, index): """ Just select item to 'real' combo 'nodecat_id' (that is hidden) """ epa_type = utils_giswater.getSelectedItem("epa_type") self.save() self.iface.openFeatureForm(self.layer, self.feature) def setTabsVisibility(self): man_visible = False index_tab = 0 if self.epa_type == 'JUNCTION': index_tab = 0 if self.epa_type == 'RESERVOIR' or self.epa_type == 'HYDRANT': index_tab = 1 if self.epa_type == 'TANK': index_tab = 2 man_visible = True if self.epa_type == 'PUMP': index_tab = 3 if self.epa_type == 'VALVE': index_tab = 4 if self.epa_type == 'SHORTPIPE' or self.epa_type == 'FILTER': index_tab = 5 if self.epa_type == 'MEASURE INSTRUMENT': index_tab = 6 # Tab 'Add. info': Manage visibility of these widgets utils_giswater.setWidgetVisible("label_man_tank_vmax", man_visible) utils_giswater.setWidgetVisible("label_man_tank_area", man_visible) utils_giswater.setWidgetVisible("man_tank_vmax", man_visible) utils_giswater.setWidgetVisible("man_tank_area", man_visible) # Move 'visible' tab to last position and remove previous ones self.tab_analysis.tabBar().moveTab(index_tab, 5) for i in range(0, self.tab_analysis.count() - 1): self.tab_analysis.removeTab(0) self.tab_event.tabBar().moveTab(index_tab, 6) for i in range(0, self.tab_event.count() - 1): self.tab_event.removeTab(0) def save(self): if self.epa_type == 'TANK': vmax = utils_giswater.getStringValue2("man_tank_vmax") area = utils_giswater.getStringValue2("man_tank_area") sql = "UPDATE " + self.schema_name + ".man_tank SET vmax = " + str( vmax) + ", area = " + str(area) sql += " WHERE node_id = " + str(self.node_id) print sql self.dao.execute_sql(sql) self.dialog.accept() self.layer.commitChanges() self.close() def close(self): self.layer.rollBack() self.dialog.parent().setVisible(False)
class NodeDialog(): def __init__(self, iface, dialog, layer, feature): self.iface = iface self.dialog = dialog self.layer = layer self.feature = feature self.initConfig() def initConfig(self): self.node_id = utils_giswater.getStringValue2("node_id") self.epa_type = utils_giswater.getSelectedItem("epa_type") # initialize plugin directory user_folder = os.path.expanduser("~") self.plugin_name = 'giswater' self.plugin_dir = os.path.join(user_folder, '.qgis2/python/plugins/'+self.plugin_name) # Get config file setting_file = os.path.join(self.plugin_dir, 'config', self.plugin_name+'.config') if not os.path.isfile(setting_file): message = "Config file not found at: "+setting_file self.iface.messageBar().pushMessage(message, QgsMessageBar.WARNING, 5) self.close() return self.settings = QSettings(setting_file, QSettings.IniFormat) self.settings.setIniCodec(sys.getfilesystemencoding()) # Get widget controls self.cbo_cat_nodetype_id = self.dialog.findChild(QComboBox, "cat_nodetype_iddd") self.cbo_nodecat_id = self.dialog.findChild(QComboBox, "nodecat_id") self.tab_analysis = self.dialog.findChild(QTabWidget, "tab_analysis") self.tab_event = self.dialog.findChild(QTabWidget, "tab_event") # Set controller to handle settings and database connection # TODO: Try to make only one connection self.controller = DaoController(self.settings, self.plugin_name) status = self.controller.set_database_connection() if not status: message = self.controller.getLastError() self.iface.messageBar().pushMessage(message, QgsMessageBar.WARNING, 5) return self.schema_name = self.controller.getSchemaName() self.dao = self.controller.getDao() # Manage tab visibility self.setTabsVisibility() # Manage i18n self.translateForm() # Fill combo 'node type' from 'epa_type' self.fillNodeType() # Load data from related tables self.loadData() # Set layer in editing mode self.layer.startEditing() def translateForm(self): # Get objects of type: QLabel context_name = 'ws_node' widget_list = self.dialog.findChildren(QLabel) for widget in widget_list: self.translateWidget(context_name, widget) def translateWidget(self, context_name, widget): if widget: widget_name = widget.objectName() text = utils_giswater.tr(context_name, widget_name) if text != widget_name: widget.setText(text) def loadData(self): # Tab 'Add. info' if self.epa_type == 'TANK': sql = "SELECT vmax, area FROM "+self.schema_name+".man_tank WHERE node_id = "+self.node_id row = self.dao.get_row(sql) if row: utils_giswater.setText("man_tank_vmax", str(row[0])) utils_giswater.setText("man_tank_area", str(row[1])) ''' Slots ''' def fillNodeType(self): """ Define and execute query to populate combo 'cat_nodetype_id' """ cat_nodetype_id = utils_giswater.getSelectedItem("cat_nodetype_id") sql = "SELECT id, man_table, epa_table FROM "+self.schema_name+".arc_type WHERE epa_default = '"+self.epa_type+"' UNION " sql+= "SELECT id, man_table, epa_table FROM "+self.schema_name+".node_type WHERE epa_default = '"+self.epa_type+"' ORDER BY id" rows = self.dao.get_rows(sql) self.cbo_cat_nodetype_id = self.dialog.findChild(QComboBox, "cat_nodetype_id") utils_giswater.fillComboBox(self.cbo_cat_nodetype_id, rows) utils_giswater.setSelectedItem('cat_nodetype_id', cat_nodetype_id) def changeNodeType(self, index): """ Define and execute query to populate combo 'nodecat_id_dummy' """ cat_nodetype_id = utils_giswater.getSelectedItem("cat_nodetype_id") sql = "SELECT id FROM "+self.schema_name+".cat_arc WHERE arctype_id = '"+cat_nodetype_id+"' UNION " sql+= "SELECT id FROM "+self.schema_name+".cat_node WHERE nodetype_id = '"+cat_nodetype_id+"' ORDER BY id" rows = self.dao.get_rows(sql) self.cbo_nodecat_id = self.dialog.findChild(QComboBox, "nodecat_id_dummy") utils_giswater.fillComboBox(self.cbo_nodecat_id, rows, False) self.changeNodeCat(0) def changeNodeCat(self, index): """ Just select item to 'real' combo 'nodecat_id' (that is hidden) """ dummy = utils_giswater.getSelectedItem("nodecat_id_dummy") utils_giswater.setSelectedItem("nodecat_id", dummy) def changeEpaType(self, index): """ Just select item to 'real' combo 'nodecat_id' (that is hidden) """ epa_type = utils_giswater.getSelectedItem("epa_type") self.save() self.iface.openFeatureForm(self.layer, self.feature) def setTabsVisibility(self): man_visible = False index_tab = 0 if self.epa_type == 'JUNCTION': index_tab = 0 if self.epa_type == 'RESERVOIR' or self.epa_type == 'HYDRANT': index_tab = 1 if self.epa_type == 'TANK': index_tab = 2 man_visible = True if self.epa_type == 'PUMP': index_tab = 3 if self.epa_type == 'VALVE': index_tab = 4 if self.epa_type == 'SHORTPIPE' or self.epa_type == 'FILTER': index_tab = 5 if self.epa_type == 'MEASURE INSTRUMENT': index_tab = 6 # Tab 'Add. info': Manage visibility of these widgets utils_giswater.setWidgetVisible("label_man_tank_vmax", man_visible) utils_giswater.setWidgetVisible("label_man_tank_area", man_visible) utils_giswater.setWidgetVisible("man_tank_vmax", man_visible) utils_giswater.setWidgetVisible("man_tank_area", man_visible) # Move 'visible' tab to last position and remove previous ones self.tab_analysis.tabBar().moveTab(index_tab, 5); for i in range(0, self.tab_analysis.count() - 1): self.tab_analysis.removeTab(0) self.tab_event.tabBar().moveTab(index_tab, 6); for i in range(0, self.tab_event.count() - 1): self.tab_event.removeTab(0) def save(self): if self.epa_type == 'TANK': vmax = utils_giswater.getStringValue2("man_tank_vmax") area = utils_giswater.getStringValue2("man_tank_area") sql = "UPDATE "+self.schema_name+".man_tank SET vmax = "+str(vmax)+ ", area = "+str(area) sql+= " WHERE node_id = "+str(self.node_id) print sql self.dao.execute_sql(sql) self.dialog.accept() self.layer.commitChanges() self.close() def close(self): self.layer.rollBack() self.dialog.parent().setVisible(False)