mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-08 23:46:22 -06:00
Show context menu on printers with firmware 5.3 or later
This commit is contained in:
parent
6cbe89f832
commit
93351ec9b9
7 changed files with 27 additions and 14 deletions
|
@ -213,6 +213,7 @@ Item
|
||||||
}
|
}
|
||||||
width: 32 * screenScaleFactor // TODO: Theme!
|
width: 32 * screenScaleFactor // TODO: Theme!
|
||||||
height: 32 * screenScaleFactor // TODO: Theme!
|
height: 32 * screenScaleFactor // TODO: Theme!
|
||||||
|
enabled: OutputDevice.supportsPrintJobActions
|
||||||
onClicked: enabled ? contextMenu.switchPopupState() : {}
|
onClicked: enabled ? contextMenu.switchPopupState() : {}
|
||||||
visible:
|
visible:
|
||||||
{
|
{
|
||||||
|
@ -245,7 +246,7 @@ Item
|
||||||
MonitorInfoBlurb
|
MonitorInfoBlurb
|
||||||
{
|
{
|
||||||
id: contextMenuDisabledInfo
|
id: contextMenuDisabledInfo
|
||||||
text: catalog.i18nc("@info", "These options are not available because you are monitoring a cloud printer.")
|
text: catalog.i18nc("@info", "Please update your printer's firmware to manage the queue remotely.")
|
||||||
target: contextMenuButton
|
target: contextMenuButton
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -172,7 +172,7 @@ Item
|
||||||
}
|
}
|
||||||
width: 36 * screenScaleFactor // TODO: Theme!
|
width: 36 * screenScaleFactor // TODO: Theme!
|
||||||
height: 36 * screenScaleFactor // TODO: Theme!
|
height: 36 * screenScaleFactor // TODO: Theme!
|
||||||
|
enabled: OutputDevice.supportsPrintJobActions
|
||||||
onClicked: enabled ? contextMenu.switchPopupState() : {}
|
onClicked: enabled ? contextMenu.switchPopupState() : {}
|
||||||
visible:
|
visible:
|
||||||
{
|
{
|
||||||
|
@ -205,7 +205,7 @@ Item
|
||||||
MonitorInfoBlurb
|
MonitorInfoBlurb
|
||||||
{
|
{
|
||||||
id: contextMenuDisabledInfo
|
id: contextMenuDisabledInfo
|
||||||
text: catalog.i18nc("@info", "These options are not available because you are monitoring a cloud printer.")
|
text: catalog.i18nc("@info", "Please update your printer's firmware to manage the queue remotely.")
|
||||||
target: contextMenuButton
|
target: contextMenuButton
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -243,7 +243,6 @@ Item
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Divider
|
// Divider
|
||||||
Rectangle
|
Rectangle
|
||||||
{
|
{
|
||||||
|
|
|
@ -42,7 +42,6 @@ Item
|
||||||
}
|
}
|
||||||
height: 18 * screenScaleFactor // TODO: Theme!
|
height: 18 * screenScaleFactor // TODO: Theme!
|
||||||
width: childrenRect.width
|
width: childrenRect.width
|
||||||
visible: !cloudConnection
|
|
||||||
|
|
||||||
UM.RecolorImage
|
UM.RecolorImage
|
||||||
{
|
{
|
||||||
|
@ -65,7 +64,7 @@ Item
|
||||||
color: UM.Theme.getColor("monitor_text_link")
|
color: UM.Theme.getColor("monitor_text_link")
|
||||||
font: UM.Theme.getFont("medium") // 14pt, regular
|
font: UM.Theme.getFont("medium") // 14pt, regular
|
||||||
linkColor: UM.Theme.getColor("monitor_text_link")
|
linkColor: UM.Theme.getColor("monitor_text_link")
|
||||||
text: catalog.i18nc("@label link to connect manager", "Go to Cura Connect")
|
text: catalog.i18nc("@label link to connect manager", "Manage in browser")
|
||||||
renderType: Text.NativeRendering
|
renderType: Text.NativeRendering
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -73,7 +72,7 @@ Item
|
||||||
MouseArea
|
MouseArea
|
||||||
{
|
{
|
||||||
anchors.fill: manageQueueLabel
|
anchors.fill: manageQueueLabel
|
||||||
onClicked: Cura.MachineManager.printerOutputDevices[0].openPrintJobControlPanel()
|
onClicked: OutputDevice.openPrintJobControlPanel()
|
||||||
onEntered:
|
onEntered:
|
||||||
{
|
{
|
||||||
manageQueueText.font.underline = true
|
manageQueueText.font.underline = true
|
||||||
|
@ -196,8 +195,7 @@ Item
|
||||||
color: UM.Theme.getColor("monitor_card_background")
|
color: UM.Theme.getColor("monitor_card_background")
|
||||||
border.color: UM.Theme.getColor("monitor_card_border")
|
border.color: UM.Theme.getColor("monitor_card_border")
|
||||||
radius: 2 * screenScaleFactor // TODO: Theme!
|
radius: 2 * screenScaleFactor // TODO: Theme!
|
||||||
|
visible: OutputDevice.printJobs.length == 0
|
||||||
visible: printJobList.model.length == 0
|
|
||||||
|
|
||||||
Row
|
Row
|
||||||
{
|
{
|
||||||
|
@ -247,14 +245,14 @@ Item
|
||||||
color: UM.Theme.getColor("monitor_text_link")
|
color: UM.Theme.getColor("monitor_text_link")
|
||||||
font: UM.Theme.getFont("medium") // 14pt, regular
|
font: UM.Theme.getFont("medium") // 14pt, regular
|
||||||
linkColor: UM.Theme.getColor("monitor_text_link")
|
linkColor: UM.Theme.getColor("monitor_text_link")
|
||||||
text: catalog.i18nc("@label link to connect manager", "View print history")
|
text: catalog.i18nc("@label link to connect manager", "Manage in browser")
|
||||||
renderType: Text.NativeRendering
|
renderType: Text.NativeRendering
|
||||||
}
|
}
|
||||||
MouseArea
|
MouseArea
|
||||||
{
|
{
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
hoverEnabled: true
|
hoverEnabled: true
|
||||||
onClicked: Cura.MachineManager.printerOutputDevices[0].openPrintJobControlPanel()
|
onClicked: OutputDevice.openPrintJobControlPanel()
|
||||||
onEntered:
|
onEntered:
|
||||||
{
|
{
|
||||||
viewPrintHistoryText.font.underline = true
|
viewPrintHistoryText.font.underline = true
|
||||||
|
|
|
@ -16,6 +16,7 @@ from UM.Message import Message
|
||||||
from UM.PluginRegistry import PluginRegistry
|
from UM.PluginRegistry import PluginRegistry
|
||||||
from UM.Qt.Duration import Duration, DurationFormat
|
from UM.Qt.Duration import Duration, DurationFormat
|
||||||
from UM.Scene.SceneNode import SceneNode
|
from UM.Scene.SceneNode import SceneNode
|
||||||
|
from UM.Version import Version
|
||||||
|
|
||||||
from cura.CuraApplication import CuraApplication
|
from cura.CuraApplication import CuraApplication
|
||||||
from cura.PrinterOutput.NetworkedPrinterOutputDevice import AuthState, NetworkedPrinterOutputDevice
|
from cura.PrinterOutput.NetworkedPrinterOutputDevice import AuthState, NetworkedPrinterOutputDevice
|
||||||
|
@ -49,6 +50,9 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice):
|
||||||
# The interval with which the remote clusters are checked
|
# The interval with which the remote clusters are checked
|
||||||
CHECK_CLUSTER_INTERVAL = 10.0 # seconds
|
CHECK_CLUSTER_INTERVAL = 10.0 # seconds
|
||||||
|
|
||||||
|
# The minimum version of firmware that support print job actions over cloud.
|
||||||
|
PRINT_JOB_ACTIONS_MIN_VERSION = Version("5.3.0")
|
||||||
|
|
||||||
# Signal triggered when the print jobs in the queue were changed.
|
# Signal triggered when the print jobs in the queue were changed.
|
||||||
printJobsChanged = pyqtSignal()
|
printJobsChanged = pyqtSignal()
|
||||||
|
|
||||||
|
@ -360,6 +364,13 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice):
|
||||||
).show()
|
).show()
|
||||||
self.writeFinished.emit()
|
self.writeFinished.emit()
|
||||||
|
|
||||||
|
## Whether the printer that this output device represents supports print job actions via the cloud.
|
||||||
|
@pyqtProperty(bool, notify = _clusterPrintersChanged)
|
||||||
|
def supportsPrintJobActions(self) -> bool:
|
||||||
|
version_number = self.printers[0].firmwareVersion.split(".")
|
||||||
|
firmware_version = Version([version_number[0], version_number[1], version_number[2]])
|
||||||
|
return firmware_version >= self.PRINT_JOB_ACTIONS_MIN_VERSION
|
||||||
|
|
||||||
## Gets the number of printers in the cluster.
|
## Gets the number of printers in the cluster.
|
||||||
# We use a minimum of 1 because cloud devices are always a cluster and printer discovery needs it.
|
# We use a minimum of 1 because cloud devices are always a cluster and printer discovery needs it.
|
||||||
@pyqtProperty(int, notify = _clusterPrintersChanged)
|
@pyqtProperty(int, notify = _clusterPrintersChanged)
|
||||||
|
|
|
@ -91,7 +91,6 @@ class CloudClusterPrintJobStatus(BaseCloudModel):
|
||||||
def createOutputModel(self, controller: CloudOutputController) -> UM3PrintJobOutputModel:
|
def createOutputModel(self, controller: CloudOutputController) -> UM3PrintJobOutputModel:
|
||||||
model = UM3PrintJobOutputModel(controller, self.uuid, self.name)
|
model = UM3PrintJobOutputModel(controller, self.uuid, self.name)
|
||||||
self.updateOutputModel(model)
|
self.updateOutputModel(model)
|
||||||
|
|
||||||
return model
|
return model
|
||||||
|
|
||||||
## Creates a new configuration model
|
## Creates a new configuration model
|
||||||
|
|
|
@ -140,6 +140,11 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
|
||||||
if self._printer_selection_dialog is not None:
|
if self._printer_selection_dialog is not None:
|
||||||
self._printer_selection_dialog.show()
|
self._printer_selection_dialog.show()
|
||||||
|
|
||||||
|
## Whether the printer that this output device represents supports print job actions via the local network.
|
||||||
|
@pyqtProperty(bool, constant=True)
|
||||||
|
def supportsPrintJobActions(self) -> bool:
|
||||||
|
return True
|
||||||
|
|
||||||
@pyqtProperty(int, constant=True)
|
@pyqtProperty(int, constant=True)
|
||||||
def clusterSize(self) -> int:
|
def clusterSize(self) -> int:
|
||||||
return self._cluster_size
|
return self._cluster_size
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue