Difference between revisions of "AnyWave:WritePythonScripted"

From WikiMEG
Jump to: navigation, search
Line 11: Line 11:
 
* desc.txt (a text file describing the plug-in)
 
* desc.txt (a text file describing the plug-in)
 
* __main__.py (the Python code)
 
* __main__.py (the Python code)
 +
 +
=Writing the desc.txt file=
 +
The file must be named '''desc.txt''' and may looks like:
 +
<syntaxhighlight lang="text">
 +
name = My Python Plugin
 +
description = I am a plug-in written in Python
 +
category = Process:Python:My Python Plugin
 +
</syntaxhighlight>
 +
 +
The category line is optional. It tells AnyWave where the plug-in will appear in the menus. Here we decided to caterogize it as a Process, with a sub category called Python. Finally, the plug-in name will be My Python Plugin.
 +
 +
The category feature is usefull to separate plug-in that won't really do some calculation but convert data to another format on launch external tools.
 +
 +
Three category keywords are recognized:
 +
* Process :  The plug-in will be set in the Processes menu with a subcategory and a name, for example 'Process:Correlation:Compute correlation'
 +
* File: The plug-in will be set in the File Menu under the Export sub-menu. Example : 'File:Export to Numpy array format'
 +
* View: The plug-in will be set in the View Menu. Example : 'View:Launch 3D viewer'
 +
 +
If no category is specified, AnyWave will set the plug-in in the Processes menu using the name defined in the file.
  
 
Now, place the folder containing the two files in a location where AnyWave will be able to load it.
 
Now, place the folder containing the two files in a location where AnyWave will be able to load it.

Revision as of 11:17, 30 July 2014

Introduction

This section targets people who have a good knowledge and practice of the Python programming language.
The purpose is to explain how to write a Python script that will be the heart of a plug-in executed by AnyWave.
We will also explain how to create a text file to describe our plug-in to AnyWave

The AnyWave-Python API (Application Programming Interface) consists in a Python module that is automatically imported in the Python environment by AnyWave.

Where to start?

The first thing to do is to create the basic structure for a plug-in.
A Python Scripted plug-in is very simple, it is a folder containing at least two files:

  • desc.txt (a text file describing the plug-in)
  • __main__.py (the Python code)

Writing the desc.txt file

The file must be named desc.txt and may looks like:

name = My Python Plugin
description = I am a plug-in written in Python
category = Process:Python:My Python Plugin

The category line is optional. It tells AnyWave where the plug-in will appear in the menus. Here we decided to caterogize it as a Process, with a sub category called Python. Finally, the plug-in name will be My Python Plugin.

The category feature is usefull to separate plug-in that won't really do some calculation but convert data to another format on launch external tools.

Three category keywords are recognized:

  • Process : The plug-in will be set in the Processes menu with a subcategory and a name, for example 'Process:Correlation:Compute correlation'
  • File: The plug-in will be set in the File Menu under the Export sub-menu. Example : 'File:Export to Numpy array format'
  • View: The plug-in will be set in the View Menu. Example : 'View:Launch 3D viewer'

If no category is specified, AnyWave will set the plug-in in the Processes menu using the name defined in the file.

Now, place the folder containing the two files in a location where AnyWave will be able to load it.

The prefered location is the user's AnyWave directory.

Python location.png

Check that the plug-in is available

Loaded plugin.png

The Python module

AnyWave will execute the Python plug-in in a separated Python environment which is embedded in the application.

A Python interpreter will execute the script '__main.py__' of our plug-in.

Before the script is being executed, AnyWave will do some initializing like importing a module named anywave in the Python's environment.

The module provides methods and attributes that will allow interactions between AnyWave and the Python script's environment.