Ejemplo n.º 1
0
    def populate_field_list(self, excluded_fields=None):
        """Helper to add field of the layer to the list.

        :param excluded_fields: List of field that want to be excluded.
        :type excluded_fields: list
        """
        # Populate fields list
        if excluded_fields is None:
            excluded_fields = []
        self.field_list.clear()
        for field in self.layer.fields():
            # Skip if it's excluded
            if field.name() in excluded_fields:
                continue
            # Skip if it's not number (float, int, etc)
            if field.type() not in qvariant_numbers:
                continue
            field_item = QListWidgetItem(self.field_list)
            field_item.setFlags(
                Qt.ItemIsEnabled
                | Qt.ItemIsSelectable
                | Qt.ItemIsDragEnabled)
            field_item.setData(Qt.UserRole, field.name())
            field_item.setText(field.name())
            self.field_list.addItem(field_item)
    def validate(self):
        #self.layerList.setTitle('Layers')
        data_source = self.gmlas_datasource() 

        if data_source is None:
            QMessageBox.critical(self,
                                 plugin_name(),
                                 self.tr('Failed to open file using OGR GMLAS driver'))
            return

        ogrMetadataLayerPrefix = '_ogr_'

        self.datasetsListWidget.clear()
        for i in range(0, data_source.GetLayerCount()):
            layer = data_source.GetLayer(i)
            layer_name = layer.GetName()
            if not layer_name.startswith(ogrMetadataLayerPrefix): 
              feature_count = layer.GetFeatureCount()

              item = QListWidgetItem("{} ({})".format(layer_name, feature_count))
              item.setData(Qt.UserRole, layer_name)
              self.datasetsListWidget.addItem(item)

        self.datasetsListWidget.sortItems()
        self.datasetsListWidget.selectAll()
Ejemplo n.º 3
0
    def on_load_base_layer(self):
        # look for base layers in the config
        layer_config = get_layer_config()

        dlg = QDialog()
        vbox = QVBoxLayout()
        list_widget = QListWidget()
        button_box = QDialogButtonBox(QDialogButtonBox.Ok
                                      | QDialogButtonBox.Cancel)
        vbox.addWidget(list_widget)
        vbox.addWidget(button_box)
        dlg.setWindowTitle("Select a base layer to load")
        dlg.setLayout(vbox)

        # populate the list widget
        for (uri, provider), cfg in layer_config.items():
            layer_name = cfg.get(
                "layer_name", "Unnamed layer ({}, {})".format(uri, provider))
            list_item = QListWidgetItem()
            list_item.setText(layer_name)
            list_item.setData(Qt.UserRole, (uri, provider))
            list_widget.addItem(list_item)

        button_box.rejected.connect(dlg.reject)
        button_box.accepted.connect(dlg.accept)

        if dlg.exec_():
            item = list_widget.currentItem()
            if item:
                uri, provider = item.data(Qt.UserRole)
                self.iface.addVectorLayer(uri, item.text(), provider)
Ejemplo n.º 4
0
    def _populate_list(self):
        self.__list.clear()
        for cfg in self.__config_list:
            if cfg["type"] in ("continuous", "instantaneous"):
                uri, provider = cfg["source"]
                # check number of features for this station
                data_l = QgsVectorLayer(uri, "data_layer", provider)
                req = QgsFeatureRequest()
                req.setFilterExpression("{}={}".format(
                    cfg["feature_ref_column"], self.__feature_id))
                if len(list(data_l.getFeatures(req))) == 0:
                    continue

                if cfg.get("feature_filter_type") == "unique_data_from_values":
                    # get unique filter values
                    cfg["filter_unique_values"] = sorted(
                        list(
                            set([
                                f[cfg["feature_filter_column"]]
                                for f in data_l.getFeatures(req)
                            ])))

            elif cfg["type"] == "image":
                if not self.__viewer.has_imagery_data(cfg, self.__feature_id):
                    continue

            item = QListWidgetItem(cfg["name"])
            item.setData(Qt.UserRole, cfg)
            self.__list.addItem(item)
Ejemplo n.º 5
0
    def _populate_list(self):
        self.__list.clear()
        for cfg in self.__config_list:
            if cfg["type"] in ("cumulative", "instantaneous"):
                # check number of features for this station

                if cfg.get("feature_filter_type") == "unique_data_from_values":
                    # get unique filter values

                    layerid = cfg["source"]
                    data_l = QgsProject.instance().mapLayers()[layerid]
                    values = set()
                    for feature in self.__features:
                        feature_id = feature[self.__config["id_column"]]
                        req = QgsFeatureRequest()
                        req.setFilterExpression("{}={}".format(
                            cfg["feature_ref_column"], feature_id))
                        values.update([
                            f[cfg["feature_filter_column"]]
                            for f in data_l.getFeatures(req)
                        ])

                        cfg.set_filter_unique_values(sorted(list(values)))

            item = QListWidgetItem(cfg["name"])
            item.setData(Qt.UserRole, cfg)
            self.__list.addItem(item)
Ejemplo n.º 6
0
    def parse_get_capabilities(self, xml):
        # this raises a IOError if the file doesn't exist
        root = ElementTree.fromstring(xml)
        featuretypelist = root.find('%sFeatureTypeList' % NS_NET_OPENGIS_WFS)
        layers = featuretypelist.findall('%sFeatureType' % NS_NET_OPENGIS_WFS)

        for layer in layers:
            try:
                keywords = layer.find('%sKeywords' % NS_NET_OPENGIS_WFS).text
                if keywords is not None and (
                        'IRMT_QGIS_Plugin' in keywords or
                        # this is for backward compatibility
                        'SVIR_QGIS_Plugin' in keywords):
                    title = layer.find('%sTitle' % NS_NET_OPENGIS_WFS).text
                    layer_id = layer.find('%sName' % NS_NET_OPENGIS_WFS).text
                    abstract = layer.find('%sAbstract' %
                                          NS_NET_OPENGIS_WFS).text
                    bbox = layer.find('%sLatLongBoundingBox' %
                                      NS_NET_OPENGIS_WFS).attrib

                    self.extra_infos[layer_id] = {
                        'Title': title,
                        'Abstract': abstract,
                        'Keywords': keywords,
                        'Bounding Box': bbox
                    }

                    # update combo box
                    item = QListWidgetItem()
                    item.setData(Qt.DisplayRole, title)
                    item.setData(Qt.ToolTipRole, layer_id)
                    self.layers_lst.addItem(item)
            except AttributeError:
                continue
