Merge branch 'master' into CURA-6127_settings_lost_when_sync_to_diff_printer_type

This commit is contained in:
ninovanhooff 2019-12-16 09:48:32 +01:00 committed by GitHub
commit f77832315a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
1238 changed files with 1721 additions and 1421 deletions

13
.github/workflows/cicd.yml vendored Normal file
View file

@ -0,0 +1,13 @@
---
name: CI/CD
on: [push, pull_request]
jobs:
build:
name: Build and test
runs-on: ubuntu-latest
container: ultimaker/cura-build-environment
steps:
- name: Checkout master
uses: actions/checkout@v1.2.0
- name: Build and test
run: docker/build.sh

View file

@ -1,16 +0,0 @@
image: registry.gitlab.com/ultimaker/cura/cura-build-environment:centos7
stages:
- build
build and test linux:
stage: build
tags:
- cura
- docker
- linux
script:
- docker/build.sh
artifacts:
paths:
- build

View file

@ -22,13 +22,6 @@ try:
except ImportError:
CuraAppName = DEFAULT_CURA_APP_NAME
try:
from cura.CuraVersion import CuraAppDisplayName # type: ignore
if CuraAppDisplayName == "":
CuraAppDisplayName = DEFAULT_CURA_DISPLAY_NAME
except ImportError:
CuraAppDisplayName = DEFAULT_CURA_DISPLAY_NAME
try:
from cura.CuraVersion import CuraVersion # type: ignore
if CuraVersion == "":
@ -53,3 +46,13 @@ except ImportError:
# Various convenience flags indicating what kind of Cura build it is.
__ENTERPRISE_VERSION_TYPE = "enterprise"
IsEnterpriseVersion = CuraBuildType.lower() == __ENTERPRISE_VERSION_TYPE
try:
from cura.CuraVersion import CuraAppDisplayName # type: ignore
if CuraAppDisplayName == "":
CuraAppDisplayName = DEFAULT_CURA_DISPLAY_NAME
if IsEnterpriseVersion:
CuraAppDisplayName = CuraAppDisplayName + " Enterprise"
except ImportError:
CuraAppDisplayName = DEFAULT_CURA_DISPLAY_NAME

View file

@ -1102,7 +1102,7 @@ class BuildVolume(SceneNode):
# If we are printing one at a time, we need to add the bed adhesion size to the disallowed areas of the objects
if container_stack.getProperty("print_sequence", "value") == "one_at_a_time":
return 0.1 # Return a very small value, so we do draw disallowed area's near the edges.
return 0.1
bed_adhesion_size = self._calculateBedAdhesionSize(used_extruders)
support_expansion = self._calculateSupportExpansion(self._global_container_stack)

View file

@ -67,11 +67,9 @@ from cura.Scene.BuildPlateDecorator import BuildPlateDecorator
from cura.Scene.ConvexHullDecorator import ConvexHullDecorator
from cura.Scene.CuraSceneController import CuraSceneController
from cura.Scene.CuraSceneNode import CuraSceneNode
from cura.Scene.GCodeListDecorator import GCodeListDecorator
from cura.Scene.SliceableObjectDecorator import SliceableObjectDecorator
from cura.Scene import ZOffsetDecorator
from cura.Machines.ContainerTree import ContainerTree
from cura.Machines.MachineErrorChecker import MachineErrorChecker
from cura.Machines.Models.BuildPlateModel import BuildPlateModel
@ -145,7 +143,7 @@ class CuraApplication(QtApplication):
# SettingVersion represents the set of settings available in the machine/extruder definitions.
# You need to make sure that this version number needs to be increased if there is any non-backwards-compatible
# changes of the settings.
SettingVersion = 10
SettingVersion = 11
Created = False
@ -170,7 +168,7 @@ class CuraApplication(QtApplication):
app_display_name = ApplicationMetadata.CuraAppDisplayName,
version = ApplicationMetadata.CuraVersion,
api_version = ApplicationMetadata.CuraSDKVersion,
buildtype = ApplicationMetadata.CuraBuildType,
build_type = ApplicationMetadata.CuraBuildType,
is_debug_mode = ApplicationMetadata.CuraDebugMode,
tray_icon_name = "cura-icon-32.png",
**kwargs)

View file

@ -162,6 +162,7 @@ class MachineNode(ContainerNode):
container_registry = ContainerRegistry.getInstance()
if not self.has_variants:
self.variants["empty"] = VariantNode("empty_variant", machine = self)
self.variants["empty"].materialsChanged.connect(self.materialsChanged)
else:
# Find all the variants for this definition ID.
variants = container_registry.findInstanceContainersMetadata(type = "variant", definition = self.container_id, hardware_type = "nozzle")

View file

@ -167,13 +167,19 @@ class VariantNode(ContainerNode):
# Search for any submaterials from that base file that are still left.
materials_same_base_file = ContainerRegistry.getInstance().findContainersMetadata(base_file = base_file)
if materials_same_base_file:
most_specific_submaterial = materials_same_base_file[0]
most_specific_submaterial = None
for submaterial in materials_same_base_file:
if submaterial["definition"] == self.machine.container_id:
if most_specific_submaterial["definition"] == "fdmprinter":
if submaterial.get("variant_name", "empty") == self.variant_name:
most_specific_submaterial = submaterial
if most_specific_submaterial.get("variant_name", "empty") == "empty" and submaterial.get("variant_name", "empty") == self.variant_name:
break # most specific match possible
if submaterial.get("variant_name", "empty") == "empty":
most_specific_submaterial = submaterial
if most_specific_submaterial is None:
Logger.log("w", "Material %s removed, but no suitable replacement found", base_file)
else:
Logger.log("i", "Material %s (%s) overridden by %s", base_file, self.variant_name, most_specific_submaterial.get("id"))
self.materials[base_file] = MaterialNode(most_specific_submaterial["id"], variant = self)
self.materialsChanged.emit(self.materials[base_file])

View file

