lyx_mirror/src/frontends/xforms/forms
Angus Leeming c44d76deae Implemented controller-view split for minipage and preamble popups.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@1838 a592a061-630c-0410-9148-cb99ea01b6c8
2001-03-27 16:03:28 +00:00
..
.cvsignore Correct version of these files. Sorry! 2001-01-23 14:16:13 +00:00
fdfix.sh Compile fixes for DEC cxx, John's maths and keymap patches. 2001-03-16 12:08:14 +00:00
fdfixc.sed Compile fixes for DEC cxx, John's maths and keymap patches. 2001-03-16 12:08:14 +00:00
fdfixh.sed major GUII cleanup + Baruchs patch + Angus's patch + removed a couple of generated files 2000-08-14 05:24:35 +00:00
form_bibitem.fd formskdepatchthingie 2001-02-12 14:09:09 +00:00
form_bibtex.fd Implemented controller-view split for FormBibtex. 2001-03-19 16:37:01 +00:00
form_browser.fd controller-view split of FormLog and FormVCLog. 2001-03-20 10:14:03 +00:00
form_character.fd Implementation of controller-view split for FormCharacter. 2001-03-21 13:27:03 +00:00
form_citation.fd Merging BRANCH_MVC back into HEAD. 2001-03-15 13:37:04 +00:00
form_copyright.fd Reorganised, cleaned-up and improved documentation of controllers. 2001-03-22 11:24:36 +00:00
form_credits.fd Reorganised, cleaned-up and improved documentation of controllers. 2001-03-22 11:24:36 +00:00
form_document.C.patch Merging BRANCH_MVC back into HEAD. 2001-03-15 13:37:04 +00:00
form_document.fd Merging BRANCH_MVC back into HEAD. 2001-03-15 13:37:04 +00:00
form_error.fd Implemented controller-view split for FormError and FormInclude. 2001-03-23 17:09:34 +00:00
form_external.fd Fogot to "add" these files when I committed last time. 2001-03-12 12:47:07 +00:00
form_filedialog.C.patch Small cleanup, not part of MVC changes. 2001-03-15 10:02:36 +00:00
form_filedialog.fd Applied John's FileDialog patch. 2001-03-07 14:25:31 +00:00
form_graphics.fd Merging BRANCH_MVC back into HEAD. 2001-03-15 13:37:04 +00:00
form_include.fd Implemented controller-view split for FormError and FormInclude. 2001-03-23 17:09:34 +00:00
form_index.fd Merging BRANCH_MVC back into HEAD. 2001-03-15 13:37:04 +00:00
form_maths_deco.fd Rewrote the maths panel so that ALL the popups now derive from FormBaseBD, 2001-03-19 15:38:22 +00:00
form_maths_delim.fd Rewrote the maths panel so that ALL the popups now derive from FormBaseBD, 2001-03-19 15:38:22 +00:00
form_maths_matrix.fd Rewrote the maths panel so that ALL the popups now derive from FormBaseBD, 2001-03-19 15:38:22 +00:00
form_maths_panel.fd Rewrote the maths panel so that ALL the popups now derive from FormBaseBD, 2001-03-19 15:38:22 +00:00
form_maths_space.fd Rewrote the maths panel so that ALL the popups now derive from FormBaseBD, 2001-03-19 15:38:22 +00:00
form_minipage.fd Implemented controller-view split for minipage and preamble popups. 2001-03-27 16:03:28 +00:00
form_paragraph.fd Merging BRANCH_MVC back into HEAD. 2001-03-15 13:37:04 +00:00
form_preamble.fd Implemented controller-view split for minipage and preamble popups. 2001-03-27 16:03:28 +00:00
form_preferences.fd Merging BRANCH_MVC back into HEAD. 2001-03-15 13:37:04 +00:00
form_print.fd Implemented controller-view split for FormPrint. 2001-03-27 10:43:10 +00:00
form_ref.fd Controller-view split for Ref popup. 2001-03-26 13:16:57 +00:00
form_search.fd Implemented controller-view split for Search popup. 2001-03-26 15:25:37 +00:00
form_splash.fd John's splash patch 2001-03-12 12:44:56 +00:00
form_tabular_create.fd Implemented controller-view split for TabularCreate popup. 2001-03-26 14:33:58 +00:00
form_tabular.fd Merging BRANCH_MVC back into HEAD. 2001-03-15 13:37:04 +00:00
form_toc.fd Merging BRANCH_MVC back into HEAD. 2001-03-15 13:37:04 +00:00
form_url.fd controller-view split for Url popup. 2001-03-23 18:46:11 +00:00
makefile various minor bits 2001-03-27 10:44:14 +00:00
README Big cleanup of xforms popups from Angus 2000-10-26 09:36:33 +00:00

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 by the same name.
For example, the copyright notice is called form_copyright and is stored in
form_copyright.fd.  Its used by class FormCopyright.  If you match this pattern
the fdfix.sh script will do all the conversions for you.  That'll make
updating the source incredibly easy.

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.

Enter the full name of the callback eg.:
        C_FormCopyrightOkCB

That is, they all have the same format: C_##FormName##CallbackName.
Your code will then need to use the appropriate macro to setup this C callback
function which will in turn call the corresponding static class member function
of the form FormName::CallbackName.  You should be able to copy the macro
entries from a similar dialog for reuse without having to change anything.

The name of the wrapped dialog will be dialog_ eg.
        typedef struct {
        ...
        } FD_form_copyright;

        FD_form_copyright * dialog_;

Angus Leeming has modified the scripts to forward declare FD_form_xxxx thereby
removing one inter-file dependency and removing the struct declaration from the
FormXxxx.h file which was the previous practice.

If you follow these simple rules then the generated code for create_form_form_xxxx
can will be converted as the FormXxxx::build_xxxx method without any extra 
editting to make it work.  Every forms implementation will thereby follow a very
simple pattern and make it easier to maintain.

All the forms are rebuild by running `make test`.  This will generate all
the form_xxxx.[Ch] files. You should run `make updatesrc` to install them in the
parent directory.  `make updatesrc` will also regenerate all the files for you
so you don't have to do the `make test` step unless, for example, you are
testing the conversion scripts. The files fdfix.sh, fdfixc.sed, fdfixh.sed and
makefile contain the necessary smarts to convert the generated code into
something that can be used directly in the LyX codebase.

The easiest way to fit into the pattern is to copy an existing dialogs
implementation and adjust it to suit, keeping the variable names the same.
Take a look at the existing .fd files as well to see what is needed in there
in the way of callback names and widget names.

In addition a lot of work can be saved by using the code that has already been
written in the "lyx" module of the LyX CVS repository. This is where the old
development branch is kept.  The code there will need to be modified slightly
to meet these new guidelines.  In addition, an earlier generation signalling
system was used in that code. A conversion script called gtkmmconvert2 is 
available from the gtk-- distribution.  It updates all the signals to use
libsigc++.

Don't reinvent the wheel.  There's 18 months worth of code in the "lyx" cvs
module that you should at least use as a guide even if you don't actually make
direct use of it.

Allan. (ARRae)