Ejemplo n.º 7
0
    def search(self, text):
        db = self.db
        c = db.cursor()
        self.resultsView.clear()
        self.resultsView.setEnabled(False)
        if not text:
            return

        if self.fuzzyCheck.isChecked():
            search = "* ".join(text.split()) + "*"
        else:
            search = text
        query = c.execute(
            """SELECT layer, featureid, snippet(search, '[',']') as snippet
                            FROM search
                            JOIN featureinfo on search.docid = featureinfo.id
                            WHERE search match '{}' LIMIT 100""".format(
                search)).fetchall()
        for layer, featureid, snippet in query:
            item = QListWidgetItem()
            text = "{}\n {}".format(layer, snippet.replace('\n', ' '))
            item.setText(text)
            item.setData(Qt.UserRole + 1, (layer, featureid, snippet))
            self.resultsView.addItem(item)

        self.resultsView.setEnabled(True)

        if self.resultsView.count() == 0:
            self.resultsView.addItem("No Results")
            self.resultsView.setEnabled(False)
        db.close()
Ejemplo n.º 8
0
    def set_widgets(self):
        """Set widgets on the Classification tab."""
        self.clear_further_steps()
        purpose = self.parent.step_kw_purpose.selected_purpose()['name']
        subcategory = self.parent.step_kw_subcategory.\
            selected_subcategory()['name']
        self.lstClassifications.clear()
        self.lblDescribeClassification.setText('')
        self.lblSelectClassification.setText(
            classification_question % (subcategory, purpose))
        classifications = self.classifications_for_layer()
        for classification in classifications:
            if not isinstance(classification, dict):
                classification = definition(classification)
            item = QListWidgetItem(
                classification['name'],
                self.lstClassifications)
            item.setData(QtCore.Qt.UserRole, classification['key'])
            self.lstClassifications.addItem(item)

        # Set values based on existing keywords (if already assigned)
        classification_keyword = self.parent.get_existing_keyword(
            'classification')
        if classification_keyword:
            classifications = []
            for index in range(self.lstClassifications.count()):
                item = self.lstClassifications.item(index)
                classifications.append(item.data(QtCore.Qt.UserRole))
            if classification_keyword in classifications:
                self.lstClassifications.setCurrentRow(
                    classifications.index(classification_keyword))

        self.auto_select_one_item(self.lstClassifications)
    def _populateTerrainLayers(self):
        """Populates the layers list"""

        listLayers = self.listLayers

        listLayers.clear()

        for layerView in QgsProject.instance().layerTreeRoot().findLayers():
            layer = layerView.layer()

            # Must be vectory
            if layer.type() != QgsMapLayer.VectorLayer:
                continue

            # Must be polygon
            if layer.geometryType() != QgsWkbTypes.PolygonGeometry:
                continue

            fields = layer.fields()
            elevationIndex = fields.indexOf('elevation')

            if elevationIndex == -1:
                continue

            listItem = QListWidgetItem(listLayers)
            listItem.setText(layer.name())
            listItem.setData(QtCore.Qt.UserRole, layer)
    def validate(self):
        self.layerList.setTitle('Layers')
        data_source = self.gmlas_datasource()

        if data_source is None:
            QMessageBox.critical(
                self, plugin_name(),
                self.tr('Failed to open file using OGR GMLAS driver'))
            return

        ogrMetadataLayerPrefix = '_ogr_'

        self.datasetsListWidget.clear()
        for i in range(0, data_source.GetLayerCount()):
            layer = data_source.GetLayer(i)
            layer_name = layer.GetName()
            if not layer_name.startswith(ogrMetadataLayerPrefix):
                feature_count = layer.GetFeatureCount()

                item = QListWidgetItem("{} ({})".format(
                    layer_name, feature_count))
                item.setData(Qt.UserRole, layer_name)
                self.datasetsListWidget.addItem(item)

        self.datasetsListWidget.sortItems()
        self.datasetsListWidget.selectAll()
        self.layerList.setTitle('{} layer(s) found:'.format(
            self.datasetsListWidget.count()))
Ejemplo n.º 11
0
 def feel_list(self):
     self.lstServices.clear()
     ds_list = DataSourcesList(USER_DS_PATHS)
     for ds in ds_list.data_sources.values():
         item = QListWidgetItem(ds.action.icon(), ds.action.text())
         item.setData(Qt.UserRole, ds)
         self.lstServices.addItem(item)
Ejemplo n.º 12
0
 def feel_list(self):
     self.lstGroups.clear()
     ds_groups = GroupsList(USER_GROUP_PATHS)
     for ds_group in ds_groups.groups.values():
         item = QListWidgetItem(QIcon(ds_group.icon), self.tr(ds_group.alias))
         item.setData(Qt.UserRole, ds_group)
         self.lstGroups.addItem(item)
Ejemplo n.º 13
0
    def set_widgets(self):
        """Set widgets on the Classification tab."""
        self.clear_further_steps()
        purpose = self.parent.step_kw_purpose.selected_purpose()['name']
        subcategory = self.parent.step_kw_subcategory.\
            selected_subcategory()['name']
        self.lstClassifications.clear()
        self.lblDescribeClassification.setText('')
        self.lblSelectClassification.setText(
            classification_question % (subcategory, purpose))
        classifications = self.classifications_for_layer()
        for classification in classifications:
            if not isinstance(classification, dict):
                classification = definition(classification)
            item = QListWidgetItem(
                classification['name'],
                self.lstClassifications)
            item.setData(QtCore.Qt.UserRole, classification['key'])
            self.lstClassifications.addItem(item)

        # Set values based on existing keywords (if already assigned)
        classification_keyword = self.parent.get_existing_keyword(
            'classification')
        if classification_keyword:
            classifications = []
            for index in range(self.lstClassifications.count()):
                item = self.lstClassifications.item(index)
                classifications.append(item.data(QtCore.Qt.UserRole))
            if classification_keyword in classifications:
                self.lstClassifications.setCurrentRow(
                    classifications.index(classification_keyword))

        self.auto_select_one_item(self.lstClassifications)
