wxGlade supports a simple plugin system for widgets to load all widgets at the application startup dynamically. The plugin system loads all
built-in widgets like “Static Text” widget or the “Gauge” widget. It also loads widgets installed by users.
The wxGlade plugin system supports two different types of widget packages:
“directory package” - a single directory with all necessary files inside
“ZIP package” - a zipped version of a "directory" package
Example 7.1. Directory package
static_text <- Directory named after the widget name |-- __init__.py <- Mostly an empty file or a file with just a comment |-- codegen.py <- Python and C++ code generators |-- wconfig.py <- Widget configuration |-- lisp_codegen.py <- Lisp code generator |-- perl_codegen.py <- Perl code generator `-- static_text.py <- wxGlade GUI code
Example 7.2. ZIP package
# unzip -l static_text.zip Archive: static_text.zip Length Date Time Name --------- ---------- ----- ---- 0 2013-12-09 10:02 static_text/ 329 2013-12-09 10:02 static_text/__init__.py 3352 2013-12-09 10:02 static_text/codegen.py 320 2013-12-09 10:02 static_text/wconfig.py 1640 2013-12-09 10:02 static_text/lisp_codegen.py 1841 2013-12-09 10:02 static_text/perl_codegen.py 5917 2013-12-09 10:02 static_text/static_text.py --------- ------- 13079 6 files
Creating a ZIP package is quite simple. Just create a ZIP package from widgets directory with all Python and additional files. Don't include Python bytecode files because they are not platfrom-independend.
# tree static_text/ static_text/ |-- __init__.py |-- codegen.py |-- wconfig.py |-- lisp_codegen.py |-- perl_codegen.py `-- static_text.py # zip -r static_text.zip static_text adding: static_text/ (stored 0%) adding: static_text/__init__.py (deflated 36%) adding: static_text/codegen.py (deflated 67%) adding: static_text/wconfig.py (deflated 64%) adding: static_text/lisp_codegen.py (deflated 54%) adding: static_text/perl_codegen.py (deflated 56%) adding: static_text/static_text.py (deflated 69%)
Check the integrity of the created ZIP archive:
# zip -T static_text.zip test of static_text.zip OK