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

This commit is contained in:
Jack Ha 2016-10-06 15:23:14 +02:00
commit ab23637f3b
37 changed files with 89 additions and 72 deletions

View File

@ -90,8 +90,8 @@ class QualityManager:
# Fall back to using generic materials and qualities if nothing could be found. # Fall back to using generic materials and qualities if nothing could be found.
if not result and material_containers and len(material_containers) == 1: if not result and material_containers and len(material_containers) == 1:
basic_material = self._getBasicMaterial(material_containers[0]) basic_materials = self._getBasicMaterials(material_containers[0])
result = self._getFilteredContainersForStack(machine_definition, [basic_material], **criteria) result = self._getFilteredContainersForStack(machine_definition, basic_materials, **criteria)
return result[0] if result else None return result[0] if result else None
## Find all suitable qualities for a combination of machine and material. ## Find all suitable qualities for a combination of machine and material.
@ -103,8 +103,8 @@ class QualityManager:
criteria = {"type": "quality" } criteria = {"type": "quality" }
result = self._getFilteredContainersForStack(machine_definition, [material_container], **criteria) result = self._getFilteredContainersForStack(machine_definition, [material_container], **criteria)
if not result: if not result:
basic_material = self._getBasicMaterial(material_container) basic_materials = self._getBasicMaterials(material_container)
result = self._getFilteredContainersForStack(machine_definition, [basic_material], **criteria) result = self._getFilteredContainersForStack(machine_definition, basic_materials, **criteria)
return result return result
## Find all quality changes for a machine. ## Find all quality changes for a machine.
@ -154,16 +154,24 @@ class QualityManager:
# #
# This tries to find a generic or basic version of the given material. # This tries to find a generic or basic version of the given material.
# \param material_container \type{InstanceContainer} the material # \param material_container \type{InstanceContainer} the material
# \return \type{Option[InstanceContainer]} the basic material or None if one could not be found. # \return \type{List[InstanceContainer]} the basic material or None if one could not be found.
def _getBasicMaterial(self, material_container): def _getBasicMaterials(self, material_container):
base_material = material_container.getMetaDataEntry("material") base_material = material_container.getMetaDataEntry("material")
if material_container.getDefinition().getMetaDataEntry("has_machine_quality"):
definition_id = material_container.getDefinition().getMetaDataEntry("quality_definition", material_container.getDefinition().getId())
else:
definition_id = "fdmprinter"
if base_material: if base_material:
# There is a basic material specified # There is a basic material specified
criteria = { "type": "material", "name": base_material, "definition": "fdmprinter" } criteria = { "type": "material", "name": base_material, "definition": definition_id }
containers = UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(**criteria) containers = UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(**criteria)
return containers[0] if containers else None containers = [basic_material for basic_material in containers if
basic_material.getMetaDataEntry("variant") == material_container.getMetaDataEntry(
"variant")]
return containers
return None return []
def _getFilteredContainers(self, **kwargs): def _getFilteredContainers(self, **kwargs):
return self._getFilteredContainersForStack(None, None, **kwargs) return self._getFilteredContainersForStack(None, None, **kwargs)

View File

@ -480,6 +480,7 @@ class ContainerManager(QObject):
new_changes = self._createQualityChanges(quality_container, unique_name, new_changes = self._createQualityChanges(quality_container, unique_name,
UM.Application.getInstance().getGlobalContainerStack().getBottom(), UM.Application.getInstance().getGlobalContainerStack().getBottom(),
extruder_id) extruder_id)
self._performMerge(new_changes, quality_changes_container, clear_settings = False)
self._performMerge(new_changes, user_container) self._performMerge(new_changes, user_container)
self._container_registry.addContainer(new_changes) self._container_registry.addContainer(new_changes)
@ -694,7 +695,7 @@ class ContainerManager(QObject):
def createContainerManager(engine, js_engine): def createContainerManager(engine, js_engine):
return ContainerManager.getInstance() return ContainerManager.getInstance()
def _performMerge(self, merge_into, merge): def _performMerge(self, merge_into, merge, clear_settings = True):
assert isinstance(merge, type(merge_into)) assert isinstance(merge, type(merge_into))
if merge == merge_into: if merge == merge_into:
@ -703,7 +704,8 @@ class ContainerManager(QObject):
for key in merge.getAllKeys(): for key in merge.getAllKeys():
merge_into.setProperty(key, "value", merge.getProperty(key, "value")) merge_into.setProperty(key, "value", merge.getProperty(key, "value"))
merge.clear() if clear_settings:
merge.clear()
def _updateContainerNameFilters(self): def _updateContainerNameFilters(self):
self._container_name_filters = {} self._container_name_filters = {}

