def setupUi(self):
        self.resize(815, 250)
        self.verticalLayout = QVBoxLayout(self)

        self.groupBox_2 = QGroupBox(self)
        self.groupBox_2.setObjectName("groupBox_2")
        self.database_combo = QComboBox(self.groupBox_2)
        self.database_combo.setGeometry(QRect(10, 30, 481, 34))

        sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.database_combo.sizePolicy().hasHeightForWidth())
        self.database_combo.setSizePolicy(sizePolicy)
        self.database_combo.setObjectName("database_combo")
        self.verticalLayout.addWidget(self.groupBox_2)

        self.groupBox = QGroupBox(self)
        self.verticalLayoutBox = QVBoxLayout(self.groupBox)

        self.buttonBox = QDialogButtonBox(self)
        self.buttonBox.setOrientation(Qt.Horizontal)
        self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel
                                          | QDialogButtonBox.Ok)
        self.buttonBox.setObjectName("buttonBox")
        self.verticalLayout.addWidget(self.buttonBox)

        self.retranslateUi()
        self.buttonBox.accepted.connect(self.accept)
        self.buttonBox.rejected.connect(self.reject)
        QMetaObject.connectSlotsByName(self)
Пример #2
0
    def setupUi(self, checks):
        self.resize(515, 450)
        self.verticalLayout = QVBoxLayout(self)

        self.groupBox_2 = QGroupBox(self)
        self.groupBox_2.setObjectName("groupBox_2")
        self.database_combo = QComboBox(self.groupBox_2)
        self.database_combo.setGeometry(QRect(10, 30, 481, 34))

        sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.database_combo.sizePolicy().hasHeightForWidth())
        self.database_combo.setSizePolicy(sizePolicy)
        self.database_combo.setObjectName("database_combo")
        self.verticalLayout.addWidget(self.groupBox_2)

        self.groupBox = QGroupBox(self)
        self.verticalLayoutBox = QVBoxLayout(self.groupBox)

        self.check_pipe_friction = QCheckBox(self.groupBox)
        self.check_pipe_friction.setChecked(True)
        self.verticalLayoutBox.addWidget(self.check_pipe_friction)

        self.check_manhole_indicator = QCheckBox(self.groupBox)
        self.check_manhole_indicator.setChecked(True)
        self.verticalLayoutBox.addWidget(self.check_manhole_indicator)

        self.check_manhole_area = QCheckBox(self.groupBox)
        self.check_manhole_area.setChecked(True)
        self.verticalLayoutBox.addWidget(self.check_manhole_area)

        self.verticalLayout.addWidget(self.groupBox)

        self.check_only_empty_fields = QCheckBox(self)
        self.check_only_empty_fields.setChecked(True)
        self.verticalLayout.addWidget(self.check_only_empty_fields)

        self.buttonBox = QDialogButtonBox(self)
        self.buttonBox.setOrientation(Qt.Horizontal)
        self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel
                                          | QDialogButtonBox.Ok)
        self.buttonBox.setObjectName("buttonBox")
        self.verticalLayout.addWidget(self.buttonBox)

        self.retranslateUi()
        self.buttonBox.accepted.connect(self.accept)
        self.buttonBox.rejected.connect(self.reject)
        QMetaObject.connectSlotsByName(self)
 def create_zonal_layer_selector(self, discard_nonmatching=True):
     self.added_zonal_layer = None
     self.zonal_layer_gbx = QGroupBox()
     self.zonal_layer_gbx.setTitle('Aggregate by zone')
     self.zonal_layer_gbx.setCheckable(True)
     self.zonal_layer_gbx.setChecked(False)
     self.zonal_layer_gbx_v_layout = QVBoxLayout()
     self.zonal_layer_gbx.setLayout(self.zonal_layer_gbx_v_layout)
     self.zonal_layer_cbx = QComboBox()
     self.zonal_layer_cbx.addItem('')
     self.zonal_layer_lbl = QLabel('Zonal layer')
     self.zonal_layer_tbn = QToolButton()
     self.zonal_layer_tbn.setText('...')
     self.discard_nonmatching_chk = QCheckBox(
         'Discard zones with no points')
     self.discard_nonmatching_chk.setChecked(discard_nonmatching)
     self.zonal_layer_h_layout = QHBoxLayout()
     self.zonal_layer_h_layout.addWidget(self.zonal_layer_cbx)
     self.zonal_layer_h_layout.addWidget(self.zonal_layer_tbn)
     self.zonal_layer_gbx_v_layout.addWidget(self.zonal_layer_lbl)
     self.zonal_layer_gbx_v_layout.addLayout(self.zonal_layer_h_layout)
     self.zonal_layer_gbx_v_layout.addWidget(self.discard_nonmatching_chk)
     self.vlayout.addWidget(self.zonal_layer_gbx)
     self.zonal_layer_tbn.clicked.connect(self.open_load_zonal_layer_dialog)
     self.zonal_layer_cbx.currentIndexChanged[int].connect(
         self.on_zonal_layer_cbx_currentIndexChanged)
     self.zonal_layer_gbx.toggled[bool].connect(
         self.on_zonal_layer_gbx_toggled)
     self.iface.layerTreeView().currentLayerChanged.connect(
         self.on_currentLayerChanged)
Пример #4
0
 def __init__(self, drive_engine_dlg, zip_filepath, iface, parent=None,
              mode=None):
     super().__init__(parent)
     self.drive_engine_dlg = drive_engine_dlg
     self.zip_filepath = zip_filepath
     self.iface = iface
     self.mode = mode
     ini_str = self.get_ini_str(self.zip_filepath)
     self.multi_peril_csv_dict = self.get_multi_peril_csv_dict(ini_str)
     self.setWindowTitle('Load peril data from csv')
     self.peril_gbx = QGroupBox('Peril')
     self.peril_vlayout = QVBoxLayout()
     self.perils = self.multi_peril_csv_dict.keys()
     self.peril_gbx.setLayout(self.peril_vlayout)
     for peril in self.perils:
         chk = QCheckBox(peril)
         chk.setChecked(True)
         self.peril_vlayout.addWidget(chk)
     self.higher_on_top_chk = QCheckBox('Render higher values on top')
     self.higher_on_top_chk.setChecked(False)
     self.button_box = QDialogButtonBox(
         QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
     self.ok_button = self.button_box.button(QDialogButtonBox.Ok)
     self.button_box.accepted.connect(self.accept)
     self.button_box.rejected.connect(self.reject)
     vlayout = QVBoxLayout()
     vlayout.addWidget(self.peril_gbx)
     vlayout.addWidget(self.higher_on_top_chk)
     vlayout.addWidget(self.button_box)
     self.setLayout(vlayout)
Пример #5
0
    def initGui(self):
        verticalLayout = QVBoxLayout()
        verticalLayout.setSpacing(2)
        verticalLayout.setMargin(0)

        verticalLayout2 = QVBoxLayout()
        verticalLayout2.setSpacing(2)
        verticalLayout2.setMargin(15)
        horizontalLayout = QHBoxLayout()
        horizontalLayout.setSpacing(10)
        horizontalLayout.setMargin(0)
        self.branchRadio = QRadioButton('Branch', self)
        self.branchRadio.toggled.connect(self.branchRadioClicked)
        self.branchRadio.setMaximumWidth(200)
        self.branchRadio.setMinimumWidth(200)
        horizontalLayout.addWidget(self.branchRadio)
        self.comboBranch = QComboBox()
        for branch in self.repo.branches():
            self.comboBranch.addItem(branch)
        self.comboBranch.setMinimumWidth(200)
        horizontalLayout.addWidget(self.comboBranch)
        verticalLayout2.addLayout(horizontalLayout)

        horizontalLayout2 = QHBoxLayout()
        horizontalLayout2.setSpacing(10)
        horizontalLayout2.setMargin(0)
        self.tagRadio = QRadioButton('Tag', self)
        self.tagRadio.toggled.connect(self.tagRadioClicked)
        self.tagRadio.setMaximumWidth(200)
        self.tagRadio.setMinimumWidth(200)
        horizontalLayout2.addWidget(self.tagRadio)
        self.comboTag = QComboBox()
        for tag, commitid in self.repo.tags().items():
            self.comboTag.addItem(str(tag), commitid)
        horizontalLayout2.addWidget(self.comboTag)
        verticalLayout2.addLayout(horizontalLayout2)

        horizontalLayout3 = QHBoxLayout()
        horizontalLayout3.setSpacing(10)
        horizontalLayout3.setMargin(0)
        self.commitRadio = QRadioButton('Version', self)
        self.commitRadio.toggled.connect(self.commitRadioClicked)
        self.commitRadio.setMaximumWidth(200)
        self.commitRadio.setMinimumWidth(200)
        horizontalLayout3.addWidget(self.commitRadio)
        self.comboCommit = QComboBox()
        log = self.repo.log(limit=100)
        for commit in log:
            self.comboCommit.addItem(commit.message.split("\n")[0], commit)
        horizontalLayout3.addWidget(self.comboCommit)
        verticalLayout2.addLayout(horizontalLayout3)

        groupBox = QGroupBox("Reference")
        groupBox.setLayout(verticalLayout2)

        verticalLayout.addWidget(groupBox)
        self.setLayout(verticalLayout)

        self.branchRadio.setChecked(True)
Пример #6
0
    def setupUi(self, checks):

        self.resize(815, 266)
        self.verticalLayout = QVBoxLayout(self)

        self.groupBox_2 = QGroupBox(self)
        self.groupBox_2.setObjectName("groupBox_2")
        self.database_combo = QComboBox(self.groupBox_2)
        self.database_combo.setGeometry(QRect(10, 30, 481, 34))
        sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.database_combo.sizePolicy().hasHeightForWidth())
        self.database_combo.setSizePolicy(sizePolicy)
        self.database_combo.setObjectName("database_combo")
        self.verticalLayout.addWidget(self.groupBox_2)

        self.groupBox = QGroupBox(self)
        self.verticalLayoutBox = QVBoxLayout(self.groupBox)

        self.check_all_rasters = QCheckBox(self.groupBox)
        self.check_all_rasters.setChecked(True)
        self.check_all_rasters.setDisabled(True)
        self.verticalLayoutBox.addWidget(self.check_all_rasters)

        # TODO: write improve function first
        # self.improve_when_necessary = QCheckBox(self.groupBox)
        # self.improve_when_necessary.setChecked(False)
        # self.improve_when_necessary.setDisabled(True)
        # self.verticalLayoutBox.addWidget(self.improve_when_necessary)

        self.verticalLayout.addWidget(self.groupBox)

        self.buttonBox = QDialogButtonBox(self)
        self.buttonBox.setOrientation(Qt.Horizontal)
        self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel
                                          | QDialogButtonBox.Ok)
        self.buttonBox.setObjectName("buttonBox")
        self.verticalLayout.addWidget(self.buttonBox)

        self.retranslateUi()
        self.buttonBox.accepted.connect(self.accept)
        self.buttonBox.rejected.connect(self.reject)
        QMetaObject.connectSlotsByName(self)
