diff --git a/modelbaker/ilitoppingmaker/ilidata.py b/modelbaker/ilitoppingmaker/ilidata.py index 9af0697..e41a889 100644 --- a/modelbaker/ilitoppingmaker/ilidata.py +++ b/modelbaker/ilitoppingmaker/ilidata.py @@ -52,7 +52,9 @@ def __init__( self.owner = owner self.project_name = project_name - self.title = f"QGIS {self.file_type} file for {self.project_name} - {os.path.splitext(os.path.basename(self.file_path))}" + # the title is mostly what is displayed in a specific context + self.title = self.project_name + self.short_description = f"QGIS {self.file_type} file for {self.project_name} - {os.path.splitext(os.path.basename(self.file_path))}" self.file_mimetype = self._file_mime_type(self.file_path) def _file_mime_type(self, file_path: str = None) -> str: @@ -81,6 +83,16 @@ def make_xml_element(self, element): ) ET.SubElement(datasetidx16_localisedtext, "Text").text = self.title + short_description = ET.SubElement(element, "shortDescription") + datsetidx16_multilingualtext = ET.SubElement( + short_description, "DatasetIdx16.MultilingualMText" + ) + localisedtext = ET.SubElement(datsetidx16_multilingualtext, "LocalisedText") + datasetidx16_localisedtext = ET.SubElement( + localisedtext, "DatasetIdx16.LocalisedMText" + ) + ET.SubElement(datasetidx16_localisedtext, "Text").text = self.short_description + categories = ET.SubElement(element, "categories") type_datasetidx16_code = ET.SubElement(categories, "DatasetIdx16.Code_") ET.SubElement( diff --git a/modelbaker/iliwrapper/ilicache.py b/modelbaker/iliwrapper/ilicache.py index 751fa67..aa25bb8 100644 --- a/modelbaker/iliwrapper/ilicache.py +++ b/modelbaker/iliwrapper/ilicache.py @@ -535,6 +535,42 @@ def _process_informationfile(self, file, netloc, url): } title.append(title_information) + short_description = list() + + for short_description_element in metaconfig_metadata.findall( + "ili23:shortDescription", self.ns + ): + for ( + multilingual_text_element + ) in short_description_element.findall( + "ili23:DatasetIdx16.MultilingualMText", self.ns + ): + for ( + localised_text_element + ) in multilingual_text_element.findall( + "ili23:LocalisedText", self.ns + ): + for ( + localised_text_element + ) in localised_text_element.findall( + "ili23:DatasetIdx16.LocalisedMText", self.ns + ): + short_description_information = { + "language": self.get_element_text( + localised_text_element.find( + "ili23:Language", self.ns + ) + ), + "text": self.get_element_text( + localised_text_element.find( + "ili23:Text", self.ns + ) + ), + } + short_description.append( + short_description_information + ) + model_link_names = [] for basket_element in metaconfig_metadata.findall( "ili23:baskets", self.ns @@ -592,6 +628,12 @@ def _process_informationfile(self, file, netloc, url): metaconfig["title"] = title else: metaconfig["title"] = None + if short_description is not None: + metaconfig[ + "short_description" + ] = short_description + else: + metaconfig["short_description"] = None metaconfig["model_link_names"] = model_link_names repo_metaconfigs.append(metaconfig) @@ -654,6 +696,7 @@ class Roles(Enum): ID = Qt.UserRole + 7 URL = Qt.UserRole + 8 MODEL_LINKS = Qt.UserRole + 9 + SHORT_DESCRIPTION = Qt.UserRole + 10 def __int__(self): return self.value @@ -679,8 +722,16 @@ def set_repositories(self, repositories): # since there is no multilanguage handling we take the first entry display_value = dataitem["title"][0]["text"] + short_description = None + if ( + dataitem["short_description"] + and "text" in dataitem["short_description"][0] + ): + short_description = dataitem["short_description"][0]["text"] + item.setData(display_value, int(Qt.DisplayRole)) item.setData(display_value, int(Qt.EditRole)) + item.setData(short_description, int(Qt.ToolTipRole)) item.setData(dataitem["id"], int(IliDataItemModel.Roles.ID)) item.setData( dataitem["repository"], int(IliDataItemModel.Roles.ILIREPO) @@ -694,6 +745,9 @@ def set_repositories(self, repositories): item.setData(dataitem["owner"], int(IliDataItemModel.Roles.OWNER)) item.setData(dataitem["title"], int(IliDataItemModel.Roles.TITLE)) item.setData(dataitem["url"], int(IliDataItemModel.Roles.URL)) + item.setData( + short_description, int(IliDataItemModel.Roles.SHORT_DESCRIPTION) + ) item.setData( dataitem["model_link_names"], @@ -722,7 +776,7 @@ def __init__(self): self.repository_label = QLabel() self.repository_label.setAlignment(Qt.AlignRight) self.widget.layout().addWidget(self.metaconfig_label, 0, 0) - self.widget.layout().addWidget(self.repository_label, 0, 2) + self.widget.layout().addWidget(self.repository_label, 0, 1) def paint(self, painter, option, index): option.index = index @@ -730,13 +784,11 @@ def paint(self, painter, option, index): def drawDisplay(self, painter, option, rect, text): repository = option.index.data(int(IliDataItemModel.Roles.ILIREPO)) - models = option.index.data(int(IliDataItemModel.Roles.MODELS)) - owner = option.index.data(int(IliDataItemModel.Roles.OWNER)) display_text = option.index.data(int(Qt.DisplayRole)) self.repository_label.setText( - 'of {owner} with {models} at {repository}'.format( - owner=owner, models="/".join(models), repository=repository + '{repository}'.format( + repository=repository ) ) self.metaconfig_label.setText(