@ -88,28 +88,35 @@ class ConvexHullDecorator(SceneNodeDecorator):
return self._add2DAdhesionMargin(hull)
## Get the unmodified 2D projected convex hull with 2D adhesion area of the node (if any)
## Get the unmodified 2D projected convex hull of the node (if any)
# In case of one-at-a-time, this includes adhesion and head+fans clearance
def getConvexHull(self) -> Optional[Polygon]:
if self._node is None:
return None
if self._node.callDecoration("isNonPrintingMesh"):
return None
hull = self._compute2DConvexHull()
if self._global_stack and self._node is not None and hull is not None:
# Parent can be None if node is just loaded.
if self._global_stack.getProperty("print_sequence", "value") == "one_at_a_time" and not self.hasGroupAsParent(self._node):
hull = hull.getMinkowskiHull(Polygon(numpy.array(self._global_stack.getProperty("machine_head_polygon", "value"), numpy.float32)))
if self._isSingularOneAtATimeNode():
hull = self.getConvexHullHeadFull()
if hull is None:
return None
hull = self._add2DAdhesionMargin(hull)
return hull
## Get the convex hull of the node with the full head size
return self._compute2DConvexHull()
## For one at the time this is the convex hull of the node with the full head size
# In case of printing all at once this is None.
def getConvexHullHeadFull(self) -> Optional[Polygon]:
if self._node is None:
return None
if self._isSingularOneAtATimeNode():
return self._compute2DConvexHeadFull()
return None
@staticmethod
def hasGroupAsParent(node: "SceneNode") -> bool:
parent = node.getParent()
@ -118,15 +125,14 @@ class ConvexHullDecorator(SceneNodeDecorator):
return bool(parent.callDecoration("isGroup"))
## Get convex hull of the object + head size
# In case of printing all at once this is the same as the convex hull.
# In case of printing all at once this is None.
# For one at the time this is area with intersection of mirrored head
def getConvexHullHead(self) -> Optional[Polygon]:
if self._node is None:
return None
if self._node.callDecoration("isNonPrintingMesh"):
return None
if self._global_stack:
if self._global_stack.getProperty("print_sequence", "value") == "one_at_a_time" and not self.hasGroupAsParent(self._node):
if self._isSingularOneAtATimeNode():
head_with_fans = self._compute2DConvexHeadMin()
if head_with_fans is None:
return None
@ -135,7 +141,7 @@ class ConvexHullDecorator(SceneNodeDecorator):
return None
## Get convex hull of the node
# In case of printing all at once this is the same as the convex hull.
# In case of printing all at once this None??
# For one at the time this is the area without the head.
def getConvexHullBoundary(self) -> Optional[Polygon]:
if self._node is None:
@ -144,12 +150,22 @@ class ConvexHullDecorator(SceneNodeDecorator):
if self._node.callDecoration("isNonPrintingMesh"):
return None
if self._global_stack:
if self._global_stack.getProperty("print_sequence", "value") == "one_at_a_time" and not self.hasGroupAsParent(self._node):
if self._isSingularOneAtATimeNode():
# Printing one at a time and it's not an object in a group
return self._compute2DConvexHull()
return None
## Get the buildplate polygon where will be printed
# In case of printing all at once this is the same as convex hull (no individual adhesion)
# For one at the time this includes the adhesion area
def getPrintingArea(self) -> Optional[Polygon]:
if self._isSingularOneAtATimeNode():
# In one-at-a-time mode, every printed object gets it's own adhesion
printing_area = self.getAdhesionArea()
else:
printing_area = self.getConvexHull()
return printing_area
## The same as recomputeConvexHull, but using a timer if it was set.
def recomputeConvexHullDelayed(self) -> None:
if self._recompute_convex_hull_timer is not None:
@ -172,10 +188,9 @@ class ConvexHullDecorator(SceneNodeDecorator):
self._convex_hull_node = None
return
convex_hull = self.getConvexHull()
if self._convex_hull_node:
self._convex_hull_node.setParent(None)
hull_node = ConvexHullNode.ConvexHullNode(self._node, convex_hull, self._raft_thickness, root)
hull_node = ConvexHullNode.ConvexHullNode(self._node, self.getPrintingArea(), self._raft_thickness, root)
self._convex_hull_node = hull_node
def _onSettingValueChanged(self, key: str, property_name: str) -> None:
@ -416,6 +431,14 @@ class ConvexHullDecorator(SceneNodeDecorator):
return True
return self.__isDescendant(root, node.getParent())
## True if print_sequence is one_at_a_time and _node is not part of a group
def _isSingularOneAtATimeNode(self) -> bool:
if self._node is None:
return False
return self._global_stack is not None \
and self._global_stack.getProperty("print_sequence", "value") == "one_at_a_time" \
and not self.hasGroupAsParent(self._node)
_affected_settings = [
"adhesion_type", "raft_margin", "print_sequence",
"skirt_gap", "skirt_line_count", "skirt_brim_line_width", "skirt_distance", "brim_line_count"]

View file

@ -46,6 +46,7 @@ class ConvexHullNode(SceneNode):
# The node this mesh is "watching"
self._node = node
# Area of the head + fans for display as a shadow on the buildplate
self._convex_hull_head_mesh = None # type: Optional[MeshData]
self._node.decoratorsChanged.connect(self._onNodeDecoratorsChanged)
@ -79,14 +80,17 @@ class ConvexHullNode(SceneNode):
if self.getParent():
if self.getMeshData() and isinstance(self._node, SceneNode) and self._node.callDecoration("getBuildPlateNumber") == Application.getInstance().getMultiBuildPlateModel().activeBuildPlate:
# The object itself (+ adhesion in one-at-a-time mode)
renderer.queueNode(self, transparent = True, shader = ConvexHullNode.shader, backface_cull = True, sort = -8)
if self._convex_hull_head_mesh:
# The full head. Rendered as a hint to the user: If this area overlaps another object A; this object
# cannot be printed after A, because the head would hit A while printing the current object
renderer.queueNode(self, shader = ConvexHullNode.shader, transparent = True, mesh = self._convex_hull_head_mesh, backface_cull = True, sort = -8)
return True
def _onNodeDecoratorsChanged(self, node: SceneNode) -> None:
convex_hull_head = self._node.callDecoration("getConvexHullHead")
convex_hull_head = self._node.callDecoration("getConvexHullHeadFull")
if convex_hull_head:
convex_hull_head_builder = MeshBuilder()
convex_hull_head_builder.addConvexPolygon(convex_hull_head.getPoints(), self._mesh_height - self._thickness)

View file

@ -88,7 +88,7 @@ class CuraSceneNode(SceneNode):
## Return if any area collides with the convex hull of this scene node
def collidesWithAreas(self, areas: List[Polygon]) -> bool:
convex_hull = self.callDecoration("getConvexHull")
convex_hull = self.callDecoration("getPrintingArea")
if convex_hull:
if not convex_hull.isValid():
return False

View file

@ -1008,9 +1008,9 @@ class MachineManager(QObject):
# Set quality and quality_changes for each ExtruderStack
for position, node in quality_group.nodes_for_extruders.items():
self._global_container_stack.extruders[str(position)].quality = node.container
self._global_container_stack.extruderList[position].quality = node.container
if empty_quality_changes:
self._global_container_stack.extruders[str(position)].qualityChanges = empty_quality_changes_container
self._global_container_stack.extruderList[position].qualityChanges = empty_quality_changes_container
self.activeQualityGroupChanged.emit()
self.activeQualityChangesGroupChanged.emit()

View file