Пример #7
0
    def setupUi(self):

        self.dlg = QDialog()
        self.dlg.setWindowTitle("TOMs Export")
        self.dlg.setWindowModality(Qt.ApplicationModal)

        self.generalLayout = QVBoxLayout()

        layerGroup = QGroupBox("Choose layers to export")

        # add map layer list
        self.layerList = checkableMapLayerList()
        vbox1 = QVBoxLayout()
        vbox1.addWidget(self.layerList)
        layerGroup.setLayout(vbox1)
        self.generalLayout.addWidget(layerGroup)

        # add file chooser
        outputGroup = QGroupBox("Choose output file")
        self.fileNameWidget = QgsFileWidget()
        self.fileNameWidget.setStorageMode(QgsFileWidget.SaveFile)
        self.fileNameWidget.setFilter(
            "Geopackage (*.gpkg);;JPEG (*.jpg *.jpeg);;TIFF (*.tif)")
        self.fileNameWidget.setSelectedFilter("Geopackage (*.gpkg)")
        vbox2 = QVBoxLayout()
        vbox2.addWidget(self.fileNameWidget)
        outputGroup.setLayout(vbox2)
        self.generalLayout.addWidget(outputGroup)

        # add buttons
        self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok
                                          | QDialogButtonBox.Cancel)
        self.buttonBox.accepted.connect(self.dlg.accept)
        self.buttonBox.rejected.connect(self.dlg.reject)
        self.generalLayout.addWidget(self.buttonBox)

        self.dlg.setLayout(self.generalLayout)
        checkableMapLayerListCtrl(self.layerList)
    def initGui(self):
        self.setWindowTitle('Remote reference')
        verticalLayout = QVBoxLayout()

        horizontalLayout = QHBoxLayout()
        horizontalLayout.setSpacing(30)
        horizontalLayout.setMargin(0)
        remoteLabel = QLabel('Remote')
        self.remoteCombo = QComboBox()
        self.remotes = self.repo.remotes()
        self.remoteCombo.addItems(list(self.remotes.keys()))
        self.remoteCombo.currentIndexChanged.connect(self.currentRemoteChanged)
        horizontalLayout.addWidget(remoteLabel)
        horizontalLayout.addWidget(self.remoteCombo)
        verticalLayout.addLayout(horizontalLayout)

        horizontalLayout = QHBoxLayout()
        horizontalLayout.setSpacing(30)
        horizontalLayout.setMargin(0)
        branchLabel = QLabel('Branch')
        self.branchCombo = QComboBox()
        self.branchCombo.addItems(self.repo.branches())
        horizontalLayout.addWidget(branchLabel)
        horizontalLayout.addWidget(self.branchCombo)
        verticalLayout.addLayout(horizontalLayout)

        self.groupBox = QGroupBox()
        self.groupBox.setTitle("Remote info")
        self.groupBox.setLayout(verticalLayout)

        layout = QVBoxLayout()
        layout.addWidget(self.groupBox)

        self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok
                                          | QDialogButtonBox.Cancel)
        layout.addWidget(self.buttonBox)

        self.setLayout(layout)

        self.buttonBox.accepted.connect(self.okPressed)
        self.buttonBox.rejected.connect(self.cancelPressed)

        self.resize(400, 200)
    def initGui(self):
        self.setWindowTitle('GeoGig user configuration')
        verticalLayout = QVBoxLayout()

        horizontalLayout = QHBoxLayout()
        horizontalLayout.setSpacing(30)
        horizontalLayout.setMargin(0)
        usernameLabel = QLabel('Username')
        self.usernameBox = QLineEdit()
        horizontalLayout.addWidget(usernameLabel)
        horizontalLayout.addWidget(self.usernameBox)
        verticalLayout.addLayout(horizontalLayout)

        horizontalLayout = QHBoxLayout()
        horizontalLayout.setSpacing(30)
        horizontalLayout.setMargin(0)
        emailLabel = QLabel('User email')
        self.emailBox = QLineEdit()
        horizontalLayout.addWidget(emailLabel)
        horizontalLayout.addWidget(self.emailBox)
        verticalLayout.addLayout(horizontalLayout)

        self.groupBox = QGroupBox()
        self.groupBox.setTitle("User data")
        self.groupBox.setLayout(verticalLayout)

        layout = QVBoxLayout()
        layout.addWidget(self.groupBox)

        self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
        layout.addWidget(self.buttonBox)

        self.setLayout(layout)

        self.buttonBox.accepted.connect(self.okPressed)
        self.buttonBox.rejected.connect(self.cancelPressed)

        self.resize(400, 200)
Пример #10
0
 def grupIntervals(self):
     group = QGroupBox('Definició dels intervals')
     # group.setMinimumWidth(400)
     layout = QGridLayout()
     layout.setSpacing(10)
     # layout.setColumnMinimumWidth(4, 40)
     numFilas = len(self.wInterval)
     for fila, widgets in enumerate(self.wInterval):
         for col, w in enumerate(widgets):
             # Primera fila: solo +
             if fila == 0 and col > 3:
                 w.setVisible(False)
             # # Ultima fila: no hay + ni -
             elif fila > 0 and fila == (numFilas - 1) and col > 2:
                 w.setVisible(False)
             else:
                 w.setVisible(True)
             # Valor inicial deshabilitado (menos 1a fila)
             if col == 0 and fila != 0:
                 w.setDisabled(True)
             w.setProperty('Fila', fila)
             layout.addWidget(w, fila, col)
     group.setLayout(layout)
     return group
Пример #11
0
    def restore_default_values_page(self):
        """Setup UI for default values setting."""
        # Clear parameters so it doesn't add parameters when
        # restore from changes.
        if self.default_value_parameters:
            self.default_value_parameters = []
        if self.default_value_parameter_containers:
            self.default_value_parameter_containers = []

        for i in reversed(list(range(self.container_layout.count()))):
            widget = self.container_layout.itemAt(i).widget()
            if widget is not None:
                widget.setParent(None)

        default_fields = all_default_fields()

        for field_group in all_field_groups:
            settable_fields = []
            for field in field_group['fields']:
                if field not in default_fields:
                    continue
                else:
                    settable_fields.append(field)
                    default_fields.remove(field)

            if not settable_fields:
                continue
            # Create group box for each field group
            group_box = QGroupBox(self)
            group_box.setTitle(field_group['name'])
            self.container_layout.addWidget(group_box)
            parameters = []
            for settable_field in settable_fields:
                parameter = self.default_field_to_parameter(settable_field)
                if parameter:
                    parameters.append(parameter)
            parameter_container = ParameterContainer(
                parameters,
                description_text=field_group['description'],
                extra_parameters=extra_parameter)
            parameter_container.setup_ui(must_scroll=False)
            group_box_inner_layout = QVBoxLayout()
            group_box_inner_layout.addWidget(parameter_container)
            group_box.setLayout(group_box_inner_layout)

            # Add to attribute
            self.default_value_parameter_containers.append(parameter_container)

        # Only show non-groups default fields if there is one
        if len(default_fields) > 0:
            for default_field in default_fields:
                parameter = self.default_field_to_parameter(default_field)
                if parameter:
                    self.default_value_parameters.append(parameter)

            description_text = tr(
                'In this options you can change the global default values for '
                'these variables.')
            parameter_container = ParameterContainer(
                self.default_value_parameters,
                description_text=description_text,
                extra_parameters=extra_parameter)
            parameter_container.setup_ui(must_scroll=False)
            self.other_group_box = QGroupBox(tr('Non-group fields'))
            other_group_inner_layout = QVBoxLayout()
            other_group_inner_layout.addWidget(parameter_container)
            self.other_group_box.setLayout(other_group_inner_layout)
            self.container_layout.addWidget(self.other_group_box)

            # Add to attribute
            self.default_value_parameter_containers.append(parameter_container)
