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)
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)
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)
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)
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)
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)
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
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)
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)
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)
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)
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')
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()
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)
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
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())
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()
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)
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)