コード例 #1
0
    def change_elem_type(self, feature):

        # Create the dialog, fill node_type and define its signals
        self.dlg_chg_node_type = NodeTypeChange()
        load_settings(self.dlg_chg_node_type)

        # Get nodetype_id from current node
        node_type = ""
        project_type = self.controller.get_project_type()
        if project_type == 'ws':
            node_type = feature.attribute('nodetype_id')
            self.dlg_chg_node_type.node_node_type_new.currentIndexChanged.connect(partial(self.filter_catalog))
        elif project_type == 'ud':
            node_type = feature.attribute('node_type')
            sql = "SELECT DISTINCT(id), id FROM cat_node  ORDER BY id"
            rows = self.controller.get_rows(sql)
            qt_tools.set_item_data(self.dlg_chg_node_type.node_nodecat_id, rows, 1)

        self.dlg_chg_node_type.node_node_type.setText(node_type)
        self.dlg_chg_node_type.btn_catalog.clicked.connect(partial(self.open_catalog))
        self.dlg_chg_node_type.btn_accept.clicked.connect(self.edit_change_elem_type_accept)
        self.dlg_chg_node_type.btn_cancel.clicked.connect(partial(close_dialog, self.dlg_chg_node_type))

        # Fill 1st combo boxes-new system node type
        sql = ("SELECT DISTINCT(id) FROM cat_feature WHERE active is True "
               "AND feature_type = 'NODE' ORDER BY id")
        rows = self.controller.get_rows(sql)
        qt_tools.fillComboBox(self.dlg_chg_node_type, "node_node_type_new", rows)

        # Open dialog
        open_dialog(self.dlg_chg_node_type, dlg_name='nodetype_change', maximize_button=False)
コード例 #2
0
    def populate_layer_combo(self):

        geom_type = qt_tools.get_item_data(self.dlg_functions,
                                           self.dlg_functions.cmb_geom_type, 0)
        self.layers = []
        self.layers = self.get_all_group_layers(geom_type)

        layers = []
        legend_layers = self.controller.get_layers()
        for geom_type, layer in self.layers:
            if layer in legend_layers:
                elem = []
                layer_name = self.controller.get_layer_source_table_name(layer)
                elem.append(layer.name())
                elem.append(layer_name)
                elem.append(geom_type)
                layers.append(elem)
        if not layers:
            elem = []
            elem.append(f"There is no layer related to {geom_type}.")
            elem.append(None)
            elem.append(None)
            layers.append(elem)

        qt_tools.set_item_data(self.dlg_functions.cmb_layers,
                               layers,
                               sort_combo=False)
コード例 #3
0
    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])
コード例 #4
0
    def populate_combos(self, combo, field_id, fields, table_name, roles):

        if roles is None:
            return

        sql = (f"SELECT DISTINCT({field_id}), {fields}"
               f" FROM {table_name}"
               f" JOIN sys_function ON function_name =  functionname"
               f" WHERE sys_role IN {roles} AND active is True ORDER BY orderby")
        rows = self.controller.get_rows(sql, log_sql=True)
        if not rows:
            message = "You do not have permission to execute this application"
            self.dlg_csv.lbl_info.setText(self.controller.tr(message))
            self.dlg_csv.lbl_info.setStyleSheet("QLabel{color: red;}")

            self.dlg_csv.cmb_import_type.setEnabled(False)
            self.dlg_csv.txt_import.setEnabled(False)
            self.dlg_csv.txt_file_csv.setEnabled(False)
            self.dlg_csv.cmb_unicode_list.setEnabled(False)
            self.dlg_csv.rb_comma.setEnabled(False)
            self.dlg_csv.rb_semicolon.setEnabled(False)
            self.dlg_csv.btn_file_csv.setEnabled(False)
            self.dlg_csv.tbl_csv.setEnabled(False)
            self.dlg_csv.btn_accept.setEnabled(False)
            return


        qt_tools.set_item_data(combo, rows, 1, True, True, 1)
        self.update_info(self.dlg_csv)