Пример #12
0
    def api_config(self):
        """ Button 99: Dynamic config form """

        # Remove layers name from temp_table
        sql = "DELETE FROM temp_table WHERE fprocesscat_id = '63' AND user_name = current_user;"
        self.controller.execute_sql(sql)
        # Set layers name in temp_table
        self.set_layers_name()

        # Get user and role
        super_users = self.settings.value('system_variables/super_users')
        cur_user = self.controller.get_current_user()

        self.list_update = []

        body = '"client":{"device":3, "infoType":100, "lang":"ES"}, '
        body += '"form":{"formName":"config"}, '
        body += '"feature":{}, '
        body += '"data":{}'

        # Get layers under mouse clicked
        sql = f"SELECT gw_api_getconfig($${{{body}}}$$)::text"

        row = self.controller.get_row(sql, log_sql=True)
        complet_list = [json.loads(row[0], object_pairs_hook=OrderedDict)]

        self.dlg_config = ApiConfigUi()
        self.load_settings(self.dlg_config)
        self.dlg_config.btn_cancel.clicked.connect(
            partial(self.close_dialog, self.dlg_config))
        self.dlg_config.btn_accept.clicked.connect(partial(self.update_values))

        page1_layout1 = self.dlg_config.tab_main.findChild(
            QGridLayout, 'page1_layout1')
        page1_layout2 = self.dlg_config.tab_main.findChild(
            QGridLayout, 'page1_layout2')
        page2_layout1 = self.dlg_config.tab_main.findChild(
            QGridLayout, 'page2_layout1')
        page2_layout2 = self.dlg_config.tab_main.findChild(
            QGridLayout, 'page2_layout2')

        admin_layout1 = self.dlg_config.tab_main.findChild(
            QGridLayout, 'admin_layout1')
        admin_layout2 = self.dlg_config.tab_main.findChild(
            QGridLayout, 'admin_layout2')

        man_layout1 = self.dlg_config.tab_main.findChild(
            QGridLayout, 'man_layout1')
        man_layout2 = self.dlg_config.tab_main.findChild(
            QGridLayout, 'man_layout2')

        addfields_layout1 = self.dlg_config.tab_main.findChild(
            QGridLayout, 'addfields_layout1')

        groupBox_1 = QGroupBox("Basic")
        groupBox_2 = QGroupBox("Om")
        groupBox_3 = QGroupBox("Workcat")
        groupBox_4 = QGroupBox("Mapzones")
        groupBox_5 = QGroupBox("Edit")
        groupBox_6 = QGroupBox("Epa")
        groupBox_7 = QGroupBox("MasterPlan")
        groupBox_8 = QGroupBox("Other")

        groupBox_9 = QGroupBox("Node")
        groupBox_10 = QGroupBox("Arc")
        groupBox_11 = QGroupBox("Utils")
        groupBox_12 = QGroupBox("Connec&Gully")

        groupBox_13 = QGroupBox("Topology")
        groupBox_14 = QGroupBox("Builder")
        groupBox_15 = QGroupBox("Review")
        groupBox_16 = QGroupBox("Analysis")
        groupBox_17 = QGroupBox("System")

        groupBox_18 = QGroupBox("Fluid type")
        groupBox_19 = QGroupBox("Location type")
        groupBox_20 = QGroupBox("Category type")
        groupBox_21 = QGroupBox("Function type")

        groupBox_22 = QGroupBox("Addfields")

        self.basic_form = QGridLayout()
        self.om_form = QGridLayout()
        self.workcat_form = QGridLayout()
        self.mapzones_form = QGridLayout()
        self.cad_form = QGridLayout()
        self.epa_form = QGridLayout()
        self.masterplan_form = QGridLayout()
        self.other_form = QGridLayout()

        self.node_type_form = QGridLayout()
        self.cat_form = QGridLayout()
        self.utils_form = QGridLayout()
        self.connec_form = QGridLayout()

        self.topology_form = QGridLayout()
        self.builder_form = QGridLayout()
        self.review_form = QGridLayout()
        self.analysis_form = QGridLayout()
        self.system_form = QGridLayout()

        self.node_mantype_form = QGridLayout()
        self.arc_mantype_form = QGridLayout()
        self.connec_mantype_form = QGridLayout()
        self.gully_mantype_form = QGridLayout()

        self.addfields_form = QGridLayout()

        # Construct form for config and admin
        self.construct_form_param_user(
            complet_list[0]['body']['form']['formTabs'], 0)
        self.construct_form_param_system(
            complet_list[0]['body']['form']['formTabs'], 1)

        groupBox_1.setLayout(self.basic_form)
        groupBox_2.setLayout(self.om_form)
        groupBox_3.setLayout(self.workcat_form)
        groupBox_4.setLayout(self.mapzones_form)
        groupBox_5.setLayout(self.cad_form)
        groupBox_6.setLayout(self.epa_form)
        groupBox_7.setLayout(self.masterplan_form)
        groupBox_8.setLayout(self.other_form)

        groupBox_9.setLayout(self.node_type_form)
        groupBox_10.setLayout(self.cat_form)
        groupBox_11.setLayout(self.utils_form)
        groupBox_12.setLayout(self.connec_form)

        groupBox_13.setLayout(self.topology_form)
        groupBox_14.setLayout(self.builder_form)
        groupBox_15.setLayout(self.review_form)
        groupBox_16.setLayout(self.analysis_form)
        groupBox_17.setLayout(self.system_form)

        groupBox_18.setLayout(self.node_mantype_form)
        groupBox_19.setLayout(self.arc_mantype_form)
        groupBox_20.setLayout(self.connec_mantype_form)
        groupBox_21.setLayout(self.gully_mantype_form)

        groupBox_22.setLayout(self.addfields_form)

        page1_layout1.addWidget(groupBox_1)
        page1_layout1.addWidget(groupBox_2)
        page1_layout1.addWidget(groupBox_3)
        page1_layout1.addWidget(groupBox_4)
        page1_layout2.addWidget(groupBox_5)
        page1_layout2.addWidget(groupBox_6)
        page1_layout2.addWidget(groupBox_7)
        page1_layout2.addWidget(groupBox_8)

        page2_layout1.addWidget(groupBox_9)
        page2_layout1.addWidget(groupBox_10)
        page2_layout2.addWidget(groupBox_11)
        page2_layout2.addWidget(groupBox_12)

        admin_layout1.addWidget(groupBox_13)
        admin_layout2.addWidget(groupBox_14)
        admin_layout2.addWidget(groupBox_15)
        admin_layout2.addWidget(groupBox_16)
        admin_layout2.addWidget(groupBox_17)

        man_layout1.addWidget(groupBox_18)
        man_layout2.addWidget(groupBox_19)
        man_layout2.addWidget(groupBox_20)
        man_layout2.addWidget(groupBox_21)

        addfields_layout1.addWidget(groupBox_22)

        verticalSpacer1 = QSpacerItem(20, 40, QSizePolicy.Minimum,
                                      QSizePolicy.Expanding)

        page1_layout1.addItem(verticalSpacer1)
        page1_layout2.addItem(verticalSpacer1)
        page2_layout1.addItem(verticalSpacer1)
        page2_layout2.addItem(verticalSpacer1)
        admin_layout1.addItem(verticalSpacer1)
        admin_layout2.addItem(verticalSpacer1)
        man_layout1.addItem(verticalSpacer1)
        man_layout2.addItem(verticalSpacer1)
        addfields_layout1.addItem(verticalSpacer1)

        # Event on change from combo parent
        self.get_event_combo_parent(
            complet_list[0]['body']['form']['formTabs'])

        # Set signals Combo parent/child
        chk_expl = self.dlg_config.tab_main.findChild(
            QWidget, 'chk_exploitation_vdefault')
        chk_dma = self.dlg_config.tab_main.findChild(QWidget,
                                                     'chk_dma_vdefault')
        if chk_dma and chk_expl:
            chk_dma.stateChanged.connect(
                partial(self.check_child_to_parent, chk_dma, chk_expl))
            chk_expl.stateChanged.connect(
                partial(self.check_parent_to_child, chk_expl, chk_dma))
        self.hide_void_groupbox(self.dlg_config)
        # Check user/role and remove tabs
        role_admin = self.controller.check_role_user("role_admin", cur_user)
        if not role_admin and cur_user not in super_users:
            utils_giswater.remove_tab_by_tabName(self.dlg_config.tab_main,
                                                 "tab_admin")

        # Open form
        self.open_dialog(self.dlg_config)