View File

@ -27,8 +27,8 @@ class QualitySettingsModel(UM.Qt.ListModel.ListModel):
self._extruder_id = None self._extruder_id = None
self._extruder_definition_id = None self._extruder_definition_id = None
self._quality = None self._quality_id = None
self._material = None self._material_id = None
self.addRoleName(self.KeyRole, "key") self.addRoleName(self.KeyRole, "key")
self.addRoleName(self.LabelRole, "label") self.addRoleName(self.LabelRole, "label")
@ -61,29 +61,29 @@ class QualitySettingsModel(UM.Qt.ListModel.ListModel):
return self._extruder_definition_id return self._extruder_definition_id
def setQuality(self, quality): def setQuality(self, quality):
if quality != self._quality: if quality != self._quality_id:
self._quality = quality self._quality_id = quality
self._update() self._update()
self.qualityChanged.emit() self.qualityChanged.emit()
qualityChanged = pyqtSignal() qualityChanged = pyqtSignal()
@pyqtProperty(str, fset = setQuality, notify = qualityChanged) @pyqtProperty(str, fset = setQuality, notify = qualityChanged)
def quality(self): def quality(self):
return self._quality return self._quality_id
def setMaterial(self, material): def setMaterial(self, material):
if material != self._material: if material != self._material_id:
self._material = material self._material_id = material
self._update() self._update()
self.materialChanged.emit() self.materialChanged.emit()
materialChanged = pyqtSignal() materialChanged = pyqtSignal()
@pyqtProperty(str, fset = setMaterial, notify = materialChanged) @pyqtProperty(str, fset = setMaterial, notify = materialChanged)
def material(self): def material(self):
return self._material return self._material_id
def _update(self): def _update(self):
if not self._quality: if not self._quality_id:
return return
items = [] items = []
@ -91,9 +91,9 @@ class QualitySettingsModel(UM.Qt.ListModel.ListModel):
settings = collections.OrderedDict() settings = collections.OrderedDict()
definition_container = UM.Application.getInstance().getGlobalContainerStack().getBottom() definition_container = UM.Application.getInstance().getGlobalContainerStack().getBottom()
containers = self._container_registry.findInstanceContainers(id = self._quality) containers = self._container_registry.findInstanceContainers(id = self._quality_id)
if not containers: if not containers:
UM.Logger.log("w", "Could not find a quality container with id %s", self._quality) UM.Logger.log("w", "Could not find a quality container with id %s", self._quality_id)
return return
quality_container = None quality_container = None
@ -110,8 +110,8 @@ class QualitySettingsModel(UM.Qt.ListModel.ListModel):
"definition": quality_changes_container.getDefinition().getId() "definition": quality_changes_container.getDefinition().getId()
} }
if self._material: if self._material_id and self._material_id != "empty_material":
criteria["material"] = self._material criteria["material"] = self._material_id
quality_container = self._container_registry.findInstanceContainers(**criteria) quality_container = self._container_registry.findInstanceContainers(**criteria)
if not quality_container: if not quality_container:
@ -124,8 +124,8 @@ class QualitySettingsModel(UM.Qt.ListModel.ListModel):
criteria = {"type": "quality", "quality_type": quality_type, "definition": definition_id} criteria = {"type": "quality", "quality_type": quality_type, "definition": definition_id}
if self._material: if self._material_id and self._material_id != "empty_material":
criteria["material"] = self._material criteria["material"] = self._material_id
criteria["extruder"] = self._extruder_id criteria["extruder"] = self._extruder_id

View File

@ -77,6 +77,7 @@ class ThreeMFReader(MeshReader):
mesh_data = mesh_builder.build().getTransformed(rotation) mesh_data = mesh_builder.build().getTransformed(rotation)
if not len(mesh_data.getVertices()): if not len(mesh_data.getVertices()):
Logger.log("d", "One of the objects does not have vertices. Skipping it.")
continue # This object doesn't have data, so skip it. continue # This object doesn't have data, so skip it.
node.setMeshData(mesh_data) node.setMeshData(mesh_data)
@ -114,6 +115,7 @@ class ThreeMFReader(MeshReader):
try: try:
node.getBoundingBox() # Selftest - There might be more functions that should fail node.getBoundingBox() # Selftest - There might be more functions that should fail
except: except:
Logger.log("w", "Bounding box test for object failed. Skipping this object")
continue continue
result.addChild(node) result.addChild(node)
@ -125,7 +127,10 @@ class ThreeMFReader(MeshReader):
group_decorator = GroupDecorator() group_decorator = GroupDecorator()
result.addDecorator(group_decorator) result.addDecorator(group_decorator)
elif len(objects) == 1: elif len(objects) == 1:
result = result.getChildren()[0] # Only one object found, return that. if result.getChildren():
result = result.getChildren()[0] # Only one object found, return that.
else: # we failed to load any data
return None
except Exception as e: except Exception as e:
Logger.log("e", "exception occured in 3mf reader: %s", e) Logger.log("e", "exception occured in 3mf reader: %s", e)
try: # Selftest - There might be more functions that should fail try: # Selftest - There might be more functions that should fail