コード例 #5
0
    def manage_duplicate_psector(self, psector_id=None):

        # Create the dialog and signals
        self.dlg_duplicate_psector = PsectorDuplicate()
        self.load_settings(self.dlg_duplicate_psector)

        # Populate combo duplicate psector
        sql = "SELECT psector_id, name FROM plan_psector"
        rows = self.controller.get_rows(sql)
        qt_tools.set_item_data(self.dlg_duplicate_psector.duplicate_psector,
                               rows, 1)

        # Set QComboBox with selected psector
        qt_tools.set_combo_itemData(
            self.dlg_duplicate_psector.duplicate_psector, str(psector_id), 0)

        # Set listeners
        self.dlg_duplicate_psector.btn_cancel.clicked.connect(
            partial(self.close_dialog, self.dlg_duplicate_psector))
        self.dlg_duplicate_psector.btn_accept.clicked.connect(
            partial(self.duplicate_psector))

        # Open dialog
        self.open_dialog(self.dlg_duplicate_psector,
                         dlg_name='psector_duplicate')
コード例 #6
0
    def filter_state_type(self):

        state = qt_tools.get_item_data(self.dlg_add_element, self.dlg_add_element.state, 0)
        sql = (f"SELECT DISTINCT(id), name FROM value_state_type "
               f"WHERE state = {state}")
        rows = self.controller.get_rows(sql)
        qt_tools.set_item_data(self.dlg_add_element.state_type, rows, 1)
コード例 #7
0
    def clicked_event(self):

        # Create the dialog and signals
        self.dlg_feature_delete = FeatureDelete()
        load_settings(self.dlg_feature_delete)

        # Populate combo feature type
        sql = 'SELECT DISTINCT(feature_type) AS id, feature_type AS idval FROM cat_feature'
        rows = self.controller.get_rows(sql)
        qt_tools.set_item_data(self.dlg_feature_delete.feature_type, rows, 1)

        # 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)

        # Disable button delete feature
        self.dlg_feature_delete.btn_delete.setEnabled(False)

        # Configure feature_id as typeahead
        completer = QCompleter()
        model = QStringListModel()
        self.filter_typeahead(self.dlg_feature_delete.feature_id, completer,
                              model)

        # Set listeners
        self.dlg_feature_delete.feature_id.textChanged.connect(
            partial(self.filter_typeahead, self.dlg_feature_delete.feature_id,
                    completer, model))

        # Set button snapping
        self.dlg_feature_delete.btn_snapping.clicked.connect(
            partial(self.set_active_layer))
        self.dlg_feature_delete.btn_snapping.clicked.connect(
            partial(self.selection_init))
        set_icon(self.dlg_feature_delete.btn_snapping, "137")

        # Set listeners
        self.dlg_feature_delete.btn_cancel.clicked.connect(
            partial(close_dialog, self.dlg_feature_delete))
        self.dlg_feature_delete.rejected.connect(
            disconnect_signal_selection_changed)
        self.dlg_feature_delete.rejected.connect(
            partial(save_settings, self.dlg_feature_delete))

        self.dlg_feature_delete.btn_relations.clicked.connect(
            partial(self.show_feature_relation))
        self.dlg_feature_delete.btn_delete.clicked.connect(
            partial(self.delete_feature_relation))
        self.dlg_feature_delete.feature_type.currentIndexChanged.connect(
            partial(self.set_active_layer))

        # Open dialog
        open_dialog(self.dlg_feature_delete, dlg_name='feature_delete')
コード例 #8
0
    def filter_elementcat_id(self):
        """ Filter QComboBox @elementcat_id according QComboBox @elementtype_id """

        element_type = qt_tools.get_item_data(self.dlg_add_element, self.dlg_add_element.element_type, 1)
        sql = (f"SELECT DISTINCT(id), id FROM cat_element"
               f" WHERE elementtype_id = '{element_type}'"
               f" ORDER BY id")
        rows = self.controller.get_rows(sql, log_sql=True)
        qt_tools.set_item_data(self.dlg_add_element.elementcat_id, rows, 1)
コード例 #9
0
    def populate_date_time(self, combo_date):

        result_id = qt_tools.get_item_data(
            self.dlg_go2epa_result,
            self.dlg_go2epa_result.rpt_selector_result_id, 0)
        sql = (f"SELECT DISTINCT(resultdate), resultdate FROM rpt_arc "
               f"WHERE result_id = '{result_id}' "
               f"ORDER BY resultdate")
        rows = self.controller.get_rows(sql)
        qt_tools.set_item_data(combo_date, rows)