Пример #13
0
    def api_config(self):
        """ Button 99: Dynamic config form """

        # Remove layers name from temp_table
        sql = "DELETE FROM temp_table WHERE fid = 163 AND cur_user = current_user;"
        self.controller.execute_sql(sql)

        # Set layers name in temp_table
        self.set_layers_name()

        # Get user and role
        super_users = self.settings.value('system_variables/super_users')
        cur_user = self.controller.get_current_user()

        self.list_update = []
        body = self.create_body(form='"formName":"config"')
        json_result = self.controller.get_json('gw_fct_getconfig', body)
        if not json_result:
            return False

        self.dlg_config = ConfigUi()
        self.load_settings(self.dlg_config)
        self.dlg_config.btn_cancel.clicked.connect(
            partial(self.close_dialog, self.dlg_config))
        self.dlg_config.btn_accept.clicked.connect(partial(self.update_values))

        page1_layout1 = self.dlg_config.tab_main.findChild(
            QGridLayout, 'page1_layout1')
        page1_layout2 = self.dlg_config.tab_main.findChild(
            QGridLayout, 'page1_layout2')
        page2_layout1 = self.dlg_config.tab_main.findChild(
            QGridLayout, 'page2_layout1')
        page2_layout2 = self.dlg_config.tab_main.findChild(
            QGridLayout, 'page2_layout2')

        admin_layout1 = self.dlg_config.tab_main.findChild(
            QGridLayout, 'admin_layout1')
        admin_layout2 = self.dlg_config.tab_main.findChild(
            QGridLayout, 'admin_layout2')

        man_layout1 = self.dlg_config.tab_main.findChild(
            QGridLayout, 'man_layout1')
        man_layout2 = self.dlg_config.tab_main.findChild(
            QGridLayout, 'man_layout2')

        addfields_layout1 = self.dlg_config.tab_main.findChild(
            QGridLayout, 'addfields_layout1')

        groupBox_1 = QGroupBox("Basic")
        groupBox_2 = QGroupBox("O&&M")
        groupBox_3 = QGroupBox("Inventory")
        groupBox_4 = QGroupBox("Mapzones")
        groupBox_5 = QGroupBox("Edit")
        groupBox_6 = QGroupBox("Epa")
        groupBox_7 = QGroupBox("MasterPlan")
        groupBox_8 = QGroupBox("Other")

        groupBox_9 = QGroupBox("Node")
        groupBox_10 = QGroupBox("Arc")
        groupBox_11 = QGroupBox("Utils")
        groupBox_12 = QGroupBox(f"Connec")
        groupBox_13 = QGroupBox(f"Gully")

        groupBox_14 = QGroupBox("Topology")
        groupBox_15 = QGroupBox("Builder")
        groupBox_16 = QGroupBox("Review")
        groupBox_17 = QGroupBox("Analysis")
        groupBox_18 = QGroupBox("System")

        groupBox_19 = QGroupBox("Fluid type")
        groupBox_20 = QGroupBox("Location type")
        groupBox_21 = QGroupBox("Category type")
        groupBox_22 = QGroupBox("Function type")

        groupBox_23 = QGroupBox("Addfields")

        self.basic_form = QGridLayout()
        self.om_form = QGridLayout()
        self.inventory_form = QGridLayout()
        self.mapzones_form = QGridLayout()
        self.cad_form = QGridLayout()
        self.epa_form = QGridLayout()
        self.masterplan_form = QGridLayout()
        self.other_form = QGridLayout()

        self.node_type_form = QGridLayout()
        self.cat_form = QGridLayout()
        self.utils_form = QGridLayout()
        self.connec_form = QGridLayout()
        self.gully_form = QGridLayout()

        self.topology_form = QGridLayout()
        self.builder_form = QGridLayout()
        self.review_form = QGridLayout()
        self.analysis_form = QGridLayout()
        self.system_form = QGridLayout()

        self.fluid_type_form = QGridLayout()
        self.location_type_form = QGridLayout()
        self.category_type_form = QGridLayout()
        self.function_type_form = QGridLayout()

        self.addfields_form = QGridLayout()

        # Construct form for config and admin
        self.construct_form_param_user(json_result['body']['form']['formTabs'],
                                       0)
        self.construct_form_param_system(
            json_result['body']['form']['formTabs'], 1)

        groupBox_1.setLayout(self.basic_form)
        groupBox_2.setLayout(self.om_form)
        groupBox_3.setLayout(self.inventory_form)
        groupBox_4.setLayout(self.mapzones_form)
        groupBox_5.setLayout(self.cad_form)
        groupBox_6.setLayout(self.epa_form)
        groupBox_7.setLayout(self.masterplan_form)
        groupBox_8.setLayout(self.other_form)

        groupBox_9.setLayout(self.node_type_form)
        groupBox_10.setLayout(self.cat_form)
        groupBox_11.setLayout(self.utils_form)
        groupBox_12.setLayout(self.connec_form)
        groupBox_13.setLayout(self.gully_form)

        groupBox_14.setLayout(self.topology_form)
        groupBox_15.setLayout(self.builder_form)
        groupBox_16.setLayout(self.review_form)
        groupBox_17.setLayout(self.analysis_form)
        groupBox_18.setLayout(self.system_form)

        groupBox_19.setLayout(self.fluid_type_form)
        groupBox_20.setLayout(self.location_type_form)
        groupBox_21.setLayout(self.category_type_form)
        groupBox_22.setLayout(self.function_type_form)

        groupBox_23.setLayout(self.addfields_form)

        page1_layout1.addWidget(groupBox_1)
        page1_layout1.addWidget(groupBox_2)
        page1_layout1.addWidget(groupBox_3)
        page1_layout1.addWidget(groupBox_4)
        page1_layout2.addWidget(groupBox_5)
        page1_layout2.addWidget(groupBox_6)
        page1_layout2.addWidget(groupBox_7)
        page1_layout2.addWidget(groupBox_8)

        page2_layout1.addWidget(groupBox_9)
        page2_layout2.addWidget(groupBox_10)
        page2_layout2.addWidget(groupBox_12)
        page2_layout2.addWidget(groupBox_13)
        page2_layout2.addWidget(groupBox_11)

        admin_layout1.addWidget(groupBox_14)
        admin_layout2.addWidget(groupBox_15)
        admin_layout2.addWidget(groupBox_16)
        admin_layout2.addWidget(groupBox_17)
        admin_layout2.addWidget(groupBox_18)

        man_layout1.addWidget(groupBox_19)
        man_layout1.addWidget(groupBox_20)
        man_layout2.addWidget(groupBox_21)
        man_layout2.addWidget(groupBox_22)

        addfields_layout1.addWidget(groupBox_23)

        verticalSpacer1 = QSpacerItem(20, 40, QSizePolicy.Minimum,
                                      QSizePolicy.Expanding)

        page1_layout1.addItem(verticalSpacer1)
        page1_layout2.addItem(verticalSpacer1)
        page2_layout1.addItem(verticalSpacer1)
        page2_layout2.addItem(verticalSpacer1)
        admin_layout1.addItem(verticalSpacer1)
        admin_layout2.addItem(verticalSpacer1)
        man_layout1.addItem(verticalSpacer1)
        man_layout2.addItem(verticalSpacer1)
        addfields_layout1.addItem(verticalSpacer1)

        # Event on change from combo parent
        self.get_event_combo_parent(json_result['body']['form']['formTabs'])

        # Set signals Combo parent/child
        chk_expl = self.dlg_config.tab_main.findChild(
            QWidget, 'chk_exploitation_vdefault')
        chk_dma = self.dlg_config.tab_main.findChild(QWidget,
                                                     'chk_dma_vdefault')
        if chk_dma and chk_expl:
            chk_dma.stateChanged.connect(
                partial(self.check_child_to_parent, chk_dma, chk_expl))
            chk_expl.stateChanged.connect(
                partial(self.check_parent_to_child, chk_expl, chk_dma))
        self.hide_void_groupbox(self.dlg_config)
        # Check user/role and remove tabs
        role_admin = self.controller.check_role_user("role_admin", cur_user)
        if not role_admin and cur_user not in super_users:
            utils_giswater.remove_tab_by_tabName(self.dlg_config.tab_main,
                                                 "tab_admin")

        # Open form
        self.open_dialog(self.dlg_config, dlg_name='config')
    def __init__(self, iface):
        QtWidgets.QDialog.__init__(self)
        self.iface = iface
        self.setupUi(self)

        self.path = standard_path()
        self.error = None
        self.report = []
        self.worker_thread = None
        self.running = False
        self.bbox = None
        self.json = []
        self.project = None
        self.logger = logging.getLogger("aequilibrae")

        self._run_layout = QGridLayout()

        # Area to import network for
        self.choose_place = QRadioButton()
        self.choose_place.setText("Place name")
        self.choose_place.toggled.connect(self.change_place_type)
        self.choose_place.setChecked(False)

        self.choose_canvas = QRadioButton()
        self.choose_canvas.setText("Current map canvas area")
        self.choose_canvas.setChecked(True)

        self.place = QLineEdit()
        self.place.setVisible(False)

        self.source_type_frame = QVBoxLayout()
        self.source_type_frame.setAlignment(Qt.AlignLeft)
        self.source_type_frame.addWidget(self.choose_place)
        self.source_type_frame.addWidget(self.choose_canvas)
        self.source_type_frame.addWidget(self.place)

        self.source_type_widget = QGroupBox('Target')
        self.source_type_widget.setLayout(self.source_type_frame)

        # Buttons and output
        self.but_choose_output = QPushButton()
        self.but_choose_output.setText("Choose file output")
        self.but_choose_output.clicked.connect(self.choose_output)

        self.output_path = QLineEdit()

        self.but_run = QPushButton()
        self.but_run.setText("Import network and create project")
        self.but_run.clicked.connect(self.run)

        self.buttons_frame = QVBoxLayout()
        self.buttons_frame.addWidget(self.but_choose_output)
        self.buttons_frame.addWidget(self.output_path)
        self.buttons_frame.addWidget(self.but_run)

        self.buttons_widget = QWidget()
        self.buttons_widget.setLayout(self.buttons_frame)

        self.progressbar = QProgressBar()
        self.progress_label = QLabel()

        self.update_widget = QWidget()
        self.update_frame = QVBoxLayout()
        self.update_frame.addWidget(self.progressbar)
        self.update_frame.addWidget(self.progress_label)
        self.update_widget.setLayout(self.update_frame)
        self.update_widget.setVisible(False)

        self._run_layout.addWidget(self.source_type_widget)
        self._run_layout.addWidget(self.buttons_widget)
        self._run_layout.addWidget(self.update_widget)

        self.setLayout(self._run_layout)
        self.resize(280, 250)
Пример #15
0
    def setupTableTab(self, model1):
        #*********************** TAble tab *************************************************
        try:                                                                    #Reinitializing the table tab
            self.VLayout = self.dockwidget.scrollAreaWidgetContents.layout()
            while 1:
                child = self.VLayout.takeAt(0)
                if not child:
                    break
                child.widget().deleteLater()
        except:
            self.VLayout = QVBoxLayout(self.dockwidget.scrollAreaWidgetContents)
            self.VLayout.setContentsMargins(9, -1, -1, -1)
        #Setup the table tab
        self.groupBox = []
        self.profilePushButton = []
        self.tableView = []
        self.verticalLayout = []
        for i in range(0 , model1.rowCount()):
            self.groupBox.append( QGroupBox(self.dockwidget.scrollAreaWidgetContents) )
            sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
            sizePolicy.setHorizontalStretch(0)
            sizePolicy.setVerticalStretch(0)
            sizePolicy.setHeightForWidth(self.groupBox[i].sizePolicy().hasHeightForWidth())
            self.groupBox[i].setSizePolicy(sizePolicy)
            self.groupBox[i].setMinimumSize(QSize(0, 150))
            self.groupBox[i].setMaximumSize(QSize(16777215, 350))
            self.groupBox[i].setTitle(QApplication.translate("GroupBox" + str(i), self.profiles[i]["layer"].name(), None))
            self.groupBox[i].setObjectName("groupBox" + str(i))

            self.verticalLayout.append( QVBoxLayout(self.groupBox[i]) )
            self.verticalLayout[i].setObjectName("verticalLayout")
            #The table
            self.tableView.append( QTableView(self.groupBox[i]) )
            self.tableView[i].setObjectName("tableView" + str(i))
            font = QFont("Arial", 8)
            columns = len(self.profiles[i]["l"])
            rowNames = list(self.profiles[i].keys())
            rowNames.remove("layer") # holds the QgsMapLayer instance
            rowNames.remove("l") # holds the band number
            rows = len(rowNames)
            self.mdl = QStandardItemModel(rows+1, columns)
            self.mdl.setVerticalHeaderLabels(["band"] + rowNames)
            for j in range(columns):
                self.mdl.setData(self.mdl.index(0, j, QModelIndex()), str(self.profiles[i]["l"][j]))
                self.mdl.setData(self.mdl.index(0, j, QModelIndex()), font ,Qt.FontRole)
                for k in range(rows):
                    self.mdl.setData(self.mdl.index(k+1, j, QModelIndex()), str(self.profiles[i][rowNames[k]][j]))
                    self.mdl.setData(self.mdl.index(k+1, j, QModelIndex()), font ,Qt.FontRole)
            #self.tableView[i].setVerticalHeaderLabels(rowNames)
            self.tableView[i].verticalHeader().setDefaultSectionSize(18)
            self.tableView[i].horizontalHeader().setDefaultSectionSize(60)
            self.tableView[i].setModel(self.mdl)
            self.verticalLayout[i].addWidget(self.tableView[i])

            self.horizontalLayout = QHBoxLayout()

            #the copy to clipboard button
            self.profilePushButton.append( QPushButton(self.groupBox[i]) )
            sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
            sizePolicy.setHorizontalStretch(0)
            sizePolicy.setVerticalStretch(0)
            sizePolicy.setHeightForWidth(self.profilePushButton[i].sizePolicy().hasHeightForWidth())
            self.profilePushButton[i].setSizePolicy(sizePolicy)
            self.profilePushButton[i].setText(QApplication.translate("GroupBox", "Copy to clipboard", None))
            self.profilePushButton[i].setObjectName(str(i))
            self.horizontalLayout.addWidget(self.profilePushButton[i])

            self.horizontalLayout.addStretch(0)
            self.verticalLayout[i].addLayout(self.horizontalLayout)

            self.VLayout.addWidget(self.groupBox[i])
            self.profilePushButton[i].clicked.connect(self.copyTable)