Ejemplo n.º 14
0
    def set_widgets(self):
        """Set widgets on the Hazard Category tab."""
        self.clear_further_steps()
        # Set widgets
        self.lstHazardCategories.clear()
        self.lblDescribeHazardCategory.setText('')
        self.lblSelectHazardCategory.setText(hazard_category_question)
        hazard_categories = self.hazard_categories_for_layer()
        for hazard_category in hazard_categories:
            if not isinstance(hazard_category, dict):
                # noinspection PyTypeChecker
                hazard_category = definition(hazard_category)
            # noinspection PyTypeChecker
            item = QListWidgetItem(hazard_category['name'],
                                   self.lstHazardCategories)
            # noinspection PyTypeChecker
            item.setData(QtCore.Qt.UserRole, hazard_category['key'])
            self.lstHazardCategories.addItem(item)

        # Set values based on existing keywords (if already assigned)
        category_keyword = self.parent.get_existing_keyword('hazard_category')
        if category_keyword:
            categories = []
            for index in range(self.lstHazardCategories.count()):
                item = self.lstHazardCategories.item(index)
                categories.append(item.data(QtCore.Qt.UserRole))
            if category_keyword in categories:
                self.lstHazardCategories.setCurrentRow(
                    categories.index(category_keyword))

        self.auto_select_one_item(self.lstHazardCategories)
Ejemplo n.º 15
0
    def __init__(self, parent=None):
        """Constructor."""
        super().__init__(parent)
        self.setupUi(self)
        self.blocked = False

        self.previous_map_tool = None
        self.extent_tool = None

        for name in SERVICE_MANAGER.available_predefined_bounding_boxes():
            extent = SERVICE_MANAGER.predefined_bounding_box(name)
            item = QListWidgetItem(extent['title'])
            item.setData(Qt.UserRole, name)
            item.setData(Qt.UserRole + 1, extent.get('read_only', False))
            item.setData(Qt.UserRole + 2, extent.get('title', ''))
            item.setData(Qt.UserRole + 3, extent.get('boundingbox', [0, 0, 0, 0])[0])
            item.setData(Qt.UserRole + 4, extent.get('boundingbox', [0, 0, 0, 0])[1])
            item.setData(Qt.UserRole + 5, extent.get('boundingbox', [0, 0, 0, 0])[2])
            item.setData(Qt.UserRole + 6, extent.get('boundingbox', [0, 0, 0, 0])[3])
            self.region_list.addItem(item)

        self.region_list.currentItemChanged.connect(self._item_changed)

        self.button_add.clicked.connect(self._add_item)
        self.button_remove.clicked.connect(self._remove_item)

        self.edit_label.textEdited.connect(self._update_item)
        self.spin_min_long.valueChanged.connect(self._update_item)
        self.spin_max_long.valueChanged.connect(self._update_item)
        self.spin_min_lat.valueChanged.connect(self._update_item)
        self.spin_max_lat.valueChanged.connect(self._update_item)

        self.button_draw_on_map.clicked.connect(self.draw_rect_on_map)
Ejemplo n.º 16
0
    def set_widgets(self):
        """Set widgets on the Hazard Category tab."""
        self.clear_further_steps()
        # Set widgets
        self.lstHazardCategories.clear()
        self.lblDescribeHazardCategory.setText('')
        self.lblSelectHazardCategory.setText(
            hazard_category_question)
        hazard_categories = self.hazard_categories_for_layer()
        for hazard_category in hazard_categories:
            if not isinstance(hazard_category, dict):
                # noinspection PyTypeChecker
                hazard_category = definition(hazard_category)
            # noinspection PyTypeChecker
            item = QListWidgetItem(
                hazard_category['name'],
                self.lstHazardCategories)
            # noinspection PyTypeChecker
            item.setData(QtCore.Qt.UserRole, hazard_category['key'])
            self.lstHazardCategories.addItem(item)

        # Set values based on existing keywords (if already assigned)
        category_keyword = self.parent.get_existing_keyword('hazard_category')
        if category_keyword:
            categories = []
            for index in range(self.lstHazardCategories.count()):
                item = self.lstHazardCategories.item(index)
                categories.append(item.data(QtCore.Qt.UserRole))
            if category_keyword in categories:
                self.lstHazardCategories.setCurrentRow(
                    categories.index(category_keyword))

        self.auto_select_one_item(self.lstHazardCategories)
 def feel_list(self):
     self.lstServices.clear()
     ds_list = DataSourcesList(USER_DS_PATHS)
     for ds in ds_list.data_sources.values():
         item = QListWidgetItem(ds.action.icon(), ds.action.text())
         item.setData(Qt.UserRole, ds)
         self.lstServices.addItem(item)
Ejemplo n.º 18
0
    def open_images(self):
        self.clear_thumb_images()

        data_len = len(self.DATA)

        if self.NUM_DATA_BEGIN >= data_len:
            # Sono già state visualizzate tutte le immagini
            self.NUM_DATA_BEGIN = 0
            self.NUM_DATA_END = 25

        elif self.NUM_DATA_BEGIN <= data_len:
            # indica che non sono state visualizzate tutte le immagini

            data = self.DATA[self.NUM_DATA_BEGIN:self.NUM_DATA_END]
            for i in range(len(data)):
                item = QListWidgetItem(str(data[i].id_media))

                # data_for_thumb = self.db_search_check(self.MAPPER_TABLE_CLASS_thumb, 'id_media', id_media) # recupera i valori della thumb in base al valore id_media del file originale

                thumb_path = data[i].filepath
                # QMessageBox.warning(self, "Errore",str(thumb_path),  QMessageBox.Ok)
                item.setData(Qt.UserRole, str(data[i].media_filename))
                icon = QIcon(
                    thumb_path
                )  # os.path.join('%s/%s' % (directory.toUtf8(), image)))
                item.setIcon(icon)
                self.iconListWidget.addItem(item)
Ejemplo n.º 19
0
 def feel_list(self):
     self.lstGroups.clear()
     ds_groups = GroupsList(USER_GROUP_PATHS)
     for ds_group in ds_groups.groups.values():
         item = QListWidgetItem(QIcon(ds_group.icon),
                                self.tr(ds_group.alias))
         item.setData(Qt.UserRole, ds_group)
         self.lstGroups.addItem(item)
Ejemplo n.º 20
0
    def updateManaged(self):

        self.mManagedLayers.clear()

        for layer in managed_layers():
            item = QListWidgetItem(layer.name())
            item.setData(Qt.UserRole, layer.id())
            self.mManagedLayers.addItem(item)
 def addPrefixToList(self):
     item = QListWidgetItem()
     item.setData(
         0, "PREFIX " + self.tripleStorePrefixNameEdit.text() + ":<" +
         self.tripleStorePrefixEdit.text() + ">")
     item.setText("PREFIX " + self.tripleStorePrefixNameEdit.text() + ":<" +
                  self.tripleStorePrefixEdit.text() + ">")
     self.prefixList.addItem(item)
