Merge branch 'master' of github.com:Ultimaker/Cura

This commit is contained in:
Jaime van Kessel 2019-04-24 10:45:39 +02:00
commit d0925d6790
9 changed files with 54 additions and 15 deletions

View file

@ -19,6 +19,7 @@ class AutoSave:
self._change_timer.setInterval(self._application.getPreferences().getValue("cura/autosave_delay")) self._change_timer.setInterval(self._application.getPreferences().getValue("cura/autosave_delay"))
self._change_timer.setSingleShot(True) self._change_timer.setSingleShot(True)
self._enabled = True
self._saving = False self._saving = False
def initialize(self): def initialize(self):
@ -32,6 +33,13 @@ class AutoSave:
if not self._saving: if not self._saving:
self._change_timer.start() self._change_timer.start()
def setEnabled(self, enabled: bool) -> None:
self._enabled = enabled
if self._enabled:
self._change_timer.start()
else:
self._change_timer.stop()
def _onGlobalStackChanged(self): def _onGlobalStackChanged(self):
if self._global_stack: if self._global_stack:
self._global_stack.propertyChanged.disconnect(self._triggerTimer) self._global_stack.propertyChanged.disconnect(self._triggerTimer)

View file

@ -51,8 +51,8 @@ class BackupsManager:
## Here we try to disable the auto-save plug-in as it might interfere with ## Here we try to disable the auto-save plug-in as it might interfere with
# restoring a back-up. # restoring a back-up.
def _disableAutoSave(self) -> None: def _disableAutoSave(self) -> None:
self._application.setSaveDataEnabled(False) self._application.getAutoSave().setEnabled(False)
## Re-enable auto-save after we're done. ## Re-enable auto-save after we're done.
def _enableAutoSave(self) -> None: def _enableAutoSave(self) -> None:
self._application.setSaveDataEnabled(True) self._application.getAutoSave().setEnabled(True)

View file

@ -258,7 +258,6 @@ class CuraApplication(QtApplication):
# Backups # Backups
self._auto_save = None self._auto_save = None
self._save_data_enabled = True
from cura.Settings.CuraContainerRegistry import CuraContainerRegistry from cura.Settings.CuraContainerRegistry import CuraContainerRegistry
self._container_registry_class = CuraContainerRegistry self._container_registry_class = CuraContainerRegistry
@ -669,12 +668,9 @@ class CuraApplication(QtApplication):
self._message_box_callback = None self._message_box_callback = None
self._message_box_callback_arguments = [] self._message_box_callback_arguments = []
def setSaveDataEnabled(self, enabled: bool) -> None:
self._save_data_enabled = enabled
# Cura has multiple locations where instance containers need to be saved, so we need to handle this differently. # Cura has multiple locations where instance containers need to be saved, so we need to handle this differently.
def saveSettings(self): def saveSettings(self):
if not self.started or not self._save_data_enabled: if not self.started:
# Do not do saving during application start or when data should not be saved on quit. # Do not do saving during application start or when data should not be saved on quit.
return return
ContainerRegistry.getInstance().saveDirtyContainers() ContainerRegistry.getInstance().saveDirtyContainers()

View file

@ -3,8 +3,11 @@
from PyQt5.QtCore import pyqtProperty, QUrl from PyQt5.QtCore import pyqtProperty, QUrl
from UM.Resources import Resources
from UM.View.View import View from UM.View.View import View
from cura.CuraApplication import CuraApplication
# Since Cura has a few pre-defined "space claims" for the locations of certain components, we've provided some structure # Since Cura has a few pre-defined "space claims" for the locations of certain components, we've provided some structure
# to indicate this. # to indicate this.
@ -12,13 +15,20 @@ from UM.View.View import View
# the stageMenuComponent returns an item that should be used somehwere in the stage menu. It's up to the active stage # the stageMenuComponent returns an item that should be used somehwere in the stage menu. It's up to the active stage
# to actually do something with this. # to actually do something with this.
class CuraView(View): class CuraView(View):
def __init__(self, parent = None) -> None: def __init__(self, parent = None, use_empty_menu_placeholder: bool = False) -> None:
super().__init__(parent) super().__init__(parent)
self._empty_menu_placeholder_url = QUrl(Resources.getPath(CuraApplication.ResourceTypes.QmlFiles,
"EmptyViewMenuComponent.qml"))
self._use_empty_menu_placeholder = use_empty_menu_placeholder
@pyqtProperty(QUrl, constant = True) @pyqtProperty(QUrl, constant = True)
def mainComponent(self) -> QUrl: def mainComponent(self) -> QUrl:
return self.getDisplayComponent("main") return self.getDisplayComponent("main")
@pyqtProperty(QUrl, constant = True) @pyqtProperty(QUrl, constant = True)
def stageMenuComponent(self) -> QUrl: def stageMenuComponent(self) -> QUrl:
return self.getDisplayComponent("menu") url = self.getDisplayComponent("menu")
if not url.toString() and self._use_empty_menu_placeholder:
url = self._empty_menu_placeholder_url
return url

