All .fd files go in this directory.
Each .fd file should have just one form in them
NOTE: An exception to the above is any tabbed form which
xforms requires multiple forms to create. In that case
the group of forms constitutes one gui form.
- All forms should be named form_xxx and saved into a file of the same name. For example, the copyright notice is called form_copyright and is stored in form_copyright.fd. Tabbed folders should be named form_xxx_yyy. For example, the file folder in the graphics dialog has the identifier form_graphics_file.
If you match this pattern, the fdfix.sh script will be able to manipulate the generated .c and .h files to produce the .C and .h files used by LyX. A form called form_xxx will result in a struct FD_xxx.
- Name all buttons and other form components that are likely to cause a callback. The names should be of the form: button_ok, radio_group_item and so on.
Being more explicit:
class | prefix
------------------+-------
FL_BROWSER | browser
FL_BUTTON | button
FL_PIXMAPBUTTON | button
FL_CHECKBUTTON | check
FL_CHOICE | choice
FL_COUNTER | counter
FL_DIAL | dial
FL_INPUT | input
FL_FRAME | frame
FL_LABELFRAME | frame
FL_ROUND3DBUTTON,
RADIO_BUTTON | radio
FL_SLIDER | slider
FL_VALSLIDER | slider
FL_TABFOLDER | tabfolder
FL_TEXT | text
The only exceptions to this are objects that are to be converted in the sed scripts. At the moment this applies only to bmtable and to combox:
Convert an FL_BUTTON to a FL_BMTABLE by using prefix "bmtable".
Convert an FL_CHOICE to a FL_COMBOX by using prefix "combox".
Enter the full name of the callback eg.:
C_FormBaseOkCB
If you follow these simple rules then you will generate code for functions build_xxx that will need no further editing to make them work. For example, form_graphics.h contains the struct declarations and build methods, so:
extern FD_graphics * build_graphics(void *); extern FD_graphics_file * build_graphics_file(void *); extern FD_graphics_size * build_graphics_size(void *); extern FD_graphics_bbox * build_graphics_bbox(void *); extern FD_graphics_special * build_graphics_special(void *); extern FD_graphics_lyxview * build_graphics_lyxview(void *);
where the function is to be passed a pointer to the parent dialog (usually "this") so that this pointer can be cast off to FormBase * in the assigned callback function and the appropriate class method called.