View File

@ -1211,7 +1211,7 @@
"minimum_value": "0", "minimum_value": "0",
"minimum_value_warning": "1", "minimum_value_warning": "1",
"maximum_value": "machine_max_feedrate_e", "maximum_value": "machine_max_feedrate_e",
"maximum_value_warning": "25", "maximum_value_warning": "70",
"enabled": "retraction_enable", "enabled": "retraction_enable",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
@ -1225,7 +1225,7 @@
"minimum_value": "0", "minimum_value": "0",
"maximum_value": "machine_max_feedrate_e", "maximum_value": "machine_max_feedrate_e",
"minimum_value_warning": "1", "minimum_value_warning": "1",
"maximum_value_warning": "25", "maximum_value_warning": "70",
"enabled": "retraction_enable", "enabled": "retraction_enable",
"value": "retraction_speed", "value": "retraction_speed",
"settable_per_mesh": false, "settable_per_mesh": false,
@ -1240,7 +1240,7 @@
"minimum_value": "0", "minimum_value": "0",
"maximum_value": "machine_max_feedrate_e", "maximum_value": "machine_max_feedrate_e",
"minimum_value_warning": "1", "minimum_value_warning": "1",
"maximum_value_warning": "25", "maximum_value_warning": "70",
"enabled": "retraction_enable", "enabled": "retraction_enable",
"value": "retraction_speed", "value": "retraction_speed",
"settable_per_mesh": false, "settable_per_mesh": false,
@ -1363,7 +1363,9 @@
"enabled": "retraction_enable", "enabled": "retraction_enable",
"default_value": 20, "default_value": 20,
"minimum_value": "0.1", "minimum_value": "0.1",
"maximum_value_warning": "25", "minimum_value_warning": "1",
"maximum_value": "machine_max_feedrate_e",
"maximum_value_warning": "70",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"children": "children":
@ -1378,7 +1380,9 @@
"default_value": 20, "default_value": 20,
"value": "switch_extruder_retraction_speeds", "value": "switch_extruder_retraction_speeds",
"minimum_value": "0.1", "minimum_value": "0.1",
"maximum_value_warning": "25", "minimum_value_warning": "1",
"maximum_value": "machine_max_feedrate_e",
"maximum_value_warning": "70",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
}, },
@ -1392,7 +1396,9 @@
"default_value": 20, "default_value": 20,
"value": "switch_extruder_retraction_speeds", "value": "switch_extruder_retraction_speeds",
"minimum_value": "0.1", "minimum_value": "0.1",
"maximum_value_warning": "25", "minimum_value_warning": "1",
"maximum_value": "machine_max_feedrate_e",
"maximum_value_warning": "70",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
} }
@ -2865,7 +2871,7 @@
"type": "float", "type": "float",
"default_value": 15, "default_value": 15,
"minimum_value_warning": "raft_interface_line_width", "minimum_value_warning": "raft_interface_line_width",
"maximum_value_warning": "10", "maximum_value_warning": "20",
"enabled": "resolveOrValue('adhesion_type') == 'raft'", "enabled": "resolveOrValue('adhesion_type') == 'raft'",
"limit_to_extruder": "adhesion_extruder_nr", "limit_to_extruder": "adhesion_extruder_nr",
"settable_per_mesh": false, "settable_per_mesh": false,
@ -2893,7 +2899,7 @@
"default_value": 0.22, "default_value": 0.22,
"value": "raft_airgap / 2", "value": "raft_airgap / 2",
"minimum_value": "0", "minimum_value": "0",
"maximum_value_warning": "layer_height", "maximum_value_warning": "raft_airgap",
"enabled": "resolveOrValue('adhesion_type') == 'raft'", "enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
@ -2970,7 +2976,7 @@
"value": "layer_height * 1.5", "value": "layer_height * 1.5",
"minimum_value": "0.001", "minimum_value": "0.001",
"minimum_value_warning": "0.04", "minimum_value_warning": "0.04",
"maximum_value_warning": "0.75 * extruderValue(adhesion_extruder_nr, 'machine_nozzle_size')", "maximum_value_warning": "0.75 * extruderValue(adhesion_extruder_nr, 'raft_interface_line_width')",
"enabled": "resolveOrValue('adhesion_type') == 'raft'", "enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
@ -3018,7 +3024,7 @@
"value": "resolveOrValue('layer_height_0') * 1.2", "value": "resolveOrValue('layer_height_0') * 1.2",
"minimum_value": "0.001", "minimum_value": "0.001",
"minimum_value_warning": "0.04", "minimum_value_warning": "0.04",
"maximum_value_warning": "0.75 * extruderValue(adhesion_extruder_nr, 'machine_nozzle_size')", "maximum_value_warning": "0.75 * extruderValue(adhesion_extruder_nr, 'raft_base_line_width')",
"enabled": "resolveOrValue('adhesion_type') == 'raft'", "enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,

