LicenseModel.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal
  2. from UM.i18n import i18nCatalog
  3. catalog = i18nCatalog("cura")
  4. # Model for the ToolboxLicenseDialog
  5. class LicenseModel(QObject):
  6. DEFAULT_DECLINE_BUTTON_TEXT = catalog.i18nc("@button", "Decline")
  7. ACCEPT_BUTTON_TEXT = catalog.i18nc("@button", "Agree")
  8. dialogTitleChanged = pyqtSignal()
  9. packageNameChanged = pyqtSignal()
  10. licenseTextChanged = pyqtSignal()
  11. iconChanged = pyqtSignal()
  12. def __init__(self, decline_button_text: str = DEFAULT_DECLINE_BUTTON_TEXT) -> None:
  13. super().__init__()
  14. self._current_page_idx = 0
  15. self._page_count = 1
  16. self._dialogTitle = ""
  17. self._license_text = ""
  18. self._package_name = ""
  19. self._icon_url = ""
  20. self._decline_button_text = decline_button_text
  21. @pyqtProperty(str, constant = True)
  22. def acceptButtonText(self):
  23. return self.ACCEPT_BUTTON_TEXT
  24. @pyqtProperty(str, constant = True)
  25. def declineButtonText(self):
  26. return self._decline_button_text
  27. @pyqtProperty(str, notify=dialogTitleChanged)
  28. def dialogTitle(self) -> str:
  29. return self._dialogTitle
  30. @pyqtProperty(str, notify=packageNameChanged)
  31. def packageName(self) -> str:
  32. return self._package_name
  33. def setPackageName(self, name: str) -> None:
  34. self._package_name = name
  35. self.packageNameChanged.emit()
  36. @pyqtProperty(str, notify=iconChanged)
  37. def iconUrl(self) -> str:
  38. return self._icon_url
  39. def setIconUrl(self, url: str):
  40. self._icon_url = url
  41. self.iconChanged.emit()
  42. @pyqtProperty(str, notify=licenseTextChanged)
  43. def licenseText(self) -> str:
  44. return self._license_text
  45. def setLicenseText(self, license_text: str) -> None:
  46. if self._license_text != license_text:
  47. self._license_text = license_text
  48. self.licenseTextChanged.emit()
  49. def setCurrentPageIdx(self, idx: int) -> None:
  50. self._current_page_idx = idx
  51. self._updateDialogTitle()
  52. def setPageCount(self, count: int) -> None:
  53. self._page_count = count
  54. self._updateDialogTitle()
  55. def _updateDialogTitle(self):
  56. self._dialogTitle = catalog.i18nc("@title:window", "Plugin License Agreement")
  57. if self._page_count > 1:
  58. self._dialogTitle = self._dialogTitle + " ({}/{})".format(self._current_page_idx + 1, self._page_count)
  59. self.dialogTitleChanged.emit()