Commit 1e7947e0 authored by Joel Collins's avatar Joel Collins
Browse files

Added microscope plugin structure

parent aa7468e9
Loading
Loading
Loading
Loading
+26 −2
Original line number Diff line number Diff line
@@ -44,9 +44,33 @@ For example, the plugins section of your microscoperc.yaml file may look like:

Microscope plugin structure
---------------------------
.. note::
As described earlier, a plugin must subclass :py:class:`openflexure_microscope.plugins.MicroscopePlugin`. Each plugin in described by a single class, containing any number of methods. The methods defined within your plugin class will be attached to the microscope. By subclassing :py:class:`openflexure_microscope.plugins.MicroscopePlugin`, your methods automatically get access to the microscope object your plugin is attached to, through `self.microscope`. This is an instance of :py:class:`openflexure_microscope.Microscope`, and gives unrestricted access to the attached camera and stage hardware.

   To be written
For example, a simple plugin file named `myplugin.py`, may look like:

.. code-block:: python

    from openflexure_microscope.plugins import MicroscopePlugin

    class MyPlugin(MicroscopePlugin):

        def identify(self):
            """
            Demonstrate access to Microscope.camera, and Microscope.stage
            """

            response = "My parent camera is {}, and my parent stage is {}.".format(self.microscope.camera, 
                                                                                   self.microscope.stage)
            return response

        def hello_world(self):
            """
            Demonstrate passive method
            """

            return "Hello world!"

When this plugin is loaded and attached to a microscope object named `microscope`, the plugin methods will be available at `microscope.plugin.myplugin.identify()` and `microscope.plugin.myplugin.hello_world()`.

Adding web API routes
---------------------