|
@@ -17,6 +17,7 @@ class LicensePresenter(QObject):
|
|
|
|
|
|
def __init__(self, app: CuraApplication) -> None:
|
|
|
super().__init__()
|
|
|
+ self._catalog = i18nCatalog("cura")
|
|
|
self._dialog = None # type: Optional[QObject]
|
|
|
self._package_manager = app.getPackageManager() # type: PackageManager
|
|
|
# Emits List[Dict[str, [Any]] containing for example
|
|
@@ -25,7 +26,8 @@ class LicensePresenter(QObject):
|
|
|
|
|
|
self._current_package_idx = 0
|
|
|
self._package_models = [] # type: List[Dict]
|
|
|
- self._license_model = LicenseModel() # type: LicenseModel
|
|
|
+ decline_button_text = self._catalog.i18nc("@button", "Decline and remove from account")
|
|
|
+ self._license_model = LicenseModel(decline_button_text=decline_button_text) # type: LicenseModel
|
|
|
|
|
|
self._app = app
|
|
|
|
|
@@ -34,7 +36,7 @@ class LicensePresenter(QObject):
|
|
|
## Show a license dialog for multiple packages where users can read a license and accept or decline them
|
|
|
# \param plugin_path: Root directory of the Toolbox plugin
|
|
|
# \param packages: Dict[package id, file path]
|
|
|
- def present(self, plugin_path: str, packages: Dict[str, str]) -> None:
|
|
|
+ def present(self, plugin_path: str, packages: Dict[str, Dict[str, str]]) -> None:
|
|
|
path = os.path.join(plugin_path, self._compatibility_dialog_path)
|
|
|
|
|
|
self._initState(packages)
|
|
@@ -42,7 +44,7 @@ class LicensePresenter(QObject):
|
|
|
if self._dialog is None:
|
|
|
|
|
|
context_properties = {
|
|
|
- "catalog": i18nCatalog("cura"),
|
|
|
+ "catalog": self._catalog,
|
|
|
"licenseModel": self._license_model,
|
|
|
"handler": self
|
|
|
}
|
|
@@ -60,18 +62,20 @@ class LicensePresenter(QObject):
|
|
|
self._package_models[self._current_package_idx]["accepted"] = False
|
|
|
self._checkNextPage()
|
|
|
|
|
|
- def _initState(self, packages: Dict[str, str]) -> None:
|
|
|
+ def _initState(self, packages: Dict[str, Dict[str, str]]) -> None:
|
|
|
self._package_models = [
|
|
|
{
|
|
|
"package_id" : package_id,
|
|
|
- "package_path" : package_path,
|
|
|
+ "package_path" : item["package_path"],
|
|
|
+ "icon_url" : item["icon_url"],
|
|
|
"accepted" : None #: None: no answer yet
|
|
|
}
|
|
|
- for package_id, package_path in packages.items()
|
|
|
+ for package_id, item in packages.items()
|
|
|
]
|
|
|
|
|
|
def _presentCurrentPackage(self) -> None:
|
|
|
package_model = self._package_models[self._current_package_idx]
|
|
|
+ package_info = self._package_manager.getPackageInfo(package_model["package_path"])
|
|
|
license_content = self._package_manager.getPackageLicense(package_model["package_path"])
|
|
|
if license_content is None:
|
|
|
# Implicitly accept when there is no license
|
|
@@ -79,7 +83,8 @@ class LicensePresenter(QObject):
|
|
|
return
|
|
|
|
|
|
self._license_model.setCurrentPageIdx(self._current_package_idx)
|
|
|
- self._license_model.setPackageName(package_model["package_id"])
|
|
|
+ self._license_model.setPackageName(package_info["display_name"])
|
|
|
+ self._license_model.setIconUrl(package_model["icon_url"])
|
|
|
self._license_model.setLicenseText(license_content)
|
|
|
if self._dialog:
|
|
|
self._dialog.open() # Does nothing if already open
|