1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
|
// Copyright (c) 2022 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.10
import QtQuick.Controls 2.3
import UM 1.5 as UM
import Cura 1.0 as Cura
Item
{
id: objectSelector
width: UM.Theme.getSize("objects_menu_size").width
property bool opened: UM.Preferences.getValue("cura/show_list_of_objects")
// Eat up all the mouse events (we don't want the scene to react or have the scene context menu showing up)
MouseArea
{
anchors.fill: parent
acceptedButtons: Qt.AllButtons
}
Button
{
id: openCloseButton
width: parent.width
height: contentItem.height + bottomPadding
hoverEnabled: true
padding: 0
bottomPadding: UM.Theme.getSize("narrow_margin").height / 2 | 0
anchors
{
bottom: contents.top
horizontalCenter: parent.horizontalCenter
}
contentItem: Item
{
width: parent.width
height: label.height
UM.ColorImage
{
id: openCloseIcon
width: UM.Theme.getSize("standard_arrow").width
height: UM.Theme.getSize("standard_arrow").height
anchors.left: parent.left
color: openCloseButton.hovered ? UM.Theme.getColor("small_button_text_hover") : UM.Theme.getColor("small_button_text")
source: objectSelector.opened ? UM.Theme.getIcon("ChevronSingleDown") : UM.Theme.getIcon("ChevronSingleUp")
}
UM.Label
{
id: label
anchors.left: openCloseIcon.right
anchors.leftMargin: UM.Theme.getSize("default_margin").width
text: catalog.i18nc("@label", "Object list")
color: openCloseButton.hovered ? UM.Theme.getColor("small_button_text_hover") : UM.Theme.getColor("small_button_text")
elide: Text.ElideRight
}
}
background: Item {}
onClicked:
{
UM.Preferences.setValue("cura/show_list_of_objects", !objectSelector.opened)
objectSelector.opened = UM.Preferences.getValue("cura/show_list_of_objects")
}
}
Rectangle
{
id: contents
width: parent.width
visible: objectSelector.opened
height: visible ? listView.height + border.width * 2 : 0
color: UM.Theme.getColor("main_background")
border.width: UM.Theme.getSize("default_lining").width
border.color: UM.Theme.getColor("lining")
Behavior on height { NumberAnimation { duration: 100 } }
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
anchors
{
left: parent.left
right: parent.right
top: parent.top
margins: UM.Theme.getSize("default_lining").width
}
property real maximumHeight: UM.Theme.getSize("objects_menu_size").height
height: Math.min(contentHeight, maximumHeight)
ScrollBar.vertical: UM.ScrollBar
{
id: scrollBar
}
clip: true
model: Cura.ObjectsModel {}
delegate: ObjectItemButton
{
id: modelButton
Binding
{
target: modelButton
property: "checked"
value: model.selected
}
text: model.name
width: listView.width - scrollBar.width
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
}
}
}
}
|