| .SH |
| Module flp |
| .LP |
| The flp module loads fl-forms from fd files, as generated |
| by fdesign. The module is designed to be flexible enough to allow |
| almost anything to be done with the loaded form. |
| .LP |
| Loadform defines |
| two types of functions: functions to parse fd files and functions to |
| create the forms from the templates returned by the parse functions. |
| There are fairly low-level create functions that create single objects, |
| and convenience routines that create complete forms, including callbacks, |
| etc. |
| .LP |
| The exception flp.error is raised whenever an error occurs while parsing a forms |
| definition file or creating a form. |
| .SH 2 |
| Parsing functions |
| .LP |
| There are two parsing functions, parse_form() and parse_forms(). They |
| take the following form: |
| .LP |
| .ft C |
| ftuple = parse_form(filename, formname) |
| .br |
| ftdict = parse_forms(filename) |
| .IP |
| Parse_form parses a single form, and returns a tuple (ftmp, otmplist). |
| Ftmp is a template for a form, otmplist is a list of templates for |
| objects. See below for a description of these templates. |
| .IP |
| Parse_forms parses all forms in an fd file. It returns a dictionary of |
| (ftmp, otmplist) tuples, indexed by formname. |
| .IP |
| Filename is the name of the forms definition file to inspect. The functions |
| appends '.fd' if needed, and use 'sys.path' to locate the file. |
| .IP |
| formname is the name of the form to load. This argument is mandatory, |
| even if the file only contains one form. |
| .LP |
| The form template and object template are structures that contain all |
| the information read from the fd file, in 'natural' form. A form |
| template record contains the following fields: |
| .IP |
| .nf |
| "Name", the name of the form; |
| "Width", the width of the form; |
| "Height", the height of the form; and |
| "Numberofobjects", the number of objects in the form. |
| .LP |
| An object template contains the following fields: |
| .IP |
| .nf |
| "Class", the class of object (eg. FL.BUTTON); |
| "Type", the sub-class (eg. FL.NORMALBUTTON); |
| "Box", a list with four members: [x, y, width, height]; |
| "Boxtype", the type of box (eg. FL.DOWNBOX); |
| "Colors", a list with the two object colors; |
| "Alignment", the label alignment (eg. FL.ALIGNLEFT); |
| "Style", the label style (eg. FL.BOLDSTYLE); |
| "Lcol", the label color; |
| "Label", a string containing the label; |
| "Name", a string containing the name of the object; |
| "Callback", a string containing the callback routine name; and |
| "Argument", a string containing the callback routine extra argument. |
| .SH |
| Low-level create routines. |
| .LP |
| The three low-level creation routines are called as follows: |
| .LP |
| .ft C |
| form = create_form(form_template) |
| .IP |
| Create an fl form from a form template. Returns the form created. |
| .LP |
| .ft C |
| obj = create_object(form, obj_template) |
| .IP |
| Create an object in an fl form. Return the new object. |
| An error is raised if the object has a callback routine. |
| .SH |
| High-level create routines. |
| .LP |
| The 'standard' way to handle forms in python is to define a class |
| that contains the form and all the objects (insofar as they are named), |
| and that defines all the callback functions, and use an instance of |
| this class to handle the form interaction. |
| Flp contains three routines that simplify handling this paradigm: |
| .LP |
| .ft C |
| create_full_form(instance, ftuple) |
| .IP |
| This routine takes an instance of your form-handling class and an |
| ftuple (as returned by the parsing routines) as parameters. It inserts |
| the form into the instance, defines all object names and arranges that |
| the callback methods are called. All the names inserted into the |
| instance are the same as the names used for the objects, etc. in the |
| fd file. |
| .LP |
| .ft C |
| merge_full_form(instance, form, ftuple) |
| .IP |
| This function does the same as create_full_form, only it does not create |
| the form itself nor the 'background box' that fdesign automatically |
| adds to each form. This is useful if your class inherits a superclass |
| that already defines a skeleton form (with 'OK' and 'Cancel' buttons, |
| for instance), and you want to merge the new form into that existing |
| form. The 'form' parameter is the form to which the new objects are |
| added. |
| .LP |
| If you use the paradigm sketched here but need slightly more control |
| over object creation there is a routine that creates a single object |
| and inserts its name (and arranges for the callback routine to be |
| called): |
| .LP |
| .ft C |
| create_object_instance(instance, form, obj_template) |