Source

vasm / brainstorm.txt

VASM Layout ideas
=================

Extensibility
--------------
The user interface should be pluggable.  Meaning new modules can be
developed and automatically detected and presented in the main UI.
To do this, we keep all the pluggable modules in the 'modules' directory.

Modules
-------
To accomplish the extensibilty of the overall program, each module
must adhere to a certain standard.  Here are the characteristics that
each module should have.

* A VASM_CATEGORY attribute which is a string stating which category this modules belongs to.
* A VASM_ICON attribute which can be a gtk.STOCK_* icon or an absolute path to an icon file.
* A VASM_LABEL attribute which is a string stating the text that should be displayed besides the icon.
* A __vasm_test__ method which is must return True or False.  This is used to perform any tests before displaying the module.  IE, if a module should be available only to root, this is the place to run that test.
* A __run__ method which is triggered when the icon is clicked.  For your convinience, this method takes 2 arguments (which default to None), but one of them is a "parent" argument.  This is useful to keep in touch with the main vasm UI so that your dialogs and other windows work in the same workflow as the main UI.

Other than these mandatory properties, the module can have anything the
developer wishes to include in it.