Пример #16
0
    def api_catalog(self, previous_dialog, widget_name, geom_type,
                    feature_type):

        # Manage if geom_type is gully and set grate
        if geom_type == 'gully':
            geom_type == 'grate'

        form_name = 'upsert_catalog_' + geom_type + ''
        form = f'"formName":"{form_name}", "tabName":"data", "editable":"TRUE"'
        feature = f'"feature_type":"{feature_type}"'
        body = self.create_body(form, feature)
        sql = f"SELECT gw_fct_getcatalog({body})::text"
        row = self.controller.get_row(sql, log_sql=True)
        if not row:
            self.controller.show_message("NOT ROW FOR: " + sql, 2)
            return

        complet_list = [json.loads(row[0], object_pairs_hook=OrderedDict)]
        groupBox_1 = QGroupBox("Filter")
        self.filter_form = QGridLayout()

        self.dlg_catalog = InfoCatalogUi()
        self.load_settings(self.dlg_catalog)
        self.dlg_catalog.btn_cancel.clicked.connect(
            partial(self.close_dialog, self.dlg_catalog))
        self.dlg_catalog.btn_accept.clicked.connect(
            partial(self.fill_geomcat_id, previous_dialog, widget_name))

        main_layout = self.dlg_catalog.widget.findChild(
            QGridLayout, 'main_layout')
        result = complet_list[0]['body']['data']
        for field in result['fields']:
            label = QLabel()
            label.setObjectName('lbl_' + field['label'])
            label.setText(field['label'].capitalize())
            widget = None
            if field['widgettype'] == 'combo':
                widget = self.add_combobox(self.dlg_catalog, field)
            if field['layoutname'] == 'lyt_data_1':
                self.filter_form.addWidget(label, field['layoutorder'], 0)
                self.filter_form.addWidget(widget, field['layoutorder'], 1)

        groupBox_1.setLayout(self.filter_form)
        main_layout.addWidget(groupBox_1)
        verticalSpacer1 = QSpacerItem(20, 40, QSizePolicy.Minimum,
                                      QSizePolicy.Expanding)
        main_layout.addItem(verticalSpacer1)

        matcat_id = self.dlg_catalog.findChild(QComboBox, 'matcat_id')

        pnom = None
        dnom = None
        if self.controller.get_project_type() == 'ws':
            pnom = self.dlg_catalog.findChild(QComboBox, 'pnom')
            dnom = self.dlg_catalog.findChild(QComboBox, 'dnom')
        elif self.controller.get_project_type() == 'ud':
            pnom = self.dlg_catalog.findChild(QComboBox, 'shape')
            dnom = self.dlg_catalog.findChild(QComboBox, 'geom1')

        id = self.dlg_catalog.findChild(QComboBox, 'id')

        # Call get_api_catalog first time
        self.get_api_catalog(matcat_id, pnom, dnom, id, feature_type,
                             geom_type)

        # Set Listeners
        matcat_id.currentIndexChanged.connect(
            partial(self.populate_pn_dn, matcat_id, pnom, dnom, feature_type,
                    geom_type))
        pnom.currentIndexChanged.connect(
            partial(self.get_api_catalog, matcat_id, pnom, dnom, id,
                    feature_type, geom_type))
        dnom.currentIndexChanged.connect(
            partial(self.get_api_catalog, matcat_id, pnom, dnom, id,
                    feature_type, geom_type))

        # Open form
        self.open_dialog(self.dlg_catalog, dlg_name='info_catalog')
Пример #17
0
    def __init__(self, llegenda, amplada=500, mapificacio=None, simple=True):
        super().__init__(llegenda, amplada)

        self.fCSV = mapificacio
        self.simple = simple
        self.taulaMostra = None

        self.setWindowTitle('Afegir capa amb mapa simbòlic')

        self.layout = QVBoxLayout()
        self.layout.setSpacing(14)
        self.setLayout(self.layout)

        if self.fCSV is None:
            self.arxiu = QgsFileWidget()
            self.arxiu.setStorageMode(QgsFileWidget.GetFile)
            self.arxiu.setDialogTitle('Selecciona fitxer de dades…')
            self.arxiu.setDefaultRoot(RUTA_LOCAL)
            self.arxiu.setFilter('Arxius CSV (*.csv)')
            self.arxiu.setSelectedFilter('Arxius CSV (*.csv)')
            self.arxiu.lineEdit().setReadOnly(True)
            self.arxiu.fileChanged.connect(self.arxiuSeleccionat)

        self.zona = QComboBox(self)
        self.zona.setEditable(False)
        self.zona.addItem('Selecciona zona…')
        self.zona.currentIndexChanged.connect(self.canviaZona)

        self.mapa = QComboBox(self)
        self.mapa.setEditable(False)
        self.mapa.setIconSize(QSize(126, 126))
        self.mapa.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding)
        self.mapa.setSizeAdjustPolicy(QComboBox.AdjustToContents)
        self.mapa.addItem(QIcon(os.path.join(imatgesDir, 'Àrees.PNG')), 'Àrees')
        self.mapa.addItem(QIcon(os.path.join(imatgesDir, 'Cercles.PNG')), 'Cercles')

        self.capa = QLineEdit(self)
        self.capa.setMaxLength(40)

        self.tipus = QComboBox(self)
        self.tipus.setEditable(False)
        self.tipus.addItem('Selecciona tipus…')
        self.tipus.addItems(mv.MAP_AGREGACIO.keys())
        self.tipus.currentIndexChanged.connect(self.canviaTipus)

        self.distribucio = QComboBox(self)
        self.distribucio.setEditable(False)
        self.distribucio.addItem(next(iter(mv.MAP_DISTRIBUCIO.keys())))

        self.calcul = QvComboBoxCamps(self)
        self.filtre = QvComboBoxCamps(self, multiple=True)

        self.color = QComboBox(self)
        self.color.setEditable(False)
        self.comboColors(self.color)

        self.metode = QComboBox(self)
        self.metode.setEditable(False)
        self.metode.addItems(mv.MAP_METODES.keys())

        self.intervals = QSpinBox(self)
        self.intervals.setMinimum(2)
        self.intervals.setMaximum(mv.MAP_MAX_CATEGORIES)
        self.intervals.setSingleStep(1)
        self.intervals.setValue(4)
        self.intervals.setSuffix("  (depèn del mètode)")
        # self.intervals.valueChanged.connect(self.deselectValue)

        self.bTaula = QPushButton('Veure arxiu')
        self.bTaula.setEnabled(False)
        self.bTaula.clicked.connect(self.veureArxiu)

        self.buttons = QDialogButtonBox()
        self.buttons.addButton(QDialogButtonBox.Ok)
        self.buttons.accepted.connect(self.accept)
        self.buttons.addButton(QDialogButtonBox.Cancel)
        self.buttons.rejected.connect(self.cancel)
        self.buttons.addButton(self.bTaula, QDialogButtonBox.ResetRole)

        self.gDades = QGroupBox('Agregació de dades')
        self.lDades = QFormLayout()
        self.lDades.setSpacing(14)
        self.gDades.setLayout(self.lDades)

        if self.fCSV is None:
            self.lDades.addRow('Arxiu de dades:', self.arxiu)
        self.lDades.addRow('Zona:', self.zona)
        self.lDades.addRow("Tipus d'agregació:", self.tipus)
        self.lDades.addRow('Camp de càlcul:', self.calcul)
        if self.simple:
            self.filtre.setVisible(False)
            self.distribucio.setVisible(False)
        else:
            self.lDades.addRow('Filtre:', self.filtre)
            self.lDades.addRow('Distribució:', self.distribucio)

        self.gMapa = QGroupBox('Definició del mapa simbòlic')
        self.lMapa = QFormLayout()
        self.lMapa.setSpacing(14)
        self.gMapa.setLayout(self.lMapa)

        self.lMapa.addRow('Nom de capa:', self.capa)
        self.lMapa.addRow('Tipus de mapa:', self.mapa)

        self.gSimb = QGroupBox('Simbologia del mapa')
        self.lSimb = QFormLayout()
        self.lSimb.setSpacing(14)
        self.gSimb.setLayout(self.lSimb)

        self.lSimb.addRow('Color base:', self.color)
        self.lSimb.addRow('Mètode classificació:', self.metode)
        self.lSimb.addRow("Nombre d'intervals:", self.intervals)

        self.layout.addWidget(self.gDades)
        self.layout.addWidget(self.gMapa)
        if self.simple:
            self.gSimb.setVisible(False)
        else:
            self.layout.addWidget(self.gSimb)
        self.layout.addWidget(self.buttons)

        self.adjustSize()

        self.nouArxiu()