@ -7,14 +7,21 @@ from PyQt5.QtWidgets import QSplashScreen
from UM.Resources import Resources
from UM.Application import Application
from cura import ApplicationMetadata
class CuraSplashScreen(QSplashScreen):
def __init__(self):
super().__init__()
self._scale = 0.7
self._version_y_offset = 0 # when extra visual elements are in the background image, move version text down
if ApplicationMetadata.IsEnterpriseVersion:
splash_image = QPixmap(Resources.getPath(Resources.Images, "cura_enterprise.png"))
self._version_y_offset = 26
else:
splash_image = QPixmap(Resources.getPath(Resources.Images, "cura.png"))
self.setPixmap(splash_image)
self._current_message = ""
@ -52,20 +59,17 @@ class CuraSplashScreen(QSplashScreen):
painter.setRenderHint(QPainter.Antialiasing, True)
version = Application.getInstance().getVersion().split("-")
buildtype = Application.getInstance().getBuildType()
if buildtype:
version[0] += " (%s)" % buildtype
# Draw version text
font = QFont() # Using system-default font here
font.setPixelSize(37)
font.setPixelSize(18)
painter.setFont(font)
painter.drawText(60, 66, 330 * self._scale, 230 * self._scale, Qt.AlignLeft | Qt.AlignTop, version[0])
painter.drawText(60, 70 + self._version_y_offset, 330 * self._scale, 230 * self._scale, Qt.AlignLeft | Qt.AlignTop, version[0])
if len(version) > 1:
font.setPixelSize(16)
painter.setFont(font)
painter.setPen(QColor(200, 200, 200, 255))
painter.drawText(247, 105, 330 * self._scale, 255 * self._scale, Qt.AlignLeft | Qt.AlignTop, version[1])
painter.drawText(247, 105 + self._version_y_offset, 330 * self._scale, 255 * self._scale, Qt.AlignLeft | Qt.AlignTop, version[1])
painter.setPen(QColor(255, 255, 255, 255))
# Draw the loading image

View file

@ -298,9 +298,7 @@ class PrintInformation(QObject):
# Only update the job name when it's not user-specified.
if not self._is_user_specified_job_name:
if self._pre_sliced:
self._job_name = catalog.i18nc("@label", "Pre-sliced file {0}", base_name)
elif self._application.getInstance().getPreferences().getValue("cura/jobname_prefix"):
if self._application.getInstance().getPreferences().getValue("cura/jobname_prefix") and not self._pre_sliced:
# Don't add abbreviation if it already has the exact same abbreviation.
if base_name.startswith(self._abbr_machine + "_"):
self._job_name = base_name

View file

@ -0,0 +1,190 @@
# ColorMix script - 2-1 extruder color mix and blending
# This script is specific for the Geeetech A10M dual extruder but should work with other Marlin printers.
# It runs with the PostProcessingPlugin which is released under the terms of the AGPLv3 or higher.
# This script is licensed under the Creative Commons - Attribution - Share Alike (CC BY-SA) terms
#Authors of the 2-1 ColorMix plug-in / script:
# Written by John Hryb - john.hryb.4@gmail.com
##history / change-log:
##V1.0.0
## Uses -
## M163 - Set Mix Factor
## M164 - Save Mix - saves to T3 as a unique mix
import re #To perform the search and replace.
from ..Script import Script
class ColorMix(Script):
def __init__(self):
super().__init__()
def getSettingDataString(self):
return """{
"name":"ColorMix 2-1",
"key":"ColorMix 2-1",
"metadata": {},
"version": 2,
"settings":
{
"measurement_units":
{
"label": "Units of measurement",
"description": "Input value as mm or layer number.",
"type": "enum",
"options": {"mm":"mm","layer":"Layer"},
"default_value": "layer"
},
"start_height":
{
"label": "Start Height",
"description": "Value to start at (mm or layer)",
"type": "float",
"default_value": 0,
"minimum_value": "0"
},
"behavior":
{
"label": "Fixed or blend",
"description": "Select Fixed (set new mixture) or Blend mode (dynamic mix)",
"type": "enum",
"options": {"fixed_value":"Fixed","blend_value":"Blend"},
"default_value": "fixed_value"
},
"finish_height":
{
"label": "Finish Height",
"description": "Value to stop at (mm or layer)",
"type": "float",
"default_value": 0,
"minimum_value": "0",
"minimum_value_warning": "0.1",
"enabled": "c_behavior == 'blend_value'"
},
"mix_start_ratio":
{
"label": "Start mix ratio",
"description": "First extruder percentage 0-100",
"type": "float",
"default_value": 100,
"minimum_value": "0",
"minimum_value_warning": "0",
"maximum_value_warning": "100"
},
"mix_finish_ratio":
{
"label": "End mix ratio",
"description": "First extruder percentage 0-100 to finish blend",
"type": "float",
"default_value": 0,
"minimum_value": "0",
"minimum_value_warning": "0",
"maximum_value_warning": "100",
"enabled": "c_behavior == 'blend_value'"
},
"notes":
{
"label": "Notes",
"description": "A spot to put a note",
"type": "str",
"default_value": ""
}
}
}"""
def getValue(self, line, key, default = None): #replace default getvalue due to comment-reading feature
if not key in line or (";" in line and line.find(key) > line.find(";") and
not ";ChangeAtZ" in key and not ";LAYER:" in key):
return default
subPart = line[line.find(key) + len(key):] #allows for string lengths larger than 1
if ";ChangeAtZ" in key:
m = re.search("^[0-4]", subPart)
elif ";LAYER:" in key:
m = re.search("^[+-]?[0-9]*", subPart)
else:
#the minus at the beginning allows for negative values, e.g. for delta printers
m = re.search("^[-]?[0-9]*\.?[0-9]*", subPart)
if m == None:
return default
try:
return float(m.group(0))
except:
return default
def execute(self, data):
#get user variables
firstHeight = 0.0
secondHeight = 0.0
firstMix = 0.0
SecondMix = 0.0
firstHeight = self.getSettingValueByKey("start_height")
secondHeight = self.getSettingValueByKey("finish_height")
firstMix = self.getSettingValueByKey("mix_start_ratio")
SecondMix = self.getSettingValueByKey("mix_finish_ratio")
#locals
layer = 0
#get layer height
layerHeight = .2
for active_layer in data:
lines = active_layer.split("\n")
for line in lines:
if ";Layer height: " in line:
layerHeight = self.getValue(line, ";Layer height: ", layerHeight)
break
#get layers to use
startLayer = 0
endLayer = 0
if self.getSettingValueByKey("measurement_units") == "mm":
if firstHeight == 0:
startLayer = 0
else:
startLayer = firstHeight / layerHeight
if secondHeight == 0:
endLayer = 0
else:
endLayer = secondHeight / layerHeight
else: #layer height
startLayer = firstHeight
endLayer = secondHeight
#see if one-shot
if self.getSettingValueByKey("behavior") == "fixed_value":
endLayer = startLayer
firstExtruderIncrements = 0
else: #blend
firstExtruderIncrements = (SecondMix - firstMix) / (endLayer - startLayer)
firstExtruderValue = 0
index = 0
#start scanning
for active_layer in data:
modified_gcode = ""
lineIndex = 0;
lines = active_layer.split("\n")
for line in lines:
#dont leave blanks
if line != "":
modified_gcode += line + "\n"
# find current layer
if ";LAYER:" in line:
layer = self.getValue(line, ";LAYER:", layer)
if (layer >= startLayer) and (layer <= endLayer): #find layers of interest
if lines[lineIndex + 4] == "T2": #check if needing to delete old data
del lines[(lineIndex + 1):(lineIndex + 5)]
firstExtruderValue = int(((layer - startLayer) * firstExtruderIncrements) + firstMix)
if firstExtruderValue == 100:
modified_gcode += "M163 S0 P1\n"
modified_gcode += "M163 S1 P0\n"
elif firstExtruderValue == 0:
modified_gcode += "M163 S0 P0\n"
modified_gcode += "M163 S1 P1\n"
else:
modified_gcode += "M163 S0 P0.{:02d}\n".format(firstExtruderValue)
modified_gcode += "M163 S1 P0.{:02d}\n".format(100 - firstExtruderValue)
modified_gcode += "M164 S2\n"
modified_gcode += "T2\n"
lineIndex += 1 #for deleting index
data[index] = modified_gcode
index += 1
return data

