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 NodeRole = Qt.UserRole + 5
PerObjectSettingsCountRole = Qt.UserRole + 6 PerObjectSettingsCountRole = Qt.UserRole + 6
MeshTypeRole = Qt.UserRole + 7 MeshTypeRole = Qt.UserRole + 7
ExtruderNumberRole = Qt.UserRole + 8
def __init__(self, parent = None) -> None: def __init__(self, parent = None) -> None:
super().__init__(parent) super().__init__(parent)
@ -48,6 +49,7 @@ class ObjectsModel(ListModel):
self.addRoleName(self.SelectedRole, "selected") self.addRoleName(self.SelectedRole, "selected")
self.addRoleName(self.OutsideAreaRole, "outside_build_area") self.addRoleName(self.OutsideAreaRole, "outside_build_area")
self.addRoleName(self.BuilplateNumberRole, "buildplate_number") self.addRoleName(self.BuilplateNumberRole, "buildplate_number")
self.addRoleName(self.ExtruderNumberRole, "extruder_number")
self.addRoleName(self.PerObjectSettingsCountRole, "per_object_settings_count") self.addRoleName(self.PerObjectSettingsCountRole, "per_object_settings_count")
self.addRoleName(self.MeshTypeRole, "mesh_type") self.addRoleName(self.MeshTypeRole, "mesh_type")
self.addRoleName(self.NodeRole, "node") self.addRoleName(self.NodeRole, "node")
@ -189,11 +191,17 @@ class ObjectsModel(ListModel):
per_object_settings_count -= 1 # do not count this mesh type setting per_object_settings_count -= 1 # do not count this mesh type setting
break 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({ nodes.append({
"name": node.getName(), "name": node.getName(),
"selected": Selection.isSelected(node), "selected": Selection.isSelected(node),
"outside_build_area": is_outside_build_area, "outside_build_area": is_outside_build_area,
"buildplate_number": node_build_plate_number, "buildplate_number": node_build_plate_number,
"extruder_number": extruder_number,
"per_object_settings_count": per_object_settings_count, "per_object_settings_count": per_object_settings_count,
"mesh_type": node_mesh_type, "mesh_type": node_mesh_type,
"node": node "node": node

View file

@ -23,13 +23,26 @@ Button
width: objectItemButton.width - objectItemButton.leftPadding width: objectItemButton.width - objectItemButton.leftPadding
height: UM.Theme.getSize("action_button").height 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 Label
{ {
id: buttonText id: buttonText
anchors anchors
{ {
left: parent.left left: showExtruderSwatches ? swatch.right : parent.left
right: perObjectSettingsInfo.left leftMargin: showExtruderSwatches ? UM.Theme.getSize("narrow_margin").width : 0
right: perObjectSettingsInfo.visible ? perObjectSettingsInfo.left : parent.right
verticalCenter: parent.verticalCenter verticalCenter: parent.verticalCenter
} }
text: objectItemButton.text text: objectItemButton.text

View file

@ -87,6 +87,17 @@ Item
anchors.bottom: parent.bottom 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 ListView
{ {
id: listView id: listView
@ -123,6 +134,16 @@ Item
property bool outsideBuildArea: model.outside_build_area property bool outsideBuildArea: model.outside_build_area
property int perObjectSettingsCount: model.per_object_settings_count property int perObjectSettingsCount: model.per_object_settings_count
property string meshType: model.mesh_type 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
} }
} }
} }