# Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import os from PyQt5.QtCore import QObject, pyqtSlot from UM.Extension import Extension from UM.Logger import Logger class UserAgreement(QObject, Extension): def __init__(self, application): super(UserAgreement, self).__init__() self._application = application self._user_agreement_window = None self._user_agreement_context = None self._application.engineCreatedSignal.connect(self._onEngineCreated) self._application.getPreferences().addPreference("general/accepted_user_agreement", False) def _onEngineCreated(self): if not self._application.getPreferences().getValue("general/accepted_user_agreement"): self.showUserAgreement() def showUserAgreement(self): if not self._user_agreement_window: self.createUserAgreementWindow() self._user_agreement_window.show() @pyqtSlot(bool) def didAgree(self, user_choice): if user_choice: Logger.log("i", "User agreed to the user agreement") self._application.getPreferences().setValue("general/accepted_user_agreement", True) self._user_agreement_window.hide() else: Logger.log("i", "User did NOT agree to the user agreement") self._application.getPreferences().setValue("general/accepted_user_agreement", False) self._application.quit() self._application.setNeedToShowUserAgreement(False) def createUserAgreementWindow(self): path = os.path.join(self._application.getPluginRegistry().getPluginPath(self.getPluginId()), "UserAgreement.qml") self._user_agreement_window = self._application.createQmlComponent(path, {"manager": self})