View file

@ -125,11 +125,11 @@ class ZeroConfClient:
if not info.address:
info = zero_conf.get_service_info(service_type, name)
if info:
if info and info.address:
type_of_device = info.properties.get(b"type", None)
if type_of_device:
if type_of_device == b"printer":
address = '.'.join(map(lambda n: str(n), info.address))
address = '.'.join(map(str, info.address))
self.addedNetworkCluster.emit(str(name), address, info.properties)
else:
Logger.log("w", "The type of the found device is '%s', not 'printer'." % type_of_device)

View file

@ -0,0 +1,69 @@
import configparser
from typing import Tuple, List
import io
from UM.VersionUpgrade import VersionUpgrade
# Merged preferences: machine_head_polygon and machine_head_with_fans_polygon -> machine_head_with_fans_polygon
# When both are present, machine_head_polygon will be removed
# When only one of the two is present, it's value will be used
class VersionUpgrade44to45(VersionUpgrade):
def getCfgVersion(self, serialised: str) -> int:
parser = configparser.ConfigParser(interpolation = None)
parser.read_string(serialised)
format_version = int(parser.get("general", "version")) # Explicitly give an exception when this fails. That means that the file format is not recognised.
setting_version = int(parser.get("metadata", "setting_version", fallback = "0"))
return format_version * 1000000 + setting_version
## Upgrades Preferences to have the new version number.
#
# This renames the renamed settings in the list of visible settings.
def upgradePreferences(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
parser = configparser.ConfigParser(interpolation = None)
parser.read_string(serialized)
# Update version number.
parser["metadata"]["setting_version"] = "11"
result = io.StringIO()
parser.write(result)
return [filename], [result.getvalue()]
## Upgrades instance containers to have the new version
# number.
#
# This renames the renamed settings in the containers.
def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
parser = configparser.ConfigParser(interpolation = None, comment_prefixes=())
parser.read_string(serialized)
# Update version number.
parser["metadata"]["setting_version"] = "11"
if "values" in parser:
# merge machine_head_with_fans_polygon (preferred) and machine_head_polygon
if "machine_head_with_fans_polygon" in parser["values"]:
if "machine_head_polygon" in parser["values"]:
del parser["values"]["machine_head_polygon"]
elif "machine_head_polygon" in parser["values"]:
parser["values"]["machine_head_with_fans_polygon"] = parser["values"]["machine_head_polygon"]
del parser["values"]["machine_head_polygon"]
result = io.StringIO()
parser.write(result)
return [filename], [result.getvalue()]
## Upgrades stacks to have the new version number.
def upgradeStack(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]:
parser = configparser.ConfigParser(interpolation = None)
parser.read_string(serialized)
# Update version number.
if "metadata" not in parser:
parser["metadata"] = {}
parser["metadata"]["setting_version"] = "11"
result = io.StringIO()
parser.write(result)
return [filename], [result.getvalue()]

View file

@ -0,0 +1,61 @@
# Copyright (c) 2019 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
from typing import Any, Dict, TYPE_CHECKING
from . import VersionUpgrade44to45
if TYPE_CHECKING:
from UM.Application import Application
upgrade = VersionUpgrade44to45.VersionUpgrade44to45()
def getMetaData() -> Dict[str, Any]:
return {
"version_upgrade": {
# From To Upgrade function
("preferences", 6000010): ("preferences", 6000011, upgrade.upgradePreferences),
("machine_stack", 4000010): ("machine_stack", 4000011, upgrade.upgradeStack),
("extruder_train", 4000010): ("extruder_train", 4000011, upgrade.upgradeStack),
("definition_changes", 4000010): ("definition_changes", 4000011, upgrade.upgradeInstanceContainer),
("quality_changes", 4000010): ("quality_changes", 4000011, upgrade.upgradeInstanceContainer),
("quality", 4000010): ("quality", 4000011, upgrade.upgradeInstanceContainer),
("user", 4000010): ("user", 4000011, upgrade.upgradeInstanceContainer),
},
"sources": {
"preferences": {
"get_version": upgrade.getCfgVersion,
"location": {"."}
},
"machine_stack": {
"get_version": upgrade.getCfgVersion,
"location": {"./machine_instances"}
},
"extruder_train": {
"get_version": upgrade.getCfgVersion,
"location": {"./extruders"}
},
"definition_changes": {
"get_version": upgrade.getCfgVersion,
"location": {"./definition_changes"}
},
"quality_changes": {
"get_version": upgrade.getCfgVersion,
"location": {"./quality_changes"}
},
"quality": {
"get_version": upgrade.getCfgVersion,
"location": {"./quality"}
},
"user": {
"get_version": upgrade.getCfgVersion,
"location": {"./user"}
}
}
}
def register(app: "Application") -> Dict[str, Any]:
return {"version_upgrade": upgrade}

View file

@ -0,0 +1,8 @@
{
"name": "Version Upgrade 4.4 to 4.5",
"author": "Ultimaker B.V.",
"version": "1.0.0",
"description": "Upgrades configurations from Cura 4.4 to Cura 4.5.",
"api": "7.0",
"i18n-catalog": "cura"
}

View file

@ -0,0 +1,42 @@
import configparser
import VersionUpgrade44to45
import pytest
before_update = """[general]
version = 4
name = Creality CR-10S_settings
definition = creality_cr10s
[metadata]
type = definition_changes
setting_version = 11
[values]
%s
"""
before_after_list = [
("machine_head_with_fans_polygon = [[-99, 99], [-99, -44], [45, 99], [45, -44]]", "[[-99, 99], [-99, -44], [45, 99], [45, -44]]"),
("", None),
("machine_head_polygon = [[-98, 99], [-99, -44], [45, 99], [45, -44]]", "[[-98, 99], [-99, -44], [45, 99], [45, -44]]"),
("machine_head_polygon = [[-87, 99], [-99, -44], [45, 99], [45, -44]]\nmachine_head_with_fans_polygon = [[-99, 99], [-99, -44], [45, 99], [45, -44]]", "[[-99, 99], [-99, -44], [45, 99], [45, -44]]"),
]
class TestVersionUpgrade44to45:
@pytest.mark.parametrize("after_string, after_value", before_after_list)
def test_upgrade(self, after_string, after_value):
upgrader = VersionUpgrade44to45.VersionUpgrade44to45()
file_name, new_data = upgrader.upgradeInstanceContainer(before_update % after_string, "whatever")
parser = configparser.ConfigParser(interpolation=None)
parser.read_string(new_data[0])
if after_value is None:
assert "machine_head_with_fans_polygon" not in parser["values"]
else:
assert parser["values"]["machine_head_with_fans_polygon"] == after_value
assert "machine_head_polygon" not in parser["values"]

View file

@ -88,7 +88,7 @@
"adhesion_type": { "default_value": "skirt" },
"machine_nozzle_heat_up_speed": { "default_value": 2 },
"machine_nozzle_cool_down_speed": { "default_value": 2 },
"machine_head_polygon": { "default_value": [[-75, -18],[-75, 35],[18, 35],[18, -18]] },
"machine_head_with_fans_polygon": { "default_value": [[-75, -18],[-75, 35],[18, 35],[18, -18]] },
"gantry_height": { "value": "55" },
"machine_max_feedrate_x": { "default_value": 300 },
"machine_max_feedrate_y": { "default_value": 300 },

View file

@ -88,7 +88,7 @@
"adhesion_type": { "default_value": "skirt" },
"machine_nozzle_heat_up_speed": { "default_value": 2 },
"machine_nozzle_cool_down_speed": { "default_value": 2 },
"machine_head_polygon": { "default_value": [[-75, -18],[-75, 35],[18, 35],[18, -18]] },
"machine_head_with_fans_polygon": { "default_value": [[-75, -18],[-75, 35],[18, 35],[18, -18]] },
"gantry_height": { "value": "55" },
"machine_max_feedrate_x": { "default_value": 300 },
"machine_max_feedrate_y": { "default_value": 300 },

View file

@ -87,7 +87,7 @@
"adhesion_type": { "default_value": "skirt" },
"machine_nozzle_heat_up_speed": { "default_value": 2 },
"machine_nozzle_cool_down_speed": { "default_value": 2 },
"machine_head_polygon": { "default_value": [[-75, -18],[-75, 35],[18, 35],[18, -18]] },
"machine_head_with_fans_polygon": { "default_value": [[-75, -18],[-75, 35],[18, 35],[18, -18]] },
"gantry_height": { "value": "55" },
"machine_max_feedrate_x": { "default_value": 300 },
"machine_max_feedrate_y": { "default_value": 300 },

View file

@ -7,13 +7,6 @@
"machine_width": { "default_value": 300 },
"machine_depth": { "default_value": 300 },
"machine_height": { "default_value": 400 },
"machine_head_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[22, -32],
[22, 34]
]
},
"machine_head_with_fans_polygon": { "default_value": [
[-26, 34],
[-26, -32],

View file

@ -8,13 +8,6 @@
"machine_width": { "default_value": 450 },
"machine_depth": { "default_value": 450 },
"machine_height": { "default_value": 470 },
"machine_head_polygon": { "default_value": [
[-44, 34],
[-44, -34],
[18, -34],
[18, 34]
]
},
"machine_head_with_fans_polygon": { "default_value": [
[-44, 34],
[-44, -34],

View file

@ -7,13 +7,6 @@
"machine_width": { "default_value": 300 },
"machine_depth": { "default_value": 220 },
"machine_height": { "default_value": 300 },
"machine_head_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[22, -32],
[22, 34]
]
},
"machine_head_with_fans_polygon": { "default_value": [
[-26, 34],
[-26, -32],

View file

@ -7,13 +7,6 @@
"machine_width": { "default_value": 400 },
"machine_depth": { "default_value": 400 },
"machine_height": { "default_value": 400 },
"machine_head_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[22, -32],
[22, 34]
]
},
"machine_head_with_fans_polygon": { "default_value": [
[-26, 34],
[-26, -32],

View file

@ -7,13 +7,6 @@
"machine_width": { "default_value": 500 },
"machine_depth": { "default_value": 500 },
"machine_height": { "default_value": 500 },
"machine_head_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[22, -32],
[22, 34]
]
},
"machine_head_with_fans_polygon": { "default_value": [
[-26, 34],
[-26, -32],

View file

@ -5,13 +5,6 @@
"overrides": {
"machine_name": { "default_value": "Creality CR-10S Pro" },
"machine_start_gcode": { "default_value": "M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration\nM203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate\nM204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration\nM205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\nM420 S1 Z2 ;Enable ABL using saved Mesh and Fade Height\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\n"},
"machine_head_polygon": { "default_value": [
[-44, 34],
[-44, -34],
[18, -34],
[18, 34]
]
},
"machine_head_with_fans_polygon": { "default_value": [
[-44, 34],
[-44, -34],

View file

@ -7,13 +7,6 @@
"machine_width": { "default_value": 220 },
"machine_depth": { "default_value": 220 },
"machine_height": { "default_value": 250 },
"machine_head_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[22, -32],
[22, 34]
]
},
"machine_head_with_fans_polygon": { "default_value": [
[-26, 34],
[-26, -32],

View file

@ -8,13 +8,6 @@
"machine_width": { "default_value": 150 },
"machine_depth": { "default_value": 150 },
"machine_height": { "default_value": 200 },
"machine_head_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[22, -32],
[22, 34]
]
},
"machine_head_with_fans_polygon": { "default_value": [
[-26, 34],
[-26, -32],

View file

@ -17,13 +17,6 @@
[[-117.5, 117.5], [-117.5, 108], [117.5, 108], [117.5, 117.5]],
[[-117.5, -108], [-117.5, -117.5], [117.5, -117.5], [117.5, -108]]
]},
"machine_head_polygon": { "default_value": [
[-1, 1],
[-1, -1],
[1, -1],
[1, 1]
]
},
"machine_head_with_fans_polygon": { "default_value": [
[-26, 34],
[-26, -32],
@ -31,6 +24,9 @@
[32, 34]
]
},
"machine_start_gcode": {
"default_value": "; Ender 3 Custom Start G-code\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.3 F5000.0 ; Move to start position\nG1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line\nG1 X0.4 Y200.0 Z0.3 F5000.0 ; Move to side a little\nG1 X0.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish"
},
"gantry_height": { "value": 25 }
}

View file

@ -7,13 +7,6 @@
"machine_width": { "default_value": 452 },
"machine_depth": { "default_value": 468 },
"machine_height": { "default_value": 482 },
"machine_head_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[22, -32],
[22, 34]
]
},
"machine_head_with_fans_polygon": { "default_value": [
[-26, 34],
[-26, -32],

View file

@ -8,13 +8,6 @@
"machine_width": { "default_value": 220 },
"machine_depth": { "default_value": 220 },
"machine_height": { "default_value": 300 },
"machine_head_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[22, -32],
[22, 34]
]
},
"machine_head_with_fans_polygon": { "default_value": [
[-26, 34],
[-26, -32],

View file

@ -8,13 +8,6 @@
"machine_width": { "default_value": 350 },
"machine_depth": { "default_value": 350 },
"machine_height": { "default_value": 400 },
"machine_head_polygon": { "default_value": [
[-26, 34],
[-26, -32],
[22, -32],
[22, 34]
]
},
"machine_head_with_fans_polygon": { "default_value": [
[-26, 34],
[-26, -32],

View file

@ -6,7 +6,7 @@
"type": "extruder",
"author": "Ultimaker",
"manufacturer": "Unknown",
"setting_version": 10,
"setting_version": 11,
"visible": false,
"position": "0"
},

View file

@ -7,7 +7,7 @@
"author": "Ultimaker",
"category": "Other",
"manufacturer": "Unknown",
"setting_version": 10,
"setting_version": 11,
"file_formats": "text/x-gcode;application/x-stl-ascii;application/x-stl-binary;application/x-wavefront-obj;application/x3g",
"visible": false,
"has_materials": true,
@ -421,34 +421,6 @@
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"machine_head_polygon":
{
"label": "Machine Head Polygon",
"description": "A 2D silhouette of the print head (fan caps excluded).",
"type": "polygon",
"default_value":
[
[
-1,
1
],
[
-1,
-1
],
[
1,
-1
],
[
1,
1
]
],
"settable_per_mesh": false,
"settable_per_extruder": false,
"settable_per_meshgroup": false
},
"machine_head_with_fans_polygon":
{
"label": "Machine Head & Fan Polygon",
@ -2101,6 +2073,36 @@
"settable_per_mesh": true
}
}
},
"skin_edge_support_thickness":
{
"label": "Skin Edge Support Thickness",
"description": "The thickness of the extra infill that supports skin edges.",
"unit": "mm",
"default_value": 0.8,
"minimum_value": "0",
"maximum_value": "machine_height",
"type": "float",
"value": "0",
"comment": "This was put at 0 to keep the default behaviour the same, but in the original PR the 'value' was: resolveOrValue('infill_sparse_thickness') * (4 if infill_sparse_density < 12.5 else (3 if infill_sparse_density < 25 else (2 if infill_sparse_density < 50 else 1)))",
"limit_to_extruder": "infill_extruder_nr",
"enabled": "infill_sparse_density > 0",
"settable_per_mesh": true,
"children":
{
"skin_edge_support_layers":
{
"label": "Skin Edge Support Layers",
"description": "The number of infill layers that supports skin edges.",
"default_value": 4,
"minimum_value": "0",
"type": "int",
"value": "math.ceil(round(skin_edge_support_thickness / resolveOrValue('infill_sparse_thickness'), 4))",
"limit_to_extruder": "infill_extruder_nr",
"enabled": "infill_sparse_density > 0",
"settable_per_mesh": true
}
}
}
}
},
@ -2737,7 +2739,6 @@
"minimum_value": "0",
"minimum_value_warning": "line_width * 1.5",
"maximum_value_warning": "10",
"enabled": false,
"settable_per_mesh": false,
"settable_per_extruder": true
},

