mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-10 16:27:51 -06:00
Add printer cards
CURA-9278
This commit is contained in:
parent
d3ee9c4c24
commit
7f98ef70f0
4 changed files with 168 additions and 16 deletions
|
@ -3,16 +3,15 @@
|
||||||
|
|
||||||
# TODO?: documentation
|
# TODO?: documentation
|
||||||
|
|
||||||
from typing import Optional
|
from typing import Optional, Dict
|
||||||
|
|
||||||
from PyQt6.QtCore import Qt, QTimer, QObject, pyqtSlot, pyqtProperty, pyqtSignal
|
from PyQt6.QtCore import Qt, QObject, pyqtSlot, pyqtProperty, pyqtSignal
|
||||||
|
|
||||||
from UM.Qt.ListModel import ListModel
|
from UM.Qt.ListModel import ListModel
|
||||||
from UM.Settings.ContainerStack import ContainerStack
|
from UM.Settings.ContainerStack import ContainerStack
|
||||||
from UM.i18n import i18nCatalog
|
from UM.i18n import i18nCatalog
|
||||||
from UM.Util import parseBool
|
from UM.Util import parseBool
|
||||||
|
|
||||||
from cura.PrinterOutput.PrinterOutputDevice import ConnectionType
|
|
||||||
from cura.Settings.CuraContainerRegistry import CuraContainerRegistry
|
from cura.Settings.CuraContainerRegistry import CuraContainerRegistry
|
||||||
|
|
||||||
|
|
||||||
|
@ -64,10 +63,19 @@ class CompatibleMachineModel(ListModel):
|
||||||
continue
|
continue
|
||||||
self.addItem(container_stack)
|
self.addItem(container_stack)
|
||||||
|
|
||||||
def addItem(self, container_stack: ContainerStack, machine_count: int = 0) -> None:
|
def addItem(self, container_stack: ContainerStack) -> None:
|
||||||
extruders = CuraContainerRegistry.getInstance().findContainerStacks(type="extruder_train", machine=container_stack.getId())
|
extruders = CuraContainerRegistry.getInstance().findContainerStacks(type="extruder_train", machine=container_stack.getId())
|
||||||
self.appendItem({
|
self.appendItem({
|
||||||
"name": container_stack.getName(),
|
"name": container_stack.getName(),
|
||||||
"id": container_stack.getId(),
|
"id": container_stack.getId(),
|
||||||
"extruders": [extruder.getMetaData().copy() for extruder in extruders]
|
"extruders": [self.getExtruderModel(extruder) for extruder in extruders]
|
||||||
})
|
})
|
||||||
|
|
||||||
|
def getExtruderModel(self, extruders: ContainerStack) -> Dict:
|
||||||
|
# Temp Dummy Data
|
||||||
|
extruder_model = {
|
||||||
|
"core": "AA 0.4",
|
||||||
|
"materials": [{"name": "Ultimaker Blue", "color": "blue"}, {"name": "Ultimaker Red", "color": "red"}, {"name": "Ultimaker Orange", "color": "orange"}]
|
||||||
|
}
|
||||||
|
return extruder_model
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
import QtQuick 2.2
|
import QtQuick 2.2
|
||||||
import QtQuick.Controls 2.9
|
import QtQuick.Controls 2.9
|
||||||
|
import QtQuick.Layouts 2.10
|
||||||
|
|
||||||
import UM 1.5 as UM
|
import UM 1.5 as UM
|
||||||
import Cura 1.0 as Cura
|
import Cura 1.0 as Cura
|
||||||
|
@ -11,23 +12,31 @@ UM.Dialog
|
||||||
{
|
{
|
||||||
id: base
|
id: base
|
||||||
|
|
||||||
property string machine_id_filter: ""
|
backgroundColor: UM.Theme.getColor("background_2")
|
||||||
|
|
||||||
Column
|
property string machine_id_filter: ""
|
||||||
|
ScrollView
|
||||||
{
|
{
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
Column
|
||||||
Repeater
|
|
||||||
{
|
{
|
||||||
id: contents
|
anchors.fill: parent
|
||||||
|
spacing: UM.Theme.getSize("default_margin").height
|
||||||
|
|
||||||
model: Cura.CompatibleMachineModel
|
Repeater
|
||||||
{
|
{
|
||||||
filter: machine_id_filter
|
id: contents
|
||||||
}
|
|
||||||
delegate: UM.Label
|
model: Cura.CompatibleMachineModel
|
||||||
{
|
{
|
||||||
text: model.name
|
filter: machine_id_filter
|
||||||
|
}
|
||||||
|
|
||||||
|
delegate: Cura.PrintSelectorCard
|
||||||
|
{
|
||||||
|
name: model.name
|
||||||
|
extruders: model.extruders
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
134
resources/qml/PrinterSelector/PrintSelectorCard.qml
Normal file
134
resources/qml/PrinterSelector/PrintSelectorCard.qml
Normal file
|
@ -0,0 +1,134 @@
|
||||||
|
import QtQuick 2.2
|
||||||
|
import QtQuick.Controls 2.9
|
||||||
|
import QtQuick.Layouts 2.10
|
||||||
|
|
||||||
|
import UM 1.5 as UM
|
||||||
|
import Cura 1.0 as Cura
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
property alias name: printerTitle.text
|
||||||
|
property var extruders
|
||||||
|
|
||||||
|
width: parent.width
|
||||||
|
height: childrenRect.height + 2 * UM.Theme.getSize("default_margin").height
|
||||||
|
|
||||||
|
color: UM.Theme.getColor("background_1")
|
||||||
|
border.color: UM.Theme.getColor("border_main")
|
||||||
|
border.width: UM.Theme.getSize("default_lining").width
|
||||||
|
|
||||||
|
RowLayout
|
||||||
|
{
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.top: parent.top
|
||||||
|
anchors.margins: UM.Theme.getSize("default_margin").width
|
||||||
|
|
||||||
|
Cura.IconWithText
|
||||||
|
{
|
||||||
|
id: printerTitle
|
||||||
|
|
||||||
|
Layout.preferredWidth: parent.width / 3
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.alignment: Qt.AlignTop
|
||||||
|
Layout.fillHeight: false
|
||||||
|
|
||||||
|
source: UM.Theme.getIcon("Printer")
|
||||||
|
spacing: UM.Theme.getSize("thin_margin").width
|
||||||
|
iconSize: UM.Theme.getSize("medium_button_icon").width
|
||||||
|
font: UM.Theme.getFont("medium_bold")
|
||||||
|
}
|
||||||
|
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
id: extruderInformation
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.preferredWidth: parent.width / 2
|
||||||
|
Layout.alignment: Qt.AlignTop
|
||||||
|
spacing: UM.Theme.getSize("default_margin").width
|
||||||
|
|
||||||
|
Repeater
|
||||||
|
{
|
||||||
|
model: extruders
|
||||||
|
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
height: childrenRect.height
|
||||||
|
|
||||||
|
Cura.ExtruderIcon
|
||||||
|
{
|
||||||
|
id: extruderIcon
|
||||||
|
anchors.top: parent.top
|
||||||
|
anchors.left: parent.left
|
||||||
|
materialColor: modelData.materials.length == 1 ? modelData.materials[0].color : "white"
|
||||||
|
iconSize: UM.Theme.getSize("medium_button_icon").width
|
||||||
|
}
|
||||||
|
|
||||||
|
UM.Label
|
||||||
|
{
|
||||||
|
id: extruderCore
|
||||||
|
anchors.verticalCenter: extruderIcon.verticalCenter
|
||||||
|
anchors.left: extruderIcon.right
|
||||||
|
anchors.leftMargin: UM.Theme.getSize("default_margin").width
|
||||||
|
text: modelData.core
|
||||||
|
font: UM.Theme.getFont("default_bold")
|
||||||
|
}
|
||||||
|
|
||||||
|
UM.Label
|
||||||
|
{
|
||||||
|
id: singleMaterialText
|
||||||
|
anchors.left: extruderCore.right
|
||||||
|
anchors.verticalCenter: extruderCore.verticalCenter
|
||||||
|
text: modelData.materials.length == 1 ? modelDatamaterials[0].name : "test"
|
||||||
|
visible: modelData.materials.length == 1
|
||||||
|
}
|
||||||
|
|
||||||
|
ColumnLayout
|
||||||
|
{
|
||||||
|
id: multiMaterialText
|
||||||
|
anchors.top: extruderCore.bottom
|
||||||
|
anchors.left: extruderCore.left
|
||||||
|
anchors.topMargin: UM.Theme.getSize("narrow_margin").height
|
||||||
|
Repeater
|
||||||
|
{
|
||||||
|
model: modelData.materials
|
||||||
|
visible: modelData.materials.length > 1
|
||||||
|
UM.Label
|
||||||
|
{
|
||||||
|
text: modelData.name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Button
|
||||||
|
{
|
||||||
|
id: PrintButton
|
||||||
|
|
||||||
|
implicitWidth: UM.Theme.getSize("medium_button").width
|
||||||
|
implicitHeight: implicitWidth
|
||||||
|
Layout.alignment: Qt.AlignTop
|
||||||
|
padding: 0
|
||||||
|
|
||||||
|
background: Rectangle
|
||||||
|
{
|
||||||
|
border.width: UM.Theme.getSize("default_lining").width
|
||||||
|
border.color: UM.Theme.getColor("border_accent_1")
|
||||||
|
color: control.hovered ? UM.Theme.getColor("toolbar_button_hover"): UM.Theme.getColor("background_1")
|
||||||
|
}
|
||||||
|
|
||||||
|
contentItem: Item
|
||||||
|
{
|
||||||
|
UM.ColorImage
|
||||||
|
{
|
||||||
|
anchors.centerIn: parent
|
||||||
|
source: UM.Theme.getIcon("Printer")
|
||||||
|
color: UM.Theme.getColor("border_accent_1")
|
||||||
|
width: UM.Theme.getSize("small_button_icon").width
|
||||||
|
height: width
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -17,6 +17,7 @@ PrinterTypeLabel 1.0 PrinterTypeLabel.qml
|
||||||
ViewsSelector 1.0 ViewsSelector.qml
|
ViewsSelector 1.0 ViewsSelector.qml
|
||||||
SettingView 1.0 SettingView.qml
|
SettingView 1.0 SettingView.qml
|
||||||
ProfileMenu 1.0 ProfileMenu.qml
|
ProfileMenu 1.0 ProfileMenu.qml
|
||||||
|
PrintSelectorCard 1.0 PrintSelectorCard.qml
|
||||||
|
|
||||||
|
|
||||||
# Cura/WelcomePages
|
# Cura/WelcomePages
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue