Gather and display details of licences for pip packages

CURA-12400
This commit is contained in:
Erwan MATHIEU 2025-02-17 08:51:36 +01:00
parent 7c04124719
commit 0a112c6c53
7 changed files with 218 additions and 62 deletions

View file

@ -110,6 +110,7 @@ from cura.UI.MachineActionManager import MachineActionManager
from cura.UI.AddPrinterPagesModel import AddPrinterPagesModel
from cura.UI.MachineSettingsManager import MachineSettingsManager
from cura.UI.ObjectsModel import ObjectsModel
from cura.UI.OpenSourceDependenciesModel import OpenSourceDependenciesModel
from cura.UI.RecommendedMode import RecommendedMode
from cura.UI.TextManager import TextManager
from cura.UI.WelcomePagesModel import WelcomePagesModel
@ -1308,6 +1309,7 @@ class CuraApplication(QtApplication):
qmlRegisterType(AddPrinterPagesModel, "Cura", 1, 0, "AddPrinterPagesModel")
qmlRegisterType(TextManager, "Cura", 1, 0, "TextManager")
qmlRegisterType(RecommendedMode, "Cura", 1, 0, "RecommendedMode")
qmlRegisterType(OpenSourceDependenciesModel, "Cura", 1, 0, "OpenSourceDependenciesModel")
self.processEvents()
qmlRegisterType(NetworkMJPGImage, "Cura", 1, 0, "NetworkMJPGImage")

View file

@ -0,0 +1,23 @@
# Copyright (c) 2025 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
from typing import List
from PyQt6.QtCore import QObject, pyqtProperty
from cura import CuraVersion
from .OpenSourceDependency import OpenSourceDependency
class OpenSourceDependenciesModel(QObject):
def __init__(self, parent=None):
super().__init__(parent)
self._dependencies = []
for name, data in CuraVersion.DependenciesDescriptions.items():
self._dependencies.append(OpenSourceDependency(name, data))
@pyqtProperty(list, constant=True)
def dependencies(self) -> List[OpenSourceDependency]:
return self._dependencies

View file

@ -0,0 +1,45 @@
# Copyright (c) 2025 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
from PyQt6.QtCore import QObject, pyqtProperty, pyqtEnum
class OpenSourceDependency(QObject):
def __init__(self, name, data):
super().__init__()
self._name = name
self._author = data['author'] if data['author'] is not None else ''
self._version = data['version'] if data['version'] is not None else ''
self._summary = data['summary'] if data['summary'] is not None else ''
self._license = data['license'] if data['license'] is not None and len(data['license']) > 0 else name
self._license_full = data['license_full'] if 'license_full' in data else ''
self._sources_url = data['sources_url'] if 'sources_url' in data else ''
@pyqtProperty(str, constant=True)
def name(self):
return self._name
@pyqtProperty(str, constant=True)
def author(self):
return self._author
@pyqtProperty(str, constant=True)
def version(self):
return self._version
@pyqtProperty(str, constant=True)
def summary(self):
return self._summary
@pyqtProperty(str, constant=True)
def license(self):
return self._license
@pyqtProperty(str, constant=True)
def license_full(self):
return self._license_full
@pyqtProperty(str, constant=True)
def sources_url(self):
return self._sources_url