Ejemplo n.º 22
0
    def populate_classified_values(
            self, unassigned_values, assigned_values, default_classes):
        """Populate lstUniqueValues and treeClasses.from the parameters.

        :param unassigned_values: List of values that haven't been assigned
            to a class. It will be put in self.lstUniqueValues.
        :type unassigned_values: list

        :param assigned_values: Dictionary with class as the key and list of
            value as the value of the dictionary. It will be put in
            self.treeClasses.
        :type assigned_values: dict

        :param default_classes: Default classes from unit.
        :type default_classes: list
        """
        # Populate the unique values list
        self.lstUniqueValues.clear()
        self.lstUniqueValues.setSelectionMode(
            QAbstractItemView.ExtendedSelection)
        for value in unassigned_values:
            value_as_string = value is not None and str(value) or 'NULL'
            list_item = QListWidgetItem(self.lstUniqueValues)
            list_item.setFlags(
                Qt.ItemIsEnabled
                | Qt.ItemIsSelectable
                | Qt.ItemIsDragEnabled)
            list_item.setData(Qt.UserRole, value)
            list_item.setText(value_as_string)
            self.lstUniqueValues.addItem(list_item)
        # Populate assigned values tree
        self.treeClasses.clear()
        self.treeClasses.invisibleRootItem().setFlags(Qt.ItemIsEnabled)
        for default_class in default_classes:
            # Create branch for class
            tree_branch = QTreeWidgetItem(self.treeClasses)
            tree_branch.setFlags(Qt.ItemIsDropEnabled | Qt.ItemIsEnabled)
            tree_branch.setExpanded(True)
            tree_branch.setFont(0, bold_font)
            if 'name' in default_class:
                default_class_name = default_class['name']
            else:
                default_class_name = default_class['key']
            tree_branch.setText(0, default_class_name)
            tree_branch.setData(0, Qt.UserRole, default_class['key'])
            if 'description' in default_class:
                tree_branch.setToolTip(0, default_class['description'])
            # Assign known values
            for value in assigned_values[default_class['key']]:
                string_value = value is not None and str(value) or 'NULL'
                tree_leaf = QTreeWidgetItem(tree_branch)
                tree_leaf.setFlags(
                    Qt.ItemIsEnabled
                    | Qt.ItemIsSelectable
                    | Qt.ItemIsDragEnabled)
                tree_leaf.setData(0, Qt.UserRole, value)
                tree_leaf.setText(0, string_value)
 def getClassesFromLabel(self, comboBox):
     viewlist = []
     resultlist = []
     label = self.conceptSearchEdit.text()
     if label == "":
         return
     language = "en"
     results = {}
     self.searchResult.clear()
     query = ""
     position = self.tripleStoreEdit.currentIndex()
     if self.tripleStoreEdit.currentIndex() > len(self.triplestoreconf):
         if self.findProperty.isChecked():
             self.addVocab[self.addVocab.keys()[
                 position -
                 len(self.triplestoreconf)]]["source"]["properties"]
             viewlist = {k: v for k, v in d.iteritems() if label in k}
         else:
             self.addVocab[self.addVocab.keys()[
                 position - len(self.triplestoreconf)]]["source"]["classes"]
             viewlist = {k: v for k, v in d.iteritems() if label in k}
         for res in viewlist:
             item = QListWidgetItem()
             item.setData(1, val)
             item.setText(key)
             self.searchResult.addItem(item)
     else:
         if self.findProperty.isChecked():
             if "propertyfromlabelquery" in self.triplestoreconf[
                     self.tripleStoreEdit.currentIndex() + 1]:
                 query = self.triplestoreconf[
                     self.tripleStoreEdit.currentIndex() +
                     1]["propertyfromlabelquery"].replace(
                         "%%label%%", label)
         else:
             if "classfromlabelquery" in self.triplestoreconf[
                     self.tripleStoreEdit.currentIndex() + 1]:
                 query = self.triplestoreconf[
                     self.tripleStoreEdit.currentIndex() +
                     1]["classfromlabelquery"].replace("%%label%%", label)
         if query == "":
             msgBox = QMessageBox()
             msgBox.setText(
                 "No search query specified for this triplestore")
             msgBox.exec()
             return
         self.qtask = SearchTask(
             "Searching classes/properties for " + label + " in " +
             self.triplestoreconf[self.tripleStoreEdit.currentIndex() +
                                  1]["endpoint"],
             self.triplestoreconf[self.tripleStoreEdit.currentIndex() +
                                  1]["endpoint"], query,
             self.triplestoreconf, self.findProperty, self.tripleStoreEdit,
             self.searchResult, self.prefixes, label, language, None)
         QgsApplication.taskManager().addTask(self.qtask)
     return viewlist
Ejemplo n.º 24
0
 def addResults(self, hits):
     #REFACTOR to add if link is missing
     for hit in hits:
         for link in hit.get("downloadLinks"):
             title = self.getTitleFromHit(hit)
             if title:
                 item = QListWidgetItem()
                 item.setText(title)
                 item.setData(1, hit)
                 self.dlg.searchResult.addItem(item)
Ejemplo n.º 25
0
    def __init__(self, names, parent=None):
        QDialog.__init__(self, parent)
        self.setupUi(self)
        self.names = names
        self.selected_layers_info = dict()

        self.lst_plots.clear()
        self.lst_buildings.clear()

        self.plots = {
            self.names.LC_BOUNDARY_POINT_T: None,
            self.names.LC_BOUNDARY_T: None,
            self.names.LC_PLOT_T: None
        }

        self.buildings = {
            self.names.LC_SURVEY_POINT_T: None,
            self.names.LC_BUILDING_T: None,
            self.names.LC_BUILDING_UNIT_T: None
        }

        icons = {
            self.names.LC_BOUNDARY_POINT_T:
            QIcon(":/Asistente-LADM-COL/resources/images/points.png"),
            self.names.LC_BOUNDARY_T:
            QIcon(":/Asistente-LADM-COL/resources/images/lines.png"),
            self.names.LC_PLOT_T:
            QIcon(":/Asistente-LADM-COL/resources/images/polygons.png"),
            self.names.LC_SURVEY_POINT_T:
            QIcon(":/Asistente-LADM-COL/resources/images/points.png"),
            self.names.LC_BUILDING_T:
            QIcon(":/Asistente-LADM-COL/resources/images/polygons.png"),
            self.names.LC_BUILDING_UNIT_T:
            QIcon(":/Asistente-LADM-COL/resources/images/polygons.png")
        }

        for k, v in self.plots.items():
            item = QListWidgetItem()
            item.setData(Qt.DecorationRole, icons[k])
            item.setText(k)
            self.lst_plots.addItem(item)

        for k, v in self.buildings.items():
            item = QListWidgetItem()
            item.setData(Qt.DecorationRole, icons[k])
            item.setText(k)
            self.lst_buildings.addItem(item)

        # Set connections
        self.buttonBox.accepted.connect(self.accepted)
        self.rad_plots.toggled.connect(self.update_controls)
        self.lst_plots.itemSelectionChanged.connect(self.update_controls)
        self.lst_buildings.itemSelectionChanged.connect(self.update_controls)

        self.update_controls()  # Initialize GUI state