View file

@ -10,21 +10,21 @@ from UM.Math.Color import Color
from UM.PluginRegistry import PluginRegistry from UM.PluginRegistry import PluginRegistry
from UM.Platform import Platform from UM.Platform import Platform
from UM.Event import Event from UM.Event import Event
from UM.View.View import View
from UM.Scene.Iterator.BreadthFirstIterator import BreadthFirstIterator from UM.Scene.Iterator.BreadthFirstIterator import BreadthFirstIterator
from UM.View.RenderBatch import RenderBatch from UM.View.RenderBatch import RenderBatch
from UM.View.GL.OpenGL import OpenGL from UM.View.GL.OpenGL import OpenGL
from cura.CuraApplication import CuraApplication from cura.CuraApplication import CuraApplication
from cura.CuraView import CuraView
from cura.Scene.ConvexHullNode import ConvexHullNode from cura.Scene.ConvexHullNode import ConvexHullNode
from . import XRayPass from . import XRayPass
## View used to display a see-through version of objects with errors highlighted. ## View used to display a see-through version of objects with errors highlighted.
class XRayView(View): class XRayView(CuraView):
def __init__(self): def __init__(self):
super().__init__() super().__init__(parent = None, use_empty_menu_placeholder = True)
self._xray_shader = None self._xray_shader = None
self._xray_pass = None self._xray_pass = None

View file

@ -523,7 +523,7 @@
"description": "The maximum speed for the motor of the X-direction.", "description": "The maximum speed for the motor of the X-direction.",
"unit": "mm/s", "unit": "mm/s",
"type": "float", "type": "float",
"default_value": 500, "default_value": 299792458000,
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": false, "settable_per_extruder": false,
"settable_per_meshgroup": false "settable_per_meshgroup": false
@ -534,7 +534,7 @@
"description": "The maximum speed for the motor of the Y-direction.", "description": "The maximum speed for the motor of the Y-direction.",
"unit": "mm/s", "unit": "mm/s",
"type": "float", "type": "float",
"default_value": 500, "default_value": 299792458000,
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": false, "settable_per_extruder": false,
"settable_per_meshgroup": false "settable_per_meshgroup": false
@ -545,7 +545,7 @@
"description": "The maximum speed for the motor of the Z-direction.", "description": "The maximum speed for the motor of the Z-direction.",
"unit": "mm/s", "unit": "mm/s",
"type": "float", "type": "float",
"default_value": 5, "default_value": 299792458000,
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": false, "settable_per_extruder": false,
"settable_per_meshgroup": false "settable_per_meshgroup": false
@ -3527,6 +3527,20 @@
"enabled": "retraction_hop_enabled and extruders_enabled_count > 1", "enabled": "retraction_hop_enabled and extruders_enabled_count > 1",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
},
"retraction_hop_after_extruder_switch_height":
{
"label": "Z Hop After Extruder Switch Height",
"description": "The height difference when performing a Z Hop after extruder switch.",
"unit": "mm",
"type": "float",
"default_value": 1,
"value": "retraction_hop",
"minimum_value_warning": "0",
"maximum_value_warning": "10",
"enabled": "retraction_enable and retraction_hop_after_extruder_switch",
"settable_per_mesh": false,
"settable_per_extruder": true
} }
} }
}, },

View file

@ -0,0 +1,9 @@
// Copyright (c) 2019 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.10
import QtQuick.Controls 2.3
// Empty placeholder
Item { }

View file

@ -53,6 +53,7 @@ Item
anchors anchors
{ {
top: titleLabel.bottom top: titleLabel.bottom
topMargin: UM.Theme.getSize("default_margin").height
bottom: nextButton.top bottom: nextButton.top
bottomMargin: UM.Theme.getSize("default_margin").height bottomMargin: UM.Theme.getSize("default_margin").height
left: parent.left left: parent.left

View file

@ -199,6 +199,7 @@ retraction_hop_enabled
retraction_hop_only_when_collides retraction_hop_only_when_collides
retraction_hop retraction_hop
retraction_hop_after_extruder_switch retraction_hop_after_extruder_switch
retraction_hop_after_extruder_switch_height
[cooling] [cooling]
cool_fan_enabled cool_fan_enabled