Hi everyone,
Recently, I am thinking about adding script plugin support to Icy. The motivations are:
1. Icy supports Javascript, Python and more in the future, but no script engine interface established.
2. Supporting plugins in script will change the way of developing, it will ease our developing experience and boost the speed. We now have ScriptEditor with autocomplete and highlighting, why should we use eclipse.
3. ScriptEditor can write script easily and why should we run it in the editor? When the develop is done, we only want to click a button and run it just like other plugins in Icy. Native script plugin support will be more elegant for user to run.
4. Script can be used to do some automation like macro, and also can be used to build actionable plugin, like this one [#472] by Timothée Lecomte.
It startup file is in Javascript, when it starts, it build a Python Interpreter to run a simple python plugin with EzPlug by Timothée Lecomte.It runs like this:

Files in this directory demonstrate script plugin in Icy, you can download these files, to test or work with your own plugin write in Python or Javascript.
##Requirement
2.And in order to run the demonstrate and use plugin write in Python, you should search the online plugin repository to install “Jython for Icy”.
##Usage
In order to work, you should:
1. icy.jar contains the kernel of icy, you should backup your original icy.jar file, and then copy the icy.jar to overwrite the old one.
2. PyPluginTest.zip contains a simple demo plugin write with javascript and python. You should unzip the file to a directory and put it under any sub-directory of “Plugins” in Icy.
3. Open Icy as normal and you will get your plugin installed just like a normal plugin, you can set it in the workspace or open it through “Others” plugin entry.
##Write your own script plugin for Icy
In order to write your own script plugin, you should know:
1.A script plugin should contains at least two files, “__init__.*” file and “*.xml” file. The “__init__.*” is “__init__.js” for javascript and “__init__.py” for python, this file contains the startup code of the plugin will be execute by the script engine when user click the plugin icon. You can write all your plugin code in the startup file and also you can all other module in this file. Another file is a xml file for descript the plugin, this file is just like your other plugin’s xml file. But Additionally, there is a more element named “script_engine_classname” to define which engine will be used to run the script. The sample files will show you what are these files like.
2.A specific scriptEngine is needed running the corresponding script. Currently, I have integrate a JavascriptEngine in icy.jar. So, this means only javascript plugin is supported. But more script Engine can be added by implementing the “PluginScriptEngine” interface.
But, if you have installed “Jython for Icy”, we can run Python plugin through Javascript, this is exactly our demo do. In our demonstration, we write a __init__.js file as the startup script, and it create a Python interpreter and run the plugin code “MyPythonPlugin.py” which is write in Python.
You can open the file to see more about how to build a EzPlug interfaced plugin.