Merge branch 'master' into WIP_improve_initialization

This commit is contained in:
Lipu Fei 2018-05-28 13:37:26 +02:00 committed by GitHub
commit f395f1eebc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 42 additions and 26 deletions

View file

@ -89,7 +89,6 @@ class CuraPackageManager(QObject):
"installed": self._installed_package_dict, "installed": self._installed_package_dict,
"to_remove": list(self._to_remove_package_set), "to_remove": list(self._to_remove_package_set),
"to_install": self._to_install_package_dict} "to_install": self._to_install_package_dict}
data_dict["to_remove"] = list(data_dict["to_remove"])
json.dump(data_dict, f, sort_keys = True, indent = 4) json.dump(data_dict, f, sort_keys = True, indent = 4)
Logger.log("i", "Package management file %s was saved", self._user_package_management_file_path) Logger.log("i", "Package management file %s was saved", self._user_package_management_file_path)
@ -103,7 +102,6 @@ class CuraPackageManager(QObject):
# (for initialize) Installs all packages that have been scheduled to be installed. # (for initialize) Installs all packages that have been scheduled to be installed.
def _installAllScheduledPackages(self) -> None: def _installAllScheduledPackages(self) -> None:
while self._to_install_package_dict: while self._to_install_package_dict:
package_id, package_info = list(self._to_install_package_dict.items())[0] package_id, package_info = list(self._to_install_package_dict.items())[0]
self._installPackage(package_info) self._installPackage(package_info)
@ -111,6 +109,12 @@ class CuraPackageManager(QObject):
del self._to_install_package_dict[package_id] del self._to_install_package_dict[package_id]
self._saveManagementData() self._saveManagementData()
def getBundledPackageInfo(self, package_id: str) -> Optional[dict]:
package_info = None
if package_id in self._bundled_package_dict:
package_info = self._bundled_package_dict[package_id]["package_info"]
return package_info
# Checks the given package is installed. If so, return a dictionary that contains the package's information. # Checks the given package is installed. If so, return a dictionary that contains the package's information.
def getInstalledPackageInfo(self, package_id: str) -> Optional[dict]: def getInstalledPackageInfo(self, package_id: str) -> Optional[dict]:
if package_id in self._to_remove_package_set: if package_id in self._to_remove_package_set:

View file

@ -66,6 +66,7 @@ class PrintInformation(QObject):
self._backend.printDurationMessage.connect(self._onPrintDurationMessage) self._backend.printDurationMessage.connect(self._onPrintDurationMessage)
self._application.getController().getScene().sceneChanged.connect(self._onSceneChanged) self._application.getController().getScene().sceneChanged.connect(self._onSceneChanged)
self._is_user_specified_job_name = False
self._base_name = "" self._base_name = ""
self._abbr_machine = "" self._abbr_machine = ""
self._job_name = "" self._job_name = ""
@ -281,10 +282,13 @@ class PrintInformation(QObject):
# Manual override of job name should also set the base name so that when the printer prefix is updated, it the # Manual override of job name should also set the base name so that when the printer prefix is updated, it the
# prefix can be added to the manually added name, not the old base name # prefix can be added to the manually added name, not the old base name
@pyqtSlot(str) @pyqtSlot(str, bool)
def setJobName(self, name): def setJobName(self, name, is_user_specified_job_name = False):
self._is_user_specified_job_name = is_user_specified_job_name
self._job_name = name self._job_name = name
self._base_name = name.replace(self._abbr_machine + "_", "") self._base_name = name.replace(self._abbr_machine + "_", "")
if name == "":
self._is_user_specified_job_name = False
self.jobNameChanged.emit() self.jobNameChanged.emit()
jobNameChanged = pyqtSignal() jobNameChanged = pyqtSignal()
@ -296,21 +300,25 @@ class PrintInformation(QObject):
def _updateJobName(self): def _updateJobName(self):
if self._base_name == "": if self._base_name == "":
self._job_name = "" self._job_name = ""
self._is_user_specified_job_name = False
self.jobNameChanged.emit() self.jobNameChanged.emit()
return return
base_name = self._stripAccents(self._base_name) base_name = self._stripAccents(self._base_name)
self._setAbbreviatedMachineName() self._setAbbreviatedMachineName()
if self._pre_sliced:
self._job_name = catalog.i18nc("@label", "Pre-sliced file {0}", base_name) # Only update the job name when it's not user-specified.
elif self._application.getInstance().getPreferences().getValue("cura/jobname_prefix"): if not self._is_user_specified_job_name:
# Don't add abbreviation if it already has the exact same abbreviation. if self._pre_sliced:
if base_name.startswith(self._abbr_machine + "_"): self._job_name = catalog.i18nc("@label", "Pre-sliced file {0}", base_name)
self._job_name = base_name elif self._application.getInstance().getPreferences().getValue("cura/jobname_prefix"):
# Don't add abbreviation if it already has the exact same abbreviation.
if base_name.startswith(self._abbr_machine + "_"):
self._job_name = base_name
else:
self._job_name = self._abbr_machine + "_" + base_name
else: else:
self._job_name = self._abbr_machine + "_" + base_name self._job_name = base_name
else:
self._job_name = base_name
self.jobNameChanged.emit() self.jobNameChanged.emit()

View file