コード例 #10
0
    def update_location_cmb(self):

        element_type = qt_tools.getWidgetText(self.dlg_add_element, self.dlg_add_element.element_type)
        sql = (f"SELECT location_type, location_type FROM man_type_location"
               f" WHERE feature_type = 'ELEMENT' "
               f" AND (featurecat_id = '{element_type}' OR featurecat_id is null)"
               f" ORDER BY location_type")
        rows = self.controller.get_rows(sql, log_sql=True)
        qt_tools.set_item_data(self.dlg_add_element.location_type, rows, add_empty=True)
        if rows:
            qt_tools.set_combo_itemData(self.dlg_add_element.location_type, rows[0][0], 0)
コード例 #11
0
    def populate_cmb_type(self, feature_types):

        feat_types = []
        for item in feature_types:
            elem = []
            elem.append(item.upper())
            elem.append(item.upper())
            feat_types.append(elem)
        if feat_types and len(feat_types) <= 1:
            self.dlg_functions.cmb_geom_type.setVisible(False)
        qt_tools.set_item_data(self.dlg_functions.cmb_geom_type, feat_types, 1)
コード例 #12
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)
コード例 #13
0
    def filter_cbx_by_text(self, tablename, widgettxt, widgetcbx):

        sql = (f"SELECT DISTINCT(name), hydrology_id FROM {tablename}"
               f" WHERE name LIKE '%{widgettxt.text()}%'"
               f" ORDER BY name ")
        rows = self.controller.get_rows(sql)
        if not rows:
            message = "Check the table 'cat_hydrology' "
            self.controller.show_warning(message)
            return False
        qt_tools.set_item_data(widgetcbx, rows)
        self.update_labels()
コード例 #14
0
    def filter_catalog(self):

        node_node_type_new = qt_tools.getWidgetText(self.dlg_chg_node_type,
                                                    self.dlg_chg_node_type.node_node_type_new)

        if node_node_type_new == "null":
            return

        # Populate catalog_id
        sql = f"SELECT DISTINCT(id), id FROM cat_node WHERE nodetype_id = '{node_node_type_new}' ORDER BY id"
        rows = self.controller.get_rows(sql)
        qt_tools.set_item_data(self.dlg_chg_node_type.node_nodecat_id, rows, 1)
コード例 #15
0
    def populate_combos(self):

        # Fill ComboBox state
        sql = ("SELECT id, idval "
               "FROM om_typevalue WHERE typevalue = 'mincut_state' "
               "ORDER BY id")
        rows = self.controller.get_rows(sql, add_empty_row=True)
        qt_tools.set_item_data(self.dlg_min_edit.state_edit, rows, 1)

        # Fill ComboBox exploitation
        sql = "SELECT expl_id, name FROM exploitation WHERE expl_id > 0 ORDER BY name"
        rows = self.controller.get_rows(sql, add_empty_row=True)
        qt_tools.set_item_data(self.dlg_min_edit.cmb_expl, rows, 1)
コード例 #16
0
    def populate_time(self, combo_result, combo_time):
        """ Populate combo times """

        result_id = qt_tools.get_item_data(self.dlg_go2epa_result,
                                           combo_result)
        if self.project_type == 'ws':
            field = "time"
        else:
            field = "resulttime"

        sql = (f"SELECT DISTINCT {field}, {field} "
               f"FROM rpt_arc "
               f"WHERE result_id ILIKE '{result_id}' "
               f"ORDER BY {field};")

        rows = self.controller.get_rows(sql, add_empty_row=True)
        qt_tools.set_item_data(combo_time, rows)
コード例 #17
0
    def ud_hydrology_selector(self):
        """ Dialog hydrology_selector.ui """

        self.dlg_hydrology_selector = HydrologySelector()
        load_settings(self.dlg_hydrology_selector)

        self.dlg_hydrology_selector.btn_accept.clicked.connect(
            self.save_hydrology)
        self.dlg_hydrology_selector.hydrology.currentIndexChanged.connect(
            self.update_labels)
        self.dlg_hydrology_selector.txt_name.textChanged.connect(
            partial(self.filter_cbx_by_text, "cat_hydrology",
                    self.dlg_hydrology_selector.txt_name,
                    self.dlg_hydrology_selector.hydrology))

        sql = "SELECT DISTINCT(name), hydrology_id FROM cat_hydrology ORDER BY name"
        rows = self.controller.get_rows(sql)
        if not rows:
            message = "Any data found in table"
            self.controller.show_warning(message, parameter='cat_hydrology')
            return False

        qt_tools.set_item_data(self.dlg_hydrology_selector.hydrology, rows)

        sql = (
            "SELECT DISTINCT(t1.name) FROM cat_hydrology AS t1 "
            "INNER JOIN selector_inp_hydrology AS t2 ON t1.hydrology_id = t2.hydrology_id "
            "WHERE t2.cur_user = current_user")
        row = self.controller.get_row(sql)
        if row:
            qt_tools.setWidgetText(self.dlg_hydrology_selector,
                                   self.dlg_hydrology_selector.hydrology,
                                   row[0])
        else:
            qt_tools.setWidgetText(self.dlg_hydrology_selector,
                                   self.dlg_hydrology_selector.hydrology, 0)

        self.update_labels()
        open_dialog(self.dlg_hydrology_selector)
コード例 #18
0
def put_combobox(qtable, rows, field, widget_pos, combo_values):
    """ Set one column of a QtableView as QComboBox with values from database.
    :param qtable: QTableView to fill
    :param rows: List of items to set QComboBox (["..", "..."])
    :param field: Field to set QComboBox (String)
    :param widget_pos: Position of the column where we want to put the QComboBox (integer)
    :param combo_values: List of items to populate QComboBox (["..", "..."])
    :return:
    """

    for x in range(0, len(rows)):
        combo = QComboBox()
        row = rows[x]
        # Populate QComboBox
        qt_tools.set_item_data(combo, combo_values, 1)
        # Set QCombobox to wanted item
        qt_tools.set_combo_itemData(combo, str(row[field]), 1)
        # Get index and put QComboBox into QTableView at index position
        idx = qtable.model().index(x, widget_pos)
        qtable.setIndexWidget(idx, combo)
        # noinspection PyUnresolvedReferences
        combo.currentIndexChanged.connect(partial(update_status, combo, qtable, x, widget_pos))
コード例 #19
0
    def manage_element(self,
                       new_element_id=True,
                       feature=None,
                       geom_type=None):
        """ Button 33: Add element """

        self.new_element_id = new_element_id

        # Create the dialog and signals
        self.dlg_add_element = ElementUi()
        load_settings(self.dlg_add_element)
        self.element_id = None

        # Capture the current layer to return it at the end of the operation
        cur_active_layer = self.iface.activeLayer()

        set_selectionbehavior(self.dlg_add_element)

        # Get layers of every geom_type

        # Setting lists
        self.ids = []
        self.list_ids = {}
        self.list_ids['arc'] = []
        self.list_ids['node'] = []
        self.list_ids['connec'] = []
        self.list_ids['gully'] = []
        self.list_ids['element'] = []

        # Setting layers
        self.layers = {}
        self.layers['arc'] = []
        self.layers['node'] = []
        self.layers['connec'] = []
        self.layers['gully'] = []
        self.layers['element'] = []

        self.layers['arc'] = self.controller.get_group_layers('arc')
        self.layers['node'] = self.controller.get_group_layers('node')
        self.layers['connec'] = self.controller.get_group_layers('connec')
        self.layers['element'] = self.controller.get_group_layers('element')

        # Remove 'gully' for 'WS'
        self.project_type = self.controller.get_project_type()
        if self.project_type == 'ws':
            self.dlg_add_element.tab_feature.removeTab(3)
        else:
            self.layers['gully'] = self.controller.get_group_layers('gully')

        # Set icons
        set_icon(self.dlg_add_element.btn_add_geom, "133")
        set_icon(self.dlg_add_element.btn_insert, "111")
        set_icon(self.dlg_add_element.btn_delete, "112")
        set_icon(self.dlg_add_element.btn_snapping, "137")

        # Remove all previous selections
        self.layers = remove_selection(True, layers=self.layers)
        if feature:
            layer = self.iface.activeLayer()
            layer.selectByIds([feature.id()])

        qt_tools.set_regexp_date_validator(self.dlg_add_element.builtdate,
                                           self.dlg_add_element.btn_accept, 1)

        # Get layer element and save if is visible or not for restore when finish process
        layer_element = self.controller.get_layer_by_tablename(
            "v_edit_element")
        layer_is_visible = False
        if layer_element:
            layer_is_visible = self.controller.is_layer_visible(layer_element)

        # Adding auto-completion to a QLineEdit
        table_object = "element"
        set_completer_object(self.dlg_add_element, table_object)

        # Set signals
        self.dlg_add_element.btn_accept.clicked.connect(
            partial(self.manage_element_accept, table_object))
        self.dlg_add_element.btn_accept.clicked.connect(
            partial(self.controller.set_layer_visible, layer_element,
                    layer_is_visible))
        # TODO: Set variable  self.layers using return parameters
        self.dlg_add_element.btn_cancel.clicked.connect(
            partial(manage_close,
                    self.dlg_add_element,
                    table_object,
                    cur_active_layer,
                    excluded_layers=[],
                    layers=self.layers))
        self.dlg_add_element.btn_cancel.clicked.connect(
            partial(self.controller.set_layer_visible, layer_element,
                    layer_is_visible))
        # TODO: Set variable  self.layers using return parameters
        self.dlg_add_element.rejected.connect(
            partial(manage_close,
                    self.dlg_add_element,
                    table_object,
                    cur_active_layer,
                    excluded_layers=[],
                    layers=self.layers))
        self.dlg_add_element.rejected.connect(
            partial(self.controller.set_layer_visible, layer_element,
                    layer_is_visible))
        self.dlg_add_element.tab_feature.currentChanged.connect(
            partial(tab_feature_changed, self.dlg_add_element, table_object,
                    []))
        # TODO: Set variables self.ids, self.layers, self.list_ids using return parameters
        self.dlg_add_element.element_id.textChanged.connect(
            partial(exist_object,
                    self.dlg_add_element,
                    table_object,
                    layers=self.layers,
                    ids=self.ids,
                    list_ids=self.list_ids))
        # TODO: Set variables self.ids, self.layers, self.list_ids using return parameters
        self.dlg_add_element.btn_insert.clicked.connect(
            partial(insert_feature,
                    self.dlg_add_element,
                    table_object,
                    geom_type=geom_type,
                    ids=self.ids,
                    layers=self.layers,
                    list_ids=self.list_ids))
        # TODO: Set variables self.ids, self.layers, self.list_ids using return parameters
        self.dlg_add_element.btn_delete.clicked.connect(
            partial(delete_records,
                    self.dlg_add_element,
                    table_object,
                    geom_type=geom_type,
                    layers=self.layers,
                    ids=self.ids,
                    list_ids=self.list_ids))
        # TODO: Set variables self.ids, self.layers, self.list_ids using return parameters
        self.dlg_add_element.btn_snapping.clicked.connect(
            partial(selection_init,
                    self.dlg_add_element,
                    table_object,
                    geom_type=geom_type,
                    layers=self.layers))
        self.point_xy = self.dlg_add_element.btn_add_geom.clicked.connect(
            partial(add_point, self.vertex_marker))
        self.dlg_add_element.state.currentIndexChanged.connect(
            partial(self.filter_state_type))

        # Fill combo boxes of the form and related events
        self.dlg_add_element.element_type.currentIndexChanged.connect(
            partial(self.filter_elementcat_id))
        self.dlg_add_element.element_type.currentIndexChanged.connect(
            partial(self.update_location_cmb))
        # TODO maybe all this values can be in one Json query
        # Fill combo boxes
        sql = "SELECT DISTINCT(elementtype_id), elementtype_id FROM cat_element ORDER BY elementtype_id"
        rows = self.controller.get_rows(sql)
        qt_tools.set_item_data(self.dlg_add_element.element_type, rows, 1)

        sql = "SELECT expl_id, name FROM exploitation WHERE expl_id != '0' ORDER BY name"
        rows = self.controller.get_rows(sql)
        qt_tools.set_item_data(self.dlg_add_element.expl_id, rows, 1)

        sql = "SELECT DISTINCT(id), name FROM value_state"
        rows = self.controller.get_rows(sql)
        qt_tools.set_item_data(self.dlg_add_element.state, rows, 1)

        self.filter_state_type()

        sql = ("SELECT location_type, location_type FROM man_type_location"
               " WHERE feature_type = 'ELEMENT' "
               " ORDER BY location_type")
        rows = self.controller.get_rows(sql)
        qt_tools.set_item_data(self.dlg_add_element.location_type, rows, 1)

        if rows:
            qt_tools.set_combo_itemData(self.dlg_add_element.location_type,
                                        rows[0][0], 0)

        sql = "SELECT DISTINCT(id), id FROM cat_owner"
        rows = self.controller.get_rows(sql)
        qt_tools.set_item_data(self.dlg_add_element.ownercat_id,
                               rows,
                               1,
                               add_empty=True)

        sql = "SELECT DISTINCT(id), id FROM cat_builder"
        rows = self.controller.get_rows(sql)
        qt_tools.set_item_data(self.dlg_add_element.buildercat_id,
                               rows,
                               1,
                               add_empty=True)

        sql = "SELECT DISTINCT(id), id FROM cat_work"
        rows = self.controller.get_rows(sql)
        qt_tools.set_item_data(self.dlg_add_element.workcat_id,
                               rows,
                               1,
                               add_empty=True)
        self.dlg_add_element.workcat_id.currentIndexChanged.connect(
            partial(self.set_style_sheet, self.dlg_add_element.workcat_id,
                    None))

        sql = "SELECT DISTINCT(id), id FROM cat_work"
        rows = self.controller.get_rows(sql)
        qt_tools.set_item_data(self.dlg_add_element.workcat_id_end,
                               rows,
                               1,
                               add_empty=True)

        sql = "SELECT id, idval FROM edit_typevalue WHERE typevalue = 'value_verified'"
        rows = self.controller.get_rows(sql)
        qt_tools.set_item_data(self.dlg_add_element.verified,
                               rows,
                               1,
                               add_empty=True)
        self.filter_elementcat_id()

        if self.new_element_id:

            # Set default values
            self.set_default_values()

        # Adding auto-completion to a QLineEdit for default feature
        set_completer_feature_id(self.dlg_add_element.feature_id, "arc",
                                 "v_edit_arc")

        if feature:
            self.dlg_add_element.tabWidget.currentChanged.connect(
                partial(self.fill_tbl_new_element, self.dlg_add_element,
                        geom_type, feature[geom_type + "_id"]))

        # Set default tab 'arc'
        self.dlg_add_element.tab_feature.setCurrentIndex(0)
        self.geom_type = "arc"
        tab_feature_changed(self.dlg_add_element, table_object)

        # Force layer v_edit_element set active True
        if layer_element:
            self.controller.set_layer_visible(layer_element)

        # If is a new element dont need set enddate
        if self.new_element_id is True:
            qt_tools.setWidgetText(self.dlg_add_element, 'num_elements', '1')

        self.update_location_cmb()
        if not self.new_element_id:
            self.ids, self.layers, self.list_ids = exist_object(
                self.dlg_add_element,
                'element',
                layers=self.layers,
                ids=self.ids,
                list_ids=self.list_ids)

        # Open the dialog
        open_dialog(self.dlg_add_element,
                    dlg_name='element',
                    maximize_button=False)
        return self.dlg_add_element