Ejemplo n.º 26
0
 def getClassesFromLabel(self, comboBox):
     viewlist = []
     resultlist = []
     label = self.conceptSearchEdit.text()
     language = "en"
     results = {}
     self.searchResult.clear()
     query = ""
     if self.currentcol == 4:
         if "propertyfromlabelquery" in self.triplestoreconf[
                 self.tripleStoreEdit.currentIndex() + 1]:
             query = self.triplestoreconf[
                 self.tripleStoreEdit.currentIndex() +
                 1]["propertyfromlabelquery"].replace("%%label%%", label)
     else:
         if "classfromlabelquery" in self.triplestoreconf[
                 self.tripleStoreEdit.currentIndex() + 1]:
             query = self.triplestoreconf[
                 self.tripleStoreEdit.currentIndex() +
                 1]["classfromlabelquery"].replace("%%label%%", label)
     if "SELECT" in query:
         query = query.replace("%%label%%",
                               label).replace("%%language%%", language)
         sparql = SPARQLWrapper(
             self.triplestoreconf[
                 self.tripleStoreEdit.currentIndex()]["endpoint"],
             agent=
             "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11"
         )
         sparql.setQuery(query)
         sparql.setReturnFormat(JSON)
         results = sparql.query().convert()
         self.searchResultMap = {}
         for res in results["results"]["bindings"]:
             item = QListWidgetItem()
             item.setData(0, str(res["class"]["value"]))
             item.setText(str(res["label"]["value"]))
             self.searchResultMap[res["label"]
                                  ["value"]] = res["class"]["value"]
             self.searchResult.addItem(item)
     else:
         myResponse = json.loads(requests.get(query).text)
         for ent in myResponse["search"]:
             qid = ent["url"]
             label = ent["label"] + " (" + ent["id"] + ") "
             if "description" in ent:
                 label += "[" + ent["description"] + "]"
             results[qid] = label
             self.searchResultMap[label] = ent["url"]
         for result in results:
             item = QListWidgetItem()
             item.setData(0, result)
             item.setText(str(results[result]))
             self.searchResult.addItem(item)
     return viewlist
 def __addPolygonsToGui(self):
     self.ui.IDC_listPolygons.clear()
     self.ui.cmbCadastreLayer.clear()
     check = Qt.Unchecked
     for poly_lyr in self.settings.mapData.polygons.polygons():
         item = QListWidgetItem(poly_lyr.name)
         item.setData(Qt.UserRole, poly_lyr)
         item.setFlags(item.flags() | Qt.ItemIsUserCheckable)
         item.setCheckState(check)
         self.ui.IDC_listPolygons.addItem(item)
         self.ui.cmbCadastreLayer.addItem(poly_lyr.name, poly_lyr.id)
Ejemplo n.º 28
0
 def filterPublicLayers(self):
     self.publicWebMapsList.clear()
     filter = self.filterText.text()
     for idx, public_layers in enumerate(self.public_db_keys):
         if "layer_name" in public_layers:
             if len(filter) < 3 or public_layers["layer_name"].find(
                     filter) != -1 or public_layers["id"].find(
                         filter) != -1:
                 listItem = QListWidgetItem(public_layers["layer_name"])
                 listItem.setData(Qt.UserRole, idx)
                 self.publicWebMapsList.addItem(listItem)
