Add material indication to extruder boxes

Only if a material is known of course. But the case where it is unknown is not tested.

Contributes to issue CURA-3161.
This commit is contained in:
Ghostkeeper 2017-02-03 14:52:09 +01:00
parent 687cdcc30e
commit ee3e0ba6ab
No known key found for this signature in database
GPG key ID: C5F96EE2BC0F7E75
3 changed files with 47 additions and 1 deletions

View file

@ -323,6 +323,28 @@ class PrinterOutputDevice(QObject, OutputDevice):
result.append(i18n_catalog.i18nc("@item:material", "Unknown material")) result.append(i18n_catalog.i18nc("@item:material", "Unknown material"))
return result return result
## List of the colours of the currently loaded materials.
#
# The list is in order of extruders. If there is no material in an
# extruder, the colour is shown as transparent.
#
# The colours are returned in hex-format AARRGGBB or RRGGBB
# (e.g. #800000ff for transparent blue or #00ff00 for pure green).
@pyqtProperty("QVariantList", notify = materialIdChanged)
def materialColors(self):
result = []
for material_id in self._material_ids:
if material_id is None:
result.append("#800000FF") #No material.
continue
containers = self._container_registry.findInstanceContainers(type = "material", GUID = material_id)
if containers:
result.append(containers[0].getMetaDataEntry("color_code"))
else:
result.append("#800000FF") #Unknown material.
return result
## Protected setter for the current material id. ## Protected setter for the current material id.
# /param index Index of the extruder # /param index Index of the extruder
# /param material_id id of the material # /param material_id id of the material

View file

@ -110,6 +110,30 @@ Column
anchors.top: parent.top anchors.top: parent.top
anchors.topMargin: UM.Theme.getSize("default_margin").height anchors.topMargin: UM.Theme.getSize("default_margin").height
} }
Rectangle //Material colour indication.
{
id: materialColor
width: materialName.height * 0.75
height: materialName.height * 0.75
color: printerConnected ? connectedPrinter.materialColors[index] : [0, 0, 0, 0] //Need to check for printerConnected or materialColors[index] gives an error.
border.width: UM.Theme.getSize("default_lining").width
border.color: UM.Theme.getColor("lining")
visible: printerConnected
anchors.left: parent.left
anchors.leftMargin: UM.Theme.getSize("default_margin").width
anchors.verticalCenter: materialName.verticalCenter
}
Text //Material name.
{
id: materialName
text: printerConnected ? connectedPrinter.materialNames[index] : ""
font: UM.Theme.getFont("default")
color: UM.Theme.getColor("text")
anchors.left: materialColor.right
anchors.leftMargin: UM.Theme.getSize("default_margin").width
anchors.bottom: parent.bottom
anchors.bottomMargin: UM.Theme.getSize("default_margin").height
}
} }
} }
} }

View file

@ -255,7 +255,7 @@
"sidebar_setup": [0.0, 2.0], "sidebar_setup": [0.0, 2.0],
"sidebar_tabs": [0.0, 3.5], "sidebar_tabs": [0.0, 3.5],
"sidebar_inputfields": [0.0, 2.0], "sidebar_inputfields": [0.0, 2.0],
"sidebar_extruder_box": [0.0, 4.0], "sidebar_extruder_box": [0.0, 6.0],
"simple_mode_infill_caption": [0.0, 5.0], "simple_mode_infill_caption": [0.0, 5.0],
"simple_mode_infill_height": [0.0, 8.0], "simple_mode_infill_height": [0.0, 8.0],