diff --git a/cura/Settings/QualityAndUserProfilesModel.py b/cura/Settings/QualityAndUserProfilesModel.py index f2728aff14..602f8768da 100644 --- a/cura/Settings/QualityAndUserProfilesModel.py +++ b/cura/Settings/QualityAndUserProfilesModel.py @@ -41,6 +41,9 @@ class QualityAndUserProfilesModel(ProfilesModel): new_extruder_stacks = [] if active_extruder is not None: new_extruder_stacks = [active_extruder] + else: + # if there is no active extruder, use the first one in the active extruder stacks + active_extruder = extruder_stacks[0] extruder_stacks = new_extruder_stacks + extruder_stacks # Fetch the list of useable qualities across all extruders. diff --git a/cura/Settings/UserProfilesModel.py b/cura/Settings/UserProfilesModel.py index 587e27f359..aa815ef4aa 100644 --- a/cura/Settings/UserProfilesModel.py +++ b/cura/Settings/UserProfilesModel.py @@ -41,6 +41,9 @@ class UserProfilesModel(ProfilesModel): new_extruder_stacks = [] if active_extruder is not None: new_extruder_stacks = [active_extruder] + else: + # if there is no active extruder, use the first one in the active extruder stacks + active_extruder = extruder_stacks[0] extruder_stacks = new_extruder_stacks + extruder_stacks # Fetch the list of useable qualities across all extruders. @@ -55,8 +58,8 @@ class UserProfilesModel(ProfilesModel): # If the printer has multiple extruders then quality changes related to the current extruder are kept filtered_quality_changes = [qc for qc in quality_changes_list if qc.getMetaDataEntry("quality_type") in quality_type_set and qc.getMetaDataEntry("extruder") is not None and - qc.getMetaDataEntry("extruder") == active_extruder.definition.getMetaDataEntry("quality_definition") or - qc.getMetaDataEntry("extruder") == active_extruder.definition.getId()] + (qc.getMetaDataEntry("extruder") == active_extruder.definition.getMetaDataEntry("quality_definition") or + qc.getMetaDataEntry("extruder") == active_extruder.definition.getId())] else: # If not, the quality changes of the global stack are selected filtered_quality_changes = [qc for qc in quality_changes_list if qc.getMetaDataEntry("quality_type") in quality_type_set and diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 6acccbb1bc..7c803486eb 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -276,8 +276,8 @@ class WorkspaceDialog(QObject): def hide(self): self._visible = False - self._lock.release() self._view.hide() + self._lock.release() @pyqtSlot() def onOkButtonClicked(self): diff --git a/plugins/ChangeLogPlugin/ChangeLog.txt b/plugins/ChangeLogPlugin/ChangeLog.txt index 207493468e..57e6e05d9c 100755 --- a/plugins/ChangeLogPlugin/ChangeLog.txt +++ b/plugins/ChangeLogPlugin/ChangeLog.txt @@ -1,3 +1,6 @@ +[3.0.0] +*Will be updated soon! + [2.7.0] *Top surface skin Specify print settings of the top-most layers separately in order to improve print duration and achieve higher quality top surfaces. diff --git a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py index 58b62217f0..12c68079b0 100755 --- a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py +++ b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py @@ -23,10 +23,8 @@ from PyQt5.QtWidgets import QMessageBox import json import os import gzip -import zlib from time import time -from time import sleep i18n_catalog = i18nCatalog("cura") @@ -527,12 +525,12 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): self._last_request_time = time() def _finalizePostReply(self): - if self._post_reply is None: - return - # Indicate uploading was finished (so another file can be send) self._write_finished = True + if self._post_reply is None: + return + try: try: self._post_reply.uploadProgress.disconnect(self._onUploadProgress) @@ -1179,6 +1177,7 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): # Remove cached post request items. del self._material_post_objects[id(reply)] elif "print_job" in reply_url: + self._onUploadFinished() # Make sure the upload flag is reset as reply.finished is not always triggered try: reply.uploadProgress.disconnect(self._onUploadProgress) except: diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py index 2c598ad766..e1c14be2e1 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/VersionUpgrade25to26.py @@ -127,7 +127,12 @@ class VersionUpgrade25to26(VersionUpgrade): machine_id = parser["general"]["id"] quality_container_id = parser["containers"]["2"] material_container_id = parser["containers"]["3"] - definition_container_id = parser["containers"]["6"] + + # we don't have definition_changes container in 2.5 + if "6" in parser["containers"]: + definition_container_id = parser["containers"]["6"] + else: + definition_container_id = parser["containers"]["5"] if definition_container_id == "custom" and not self._checkCustomFdmPrinterHasExtruderStack(machine_id): # go through all extruders and make sure that this custom FDM printer has 8 extruder stacks. diff --git a/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py b/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py index 3b1b854761..d0b78168b4 100644 --- a/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py +++ b/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py @@ -117,8 +117,25 @@ class VersionUpgrade27to30(VersionUpgrade): # Set the definition to "ultimaker2" for Ultimaker 2 quality changes if not parser.has_section("general"): parser.add_section("general") - if os.path.basename(filename).startswith("ultimaker2_"): - parser["general"]["definition"] = "ultimaker2" + + # Need to exclude the following names: + # - ultimaker2_plus + # - ultimaker2_go + # - ultimaker2_extended + # - ultimaker2_extended_plus + exclude_prefix_list = ["ultimaker2_plus_", + "ultimaker2_go_", + "ultimaker2_extended_", + "ultimaker2_extended_plus_"] + file_base_name = os.path.basename(filename) + if file_base_name.startswith("ultimaker2_"): + skip_this = False + for exclude_prefix in exclude_prefix_list: + if file_base_name.startswith(exclude_prefix): + skip_this = True + break + if not skip_this: + parser["general"]["definition"] = "ultimaker2" # Update version numbers parser["general"]["version"] = "2"