Ejemplo n.º 29
0
 def _add_item(self):
     item = QListWidgetItem('New Area')
     item.setData(Qt.UserRole, None)
     item.setData(Qt.UserRole + 1, False)
     item.setData(Qt.UserRole + 2, 'New Area')
     item.setData(Qt.UserRole + 3, 0)
     item.setData(Qt.UserRole + 4, 0)
     item.setData(Qt.UserRole + 5, 0)
     item.setData(Qt.UserRole + 6, 0)
     self.region_list.addItem(item)
     self.region_list.setCurrentItem(item)
 def __addPolygonsToGui(self):
     self.ui.IDC_listPolygons.clear()
     self.ui.cmbCadastreLayer.clear()
     check = Qt.Unchecked
     for poly_lyr in self.settings.mapData.polygons.polygons():
         item = QListWidgetItem(poly_lyr.name)
         item.setData(Qt.UserRole, poly_lyr)
         item.setFlags(item.flags() | Qt.ItemIsUserCheckable)
         item.setCheckState(check)
         self.ui.IDC_listPolygons.addItem(item)
         self.ui.cmbCadastreLayer.addItem(poly_lyr.name, poly_lyr.id)
    def _create_topics_list(self, topics):
        """Builds qt list with topics items from given data.

        Args:
            topics (Dict[str, Any]): topics data (title, abstract, visible_overlays)
        """
        for topic_data in topics:
            item = QListWidgetItem(topic_data.pop('title'))
            item.setFlags(item.flags() | Qt.ItemIsEditable)
            item.setData(Qt.UserRole, topic_data)
            self.dialog.topicsList.addItem(item)
    def update_lists(self, only_update_all_list=False):
        """
        Update left list widget and optionally the right one.

        :param only_update_all_list: Only update left list widget.
        :type only_update_all_list: bool
        """
        # All parties
        self.lst_all_parties.clear()
        if self.txt_search_party.text():
            tmp_parties = {
                i: d
                for i, d in self.data.items()
                if self.txt_search_party.text().lower() in d[0].lower()
            }
        else:
            tmp_parties = copy.deepcopy(self.data)  # Copy all!

        for party_id in self.current_selected_parties:
            if party_id in tmp_parties:
                del tmp_parties[party_id]

        for i, d in tmp_parties.items():
            item = QListWidgetItem(d[0])
            item.setData(Qt.UserRole, i)
            self.lst_all_parties.addItem(item)

        if not only_update_all_list:
            # Selected parties
            self.tbl_selected_parties.clearContents()
            self.tbl_selected_parties.setRowCount(
                len(self.current_selected_parties))
            self.tbl_selected_parties.setColumnCount(3)
            self.tbl_selected_parties.setSortingEnabled(False)

            for row, party_id in enumerate(self.current_selected_parties):
                item = QTableWidgetItem(self.data[party_id][0])
                item.setFlags(item.flags() & ~Qt.ItemIsEditable)
                item.setData(Qt.UserRole, party_id)
                self.tbl_selected_parties.setItem(row, 0, item)
                value_denominator = self.parties_to_group[party_id][
                    0] if party_id in self.parties_to_group else self.data[
                        party_id][1]
                self.tbl_selected_parties.setItem(
                    row, 1, QTableWidgetItem(str(value_denominator)))
                value_numerator = self.parties_to_group[party_id][
                    1] if party_id in self.parties_to_group else self.data[
                        party_id][2]
                self.tbl_selected_parties.setItem(
                    row, 2, QTableWidgetItem(str(value_numerator)))

            self.tbl_selected_parties.setSortingEnabled(True)
    def __addRastersToGui(self):
        self.ui.IDC_listRasters.clear()
        check = Qt.Unchecked
        if self.settings.mapData.rasters.count() == 1:
            check = Qt.Checked
            self.settings.mapData.rasters.rasters()[0].selected = True

        for raster_lyr in self.settings.mapData.rasters.rasters():
            item = QListWidgetItem(raster_lyr.name)
            item.setData(Qt.UserRole, raster_lyr)
            item.setFlags(item.flags() | Qt.ItemIsUserCheckable)
            item.setCheckState(check)
            self.ui.IDC_listRasters.addItem(item)
    def __addRastersToGui(self):
        self.ui.IDC_listRasters.clear()
        check = Qt.Unchecked
        if self.settings.mapData.rasters.count() == 1:
            check = Qt.Checked
            self.settings.mapData.rasters.rasters()[0].selected = True

        for raster_lyr in self.settings.mapData.rasters.rasters():
            item = QListWidgetItem(raster_lyr.name)
            item.setData(Qt.UserRole, raster_lyr)
            item.setFlags(item.flags() | Qt.ItemIsUserCheckable)
            item.setCheckState(check)
            self.ui.IDC_listRasters.addItem(item)
    def __createWidget(field, layer, settings_layer):
        settings_field = settings_layer["filters_fields"][field]
        widget_type = settings_field["widget_type"]
        filter_widget = getattr(QtWidgets, widget_type)()
        filter_widget.setObjectName(field)

        widget_options = settings_field["widget_options"]
        for wo in widget_options:
            value = widget_options[wo]
            try:
                value = int(value)
            except:
                try:
                    value = float(value)
                except:
                    pass
            getattr(filter_widget, wo)(value)

        if settings_field["source_type"] == "own":
            idx_field = layer.fields().indexFromName(field)
            if not idx_field > 0:
                print(f"Field {field} does not found in layer")
            field_type = layer.editorWidgetSetup(idx_field).type()
            if field_type == 'ValueMap':
                valuemap = layer.editorWidgetSetup(idx_field).config()['map']

                # по какой-то неведомой причине какие-то
                # карты значений в виде списка,
                # какие-то в виде словарей
                if isinstance(valuemap, list):
                    newvaluemap = {}
                    for d in valuemap:
                        newvaluemap[list(d.keys())[0]] = d[list(d.keys())[0]]
                    valuemap = newvaluemap

                for key, value in valuemap.items():
                    if widget_type == "QListWidget":
                        item = QListWidgetItem(key)
                        item.setData(Qt.UserRole, QVariant(value))
                        filter_widget.addItem(item)
                    elif widget_type == "QComboBox":
                        filter_widget.addItem(key, QVariant(value))
                        filter_widget.setCurrentIndex(-1)

        elif settings_field["source_type"] == "custom":
            if widget_type == "QComboBox":
                filter_widget.setCurrentIndex(-1)
                filter_widget.addItem(None, QVariant(None))

        return filter_widget
Ejemplo n.º 36
0
    def populateListWithDatabasesFromServer(self):
        '''
        Populates databases list from server
        '''
        dbList = []
        try:
            dbList = self.serverWidget.abstractDb.getEDGVDbsFromServer()
        except Exception as e:
            QMessageBox.critical(self, self.tr('Critical!'), ':'.join(e.args))

        dbList.sort()
        for (dbname, dbversion) in dbList:
            item = QListWidgetItem(self.dbListWidget)
            item.setText(dbname + ' (EDGV v. ' + dbversion + ')')
            item.setData(Qt.UserRole, dbname)
Ejemplo n.º 37
0
    def show_result(self, geoservice, image_ba):
        if geoservice:
            custom_widget = QmsSearchResultItemWidget(
                geoservice, image_ba, extent_renderer=self.extent_renderer)
            new_item = QListWidgetItem(self.lstSearchResult)
            new_item.setSizeHint(custom_widget.sizeHint())
            self.lstSearchResult.addItem(new_item)
            self.lstSearchResult.setItemWidget(new_item, custom_widget)

        else:
            new_item = QListWidgetItem()
            new_item.setText(self.tr('No results!'))
            new_item.setData(Qt.UserRole, None)
            self.lstSearchResult.addItem(new_item)
        self.lstSearchResult.update()
    def __init__(self,
                 electorate_registry: LinzElectoralDistrictRegistry,
                 parent=None):
        super().__init__(parent)

        self.electorate_registry = electorate_registry

        self.setWindowTitle(self.tr('Deprecate Electorate'))

        layout = QVBoxLayout()

        self.search = QgsFilterLineEdit()
        self.search.setShowSearchIcon(True)
        self.search.setPlaceholderText(
            self.tr('Search for {}').format(
                electorate_registry.type_string_sentence()))
        self.search.textChanged.connect(self.filter_changed)
        layout.addWidget(self.search)

        request = QgsFeatureRequest()
        request.setFlags(QgsFeatureRequest.NoGeometry)
        request.setSubsetOfAttributes([
            electorate_registry.source_field_index,
            electorate_registry.title_field_index,
            electorate_registry.deprecated_field_index
        ])
        self.list = QListWidget()
        for f in electorate_registry.source_layer.getFeatures(request):
            title = f[electorate_registry.title_field_index]
            code = f[electorate_registry.source_field_index]
            deprecated = f[electorate_registry.deprecated_field_index]

            if deprecated:
                title = '*' + title
            item = QListWidgetItem(title)
            item.setData(Qt.UserRole, code)
            self.list.addItem(item)

        layout.addWidget(self.list, 10)

        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)
        self.list.itemDoubleClicked.connect(self.accept)
