def applyGPXDone(self, newListObj): self.closeGPXWindow() isFirstObj = True self.listObjPicture = newListObj self.ui.listAvailablePic.clear() for obj in self.listObjPicture: listItem = QtWidgets.QListWidgetItem(obj.nameInList) if isFirstObj: firstItem = listItem isFirstObj = False obj.idInList = id(listItem) if obj.isCoordonate: color = QtGui.QColor(QtCore.Qt.darkGreen) listItem.setForeground(QtGui.QBrush(color)) elif obj.isEXIF: color = QtGui.QColor(QtCore.Qt.red) listItem.setForeground(QtGui.QBrush(color)) else: color = QtGui.QColor(QtCore.Qt.darkRed) listItem.setForeground(QtGui.QBrush(color)) self.ui.listAvailablePic.addItem(listItem) self.addCanvasMarker(refresh=True) self.newPictureSelection(firstItem) self.ui.listAvailablePic.setCurrentItem(firstItem)
def refresh_rules_list(self): '''Refresh the 'Active rules' list with rules from rules.json file''' self.rulesList.clear() # get rules from rules_json file if os.path.isfile(self.rules_json): with open(self.rules_json) as data: rules = json.load(data) # if rules exists add one by one to rules list if len(rules) is not 0: for rule_from_json in list(rules.keys()): # rule list widget to be added to list rule = QtWidgets.QListWidgetItem(self.rulesList) # rule custom look from rule.py file rule_widget = Rule() # fill rule list widget with neded data rule.setWhatsThis(str(rules[rule_from_json])) rule.setSizeHint( QSize(self.rulesList.sizeHint().width(), 35)) rule_widget.setWhatsThis(str(rules[rule_from_json])) rule_widget.ruleTitleLabel.setText(rule_from_json) # add actions to rule buttons rule_widget.deleteButton.clicked.connect( self.refresh_rules_list) rule_widget.infoButton.clicked.connect(self.rule_info) rule_widget.editButton.clicked.connect(self.rule_edit) # add rule to rule list self.rulesList.addItem(rule) self.rulesList.setItemWidget(rule, rule_widget) self.checkButton.setEnabled(False)
def createGroupBox(cls, module_name, box_header, project, params, param_show_list): box = QtWidgets.QGroupBox(box_header) scroll = QtWidgets.QScrollArea() scroll.setWidget(box) scroll.setFrameShape(QtWidgets.QFrame.NoFrame) scroll.setWidgetResizable(True) status = QtWidgets.QListWidgetItem("hidden status") mod = cls(execName=os.path.join(project.opalspath, module_name + ".exe"), QpalsProject=project) mod.listitem = status mod.load() for p in mod.params: if p.name in params: p.val = params[p.name] p.changed = True ui = mod.getFilteredParamUi(filter=param_show_list) advancedBox = QCollapsibleGroupBox.QCollapsibleGroupBox("Advanced options") advancedBox.setChecked(False) ui.addRow(advancedBox) advancedLa = mod.getFilteredParamUi(notfilter=param_show_list) advancedBox.setLayout(advancedLa) runbar = QtWidgets.QHBoxLayout() runprogress = QtWidgets.QProgressBar() mod.progressbar = runprogress mod.runbtn = QtWidgets.QPushButton("Run module") mod.runbtn.clicked.connect(mod.run_async_self) runbar.addWidget(runprogress) runbar.addWidget(mod.runbtn) ui.addRow(runbar) box.setLayout(ui) height = box.minimumSizeHint().height() scroll.setFixedHeight(height + 10) return mod, scroll
def add_list_row(self): """Add a new row to the specific list that shares the same name with the button that emits the signal that fires the slot.""" sender_name = self.sender().objectName() target_list = self.findChild(qwidgets.QListWidget, sender_name.split('_')[2]) target_input = self.findChild(qwidgets.QLineEdit, sender_name.split('_')[2] + '_input') if target_list is not None and target_input is not None: input_text = target_input.text() if len(input_text) > 0: item = qwidgets.QListWidgetItem(input_text) item.setFlags(item.flags() | qcore.Qt.ItemIsEditable) target_list.addItem(item) target_input.setText('')
def __init__(self, dictName): super(getVectorLayer, self).__init__() self.ui = Ui_getVectorLayer() self.ui.setupUi(self) for cle in dictName: item = QtWidgets.QListWidgetItem() font = QtGui.QFont() font.setPointSize(12) item.setFont(font) item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsDragEnabled | QtCore.Qt.ItemIsEnabled) item.setText(cle) self.ui.listWidget.addItem(item) self.ui.listWidget.item(0).setSelected(True)
def add_resource(self, resource): """Add a resource to the minimum needs table. :param resource: The resource to be added :type resource: dict """ updated_sentence = NeedsProfile.format_sentence( resource['Readable sentence'], resource) if self.edit_item: item = self.edit_item item.setText(updated_sentence) self.edit_item = None else: item = QtWidgets.QListWidgetItem(updated_sentence) item.resource_full = resource self.resources_list.addItem(item)
def addCurva(self, data=None): self.listWidget: QtWidgets.QListWidget self.comboBox: QtWidgets.QComboBox itemN = QtWidgets.QListWidgetItem() widget = CurvasWidget(self) widget.nome.setText(self.comboBox.currentText().upper()) widget.horizontalLayout.addStretch() widget.horizontalLayout.setSizeConstraint( QtWidgets.QLayout.SetFixedSize) if data == None: try: _, _, data = self.lastWidget.read() data["D"] = 0 data["C"] = False widget.fill(data, k=self.lastWidget.k.text(), vmax=self.lastWidget.vmax.text()) except: pass else: widget.fill(data) self.comboBox.hide() self.btnAdd.hide() #self.horizontalSpacer.hide() self.listWidget.addItem(itemN) self.listWidget.setItemWidget(itemN, widget) widget.pushButton.clicked.connect( lambda: self.listWidget.takeItem(self.listWidget.row(itemN))) widget.pushButton.clicked.connect(lambda: self.deleteCurva) widget.pushButton.clicked.connect(self.edited.emit) widget.edited.connect(self.edited.emit) # try: # if self.lastWidget: # self.lastWidget.pushButton : QtWidgets.QPushButton # self.lastWidget.setDisabled(True) # lastWidget=self.lastWidget # widget.pushButton.clicked.connect(lambda: lastWidget.setDisabled(False)) # except: # pass self.lastWidget = widget itemN.setSizeHint(widget.sizeHint()) self.listWidget.scrollToBottom() self.edited.emit()
def addPictureObject(self, path, objDir): picName = path.split("/")[-1] listItem = QtWidgets.QListWidgetItem(picName) objPic = objPicture(path=path, nameInList=picName, idInList=id(listItem), objDir=objDir) objPic = self.checkExif(objPic) if objPic.isCoordonate: color = QtGui.QColor(QtCore.Qt.darkGreen) listItem.setForeground(QtGui.QBrush(color)) elif objPic.isEXIF: color = QtGui.QColor(QtCore.Qt.red) listItem.setForeground(QtGui.QBrush(color)) else: color = QtGui.QColor(QtCore.Qt.darkRed) listItem.setForeground(QtGui.QBrush(color)) self.ui.listAvailablePic.addItem(listItem) self.listObjPicture.append(objPic)
def print_results(self, results, layer1, layer2): '''show results from check_rule''' for result in results: error = QtWidgets.QListWidgetItem(self.resultList) error_widget = Result() error.setSizeHint(QSize(self.resultList.sizeHint().width(), 35)) feature_text1 = layer1 + '\n' + str(result[0]) self.adjust_text(error_widget.featureID1, feature_text1) self.adjust_text(error_widget.resultLabel, self.lang(result[1])) if result[2]: feature_text2 = layer2 + '\n' + str(result[2]) else: feature_text2 = layer2 self.adjust_text(error_widget.featureID2, feature_text2) self.resultList.addItem(error) self.resultList.setItemWidget(error, error_widget)
def find(self): """Search GBIF for the species provided.""" text = self.search_text.text() self.taxonomy_list.clear() parsed_species = name_parser(text)[0] genus = parsed_species['genusOrAbove'] try: species = parsed_species['specificEpithet'] except KeyError: species = '' QgsMessageLog.logMessage('Searching for %s' % text, 'SpeciesExplorer', 0) # https: // www.gbif.org / species / search?q = Protea % 20 # repens & rank = SPECIES & qField = SCIENTIFIC & status = ACCEPTED url = ('https://api.gbif.org/v1/species/search?' 'q=%s%%20%s&rank=SPECIES&qField=SCIENTIFIC&status=ACCEPTED' % (genus, species)) matches = gbif_GET(url, None) QgsMessageLog.logMessage(str(matches), 'SpeciesExplorer', 0) self.results_list.clear() names = {} for match in matches['results']: try: name = match['canonicalName'] except KeyError: continue if name not in names: QgsMessageLog.logMessage(str(match), 'SpeciesExplorer', 0) speciesItem = QtWidgets.QListWidgetItem(name) if 'nubKey' in match: taxon_key = match['nubKey'] elif 'speciesKey' in match: taxon_key = match['speciesKey'] else: continue speciesItem.setData(Qt.UserRole, taxon_key) self.results_list.addItem(speciesItem) names[name] = taxon_key
def createWidget(self): self.advanced_widget = QtWidgets.QDialog() self.simple_widget = QtWidgets.QDialog() self.tabs = QtWidgets.QTabWidget() ### SIMPLE ### self.ls = QtWidgets.QFormLayout() self.ls.addRow(QtWidgets.QLabel("Choose input file:")) self.txtinfileSimple = QpalsDropTextbox.QpalsDropTextbox( layerlist=self.layerlist, filterrex=".*\.odm$") hboxsimple1 = QtWidgets.QHBoxLayout() hboxsimple1.addWidget(self.txtinfileSimple, 1) self.txtinfileSimple.textChanged.connect(self.simpleIsLoaded) self.ls.addRow(QtWidgets.QLabel("Input file (odm)"), hboxsimple1) self.linetoolBtn = QtWidgets.QPushButton("Pick section") self.linetoolBtn.clicked.connect(self.activateLineTool) self.linetoolBtn.setEnabled(False) self.ls.addRow(self.linetoolBtn) self.runSecBtnSimple = QtWidgets.QPushButton("Create section") self.runSecBtnSimple.clicked.connect(self.ltool.runsec) self.runSecBtnSimple.setEnabled(False) self.runSecBtnSimple.setStyleSheet("background-color: rgb(50,240,50)") self.runSecBtnView = QtWidgets.QPushButton("Open section in opalsView") self.runSecBtnView.clicked.connect(self.ltool.runview) self.runSecBtnView.setEnabled(False) self.runSecBtnView.setStyleSheet("background-color: rgb(100,100,240)") hb = QtWidgets.QHBoxLayout() hb.addWidget(self.runSecBtnSimple) hb.addWidget(self.runSecBtnView) self.simpleLineLayer = QgsMapLayerComboBox() self.simpleLineLayer.setFilters(QgsMapLayerProxyModel.LineLayer) self.simpleLineLayerChk = QtWidgets.QCheckBox( "Visualize (3D) Line Layer:") self.ls.addRow(self.simpleLineLayerChk, self.simpleLineLayer) self.showSection = QtWidgets.QCheckBox("Show section") self.filterStr = QtWidgets.QLineEdit("Class[Ground]") self.filterAttrBox = QCollapsibleGroupBox.QCollapsibleGroupBox( 'Show attribute selection') self.filterAttrBox.setLayout(QtWidgets.QGridLayout()) self.filterAttrBox.setChecked(False) # hide it self.filterAttrs = {} self.progress = QtWidgets.QProgressBar() self.stateSwitch = QToggleSwitch.QToggleSwitch("vispy", "matplotlib") self.showSection.stateChanged.connect(self.checkBoxChanged) self.showSection.setCheckState(2) self.showSection.setTristate(False) self.ls.addRow(self.showSection) self.ls.addRow("Filter String:", self.filterStr) self.ls.addRow(self.filterAttrBox) self.ls.addRow(hb) self.ls.addRow(self.progress) self.ls.addRow(self.stateSwitch) self.simple_widget.setLayout(self.ls) ### ADVANCED ### lo = QtWidgets.QFormLayout() ###### lo.addRow( QtWidgets.QLabel("Step 1. Choose point cloud and visualize it:")) self.txtinfile = QpalsDropTextbox.QpalsDropTextbox( layerlist=self.layerlist) hbox1 = QtWidgets.QHBoxLayout() hbox1.addWidget(self.txtinfile, 1) lo.addRow(QtWidgets.QLabel("Input file (odm)"), hbox1) self.runShdBtn = QtWidgets.QPushButton("Create shading") self.runShdBtn.clicked.connect(self.loadShading) lo.addRow(self.runShdBtn) ###### self.status = QtWidgets.QListWidgetItem("hidden status") lo.addRow(QtWidgets.QLabel("Step 2. Create sections")) self.secInst = QpalsModuleBase.QpalsModuleBase( execName=os.path.join(self.project.opalspath, "opalsSection.exe"), QpalsProject=self.project) self.secInst.load() self.secInst.listitem = self.status secUi = self.secInst.getParamUi() lo.addRow(secUi) self.runSecBtn = QtWidgets.QPushButton("Calculate sections") self.runSecBtn.clicked.connect(self.runSection) lo.addRow(self.runSecBtn) ####### lo.addRow( QtWidgets.QLabel( "Step 3. Use the Section picking tool to show Sections")) self.pickSecBtn = QtWidgets.QPushButton("Pick section") self.pickSecBtn.clicked.connect(self.activateTool) lo.addRow(self.pickSecBtn) self.advanced_widget.setLayout(lo) self.tabs.addTab(self.simple_widget, "Simple") self.tabs.addTab(self.advanced_widget, "Advanced") self.scrollwidget = QtWidgets.QScrollArea() self.scrollwidget.setWidgetResizable(True) self.scrollwidget.setSizePolicy(QtWidgets.QSizePolicy.Ignored, QtWidgets.QSizePolicy.Ignored) self.scrollwidget.setWidget(self.tabs) return self.scrollwidget