View file

@ -59,14 +59,6 @@
"adhesion_type": {
"default_value": "skirt"
},
"machine_head_polygon": {
"default_value": [
[-75, 35],
[18, 35],
[18, -18],
[-75, -18]
]
},
"machine_head_with_fans_polygon": {
"default_value": [
[-75, 35],

View file

@ -28,7 +28,7 @@
"machine_center_is_zero": {
"default_value": false
},
"machine_head_polygon": {
"machine_head_with_fans_polygon": {
"default_value": [
[-75, -18],
[-75, 35],

View file

@ -32,7 +32,7 @@
"machine_center_is_zero": {
"default_value": true
},
"machine_head_polygon": {
"machine_head_with_fans_polygon": {
"default_value": [
[-43.7, -19.2],
[-43.7, 55],

View file

@ -32,7 +32,7 @@
"machine_depth": {
"default_value": 150
},
"machine_head_polygon": {
"machine_head_with_fans_polygon": {
"default_value": [
[-30, 34],
[-30, -32],

View file

@ -32,7 +32,7 @@
"machine_center_is_zero": {
"default_value": false
},
"machine_head_polygon": {
"machine_head_with_fans_polygon": {
"default_value": [
[-75, -18],
[-75, 35],

View file

@ -32,7 +32,7 @@
"machine_center_is_zero": {
"default_value": false
},
"machine_head_polygon": {
"machine_head_with_fans_polygon": {
"default_value": [
[-75, -18],
[-75, 35],

View file

@ -34,7 +34,7 @@
"machine_depth": {
"default_value": 300
},
"machine_head_polygon": {
"machine_head_with_fans_polygon": {
"default_value": [
[-30, 34],
[-30, -32],

View file

@ -32,7 +32,7 @@
"machine_depth": {
"default_value": 150
},
"machine_head_polygon": {
"machine_head_with_fans_polygon": {
"default_value": [
[-30, 34],
[-30, -32],

View file

@ -31,14 +31,6 @@
"machine_center_is_zero": {
"default_value": false
},
"machine_head_polygon": {
"default_value": [
[-75, -18],
[-75, 35],
[18, 35],
[18, -18]
]
},
"machine_head_with_fans_polygon": {
"default_value": [
[-75, -18],

View file

@ -31,7 +31,7 @@
"machine_center_is_zero": {
"default_value": false
},
"machine_head_polygon": {
"machine_head_with_fans_polygon": {
"default_value": [
[-75, -18],
[-75, 35],

View file

@ -16,7 +16,7 @@
},
"overrides": {
"machine_head_polygon": { "default_value": [[ 0, 0], [ 0, 0], [ 0, 0], [ 0, 0]] },
"machine_head_with_fans_polygon": { "default_value": [[ 0, 0], [ 0, 0], [ 0, 0], [ 0, 0]] },
"prime_tower_size": { "default_value": 8.660254037844387 },
"layer_height": { "default_value": 0.2 },
"speed_print": { "default_value": 40 },

View file

@ -21,7 +21,7 @@
"machine_end_gcode": {
"default_value": " ; -- END GCODE --\n G1 X0 Y230 ; Get extruder out of way.\n M107 ; Turn off fan\n G91 ; Relative positioning\n G0 Z20 ; Lift extruder up\n T0\n G1 E-1 ; Reduce filament pressure\n M104 T0 S0 ; Turn ectruder heater off\n G90 ; Absolute positioning\n G92 E0 ; Reset extruder position\n M140 S0 ; Disable heated bed\n M84 ; Turn steppers off\n ; -- end of END GCODE --\n"
},
"machine_head_polygon": { "default_value": [[ 22, 67], [ 22, 51], [ 36, 51], [ 36, 67]] },
"machine_head_with_fans_polygon": { "default_value": [[ 22, 67], [ 22, 51], [ 36, 51], [ 36, 67]] },
"skirt_gap": { "default_value": 5.0 },
"cool_min_layer_time": { "default_value": 10 },
"prime_tower_size": { "default_value": 7.745966692414834 },

View file

@ -21,7 +21,7 @@
"machine_end_gcode": {
"default_value": " ; -- END GCODE --\n G1 X0 Y230 ; Get extruder out of way.\n M107 ; Turn off fan\n G91 ; Relative positioning\n G0 Z20 ; Lift extruder up\n T0\n G1 E-1 ; Reduce filament pressure\n M104 T0 S0 ; Turn extruder heater off\n G90 ; Absolute positioning\n G92 E0 ; Reset extruder position\n M140 S0 ; Disable heated bed\n M84 ; Turn steppers off\n ; -- end of END GCODE --\n"
},
"machine_head_polygon": { "default_value": [[ 18, 0], [ 18, 65], [ 32, 65], [ 32, 0]] },
"machine_head_with_fans_polygon": { "default_value": [[ 18, 0], [ 18, 65], [ 32, 65], [ 32, 0]] },
"cool_min_layer_time": { "default_value": 10 },
"prime_tower_size": { "default_value": 7.745966692414834 },
"skirt_gap": { "default_value": 5.0 },

View file

@ -15,7 +15,7 @@
},
"overrides": {
"machine_head_polygon": { "default_value": [[ 16, 30], [ 16, 45], [ 16, 45], [ 16, 30]] },
"machine_head_with_fans_polygon": { "default_value": [[ 16, 30], [ 16, 45], [ 16, 45], [ 16, 30]] },
"prime_tower_size": { "default_value": 8.660254037844387 },
"skirt_gap": { "default_value": 5.0 },
"cool_min_layer_time": { "default_value": 15 },

View file

@ -21,7 +21,7 @@
"machine_end_gcode": {
"default_value": " ; -- END GCODE --\n G1 X0 Y230 ; Get extruder out of way.\n M107 ; Turn off fan\n G91 ; Relative positioning\n G0 Z20 ; Lift extruder up\n T0\n G1 E-1 ; Reduce filament pressure\n M104 T0 S0 ; Turn ectruder heater off\n G90 ; Absolute positioning\n G92 E0 ; Reset extruder position\n M140 S0 ; Disable heated bed\n M84 ; Turn steppers off\n ; -- end of END GCODE --\n"
},
"machine_head_polygon": { "default_value": [[ 40, 15], [ 40, 60], [ 30, 60], [ 30, 15]] },
"machine_head_with_fans_polygon": { "default_value": [[ 40, 15], [ 40, 60], [ 30, 60], [ 30, 15]] },
"support_pattern": { "default_value": "grid" },
"cool_min_layer_time": { "default_value": 10 },
"support_angle": { "default_value": 45 },

View file

@ -23,7 +23,7 @@
"machine_height": { "default_value": 200 },
"machine_depth": { "default_value": 200 },
"machine_center_is_zero": { "default_value": false },
"machine_head_polygon":
"machine_head_with_fans_polygon":
{
"default_value":
[

View file

@ -28,7 +28,7 @@
"machine_center_is_zero": {
"default_value": false
},
"machine_head_polygon": {
"machine_head_with_fans_polygon": {
"default_value": [
[-30, 34],
[-30, -32],

View file

@ -35,14 +35,6 @@
"machine_center_is_zero": {
"default_value": false
},
"machine_head_polygon": {
"default_value": [
[-60, -18],
[-60, 40],
[18, 40],
[18, -18]
]
},
"machine_head_with_fans_polygon": {
"default_value": [
[-60, -40],

View file

@ -36,14 +36,6 @@
"machine_use_extruder_offset_to_offset_coords": {
"default_value": true
},
"machine_head_polygon": {
"default_value": [
[-60, -18],
[-60, 40],
[18, 40],
[18, -18]
]
},
"machine_head_with_fans_polygon": {
"default_value": [
[-60, -40],

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View file

@ -4,7 +4,7 @@ name = Quick
definition = ultimaker_s3
[metadata]
setting_version = 10
setting_version = 11
type = intent
intent_category = quick
quality_type = draft

View file

@ -4,7 +4,7 @@ name = Accurate
definition = ultimaker_s3
[metadata]
setting_version = 10
setting_version = 11
type = intent
intent_category = engineering
quality_type = fast

View file

@ -4,7 +4,7 @@ name = Visual
definition = ultimaker_s3
[metadata]
setting_version = 10
setting_version = 11
type = intent
quality_type = fast
intent_category = visual

View file

@ -4,7 +4,7 @@ name = Visual
definition = ultimaker_s3
[metadata]
setting_version = 10
setting_version = 11
type = intent
quality_type = high
intent_category = visual

View file

@ -4,7 +4,7 @@ name = Accurate
definition = ultimaker_s3
[metadata]
setting_version = 10
setting_version = 11
type = intent
intent_category = engineering
quality_type = normal

View file

@ -4,7 +4,7 @@ name = Visual
definition = ultimaker_s3
[metadata]
setting_version = 10
setting_version = 11
type = intent
quality_type = normal
intent_category = visual

View file

@ -4,7 +4,7 @@ name = Quick
definition = ultimaker_s3
[metadata]
setting_version = 10
setting_version = 11
type = intent
intent_category = quick
quality_type = draft

View file

@ -4,7 +4,7 @@ name = Accurate
definition = ultimaker_s3
[metadata]
setting_version = 10
setting_version = 11
type = intent
intent_category = engineering
quality_type = fast

View file

@ -4,7 +4,7 @@ name = Visual
definition = ultimaker_s3
[metadata]
setting_version = 10
setting_version = 11
type = intent
quality_type = fast
intent_category = visual

View file

@ -4,7 +4,7 @@ name = Visual
definition = ultimaker_s3
[metadata]
setting_version = 10
setting_version = 11
type = intent
quality_type = high
intent_category = visual

View file

@ -4,7 +4,7 @@ name = Accurate
definition = ultimaker_s3
[metadata]
setting_version = 10
setting_version = 11
type = intent
intent_category = engineering
quality_type = normal

View file

@ -4,7 +4,7 @@ name = Visual
definition = ultimaker_s3
[metadata]
setting_version = 10
setting_version = 11
type = intent
quality_type = normal
intent_category = visual

View file

@ -4,7 +4,7 @@ name = Quick
definition = ultimaker_s3
[metadata]
setting_version = 10
setting_version = 11
type = intent
intent_category = quick
quality_type = draft

View file

@ -4,7 +4,7 @@ name = Accurate
definition = ultimaker_s3
[metadata]
setting_version = 10
setting_version = 11
type = intent
intent_category = engineering
quality_type = fast

View file

@ -4,7 +4,7 @@ name = Visual
definition = ultimaker_s3
[metadata]
setting_version = 10
setting_version = 11
type = intent
quality_type = fast
intent_category = visual

View file

@ -4,7 +4,7 @@ name = Visual
definition = ultimaker_s3
[metadata]
setting_version = 10
setting_version = 11
type = intent
quality_type = high
intent_category = visual

View file

@ -4,7 +4,7 @@ name = Accurate
definition = ultimaker_s3
[metadata]
setting_version = 10
setting_version = 11
type = intent
intent_category = engineering
quality_type = normal

View file

@ -4,7 +4,7 @@ name = Visual
definition = ultimaker_s3
[metadata]
setting_version = 10
setting_version = 11
type = intent
quality_type = normal
intent_category = visual

View file

@ -4,7 +4,7 @@ name = Quick
definition = ultimaker_s5
[metadata]
setting_version = 10
setting_version = 11
type = intent
intent_category = quick
quality_type = draft

View file

@ -4,7 +4,7 @@ name = Accurate
definition = ultimaker_s5
[metadata]
setting_version = 10
setting_version = 11
type = intent
intent_category = engineering
quality_type = fast

View file

@ -4,7 +4,7 @@ name = Visual
definition = ultimaker_s5
[metadata]
setting_version = 10
setting_version = 11
type = intent
quality_type = fast
intent_category = visual

View file

@ -4,7 +4,7 @@ name = Visual
definition = ultimaker_s5
[metadata]
setting_version = 10
setting_version = 11
type = intent
quality_type = high
intent_category = visual

View file

@ -4,7 +4,7 @@ name = Accurate
definition = ultimaker_s5
[metadata]
setting_version = 10
setting_version = 11
type = intent
intent_category = engineering
quality_type = normal

View file

@ -4,7 +4,7 @@ name = Visual
definition = ultimaker_s5
[metadata]
setting_version = 10
setting_version = 11
type = intent
quality_type = normal
intent_category = visual

View file

@ -4,7 +4,7 @@ name = Quick
definition = ultimaker_s5
[metadata]
setting_version = 10
setting_version = 11
type = intent
intent_category = quick
quality_type = draft

View file

@ -4,7 +4,7 @@ name = Accurate
definition = ultimaker_s5
[metadata]
setting_version = 10
setting_version = 11
type = intent
intent_category = engineering
quality_type = fast

View file

@ -4,7 +4,7 @@ name = Visual
definition = ultimaker_s5
[metadata]
setting_version = 10
setting_version = 11
type = intent
quality_type = fast
intent_category = visual

View file

@ -4,7 +4,7 @@ name = Visual
definition = ultimaker_s5
[metadata]
setting_version = 10
setting_version = 11
type = intent
quality_type = high
intent_category = visual

View file

@ -4,7 +4,7 @@ name = Accurate
definition = ultimaker_s5
[metadata]
setting_version = 10
setting_version = 11
type = intent
intent_category = engineering
quality_type = normal

View file

@ -4,7 +4,7 @@ name = Visual
definition = ultimaker_s5
[metadata]
setting_version = 10
setting_version = 11
type = intent
quality_type = normal
intent_category = visual

View file

@ -4,7 +4,7 @@ name = Quick
definition = ultimaker_s5
[metadata]
setting_version = 10
setting_version = 11
type = intent
intent_category = quick
quality_type = draft

View file

@ -4,7 +4,7 @@ name = Accurate
definition = ultimaker_s5
[metadata]
setting_version = 10
setting_version = 11
type = intent
intent_category = engineering
quality_type = fast

View file

@ -4,7 +4,7 @@ name = Visual
definition = ultimaker_s5
[metadata]
setting_version = 10
setting_version = 11
type = intent
quality_type = fast
intent_category = visual

View file

@ -4,7 +4,7 @@ name = Visual
definition = ultimaker_s5
[metadata]
setting_version = 10
setting_version = 11
type = intent
quality_type = high
intent_category = visual

View file

@ -4,7 +4,7 @@ name = Accurate
definition = ultimaker_s5
[metadata]
setting_version = 10
setting_version = 11
type = intent
intent_category = engineering
quality_type = normal

View file

@ -4,7 +4,7 @@ name = Visual
definition = ultimaker_s5
[metadata]
setting_version = 10
setting_version = 11
type = intent
quality_type = normal
intent_category = visual

View file

@ -12,7 +12,7 @@ UM.Dialog
id: base
//: About dialog title
title: catalog.i18nc("@title:window","About Cura")
title: catalog.i18nc("@title:window","About " + catalog.i18nc("@title:window", CuraApplication.applicationDisplayName))
minimumWidth: 500 * screenScaleFactor
minimumHeight: 650 * screenScaleFactor

View file

@ -164,6 +164,7 @@ Popup
visible: profilesList.visibleChildren.length > 1
anchors.left: parent.left
anchors.leftMargin: UM.Theme.getSize("default_margin").width
color: UM.Theme.getColor("text_inactive")
}
Column

View file

@ -13,7 +13,8 @@ Item
property color activeColor: UM.Theme.getColor("primary")
property color inactiveColor: UM.Theme.getColor("slider_groove")
property color defaultItemColor: UM.Theme.getColor("small_button_active")
property color defaultItemColor: UM.Theme.getColor("slider_groove_fill")
property color defaultItemFillColor: UM.Theme.getColor("main_background")
property int checkboxSize: Math.round(UM.Theme.getSize("radio_button").height * 0.75)
property int inactiveMarkerSize: 2 * barSize
property int barSize: UM.Theme.getSize("slider_groove_radius").height
@ -135,6 +136,7 @@ Item
radius: Math.round(width / 2)
border.color: defaultItemColor
color: defaultItemFillColor
Rectangle
{

View file

@ -4,7 +4,7 @@ name = Standard
definition = leapfrog_bolt_pro
[metadata]
setting_version = 10
setting_version = 11
type = quality
quality_type = standard
weight = 0

View file

@ -4,7 +4,7 @@ name = Standard
definition = leapfrog_bolt_pro
[metadata]
setting_version = 10
setting_version = 11
type = quality
quality_type = standard
weight = 0

View file

@ -4,7 +4,7 @@ name = Standard
definition = leapfrog_bolt_pro
[metadata]
setting_version = 10
setting_version = 11
type = quality
quality_type = standard
weight = 0

View file

@ -4,7 +4,7 @@ name = Standard
definition = leapfrog_bolt_pro
[metadata]
setting_version = 10
setting_version = 11
type = quality
quality_type = standard
weight = 0

View file

@ -4,7 +4,7 @@ name = Standard
definition = leapfrog_bolt_pro
[metadata]
setting_version = 10
setting_version = 11
type = quality
quality_type = standard
weight = 0

Some files were not shown because too many files have changed in this diff Show more