I didn't want each and every plug-in writing code to deal with a GUI since that might (would) have led to writing each time the same code in a different way and nothing in common between plug-ins. So the GUI is not created manually by the script but automatically by Gaby thanks to an XML file provided by the plug-in.
Once the user has done with the GUI Gaby launches the script with the informations the user gave in the interface.
That means a plug-in has two files: plugin_name.xml and plugin_name.py
Actually there is also a third file: plugin_name.dsc, used by Gaby to 'register' the plug-in.