Ejemplo n.º 39
0
    def set_widgets(self):
        """Set widgets on the LayerMode tab."""
        self.clear_further_steps()
        # Set widgets
        purpose = self.parent.step_kw_purpose.selected_purpose()
        subcategory = self.parent.step_kw_subcategory.selected_subcategory()
        layer_mode_question = (
            layer_mode_raster_question
            if is_raster_layer(self.parent.layer)
            else layer_mode_vector_question)

        self.lblDescribeLayerMode.setText('')
        self.lstLayerModes.clear()
        layer_modes = get_layer_modes(subcategory['key'])
        if is_raster_layer(self.parent.layer):
            layer_mode_question = layer_mode_raster_question
        else:
            if len(layer_modes) == 2:
                layer_mode_question = layer_mode_vector_question
            elif len(layer_modes) == 1:
                if layer_modes[0]['key'] == 'classified':
                    layer_mode_question = layer_mode_vector_classified_confirm
                elif layer_modes[0]['key'] == 'continuous':
                    layer_mode_question = layer_mode_vector_continuous_confirm
                else:
                    layer_mode_question = layer_mode_vector_question
        self.lblSelectLayerMode.setText(
            layer_mode_question % (subcategory['name'], purpose['name']))
        for layer_mode in layer_modes:
            item = QListWidgetItem(layer_mode['name'], self.lstLayerModes)
            item.setData(QtCore.Qt.UserRole, layer_mode['key'])
            self.lstLayerModes.addItem(item)

        # Set value to existing keyword or default value
        layer_mode_keys = [m['key'] for m in layer_modes]
        layer_mode_keyword = self.parent.get_existing_keyword('layer_mode')
        if layer_mode_keyword in layer_mode_keys:
            index = layer_mode_keys.index(layer_mode_keyword)
        elif layer_mode_continuous['key'] in layer_mode_keys:
            # Set default value
            index = layer_mode_keys.index(layer_mode_continuous['key'])
        else:
            index = -1
        self.lstLayerModes.setCurrentRow(index)

        self.auto_select_one_item(self.lstLayerModes)
Ejemplo n.º 40
0
    def setList(self, options):
        self.options = options
        self.listWidget.clear()
        entries = QgsRasterCalculatorEntry.rasterEntries()

        def _find_source(name):
            for entry in entries:
                if entry.ref == name:
                    return entry.raster.source()
            return ''

        for name in options.keys():
            item = QListWidgetItem(name, self.listWidget)
            tooltip = _find_source(name)
            if tooltip:
                item.setData(Qt.ToolTipRole, tooltip)
            self.listWidget.addItem(item)
Ejemplo n.º 41
0
    def show_result(self, geoservice, image_ba):
        if geoservice:
            custom_widget = QmsSearchResultItemWidget(geoservice, image_ba, extent_renderer=self.extent_renderer)
            new_item = QListWidgetItem(self.lstSearchResult)
            new_item.setSizeHint(custom_widget.sizeHint())
            self.lstSearchResult.addItem(new_item)
            self.lstSearchResult.setItemWidget(
                new_item,
                custom_widget
            )

        else:
            new_item = QListWidgetItem()
            new_item.setText(self.tr('No results!'))
            new_item.setData(Qt.UserRole, None)
            self.lstSearchResult.addItem(new_item)
        self.lstSearchResult.update()
    def list_compatible_canvas_layers(self):
        """Fill the list widget with compatible layers.

        :returns: Metadata of found layers.
        :rtype: list of dicts
        """
        italic_font = QFont()
        italic_font.setItalic(True)
        list_widget = self.lstCanvasExpLayers
        # Add compatible layers
        list_widget.clear()
        for layer in self.parent.get_compatible_canvas_layers('exposure'):
            item = QListWidgetItem(layer['name'], list_widget)
            item.setData(Qt.UserRole, layer['id'])
            if not layer['keywords']:
                item.setFont(italic_font)
            list_widget.addItem(item)
    def refresh_maps(self):
        QApplication.setOverrideCursor(Qt.WaitCursor)
        if self.clouddb:
            map_list = self.api.read_maps()
            if self.show_api_error(map_list):
                QApplication.restoreOverrideCursor()
                return

            self.ui.tabMaps.clear()
            self.ui.btnMapDelete.setEnabled(False)
            self.ui.btnMapLoad.setEnabled(False)
            
            for map in map_list:
                it = QListWidgetItem(map['map']['name'])
                self.ui.tabMaps.addItem(it)
                it.setData(Qt.UserRole,  map['map']['id'])

        QApplication.restoreOverrideCursor()        
 def update_list_widget(self):
     """Update list widget when radio button is clicked."""
     # Get selected radio button
     radio_button_checked_id = self.input_button_group.checkedId()
     # No radio button checked, then default value = None
     if radio_button_checked_id > -1:
         selected_dict = list(self._parameter.options.values())[
             radio_button_checked_id]
         if selected_dict.get('type') == MULTIPLE_DYNAMIC:
             for field in selected_dict.get('value'):
                 # Update list widget
                 field_item = QListWidgetItem(self.list_widget)
                 field_item.setFlags(
                     Qt.ItemIsEnabled
                     | Qt.ItemIsSelectable
                     | Qt.ItemIsDragEnabled)
                 field_item.setData(Qt.UserRole, field)
                 field_item.setText(field)
                 self.list_widget.addItem(field_item)
Ejemplo n.º 45
0
 def set_widgets(self):
     """Set widgets on the LayerMode tab."""
     self.clear_further_steps()
     # Set widgets
     self.lblBandSelector.setText(tr(
         'Please select which band that contains the data that you want to '
         'use for this layer.'))
     self.lstBands.clear()
     band_num = self.parent.layer.bandCount()
     for i in range(band_num):
         item = QListWidgetItem(
             self.parent.layer.bandName(i + 1),
             self.lstBands)
         item.setData(QtCore.Qt.UserRole, i + 1)
         self.lstBands.addItem(item)
     existing_band = self.parent.get_existing_keyword('active_band')
     if existing_band:
         self.lstBands.setCurrentRow(existing_band - 1)
     else:
         # Set to Band 1 / index 0
         self.lstBands.setCurrentRow(0)
