commit 17489ed60da1d1c010282eebf4aab78228ac18c1
Author: Uwe Stöhr <[email protected]>
Date:   Sat May 9 16:42:17 2015 +0200

    add support for PDF forms to branch

diff --git a/lib/Makefile.am b/lib/Makefile.am
index 44dda7a..c1d556b 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -326,6 +326,7 @@ dist_examples_DATA = \
        examples/MultilingualCaptions.lyx \
        examples/noweb2lyx.lyx \
        examples/PDF-comment.lyx \
+       examples/PDF-form.lyx \
        examples/powerdot-example.lyx \
        examples/recipebook.lyx \
        examples/R-S-statements.lyx \
@@ -2028,6 +2029,7 @@ dist_layouts_DATA =\
        layouts/numrevtex.inc \
        layouts/paper.layout \
        layouts/pdfcomment.module \
+       layouts/pdfform.module \
        layouts/powerdot.layout \
        layouts/RJournal.layout \
        layouts/recipebook.layout \
diff --git a/lib/examples/PDF-form.lyx b/lib/examples/PDF-form.lyx
new file mode 100644
index 0000000..f26419e
--- /dev/null
+++ b/lib/examples/PDF-form.lyx
@@ -0,0 +1,3532 @@
+#LyX 2.1 created this file. For more info see http://www.lyx.org/
+\lyxformat 474
+\begin_document
+\begin_header
+\textclass scrartcl
+\begin_preamble
+% to be able to use custom colors
+\usepackage[svgnames,rgb]{xcolor}
+
+% ------------------------------------
+% used to check for needed LaTeX packages
+\usepackage{ifthen}
+
+% check for package insdljs
+% used for JavScript code
+\newboolean{insdljs}
+\IfFileExists{insdljs.sty}
+ {\usepackage[pdftex]{insdljs}
+  \setboolean{insdljs}{true}}
+ {\setboolean{insdljs}{false}}
+
+\pdfcatalog{/AA \the\pdflastobj\space 0 R}
+
+\ifinsdljs % only execute if package insdljs is installed
+
+ \begin{insDLJS}[exaaae]{exaaae}{JavaScript}
+
+  function validateTime(){
+   this.delay = true;
+   if((event.value == "u") || (event.value == "unlimited")) {
+    this.getField("from").display = display.hidden;
+    this.getField("to").display = display.hidden;
+   } else {
+    this.getField("from").display = display.visible;
+    this.getField("to").display = display.visible;
+    this.getField("from").setFocus();
+   }
+   this.delay = false;
+  }
+ 
+ function checkNumber() {
+  event.rc = true;
+  if (!Number(event.value))
+  {
+   app.alert("Value must be a number!");
+   event.value = "";
+  }  else {
+   event.target.textColor = color.green;
+ }
+
+}
+
+ \end{insDLJS}
+
+\fi % end \ifinsdljs
+
+% if pdflatex is used
+\usepackage{ifpdf}
+\ifpdf
+
+% set fonts for nicer pdf view
+\IfFileExists{lmodern.sty}
+ {\usepackage{lmodern}}{}
+
+\fi % end if pdflatex is used
+\end_preamble
+\options BCOR8mm,pagesize
+\use_default_options false
+\begin_modules
+pdfform
+\end_modules
+\maintain_unincluded_children false
+\language english
+\language_package default
+\inputencoding auto
+\fontencoding global
+\font_roman default
+\font_sans default
+\font_typewriter default
+\font_math auto
+\font_default_family default
+\use_non_tex_fonts false
+\font_sc false
+\font_osf false
+\font_sf_scale 100
+\font_tt_scale 100
+\graphics default
+\default_output_format default
+\output_sync 0
+\bibtex_command bibtex
+\index_command default
+\paperfontsize 12
+\spacing single
+\use_hyperref true
+\pdf_title "Description of the module pdfcomment"
+\pdf_author "Uwe Stöhr"
+\pdf_subject "PDF form"
+\pdf_keywords "LyX, PDF forms, hyperref"
+\pdf_bookmarks true
+\pdf_bookmarksnumbered true
+\pdf_bookmarksopen true
+\pdf_bookmarksopenlevel 2
+\pdf_breaklinks false
+\pdf_pdfborder false
+\pdf_colorlinks false
+\pdf_backref false
+\pdf_pdfusetitle false
+\pdf_quoted_options "linkcolor=black, citecolor=black, urlcolor=blue, 
filecolor=blue, pdfpagelayout=OneColumn, pdfnewwindow=true, pdfstartview=XYZ, 
plainpages=false, urlbordercolor={1 0 0}"
+\papersize a4paper
+\use_geometry false
+\use_package amsmath 1
+\use_package amssymb 1
+\use_package cancel 0
+\use_package esint 1
+\use_package mathdots 1
+\use_package mathtools 1
+\use_package mhchem 1
+\use_package stackrel 0
+\use_package stmaryrd 0
+\use_package undertilde 0
+\cite_engine basic
+\cite_engine_type default
+\biblio_style plain
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date true
+\justification true
+\use_refstyle 0
+\notefontcolor #0000ff
+\index Index
+\shortcut idx
+\color #008000
+\end_index
+\secnumdepth 3
+\tocdepth 2
+\paragraph_separation skip
+\defskip medskip
+\quotes_language english
+\papercolumns 1
+\papersides 1
+\paperpagestyle default
+\tracking_changes false
+\output_changes false
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
+\end_header
+
+\begin_body
+
+\begin_layout Begin PDF Form
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+action=mailto:[email protected]?subject=The submitted PDF form, method=post
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Title
+Description of the module PDF Form
+\end_layout
+
+\begin_layout Author
+Uwe Stöhr
+\end_layout
+
+\begin_layout Standard
+\begin_inset Note Note
+status open
+
+\begin_layout Plain Layout
+To export all parts of this document to PDF the LaTeX-package 
+\series bold
+insdljs
+\series default
+ must be installed.
+ If it is not installed you can export the document anyway but the example
+ in the section about dynamic form fields won't appear in the output.
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+By loading the module PDF
+\begin_inset space ~
+\end_inset
+
+Form the whole document or a part of it can be made a PDF form.
+ You can add all possible form elements like text fields buttons etc.
+ This document describes how this is done.
+\end_layout
+
+\begin_layout Section
+Preparation
+\begin_inset CommandInset label
+LatexCommand label
+name "sec:Preparation"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+At first load the module PDF
+\begin_inset space ~
+\end_inset
+
+Form in the document settings of your file.
+ To make the whole document a form, insert the environment
+\family sans
+ Begin
+\begin_inset space ~
+\end_inset
+
+PDF
+\begin_inset space ~
+\end_inset
+
+Form
+\family default
+ from LyX's dropdown menu at the beginning of the document.
+ If only a part of the document should be a form, add 
+\family sans
+Begin
+\begin_inset space ~
+\end_inset
+
+PDF
+\begin_inset space ~
+\end_inset
+
+Form
+\family default
+ at the position where the form should start.
+\end_layout
+
+\begin_layout Standard
+\begin_inset Note Greyedout
+status open
+
+\begin_layout Plain Layout
+
+\series bold
+Note:
+\series default
+ It is only possible to have one form in a PDF file!
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+If the form data should be submitted to a server or the like, then you must
+ specify the URL as parameter of the 
+\family sans
+Begin
+\begin_inset space ~
+\end_inset
+
+PDF
+\begin_inset space ~
+\end_inset
+
+Form
+\family default
+ environment.
+ This is done by using the menu 
+\family sans
+Insert\SpecialChar \menuseparator
+PDF
+\begin_inset space ~
+\end_inset
+
+form
+\begin_inset space ~
+\end_inset
+
+parameters
+\family default
+.
+ For example in this document the following was inserted to the parameter
+ inset:
+\end_layout
+
+\begin_layout Standard
+
+\series bold
+action=mailto:[email protected]?subject=The submitted PDF form,
+\begin_inset Newline newline
+\end_inset
+
+method=post
+\end_layout
+
+\begin_layout Standard
+This sends the form data as email to 
+\emph on
[email protected]
+\emph default
+ when the user presses the submit button.
+ The email subject will be 
+\begin_inset Quotes eld
+\end_inset
+
+The submitted PDF form
+\begin_inset Quotes erd
+\end_inset
+
+ and the HTML method is 
+\series bold
+post
+\series default
+.
+ (The other possible method would be 
+\series bold
+get
+\series default
+.) For more about submitting see sec.
+\begin_inset space \thinspace{}
+\end_inset
+
+
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "sub:Submit-button"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Standard
+\begin_inset Newpage newpage
+\end_inset
+
+
+\end_layout
+
+\begin_layout Section
+Form fields
+\end_layout
+
+\begin_layout Standard
+There are 6
+\begin_inset space ~
+\end_inset
+
+possible types of fields in a PDF form:
+\end_layout
+
+\begin_layout Subsection
+Text field
+\end_layout
+
+\begin_layout Standard
+A text field is added by inserting the custom inset 
+\family sans
+TextField
+\family default
+ using the menu 
+\family sans
+Insert\SpecialChar \menuseparator
+Custom
+\begin_inset space ~
+\end_inset
+
+Insets
+\family default
+.
+ Write inside the inset the label for the text field that will be printed
+ in the PDF output before the field.
+ Here is an example:
+\begin_inset Newline newline
+\end_inset
+
+
+\begin_inset Flex TextField
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+name=customer
+\end_layout
+
+\end_inset
+
+Enter your name here:
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+You must also specify a field name for text fields: Set the cursor into
+ its 
+\family sans
+Params
+\family default
+ inset.
+ There insert for example the parameter 
+\series bold
+name=customer
+\series default
+ (where 
+\series bold
+customer
+\series default
+ is the field name).
+\end_layout
+
+\begin_layout Standard
+\begin_inset Note Greyedout
+status open
+
+\begin_layout Plain Layout
+
+\series bold
+Note:
+\series default
+ All braces, brackets, backslashes and quote characters in form parameters
+ must be inserted as TeX code!
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Using the same name for several text fields results in an automatic duplication
+ of the inserted text.
+ This is for example useful if the user should input a date that should
+ appear at different places in the form.
+\begin_inset Newline newline
+\end_inset
+
+Here are 2
+\begin_inset space ~
+\end_inset
+
+fields as example: Fill one and see that the other one will also be filled
+ automatically:
+\begin_inset Newline newline
+\end_inset
+
+
+\begin_inset Flex TextField
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+name=identic
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\begin_inset Newline newline
+\end_inset
+
+
+\begin_inset Flex TextField
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+name=identic
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+All form fields can be customized by adding parameters.
+\end_layout
+
+\begin_layout Standard
+Here is a customized multiline text field with a width of 60
+\begin_inset space \thinspace{}
+\end_inset
+
+% of the text width, 3
+\begin_inset space \thinspace{}
+\end_inset
+
+cm height and a proposed content:
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Newline newline
+\end_inset
+
+
+\begin_inset Flex TextField
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+name=customer2, multiline, width=0.6
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+
+\backslash
+textwidth
+\end_layout
+
+\end_inset
+
+, height=3cm, value=
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+{
+\end_layout
+
+\end_inset
+
+Testman
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+Enter your name here:
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Note Greyedout
+status open
+
+\begin_layout Plain Layout
+
+\series bold
+Note:
+\series default
+ It is highly recommended to use a uniform layout of all fields in your
+ form.
+ See sec.
+\begin_inset space \thinspace{}
+\end_inset
+
+
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "sec:Form-field-customization"
+
+\end_inset
+
+ for how this is done.
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsection
+Check box
+\end_layout
+
+\begin_layout Standard
+A check box is added by inserting the custom inset 
+\family sans
+CheckBox
+\family default
+.
+ Write inside the inset the label for the box.
+ Here is an example:
+\begin_inset Newline newline
+\end_inset
+
+
+\begin_inset Flex CheckBox
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+name=age
+\end_layout
+
+\end_inset
+
+Are you older than 18 years?
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+You must also specify a field name for check boxes: Insert for example the
+ parameter 
+\series bold
+name=age
+\series default
+ (where 
+\series bold
+age
+\series default
+ is the field name) into the 
+\family sans
+Params
+\family default
+ inset.
+\end_layout
+
+\begin_layout Subsection
+Choice menu
+\end_layout
+
+\begin_layout Standard
+A choice menu is added by inserting the custom inset 
+\family sans
+ChoiceMenu
+\family default
+.
+ A label for the inset is added by using the menu 
+\family sans
+Insert\SpecialChar \menuseparator
+Label
+\family default
+.
+ Insert the label text into this inset.
+\begin_inset Newline newline
+\end_inset
+
+The different choices are inserted to the inset as comma-separated list.
+ There are 3
+\begin_inset space ~
+\end_inset
+
+choice menu types:
+\end_layout
+
+\begin_layout Description
+Radio Only one choice can be selected
+\end_layout
+
+\begin_layout Description
+Combo The choices are listed in a combo box (dropdown list) but the user
+ is allowed to choose something that is not in the predefined list.
+\end_layout
+
+\begin_layout Description
+Popdown All choices are listed below each other.
+ It the filed is not high enough a scroll bar is automatically added to
+ the field.
+\end_layout
+
+\begin_layout Standard
+To determine the choice menu type, add the parameter 
+\series bold
+radio
+\series default
+, 
+\series bold
+combo
+\series default
+ or 
+\series bold
+popdown
+\series default
+.
+\end_layout
+
+\begin_layout Standard
+Here is an example for the radio type:
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Newline newline
+\end_inset
+
+
+\begin_inset Flex ChoiceMenu
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+radio, name=radio
+\end_layout
+
+\end_inset
+
+male=m, female=f
+\begin_inset Argument 2
+status open
+
+\begin_layout Plain Layout
+Sex:
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Here is an example for the combo type:
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Newline newline
+\end_inset
+
+
+\begin_inset Flex ChoiceMenu
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+combo, name=combo
+\end_layout
+
+\end_inset
+
+Albania=Al, Armenia=Ar, Azerbaidschan=Az
+\begin_inset Argument 2
+status open
+
+\begin_layout Plain Layout
+Country:
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Here is an example for the popdown type:
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Newline newline
+\end_inset
+
+
+\begin_inset Flex ChoiceMenu
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+popdown, name=country
+\end_layout
+
+\end_inset
+
+Albania=Al, Armenia=Ar, Azerbaidschan=Az
+\begin_inset Argument 2
+status open
+
+\begin_layout Plain Layout
+Country:
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+You must also specify a field name for choice menus: Insert for example
+ the parameter 
+\series bold
+name=country
+\series default
+ (where 
+\series bold
+country
+\series default
+ is the field name) into the 
+\family sans
+Params
+\family default
+ inset.
+\end_layout
+
+\begin_layout Standard
+It is recommended to add a short name for every choice to be able to access
+ them and to know which one was chosen by the user.
+ This is done by adding 
+\series bold
+=name
+\series default
+ behind each choice (where 
+\series bold
+name
+\series default
+ is the choice name).
+ For example the radio type example contains this choice list:
+\series bold
+ male=m, female=f
+\series default
+.
+ If the user chose 
+\begin_inset Quotes eld
+\end_inset
+
+male
+\begin_inset Quotes erd
+\end_inset
+
+ you know that he chose the choice 
+\begin_inset Quotes eld
+\end_inset
+
+m
+\begin_inset Quotes erd
+\end_inset
+
+.
+ By specifying names you can also preset/propose e.g.
+\begin_inset space \space{}
+\end_inset
+
+the choice 
+\begin_inset Quotes eld
+\end_inset
+
+male
+\begin_inset Quotes erd
+\end_inset
+
+ by adding the parameter 
+\series bold
+default=m
+\series default
+.
+ Here is an example:
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex ChoiceMenu
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+radio, name=sex, default=m
+\end_layout
+
+\end_inset
+
+male=m, female=f
+\begin_inset Argument 2
+status open
+
+\begin_layout Plain Layout
+Sex:
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Note Greyedout
+status open
+
+\begin_layout Plain Layout
+
+\series bold
+Note:
+\series default
+ Due to a bug in the LaTeX package 
+\series bold
+hyperref
+\series default
+ it is currently only possible the set the first choice as default.
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Newpage newpage
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsection
+Push button
+\end_layout
+
+\begin_layout Standard
+A push button is added by inserting the custom inset 
+\family sans
+PushButton
+\family default
+.
+ Write inside the inset the label for the button.
+ Here is an example:
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex PushButton
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+
+Don't click on this button or your fridge will be destroyed!!!
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+The action that is triggered by pressing the button is specified by JavaScript
+ code.
+ To specify it, add the parameter 
+\series bold
+onclick={}
+\series default
+ and insert the JavaScript code between the braces.
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex PushButton
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+onclick=
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+{
+\end_layout
+
+\end_inset
+
+app.alert(
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+"
+\end_layout
+
+\end_inset
+
+What the hell? Now you destroyed your fridge.
+ Congratulations.
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+"
+\end_layout
+
+\end_inset
+
+)
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+Don't click on this button or your fridge will be destroyed!!!
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+For info about JavaScript, see its documentation, 
+\begin_inset CommandInset citation
+LatexCommand cite
+key "JavaScript"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Standard
+A common usage for pus buttons is to open a weblink.
+ Such a button is created by inserting a hyperlink into the button inset.
+ Here is an example:
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex PushButton
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+
+
+\begin_inset CommandInset href
+LatexCommand href
+name "Information how to fill out this form"
+target "http://wiki.lyx.org";
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+To get rid of the frame for weblinks add this to the additional options
+ in the document settings under 
+\family sans
+PDF
+\begin_inset space ~
+\end_inset
+
+properties
+\family default
+:
+\end_layout
+
+\begin_layout Standard
+
+\series bold
+urlbordercolor={1 0 0}
+\end_layout
+
+\begin_layout Standard
+if your push button border color is red (the default), otherwise use the
+ same color definition as for your push button border color.
+\end_layout
+
+\begin_layout Subsection
+Submit button
+\begin_inset CommandInset label
+LatexCommand label
+name "sub:Submit-button"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+A submit button is used to submit the form data to a server.
+ It is added by inserting the custom inset 
+\family sans
+SubmitButton
+\family default
+.
+ Write inside the inset the label for the button.
+ Here is an example:
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex SubmitButton
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+name=submit1
+\end_layout
+
+\end_inset
+
+Send your data via email
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+The submit button creates a forms data format (FDF) file (file extension
+ *.fdf) which is then submitted.
+ The FDF file contains only the form data.
+ They can only be applied to a PDF form if all fields in the form have a
+ name.
+\end_layout
+
+\begin_layout Standard
+\begin_inset Note Greyedout
+status open
+
+\begin_layout Plain Layout
+
+\series bold
+Note:
+\series default
+ You can only use a submit button if you specified the submit method and
+ target in the PDF form environment options! See sec.
+\begin_inset space \thinspace{}
+\end_inset
+
+
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "sec:Preparation"
+
+\end_inset
+
+ for the description.
+ If there are no specifications you will get LaTeX errors!
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Note Greyedout
+status open
+
+\begin_layout Plain Layout
+
+\series bold
+Note:
+\series default
+ If you have more than one submit button in your document you must specify
+ a name for each of them to avoid LaTeX errors! For example add 
+\series bold
+name=submit1
+\series default
+ (where 
+\series bold
+submit1
+\series default
+ is the button name).
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsection
+Reset button
+\end_layout
+
+\begin_layout Standard
+A reset button is used to reset all form fields to the initial state.
+ It is added by inserting the custom inset 
+\family sans
+ResetButton
+\family default
+.
+ Write inside the inset the label for the button.
+ Here is an example:
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex ResetButton
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+name=reset1
+\end_layout
+
+\end_inset
+
+Reset the form
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Note Greyedout
+status open
+
+\begin_layout Plain Layout
+
+\series bold
+Note:
+\series default
+ If you have more than one reset button in your document you must specify
+ a name for each of them to avoid LaTeX errors! For example add 
+\series bold
+name=reset1
+\series default
+ (where 
+\series bold
+reset1
+\series default
+ is the button name).
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Section
+Form field customization
+\begin_inset CommandInset label
+LatexCommand label
+name "sec:Form-field-customization"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Since all form elements should look uniform, one can determine their layout
+ using the following styles:
+\end_layout
+
+\begin_layout Description
+Text
+\begin_inset space ~
+\end_inset
+
+Field
+\begin_inset space ~
+\end_inset
+
+Style
+\end_layout
+
+\begin_layout Description
+Check
+\begin_inset space ~
+\end_inset
+
+Box
+\begin_inset space ~
+\end_inset
+
+Style 
+\end_layout
+
+\begin_layout Description
+List
+\begin_inset space ~
+\end_inset
+
+Box
+\begin_inset space ~
+\end_inset
+
+Style affects all choice menu types
+\end_layout
+
+\begin_layout Description
+Combo
+\begin_inset space ~
+\end_inset
+
+Box
+\begin_inset space ~
+\end_inset
+
+Style affects only the combo box style
+\end_layout
+
+\begin_layout Description
+Popdown
+\begin_inset space ~
+\end_inset
+
+Box
+\begin_inset space ~
+\end_inset
+
+Style affects only the popdown box style
+\end_layout
+
+\begin_layout Description
+Radio
+\begin_inset space ~
+\end_inset
+
+Box
+\begin_inset space ~
+\end_inset
+
+Style affects only the radio box style
+\end_layout
+
+\begin_layout Description
+Push
+\begin_inset space ~
+\end_inset
+
+Button
+\begin_inset space ~
+\end_inset
+
+Style
+\end_layout
+
+\begin_layout Description
+Submit
+\begin_inset space ~
+\end_inset
+
+Button
+\begin_inset space ~
+\end_inset
+
+Style
+\end_layout
+
+\begin_layout Description
+Reset
+\begin_inset space ~
+\end_inset
+
+Button
+\begin_inset space ~
+\end_inset
+
+Style
+\end_layout
+
+\begin_layout Text Field Style
+
+\end_layout
+
+\begin_layout Standard
+The content of the styles is a comma-separated list of parameters.
+ The possible parameters are listed in sec.
+\begin_inset space \thinspace{}
+\end_inset
+
+6.2 
+\begin_inset Quotes eld
+\end_inset
+
+Forms optional parameters
+\begin_inset Quotes erd
+\end_inset
+
+ of the documentation of the LaTeX package 
+\series bold
+hyperref
+\series default
+, 
+\begin_inset CommandInset citation
+LatexCommand cite
+key "hyperref"
+
+\end_inset
+
+.
+ It is important that the parameter print is always part of the definition,
+ otherwise the fields won't appear in the PDF output.
+ The defined style is applied to all fields following the definition.
+\end_layout
+
+\begin_layout Subsubsection*
+Here are some examples:
+\end_layout
+
+\begin_layout Text Field Style
+print, bordercolor=red, borderstyle=U, backgroundcolor=lightgray, color=lime,
+ maxlen=10, align=2, charsize=16pt
+\end_layout
+
+\begin_layout Check Box Style
+print, borderstyle=S, checkboxsymbol=
+\backslash
+ding{55}
+\end_layout
+
+\begin_layout Combo Box Style
+print, bordercolor={0.33 0.66 0.33}, borderstyle=D
+\end_layout
+
+\begin_layout Popdown Box Style
+print, menulength=2
+\end_layout
+
+\begin_layout Radio Box Style
+print, borderstyle=I, radiosymbol=6
+\end_layout
+
+\begin_layout Push Button Style
+print, borderstyle=B, bordercolor=lime
+\end_layout
+
+\begin_layout Submit Button Style
+print, borderwidth=0, bordercolor=white
+\end_layout
+
+\begin_layout Reset Button Style
+print, bordercolor=lime
+\end_layout
+
+\begin_layout Itemize
+Text field with gray background, lime text color, a red border only below
+ the field, right alignment, 16
+\begin_inset space \thinspace{}
+\end_inset
+
+pt font size and a limitation for maximal 10
+\begin_inset space ~
+\end_inset
+
+characters to insert:
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Newline newline
+\end_inset
+
+
+\begin_inset Flex TextField
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+
+Enter your name here:
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+The 
+\series bold
+borderstyle
+\series default
+ can be 
+\series bold
+U
+\series default
+ (underlined), 
+\series bold
+S
+\series default
+ (solid), 
+\series bold
+D
+\series default
+ (dashed), 
+\series bold
+B
+\series default
+ (bevel), or 
+\series bold
+I
+\series default
+ (inverted bevel).
+\end_layout
+
+\begin_layout Standard
+\begin_inset Note Greyedout
+status open
+
+\begin_layout Plain Layout
+
+\series bold
+Note
+\series default
+ that the 
+\series bold
+value
+\series default
+ has only an effect for text fields if a 
+\series bold
+name
+\series default
+ was specified.
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Itemize
+Check box with normal border and symbol 
+\backslash
+ding{55}:
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Newline newline
+\end_inset
+
+
+\begin_inset Flex CheckBox
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+
+Are you older than 18 years?
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+The symbol is either specified as number or with the command
+\begin_inset Newline newline
+\end_inset
+
+
+\series bold
+
+\backslash
+ding{number}
+\series default
+
+\begin_inset Newline newline
+\end_inset
+
+where 
+\series bold
+number
+\series default
+ is one of the possible numbers listed in Table
+\begin_inset space ~
+\end_inset
+
+2 of 
+\begin_inset CommandInset citation
+LatexCommand cite
+key "pifont"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Itemize
+Combo box with dashed, colored border:
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Newline newline
+\end_inset
+
+
+\begin_inset Flex ChoiceMenu
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+combo, name=combo2, default=Az
+\end_layout
+
+\end_inset
+
+Albania=Al, Armenia=Ar, Azerbaidschan=Az
+\begin_inset Argument 2
+status open
+
+\begin_layout Plain Layout
+Country:
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Itemize
+Popdown box where only 2
+\begin_inset space ~
+\end_inset
+
+entries are shown and where the last entry is preselected:
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Newline newline
+\end_inset
+
+
+\begin_inset Flex ChoiceMenu
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+popdown, name=country2, value=Az
+\end_layout
+
+\end_inset
+
+Albania=Al, Armenia=Ar, Azerbaidschan=Az
+\begin_inset Argument 2
+status open
+
+\begin_layout Plain Layout
+Country:
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Note Greyedout
+status open
+
+\begin_layout Plain Layout
+
+\series bold
+Note
+\series default
+ that the 
+\series bold
+borderstyle B
+\series default
+ and 
+\series bold
+I
+\series default
+ and also 
+\series bold
+color
+\series default
+ has no effect for popdown boxes.
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Itemize
+Radio box with inverted bevel border and symbol number
+\begin_inset space ~
+\end_inset
+
+6 as checkmark:
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Newline newline
+\end_inset
+
+
+\begin_inset Flex ChoiceMenu
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+radio, name=radio2
+\end_layout
+
+\end_inset
+
+male=m, female=f
+\begin_inset Argument 2
+status open
+
+\begin_layout Plain Layout
+Sex:
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Itemize
+Push button with a bevel border and colored text:
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Newline newline
+\end_inset
+
+
+\begin_inset Flex PushButton
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+onclick=
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+{
+\end_layout
+
+\end_inset
+
+app.alert(
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+"
+\end_layout
+
+\end_inset
+
+Why do you click this?
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+"
+\end_layout
+
+\end_inset
+
+)
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+
+\backslash
+colorbox{lime}{
+\end_layout
+
+\end_inset
+
+
+\color red
+Don't click on this button!!!
+\color inherit
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Note Greyedout
+status open
+
+\begin_layout Plain Layout
+
+\series bold
+Note
+\series default
+ that the 
+\series bold
+backgroundcolor
+\series default
+ and
+\series bold
+ color
+\series default
+ has no effect for push, submit and reset buttons.
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+As workaround use the command 
+\series bold
+
+\backslash
+colorbox
+\series default
+ as described in sec.
+\begin_inset space \thinspace{}
+\end_inset
+
+ 5.7 
+\begin_inset Quotes eld
+\end_inset
+
+Colored Boxes
+\begin_inset Quotes erd
+\end_inset
+
+ in LyX's 
+\emph on
+EmbeddedObjects
+\emph default
+ manual.
+\begin_inset Newline newline
+\end_inset
+
+In the button above this code was used:
+\begin_inset Newline newline
+\end_inset
+
+
+\family sans
+
+\backslash
+colorbox{lime}{Don't click on this button!!!}
+\family default
+
+\begin_inset Newline newline
+\end_inset
+
+and the button text was colored.
+\end_layout
+
+\begin_layout Standard
+\begin_inset Note Greyedout
+status open
+
+\begin_layout Plain Layout
+
+\series bold
+Note
+\series default
+ that the 
+\series bold
+height 
+\series default
+and 
+\series bold
+width
+\series default
+ has no effect for push, submit and reset buttons.
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+As workaround use the box method described in sec.
+\begin_inset space \thinspace{}
+\end_inset
+
+
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "sub:Action-button-customization"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Itemize
+Submit button without border, with cyan background color and increased height:
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Newline newline
+\end_inset
+
+
+\begin_inset Flex SubmitButton
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+name=submit2
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+
+\backslash
+colorbox{cyan}{
+\end_layout
+
+\end_inset
+
+
+\begin_inset Box Frameless
+position "c"
+hor_pos "c"
+has_inner_box 1
+inner_pos "c"
+use_parbox 1
+use_makebox 0
+width "5cm"
+special "none"
+height "4in"
+height_special "totalheight"
+status open
+
+\begin_layout Plain Layout
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+ Send your data via mail
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\begin_inset VSpace bigskip
+\end_inset
+
+
+\end_layout
+
+\begin_layout Itemize
+Reset button with a width of 7
+\begin_inset space \thinspace{}
+\end_inset
+
+cm:
+\begin_inset VSpace defskip
+\end_inset
+
+
+\begin_inset Newline newline
+\end_inset
+
+
+\begin_inset Flex ResetButton
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+name=reset2
+\end_layout
+
+\end_inset
+
+
+\begin_inset Box Frameless
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+use_makebox 1
+width "7cm"
+special "none"
+height "1in"
+height_special "totalheight"
+status open
+
+\begin_layout Plain Layout
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+ Reset the form
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Section
+PDF viewer action buttons
+\end_layout
+
+\begin_layout Standard
+One often needs basic actions to be done by the PDF viewer program.
+ For example to print the form.
+ Such PDF program-specific actions can be triggered by adding inserting
+ the custom inset 
+\family sans
+PDFAction
+\family default
+.
+ The PDF viewer programs 
+\emph on
+Acrobat
+\emph default
+ and 
+\emph on
+Adobe Reader
+\emph default
+ can handle all possible actions while other PDF viewers might only support
+ some of them.
+ However, all PDF viewer programs support the basic things like printing,
+ save
+\begin_inset space ~
+\end_inset
+
+as, view in fullscreen etc..
+\end_layout
+
+\begin_layout Standard
+To specify the action insert its name to the 
+\family sans
+Action
+\family default
+ inset.
+ A list with possible actions can be found in sec.
+\begin_inset space \thinspace{}
+\end_inset
+
+5 
+\begin_inset Quotes eld
+\end_inset
+
+Acrobat-specific behavior
+\begin_inset Quotes erd
+\end_inset
+
+ of the documentation of the LaTeX package 
+\series bold
+hyperref
+\series default
+, 
+\begin_inset CommandInset citation
+LatexCommand cite
+key "hyperref"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Standard
+Here are some examples:
+\end_layout
+
+\begin_layout Description
+Printing: 
+\begin_inset Flex PDFAction
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+Print
+\end_layout
+
+\end_inset
+
+Print the document
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Description
+Save
+\begin_inset space ~
+\end_inset
+
+as: 
+\begin_inset Flex PDFAction
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+SaveAs
+\end_layout
+
+\end_inset
+
+Save document as
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Description
+View
+\begin_inset space ~
+\end_inset
+
+in
+\begin_inset space ~
+\end_inset
+
+fullscreen: 
+\begin_inset Flex PDFAction
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+FullScreen
+\end_layout
+
+\end_inset
+
+View the form in fullscreen
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsection
+Action button customization
+\begin_inset CommandInset label
+LatexCommand label
+name "sub:Action-button-customization"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Customizing the action buttons requires the usage of boxes because things
+ like the width, height and border separation cannot be specified as button
+ parameters.
+\end_layout
+
+\begin_layout Standard
+The easiest way to customize the buttons is to fill it with a custom box.
+ For example the button should be 4
+\begin_inset space \thinspace{}
+\end_inset
+
+cm wide and have the height of 2 lines.
+ Then create this parbox:
+\end_layout
+
+\begin_layout Standard
+\begin_inset Box Frameless
+position "c"
+hor_pos "c"
+has_inner_box 1
+inner_pos "c"
+use_parbox 1
+use_makebox 0
+width "4cm"
+special "none"
+height "2in"
+height_special "totalheight"
+status open
+
+\begin_layout Plain Layout
+\noindent
+Save form as
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+inside a 
+\family sans
+PDFAction
+\family default
+ inset.
+ To center the text in the button add 
+\series bold
+
+\backslash
+centering
+\series default
+ as TeX code right before the button text.
+ This is the result:
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex PDFAction
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+SaveAs
+\end_layout
+
+\end_inset
+
+
+\begin_inset Box Frameless
+position "c"
+hor_pos "c"
+has_inner_box 1
+inner_pos "c"
+use_parbox 1
+use_makebox 0
+width "4cm"
+special "none"
+height "2in"
+height_special "totalheight"
+status open
+
+\begin_layout Plain Layout
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+ Save form as
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+To customize the border color, add the command 
+\series bold
+menubordercolor={r g b}
+\series default
+ to the additional options in the document settings under 
+\family sans
+PDF
+\begin_inset space ~
+\end_inset
+
+properties
+\family default
+ and replace 
+\series bold
+r
+\series default
+, 
+\series bold
+g
+\series default
+ and 
+\series bold
+b
+\series default
+ with a number between 0 and 1 for the colors red, green and blue.
+ If you want to change the border color only for certain buttons, use the
+ layout 
+\family sans
+PDF
+\begin_inset space ~
+\end_inset
+
+link
+\begin_inset space ~
+\end_inset
+
+setup
+\family default
+ before the button and insert there the command 
+\series bold
+menubordercolor
+\series default
+.
+ The default value of 
+\series bold
+menubordercolor
+\series default
+ is 
+\series bold
+{1 0 0}
+\series default
+.
+\end_layout
+
+\begin_layout PDF Link Setup
+menubordercolor={0.1 0.9 0.5}
+\end_layout
+
+\begin_layout Standard
+An example with 
+\series bold
+menubordercolor={0.1 0.9 0.5}
+\series default
+:
+\begin_inset Newline newline
+\end_inset
+
+
+\begin_inset Flex PDFAction
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+SaveAs
+\end_layout
+
+\end_inset
+
+
+\begin_inset Box Frameless
+position "c"
+hor_pos "c"
+has_inner_box 1
+inner_pos "c"
+use_parbox 1
+use_makebox 0
+width "4cm"
+special "none"
+height "2in"
+height_special "totalheight"
+status open
+
+\begin_layout Plain Layout
+\noindent
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+ Save form as
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+To change the border width use the command 
+\series bold
+pdfborder={0 0 w}
+\series default
+ where 
+\series bold
+w
+\series default
+ is the width in pixels.
+ The default value of 
+\series bold
+pdfborder
+\series default
+ is 
+\series bold
+{0 0 1}
+\series default
+.
+\end_layout
+
+\begin_layout Standard
+\begin_inset Note Greyedout
+status open
+
+\begin_layout Plain Layout
+
+\series bold
+Note:
+\series default
+ 
+\series bold
+pdfborder
+\series default
+ affects all link types, not only the menu links.
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout PDF Link Setup
+pdfborder={0 0 4}, menubordercolor={1 1 0}
+\end_layout
+
+\begin_layout Standard
+An example with a 4
+\begin_inset space ~
+\end_inset
+
+pixel thick yellow border:
+\begin_inset Newline newline
+\end_inset
+
+
+\begin_inset Flex PDFAction
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+SaveAs
+\end_layout
+
+\end_inset
+
+
+\begin_inset Box Frameless
+position "c"
+hor_pos "c"
+has_inner_box 1
+inner_pos "c"
+use_parbox 1
+use_makebox 0
+width "4cm"
+special "none"
+height "2in"
+height_special "totalheight"
+status open
+
+\begin_layout Plain Layout
+\noindent
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+ Save form as
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+To change the background color insert the command 
+\series bold
+
+\backslash
+colorbox{color}{
+\series default
+ at the beginning of the button inset and a 
+\series bold
+}
+\series default
+ at the end.
+ 
+\series bold
+color
+\series default
+ is hereby the name of the color as described in sec.
+\begin_inset space \thinspace{}
+\end_inset
+
+5.7 
+\begin_inset Quotes eld
+\end_inset
+
+Colored Boxes
+\begin_inset Quotes erd
+\end_inset
+
+ of LyX's 
+\emph on
+EmbeddedObjects
+\emph default
+ manual.
+\end_layout
+
+\begin_layout PDF Link Setup
+pdfborder={0 0 0}
+\end_layout
+
+\begin_layout Standard
+An example without a border and with lime background color:
+\begin_inset Newline newline
+\end_inset
+
+
+\begin_inset Flex PDFAction
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+SaveAs
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+
+\backslash
+colorbox{lime}{
+\end_layout
+
+\end_inset
+
+
+\begin_inset Box Frameless
+position "c"
+hor_pos "c"
+has_inner_box 1
+inner_pos "c"
+use_parbox 1
+use_makebox 0
+width "4cm"
+special "none"
+height "2in"
+height_special "totalheight"
+status open
+
+\begin_layout Plain Layout
+\noindent
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+
+\backslash
+centering
+\end_layout
+
+\end_inset
+
+ Save form as
+\end_layout
+
+\end_inset
+
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout PDF Link Setup
+pdfborder={0 0 1}, menubordercolor={1 0 0}
+\end_layout
+
+\begin_layout Section
+Dynamic form fields
+\end_layout
+
+\begin_layout Standard
+It is also possible to have dynamic form fields.
+ This means that depending on the actions of the user fields can (dis)appear
+ or change their appearance.
+ To use this feature, add these lines to your document preamble:
+\end_layout
+
+\begin_layout Standard
+
+\series bold
+
+\backslash
+usepackage[pdftex]{insdljs}
+\begin_inset Newline newline
+\end_inset
+
+
+\backslash
+pdfcatalog{/AA 
+\backslash
+the
+\backslash
+pdflastobj
+\backslash
+space 0 R}
+\end_layout
+
+\begin_layout Standard
+Then add the necessary JavaScript code to your document LaTeX preamble or
+ as TeX code to your document.
+ For info about JavaScript, see its documentation, 
+\begin_inset CommandInset citation
+LatexCommand cite
+key "JavaScript"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+
+\backslash
+ifinsdljs
+\end_layout
+
+\end_inset
+
+
+\begin_inset Note Note
+status open
+
+\begin_layout Plain Layout
+The following section will only be displayed when the LaTeX package 
+\series bold
+insdljs
+\series default
+ is installed.
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+For the following choice menu this JavaScript code was used:
+\end_layout
+
+\begin_layout Standard
+\begin_inset listings
+lstparams "language=TeX"
+inline false
+status open
+
+\begin_layout Plain Layout
+
+
+\backslash
+begin{insDLJS}[exaaae]{exaaae}{JavaScript}
+\end_layout
+
+\begin_layout Plain Layout
+
+ function validateTime(){
+\end_layout
+
+\begin_layout Plain Layout
+
+  this.delay = true;
+\end_layout
+
+\begin_layout Plain Layout
+
+  if((event.value == "u") || (event.value == "unlimited")) {
+\end_layout
+
+\begin_layout Plain Layout
+
+   this.getField("from").display = display.hidden;
+\end_layout
+
+\begin_layout Plain Layout
+
+   this.getField("to").display = display.hidden;
+\end_layout
+
+\begin_layout Plain Layout
+
+  } else {
+\end_layout
+
+\begin_layout Plain Layout
+
+   this.getField("from").display = display.visible;
+\end_layout
+
+\begin_layout Plain Layout
+
+   this.getField("to").display = display.visible;
+\end_layout
+
+\begin_layout Plain Layout
+
+   this.getField("from").setFocus();
+\end_layout
+
+\begin_layout Plain Layout
+
+  }
+\end_layout
+
+\begin_layout Plain Layout
+
+  this.delay = false;
+\end_layout
+
+\begin_layout Plain Layout
+
+ }
+\end_layout
+
+\begin_layout Plain Layout
+
+
+\backslash
+end{insDLJS}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Note Greyedout
+status open
+
+\begin_layout Plain Layout
+
+\series bold
+Note:
+\series default
+ 
+\emph on
+All
+\emph default
+ JavaScript funtions must be inserted into the same 
+\family sans
+insDLJS
+\family default
+ environment.
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+The 
+\family sans
+PDF
+\begin_inset space ~
+\end_inset
+
+form
+\begin_inset space ~
+\end_inset
+
+parameters
+\family default
+ of the following choice menu are
+\begin_inset Newline newline
+\end_inset
+
+
+\series bold
+name=contract,radio,default=tl,validate={validateTime();}
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex ChoiceMenu
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+name=contract,radio,default=tl,validate=
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+{
+\end_layout
+
+\end_inset
+
+validateTime();
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+term-limited=tl, unlimited=u
+\begin_inset Argument 2
+status open
+
+\begin_layout Plain Layout
+Job contract:
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\begin_inset VSpace defskip
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Tabular
+<lyxtabular version="3" rows="3" columns="2">
+<features rotate="0" tabularvalignment="middle">
+<column alignment="left" valignment="top">
+<column alignment="center" valignment="top">
+<row>
+<cell alignment="left" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+From:
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Flex TextField
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+name=from,width=10em
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset VSpace -1.5mm
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="left" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+To:
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Flex TextField
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+name=to,width=10em
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset VSpace bigskip
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+To check and assure that the user only enters a number to a text field you
+ can for example use this JavaScript code:
+\end_layout
+
+\begin_layout Standard
+\begin_inset listings
+lstparams "language=TeX"
+inline false
+status open
+
+\begin_layout Plain Layout
+
+function checkNumber() {
+\end_layout
+
+\begin_layout Plain Layout
+
+ event.rc = true;
+\end_layout
+
+\begin_layout Plain Layout
+
+ if (!Number(event.value)) {
+\end_layout
+
+\begin_layout Plain Layout
+
+  app.alert("Value must be a number!");
+\end_layout
+
+\begin_layout Plain Layout
+
+  event.value = "";
+\end_layout
+
+\begin_layout Plain Layout
+
+ } else {
+\end_layout
+
+\begin_layout Plain Layout
+
+  event.target.textColor = color.green;
+\end_layout
+
+\begin_layout Plain Layout
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+An example text field: 
+\begin_inset Flex TextField
+status open
+
+\begin_layout Plain Layout
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+name=onlyNumbers, align=1, validate=
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+{
+\end_layout
+
+\end_inset
+
+checkNumber();
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+}
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+
+\backslash
+else
+\end_layout
+
+\end_inset
+
+
+\begin_inset Note Note
+status open
+
+\begin_layout Plain Layout
+The following will be displayed when the LaTeX package 
+\series bold
+insdljs
+\series default
+ is not installed:
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+You need to install the package 
+\series bold
+insdljs
+\series default
+ to see the content of this section in the output.
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+
+\backslash
+fi
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout End PDF Form
+\begin_inset Note Note
+status open
+
+\begin_layout Plain Layout
+keep this emtpy
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Section
+General notes and hints
+\end_layout
+
+\begin_layout Itemize
+Submitting and applying data requires that all form fields have a name.
+\end_layout
+
+\begin_layout Itemize
+All braces, brackets, backslashes and quote characters in form parameters
+ must be inserted as TeX code!
+\end_layout
+
+\begin_layout Itemize
+It is not possible to create a PDF form using XeTeX.
+ Use either the LyX export formats 
+\family sans
+PDF (pdflatex)
+\family default
+ or 
+\family sans
+PDF (LuaTeX)
+\family default
+.
+\end_layout
+
+\begin_layout Itemize
+To be able to use all kinds of colors and color definitions you must load
+ the LaTeX package 
+\series bold
+xcolor
+\series default
+ in the document preamble this way:
+\begin_inset Newline newline
+\end_inset
+
+
+\series bold
+
+\backslash
+usepackage[svgnames,rgb]{xcolor}
+\end_layout
+
+\begin_layout Itemize
+To see in 
+\emph on
+Adobe Reader
+\emph default
+ and 
+\emph on
+Acrobat
+\emph default
+ custom background colors you must disable in these programs to highlight
+ the available form fields in the PDF.
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset CommandInset bibitem
+LatexCommand bibitem
+key "JavaScript"
+
+\end_inset
+
+
+\begin_inset CommandInset href
+LatexCommand href
+name "JavaScript reference"
+target "https://developer.mozilla.org/en/docs/Web/JavaScript/Reference";
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset CommandInset bibitem
+LatexCommand bibitem
+key "hyperref"
+
+\end_inset
+
+
+\begin_inset CommandInset href
+LatexCommand href
+name "Documentation"
+target "http://mirrors.ctan.org/macros/latex/contrib/hyperref/doc/manual.pdf";
+
+\end_inset
+
+ of the LaTeX package 
+\series bold
+hyperref
+\end_layout
+
+\begin_layout Bibliography
+\begin_inset CommandInset bibitem
+LatexCommand bibitem
+key "pifont"
+
+\end_inset
+
+
+\begin_inset CommandInset href
+LatexCommand href
+name "Documentation"
+target "http://mirrors.ctan.org/macros/latex/required/psnfss/psnfss2e.pdf";
+
+\end_inset
+
+ of the LaTeX package 
+\series bold
+pifont
+\end_layout
+
+\end_body
+\end_document
diff --git a/lib/layouts/pdfform.module b/lib/layouts/pdfform.module
new file mode 100644
index 0000000..21f49cd
--- /dev/null
+++ b/lib/layouts/pdfform.module
@@ -0,0 +1,186 @@
+#\DeclareLyXModule{PDF Form}
+#DescriptionBegin
+#Provides fields and buttons for PDF forms. The module uses
+#the LaTeX package hyperref. Please consult the LyX example file PDF-form.lyx
+#and the documentation of hyperref for details.
+#DescriptionEnd
+# Author: Uwe Stöhr <[email protected]>
+
+Format 49
+
+#
+# the form environment
+#
+
+Style "Begin PDF Form"
+       Margin                          Dynamic
+       LatexType                       Command
+       LatexName                       begin{Form}
+       Category                        "PDF form"
+       KeepEmpty                       1
+       PassThru                        1
+       ParSkip                         0.4
+       Align                           Block
+       LabelSep                        xx
+       LabelType                       Static
+       LabelString                     "Begin PDF Form"
+       Argument 1
+         MenuString            "PDF Form Parameters"
+         LabelString           "Params"
+         Tooltip                       "Insert PDF form parameters here"
+         AutoInsert            1
+       EndArgument
+       LabelFont
+         Series                        Bold
+         Color                         Green
+       EndFont
+       Requires                        hyperref
+End
+
+Style "End PDF Form"
+       CopyStyle                       "Begin PDF Form"
+       LatexName                       end{Form}
+       LabelString                     "End PDF Form"
+       ResetArgs                       1
+End
+
+Style "PDF Link Setup"
+       CopyStyle                       "Begin PDF Form"
+       LatexName                       hypersetup
+       LabelString                     "PDF link setup"
+       KeepEmpty                       0
+End
+
+#
+# form fields
+#
+
+InsetLayout Flex:TextField
+       LyXType                         custom
+       LatexType                       command
+       Decoration                      classic
+       LatexName                       TextField
+       LabelString                     "TextField"
+       Argument 1
+         MenuString            "PDF Form Parameters"
+         LabelString           "Params"
+         Tooltip                       "Insert PDF form parameters here"
+         AutoInsert            1
+       EndArgument
+       LabelFont
+         Color                         magenta
+         Size                          Small
+       EndFont
+       Requires                        hyperref
+End
+
+InsetLayout Flex:CheckBox
+       CopyStyle                       Flex:TextField
+       LatexName                       CheckBox
+       LabelString                     "CheckBox"
+End
+
+InsetLayout Flex:ChoiceMenu
+       CopyStyle                       Flex:TextField
+       LatexName                       ChoiceMenu
+       LabelString                     "ChoiceMenu"
+       Argument 2
+         LabelString           "Label"
+         Mandatory                     1
+         AutoInsert            1
+         ToolTip                       "Insert the label here"
+       EndArgument
+End
+
+InsetLayout Flex:PushButton
+       CopyStyle                       Flex:TextField
+       LatexName                       PushButton
+       LabelString                     "PushButton"
+End
+
+InsetLayout Flex:SubmitButton
+       CopyStyle                       Flex:TextField
+       LatexName                       Submit
+       LabelString                     "SubmitButton"
+End
+
+InsetLayout Flex:ResetButton
+       CopyStyle                       Flex:TextField
+       LatexName                       Reset
+       LabelString                     "ResetButton"
+End
+
+#
+# PDF viewer-specific insets
+#
+
+InsetLayout Flex:PDFAction
+       CopyStyle                       Flex:TextField
+       LatexName                       Acrobatmenu
+       LabelString                     "PDFAction"
+       Argument 1
+         LabelString           "Action"
+         Mandatory                     1
+         AutoInsert            1
+         ToolTip                       "The name of the PDF action"
+       EndArgument
+End
+
+#
+# Form style layouts
+#
+
+Style "Text Field Style"
+       CopyStyle                       "Begin PDF Form"
+       LatexName                       renewcommand*{\DefaultOptionsofText}
+       LabelString                     "Default text field style"
+       PassThru                        1
+End
+
+Style "Submit Button Style"
+       CopyStyle                       "Text Field Style"
+       LatexName                       renewcommand*{\DefaultOptionsofSubmit}
+       LabelString                     "Default submit button style"
+End
+
+Style "Push Button Style"
+       CopyStyle                       "Text Field Style"
+       LatexName                       
renewcommand*{\DefaultOptionsofPushButton}
+       LabelString                     "Default push button style"
+End
+
+Style "Check Box Style"
+       CopyStyle                       "Text Field Style"
+       LatexName                       renewcommand*{\DefaultOptionsofCheckBox}
+       LabelString                     "Default check box style"
+End
+
+Style "Reset Button Style"
+       CopyStyle                       "Text Field Style"
+       LatexName                       renewcommand*{\DefaultOptionsofReset}
+       LabelString                     "Default reset button style"
+End
+
+Style "List Box Style"
+       CopyStyle                       "Text Field Style"
+       LatexName                       renewcommand*{\DefaultOptionsofListBox}
+       LabelString                     "Default list box style"
+End
+
+Style "Combo Box Style"
+       CopyStyle                       "Text Field Style"
+       LatexName                       renewcommand*{\DefaultOptionsofComboBox}
+       LabelString                     "Default combo box style"
+End
+
+Style "Popdown Box Style"
+       CopyStyle                       "Text Field Style"
+       LatexName                       
renewcommand*{\DefaultOptionsofPopdownBox}
+       LabelString                     "Default popdown box style"
+End
+
+Style "Radio Box Style"
+       CopyStyle                       "Text Field Style"
+       LatexName                       renewcommand*{\DefaultOptionsofRadio}
+       LabelString                     "Default radio box style"
+End
diff --git a/status.21x b/status.21x
index 317c51d..b6fa46f 100644
--- a/status.21x
+++ b/status.21x
@@ -28,6 +28,8 @@ What's new
 
 * DOCUMENT INPUT/OUTPUT
 
+- New support for PDF forms.
+
 - Add low-resolution PDF export format (needs an installed ghostscript).
 
 - Add possibility via the layout file to prevent LyX from loading inputenc.
@@ -64,6 +66,8 @@ What's new
 
 * DOCUMENTATION AND LOCALIZATION
 
+- New example file "PDF-form.lyx" describing the new support for PDF forms.
+
 - New Brazilian Portuguese translation of the LyX user interface localization.
 
 - New French and German translation of the MultilingualCaptions example file.

Reply via email to