mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-15 02:37:49 -06:00
Rename AbstractStacksModel.py -> MachineListModel.py since this model includes both abstract machine stacks and regular machines
Add machineCount for displaying the number of machines of a type. MachineSelectorButton is in use in other places, swapped it out for a new Component MachineListButton. CURA-9514
This commit is contained in:
parent
bedb76d516
commit
b18080c332
6 changed files with 104 additions and 11 deletions
|
@ -115,7 +115,7 @@ from . import CuraActions
|
|||
from . import PlatformPhysics
|
||||
from . import PrintJobPreviewImageProvider
|
||||
from .AutoSave import AutoSave
|
||||
from .Machines.Models.AbstractStacksModel import AbstractStacksModel
|
||||
from .Machines.Models.MachineListModel import MachineListModel
|
||||
from .Machines.Models.ActiveIntentQualitiesModel import ActiveIntentQualitiesModel
|
||||
from .Machines.Models.IntentSelectionModel import IntentSelectionModel
|
||||
from .SingleInstance import SingleInstance
|
||||
|
@ -1195,7 +1195,7 @@ class CuraApplication(QtApplication):
|
|||
qmlRegisterType(InstanceContainer, "Cura", 1, 0, "InstanceContainer")
|
||||
qmlRegisterType(ExtrudersModel, "Cura", 1, 0, "ExtrudersModel")
|
||||
qmlRegisterType(GlobalStacksModel, "Cura", 1, 0, "GlobalStacksModel")
|
||||
qmlRegisterType(AbstractStacksModel, "Cura", 1, 0, "AbstractStacksModel")
|
||||
qmlRegisterType(MachineListModel, "Cura", 1, 0, "MachineListModel")
|
||||
|
||||
self.processEvents()
|
||||
qmlRegisterType(FavoriteMaterialsModel, "Cura", 1, 0, "FavoriteMaterialsModel")
|
||||
|
|
|
@ -14,7 +14,8 @@ from cura.Settings.AbstractMachine import AbstractMachine
|
|||
from cura.Settings.CuraContainerRegistry import CuraContainerRegistry
|
||||
from cura.Settings.GlobalStack import GlobalStack
|
||||
|
||||
class AbstractStacksModel(ListModel):
|
||||
|
||||
class MachineListModel(ListModel):
|
||||
NameRole = Qt.ItemDataRole.UserRole + 1
|
||||
IdRole = Qt.ItemDataRole.UserRole + 2
|
||||
HasRemoteConnectionRole = Qt.ItemDataRole.UserRole + 3
|
||||
|
@ -24,6 +25,7 @@ class AbstractStacksModel(ListModel):
|
|||
RemovalWarningRole = Qt.ItemDataRole.UserRole + 7
|
||||
IsOnlineRole = Qt.ItemDataRole.UserRole + 8
|
||||
MachineTypeRole = Qt.ItemDataRole.UserRole + 9
|
||||
MachineCountRole = Qt.ItemDataRole.UserRole + 10
|
||||
|
||||
def __init__(self, parent=None) -> None:
|
||||
super().__init__(parent)
|
||||
|
@ -37,6 +39,7 @@ class AbstractStacksModel(ListModel):
|
|||
self.addRoleName(self.DiscoverySourceRole, "discoverySource")
|
||||
self.addRoleName(self.IsOnlineRole, "isOnline")
|
||||
self.addRoleName(self.MachineTypeRole, "machineType")
|
||||
self.addRoleName(self.MachineCountRole, "machineCount")
|
||||
|
||||
self._change_timer = QTimer()
|
||||
self._change_timer.setInterval(200)
|
||||
|
@ -71,7 +74,7 @@ class AbstractStacksModel(ListModel):
|
|||
|
||||
|
||||
# Create item for abstract printer
|
||||
items.append(self.createItem(abstract_machine))
|
||||
items.append(self.createItem(abstract_machine, len(machine_stacks)))
|
||||
|
||||
# Create list of printers that are children of the abstract printer
|
||||
for stack in machine_stacks:
|
||||
|
@ -81,7 +84,7 @@ class AbstractStacksModel(ListModel):
|
|||
|
||||
self.setItems(items)
|
||||
|
||||
def createItem(self, container_stack: ContainerStack) -> Optional[Dict]:
|
||||
def createItem(self, container_stack: ContainerStack, machine_count: int = 0) -> Optional[Dict]:
|
||||
if parseBool(container_stack.getMetaDataEntry("hidden", False)):
|
||||
return
|
||||
|
||||
|
@ -105,4 +108,5 @@ class AbstractStacksModel(ListModel):
|
|||
"removalWarning": container_stack.getMetaDataEntry("removal_warning", default_removal_warning),
|
||||
"isOnline": container_stack.getMetaDataEntry("is_online", False),
|
||||
"machineType": container_stack.getMetaDataEntry("type"),
|
||||
"machineCount": machine_count,
|
||||
}
|
88
resources/qml/PrinterSelector/MachineListButton.qml
Normal file
88
resources/qml/PrinterSelector/MachineListButton.qml
Normal file
|
@ -0,0 +1,88 @@
|
|||
// Copyright (c) 2018 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
|
||||
|
||||
|
||||
Button
|
||||
{
|
||||
id: machineListButton
|
||||
|
||||
width: parent.width
|
||||
height: UM.Theme.getSize("large_button").height
|
||||
leftPadding: UM.Theme.getSize("default_margin").width
|
||||
rightPadding: UM.Theme.getSize("default_margin").width
|
||||
checkable: true
|
||||
hoverEnabled: true
|
||||
|
||||
contentItem: Item
|
||||
{
|
||||
width: machineListButton.width - machineListButton.leftPadding - machineListButton.rightPadding
|
||||
height: UM.Theme.getSize("action_button").height
|
||||
|
||||
UM.ColorImage
|
||||
{
|
||||
id: printerIcon
|
||||
height: UM.Theme.getSize("medium_button").height
|
||||
width: UM.Theme.getSize("medium_button").width
|
||||
color: UM.Theme.getColor("machine_selector_printer_icon")
|
||||
visible: model.machineType == "abstract_machine"
|
||||
source: model.machineType == "abstract_machine" ? UM.Theme.getIcon("PrinterTriple", "medium") : UM.Theme.getIcon("Printer", "medium")
|
||||
|
||||
anchors
|
||||
{
|
||||
left: parent.left
|
||||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
|
||||
UM.Label
|
||||
{
|
||||
id: buttonText
|
||||
anchors
|
||||
{
|
||||
left: printerIcon.right
|
||||
right: printerCount.left
|
||||
verticalCenter: parent.verticalCenter
|
||||
leftMargin: UM.Theme.getSize("default_margin").width
|
||||
}
|
||||
text: machineListButton.text
|
||||
font: model.machineType == "abstract_machine" ? UM.Theme.getFont("medium_bold") : UM.Theme.getFont("medium")
|
||||
visible: text != ""
|
||||
elide: Text.ElideRight
|
||||
}
|
||||
|
||||
Rectangle
|
||||
{
|
||||
id: printerCount
|
||||
color: UM.Theme.getColor("background_2")
|
||||
radius: height
|
||||
width: height
|
||||
anchors
|
||||
{
|
||||
right: parent.right
|
||||
top: buttonText.top
|
||||
bottom: buttonText.bottom
|
||||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
visible: model.machineType == "abstract_machine"
|
||||
|
||||
UM.Label
|
||||
{
|
||||
text: model.machineCount
|
||||
anchors.centerIn: parent
|
||||
font: UM.Theme.getFont("default_bold")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
background: Rectangle
|
||||
{
|
||||
id: backgroundRect
|
||||
color: machineListButton.hovered ? UM.Theme.getColor("action_button_hovered") : "transparent"
|
||||
}
|
||||
}
|
|
@ -10,8 +10,8 @@ import Cura 1.0 as Cura
|
|||
ListView
|
||||
{
|
||||
id: listView
|
||||
model: Cura.AbstractStacksModel {}
|
||||
section.property: "hasRemoteConnection"
|
||||
model: Cura.MachineListModel {}
|
||||
section.property: "section"
|
||||
property real contentHeight: childrenRect.height
|
||||
|
||||
ScrollBar.vertical: UM.ScrollBar
|
||||
|
@ -29,13 +29,10 @@ ListView
|
|||
color: UM.Theme.getColor("text_medium")
|
||||
}
|
||||
|
||||
delegate: MachineSelectorButton
|
||||
delegate: MachineListButton
|
||||
{
|
||||
text: model.name ? model.name : ""
|
||||
width: listView.width - scrollBar.width
|
||||
outputDevice: Cura.MachineManager.printerOutputDevices.length >= 1 ? Cura.MachineManager.printerOutputDevices[0] : null
|
||||
|
||||
checked: Cura.MachineManager.activeMachine ? Cura.MachineManager.activeMachine.id == model.id : false
|
||||
|
||||
onClicked:
|
||||
{
|
||||
|
|
|
@ -2,6 +2,7 @@ module Cura
|
|||
|
||||
MachineSelector 1.0 MachineSelector.qml
|
||||
MachineSelectorButton 1.0 MachineSelectorButton.qml
|
||||
MachineListButton 1.0 MachineListButton.qml
|
||||
CustomConfigurationSelector 1.0 CustomConfigurationSelector.qml
|
||||
PrintSetupSelector 1.0 PrintSetupSelector.qml
|
||||
ProfileOverview 1.6 ProfileOverview.qml
|
||||
|
|
|
@ -564,6 +564,9 @@
|
|||
"medium_button": [2.5, 2.5],
|
||||
"medium_button_icon": [2, 2],
|
||||
|
||||
"large_button": [3.5, 3.5],
|
||||
"large_button_icon": [2.8, 2.8],
|
||||
|
||||
"context_menu": [20, 2],
|
||||
|
||||
"icon_indicator": [1, 1],
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue