diff --git a/cura/CrashHandler.py b/cura/CrashHandler.py index e86e407902..366bc01b15 100644 --- a/cura/CrashHandler.py +++ b/cura/CrashHandler.py @@ -2,9 +2,11 @@ import sys import platform import traceback import webbrowser +import urllib -from PyQt5.QtCore import QT_VERSION_STR, PYQT_VERSION_STR, QCoreApplication -from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout, QLabel, QTextEdit +from PyQt5.QtCore import QT_VERSION_STR, PYQT_VERSION_STR, Qt, QCoreApplication +from PyQt5.QtGui import QPixmap +from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QHBoxLayout, QVBoxLayout, QLabel, QTextEdit from UM.Logger import Logger from UM.i18n import i18nCatalog @@ -22,9 +24,7 @@ fatal_exception_types = [ ] def show(exception_type, value, tb): - debug_mode = False - if QCoreApplication.instance(): - debug_mode = QCoreApplication.instance().getCommandLineOption("debug-mode", False) + debug_mode = True Logger.log("c", "An uncaught exception has occurred!") for line in traceback.format_exception(exception_type, value, tb): @@ -38,14 +38,42 @@ def show(exception_type, value, tb): if not application: sys.exit(1) + dialog = QDialog() + dialog.setMinimumWidth(640) + dialog.setMinimumHeight(640) dialog.setWindowTitle(catalog.i18nc("@title:window", "Oops!")) layout = QVBoxLayout(dialog) label = QLabel(dialog) + pixmap = QPixmap() + + try: + data = urllib.request.urlopen("http://www.randomkittengenerator.com/cats/rotator.php").read() + pixmap.loadFromData(data) + except: + try: + from UM.Resources import Resources + path = Resources.getPath(Resources.Images, "kitten.jpg") + pixmap.load(path) + except: + pass + + pixmap = pixmap.scaled(150, 150) + label.setPixmap(pixmap) + label.setAlignment(Qt.AlignCenter) layout.addWidget(label) - label.setText(catalog.i18nc("@label", "

A fatal exception has occurred that we could not recover from!

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

")) + + label = QLabel(dialog) + layout.addWidget(label) + + #label.setScaledContents(True) + label.setText(catalog.i18nc("@label", """ +

A fatal exception has occurred that we could not recover from!

+

We hope this picture of a kitten helps you recover from the shock.

+

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

+ """)) textarea = QTextEdit(dialog) layout.addWidget(textarea) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 4753955337..bd0a86d4af 100644 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -407,7 +407,6 @@ class CuraApplication(QtApplication): def addCommandLineOptions(self, parser): super().addCommandLineOptions(parser) parser.add_argument("file", nargs="*", help="Files to load after starting the application.") - parser.add_argument("--debug", dest="debug-mode", action="store_true", default=False, help="Enable detailed crash reports.") def run(self): self.showSplashMessage(self._i18n_catalog.i18nc("@info:progress", "Setting up scene...")) diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml index 82512dd1e6..c7eed579e2 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml @@ -351,7 +351,7 @@ Item { { if(text != "") { - listview.model.filter = {"settable_per_mesh": true, "label": "*" + text} + listview.model.filter = {"settable_per_mesh": true, "i18n_label": "*" + text} } else { diff --git a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py index 19692492e4..66a07c9458 100644 --- a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py +++ b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py @@ -1018,9 +1018,9 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): def materialHotendChangedMessage(self, callback): Application.getInstance().messageBox(i18n_catalog.i18nc("@window:title", "Changes on the Printer"), i18n_catalog.i18nc("@label", - "Would you like to update your current printer configuration into Cura?"), + "Would you like to use your current printer configuration in Cura?"), i18n_catalog.i18nc("@label", - "The PrintCores and/or materials on your printer were changed. For the best result, always slice for the PrintCores and materials that are inserted in your printer."), + "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer."), buttons=QMessageBox.Yes + QMessageBox.No, icon=QMessageBox.Question, callback=callback diff --git a/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py b/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py index 28df74b499..dce2b311bb 100644 --- a/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py +++ b/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py @@ -2,6 +2,7 @@ # Cura is released under the terms of the AGPLv3 or higher. import configparser #To get version numbers from config files. +import os import os.path import io diff --git a/resources/images/kitten.jpg b/resources/images/kitten.jpg new file mode 100644 index 0000000000..1c736a7113 Binary files /dev/null and b/resources/images/kitten.jpg differ diff --git a/resources/qml/Preferences/MaterialsPage.qml b/resources/qml/Preferences/MaterialsPage.qml index 83f980bf86..70e3780707 100644 --- a/resources/qml/Preferences/MaterialsPage.qml +++ b/resources/qml/Preferences/MaterialsPage.qml @@ -127,7 +127,7 @@ UM.ManagementPage { text: catalog.i18nc("@action:button", "Activate"); iconName: "list-activate"; - enabled: base.currentItem != null && base.currentItem.id != Cura.MachineManager.activeMaterialId + enabled: base.currentItem != null && base.currentItem.id != Cura.MachineManager.activeMaterialId && Cura.MachineManager.hasMaterials onClicked: Cura.MachineManager.setActiveMaterial(base.currentItem.id) }, Button @@ -144,8 +144,10 @@ UM.ManagementPage { return } - - Cura.MachineManager.setActiveMaterial(material_id) + if(Cura.MachineManager.hasMaterials) + { + Cura.MachineManager.setActiveMaterial(material_id) + } } }, Button diff --git a/resources/qml/Preferences/SettingVisibilityPage.qml b/resources/qml/Preferences/SettingVisibilityPage.qml index 282f366994..4302fb42a8 100644 --- a/resources/qml/Preferences/SettingVisibilityPage.qml +++ b/resources/qml/Preferences/SettingVisibilityPage.qml @@ -90,7 +90,7 @@ UM.PreferencesPage placeholderText: catalog.i18nc("@label:textbox", "Filter...") - onTextChanged: definitionsModel.filter = {"label": "*" + text} + onTextChanged: definitionsModel.filter = {"i18n_label": "*" + text} } ScrollView diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg index 348eee17c8..6899989100 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg @@ -16,6 +16,8 @@ cool_min_speed = 10 infill_line_width = =round(line_width * 0.5 / 0.4, 2) line_width = =machine_nozzle_size material_print_temperature = =default_material_print_temperature + 10 +material_initial_print_temperature = =material_print_temperature - 5 +material_final_print_temperature = =material_print_temperature - 10 material_standby_temperature = 100 ooze_shield_angle = 40 prime_tower_enable = False diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg index 348f3f5dc1..76a2491079 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg @@ -16,6 +16,8 @@ cool_min_speed = 10 infill_line_width = =round(line_width * 0.5 / 0.4, 2) line_width = =machine_nozzle_size material_print_temperature = =default_material_print_temperature + 5 +material_initial_print_temperature = =material_print_temperature - 5 +material_final_print_temperature = =material_print_temperature - 10 material_standby_temperature = 100 ooze_shield_angle = 40 prime_tower_enable = False diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg index 5253bd5fdf..ba50bc4d31 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg @@ -15,6 +15,8 @@ cool_min_layer_time_fan_speed_max = 20 cool_min_speed = 15 infill_line_width = =round(line_width * 0.5 / 0.4, 2) line_width = =machine_nozzle_size +material_initial_print_temperature = =material_print_temperature - 5 +material_final_print_temperature = =material_print_temperature - 10 material_standby_temperature = 100 ooze_shield_angle = 40 prime_tower_enable = False diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg index 8f9abd896e..bebd9976f5 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg @@ -15,6 +15,8 @@ cool_min_layer_time_fan_speed_max = 20 cool_min_speed = 12 infill_line_width = =round(line_width * 0.5 / 0.4, 2) line_width = =machine_nozzle_size +material_initial_print_temperature = =material_print_temperature - 5 +material_final_print_temperature = =material_print_temperature - 10 material_standby_temperature = 100 ooze_shield_angle = 40 prime_tower_enable = False