def createTabs(): # Tab1 lyt1 = QVBoxLayout() lytOk = QHBoxLayout() rbUpdate = QRadioButton('Update', self) lytOk.addWidget(rbUpdate) rbDownload = QRadioButton('Download(0 selected)', self) lytOk.addWidget(rbDownload) btnOk = QPushButton('OK', self) lytOk.addWidget(btnOk) lyt1.addLayout(lytOk) lytChecks = QHBoxLayout() ckVrt = QCheckBox('Create VRT tiles', self) lytChecks.addWidget(ckVrt) ckAddTiles = QCheckBox('Add tiles', self) lytChecks.addWidget(ckAddTiles) lyt1.addLayout(lytChecks) tab1 = QWidget() tab1.setLayout(lyt1) # Tab 2 lyt2 = QVBoxLayout() wgtDir = QgsFileWidget(self) lyt2.addWidget(wgtDir) btnRemoveFiles = QPushButton('', self) lyt2.addWidget(btnRemoveFiles) tab2 = QWidget() tab2.setLayout(lyt2) # tabs = QTabWidget(self) tabs.addTab(tab1, 'Update/Download') tabs.addTab(tab2, 'Download directory') return (tabs, rbUpdate, rbDownload, btnOk, ckVrt, ckAddTiles, wgtDir, btnRemoveFiles)
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 __init__(self, bundleid, bundle, item_type): super().__init__() self.bundleid = bundleid self.name = bundle["name"] self.description = bundle["description"] self.udm = bundle.get("auxiliaryFiles", "").lower().startswith("udm2") assets = bundle["assets"] self.can_harmonize = ("ortho_analytic_4b_sr" in assets or "ortho_analytic_8b_sr" in assets) self.can_harmonize = bundle.get("canHarmonize", False) self.can_clip = bundle.get("canClip", False) self.rectified = bundle["rectification"] == "orthorectified" bands = [] asset_def = PlanetClient.getInstance( ).asset_types_for_item_type_as_dict(item_type) for asset in assets: asset_bands = asset_def[asset].get("bands", []) for band in asset_bands: bands.append(band["name"]) bands = set(bands) layout = QVBoxLayout() hlayout = QHBoxLayout() hlayout.setMargin(0) self.labelName = QLabel(f"<b>{self.name}</b>") hlayout.addWidget(self.labelName) hlayout.addStretch() self.chkSelected = QCheckBox() self.chkSelected.stateChanged.connect(self.checkStateChanged) hlayout.addWidget(self.chkSelected) layout.addLayout(hlayout) self.labelDescription = QLabel(self.description) self.labelDescription.setWordWrap(True) layout.addWidget(self.labelDescription) self.labelBands = QLabel( f"Bands: {', '.join([str(b) for b in bands])}") layout.addWidget(self.labelBands) hlayouttype = QHBoxLayout() hlayouttype.setMargin(0) self.radioTiff = QRadioButton("GeoTIFF") self.radioTiff.setChecked(True) self.radioTiff.toggled.connect(self.selectionChanged.emit) hlayouttype.addWidget(self.radioTiff) self.radioNitf = QRadioButton("NITF") self.radioNitf.toggled.connect(self.selectionChanged.emit) hlayouttype.addWidget(self.radioNitf) hlayouttype.addStretch() layout.addLayout(hlayouttype) if self.udm: hlayoutudm = QHBoxLayout() hlayoutudm.setMargin(0) self.labelUdm = IconLabel("UDM2", UDM_ICON) hlayoutudm.addWidget(self.labelUdm) hlayoutudm.addStretch() layout.addLayout(hlayoutudm) layout.addStretch() self.setFrameStyle(QFrame.Panel | QFrame.Raised) self.setLayout(layout) self.checkStateChanged()
def add_new_field_to_list(text, sec_field): self.fields_lst.setRowCount(self.fields + 1) self.fields_lst.setItem(self.fields, 0, QTableWidgetItem(text)) def centralized_widget(widget): my_widget = QWidget() # chk_bx.setCheckState(Qt.Checked) # If we wanted them all checked by default lay_out = QHBoxLayout(my_widget) lay_out.addWidget(widget) lay_out.setAlignment(Qt.AlignCenter) lay_out.setContentsMargins(0, 0, 0, 0) my_widget.setLayout(lay_out) return my_widget chk = centralized_widget(QCheckBox()) q = QRadioButton() q.toggled.connect(self.handleItemClicked) chk2 = centralized_widget(q) self.fields_lst.setCellWidget(self.fields, 2, chk) self.fields_lst.setCellWidget(self.fields, 3, chk2) if sec_field is not None: cmb_bx = centralized_widget(sec_field) self.fields_lst.setCellWidget(self.fields, 1, cmb_bx) self.fields += 1
def _add_results(self, preselect: int = -1): ''' override ''' # add a radio button for the position the feature was dragged to point = self.feature.geometry().asPoint() radio_label = ('Koordinaten der Markierung ' f'({round(point.x(), 2)}, {round(point.y(), 2)})') radio = QRadioButton(radio_label) def toggled(checked): # radio is checked -> no result selected if checked: self.result = None self.i = -1 self.preview_layer.layer.removeSelection() self._zoom_to(self.feature) self.accept_button.setDisabled(checked) radio.toggled.connect(toggled) # initially this option is checked radio.setChecked(True) self.results_contents.addWidget(radio, 0, 1) super()._add_results(preselect=-1, row_number=1)
def createWidgets(self): glayout = QGridLayout() vlayout = QVBoxLayout() self._list = TableDataSelectionWidget() self.regProp("dest_data", WizProp(self._list, [])) vlayout.addWidget(QLabel("Find minimum distance to:")) radio = QRadioButton("Any destination element") radio.setChecked(True) vlayout.addWidget(radio) radio = WidgetEnableRadioButton( "Destination element with specific attractions", [self._list]) self.regProp("dest_data_enabled", WizProp(radio, False)) vlayout.addWidget(radio) vlayout.addWidget(self._list) glayout.addLayout(vlayout, 0, 0) vlayout = QVBoxLayout() vlayout.addWidget(QLabel("Destination name (for output column)")) edit = QLineEdit() self.regProp("dest_name", WizProp(edit, "")) vlayout.addWidget(edit) vlayout.addStretch() glayout.addLayout(vlayout, 0, 1) self.setLayout(glayout)
def createWidgets(self): glayout = QGridLayout() vlayout = QVBoxLayout() self._list = TableDataSelectionWidget() self.regProp("dest_data", WizProp(self._list, [])) radio = QRadioButton("Weigh attractions equally") radio.setChecked(True) vlayout.addWidget(radio) radio = WidgetEnableRadioButton("Weigh attractions by data", [self._list]) self.regProp("dest_data_enabled", WizProp(radio, False)) vlayout.addWidget(radio) vlayout.addWidget(self._list) glayout.addLayout(vlayout, 0, 0) vlayout = QVBoxLayout() vlayout.addWidget(QLabel("Attraction name (for output column)")) edit = QLineEdit() self.regProp("dest_name", WizProp(edit, "")) vlayout.addWidget(edit) vlayout.addStretch() glayout.addLayout(vlayout, 0, 1) self.setLayout(glayout)
def __init__(self, parent): QDialog.__init__(self, parent) self.setupUi(self) self.logger = Logger() self.help_strings = HelpStrings() #self.txt_help_page.setHtml(self.help_strings.DLG_WELCOME_SCREEN) #self.txt_help_page.anchorClicked.connect(self.save_template) self.finished.connect(self.finish_dialog) self.buttonBox.helpRequested.connect(self.show_help) self.gbx_layout = QVBoxLayout() self.roles = RoleRegistry() self.dict_roles = self.roles.get_roles_info() checked = False active_role = self.roles.get_active_role() # Initialize radio buttons for k,v in self.dict_roles.items(): radio = QRadioButton(v) if not checked: if k == active_role: radio.setChecked(True) checked = True self.show_description(self.roles.get_role_description(k), checked) # Initialize help page radio.toggled.connect(partial(self.show_description, self.roles.get_role_description(k))) self.gbx_layout.addWidget(radio) self.gbx_options.setLayout(self.gbx_layout)
def __init__(self, ui, project): self.ui = ui self.project = project self.ui.kostentraeger_button.clicked.connect( self.calculate_kostentraeger) self.default_kostenaufteilung = self.project.basedata.get_table( 'Kostenaufteilung_Startwerte', 'Kosten') self.kostenphasen = self.project.basedata.get_table( 'Kostenphasen', 'Kosten').features() self.aufteilungsregeln = self.project.basedata.get_table( 'Aufteilungsregeln', 'Kosten').features() self.applyable_aufteilungsregeln = self.project.basedata.get_table( 'Aufteilungsregeln_zu_Netzen_und_Phasen', 'Kosten').features() self.netzelemente = self.project.basedata.get_table( 'Netze_und_Netzelemente', 'Kosten', fields=['IDNetz', 'Netz'] ).features() df_netzelemente = self.netzelemente.to_pandas() del df_netzelemente['fid'] df_netzelemente.drop_duplicates(inplace=True) for i, (index, row) in enumerate(df_netzelemente.iterrows()): net_id = row['IDNetz'] net_name = row['Netz'] radio = QRadioButton(net_name) self.ui.kostenaufteilung_radio_grid.addWidget(radio, i // 2, i % 2) if i == 0: self.net_id = net_id radio.setChecked(True) radio.toggled.connect( lambda b, i=net_id: self.setup_kostenaufteilung(i))
def __init__(self, options, multiple, columns=2, parent=None): super(CheckboxesPanel, self).__init__(parent) self._options = [] for i, option in enumerate(options): if isinstance(option, str): self._options.append((i, option)) else: self.options.append(option) self._multiple = multiple self._buttons = [] rows = len(options) / columns self._buttonGroup = QButtonGroup() self._buttonGroup.setExclusive(not multiple) layout = QGridLayout() layout.setContentsMargins(0, 0, 0, 0) layout.setMargin(0) for i, (v, t) in enumerate(self._options): if multiple: button = QCheckBox(t) else: button = QRadioButton(t) self._buttons.append((v, button)) self._buttonGroup.addButton(button, i) layout.addWidget(button, i % rows, i / rows) layout.addItem( QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Minimum), 0, columns) self.setLayout(layout) if multiple: self.setContextMenuPolicy(Qt.CustomContextMenu) self.customContextMenuRequested.connect(self.showPopupMenu)
def createWidgets(self, origins_available): prop_sheet = PropertySheetWidget(self) # Origins if origins_available: prop_sheet.newSection("Origins") self._pointsCombo = QComboBox() self.regProp("in_origin_points", WizProp(self._pointsCombo, "")) chk1 = WidgetEnableRadioButton("Points/Polygons", [self._pointsCombo]) chk2 = QRadioButton("Network lines") chk3 = QRadioButton("Junctions") self.regProp( "in_origin_type", WizPropRadio([(chk1, "points"), (chk2, "lines"), (chk3, "junctions")], "points")) prop_sheet.add(chk1, self._pointsCombo) prop_sheet.add(chk2) prop_sheet.add(chk3) self.regProp('origin_is_regions', WizPropManual(False)) else: self._pointsCombo = None # Network prop_sheet.newSection("Network") self._linesCombo = QComboBox() prop_sheet.add(QLabel("Axial/Segment lines"), self._linesCombo) self.regProp("in_network", WizProp(self._linesCombo, "")) self._unlinksCombo = QComboBox() self.regProp("in_unlinks", WizProp(self._unlinksCombo, "")) self._unlinksCheck = WidgetEnableCheckBox("Unlink points", [self._unlinksCombo]) self.regProp("in_unlinks_enabled", WizProp(self._unlinksCheck, False)) prop_sheet.add(self._unlinksCheck, self._unlinksCombo) # Destinations prop_sheet.newSection("Destinations") self._targetsCombo = QComboBox() self.regProp("in_destinations", WizProp(self._targetsCombo, "")) prop_sheet.add(QLabel("Data objects"), self._targetsCombo) self.regProp('dest_is_regions', WizPropManual(False)) vlayout = QVBoxLayout() vlayout.addWidget(prop_sheet) vlayout.addStretch(1) self.setLayout(vlayout)
def __init__(self, bundleid, name, description, udm, can_harmonize, rectified): super().__init__() self.bundleid = bundleid self.name = name self.description = description self.udm = udm self.can_harmonize = can_harmonize self.rectified = rectified layout = QVBoxLayout() hlayout = QHBoxLayout() hlayout.setMargin(0) self.labelName = QLabel(f"<b>{name}</b>") hlayout.addWidget(self.labelName) hlayout.addStretch() self.chkSelected = QCheckBox() self.chkSelected.stateChanged.connect(self.checkStateChanged) hlayout.addWidget(self.chkSelected) layout.addLayout(hlayout) self.labelDescription = QLabel(description) self.labelDescription.setWordWrap(True) layout.addWidget(self.labelDescription) hlayouttype = QHBoxLayout() hlayouttype.setMargin(0) self.radioTiff = QRadioButton("GeoTIFF") self.radioTiff.setChecked(True) self.radioTiff.toggled.connect(self.selectionChanged.emit) hlayouttype.addWidget(self.radioTiff) self.radioNitf = QRadioButton("NITF") self.radioNitf.toggled.connect(self.selectionChanged.emit) hlayouttype.addWidget(self.radioNitf) hlayouttype.addStretch() layout.addLayout(hlayouttype) if udm: hlayoutudm = QHBoxLayout() hlayoutudm.setMargin(0) self.labelUdm = IconLabel("UDM2", UDM_ICON) hlayoutudm.addWidget(self.labelUdm) hlayoutudm.addStretch() layout.addLayout(hlayoutudm) self.setFrameStyle(QFrame.Panel | QFrame.Raised) self.setLayout(layout) self.checkStateChanged()
def _add_results(self, preselect: int = -1, row_number: int = 0): ''' adds results to the map canvas and to the result list of the dialog ''' provider = self.preview_layer.layer.dataProvider() for i, result in enumerate(self.results): feature = QgsFeature() coords = result['geometry']['coordinates'] geom = QgsGeometry.fromPointXY(QgsPointXY(coords[0], coords[1])) feature.setGeometry(geom) feature.setAttributes([ i + 1, result['properties']['text'], ]) provider.addFeature(feature) properties = result['properties'] radio = QRadioButton(properties['text']) preview = QLabel() preview.setMaximumWidth(20) preview.setMinimumWidth(20) self.results_contents.addWidget(preview, i + row_number, 0) self.results_contents.addWidget(radio, i + row_number, 1) if self.show_score: score = QLabel(f'Score {properties["score"]}') self.results_contents.addWidget(score, i + row_number, 2) img_path = os.path.join(ICON_PATH, f'marker_{i+1}.png') if os.path.exists(img_path): pixmap = QPixmap(img_path) preview.setPixmap( pixmap.scaled(preview.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation)) # results clicked in the dialog are highlighted on the map radio.toggled.connect( lambda c, i=i, f=feature: self._toggle_result(i, f)) if i == preselect: radio.setChecked(True) self.preview_layer.layer.commitChanges() extent = self.preview_layer.layer.extent() if not extent.isEmpty(): transform = QgsCoordinateTransform( self.preview_layer.layer.crs(), self.canvas.mapSettings().destinationCrs(), QgsProject.instance()) self.canvas.setExtent(transform.transform(extent)) self.canvas.zoomByFactor(1.5) self.canvas.refresh()
def addBoolProp(self, title, default_value, prop_name, style=PropertyStyle.CHECK): widget = None if style == PropertyStyle.CHECK: widget = QCheckBox(title) elif style == PropertyStyle.RADIO: widget = QRadioButton(title) else: raise Exception("Unsupported bool property style (#%d)!" % (style)) self._page.regProp(prop_name, WizProp(widget, default_value)) self.add(widget) return widget
def __init__(self, ui, project): self.ui = ui self.project = project self.ui.gesamtkosten_button.clicked.connect(self.calculate_gesamtkosten) self.netzelemente = self.project.basedata.get_table( 'Netze_und_Netzelemente', 'Kosten' ).features().filter(Typ='Linie') for i, netzelement in enumerate(self.netzelemente): net_element_id = netzelement.IDNetzelement radio = QRadioButton(netzelement.Netzelement) self.ui.kostenkennwerte_radio_grid.addWidget(radio, i // 2, i % 2) if i == 0: self.net_element_id = net_element_id radio.setChecked(True) radio.toggled.connect( lambda b, i=net_element_id: self.setup_net_element(i) )
def createWidgets(self): glayout = QGridLayout() glayout.setColumnStretch(0, 0) glayout.setColumnStretch(1, 1) y = 0 glayout.addWidget(QLabel("Find crossings between lines from:"), y, 0, 1, 2) y = y + 1 self._lines1Combo = QComboBox() self.regProp("in_lines1", WizProp(self._lines1Combo, "")) self._lines1Check = QRadioButton("One table") self._lines1Check.setChecked(True) glayout.addWidget(self._lines1Check, y, 0) glayout.addWidget(self._lines1Combo, y, 1) y = y + 1 self._lines2Combo = QComboBox() self.regProp("in_lines2", WizProp(self._lines2Combo, "")) self._lines2Check = WidgetEnableRadioButton("Two tables", [self._lines2Combo]) self.regProp("in_lines2_enabled", WizProp(self._lines2Check, False)) glayout.addWidget(self._lines2Check, y, 0) glayout.addWidget(self._lines2Combo, y, 1) y = y + 1 glayout.setRowMinimumHeight(y, 20) y = y + 1 self._unlinksCombo = QComboBox() self.regProp("in_unlinks", WizProp(self._unlinksCombo, "")) self._unlinksCheck = WidgetEnableCheckBox("Use unlinks", [self._unlinksCombo]) self.regProp("in_unlinks_enabled", WizProp(self._unlinksCheck, False)) glayout.addWidget(self._unlinksCheck, y, 0) glayout.addWidget(self._unlinksCombo, y, 1) y = y + 1 glayout.setRowStretch(y, 1) self.setLayout(glayout)
def __init__(self, parameter, parent=None): """Constructor. :param parameter: A DefaultValueParameter object. :type parameter: DefaultValueParameter """ super(DefaultValueParameterWidget, self).__init__(parameter, parent) self.radio_button_layout = QHBoxLayout() # Create radio button group self.input_button_group = QButtonGroup() for i in range(len(self._parameter.labels)): if '%s' in self._parameter.labels[i]: label = (self._parameter.labels[i] % self._parameter.options[i]) else: label = self._parameter.labels[i] radio_button = QRadioButton(label) self.radio_button_layout.addWidget(radio_button) self.input_button_group.addButton(radio_button, i) if self._parameter.value == \ self._parameter.options[i]: radio_button.setChecked(True) # Create double spin box for custom value self.custom_value = QDoubleSpinBox() self.custom_value.setSingleStep(0.1) if self._parameter.options[-1]: self.custom_value.setValue(self._parameter.options[-1]) self.radio_button_layout.addWidget(self.custom_value) self.toggle_custom_value() self.inner_input_layout.addLayout(self.radio_button_layout) # Connect # noinspection PyUnresolvedReferences self.input_button_group.buttonClicked.connect(self.toggle_custom_value)
def populateTable(self): ''' Populates the servers table ''' currentConnections = self.getServers() self.tableWidget.setRowCount(len(currentConnections)) for i, connection in enumerate(currentConnections): self.tableWidget.setItem(i, 0, QTableWidgetItem(connection)) (host, port, user, password, isDefault) = self.getServerConfiguration(connection) self.tableWidget.setItem(i, 1, QTableWidgetItem(host)) self.tableWidget.setItem(i, 2, QTableWidgetItem(port)) self.tableWidget.setItem(i, 3, QTableWidgetItem(user)) if not password or len(password) == 0: self.tableWidget.setItem(i, 4, QTableWidgetItem(self.tr('Not Saved'))) else: self.tableWidget.setItem(i, 4, QTableWidgetItem(self.tr('Saved'))) radio = QRadioButton(self.tableWidget) radio.setAutoExclusive(True) if isDefault: radio.setChecked(True) self.tableWidget.setCellWidget(i, 5, radio)
def load_roles(self): """ Initialize group box for selecting the active role """ self.gbx_active_role_layout = QVBoxLayout() dict_roles = self.roles.get_roles_info() checked = False active_role = self.roles.get_active_role() # Initialize radio buttons for k, v in dict_roles.items(): radio = QRadioButton(v) radio.setToolTip(self.roles.get_role_description(k)) if not checked: if k == active_role: radio.setChecked(True) checked = True self.gbx_active_role_layout.addWidget(radio) self.gbx_active_role.setLayout(self.gbx_active_role_layout)
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, parameter, parent=None): """Constructor. :param parameter: A GroupSelectParameter object. :type parameter: GroupSelectParameter """ QWidget.__init__(self, parent) self._parameter = parameter # Store spin box self.spin_boxes = {} # Create elements # Label (name) self.label = QLabel(self._parameter.name) # Layouts self.main_layout = QVBoxLayout() self.input_layout = QVBoxLayout() # _inner_input_layout must be filled with widget in the child class self.inner_input_layout = QVBoxLayout() self.radio_button_layout = QGridLayout() # Create radio button group self.input_button_group = QButtonGroup() # List widget self.list_widget = QListWidget() self.list_widget.setSelectionMode(QAbstractItemView.ExtendedSelection) self.list_widget.setDragDropMode(QAbstractItemView.DragDrop) self.list_widget.setDefaultDropAction(Qt.MoveAction) self.list_widget.setEnabled(False) self.list_widget.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Expanding) for i, key in enumerate(self._parameter.options): value = self._parameter.options[key] radio_button = QRadioButton(value.get('label')) self.radio_button_layout.addWidget(radio_button, i, 0) if value.get('type') == SINGLE_DYNAMIC: percentage_spin_box = PercentageSpinBox(self) self.radio_button_layout.addWidget(percentage_spin_box, i, 1) percentage_spin_box.setValue(value.get('value', 0)) step = percentage_spin_box.singleStep() if step > 1: precision = 0 else: precision = len(str(step).split('.')[1]) if precision > 3: precision = 3 percentage_spin_box.setDecimals(precision) self.spin_boxes[key] = percentage_spin_box # Enable spin box depends on the selected option if self._parameter.selected == key: percentage_spin_box.setEnabled(True) else: percentage_spin_box.setEnabled(False) elif value.get('type') == STATIC: static_value = value.get('value', 0) if static_value is not None: self.radio_button_layout.addWidget( QLabel(str(static_value * 100) + ' %'), i, 1) elif value.get('type') == MULTIPLE_DYNAMIC: if self._parameter.selected == key: self.list_widget.setEnabled(True) else: self.list_widget.setEnabled(False) self.input_button_group.addButton(radio_button, i) if self._parameter.selected == key: radio_button.setChecked(True) # Help text self.help_label = QLabel(self._parameter.help_text) self.help_label.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Expanding) self.help_label.setWordWrap(True) self.help_label.setAlignment(Qt.AlignTop) self.inner_input_layout.addLayout(self.radio_button_layout) self.inner_input_layout.addWidget(self.list_widget) # Put elements into layouts self.input_layout.addWidget(self.label) self.input_layout.addLayout(self.inner_input_layout) self.help_layout = QVBoxLayout() self.help_layout.addWidget(self.help_label) self.main_layout.addLayout(self.input_layout) self.main_layout.addLayout(self.help_layout) self.setLayout(self.main_layout) self.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Expanding) # Update list widget self.update_list_widget() # Connect signal # noinspection PyUnresolvedReferences self.input_button_group.buttonClicked.connect( self.radio_buttons_clicked)
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 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 __init__(self, parameter, parent=None): """Constructor :param parameter: A DefaultSelectParameter object. :type parameter: DefaultSelectParameter """ super(DefaultSelectParameterWidget, self).__init__(parameter, parent) self.default_layout = QHBoxLayout() self.radio_button_layout = QHBoxLayout() self.radio_button_widget = QWidget() self.default_label = QLabel(tr('Default')) # Create radio button group self.default_input_button_group = QButtonGroup() # Define string enabler for radio button self.radio_button_enabler = self.input.itemData(0, Qt.UserRole) for i in range(len(self._parameter.default_labels)): if '%s' in self._parameter.default_labels[i]: label = ( self._parameter.default_labels[i] % self._parameter.default_values[i]) else: label = self._parameter.default_labels[i] radio_button = QRadioButton(label) self.radio_button_layout.addWidget(radio_button) self.default_input_button_group.addButton(radio_button, i) if self._parameter.default_value == \ self._parameter.default_values[i]: radio_button.setChecked(True) # Create double spin box for custom value self.custom_value = QDoubleSpinBox() if self._parameter.default_values[-1]: self.custom_value.setValue(self._parameter.default_values[-1]) has_min = False if self._parameter.minimum is not None: has_min = True self.custom_value.setMinimum(self._parameter.minimum) has_max = False if self._parameter.maximum is not None: has_max = True self.custom_value.setMaximum(self._parameter.maximum) if has_min and has_max: step = (self._parameter.maximum - self._parameter.minimum) / 100.0 self.custom_value.setSingleStep(step) self.radio_button_layout.addWidget(self.custom_value) self.toggle_custom_value() # Reset the layout self.input_layout.setParent(None) self.help_layout.setParent(None) self.label.setParent(None) self.inner_input_layout.setParent(None) self.input_layout = QGridLayout() self.input_layout.setSpacing(0) self.input_layout.addWidget(self.label, 0, 0) self.input_layout.addLayout(self.inner_input_layout, 0, 1) self.input_layout.addWidget(self.default_label, 1, 0) self.input_layout.addLayout(self.radio_button_layout, 1, 1) self.main_layout.addLayout(self.input_layout) self.main_layout.addLayout(self.help_layout) # check every added combobox, it could have been toggled by # the existing keyword self.toggle_input() # Connect # noinspection PyUnresolvedReferences self.input.currentIndexChanged.connect(self.toggle_input) self.default_input_button_group.buttonClicked.connect( self.toggle_custom_value)
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)