mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-07 06:57:28 -06:00
Format links in descriptions to be clickable
Took some fiddling to get the regex right. But it's nice now. Contributes to issue CURA-8565.
This commit is contained in:
parent
d511c4542a
commit
b5c7dfe9a2
2 changed files with 18 additions and 4 deletions
|
@ -2,10 +2,9 @@
|
|||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
from PyQt5.QtCore import pyqtProperty, QObject
|
||||
import re
|
||||
from typing import Any, Dict, Optional
|
||||
|
||||
from UM.Util import parseBool
|
||||
|
||||
from UM.i18n import i18nCatalog # To translate placeholder names if data is not present.
|
||||
catalog = i18nCatalog("cura")
|
||||
|
||||
|
@ -35,9 +34,9 @@ class PackageModel(QObject):
|
|||
self._package_version = package_data.get("package_version", "") # Display purpose, no need for 'UM.Version'.
|
||||
self._package_info_url = package_data.get("website", "") # Not to be confused with 'download_url'.
|
||||
self._download_count = package_data.get("download_count", 0)
|
||||
self._description = package_data.get("description", "")
|
||||
self._description = self._format(package_data.get("description", ""))
|
||||
|
||||
self._download_url = package_data.get("download_url", "") # Not used yet, will be.
|
||||
self._download_url = package_data.get("download_url", "")
|
||||
self._release_notes = package_data.get("release_notes", "") # Not used yet, propose to add to description?
|
||||
|
||||
author_data = package_data.get("author", {})
|
||||
|
@ -49,6 +48,17 @@ class PackageModel(QObject):
|
|||
self._section_title = section_title
|
||||
# Note that there's a lot more info in the package_data than just these specified here.
|
||||
|
||||
def _format(self, text):
|
||||
"""
|
||||
Formats a user-readable block of text for display.
|
||||
:return: A block of rich text with formatting embedded.
|
||||
"""
|
||||
# Turn all in-line hyperlinks into actual links.
|
||||
url_regex = re.compile(r"(((http|https)://)[a-zA-Z0-9@:%._+~#?&/=]{2,256}\.[a-z]{2,12}(/[a-zA-Z0-9@:%.-_+~#?&/=]*)?)")
|
||||
text = re.sub(url_regex, r'<a href="\1">\1</a>', text)
|
||||
|
||||
return text
|
||||
|
||||
@pyqtProperty(str, constant = True)
|
||||
def packageId(self) -> str:
|
||||
return self._package_id
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue