Addon Manager: Fix relative external links

This commit is contained in:
Chris Hennes
2024-03-11 17:00:00 -05:00
parent 4f136e4613
commit e0e1aef0ae
2 changed files with 23 additions and 0 deletions

View File

@@ -63,6 +63,7 @@ class ReadmeController(QtCore.QObject):
self.stop = True
self.widget = widget
self.widget.load_resource.connect(self.loadResource)
self.widget.follow_link.connect(self.follow_link)
def set_addon(self, repo: Addon):
"""Set which Addon's information is displayed"""
@@ -152,6 +153,16 @@ class ReadmeController(QtCore.QObject):
NetworkManager.AM_NETWORK_MANAGER.abort(request)
self.resource_requests.clear()
def follow_link(self, url: str) -> None:
final_url = url
if not url.startswith("http"):
if url.endswith(".md"):
final_url = self._create_markdown_url(url)
else:
final_url = self._create_full_url(url)
FreeCAD.Console.PrintLog(f"Loading {final_url} in the system browser")
QtGui.QDesktopServices.openUrl(final_url)
def _create_full_url(self, url: str) -> str:
if url.startswith("http"):
return url
@@ -160,6 +171,11 @@ class ReadmeController(QtCore.QObject):
lhs, slash, _ = self.url.rpartition("/")
return lhs + slash + url
def _create_markdown_url(self, file: str) -> str:
base_url = utils.get_readme_html_url(self.addon)
lhs, slash, _ = base_url.rpartition("/")
return lhs + slash + file
class WikiCleaner(HTMLParser):
"""This HTML parser cleans up FreeCAD Macro Wiki Page for display in a