コード例 #20
0
    def clicked_event(self):
        """ Button 29: Epa result selector """

        # Create the dialog and signals
        self.dlg_go2epa_result = Go2EpaSelectorUi()
        load_settings(self.dlg_go2epa_result)
        if self.project_type == 'ud':
            qt_tools.remove_tab_by_tabName(self.dlg_go2epa_result.tabWidget,
                                           "tab_time")
        if self.project_type == 'ws':
            qt_tools.remove_tab_by_tabName(self.dlg_go2epa_result.tabWidget,
                                           "tab_datetime")
        self.dlg_go2epa_result.btn_accept.clicked.connect(
            self.result_selector_accept)
        self.dlg_go2epa_result.btn_cancel.clicked.connect(
            partial(close_dialog, self.dlg_go2epa_result))
        self.dlg_go2epa_result.rejected.connect(
            partial(close_dialog, self.dlg_go2epa_result))

        # Set values from widgets of type QComboBox
        sql = ("SELECT DISTINCT(result_id), result_id "
               "FROM v_ui_rpt_cat_result ORDER BY result_id")
        rows = self.controller.get_rows(sql)
        qt_tools.set_item_data(self.dlg_go2epa_result.rpt_selector_result_id,
                               rows)
        rows = self.controller.get_rows(sql, add_empty_row=True)
        qt_tools.set_item_data(self.dlg_go2epa_result.rpt_selector_compare_id,
                               rows)

        if self.project_type == 'ws':

            sql = ("SELECT DISTINCT time, time FROM rpt_arc "
                   "WHERE result_id ILIKE '%%' ORDER BY time")
            rows = self.controller.get_rows(sql, add_empty_row=True)
            qt_tools.set_item_data(self.dlg_go2epa_result.cmb_time_to_show,
                                   rows)
            qt_tools.set_item_data(self.dlg_go2epa_result.cmb_time_to_compare,
                                   rows)

            self.dlg_go2epa_result.rpt_selector_result_id.currentIndexChanged.connect(
                partial(self.populate_time,
                        self.dlg_go2epa_result.rpt_selector_result_id,
                        self.dlg_go2epa_result.cmb_time_to_show))
            self.dlg_go2epa_result.rpt_selector_compare_id.currentIndexChanged.connect(
                partial(self.populate_time,
                        self.dlg_go2epa_result.rpt_selector_compare_id,
                        self.dlg_go2epa_result.cmb_time_to_compare))

        elif self.project_type == 'ud':

            # Populate GroupBox Selector date
            result_id = qt_tools.get_item_data(
                self.dlg_go2epa_result,
                self.dlg_go2epa_result.rpt_selector_result_id, 0)
            sql = (f"SELECT DISTINCT(resultdate), resultdate FROM rpt_arc "
                   f"WHERE result_id = '{result_id}' "
                   f"ORDER BY resultdate")
            rows = self.controller.get_rows(sql)
            if rows is not None:
                qt_tools.set_item_data(self.dlg_go2epa_result.cmb_sel_date,
                                       rows)
                selector_date = qt_tools.get_item_data(
                    self.dlg_go2epa_result,
                    self.dlg_go2epa_result.cmb_sel_date, 0)
                sql = (f"SELECT DISTINCT(resulttime), resulttime FROM rpt_arc "
                       f"WHERE result_id = '{result_id}' "
                       f"AND resultdate = '{selector_date}' "
                       f"ORDER BY resulttime")
                rows = self.controller.get_rows(sql, add_empty_row=True)
                qt_tools.set_item_data(self.dlg_go2epa_result.cmb_sel_time,
                                       rows)

            self.dlg_go2epa_result.rpt_selector_result_id.currentIndexChanged.connect(
                partial(self.populate_date_time,
                        self.dlg_go2epa_result.cmb_sel_date))

            self.dlg_go2epa_result.cmb_sel_date.currentIndexChanged.connect(
                partial(self.populate_time,
                        self.dlg_go2epa_result.rpt_selector_result_id,
                        self.dlg_go2epa_result.cmb_sel_time))

            # Populate GroupBox Selector compare
            result_id_to_comp = qt_tools.get_item_data(
                self.dlg_go2epa_result,
                self.dlg_go2epa_result.rpt_selector_result_id, 0)
            sql = (f"SELECT DISTINCT(resultdate), resultdate FROM rpt_arc "
                   f"WHERE result_id = '{result_id_to_comp}' "
                   f"ORDER BY resultdate ")
            rows = self.controller.get_rows(sql)
            if rows:
                qt_tools.set_item_data(self.dlg_go2epa_result.cmb_com_date,
                                       rows)
                selector_cmp_date = qt_tools.get_item_data(
                    self.dlg_go2epa_result,
                    self.dlg_go2epa_result.cmb_com_date, 0)
                sql = (f"SELECT DISTINCT(resulttime), resulttime FROM rpt_arc "
                       f"WHERE result_id = '{result_id_to_comp}' "
                       f"AND resultdate = '{selector_cmp_date}' "
                       f"ORDER BY resulttime")
                rows = self.controller.get_rows(sql, add_empty_row=True)
                qt_tools.set_item_data(self.dlg_go2epa_result.cmb_com_time,
                                       rows)

            self.dlg_go2epa_result.rpt_selector_compare_id.currentIndexChanged.connect(
                partial(self.populate_date_time,
                        self.dlg_go2epa_result.cmb_com_date))
            self.dlg_go2epa_result.cmb_com_date.currentIndexChanged.connect(
                partial(self.populate_time,
                        self.dlg_go2epa_result.rpt_selector_compare_id,
                        self.dlg_go2epa_result.cmb_com_time))

        # Get current data from tables 'rpt_selector_result' and 'rpt_selector_compare'
        sql = "SELECT result_id FROM selector_rpt_main"
        row = self.controller.get_row(sql)
        if row:
            qt_tools.set_combo_itemData(
                self.dlg_go2epa_result.rpt_selector_result_id,
                row["result_id"], 0)
        sql = "SELECT result_id FROM selector_rpt_compare"
        row = self.controller.get_row(sql)
        if row:
            qt_tools.set_combo_itemData(
                self.dlg_go2epa_result.rpt_selector_compare_id,
                row["result_id"], 0)

        # Open the dialog
        open_dialog(self.dlg_go2epa_result, dlg_name='go2epa_selector')