From e824996af7d468032d8410d7a0ab58c5d6e3f724 Mon Sep 17 00:00:00 2001 From: daid Date: Fri, 6 Oct 2017 15:44:10 +0200 Subject: [PATCH 1/8] Fix the OpenGL shader for older (legacy?) OpenGL. As the grid shader was no longer working. --- resources/shaders/grid.shader | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/shaders/grid.shader b/resources/shaders/grid.shader index ca1e56e060..07cb1a01a6 100644 --- a/resources/shaders/grid.shader +++ b/resources/shaders/grid.shader @@ -31,10 +31,10 @@ fragment = vec4 minorGridColor = mix(u_plateColor, u_gridColor1, 1.0 - min(minorLine, 1.0)); // Compute anti-aliased world-space major grid lines - vec2 majorGrid = abs(fract(coord / 10 - 0.5) - 0.5) / fwidth(coord / 10); + vec2 majorGrid = abs(fract(coord / 10.0 - 0.5) - 0.5) / fwidth(coord / 10.0); float majorLine = min(majorGrid.x, majorGrid.y); - frag_color = mix(minorGridColor, u_gridColor0, 1.0 - min(majorLine, 1.0)); + gl_FragColor = mix(minorGridColor, u_gridColor0, 1.0 - min(majorLine, 1.0)); } vertex41core = @@ -72,7 +72,7 @@ fragment41core = vec4 minorGridColor = mix(u_plateColor, u_gridColor1, 1.0 - min(minorLine, 1.0)); // Compute anti-aliased world-space major grid lines - vec2 majorGrid = abs(fract(coord / 10 - 0.5) - 0.5) / fwidth(coord / 10); + vec2 majorGrid = abs(fract(coord / 10.0 - 0.5) - 0.5) / fwidth(coord / 10.0); float majorLine = min(majorGrid.x, majorGrid.y); frag_color = mix(minorGridColor, u_gridColor0, 1.0 - min(majorLine, 1.0)); From b45e44b3880c9cbc085eaa224fd620970f345966 Mon Sep 17 00:00:00 2001 From: Mark Date: Sat, 28 Oct 2017 15:43:01 +0200 Subject: [PATCH 2/8] Add useragreement screen on first run of Cura CURA-4501 --- cura/CuraApplication.py | 1 + plugins/UserAgreementPlugin/UserAgreement.py | 50 +++++++++++++++ plugins/UserAgreementPlugin/UserAgreement.qml | 61 +++++++++++++++++++ plugins/UserAgreementPlugin/__init__.py | 10 +++ plugins/UserAgreementPlugin/plugin.json | 8 +++ 5 files changed, 130 insertions(+) create mode 100644 plugins/UserAgreementPlugin/UserAgreement.py create mode 100644 plugins/UserAgreementPlugin/UserAgreement.qml create mode 100644 plugins/UserAgreementPlugin/__init__.py create mode 100644 plugins/UserAgreementPlugin/plugin.json diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 7d3e851b70..4a54f5b0ba 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -211,6 +211,7 @@ class CuraApplication(QtApplication): self.setRequiredPlugins([ "CuraEngineBackend", + "UserAgreement", "SolidView", "LayerView", "STLReader", diff --git a/plugins/UserAgreementPlugin/UserAgreement.py b/plugins/UserAgreementPlugin/UserAgreement.py new file mode 100644 index 0000000000..148b1adecc --- /dev/null +++ b/plugins/UserAgreementPlugin/UserAgreement.py @@ -0,0 +1,50 @@ +# Copyright (c) 2015 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from UM.Extension import Extension +from UM.Preferences import Preferences +from UM.Application import Application +from UM.PluginRegistry import PluginRegistry +from UM.Logger import Logger + +from PyQt5.QtQml import QQmlComponent, QQmlContext +from PyQt5.QtCore import QUrl, QObject, pyqtSlot + +import os.path + +class UserAgreement(Extension, QObject): + def __init__(self, parent = None): + QObject.__init__(self, parent) + Extension.__init__(self) + self._user_agreement_window = None + self._user_agreement_context = None + Application.getInstance().engineCreatedSignal.connect(self._onEngineCreated) + Preferences.getInstance().addPreference("general/accepted_user_agreement", False) + + def _onEngineCreated(self): + if not Preferences.getInstance().getValue("general/accepted_user_agreement"): + self.showUserAgreement() + + def showUserAgreement(self): + if not self._user_agreement_window: + self.createUserAgreementWindow() + + self._user_agreement_window.show() + + @pyqtSlot() + def disagreed(self): + Logger.log("i", "User did NOT Accept the license") + + @pyqtSlot() + def agreed(self): + Logger.log("i", "User Accepted the license") + Preferences.getInstance().setValue("general/accepted_user_agreement", True) + self._user_agreement_window.hide() + + def createUserAgreementWindow(self): + path = QUrl.fromLocalFile(os.path.join(PluginRegistry.getInstance().getPluginPath(self.getPluginId()), "UserAgreement.qml")) + + component = QQmlComponent(Application.getInstance()._engine, path) + self._user_agreement_context = QQmlContext(Application.getInstance()._engine.rootContext()) + self._user_agreement_context.setContextProperty("manager", self) + self._user_agreement_window = component.create(self._user_agreement_context) diff --git a/plugins/UserAgreementPlugin/UserAgreement.qml b/plugins/UserAgreementPlugin/UserAgreement.qml new file mode 100644 index 0000000000..20b4350acf --- /dev/null +++ b/plugins/UserAgreementPlugin/UserAgreement.qml @@ -0,0 +1,61 @@ +// Copyright (c) 2015 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.1 +import QtQuick.Controls 1.3 +import QtQuick.Layouts 1.1 +import QtQuick.Window 2.1 + +import UM 1.1 as UM + +UM.Dialog +{ + id: baseDialog + minimumWidth: Math.floor(UM.Theme.getSize("modal_window_minimum").width * 0.75) + minimumHeight: Math.floor(UM.Theme.getSize("modal_window_minimum").height * 0.5) + width: minimumWidth + height: minimumHeight + title: "User Agreement" + + TextArea + { + anchors.top: parent.top + width: parent.width + anchors.bottom: buttonRow.top + text: '

