CURA-4870 Don't allow to connect more than one instance to the same

group.
This commit is contained in:
Diego Prado Gesto 2018-03-15 20:01:47 +01:00
parent 222a18e698
commit 99d653cea5
3 changed files with 36 additions and 4 deletions

View file

@ -1220,6 +1220,14 @@ class MachineManager(QObject):
for container in hidden_containers: for container in hidden_containers:
container.setMetaDataEntry("connect_group_name", group_name) container.setMetaDataEntry("connect_group_name", group_name)
## This method checks if there is an instance connected to the given network_key
def existNetworkInstances(self, network_key: str) -> bool:
metadata_filter = {"um_network_key": network_key}
containers = ContainerRegistry.getInstance().findContainerStacks(type = "machine", **metadata_filter)
if containers:
return True
return False
@pyqtSlot("QVariant") @pyqtSlot("QVariant")
def setGlobalVariant(self, container_node): def setGlobalVariant(self, container_node):
self.blurSettings.emit() self.blurSettings.emit()

View file

@ -147,6 +147,10 @@ class DiscoverUM3Action(MachineAction):
return "" return ""
@pyqtSlot(str, result = bool)
def existsKey(self, key) -> bool:
return Application.getInstance().getMachineManager().existNetworkInstances(network_key = key)
@pyqtSlot() @pyqtSlot()
def loadConfigurationFromPrinter(self): def loadConfigurationFromPrinter(self):
machine_manager = Application.getInstance().getMachineManager() machine_manager = Application.getInstance().getMachineManager()

View file

@ -5,6 +5,7 @@ import QtQuick 2.2
import QtQuick.Controls 1.1 import QtQuick.Controls 1.1
import QtQuick.Layouts 1.1 import QtQuick.Layouts 1.1
import QtQuick.Window 2.1 import QtQuick.Window 2.1
import QtQuick.Dialogs 1.2
Cura.MachineAction Cura.MachineAction
{ {
@ -34,13 +35,32 @@ Cura.MachineAction
var printerKey = base.selectedDevice.key var printerKey = base.selectedDevice.key
var printerName = base.selectedDevice.name // TODO To change when the groups have a name var printerName = base.selectedDevice.name // TODO To change when the groups have a name
if (manager.getStoredKey() != printerKey) if (manager.getStoredKey() != printerKey)
{
// Check if there is another instance with the same key
if (!manager.existsKey(printerKey))
{ {
manager.setKey(printerKey) manager.setKey(printerKey)
manager.setGroupName(printerName) // TODO To change when the groups have a name manager.setGroupName(printerName) // TODO To change when the groups have a name
completed() completed()
} }
else
{
existingConnectionDialog.open()
} }
} }
}
}
MessageDialog
{
id: existingConnectionDialog
title: catalog.i18nc("@window:title", "Existing Connection")
icon: StandardIcon.Information
text: catalog.i18nc("@message:text", "There is an instance already connected to this group")
detailedText: catalog.i18nc("@message:description", "You can't connect two instances to the same group. Please use the other instance or connect to another group.")
standardButtons: StandardButton.Ok
modality: Qt.ApplicationModal
}
Column Column
{ {