Пример #18
0
    def __init__(self):
        QDialog.__init__(self)

        self.setWindowTitle(tr('DMS Point Tool'))

        self.lat_D = QLineEdit()
        self.lat_M = QLineEdit()
        self.lat_S = QLineEdit()
        self.lat_DM = QLineEdit()
        self.lon_D = QLineEdit()
        self.lon_M = QLineEdit()
        self.lon_S = QLineEdit()
        self.lon_DM = QLineEdit()

        self.lat_M.textEdited.connect(self.lat_MS_edited)
        self.lat_S.textEdited.connect(self.lat_MS_edited)
        self.lat_DM.textEdited.connect(self.lat_DM_edited)
        self.lon_M.textEdited.connect(self.lon_MS_edited)
        self.lon_S.textEdited.connect(self.lon_MS_edited)
        self.lon_DM.textEdited.connect(self.lon_DM_edited)

        int_val = QIntValidator()
        int_val.setBottom(0)

        float_val = QDoubleValidator()
        float_val.setBottom(0)

        self.lat_D.setValidator(int_val)
        self.lat_M.setValidator(int_val)
        self.lat_S.setValidator(float_val)
        self.lat_DM.setValidator(float_val)

        self.lon_D.setValidator(int_val)
        self.lon_M.setValidator(int_val)
        self.lon_S.setValidator(float_val)
        self.lon_DM.setValidator(float_val)

        self.lat_NS = QComboBox()
        self.lat_NS.addItem("N")
        self.lat_NS.addItem("S")

        self.lon_EW = QComboBox()
        self.lon_EW.addItem("E")
        self.lon_EW.addItem("W")

        buttons = QDialogButtonBox(
            QDialogButtonBox.Ok | QDialogButtonBox.Cancel, Qt.Horizontal, self)
        buttons.accepted.connect(self.accept)
        buttons.rejected.connect(self.reject)

        lat_grp = QGroupBox(tr("Latitude"), self)
        lat_grp.setStyleSheet(
            "QGroupBox { font-weight: bold; color: #3c3c3c; } ")
        lat_grid = QGridLayout()
        lat_grid.addWidget(QLabel(tr("Degrees")), 0, 0)
        lat_grid.addWidget(QLabel(tr("Minutes")), 0, 1)
        lat_grid.addWidget(QLabel(tr("Seconds")), 0, 2)
        lat_grid.addWidget(QLabel(tr("Direction")), 0, 3)
        lat_grid.addWidget(self.lat_D, 1, 0)
        lat_grid.addWidget(self.lat_M, 1, 1)
        lat_grid.addWidget(self.lat_S, 1, 2)
        lat_grid.addWidget(self.lat_NS, 1, 3)
        lat_grid.addWidget(QLabel(tr("Decimal minutes")), 2, 1)
        lat_grid.addWidget(self.lat_DM, 3, 1, 1, 2)
        lat_grp.setLayout(lat_grid)

        lon_grp = QGroupBox(tr("Longitude"), self)
        lon_grp.setStyleSheet(
            "QGroupBox { font-weight: bold; color: #3c3c3c; } ")
        lon_grid = QGridLayout()
        lon_grid.addWidget(QLabel(tr("Degrees")), 0, 0)
        lon_grid.addWidget(QLabel(tr("Minutes")), 0, 1)
        lon_grid.addWidget(QLabel(tr("Seconds")), 0, 2)
        lon_grid.addWidget(QLabel(tr("Direction")), 0, 3)
        lon_grid.addWidget(self.lon_D, 1, 0)
        lon_grid.addWidget(self.lon_M, 1, 1)
        lon_grid.addWidget(self.lon_S, 1, 2)
        lon_grid.addWidget(self.lon_EW, 1, 3)
        lon_grid.addWidget(QLabel(tr("Decimal minutes")), 2, 1)
        lon_grid.addWidget(self.lon_DM, 3, 1, 1, 2)
        lon_grp.setLayout(lon_grid)

        vbox = QVBoxLayout()
        vbox.addWidget(lat_grp)
        vbox.addWidget(lon_grp)
        vbox.addWidget(buttons)

        self.setLayout(vbox)
Пример #19
0
    def open_catalog(self, previous_dialog, widget_name, feature_type,
                     child_type):
        """ Main function of catalog """

        # Manage if feature_type is gully and set grate
        if feature_type == 'gully':
            feature_type = 'grate'

        form_name = 'upsert_catalog_' + feature_type + ''
        form = f'"formName":"{form_name}", "tabName":"data", "editable":"TRUE"'
        feature = f'"feature_type":"{child_type}"'
        body = tools_gw.create_body(form, feature)
        json_result = tools_gw.execute_procedure('gw_fct_getcatalog',
                                                 body,
                                                 log_sql=True)
        if json_result is None:
            return

        group_box_1 = QGroupBox("Filter")
        self.filter_form = QGridLayout()

        self.dlg_catalog = GwInfoCatalogUi()
        tools_gw.load_settings(self.dlg_catalog)
        self.dlg_catalog.btn_cancel.clicked.connect(
            partial(tools_gw.close_dialog, self.dlg_catalog))
        self.dlg_catalog.btn_accept.clicked.connect(
            partial(self._fill_geomcat_id, previous_dialog, widget_name))

        main_layout = self.dlg_catalog.widget.findChild(
            QGridLayout, 'main_layout')
        result = json_result['body']['data']
        for field in result['fields']:
            label = QLabel()
            label.setObjectName('lbl_' + field['label'])
            label.setText(field['label'].capitalize())
            widget = None
            if field['widgettype'] == 'combo':
                widget = self._add_combobox(field)
            if field['layoutname'] == 'lyt_data_1':
                self.filter_form.addWidget(label, field['layoutorder'], 0)
                self.filter_form.addWidget(widget, field['layoutorder'], 1)

        group_box_1.setLayout(self.filter_form)
        main_layout.addWidget(group_box_1)
        vertical_spacer1 = QSpacerItem(20, 40, QSizePolicy.Minimum,
                                       QSizePolicy.Expanding)
        main_layout.addItem(vertical_spacer1)

        matcat_id = self.dlg_catalog.findChild(QComboBox, 'matcat_id')

        pnom = None
        dnom = None
        if tools_gw.get_project_type() == 'ws':
            pnom = self.dlg_catalog.findChild(QComboBox, 'pnom')
            dnom = self.dlg_catalog.findChild(QComboBox, 'dnom')
        elif tools_gw.get_project_type() == 'ud':
            pnom = self.dlg_catalog.findChild(QComboBox, 'shape')
            dnom = self.dlg_catalog.findChild(QComboBox, 'geom1')

        id = self.dlg_catalog.findChild(QComboBox, 'id')

        # Call _get_catalog first time
        self._get_catalog(matcat_id, pnom, dnom, id, feature_type, child_type)

        # Set Listeners
        if matcat_id:
            matcat_id.currentIndexChanged.connect(
                partial(self._populate_pn_dn, matcat_id, pnom, dnom,
                        feature_type, child_type))
        if pnom:
            pnom.currentIndexChanged.connect(
                partial(self._get_catalog, matcat_id, pnom, dnom, id,
                        feature_type, child_type))
        if dnom:
            dnom.currentIndexChanged.connect(
                partial(self._get_catalog, matcat_id, pnom, dnom, id,
                        feature_type, child_type))

        # Set shortcut keys
        self.dlg_catalog.key_escape.connect(
            partial(tools_gw.close_dialog, self.dlg_catalog))

        # Open form
        tools_gw.open_dialog(self.dlg_catalog, dlg_name='info_catalog')
 def populate_out_dep_widgets(self):
     self.visualize_gbx = QGroupBox('Visualize')
     self.visualize_gbx_h_layout = QHBoxLayout()
     self.exposure_rbn = QRadioButton('Exposure')
     self.risk_rbn = QRadioButton('Risk')
     self.exposure_rbn.toggled.connect(self.on_visualize_changed)
     self.risk_rbn.toggled.connect(self.on_visualize_changed)
     self.visualize_gbx_h_layout.addWidget(self.exposure_rbn)
     self.visualize_gbx_h_layout.addWidget(self.risk_rbn)
     self.visualize_gbx.setLayout(self.visualize_gbx_h_layout)
     self.vlayout.addWidget(self.visualize_gbx)
     self.create_selector("peril",
                          "Peril",
                          filter_ckb=False,
                          on_text_changed=self.on_peril_changed)
     self.peril_cbx.setDisabled(True)
     self.peril_lbl.setVisible(False)
     self.peril_cbx.setVisible(False)
     self.create_selector("category", "Category", filter_ckb=False)
     self.peril_cbx.addItems(sorted(self.perils))
     self.taxonomies_gbx = QGroupBox()
     self.taxonomies_gbx.setTitle('Filter by taxonomy')
     self.taxonomies_gbx.setCheckable(True)
     self.taxonomies_gbx.setChecked(False)
     self.taxonomies_gbx_v_layout = QVBoxLayout()
     self.taxonomies_gbx.setLayout(self.taxonomies_gbx_v_layout)
     self.taxonomies_lbl = QLabel("Taxonomies")
     self.taxonomies_multisel = MultiSelectComboBox(self)
     self.taxonomies_multisel.add_unselected_items(
         sorted([
             taxonomy for taxonomy in self.exposure_metadata['taxonomy']
             if taxonomy != '?'
         ]))
     self.taxonomies_gbx_v_layout.addWidget(self.taxonomies_lbl)
     self.taxonomies_gbx_v_layout.addWidget(self.taxonomies_multisel)
     self.taxonomies_gbx.toggled[bool].connect(
         self.on_taxonomies_gbx_toggled)
     self.vlayout.addWidget(self.taxonomies_gbx)
     self.tag_gbx = QGroupBox()
     self.tag_gbx.setTitle('Filter by tag')
     self.tag_gbx.setCheckable(True)
     self.tag_gbx.setChecked(False)
     self.tag_gbx_v_layout = QVBoxLayout()
     self.tag_gbx.setLayout(self.tag_gbx_v_layout)
     self.tag_values_lbl = QLabel("Tag values")
     self.tag_values_multisel = MultiSelectComboBox(self)
     self.create_selector("tag",
                          "Tag",
                          add_to_layout=self.tag_gbx_v_layout,
                          on_text_changed=self.on_tag_changed)
     self.tag_cbx.addItems([
         tag_name for tag_name in self.tag_names if tag_name != 'taxonomy'
     ])
     self.tag_gbx_v_layout.addWidget(self.tag_values_lbl)
     self.tag_gbx_v_layout.addWidget(self.tag_values_multisel)
     self.tag_gbx.toggled[bool].connect(self.on_tag_gbx_toggled)
     self.vlayout.addWidget(self.tag_gbx)
     self.higher_on_top_chk = QCheckBox('Render higher values on top')
     self.higher_on_top_chk.setChecked(True)
     self.vlayout.addWidget(self.higher_on_top_chk)
     self.create_zonal_layer_selector()
     if self.zonal_layer_path:
         zonal_layer = self.load_zonal_layer(self.zonal_layer_path)
         self.populate_zonal_layer_cbx(zonal_layer)
     else:
         self.pre_populate_zonal_layer_cbx()
     self.exposure_rbn.setChecked(True)
 def getGroupBox(name, parent, widgets):
     lyt = getLayout(parent, widgets)
     gbx = QGroupBox(name, parent)
     gbx.setLayout(lyt)
     return gbx