@ -250,8 +250,6 @@ class Toolbox(QObject, Extension):
if remote_package: if remote_package:
download_url = remote_package["download_url"] download_url = remote_package["download_url"]
Logger.log("d", "Updating package [%s]..." % plugin_id) Logger.log("d", "Updating package [%s]..." % plugin_id)
if self._package_manager.isUserInstalledPackage(plugin_id):
self.uninstall(plugin_id)
self.startDownload(download_url) self.startDownload(download_url)
else: else:
Logger.log("e", "Could not update package [%s] because there is no remote package info available.", plugin_id) Logger.log("e", "Could not update package [%s] because there is no remote package info available.", plugin_id)
@ -318,19 +316,21 @@ class Toolbox(QObject, Extension):
remote_version = Version(remote_package["package_version"]) remote_version = Version(remote_package["package_version"])
return remote_version > local_version return remote_version > local_version
@pyqtSlot(str, result=bool) @pyqtSlot(str, result = bool)
def canDowngrade(self, package_id: str) -> bool: def canDowngrade(self, package_id: str) -> bool:
# If the currently installed version is higher than the bundled version (if present), the we can downgrade
# this package.
local_package = self._package_manager.getInstalledPackageInfo(package_id) local_package = self._package_manager.getInstalledPackageInfo(package_id)
if local_package is None: if local_package is None:
return False return False
remote_package = self.getRemotePackage(package_id) bundled_package = self._package_manager.getBundledPackageInfo(package_id)
if remote_package is None: if bundled_package is None:
return False return False
local_version = Version(local_package["package_version"]) local_version = Version(local_package["package_version"])
remote_version = Version(remote_package["package_version"]) bundled_version = Version(bundled_package["package_version"])
return remote_version < local_version return bundled_version < local_version
@pyqtSlot(str, result = bool) @pyqtSlot(str, result = bool)
def isInstalled(self, package_id: str) -> bool: def isInstalled(self, package_id: str) -> bool:

View file

@ -379,13 +379,14 @@ class USBPrinterOutputDevice(PrinterOutputDevice):
def resumePrint(self): def resumePrint(self):
self._paused = False self._paused = False
self._sendNextGcodeLine() #Send one line of g-code next so that we'll trigger an "ok" response loop even if we're not polling temperatures.
def cancelPrint(self): def cancelPrint(self):
self._gcode_position = 0 self._gcode_position = 0
self._gcode.clear() self._gcode.clear()
self._printers[0].updateActivePrintJob(None) self._printers[0].updateActivePrintJob(None)
self._is_printing = False self._is_printing = False
self._is_paused = False self._paused = False
# Turn off temperatures, fan and steppers # Turn off temperatures, fan and steppers
self._sendCommand("M140 S0") self._sendCommand("M140 S0")

View file

@ -21,7 +21,7 @@ def getMetaData():
}, },
"quality_changes": { "quality_changes": {
"get_version": upgrade.getCfgVersion, "get_version": upgrade.getCfgVersion,
"location": {"./quality"} "location": {"./quality_changes"}
}, },
"user": { "user": {
"get_version": upgrade.getCfgVersion, "get_version": upgrade.getCfgVersion,

View file

@ -1,4 +1,4 @@
# Copyright (c) 2017 Ultimaker B.V. # Copyright (c) 2018 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher. # Cura is released under the terms of the LGPLv3 or higher.
import copy import copy
@ -12,10 +12,10 @@ import xml.etree.ElementTree as ET
from UM.Resources import Resources from UM.Resources import Resources
from UM.Logger import Logger from UM.Logger import Logger
from cura.CuraApplication import CuraApplication from cura.CuraApplication import CuraApplication
import UM.Dictionary import UM.Dictionary
from UM.Settings.InstanceContainer import InstanceContainer from UM.Settings.InstanceContainer import InstanceContainer
from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Settings.ContainerRegistry import ContainerRegistry
from UM.ConfigurationErrorMessage import ConfigurationErrorMessage
from .XmlMaterialValidator import XmlMaterialValidator from .XmlMaterialValidator import XmlMaterialValidator
@ -540,7 +540,9 @@ class XmlMaterialProfile(InstanceContainer):
validation_message = XmlMaterialValidator.validateMaterialMetaData(meta_data) validation_message = XmlMaterialValidator.validateMaterialMetaData(meta_data)
if validation_message is not None: if validation_message is not None:
raise Exception("Not valid material profile: %s" % (validation_message)) ConfigurationErrorMessage.getInstance().addFaultyContainers(self.getId())
Logger.log("e", "Not a valid material profile: {message}".format(message = validation_message))
return
property_values = {} property_values = {}
properties = data.iterfind("./um:properties/*", self.__namespaces) properties = data.iterfind("./um:properties/*", self.__namespaces)

View file

@ -7,6 +7,7 @@
"visible": true, "visible": true,
"author": "Ruben Dulek", "author": "Ruben Dulek",
"manufacturer": "Malyan", "manufacturer": "Malyan",
"machine_x3g_variant": "r1d",
"file_formats": "application/x3g" "file_formats": "application/x3g"
}, },

View file

@ -81,7 +81,7 @@ Item {
text: PrintInformation.jobName text: PrintInformation.jobName
horizontalAlignment: TextInput.AlignRight horizontalAlignment: TextInput.AlignRight
onTextChanged: { onTextChanged: {
PrintInformation.setJobName(text); PrintInformation.setJobName(text, true);
} }
onEditingFinished: { onEditingFinished: {
if (printJobTextfield.text != ''){ if (printJobTextfield.text != ''){