Add extruder swatches to object selector

This commit is contained in:
fieldOfView 2020-04-11 20:48:06 +02:00
parent 2eeabec317
commit e13a0bca4a
3 changed files with 44 additions and 2 deletions

View file

@ -40,6 +40,7 @@ class ObjectsModel(ListModel):
NodeRole = Qt.UserRole + 5
PerObjectSettingsCountRole = Qt.UserRole + 6
MeshTypeRole = Qt.UserRole + 7
ExtruderNumberRole = Qt.UserRole + 8
def __init__(self, parent = None) -> None:
super().__init__(parent)
@ -48,6 +49,7 @@ class ObjectsModel(ListModel):
self.addRoleName(self.SelectedRole, "selected")
self.addRoleName(self.OutsideAreaRole, "outside_build_area")
self.addRoleName(self.BuilplateNumberRole, "buildplate_number")
self.addRoleName(self.ExtruderNumberRole, "extruder_number")
self.addRoleName(self.PerObjectSettingsCountRole, "per_object_settings_count")
self.addRoleName(self.MeshTypeRole, "mesh_type")
self.addRoleName(self.NodeRole, "node")
@ -189,11 +191,17 @@ class ObjectsModel(ListModel):
per_object_settings_count -= 1 # do not count this mesh type setting
break
extruder_number = int(node.callDecoration("getActiveExtruderPosition"))
if node_mesh_type == "anti_overhang_mesh":
# for anti overhang meshes, the extruder nr is irrelevant
extruder_number = -1
nodes.append({
"name": node.getName(),
"selected": Selection.isSelected(node),
"outside_build_area": is_outside_build_area,
"buildplate_number": node_build_plate_number,
"extruder_number": extruder_number,
"per_object_settings_count": per_object_settings_count,
"mesh_type": node_mesh_type,
"node": node

View file

@ -23,13 +23,26 @@ Button
width: objectItemButton.width - objectItemButton.leftPadding
height: UM.Theme.getSize("action_button").height
UM.RecolorImage
{
id: swatch
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
width: height
height: parent.height - UM.Theme.getSize("narrow_margin").height
source: UM.Theme.getIcon("extruder_button")
color: extruderColor
visible: showExtruderSwatches && extruderColor != ""
}
Label
{
id: buttonText
anchors
{
left: parent.left
right: perObjectSettingsInfo.left
left: showExtruderSwatches ? swatch.right : parent.left
leftMargin: showExtruderSwatches ? UM.Theme.getSize("narrow_margin").width : 0
right: perObjectSettingsInfo.visible ? perObjectSettingsInfo.left : parent.right
verticalCenter: parent.verticalCenter
}
text: objectItemButton.text

View file

@ -87,6 +87,17 @@ Item
anchors.bottom: parent.bottom
property var extrudersModel: CuraApplication.getExtrudersModel()
UM.SettingPropertyProvider
{
id: machineExtruderCount
containerStack: Cura.MachineManager.activeMachine
key: "machine_extruder_count"
watchedProperties: [ "value" ]
storeIndex: 0
}
ListView
{
id: listView
@ -123,6 +134,16 @@ Item
property bool outsideBuildArea: model.outside_build_area
property int perObjectSettingsCount: model.per_object_settings_count
property string meshType: model.mesh_type
property int extruderNumber: model.extruder_number
property string extruderColor:
{
if (model.extruder_number == -1)
{
return "";
}
return contents.extrudersModel.getItem(model.extruder_number).color;
}
property bool showExtruderSwatches: machineExtruderCount.properties.value > 1
}
}
}