| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Examples | 2010-02-28 | ||
| DynGraph_035.tar.gz | 2010-02-28 | 172.8 kB | |
| Manual.odt | 2010-02-28 | 41.1 kB | |
| manual.txt | 2010-02-28 | 20.1 kB | |
| readme.txt | 2010-02-28 | 4.2 kB | |
| changelog.txt | 2010-02-28 | 1.6 kB | |
| usage.txt | 2010-02-28 | 336 Bytes | |
| DynGraph_03.tar.gz | 2010-02-25 | 159.8 kB | |
| DynGraph_022.tar.gz | 2010-02-15 | 156.3 kB | |
| DynGraph_021.tar.gz | 2009-12-31 | 154.6 kB | |
| DynGraph_02.tar.gz | 2009-12-26 | 154.5 kB | |
| DynGraph_01.tar.gz | 2009-12-12 | 132.8 kB | |
| Totals: 12 Items | 998.2 kB | 0 |
Dynamic gui generation in Perl (Version 0.35)
The main update in this release is the support of JSON syntax for gui definition.
History
28.02.2010 Version 0.35
25.02.2010 Version 0.3
14.02.2010 Version 0.22
31.12.2009 Version 0.21
26.12.2009 Version 0.2
11.12.2009 Version 0.1
Description
This project aims to add the ability to create a graphical user interface (gui) dinamically
for Perl programs.
This readme.txt is a brief description of the project, see manual.txt or manual.odt for a
more detailed description.
Main features
1. Specify gui of programs on external files
2. Use a simple script language to define navigation and callback between gui components
3. Specify entry points to call program subs directly from navigation script
The goal of the project is to totally disjoint gui from main program script.
Brief module description
Project constists of 4 modules to maintain completely disjoint different sections (I mean that GuiLib.pm does
not depend on Template.pm and viceversa, and these module can be changed without affecting other module operation).
1. DynGui.pm
This module contains the implementation of the dynamic gui itself; it is gui library indipendent and relies
on an internal data structure.
2. GuiLib.pm
The gui library wrapper.
It uses an proprietary API to interface the DynGui module with the graphic library choosen.
The project came with a default implementation for Wxwidgets via WxPerl.
User can modify this module to work with different graphic library, for example it contains some hints
for usage with FLTK.
3. Template.pm
The file/string parser.
This module read a gui definition from file or string and converts it in the data structure suitable for
DynGui usage. The project came with a simplified XML syntax parser.
User can modify this module to change parser syntax recognition and/or grammar
(for example this module can be modified to recognize json style interface definition).
4. Consts.pm
The constants export module; contains all the constants used by more than one module of the project.
These modules must be called by the main script, a sample main.pl is provided.
Workflow
Dg:DynGui module passed the gui definition (on external file or defined in a string) to the parser
(Dg::Template module) where is analyzed and converted in a array of hashes structure that is
indipendent from the file/string syntax and graphics library format.
This conversion is useful to completely disjoint the file format and the graphic library API so
programmer can change one without affecting the other.
The data structure is passed back to Dg::DynGui that calls Dg:GuiLib to render the gui and do
application cycle; at the end (typically main window close) the gui is destroyed and the application
completes.
Main program (main.pl or whatever you want) calls Dg:DynGui only; the rest of the work is done in
background by this module.
License
This program is free software; you can redistribute it and/or modify it under the
same terms as Perl itself
Todo
This is only an early release of this project. So lot of work not yet done.
- Docs
Write a wider documentation on template and action script syntax and how to
change/expand both of them.
- Examples
Write a number of example to show module features not yet covered.
- GuiLib
Altough the base structure is almost complete, the implementation of the graphic wrapper
supports only basic widgets.
At the moment it supports windows (obviously), groups of widgets, tiles (panels),
tabbed windows (notebook in Wxwidgets), buttons, check buttons, radio buttons, label (static text),
textfields, bitmaps, sliders, progress bars, listboxes, comboboxes, spin controls and naturally
dropdown and popup menus.
Basic support for tables and tree views.
It also supports layout in form of packs (implemented as Wxwidgets boxsizer).
- Template
Make the parser more robust, for the sake of simplicity I have not used any parsing toolkit,
instead extended pattern matching is used to parse the interface template and action script.
The parser code must be more resistant to errors and malformed xml in gui definition.