View File

@ -161,10 +161,6 @@ Rectangle
visible: showProgress; visible: showProgress;
indeterminate: indeterminate:
{ {
if(!showProgress)
{
return false; //Never be indeterminate when not visible, since that triggers a redraw of the screen.
}
switch(Cura.MachineManager.printerOutputDevices[0].jobState) switch(Cura.MachineManager.printerOutputDevices[0].jobState)
{ {
case "pausing": case "pausing":

View File

@ -6,7 +6,7 @@ definition = fdmprinter
[metadata] [metadata]
type = quality type = quality
quality_type = high quality_type = high
weight = -3 weight = 1
[values] [values]
layer_height = 0.06 layer_height = 0.06

View File

@ -6,6 +6,6 @@ definition = fdmprinter
[metadata] [metadata]
type = quality type = quality
quality_type = normal quality_type = normal
weight = -2 weight = 0
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
type = quality type = quality
material = generic_pla_ultimaker2_plus_0.25_mm material = generic_pla_ultimaker2_plus_0.25_mm
weight = -2 weight = 1
quality_type = high quality_type = high
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
type = quality type = quality
material = generic_pla_ultimaker2_plus_0.4_mm material = generic_pla_ultimaker2_plus_0.4_mm
weight = -3 weight = 1
quality_type = high quality_type = high
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
type = quality type = quality
material = generic_pla_ultimaker2_plus_0.4_mm material = generic_pla_ultimaker2_plus_0.4_mm
weight = -2 weight = 0
quality_type = normal quality_type = normal
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
material = generic_pla_ultimaker2_plus_0.6_mm material = generic_pla_ultimaker2_plus_0.6_mm
type = quality type = quality
weight = -2 weight = 0
quality_type = normal quality_type = normal
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
material = generic_pla_ultimaker2_plus_0.8_mm material = generic_pla_ultimaker2_plus_0.8_mm
type = quality type = quality
weight = -2 weight = -1
quality_type = fast quality_type = fast
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
type = quality type = quality
material = generic_abs_ultimaker2_plus_0.25_mm material = generic_abs_ultimaker2_plus_0.25_mm
weight = -2 weight = 1
quality_type = high quality_type = high
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
type = quality type = quality
material = generic_abs_ultimaker2_plus_0.4_mm material = generic_abs_ultimaker2_plus_0.4_mm
weight = -3 weight = 1
quality_type = high quality_type = high
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
type = quality type = quality
material = generic_abs_ultimaker2_plus_0.4_mm material = generic_abs_ultimaker2_plus_0.4_mm
weight = -2 weight = 0
quality_type = normal quality_type = normal
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
type = quality type = quality
material = generic_abs_ultimaker2_plus_0.6_mm material = generic_abs_ultimaker2_plus_0.6_mm
weight = -2 weight = 0
quality_type = normal quality_type = normal
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
type = quality type = quality
material = generic_abs_ultimaker2_plus_0.8_mm material = generic_abs_ultimaker2_plus_0.8_mm
weight = -2 weight = -1
quality_type = fast quality_type = fast
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
type = quality type = quality
material = generic_cpe_ultimaker2_plus_0.25_mm material = generic_cpe_ultimaker2_plus_0.25_mm
weight = -2 weight = -1
quality_type = high quality_type = high
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
type = quality type = quality
material = generic_cpe_ultimaker2_plus_0.4_mm material = generic_cpe_ultimaker2_plus_0.4_mm
weight = -3 weight = 1
quality_type = high quality_type = high
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
type = quality type = quality
material = generic_cpe_ultimaker2_plus_0.4_mm material = generic_cpe_ultimaker2_plus_0.4_mm
weight = -2 weight = 0
quality_type = normal quality_type = normal
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
type = quality type = quality
material = generic_cpe_ultimaker2_plus_0.6_mm material = generic_cpe_ultimaker2_plus_0.6_mm
weight = -2 weight = 0
quality_type = normal quality_type = normal
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
type = quality type = quality
material = generic_cpe_ultimaker2_plus_0.8_mm material = generic_cpe_ultimaker2_plus_0.8_mm
weight = -2 weight = -1
quality_type = fast quality_type = fast
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
type = quality type = quality
material = generic_cpe_plus_ultimaker2_plus_0.4_mm material = generic_cpe_plus_ultimaker2_plus_0.4_mm
weight = 0 weight = -2
quality_type = draft quality_type = draft
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
type = quality type = quality
material = generic_cpe_plus_ultimaker2_plus_0.6_mm material = generic_cpe_plus_ultimaker2_plus_0.6_mm
weight = 0 weight = -2
quality_type = draft quality_type = draft
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
type = quality type = quality
material = generic_cpe_plus_ultimaker2_plus_0.8_mm material = generic_cpe_plus_ultimaker2_plus_0.8_mm
weight = 0 weight = -2
quality_type = draft quality_type = draft
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
type = quality type = quality
material = generic_nylon_ultimaker2_plus_0.25_mm material = generic_nylon_ultimaker2_plus_0.25_mm
weight = 0 weight = 1
quality_type = high quality_type = high
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
type = quality type = quality
material = generic_nylon_ultimaker2_plus_0.4_mm material = generic_nylon_ultimaker2_plus_0.4_mm
weight = 0 weight = -1
quality_type = fast quality_type = fast
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
type = quality type = quality
material = generic_nylon_ultimaker2_plus_0.6_mm material = generic_nylon_ultimaker2_plus_0.6_mm
weight = 0 weight = -1
quality_type = fast quality_type = fast
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
type = quality type = quality
material = generic_nylon_ultimaker2_plus_0.8_mm material = generic_nylon_ultimaker2_plus_0.8_mm
weight = 0 weight = -2
quality_type = draft quality_type = draft
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
type = quality type = quality
material = generic_pc_ultimaker2_plus_0.25_mm material = generic_pc_ultimaker2_plus_0.25_mm
weight = 0 weight = 1
quality_type = high quality_type = high
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
type = quality type = quality
material = generic_pc_ultimaker2_plus_0.4_mm material = generic_pc_ultimaker2_plus_0.4_mm
weight = 0 weight = -1
quality_type = fast quality_type = fast
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
type = quality type = quality
material = generic_pc_ultimaker2_plus_0.6_mm material = generic_pc_ultimaker2_plus_0.6_mm
weight = 0 weight = -1
quality_type = fast quality_type = fast
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
type = quality type = quality
material = generic_pc_ultimaker2_plus_0.8_mm material = generic_pc_ultimaker2_plus_0.8_mm
weight = 0 weight = -2
quality_type = draft quality_type = draft
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
type = quality type = quality
material = generic_tpu_ultimaker2_plus_0.25_mm material = generic_tpu_ultimaker2_plus_0.25_mm
weight = 0 weight = 1
quality_type = high quality_type = high
[values] [values]

View File

@ -6,7 +6,7 @@ definition = ultimaker2_plus
[metadata] [metadata]
type = quality type = quality
material = generic_tpu_ultimaker2_plus_0.6_mm material = generic_tpu_ultimaker2_plus_0.6_mm
weight = 0 weight = -1
quality_type = fast quality_type = fast
[values] [values]

View File

@ -237,7 +237,7 @@ QtObject {
SequentialAnimation on x { SequentialAnimation on x {
id: xAnim id: xAnim
property int animEndPoint: Theme.getSize("message").width - (Theme.getSize("default_margin").width * 2) - Theme.getSize("progressbar_control").width property int animEndPoint: Theme.getSize("message").width - (Theme.getSize("default_margin").width * 2) - Theme.getSize("progressbar_control").width
running: control.indeterminate running: control.indeterminate && control.visible
loops: Animation.Infinite loops: Animation.Infinite
NumberAnimation { from: 0; to: xAnim.animEndPoint; duration: 2000;} NumberAnimation { from: 0; to: xAnim.animEndPoint; duration: 2000;}
NumberAnimation { from: xAnim.animEndPoint; to: 0; duration: 2000;} NumberAnimation { from: xAnim.animEndPoint; to: 0; duration: 2000;}