Пример #22
0
    def __init__(self, iface, parent, params):

        QDialog.__init__(self, parent)

        self.iface = iface
        self.parent = parent
        self.params = params

        self.output_reader = None
        self.tool = None
        self.element_ids_nodes = None
        self.element_ids_links = None

        self.nodes_lay = None
        self.links_lay = None

        self.setWindowTitle(Parameters.plug_in_name)

        # Selection changed listeners
        self.params.junctions_vlay.selectionChanged.connect(self.feature_sel_changed)
        self.params.reservoirs_vlay.selectionChanged.connect(self.feature_sel_changed)
        self.params.tanks_vlay.selectionChanged.connect(self.feature_sel_changed)
        self.params.pipes_vlay.selectionChanged.connect(self.feature_sel_changed)
        self.params.pumps_vlay.selectionChanged.connect(self.feature_sel_changed)
        self.params.valves_vlay.selectionChanged.connect(self.feature_sel_changed)

        # self.setMinimumWidth(min_width)
        # self.setMinimumHeight(min_height)
        fra_main_lay = QVBoxLayout(self)

        self.fra_out_file = QFrame(self)
        fra_out_file_lay = QHBoxLayout(self.fra_out_file)
        self.lbl_out_file = QLabel('Simulation output file:')
        self.txt_out_file = QLineEdit('')
        self.txt_out_file.setReadOnly(True)
        self.btn_out_file = QToolButton()
        self.btn_out_file.setText('...')
        self.btn_out_file.clicked.connect(self.btn_out_file_clicked)
        fra_out_file_lay.addWidget(self.lbl_out_file)
        fra_out_file_lay.addWidget(self.txt_out_file)
        fra_out_file_lay.addWidget(self.btn_out_file)

        self.tab_widget = QTabWidget(self)

        # Graphs tab ---------------------------------------------------------------------------------------------------
        self.tab_graphs = QWidget()
        tab_graphs_lay = QHBoxLayout(self.tab_graphs)

        # Left frame
        self.fra_graphs_left = QFrame()
        self.fra_graphs_left.setMaximumWidth(100)
        fra_graphs_left_lay = QVBoxLayout(self.fra_graphs_left)

        self.btn_sel_element = QPushButton('Pick')
        self.btn_sel_element.clicked.connect(self.btn_sel_element_clicked)
        fra_graphs_left_lay.addWidget(self.btn_sel_element)

        # Nodes
        self.grb_nodes = QGroupBox(u'Nodes')
        lay_grb_nodes = QVBoxLayout(self.grb_nodes)

        self.chk_node_demand = QCheckBox('Demand')
        lay_grb_nodes.addWidget(self.chk_node_demand)

        self.chk_node_head =  QCheckBox('Head')
        lay_grb_nodes.addWidget(self.chk_node_head)

        self.chk_node_pressure = QCheckBox('Pressure')
        lay_grb_nodes.addWidget(self.chk_node_pressure)

        self.chk_node_quality = QCheckBox('Quality')
        lay_grb_nodes.addWidget(self.chk_node_quality)

        fra_graphs_left_lay.addWidget(self.grb_nodes)

        # Links
        self.grb_links = QGroupBox(u'Links')
        lay_grb_links = QVBoxLayout(self.grb_links)

        self.chk_link_flow = QCheckBox('Flow')
        lay_grb_links.addWidget(self.chk_link_flow)

        self.chk_link_velocity = QCheckBox('Velocity')
        lay_grb_links.addWidget(self.chk_link_velocity)

        self.chk_link_headloss = QCheckBox('Headloss')
        lay_grb_links.addWidget(self.chk_link_headloss)

        self.chk_link_quality = QCheckBox('Quality')
        lay_grb_links.addWidget(self.chk_link_quality)

        fra_graphs_left_lay.addWidget(self.grb_links)

        self.btn_draw_graph = QPushButton('Draw')
        self.btn_draw_graph.clicked.connect(self.draw_graphs)
        fra_graphs_left_lay.addWidget(self.btn_draw_graph)

        self.spacer = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
        fra_graphs_left_lay.addItem(self.spacer)

        tab_graphs_lay.addWidget(self.fra_graphs_left)

        # Right frame
        self.fra_graphs_right = QFrame()
        fra_graphs_right_lay = QVBoxLayout(self.fra_graphs_right)
        fra_graphs_right_lay.setContentsMargins(0, 0, 0, 0)

        self.static_canvas = StaticMplCanvas(self.fra_graphs_right, width=5, height=4, dpi=100)
        fra_graphs_right_lay.addWidget(self.static_canvas)

        tab_graphs_lay.addWidget(self.fra_graphs_right)

        # lay.addWidget(self.button)
        self.tab_widget.addTab(self.tab_graphs, 'Graphs')

        # Maps tab -----------------------------------------------------------------------------------------------------
        self.tab_maps = QWidget()
        tab_maps_lay = QHBoxLayout(self.tab_maps)

        # Left frame
        self.fra_maps_left = QFrame()
        self.fra_maps_left.setMaximumWidth(200)
        fra_maps_left_lay = QVBoxLayout(self.fra_maps_left)

        self.grb_maps = QGroupBox(u'Variable')
        grb_maps_lay = QVBoxLayout(self.grb_maps)

        self.rad_maps_node_demand = QRadioButton(u'Node demand')
        grb_maps_lay.addWidget(self.rad_maps_node_demand)

        self.rad_maps_node_head = QRadioButton(u'Node head')
        grb_maps_lay.addWidget(self.rad_maps_node_head)

        self.rad_maps_node_pressure = QRadioButton(u'Node pressure')
        grb_maps_lay.addWidget(self.rad_maps_node_pressure)

        self.rad_maps_node_quality = QRadioButton(u'Node quality')
        grb_maps_lay.addWidget(self.rad_maps_node_quality)

        self.rad_maps_link_flow = QRadioButton(u'Link flow')
        grb_maps_lay.addWidget(self.rad_maps_link_flow)

        self.rad_maps_link_velocity = QRadioButton(u'Link velocity')
        grb_maps_lay.addWidget(self.rad_maps_link_velocity)

        self.rad_maps_link_headloss = QRadioButton(u'Link headloss')
        grb_maps_lay.addWidget(self.rad_maps_link_headloss)

        self.rad_maps_link_quality = QRadioButton(u'Link quality')
        grb_maps_lay.addWidget(self.rad_maps_link_quality)

        fra_maps_left_lay.addWidget(self.grb_maps)
        fra_maps_left_lay.addItem(self.spacer)

        tab_maps_lay.addWidget(self.fra_maps_left)

        # Right maps frame
        self.fra_maps_right = QFrame()
        fra_maps_right_lay = QVBoxLayout(self.fra_maps_right)

        self.fra_maps_right_time = QFrame()
        fra_maps_right_time_lay = QFormLayout(self.fra_maps_right_time)

        self.lbl_map_times = QLabel(u'Period [h]:')
        self.cbo_map_times = QComboBox()
        fra_maps_right_time_lay.addRow(self.lbl_map_times, self.cbo_map_times)
        fra_maps_right_lay.addWidget(self.fra_maps_right_time)

        self.btn_draw_map = QPushButton(u'Draw map')
        self.btn_draw_map.clicked.connect(self.draw_maps)
        fra_maps_right_lay.addWidget(self.btn_draw_map)

        fra_maps_right_lay.addItem(self.spacer)

        tab_maps_lay.addWidget(self.fra_maps_right)

        self.tab_widget.addTab(self.tab_maps, 'Maps')

        # # Add to main
        fra_main_lay.addWidget(self.fra_out_file)
        fra_main_lay.addWidget(self.tab_widget)

        self.setup()
        self.initialize()
        # self.read_outputs()

        # Set size
        self.setMinimumWidth(self.tab_graphs.width())
        self.setMinimumHeight(self.tab_graphs.height())
