From c67d2faac36ff369c6777a429230f3b665260f93 Mon Sep 17 00:00:00 2001 From: Thomas Karl Pietrowski Date: Sun, 3 Jul 2016 14:39:16 +0200 Subject: [PATCH 1/7] CuraEngineBackend: Keep the last 200 lines of logged messages Don't know how much lines we will need exactly, but I think 200 are enough for the moment. Contributes to CURA-1775 --- plugins/CuraEngineBackend/CuraEngineBackend.py | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index c91e414a13..4ab7857376 100644 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -89,6 +89,7 @@ class CuraEngineBackend(Backend): self._always_restart = True #Always restart the engine when starting a new slice. Don't keep the process running. TODO: Fix engine statelessness. self._process_layers_job = None #The currently active job to process layers, or None if it is not processing layers. + self._backend_log_max_lines = 200 # Maximal count of lines to buffer self._error_message = None #Pop-up message that shows errors. self.backendQuit.connect(self._onBackendQuit) From 9eade0707b9434b1f1ca824ffe20d7256deba197 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Wed, 13 Jul 2016 11:14:15 +0200 Subject: [PATCH 2/7] Added prime locations to machine_disallowed_areas. CURA-1811 --- cura/BuildVolume.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index b438365f78..901a8182ef 100644 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -1,6 +1,7 @@ # Copyright (c) 2015 Ultimaker B.V. # Cura is released under the terms of the AGPLv3 or higher. +from cura.Settings.ExtruderManager import ExtruderManager from UM.i18n import i18nCatalog from UM.Scene.SceneNode import SceneNode from UM.Application import Application @@ -19,6 +20,10 @@ catalog = i18nCatalog("cura") import numpy +# Setting for clearance around the prime +PRIME_CLEARANCE = 10 + + ## Build volume is a special kind of node that is responsible for rendering the printable area & disallowed areas. class BuildVolume(SceneNode): VolumeOutlineColor = Color(12, 169, 227, 255) @@ -215,6 +220,29 @@ class BuildVolume(SceneNode): disallowed_areas = self._active_container_stack.getProperty("machine_disallowed_areas", "value") areas = [] + # Add extruder prime locations as disallowed areas. + # Probably needs some rework after coordinate system change. + machine_definition = self._active_container_stack.getBottom() + current_machine_id = machine_definition.getId() + extruder_manager = ExtruderManager.getInstance() + extruders = extruder_manager.getMachineExtruders(current_machine_id) + machine_width = machine_definition.getProperty("machine_width", "value") + machine_depth = machine_definition.getProperty("machine_depth", "value") + for single_extruder in extruders: + extruder_prime_pos_x = single_extruder.getProperty("extruder_prime_pos_x", "value") + extruder_prime_pos_y = single_extruder.getProperty("extruder_prime_pos_y", "value") + # TODO: calculate everything in CuraEngine/Firmware/lower left as origin coordinates. + # Here we transform the extruder prime pos (lower left as origin) to Cura coordinates + # (center as origin, y from back to front) + prime_x = extruder_prime_pos_x - machine_width / 2 + prime_y = machine_depth / 2 - extruder_prime_pos_y + disallowed_areas.append([ + [prime_x - PRIME_CLEARANCE, prime_y - PRIME_CLEARANCE], + [prime_x + PRIME_CLEARANCE, prime_y - PRIME_CLEARANCE], + [prime_x + PRIME_CLEARANCE, prime_y + PRIME_CLEARANCE], + [prime_x - PRIME_CLEARANCE, prime_y + PRIME_CLEARANCE], + ]) + skirt_size = self._getSkirtSize(self._active_container_stack) if disallowed_areas: From 0e6a46c9ebedfc8655d34b16b52e4afef983e797 Mon Sep 17 00:00:00 2001 From: Arjen Hiemstra Date: Mon, 18 Jul 2016 16:50:39 +0200 Subject: [PATCH 3/7] Use a simpler fix for dealing with QML Action's shortcuts not working It is a bit more magical (hence the added documentation) but it makes things a lot more transparent. This prevents a lot of future issues. Contributes to CURA-1603 --- resources/qml/Cura.qml | 70 ++++++++---------------------------------- 1 file changed, 12 insertions(+), 58 deletions(-) diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 604f8e0b92..8404db01fa 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -22,6 +22,18 @@ UM.MainWindow Component.onCompleted: { Printer.setMinimumWindowSize(UM.Theme.getSize("window_minimum_size")) + + // Workaround silly issues with QML Action's shortcut property. + // + // Currently, there is no way to define shortcuts as "Application Shortcut". + // This means that all Actions are "Window Shortcuts". The code for this + // implements a rather naive check that just checks if any of the action's parents + // are a window. Since the "Actions" object is a singleton it has no parent by + // default. If we set its parent to something contained in this window, the + // shortcut will activate properly because one of its parents is a window. + // + // This has been fixed for QtQuick Controls 2 since the Shortcut item has a context property. + Cura.Actions.parent = backgroundItem } Item @@ -517,64 +529,6 @@ UM.MainWindow } } - // Workaround for shortcuts not working for singletons. - // The main window eats all the events, so we need to pass them manually. - Action - { - shortcut: StandardKey.Undo - onTriggered: Cura.Actions.undo.trigger() - } - Action - { - shortcut: StandardKey.Redo - onTriggered: Cura.Actions.redo.trigger() - } - Action - { - shortcut: StandardKey.Quit - onTriggered: Cura.Actions.quit.trigger() - } - Action - { - shortcut: StandardKey.Help - onTriggered: Cura.Actions.help.trigger() - } - Action - { - shortcut: StandardKey.Delete - onTriggered: Cura.Actions.delete.trigger() - } - Action - { - shortcut: "Ctrl+G" - onTriggered: Cura.Actions.groupObjects.trigger() - } - Action - { - shortcut: "Ctrl+Shift+G" - onTriggered: Cura.Actions.unGroupObjects.trigger() - } - Action - { - shortcut: "Ctrl+Alt+G" - onTriggered: Cura.Actions.mergeObjects.trigger() - } - Action - { - shortcut: "Ctrl+D" - onTriggered: Cura.Actions.deleteAll.trigger() - } - Action - { - shortcut: StandardKey.Open - onTriggered: Cura.Actions.open.trigger() - } - Action - { - shortcut: StandardKey.WhatsThis - onTriggered: Cura.Actions.showEngineLog.trigger() - } - Menu { id: objectContextMenu; From 62496753627591a4a135b6beabaf87c632a85ace Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Mon, 18 Jul 2016 17:18:25 +0200 Subject: [PATCH 4/7] Removed stray debug prints CURA-1669 --- cura/Settings/MachineManager.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 4b3141f900..2b2135e4a3 100644 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -788,13 +788,10 @@ class MachineManager(QObject): return self._empty_quality_container def _onMachineNameChanged(self): - print("machine name changed") self.globalContainerChanged.emit() def _onMaterialNameChanged(self): - print("material name changed") self.activeMaterialChanged.emit() def _onQualityNameChanged(self): - print("quality name changed") self.activeQualityChanged.emit() From dec94443db2e51065bca64ca5a5bd993bd5776f4 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Mon, 18 Jul 2016 19:39:47 +0200 Subject: [PATCH 5/7] Initialise extruder quality profile to a profile that is appropriate for this machine/variant/material Fixes CURA-1926 --- cura/Settings/ExtruderManager.py | 33 ++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py index 079b01598e..c736d89990 100644 --- a/cura/Settings/ExtruderManager.py +++ b/cura/Settings/ExtruderManager.py @@ -187,18 +187,27 @@ class ExtruderManager(QObject): # Find a quality to use for this extruder. quality = container_registry.getEmptyInstanceContainer() - # First add any quality. Later, overwrite with preference if the preference is valid. - qualities = container_registry.findInstanceContainers(type = "quality") - if len(qualities) >= 1: - quality = qualities[0] - preferred_quality_id = machine_definition.getMetaDataEntry("preferred_quality") - if preferred_quality_id: - preferred_quality = container_registry.findInstanceContainers(id = preferred_quality_id, type = "quality") - if len(preferred_quality) >= 1: - quality = preferred_quality[0] - else: - UM.Logger.log("w", "The preferred quality \"%s\" of machine %s doesn't exist or is not a quality profile.", preferred_quality_id, machine_id) - # And leave it at the default quality. + search_criteria = { "type": "quality" } + if machine_definition.getMetaDataEntry("has_machine_quality"): + search_criteria["definition"] = machine_definition.id + if machine_definition.getMetaDataEntry("has_materials") and material: + search_criteria["material"] = material.id + else: + search_criteria["definition"] = "fdmprinter" + + preferred_quality = machine_definition.getMetaDataEntry("preferred_quality") + if preferred_quality: + search_criteria["id"] = preferred_quality + + containers = UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(**search_criteria) + if not containers and preferred_quality: + UM.Logger.log("w", "The preferred quality \"%s\" of machine %s doesn't exist or is not a quality profile.", preferred_quality, machine_id) + search_criteria.pop("id", None) + containers = UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(**search_criteria) + if containers: + quality = containers[0] + + container_stack.addContainer(containers[0]) container_stack.addContainer(quality) user_profile = container_registry.findInstanceContainers(type = "user", extruder = extruder_stack_id) From 4b7066e55bd222ae8c1cf3a7880bce276e9ab200 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Tue, 19 Jul 2016 08:29:47 +0200 Subject: [PATCH 6/7] Fix adding quality profile to stack twice CURA-1926 --- cura/Settings/ExtruderManager.py | 1 - 1 file changed, 1 deletion(-) diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py index c736d89990..744a6811c5 100644 --- a/cura/Settings/ExtruderManager.py +++ b/cura/Settings/ExtruderManager.py @@ -207,7 +207,6 @@ class ExtruderManager(QObject): if containers: quality = containers[0] - container_stack.addContainer(containers[0]) container_stack.addContainer(quality) user_profile = container_registry.findInstanceContainers(type = "user", extruder = extruder_stack_id) From fd96e471179e5932a52211dc13cdf8445d3739cc Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 19 Jul 2016 09:25:36 +0200 Subject: [PATCH 7/7] Removed fixed height for checkup buttons again. Turned out that this was already fixed, so a fixed height isn't needed. CURA-422 --- plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml | 2 -- 1 file changed, 2 deletions(-) diff --git a/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml b/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml index 34544dca75..14ed1e2c51 100644 --- a/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml +++ b/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml @@ -196,7 +196,6 @@ Cura.MachineAction visible: checkupMachineAction.usbConnected Button { - height: 20 text: checkupMachineAction.heatupHotendStarted ? catalog.i18nc("@action:button","Stop Heating") : catalog.i18nc("@action:button","Start Heating") onClicked: { @@ -259,7 +258,6 @@ Cura.MachineAction Button { text: checkupMachineAction.heatupBedStarted ?catalog.i18nc("@action:button","Stop Heating") : catalog.i18nc("@action:button","Start Heating") - height: 20 onClicked: { if (checkupMachineAction.heatupBedStarted)