예제 #1
0
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)
예제 #3
0
    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)
예제 #4
0
    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")
예제 #5
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])
    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)
예제 #9
0
    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
예제 #10
0
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')
예제 #11
0
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)
예제 #14
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()
예제 #15
0
    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')
예제 #16
0
    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, '')
예제 #17
0
    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()
예제 #20
0
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))
예제 #21
0
    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)
예제 #22
0
    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')
예제 #23
0
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)
예제 #25
0
    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)
예제 #26
0
    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))
예제 #27
0
    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
예제 #28
0
    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)
예제 #29
0
    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)
예제 #30
0
    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()