Пример #23
0
    def __init__(self, llegenda, capa=None, amplada=500):
        super().__init__(llegenda, amplada)
        if capa is None:
            self.capa = llegenda.currentLayer()
        else:
            self.capa = capa
        self.info = None
        if not self.iniParams():
            return

        self.setWindowTitle('Modificar mapa simbòlic ' + self.renderParams.tipusMapa.lower())

        self.layout = QVBoxLayout()
        self.layout.setSpacing(14)
        self.setLayout(self.layout)

        self.color = QComboBox(self)
        self.color.setEditable(False)
        self.comboColors(self.color)

        self.contorn = QComboBox(self)
        self.contorn.setEditable(False)
        self.comboColors(self.contorn, mv.MAP_CONTORNS)

        self.color.currentIndexChanged.connect(self.canviaContorns)

        self.metode = QComboBox(self)
        self.metode.setEditable(False)
        if self.renderParams.numCategories > 1:
            self.metode.addItems(mv.MAP_METODES_MODIF.keys())
        else:
            self.metode.addItems(mv.MAP_METODES.keys())
        self.metode.setCurrentIndex(-1)
        self.metode.currentIndexChanged.connect(self.canviaMetode)

        self.nomIntervals = QLabel("Nombre d'intervals:", self)
        self.intervals = QSpinBox(self)
        self.intervals.setMinimum(min(2, self.renderParams.numCategories))
        self.intervals.setMaximum(max(mv.MAP_MAX_CATEGORIES, self.renderParams.numCategories))
        self.intervals.setSingleStep(1)
        self.intervals.setValue(4)
        if self.renderParams.tipusMapa == 'Àrees':
            self.intervals.setSuffix("  (depèn del mètode)")
        # self.intervals.valueChanged.connect(self.deselectValue)

        self.nomTamany = QLabel("Tamany cercle:", self)
        self.tamany = QSpinBox(self)
        self.tamany.setMinimum(1)
        self.tamany.setMaximum(12)
        self.tamany.setSingleStep(1)
        self.tamany.setValue(4)

        self.bInfo = QPushButton('Info')
        self.bInfo.clicked.connect(self.veureInfo)

        self.buttons = QDialogButtonBox()
        self.buttons.addButton(QDialogButtonBox.Ok)
        self.buttons.accepted.connect(self.accept)
        self.buttons.addButton(QDialogButtonBox.Cancel)
        self.buttons.rejected.connect(self.cancel)
        self.buttons.addButton(self.bInfo, QDialogButtonBox.ResetRole)

        self.gSimb = QGroupBox('Simbologia del mapa')
        self.lSimb = QFormLayout()
        self.lSimb.setSpacing(14)
        self.gSimb.setLayout(self.lSimb)

        self.lSimb.addRow('Color base:', self.color)
        self.lSimb.addRow('Color contorn:', self.contorn)
        if self.renderParams.tipusMapa == 'Àrees':
            self.lSimb.addRow('Mètode classificació:', self.metode)
            self.lSimb.addRow(self.nomIntervals, self.intervals)
            self.nomTamany.setVisible(False)
            self.tamany.setVisible(False)
        else:
            self.metode.setVisible(False)
            self.nomIntervals.setVisible(False)
            self.intervals.setVisible(False)
            self.lSimb.addRow(self.nomTamany, self.tamany)

        self.wInterval = []
        for w in self.iniIntervals():
            self.wInterval.append(w)
        self.gInter = self.grupIntervals()

        self.layout.addWidget(self.gSimb)
        if self.renderParams.tipusMapa == 'Àrees':
            self.layout.addWidget(self.gInter)
        self.layout.addWidget(self.buttons)

        self.valorsInicials()
Пример #24
0
    def stream(self):
        # Avoid auth exception if you reopen the project and don't open the search
        if self.mySearch == None:
            self.mySearch = MySearch(self.iface)

        # Get selected feature of active layer
        service = self.selectedFeature['service']

        # Setup raster params
        isWcs = False
        if service == 'BaseMap':
            if self.mySearch.bmAuth is None:
                try:
                    self.mySearch.bmSetAuth()
                except:
                    return
            username = self.mySearch.bmUsernameInput.text()
            password = self.mySearch.bmPasswordInput.text()
            layers = self.mySearch.bmGetLayer(self.selectedFeature['wmts'])
            styles = 'default'
            tileMatrixSet = '4326'
            urlAttr = 'wmts'
        elif service == 'Data':
            if self.mySearch.dtHeaders is None:
                try:
                    self.mySearch.dtSetAuth()
                except:
                    return
            username = '******'
            password = self.mySearch.dtApikeyInput.text()

            # Dialog for image choice (panchro/multi & wmts/wcs)
            self.msgBox = QMessageBox()
            self.msgBox.setWindowTitle('Airbus')

            protocolGroup = QGroupBox('Protocol')
            protocolGrid = QGridLayout()
            wmtsRadio = QRadioButton('WMTS')
            wcsRadio = QRadioButton('WCS')
            protocolGrid.addWidget(wmtsRadio, 0, 0)
            protocolGrid.addWidget(wcsRadio, 0, 1)
            protocolGroup.setLayout(protocolGrid)

            styleGroup = QGroupBox('Style')
            styleGrid = QGridLayout()
            multispectralRadio = QRadioButton('multispectral')
            panchromaticRadio = QRadioButton('panchromatic')
            styleGrid.addWidget(multispectralRadio, 0, 0)
            styleGrid.addWidget(panchromaticRadio, 0, 1)
            styleGroup.setLayout(styleGrid)

            self.msgBox.layout().addWidget(protocolGroup, 0, 0)
            self.msgBox.layout().addWidget(styleGroup, 1, 0)

            wmtsRadio.setChecked(True)
            if type(self.selectedFeature['wcs_multispectral']) != str:
                protocolGroup.setEnabled(False)

            multispectralRadio.setChecked(True)

            self.msgBox.setStandardButtons(QMessageBox.Abort | QMessageBox.Ok)
            reply = self.msgBox.exec_()
            if reply == QMessageBox.Abort:
                return
            if wmtsRadio.isChecked():
                urlAttr = 'wmts_'
                layers = 'default'
                styles = 'rgb'
                tileMatrixSet = 'EPSG4326'
            else:
                urlAttr = 'wcs_'
                isWcs = True
            if multispectralRadio.isChecked():
                urlAttr += 'multispectral'
            else:
                urlAttr += 'panchromatic'
        else:
            self.error(
                f'Service "{service}" of the feature ocg_fid={self.selectedFeature.id()} isn\'t recognized\nIt should be "Basemap" or "Data"'
            )
            return

        # Add a WMTS raster layer
        # Order of url parameters are important !
        # Why layers is required, maybe is an internal id for wmts gesture ?
        # What is styles ?
        try:
            url = self.selectedFeature[urlAttr]
            name = f'{service} {self.selectedFeature["id"]}'
            if isWcs:
                rlayer = QgsRasterLayer(
                    f'dpiMode=7&identifier=default&password={password}&url={url}&username={username}',
                    name, 'wcs')
            else:
                rlayer = QgsRasterLayer(
                    f'crs=EPSG:4326&dpiMode=7&format=image/png&layers={layers}&password={password}&styles={styles}&tileMatrixSet={tileMatrixSet}&url={url}&username={username}',
                    name, 'wms')
        except Exception as e:
            self.error(f'Error in protocol connection\n\n{str(e)}')
            return
        if rlayer.isValid() == False:
            self.error(f'Raster layer is invalid\n\n{rlayer.error()}')
            return

        QgsProject.instance().addMapLayer(rlayer)
Пример #25
0
    def __init__(self, parent=None):  # pylint: disable=too-many-statements
        super().__init__(parent)

        self.setWindowTitle(self.tr('Redistrict Plugin | Settings'))
        layout = QVBoxLayout()
        self.auth_label = QLabel(self.tr('Authentication configuration'))
        layout.addWidget(self.auth_label)
        self.auth_value = QgsAuthConfigSelect()
        layout.addWidget(self.auth_value)
        auth_id = get_auth_config_id()
        if auth_id:
            self.auth_value.setConfigId(auth_id)

        layout.addWidget(QLabel(self.tr('API base URL')))
        self.base_url_edit = QLineEdit()
        self.base_url_edit.setText(QgsSettings().value('redistrict/base_url', '', str, QgsSettings.Plugins))
        layout.addWidget(self.base_url_edit)

        h_layout = QHBoxLayout()
        h_layout.addWidget(QLabel(self.tr('Check for completed requests every')))
        self.check_every_spin = QSpinBox()
        self.check_every_spin.setMinimum(10)
        self.check_every_spin.setMaximum(600)
        self.check_every_spin.setSuffix(' ' + self.tr('s'))
        self.check_every_spin.setValue(QgsSettings().value('redistrict/check_every', '30', int, QgsSettings.Plugins))

        h_layout.addWidget(self.check_every_spin)
        layout.addLayout(h_layout)

        self.use_mock_checkbox = QCheckBox(self.tr('Use mock Statistics NZ API'))
        self.use_mock_checkbox.setChecked(get_use_mock_api())
        layout.addWidget(self.use_mock_checkbox)

        self.test_button = QPushButton(self.tr('Test API connection'))
        self.test_button.clicked.connect(self.test_api)
        layout.addWidget(self.test_button)

        self.use_overlays_checkbox = QCheckBox(self.tr('Show updated populations during interactive redistricting'))
        self.use_overlays_checkbox.setChecked(
            QgsSettings().value('redistrict/show_overlays', False, bool, QgsSettings.Plugins))
        layout.addWidget(self.use_overlays_checkbox)

        self.use_sound_group_box = QGroupBox(self.tr('Use audio feedback'))
        self.use_sound_group_box.setCheckable(True)
        self.use_sound_group_box.setChecked(
            QgsSettings().value('redistrict/use_audio_feedback', False, bool, QgsSettings.Plugins))

        sound_layout = QGridLayout()
        sound_layout.addWidget(QLabel(self.tr('When meshblock redistricted')), 0, 0)
        self.on_redistrict_file_widget = QgsFileWidget()
        self.on_redistrict_file_widget.setDialogTitle(self.tr('Select Audio File'))
        self.on_redistrict_file_widget.setStorageMode(QgsFileWidget.GetFile)
        self.on_redistrict_file_widget.setFilePath(
            QgsSettings().value('redistrict/on_redistrict', '', str, QgsSettings.Plugins))
        self.on_redistrict_file_widget.setFilter(self.tr('Wave files (*.wav *.WAV)'))
        sound_layout.addWidget(self.on_redistrict_file_widget, 0, 1)
        self.play_on_redistrict_sound_button = QPushButton(self.tr('Test'))
        self.play_on_redistrict_sound_button.clicked.connect(self.play_on_redistrict_sound)
        sound_layout.addWidget(self.play_on_redistrict_sound_button, 0, 2)

        self.use_sound_group_box.setLayout(sound_layout)
        layout.addWidget(self.use_sound_group_box)

        button_box = QDialogButtonBox(
            QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
        layout.addWidget(button_box)
        button_box.rejected.connect(self.reject)
        button_box.accepted.connect(self.accept)

        self.setLayout(layout)