DISCLAIMER BY ULTIMAKER

+

PLEASE READ THIS DISCLAIMER CAREFULLY.

+

EXCEPT WHEN OTHERWISE STATED IN WRITING, ULTIMAKER PROVIDES ANY ULTIMAKER SOFTWARE OR THIRD PARTY SOFTWARE “AS IS” WITHOUT WARRANTY OF ANY KIND. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF ULTIMAKER SOFTWARE IS WITH YOU.

+

UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING, IN NO EVENT WILL ULTIMAKER BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE ANY ULTIMAKER SOFTWARE OR THIRD PARTY SOFTWARE.

+ ' + readOnly: true; + textFormat: TextEdit.RichText + } + + Item + { + id: buttonRow + anchors.bottom: parent.bottom + width: parent.width + anchors.bottomMargin: UM.Theme.getSize("default_margin").height + + Button + { + anchors.right: parent.right + text: "I understand and agree" + onClicked: { + manager.agreed + } + } + + Button + { + anchors.left: parent.left + text: "I don't agree" + onClicked: { + manager.disagreed + } + } + + } + +} diff --git a/plugins/UserAgreementPlugin/__init__.py b/plugins/UserAgreementPlugin/__init__.py new file mode 100644 index 0000000000..635f8a6bc9 --- /dev/null +++ b/plugins/UserAgreementPlugin/__init__.py @@ -0,0 +1,10 @@ +# Copyright (c) 2015 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from . import UserAgreement + +def getMetaData(): + return {} + +def register(app): + return {"extension": UserAgreement.UserAgreement()} diff --git a/plugins/UserAgreementPlugin/plugin.json b/plugins/UserAgreementPlugin/plugin.json new file mode 100644 index 0000000000..aa5dbb1258 --- /dev/null +++ b/plugins/UserAgreementPlugin/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "UserAgreement", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Ask the user once if he/she agrees with our license", + "api": 4, + "i18n-catalog": "cura" +} From 9aebb395ab60ae41a870ab71cbf71b7a4f7f4f93 Mon Sep 17 00:00:00 2001 From: Mark Date: Sat, 28 Oct 2017 20:29:26 +0200 Subject: [PATCH 3/8] Refactor and cleanup CURA-4501 --- plugins/UserAgreementPlugin/UserAgreement.py | 22 +++++++++++-------- plugins/UserAgreementPlugin/UserAgreement.qml | 15 ++++++++----- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/plugins/UserAgreementPlugin/UserAgreement.py b/plugins/UserAgreementPlugin/UserAgreement.py index 148b1adecc..c565399735 100644 --- a/plugins/UserAgreementPlugin/UserAgreement.py +++ b/plugins/UserAgreementPlugin/UserAgreement.py @@ -7,6 +7,8 @@ from UM.Application import Application from UM.PluginRegistry import PluginRegistry from UM.Logger import Logger +from cura.CuraApplication import CuraApplication + from PyQt5.QtQml import QQmlComponent, QQmlContext from PyQt5.QtCore import QUrl, QObject, pyqtSlot @@ -31,15 +33,17 @@ class UserAgreement(Extension, QObject): self._user_agreement_window.show() - @pyqtSlot() - def disagreed(self): - Logger.log("i", "User did NOT Accept the license") + @pyqtSlot(bool) + def didAgree(self, userChoice): + if userChoice: + Logger.log("i", 'User agreed to the user agreement') + Preferences.getInstance().setValue("general/accepted_user_agreement", True) + self._user_agreement_window.hide() + else: + Logger.log("i", 'User did NOT agree to the user agreement') + Preferences.getInstance().setValue("general/accepted_user_agreement", False) + CuraApplication.getInstance().quit() - @pyqtSlot() - def agreed(self): - Logger.log("i", "User Accepted the license") - Preferences.getInstance().setValue("general/accepted_user_agreement", True) - self._user_agreement_window.hide() def createUserAgreementWindow(self): path = QUrl.fromLocalFile(os.path.join(PluginRegistry.getInstance().getPluginPath(self.getPluginId()), "UserAgreement.qml")) @@ -47,4 +51,4 @@ class UserAgreement(Extension, QObject): component = QQmlComponent(Application.getInstance()._engine, path) self._user_agreement_context = QQmlContext(Application.getInstance()._engine.rootContext()) self._user_agreement_context.setContextProperty("manager", self) - self._user_agreement_window = component.create(self._user_agreement_context) + self._user_agreement_window = component.create(self._user_agreement_context) \ No newline at end of file diff --git a/plugins/UserAgreementPlugin/UserAgreement.qml b/plugins/UserAgreementPlugin/UserAgreement.qml index 20b4350acf..a2dd34e23f 100644 --- a/plugins/UserAgreementPlugin/UserAgreement.qml +++ b/plugins/UserAgreementPlugin/UserAgreement.qml @@ -1,12 +1,10 @@ // Copyright (c) 2015 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.1 +import QtQuick 2.2 import QtQuick.Controls 1.3 -import QtQuick.Layouts 1.1 -import QtQuick.Window 2.1 -import UM 1.1 as UM +import UM 1.3 as UM UM.Dialog { @@ -43,7 +41,7 @@ UM.Dialog anchors.right: parent.right text: "I understand and agree" onClicked: { - manager.agreed + manager.didAgree(true) } } @@ -52,10 +50,15 @@ UM.Dialog anchors.left: parent.left text: "I don't agree" onClicked: { - manager.disagreed + manager.didAgree(false) } } } + onClosing: { + manager.didAgree(false) + } + + } From ca8127c047205fd3ed6fc4d3bc214cfc5ed81151 Mon Sep 17 00:00:00 2001 From: Mark Date: Sun, 29 Oct 2017 09:04:23 +0100 Subject: [PATCH 4/8] Fixed code comments CURA-4501 --- plugins/UserAgreementPlugin/UserAgreement.py | 11 +++++------ plugins/UserAgreementPlugin/UserAgreement.qml | 14 +++++++------- plugins/UserAgreementPlugin/__init__.py | 2 +- resources/i18n/cura.pot | 15 +++++++++++++++ 4 files changed, 28 insertions(+), 14 deletions(-) diff --git a/plugins/UserAgreementPlugin/UserAgreement.py b/plugins/UserAgreementPlugin/UserAgreement.py index c565399735..5b6b266444 100644 --- a/plugins/UserAgreementPlugin/UserAgreement.py +++ b/plugins/UserAgreementPlugin/UserAgreement.py @@ -1,4 +1,4 @@ -# Copyright (c) 2015 Ultimaker B.V. +# Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from UM.Extension import Extension @@ -14,10 +14,9 @@ from PyQt5.QtCore import QUrl, QObject, pyqtSlot import os.path -class UserAgreement(Extension, QObject): +class UserAgreement(QObject, Extension): def __init__(self, parent = None): - QObject.__init__(self, parent) - Extension.__init__(self) + super(UserAgreement, self).__init__() self._user_agreement_window = None self._user_agreement_context = None Application.getInstance().engineCreatedSignal.connect(self._onEngineCreated) @@ -36,11 +35,11 @@ class UserAgreement(Extension, QObject): @pyqtSlot(bool) def didAgree(self, userChoice): if userChoice: - Logger.log("i", 'User agreed to the user agreement') + Logger.log('i', 'User agreed to the user agreement') Preferences.getInstance().setValue("general/accepted_user_agreement", True) self._user_agreement_window.hide() else: - Logger.log("i", 'User did NOT agree to the user agreement') + Logger.log('i', 'User did NOT agree to the user agreement') Preferences.getInstance().setValue("general/accepted_user_agreement", False) CuraApplication.getInstance().quit() diff --git a/plugins/UserAgreementPlugin/UserAgreement.qml b/plugins/UserAgreementPlugin/UserAgreement.qml index a2dd34e23f..52d35a4f44 100644 --- a/plugins/UserAgreementPlugin/UserAgreement.qml +++ b/plugins/UserAgreementPlugin/UserAgreement.qml @@ -1,8 +1,8 @@ -// Copyright (c) 2015 Ultimaker B.V. +// Copyright (c) 2017 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 -import QtQuick.Controls 1.3 +import QtQuick.Controls 1.4 import UM 1.3 as UM @@ -13,7 +13,7 @@ UM.Dialog minimumHeight: Math.floor(UM.Theme.getSize("modal_window_minimum").height * 0.5) width: minimumWidth height: minimumHeight - title: "User Agreement" + title: catalog.i18nc("@title:window", "User Agreement") TextArea { @@ -36,10 +36,12 @@ UM.Dialog width: parent.width anchors.bottomMargin: UM.Theme.getSize("default_margin").height + UM.I18nCatalog { id: catalog; name:"cura" } + Button { anchors.right: parent.right - text: "I understand and agree" + text: catalog.i18nc("@action:button", "I understand and agree") onClicked: { manager.didAgree(true) } @@ -48,7 +50,7 @@ UM.Dialog Button { anchors.left: parent.left - text: "I don't agree" + text: catalog.i18nc("@action:button", "I don't agree") onClicked: { manager.didAgree(false) } @@ -59,6 +61,4 @@ UM.Dialog onClosing: { manager.didAgree(false) } - - } diff --git a/plugins/UserAgreementPlugin/__init__.py b/plugins/UserAgreementPlugin/__init__.py index 635f8a6bc9..88cb151f9e 100644 --- a/plugins/UserAgreementPlugin/__init__.py +++ b/plugins/UserAgreementPlugin/__init__.py @@ -1,4 +1,4 @@ -# Copyright (c) 2015 Ultimaker B.V. +# Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from . import UserAgreement diff --git a/resources/i18n/cura.pot b/resources/i18n/cura.pot index fb4b9ed0d6..99ccd7a459 100644 --- a/resources/i18n/cura.pot +++ b/resources/i18n/cura.pot @@ -18,6 +18,21 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" +#Manually added for plugins/UserAgreementPlugin/UserAgreement.qml +msgctxt "@title:window" +msgid "User Agreement" +msgstr "" + +#Manually added for plugins/UserAgreementPlugin/UserAgreement.qml +msgctxt "@action:button" +msgid "I understand and agree" +msgstr "" + +#Manually added for plugins/UserAgreementPlugin/UserAgreement.qml +msgctxt "@action:button" +msgid "I don't agree" +msgstr "" + #: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml msgctxt "@label:status" msgid "Print aborted" From b5904cd2396e698dcd318c33d63db759bb111c35 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 30 Oct 2017 10:32:45 +0100 Subject: [PATCH 5/8] Fix code style CURA-4501 --- plugins/UserAgreementPlugin/UserAgreement.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/UserAgreementPlugin/UserAgreement.py b/plugins/UserAgreementPlugin/UserAgreement.py index 5b6b266444..cfad13dfae 100644 --- a/plugins/UserAgreementPlugin/UserAgreement.py +++ b/plugins/UserAgreementPlugin/UserAgreement.py @@ -35,11 +35,11 @@ class UserAgreement(QObject, Extension): @pyqtSlot(bool) def didAgree(self, userChoice): if userChoice: - Logger.log('i', 'User agreed to the user agreement') + Logger.log("i", "User agreed to the user agreement") Preferences.getInstance().setValue("general/accepted_user_agreement", True) self._user_agreement_window.hide() else: - Logger.log('i', 'User did NOT agree to the user agreement') + Logger.log("i", "User did NOT agree to the user agreement") Preferences.getInstance().setValue("general/accepted_user_agreement", False) CuraApplication.getInstance().quit() From aab601927c605b15c61beaf3c377ed19360f1d2b Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 30 Oct 2017 10:33:49 +0100 Subject: [PATCH 6/8] Show Add Machine dialog after User Agreement dialog is closed CURA-4501 --- cura/CuraApplication.py | 19 +++++++++++++++++++ plugins/UserAgreementPlugin/UserAgreement.py | 4 ++-- resources/qml/Cura.qml | 5 +++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 4a54f5b0ba..96d8ced7a6 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -300,6 +300,9 @@ class CuraApplication(QtApplication): preferences.addPreference("view/invert_zoom", False) + self._need_to_show_user_agreement = not Preferences.getInstance().getValue("general/accepted_user_agreement") + self._has_user_agreement_shown = False + for key in [ "dialog_load_path", # dialog_save_path is in LocalFileOutputDevicePlugin "dialog_profile_path", @@ -372,6 +375,22 @@ class CuraApplication(QtApplication): def _onEngineCreated(self): self._engine.addImageProvider("camera", CameraImageProvider.CameraImageProvider()) + onHasUserAgreementShownChanged = pyqtSignal() + + @pyqtProperty(bool) + def needToShowUserAgreement(self): + return self._need_to_show_user_agreement + + @pyqtProperty(bool, notify = onHasUserAgreementShownChanged) + def hasUserAgreementShown(self): + return self._has_user_agreement_shown + + def setHasShownUserAgreement(self, shown = True): + emit_signal = self._has_user_agreement_shown != shown + self._has_user_agreement_shown = shown + if emit_signal: + self.onHasUserAgreementShownChanged.emit() + ## The "Quit" button click event handler. @pyqtSlot() def closeApplication(self): diff --git a/plugins/UserAgreementPlugin/UserAgreement.py b/plugins/UserAgreementPlugin/UserAgreement.py index cfad13dfae..01788f7b57 100644 --- a/plugins/UserAgreementPlugin/UserAgreement.py +++ b/plugins/UserAgreementPlugin/UserAgreement.py @@ -42,7 +42,7 @@ class UserAgreement(QObject, Extension): Logger.log("i", "User did NOT agree to the user agreement") Preferences.getInstance().setValue("general/accepted_user_agreement", False) CuraApplication.getInstance().quit() - + CuraApplication.getInstance().setHasShownUserAgreement(True) def createUserAgreementWindow(self): path = QUrl.fromLocalFile(os.path.join(PluginRegistry.getInstance().getPluginPath(self.getPluginId()), "UserAgreement.qml")) @@ -50,4 +50,4 @@ class UserAgreement(QObject, Extension): component = QQmlComponent(Application.getInstance()._engine, path) self._user_agreement_context = QQmlContext(Application.getInstance()._engine.rootContext()) self._user_agreement_context.setContextProperty("manager", self) - self._user_agreement_window = component.create(self._user_agreement_context) \ No newline at end of file + self._user_agreement_window = component.create(self._user_agreement_context) diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index cb0211f29f..8439d79d21 100755 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -894,6 +894,11 @@ UM.MainWindow if(!base.visible) { base.visible = true; + } + + // check later if the user agreement dialog has been closed + if (CuraApplication.needToShowUserAgreement && !CuraApplication.hasUserAgreementShown) + { restart(); } else if(Cura.MachineManager.activeMachineId == null || Cura.MachineManager.activeMachineId == "") From 7f02ddd6e9bab1e1db3230eaafc75ca484bf8883 Mon Sep 17 00:00:00 2001 From: Aleksei S Date: Mon, 30 Oct 2017 14:42:46 +0100 Subject: [PATCH 7/8] Simplified version for validation need to show user agreement CURA-4501 --- cura/CuraApplication.py | 13 ++----------- plugins/UserAgreementPlugin/UserAgreement.py | 2 +- resources/qml/Cura.qml | 2 +- 3 files changed, 4 insertions(+), 13 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 96d8ced7a6..6c90e704e9 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -301,7 +301,6 @@ class CuraApplication(QtApplication): preferences.addPreference("view/invert_zoom", False) self._need_to_show_user_agreement = not Preferences.getInstance().getValue("general/accepted_user_agreement") - self._has_user_agreement_shown = False for key in [ "dialog_load_path", # dialog_save_path is in LocalFileOutputDevicePlugin @@ -375,21 +374,13 @@ class CuraApplication(QtApplication): def _onEngineCreated(self): self._engine.addImageProvider("camera", CameraImageProvider.CameraImageProvider()) - onHasUserAgreementShownChanged = pyqtSignal() - @pyqtProperty(bool) def needToShowUserAgreement(self): return self._need_to_show_user_agreement - @pyqtProperty(bool, notify = onHasUserAgreementShownChanged) - def hasUserAgreementShown(self): - return self._has_user_agreement_shown - def setHasShownUserAgreement(self, shown = True): - emit_signal = self._has_user_agreement_shown != shown - self._has_user_agreement_shown = shown - if emit_signal: - self.onHasUserAgreementShownChanged.emit() + def setNeedToShowUserAgreement(self, set_value = True): + self._need_to_show_user_agreement = set_value ## The "Quit" button click event handler. @pyqtSlot() diff --git a/plugins/UserAgreementPlugin/UserAgreement.py b/plugins/UserAgreementPlugin/UserAgreement.py index 01788f7b57..f472b6fb13 100644 --- a/plugins/UserAgreementPlugin/UserAgreement.py +++ b/plugins/UserAgreementPlugin/UserAgreement.py @@ -42,7 +42,7 @@ class UserAgreement(QObject, Extension): Logger.log("i", "User did NOT agree to the user agreement") Preferences.getInstance().setValue("general/accepted_user_agreement", False) CuraApplication.getInstance().quit() - CuraApplication.getInstance().setHasShownUserAgreement(True) + CuraApplication.getInstance().setNeedToShowUserAgreement(False) def createUserAgreementWindow(self): path = QUrl.fromLocalFile(os.path.join(PluginRegistry.getInstance().getPluginPath(self.getPluginId()), "UserAgreement.qml")) diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 8439d79d21..2fd19a8a03 100755 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -897,7 +897,7 @@ UM.MainWindow } // check later if the user agreement dialog has been closed - if (CuraApplication.needToShowUserAgreement && !CuraApplication.hasUserAgreementShown) + if (CuraApplication.needToShowUserAgreement) { restart(); } From d7b05836403ac79f890f0c3525d3089dd51631c8 Mon Sep 17 00:00:00 2001 From: Andreea Scorojitu Date: Tue, 31 Oct 2017 09:52:30 +0100 Subject: [PATCH 8/8] Update changelog to the current 3.0.4 version --- plugins/ChangeLogPlugin/ChangeLog.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/plugins/ChangeLogPlugin/ChangeLog.txt b/plugins/ChangeLogPlugin/ChangeLog.txt index 25880a66e4..63d9b83495 100755 --- a/plugins/ChangeLogPlugin/ChangeLog.txt +++ b/plugins/ChangeLogPlugin/ChangeLog.txt @@ -1,3 +1,12 @@ +[3.0.4] +*Bug fixes +- Fixed OpenGL issue that prevent Cura from starting. + +*License agreement on the first startup has been added + +[3.0.3] +*Bug fixes for the MakePrintable plugin. + [3.0.0] *Faster start-up Start-up speed has been cut in half compared to the previous version.