Ejemplo n.º 46
0
    def set_widgets(self):
        """Set widgets on the Subcategory tab."""
        self.clear_further_steps()
        # Set widgets
        purpose = self.parent.step_kw_purpose.selected_purpose()
        self.lstSubcategories.clear()
        self.lblDescribeSubcategory.setText('')
        self.lblIconSubcategory.setPixmap(QPixmap())
        self.lblSelectSubcategory.setText(
            get_question_text('%s_question' % purpose['key']))
        for i in self.subcategories_for_layer():
            # noinspection PyTypeChecker
            item = QListWidgetItem(i['name'], self.lstSubcategories)
            # noinspection PyTypeChecker
            item.setData(QtCore.Qt.UserRole, i['key'])
            self.lstSubcategories.addItem(item)

        # Check if layer keywords are already assigned
        key = self.parent.step_kw_purpose.selected_purpose()['key']
        keyword = self.parent.get_existing_keyword(key)

        # Overwrite the keyword if it's KW mode embedded in IFCW mode
        if self.parent.parent_step:
            keyword = self.parent.get_parent_mode_constraints()[1]['key']

        # Set values based on existing keywords or parent mode
        if keyword:
            subcategories = []
            for index in range(self.lstSubcategories.count()):
                item = self.lstSubcategories.item(index)
                subcategories.append(item.data(QtCore.Qt.UserRole))
            if keyword in subcategories:
                self.lstSubcategories.setCurrentRow(
                    subcategories.index(keyword))

        self.auto_select_one_item(self.lstSubcategories)
Ejemplo n.º 47
0
    def set_widgets(self):
        """Set widgets on the Unit tab."""
        self.clear_further_steps()
        # Set widgets
        purpose = self.parent.step_kw_purpose.selected_purpose()
        subcategory = self.parent.step_kw_subcategory.selected_subcategory()
        self.lblSelectUnit.setText(
            unit_question % (subcategory['name'], purpose['name']))
        self.lblDescribeUnit.setText('')
        self.lstUnits.clear()
        subcat = self.parent.step_kw_subcategory.selected_subcategory()['key']
        if purpose == layer_purpose_hazard:
            units_for_layer = hazard_units(subcat)
        else:
            units_for_layer = exposure_units(subcat)
        for unit_for_layer in units_for_layer:
            item = QListWidgetItem(unit_for_layer['name'], self.lstUnits)
            item.setData(QtCore.Qt.UserRole, unit_for_layer['key'])
            self.lstUnits.addItem(item)

        # Set values based on existing keywords (if already assigned)
        if self.parent.step_kw_purpose.\
                selected_purpose() == layer_purpose_hazard:
            key = continuous_hazard_unit['key']
        else:
            key = exposure_unit['key']
        unit_id = self.parent.get_existing_keyword(key)
        if unit_id:
            units = []
            for index in range(self.lstUnits.count()):
                item = self.lstUnits.item(index)
                units.append(item.data(QtCore.Qt.UserRole))
            if unit_id in units:
                self.lstUnits.setCurrentRow(units.index(unit_id))

        self.auto_select_one_item(self.lstUnits)
Ejemplo n.º 48
0
    def set_widgets(self):
        """Set widgets on the layer purpose tab."""
        self.clear_further_steps()
        # Set widgets
        self.lstCategories.clear()
        self.lblDescribeCategory.setText('')
        self.lblIconCategory.setPixmap(QPixmap())
        self.lblSelectCategory.setText(
            category_question % self.parent.layer.name())
        purposes = self.purposes_for_layer()
        for purpose in purposes:
            if not isinstance(purpose, dict):
                purpose = definition(purpose)
            item = QListWidgetItem(purpose['name'], self.lstCategories)
            item.setData(QtCore.Qt.UserRole, purpose['key'])
            self.lstCategories.addItem(item)

        # Check if layer keywords are already assigned
        purpose_keyword = self.parent.get_existing_keyword('layer_purpose')

        # Overwrite the purpose_keyword if it's KW mode embedded in IFCW mode
        if self.parent.parent_step:
            purpose_keyword = self.parent.\
                get_parent_mode_constraints()[0]['key']

        # Set values based on existing keywords or parent mode
        if purpose_keyword:
            purposes = []
            for index in range(self.lstCategories.count()):
                item = self.lstCategories.item(index)
                purposes.append(item.data(QtCore.Qt.UserRole))
            if purpose_keyword in purposes:
                self.lstCategories.setCurrentRow(
                    purposes.index(purpose_keyword))

        self.auto_select_one_item(self.lstCategories)
    def populate_classified_values(
            unassigned_values, assigned_values, default_classes,
            list_unique_values, tree_mapping_widget):
        """Populate lstUniqueValues and treeClasses.from the parameters.

        :param unassigned_values: List of values that haven't been assigned
            to a class. It will be put in list_unique_values.
        :type unassigned_values: list

        :param assigned_values: Dictionary with class as the key and list of
            value as the value of the dictionary. It will be put in
            tree_mapping_widget.
        :type assigned_values: dict

        :param default_classes: Default classes from unit.
        :type default_classes: list

        :param list_unique_values: List Widget for unique values
        :type list_unique_values: QListWidget

        :param tree_mapping_widget: Tree Widget for classifying.
        :type tree_mapping_widget: QTreeWidget
        """
        # Populate the unique values list
        list_unique_values.clear()
        list_unique_values.setSelectionMode(
            QAbstractItemView.ExtendedSelection)
        for value in unassigned_values:
            value_as_string = value is not None and str(value) or 'NULL'
            list_item = QListWidgetItem(list_unique_values)
            list_item.setFlags(
                Qt.ItemIsEnabled
                | Qt.ItemIsSelectable
                | Qt.ItemIsDragEnabled)
            list_item.setData(Qt.UserRole, value)
            list_item.setText(value_as_string)
            list_unique_values.addItem(list_item)
        # Populate assigned values tree
        tree_mapping_widget.clear()
        bold_font = QFont()
        bold_font.setItalic(True)
        bold_font.setBold(True)
        bold_font.setWeight(75)
        tree_mapping_widget.invisibleRootItem().setFlags(
            Qt.ItemIsEnabled)
        for default_class in default_classes:
            # Create branch for class
            tree_branch = QTreeWidgetItem(tree_mapping_widget)
            tree_branch.setFlags(
                Qt.ItemIsDropEnabled | Qt.ItemIsEnabled)
            tree_branch.setExpanded(True)
            tree_branch.setFont(0, bold_font)
            if 'name' in default_class:
                default_class_name = default_class['name']
            else:
                default_class_name = default_class['key']
            tree_branch.setText(0, default_class_name)
            tree_branch.setData(0, Qt.UserRole, default_class['key'])
            if 'description' in default_class:
                tree_branch.setToolTip(0, default_class['description'])
            # Assign known values
            for value in assigned_values[default_class['key']]:
                string_value = value is not None and str(value) or 'NULL'
                tree_leaf = QTreeWidgetItem(tree_branch)
                tree_leaf.setFlags(
                    Qt.ItemIsEnabled
                    | Qt.ItemIsSelectable
                    | Qt.ItemIsDragEnabled)
                tree_leaf.setData(0, Qt.UserRole, value)
                tree_leaf.setText(0, string_value)