Browse Source

Send slotID's for backend_plugins

CURA-10717
Jaime van Kessel 1 year ago
parent
commit
3037320b03
2 changed files with 20 additions and 0 deletions
  1. 7 0
      cura/BackendPlugin.py
  2. 13 0
      plugins/CuraEngineBackend/StartSliceJob.py

+ 7 - 0
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.

+ 13 - 0
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()