From 3037320b03b10bc67bcd3ce4522a21c6da5c25f3 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 11 Jul 2023 15:18:52 +0200 Subject: [PATCH] Send slotID's for backend_plugins CURA-10717 --- cura/BackendPlugin.py | 7 +++++++ plugins/CuraEngineBackend/StartSliceJob.py | 13 +++++++++++++ 2 files changed, 20 insertions(+) diff --git a/cura/BackendPlugin.py b/cura/BackendPlugin.py index 6493f20487..de7b3f29dc 100644 --- a/cura/BackendPlugin.py +++ b/cura/BackendPlugin.py @@ -15,6 +15,10 @@ class BackendPlugin(PluginObject): self._plugin_command: Optional[List[str]] = None self._process = None self._is_running = False + self._supported_slots: List[int] = [] + + def getSupportedSlots(self) -> List[int]: + return self._supported_slots def isRunning(self): return self._is_running @@ -25,6 +29,9 @@ class BackendPlugin(PluginObject): def getPort(self) -> int: return self.__port + def getAddress(self) -> str: + return self._plugin_address + def _validatePluginCommand(self) -> list[str]: """ Validate the plugin command and add the port parameter if it is missing. diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index d06136a2b4..f9fb7f6615 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -301,6 +301,19 @@ class StartSliceJob(Job): for extruder_stack in global_stack.extruderList: self._buildExtruderMessage(extruder_stack) + for plugin in CuraApplication.getInstance().getBackendPlugins(): + for slot in plugin.getSupportedSlots(): + # Right now we just send the message for every slot that we support. A single plugin can support + # multiple slots + # In the future the frontend will need to decide what slots that a plugin actually supports should + # also be used. For instance, if you have two plugins and each of them support a_generate and b_generate + # only one of each can actually be used (eg; plugin 1 does both, plugin 1 does a_generate and 2 does + # b_generate, etc). + plugin_message = self._slice_message.addRepeatedMessage("engine_plugins") + plugin_message.id = slot + plugin_message.address = plugin.getAddress() + plugin_message.port = plugin.getPort() + for group in filtered_object_groups: group_message = self._slice_message.addRepeatedMessage("object_lists") parent = group[0].getParent()