hello,

i tried to incorporate the comments, now sending the resulting patch
and propose to merge it into trunk.
it works for my test cases, however i expect some problems appear when
people start using it with their favourite option combinations.

to make this patch complete, .lyx format number should be increased and 
correct binding added for lyx2lyx.

the left TODOs are in wiki. 
i will particularly try to look on the encoding promblems again.

pavel
diff --git a/development/qmake/src/src.pro b/development/qmake/src/src.pro
index 2c44a0a..2a5c65c 100644
--- a/development/qmake/src/src.pro
+++ b/development/qmake/src/src.pro
@@ -69,6 +69,7 @@ HPP += Messages.h
 HPP += MetricsInfo.h
 HPP += Mover.h
 HPP += OutputParams.h
+HPP += PDFOptions.h
 HPP += PSpell.h
 HPP += ParIterator.h
 HPP += Paragraph.h
@@ -178,6 +179,7 @@ CPP += Messages.cpp
 CPP += MetricsInfo.cpp
 CPP += Mover.cpp
 CPP += OutputParams.cpp
+CPP += PDFOptions.cpp
 #CPP += PSpell.cpp
 CPP += ParIterator.cpp
 CPP += Paragraph.cpp
diff --git a/development/scons/scons_manifest.py 
b/development/scons/scons_manifest.py
index f77a88d..de43630 100644
--- a/development/scons/scons_manifest.py
+++ b/development/scons/scons_manifest.py
@@ -92,6 +92,7 @@ src_header_files = Split('''
     ModuleList.h
     Mover.h
     OutputParams.h
+    PDFOptions.h
     PSpell.h
     ParIterator.h
     Paragraph.h
@@ -201,6 +202,7 @@ src_pre_files = Split('''
     MetricsInfo.cpp
     Mover.cpp
     OutputParams.cpp
+    PDFOptions.cpp
     ParIterator.cpp
     Paragraph.cpp
     ParagraphMetrics.cpp
diff --git a/lib/CREDITS b/lib/CREDITS
index 33544f6..9c6df57 100644
--- a/lib/CREDITS
+++ b/lib/CREDITS
@@ -240,7 +240,7 @@
    Support for kluwer and ijmpd document classes
 @bSanda Pavel
 @iE-mail: [EMAIL PROTECTED] !cz
-   Czech translation
+   Czech translation, pdf support
 @bBo Peng
 @iE-mail: [EMAIL PROTECTED]
    Conversion of all shell scripts to Python, session, view-source, auto-view 
features and scons build system.
diff --git a/lib/lyx2lyx/lyx_1_6.py b/lib/lyx2lyx/lyx_1_6.py
index 30c3421..07ad8ab 100644
--- a/lib/lyx2lyx/lyx_1_6.py
+++ b/lib/lyx2lyx/lyx_1_6.py
@@ -178,6 +178,24 @@ def remove_manifest(document):
     "Remove the manifest section"
     document.manifest = None
 
+##
+#  Discard PDF options for hyperref
+#
+
+def revert_pdf_options(document):
+    "Revert PDF options for hyperref. "
+    i = 0
+    while 1:
+        i = find_tokens(document.header, [ "\\use_hyperref", "\\pdf_title", 
"\\pdf_author", "\\pdf_subject",
+                                           "\\pdf_keywords", 
"\\pdf_bookmarks", "\\pdf_bookmarksnumbered",
+                                           "\\pdf_bookmarksopen", 
"\\pdf_bookmarksopenlevel", "\\pdf_breaklinks",
+                                           "\\pdf_border", "\\pdf_colorlinks", 
"\\pdf_backref", "\\pdf_pagebackref",
+                                          "\\pdf_fullscreen", 
"\\pdf_quoted_options", "\\pdf_store_options" ], i)
+        if i == -1:
+            return
+        document.body[i] = ""
+        i = i + 1
+
 
 ##
 # Conversion hub
diff --git a/src/Buffer.cpp b/src/Buffer.cpp
index 19d479c..75799f7 100644
--- a/src/Buffer.cpp
+++ b/src/Buffer.cpp
@@ -55,6 +55,7 @@
 #include "Undo.h"
 #include "version.h"
 #include "EmbeddedFiles.h"
+#include "PDFOptions.h"
 
 #include "insets/InsetBibitem.h"
 #include "insets/InsetBibtex.h"
@@ -459,6 +460,7 @@ int Buffer::readHeader(Lexer & lex)
        params().footskip.erase();
        params().listings_params.clear();
        params().clearLayoutModules();
+       params().pdfoptions().clear();
        
        for (int i = 0; i < 4; ++i) {
                params().user_defined_bullet(i) = ITEMIZE_DEFAULTS[i];
diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp
index 65195e5..17e82d0 100644
--- a/src/BufferParams.cpp
+++ b/src/BufferParams.cpp
@@ -37,6 +37,7 @@
 #include "Spacing.h"
 #include "TexRow.h"
 #include "VSpace.h"
+#include "PDFOptions.h"
 
 #include "frontends/alert.h"
 #include "insets/InsetListingsParams.h"
@@ -290,6 +291,7 @@ public:
         * and for detached paragraphs in "indented" documents.
         */
        VSpace defskip;
+       PDFOptions pdfoptions;
 };
 
 
@@ -435,6 +437,16 @@ Spacing const & BufferParams::spacing() const
        return pimpl_->spacing;
 }
 
+PDFOptions & BufferParams::pdfoptions()
+{
+       return pimpl_->pdfoptions;
+}
+
+
+PDFOptions const & BufferParams::pdfoptions() const
+{
+       return pimpl_->pdfoptions;
+}
 
 VSpace const & BufferParams::getDefSkip() const
 {
@@ -633,6 +645,40 @@ string const BufferParams::readToken(Lexer & lex, string 
const & token)
                spacing().set(spacetranslator().find(nspacing), tmp_val);
        } else if (token == "\\float_placement") {
                lex >> float_placement;
+       } else if (token == "\\use_hyperref") {
+               lex >> pdfoptions().use_hyperref;
+       } else if (token == "\\pdf_title") {
+               lex >> pdfoptions().title;
+       } else if (token == "\\pdf_author") {
+               lex >> pdfoptions().author;
+       } else if (token == "\\pdf_subject") {
+               lex >> pdfoptions().subject;
+       } else if (token == "\\pdf_keywords") {
+               lex >> pdfoptions().keywords;
+       } else if (token == "\\pdf_bookmarks") {
+               lex >> pdfoptions().bookmarks;
+       } else if (token == "\\pdf_bookmarksnumbered") {
+               lex >> pdfoptions().bookmarksnumbered;
+       } else if (token == "\\pdf_bookmarksopen") {
+               lex >> pdfoptions().bookmarksopenlevel;
+       } else if (token == "\\pdf_bookmarksopenlevel") {
+               lex >> pdfoptions().bookmarksopenlevel;
+       } else if (token == "\\pdf_breaklinks") {
+               lex >> pdfoptions().breaklinks;
+       } else if (token == "\\pdf_pdfborder") {
+               lex >> pdfoptions().pdfborder;
+       } else if (token == "\\pdf_colorlinks") {
+               lex >> pdfoptions().colorlinks;
+       } else if (token == "\\pdf_backref") {
+               lex >> pdfoptions().backref;
+       } else if (token == "\\pdf_pagebackref") {
+               lex >> pdfoptions().pagebackref;
+       } else if (token == "\\pdf_pagemode") {
+               lex >> pdfoptions().pagemode;
+       } else if (token == "\\pdf_quoted_options") {
+               lex >> pdfoptions().quoted_options;
+       } else if (token == "\\pdf_store_options") {
+               lex >> pdfoptions().store_options;
        } else {
                lyxerr << "BufferParams::readToken(): Unknown token: " << 
                        token << endl;
@@ -694,6 +740,7 @@ void BufferParams::writeFile(ostream & os) const
        os << "\\paperfontsize " << fontsize << '\n';
 
        spacing().writeFile(os);
+       pdfoptions().writeFile(os);
 
        os << "\\papersize " << string_papersize[papersize]
           << "\n\\use_geometry " << convert<string>(use_geometry)
@@ -1176,6 +1223,12 @@ bool BufferParams::writeLaTeX(odocstream & os, 
LaTeXFeatures & features,
        }
 
        os << lyxpreamble;
+
+       // PDF support. Hypreref manual: "Make sure it comes last of your loaded
+       // packages, to give it a fighting chance of not being over-written,
+       // since its job is to redefine many LATEX commands."
+       pdfoptions().writeLatex(os);
+
        return use_babel;
 }
 
diff --git a/src/BufferParams.h b/src/BufferParams.h
index 4ded0b7..bbcfba7 100644
--- a/src/BufferParams.h
+++ b/src/BufferParams.h
@@ -40,6 +40,7 @@ class Spacing;
 class TexRow;
 class VSpace;
 class Language;
+class PDFOptions;
 
 /** Buffer parameters.
  *  This class contains all the parameters for this buffer's use. Some
@@ -290,6 +291,10 @@ public:
        ///
        void setCiteEngine(biblio::CiteEngine const);
 
+       /// options for pdf output
+       PDFOptions & pdfoptions();
+       PDFOptions const & pdfoptions() const;
+
 private:
        ///
        void readPreamble(Lexer &);
diff --git a/src/Makefile.am b/src/Makefile.am
index bf1af93..0f30115 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -233,6 +233,8 @@ liblyxcore_la_SOURCES = \
        ParagraphParameters.h \
        ParIterator.cpp \
        ParIterator.h \
+       PDFOptions.cpp \
+       PDFOptions.h \
        Row.cpp \
        Row.h \
        rowpainter.cpp \
diff --git a/src/PDFOptions.cpp b/src/PDFOptions.cpp
new file mode 100644
index 0000000..3bfde67
--- /dev/null
+++ b/src/PDFOptions.cpp
@@ -0,0 +1,156 @@
+/**
+ * \file PDFoptions.cpp
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Pavel Sanda
+ *
+ * Full author contact details are available in file CREDITS.
+ */
+
+
+#include "PDFOptions.h"
+
+#include "support/convert.h"
+
+#include <sstream>
+#include <string>
+#include "support/lstrings.h"
+
+
+namespace lyx {
+
+
+using std::ostream;
+using std::ostringstream;
+using std::string;
+
+const string PDFOptions::pagemode_fullscreen("FullScreen");
+
+bool PDFOptions::empty() const
+{
+       return
+               author.empty()  &&
+               title.empty()   &&
+               subject.empty() &&
+               keywords.empty()&&
+               pagemode.empty()&&
+               bookmarksopenlevel.empty() &&
+               quoted_options.empty();
+}
+
+void PDFOptions::writeFile(ostream & os) const
+{
+       os << "\\use_hyperref " << convert<string>(use_hyperref) << '\n';
+       os << "\\pdf_store_options " << convert<string>(store_options) << '\n';
+       if (!use_hyperref && !store_options) return;
+
+       if (!title.empty() )
+               os << "\\pdf_title \""  << title << "\"\n";
+       if (!author.empty())
+               os << "\\pdf_author \"" << author << "\"\n";
+       if (!subject.empty())
+               os << "\\pdf_subject \""<< subject << "\"\n";
+       if (!keywords.empty())
+               os << "\\pdf_keywords \""<< keywords << "\"\n";
+
+
+       os << "\\pdf_bookmarks "        << convert<string>(bookmarks) << '\n';
+       os << "\\pdf_bookmarksnumbered "        << 
convert<string>(bookmarksnumbered) << '\n';
+       os << "\\pdf_bookmarksopen "    << convert<string>(bookmarksopen) << 
'\n';
+       if (bookmarksopenlevel.empty())
+               os << "\\pdf_bookmarksopenlevel \"" << bookmarksopenlevel << 
"\"\n";
+
+       os << "\\pdf_breaklinks "       << convert<string>(breaklinks)  << '\n';
+       os << "\\pdf_pdfborder "        << convert<string>(pdfborder)   << '\n';
+       os << "\\pdf_colorlinks "       << convert<string>(colorlinks)  << '\n';
+       os << "\\pdf_backref "          << convert<string>(backref)     << '\n';
+       os << "\\pdf_pagebackref "      << convert<string>(pagebackref) << '\n';
+
+       if (!pagemode.empty())
+               os << "\\pdf_pagemode " << pagemode << '\n';
+
+       if (!quoted_options.empty())
+               os << "\\pdf_quoted_options \"" << quoted_options << "\"\n";
+
+}
+
+void PDFOptions::writeLatex(odocstream &os) const
+{
+       if (!use_hyperref) return ;
+
+       string opt;
+
+       opt = "\\usepackage[\n";
+       if (!title.empty())
+               opt += "pdftitle={"   + title + "},\n";
+       if (!author.empty())
+               opt += "pdfauthor={"  + author + "},\n";
+       if (!subject.empty())
+               opt += "pdfsubject={" + subject + "},\n";
+       if (!keywords.empty())
+               opt += "pdfkeywords={" + keywords + "},\n";
+
+       opt += "bookmarks=" + convert<string>(bookmarks) + ',';
+       if (bookmarks) {
+               opt += "bookmarksnumbered=" +
+                       convert<string>(bookmarksnumbered) + ',';
+               opt += "bookmarksopen=" +
+                       convert<string>(bookmarksopen) + ',';
+
+               if (bookmarksopen && !bookmarksopenlevel.empty())
+                       opt += "bookmarksopennumbered=" +
+                               bookmarksopenlevel + ',';
+       }
+
+       opt += "breaklinks="     + convert<string>(breaklinks) + ',';
+
+       opt += "pdfborder={0 0 " ;
+       opt += (pdfborder ?'1':'0');
+       opt += "},\n";
+
+       opt += "colorlinks="     + convert<string>(colorlinks) + ',';
+       opt += "backref="        + convert<string>(backref) + ',';
+       opt += "pagebackref="    + convert<string>(pagebackref) + ',';
+
+       if (!pagemode.empty())
+               opt += "pdfpagemode=" + pagemode + ',';
+       opt += quoted_options_get();
+
+       opt = support::rtrim(opt,",");
+       opt += "]{hyperref}";
+
+       // FIXME UNICODE
+       os << from_utf8(opt);
+}
+
+//prepared for check
+string PDFOptions::quoted_options_get() const
+{
+       return quoted_options;
+}
+
+// Keep implicit hyperref settings
+void PDFOptions::clear()
+{
+       use_hyperref            = false;
+       title.clear();
+       author.clear();
+       subject.clear();
+       keywords.clear();
+       bookmarks               = true;
+       bookmarksnumbered       = false;
+       bookmarksopen           = false;
+       bookmarksopenlevel.clear();
+       breaklinks              = false;
+       pdfborder               = false;
+       colorlinks              = false;
+       backref                 = false;
+       pagebackref             = false;
+       pagemode.clear();
+       quoted_options.clear();
+       store_options           = false;
+
+}
+
+} // namespace lyx
diff --git a/src/PDFOptions.h b/src/PDFOptions.h
new file mode 100644
index 0000000..caa1504
--- /dev/null
+++ b/src/PDFOptions.h
@@ -0,0 +1,132 @@
+// -*- C++ -*-
+/**
+ * \file src/PDFOptions.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Pavel Sanda
+ *
+ * Full author contact details are available in file CREDITS.
+ */
+
+#ifndef PDFOPTIONS_H
+#define PDFOPTIONS_H
+
+
+#include <string>
+#include <debug.h>
+#include "support/docstream.h"
+
+using std::string;
+
+namespace lyx {
+
+/// Options for PDF generation
+class PDFOptions {
+public:
+       PDFOptions() { clear(); }
+       ///
+       bool use_hyperref;
+       ///
+       string title;
+       ///
+       string author;
+       ///
+       string subject;
+       ///
+       string keywords;
+       /*!
+        * A set of Acrobat bookmarks are written, in a manner similar to the 
table of contents.
+        * bookmarks            boolean true
+        */
+       bool bookmarks;
+       /*!
+        * If Acrobat bookmarks are requested, include section numbers.
+        * bookmarksnumbered    boolean false
+        */
+       bool bookmarksnumbered;
+       /*!
+        * If Acrobat bookmarks are requested, show them with all the subtrees 
expanded.
+        * bookmarksopen        boolean false
+        */
+       bool bookmarksopen;
+       /*!
+        * Level (\maxdimen) to which bookmarks are open
+        * bookmarksopenlevel    parameter
+        */
+       string bookmarksopenlevel;
+       /*!
+        * Allows link text to break across lines.
+        * breaklinks           boolean false
+        */
+       bool breaklinks;
+       /*!
+        * The style of box around links; defaults to a box with lines of 1pt 
thickness,
+        * but the colorlinks option resets it to produce no border.
+        * pdfborder                    "0 0 1" / "0 0 0"
+        * Note that the color of link borders can be specified only as 3 
numbers in the
+        * range 0..1, giving an RGB color. You cannot use colors defined in 
TEX.
+        *
+        * We represent here only the last bit, there is no semantics in the 
first two.
+        * Morover the aim is not to represent the whole pdfborder, but just to 
deny
+        * the ugly boxes around pdf links.
+        */
+       bool pdfborder;
+       /*!
+        * colorlinks           boolean false
+        */
+       bool colorlinks;
+       /*!
+        * Adds backlink text to the end of each item in the bibliography, as a 
list of section numbers.
+        * This can only work properly if there is a blank line after each 
\bibitem.
+        * backref              boolean false
+        */
+       bool backref;
+       /*!
+        * Adds backlink text to the end of each item in the bibliography, as a 
list of page numbers.
+        * pagebackref          boolean false
+        */
+       bool pagebackref;
+       /*!
+        * Determines how the file is opening in Acrobat;
+        * the possibilities are None, UseThumbs (show thumbnails), UseOutlines 
(show bookmarks), and FullScreen.
+        * If no mode if explicitly chosen, but the bookmarks option is set, 
UseOutlines is used.
+        * pagemode             text    empty
+        *
+        * We currently implement only FullScreen, but all modes can be saved 
here,
+        * lyx format & latex writer is prepared.
+        * The only thing needed in such a case is wider Settings dialog -> 
PDFOptions.pagemode .
+        */
+       string pagemode;
+       ///latex string
+       static const string pagemode_fullscreen;
+       /*!
+        * Additional parameters for hyperref given from user.
+        */
+       string quoted_options;
+       /*!
+        * Possible syntax check of users additional parameters here.
+        */
+       string quoted_options_get() const;
+
+
+       /*!
+        * Flag indicating whether user made some input into PDF preferences.
+        * We want to save options, when user decide to switch off PDF support 
for a while.
+        */
+       bool store_options;
+       /// check for string settings
+       bool empty() const;
+       /// output to lyx header
+       void writeFile(std::ostream &) const;
+       /// output to tex header
+       void writeLatex(odocstream &) const;
+       /// keep implicit hyperref settings
+       void clear();
+
+};
+
+} // namespace lyx
+
+
+#endif // SPACING_H
diff --git a/src/frontends/qt4/GuiDocument.cpp 
b/src/frontends/qt4/GuiDocument.cpp
index 2fb693e..24a3bec 100644
--- a/src/frontends/qt4/GuiDocument.cpp
+++ b/src/frontends/qt4/GuiDocument.cpp
@@ -31,6 +31,7 @@
 #include "LyXRC.h" // defaultUnit
 #include "TextClassList.h"
 #include "Spacing.h"
+#include "PDFOptions.h"
 
 #include "insets/InsetListingsParams.h"
 
@@ -597,6 +598,41 @@ GuiDocumentDialog::GuiDocumentDialog(LyXView & lv)
        connect(bulletsModule, SIGNAL(changed()),
                this, SLOT(change_adaptor()));
 
+       // PDF support
+       pdfSupportModule = new UiWidget<Ui::PDFSupportUi>;
+
+       connect(pdfSupportModule->use_hyperrefCB, SIGNAL(toggled(bool)),
+               this, SLOT(change_adaptor()));
+       connect(pdfSupportModule->titleLE, SIGNAL(textChanged(const QString &)),
+               this, SLOT(change_adaptor()));
+       connect(pdfSupportModule->authorLE, SIGNAL(textChanged(const QString 
&)),
+               this, SLOT(change_adaptor()));
+       connect(pdfSupportModule->subjectLE, SIGNAL(textChanged(const QString 
&)),
+               this, SLOT(change_adaptor()));
+       connect(pdfSupportModule->keywordsLE, SIGNAL(textChanged(const QString 
&)),
+               this, SLOT(change_adaptor()));
+       connect(pdfSupportModule->bookmarksGB, SIGNAL(toggled(bool)),
+               this, SLOT(change_adaptor()));
+       connect(pdfSupportModule->bookmarksnumberedCB, SIGNAL(toggled(bool)),
+               this, SLOT(change_adaptor()));
+       connect(pdfSupportModule->bookmarksopenGB, SIGNAL(toggled(bool)),
+               this, SLOT(change_adaptor()));
+       connect(pdfSupportModule->bookmarksopenlevelLE, 
SIGNAL(textChanged(const QString &)),
+               this, SLOT(change_adaptor()));
+       connect(pdfSupportModule->breaklinksCB, SIGNAL(toggled(bool)),
+               this, SLOT(change_adaptor()));
+       connect(pdfSupportModule->pdfborderCB, SIGNAL(toggled(bool)),
+               this, SLOT(change_adaptor()));
+       connect(pdfSupportModule->colorlinksCB, SIGNAL(toggled(bool)),
+               this, SLOT(change_adaptor()));
+       connect(pdfSupportModule->backrefCB, SIGNAL(toggled(bool)),
+               this, SLOT(change_adaptor()));
+       connect(pdfSupportModule->pagebackrefCB, SIGNAL(toggled(bool)),
+               this, SLOT(change_adaptor()));
+       connect(pdfSupportModule->fullscreenCB, SIGNAL(toggled(bool)),
+               this, SLOT(change_adaptor()));
+       connect(pdfSupportModule->optionsLE, SIGNAL(textChanged(const QString 
&)),
+               this, SLOT(change_adaptor()));
 
        // float
        floatModule = new FloatPlacement;
@@ -611,6 +647,7 @@ GuiDocumentDialog::GuiDocumentDialog(LyXView & lv)
        docPS->addPanel(langModule, _("Language"));
        docPS->addPanel(numberingModule, _("Numbering & TOC"));
        docPS->addPanel(biblioModule, _("Bibliography"));
+       docPS->addPanel(pdfSupportModule, _("PDF Properties"));
        docPS->addPanel(mathsModule, _("Math Options"));
        docPS->addPanel(floatModule, _("Float Placement"));
        docPS->addPanel(bulletsModule, _("Bullets"));
@@ -1136,6 +1173,34 @@ void GuiDocumentDialog::apply(BufferParams & params)
        params.footskip = widgetsToLength(m->footskipLE, m->footskipUnit);
 
        branchesModule->apply(params);
+
+       // PDF support
+       params.pdfoptions().use_hyperref = 
pdfSupportModule->use_hyperrefCB->isChecked();
+       params.pdfoptions().title =
+               fromqstr(pdfSupportModule->titleLE->text());
+       params.pdfoptions().author =
+               fromqstr(pdfSupportModule->authorLE->text());
+       params.pdfoptions().subject =
+               fromqstr(pdfSupportModule->subjectLE->text());
+       params.pdfoptions().keywords =
+               fromqstr(pdfSupportModule->keywordsLE->text());
+
+       params.pdfoptions().bookmarks = 
pdfSupportModule->bookmarksGB->isChecked();
+       params.pdfoptions().bookmarksnumbered = 
pdfSupportModule->bookmarksnumberedCB->isChecked();
+       params.pdfoptions().bookmarksopen = 
pdfSupportModule->bookmarksopenGB->isChecked();
+       params.pdfoptions().bookmarksopenlevel =
+               fromqstr(pdfSupportModule->bookmarksopenlevelLE->text());
+
+       params.pdfoptions().breaklinks  = 
pdfSupportModule->breaklinksCB->isChecked();
+       params.pdfoptions().pdfborder   = 
pdfSupportModule->pdfborderCB->isChecked();
+       params.pdfoptions().colorlinks  = 
pdfSupportModule->colorlinksCB->isChecked();
+       params.pdfoptions().backref     = 
pdfSupportModule->backrefCB->isChecked();
+       params.pdfoptions().pagebackref = 
pdfSupportModule->pagebackrefCB->isChecked();
+       if (pdfSupportModule->fullscreenCB->isChecked())
+               params.pdfoptions().pagemode = PDFOptions::pagemode_fullscreen;
+       params.pdfoptions().quoted_options =
+               fromqstr(pdfSupportModule->optionsLE->text());
+       if (params.pdfoptions().use_hyperref || !params.pdfoptions().empty()) 
params.pdfoptions().store_options=true;
 }
 
 
@@ -1411,6 +1476,37 @@ void GuiDocumentDialog::updateParams(BufferParams const 
& params)
                params.footskip, defaultUnit);
 
        branchesModule->update(params);
+
+       // PDF support
+       
pdfSupportModule->use_hyperrefCB->setChecked(params.pdfoptions().use_hyperref);
+       pdfSupportModule->titleLE->setText(
+               toqstr(params.pdfoptions().title));
+
+       pdfSupportModule->authorLE->setText(
+               toqstr(params.pdfoptions().author));
+
+       pdfSupportModule->subjectLE->setText(
+               toqstr(params.pdfoptions().subject));
+
+       pdfSupportModule->keywordsLE->setText(
+               toqstr(params.pdfoptions().keywords));
+
+       
pdfSupportModule->bookmarksGB->setChecked(params.pdfoptions().bookmarks);
+       
pdfSupportModule->bookmarksnumberedCB->setChecked(params.pdfoptions().bookmarksnumbered);
+       
pdfSupportModule->bookmarksopenGB->setChecked(params.pdfoptions().bookmarksopen);
+
+       pdfSupportModule->bookmarksopenlevelLE->setText(
+               toqstr(params.pdfoptions().bookmarksopenlevel));
+
+       
pdfSupportModule->breaklinksCB->setChecked(params.pdfoptions().breaklinks);
+       
pdfSupportModule->pdfborderCB->setChecked(params.pdfoptions().pdfborder);
+       
pdfSupportModule->colorlinksCB->setChecked(params.pdfoptions().colorlinks);
+       pdfSupportModule->backrefCB->setChecked(params.pdfoptions().backref);
+       
pdfSupportModule->pagebackrefCB->setChecked(params.pdfoptions().pagebackref);
+       
pdfSupportModule->fullscreenCB->setChecked(params.pdfoptions().pagemode==PDFOptions::pagemode_fullscreen);
+
+       pdfSupportModule->optionsLE->setText(
+               toqstr(params.pdfoptions().quoted_options));
 }
 
 
diff --git a/src/frontends/qt4/GuiDocument.h b/src/frontends/qt4/GuiDocument.h
index f94ad62..a984b1c 100644
--- a/src/frontends/qt4/GuiDocument.h
+++ b/src/frontends/qt4/GuiDocument.h
@@ -27,6 +27,7 @@
 #include "ui_NumberingUi.h"
 #include "ui_MarginsUi.h"
 #include "ui_PreambleUi.h"
+#include "ui_PDFSupportUi.h"
 
 #include <QDialog>
 
@@ -103,6 +104,7 @@ private:
        UiWidget<Ui::BiblioUi> *biblioModule;
        UiWidget<Ui::MathsUi> *mathsModule;
        UiWidget<Ui::LaTeXUi> *latexModule;
+       UiWidget<Ui::PDFSupportUi> *pdfSupportModule;
        PreambleModule *preambleModule;
 
        GuiBranches *branchesModule;
diff --git a/src/frontends/qt4/Makefile.am b/src/frontends/qt4/Makefile.am
index 6cf26d3..077cee3 100644
--- a/src/frontends/qt4/Makefile.am
+++ b/src/frontends/qt4/Makefile.am
@@ -237,6 +237,7 @@ UIFILES = \
        NumberingUi.ui \
        PageLayoutUi.ui \
        ParagraphUi.ui \
+       PDFSupportUi.ui \
        PreambleUi.ui \
        PrefColorsUi.ui \
        PrefConvertersUi.ui \
diff --git a/src/frontends/qt4/ui/PDFSupportUi.ui 
b/src/frontends/qt4/ui/PDFSupportUi.ui
new file mode 100644
index 0000000..95be47b
--- /dev/null
+++ b/src/frontends/qt4/ui/PDFSupportUi.ui
@@ -0,0 +1,407 @@
+<ui version="4.0" >
+ <class>PDFSupportUi</class>
+ <widget class="QWidget" name="PDFSupportUi" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>502</width>
+    <height>417</height>
+   </rect>
+  </property>
+  <widget class="QCheckBox" name="use_hyperrefCB" >
+   <property name="geometry" >
+    <rect>
+     <x>10</x>
+     <y>0</y>
+     <width>141</width>
+     <height>21</height>
+    </rect>
+   </property>
+   <property name="toolTip" >
+    <string>Enable clickable crossreferences and header informations</string>
+   </property>
+   <property name="text" >
+    <string>&amp;Use hyperref support</string>
+   </property>
+  </widget>
+  <widget class="QCheckBox" name="fullscreenCB" >
+   <property name="geometry" >
+    <rect>
+     <x>14</x>
+     <y>310</y>
+     <width>161</width>
+     <height>21</height>
+    </rect>
+   </property>
+   <property name="toolTip" >
+    <string>Enable fullscreen PDF presentation</string>
+   </property>
+   <property name="text" >
+    <string>Load in &amp;fullscreen mode</string>
+   </property>
+  </widget>
+  <widget class="QGroupBox" name="bookmarksGB" >
+   <property name="geometry" >
+    <rect>
+     <x>11</x>
+     <y>191</y>
+     <width>201</width>
+     <height>107</height>
+    </rect>
+   </property>
+   <property name="title" >
+    <string>Generate Bookmarks</string>
+   </property>
+   <property name="checkable" >
+    <bool>true</bool>
+   </property>
+   <property name="checked" >
+    <bool>true</bool>
+   </property>
+   <widget class="QCheckBox" name="bookmarksnumberedCB" >
+    <property name="geometry" >
+     <rect>
+      <x>10</x>
+      <y>19</y>
+      <width>151</width>
+      <height>21</height>
+     </rect>
+    </property>
+    <property name="text" >
+     <string>Numbered bookmarks</string>
+    </property>
+   </widget>
+   <widget class="QGroupBox" name="bookmarksopenGB" >
+    <property name="geometry" >
+     <rect>
+      <x>11</x>
+      <y>46</y>
+      <width>181</width>
+      <height>51</height>
+     </rect>
+    </property>
+    <property name="title" >
+     <string>Open bookmarks</string>
+    </property>
+    <property name="checkable" >
+     <bool>true</bool>
+    </property>
+    <property name="checked" >
+     <bool>false</bool>
+    </property>
+    <widget class="QLineEdit" name="bookmarksopenlevelLE" >
+     <property name="geometry" >
+      <rect>
+       <x>60</x>
+       <y>19</y>
+       <width>101</width>
+       <height>22</height>
+      </rect>
+     </property>
+     <property name="toolTip" >
+      <string>Number of levels</string>
+     </property>
+    </widget>
+    <widget class="QLabel" name="label" >
+     <property name="geometry" >
+      <rect>
+       <x>21</x>
+       <y>22</y>
+       <width>31</width>
+       <height>16</height>
+      </rect>
+     </property>
+     <property name="text" >
+      <string>&amp;Level:</string>
+     </property>
+     <property name="buddy" >
+      <cstring>bookmarksopenlevelLE</cstring>
+     </property>
+    </widget>
+   </widget>
+  </widget>
+  <widget class="QGroupBox" name="groupBox_2" >
+   <property name="geometry" >
+    <rect>
+     <x>11</x>
+     <y>34</y>
+     <width>431</width>
+     <height>141</height>
+    </rect>
+   </property>
+   <property name="title" >
+    <string>Header Information</string>
+   </property>
+   <widget class="QLineEdit" name="titleLE" >
+    <property name="geometry" >
+     <rect>
+      <x>70</x>
+      <y>19</y>
+      <width>351</width>
+      <height>22</height>
+     </rect>
+    </property>
+   </widget>
+   <widget class="QLineEdit" name="authorLE" >
+    <property name="geometry" >
+     <rect>
+      <x>70</x>
+      <y>49</y>
+      <width>351</width>
+      <height>22</height>
+     </rect>
+    </property>
+   </widget>
+   <widget class="QLineEdit" name="subjectLE" >
+    <property name="geometry" >
+     <rect>
+      <x>70</x>
+      <y>79</y>
+      <width>351</width>
+      <height>22</height>
+     </rect>
+    </property>
+   </widget>
+   <widget class="QLabel" name="keywordsL" >
+    <property name="geometry" >
+     <rect>
+      <x>8</x>
+      <y>113</y>
+      <width>71</width>
+      <height>16</height>
+     </rect>
+    </property>
+    <property name="text" >
+     <string>&amp;Keywords:</string>
+    </property>
+    <property name="buddy" >
+     <cstring>keywordsLE</cstring>
+    </property>
+   </widget>
+   <widget class="QLabel" name="subjectL" >
+    <property name="geometry" >
+     <rect>
+      <x>8</x>
+      <y>83</y>
+      <width>52</width>
+      <height>16</height>
+     </rect>
+    </property>
+    <property name="text" >
+     <string>&amp;Subject:</string>
+    </property>
+    <property name="buddy" >
+     <cstring>subjectLE</cstring>
+    </property>
+   </widget>
+   <widget class="QLabel" name="authorL" >
+    <property name="geometry" >
+     <rect>
+      <x>8</x>
+      <y>53</y>
+      <width>52</width>
+      <height>16</height>
+     </rect>
+    </property>
+    <property name="text" >
+     <string>&amp;Author:</string>
+    </property>
+    <property name="buddy" >
+     <cstring>authorLE</cstring>
+    </property>
+   </widget>
+   <widget class="QLabel" name="titleL" >
+    <property name="geometry" >
+     <rect>
+      <x>8</x>
+      <y>23</y>
+      <width>52</width>
+      <height>16</height>
+     </rect>
+    </property>
+    <property name="text" >
+     <string>&amp;Title:</string>
+    </property>
+    <property name="buddy" >
+     <cstring>titleLE</cstring>
+    </property>
+   </widget>
+  </widget>
+  <widget class="QGroupBox" name="groupBox_3" >
+   <property name="geometry" >
+    <rect>
+     <x>10</x>
+     <y>360</y>
+     <width>431</width>
+     <height>51</height>
+    </rect>
+   </property>
+   <property name="title" >
+    <string>Additional o&amp;ptions for hyperref</string>
+   </property>
+   <property name="flat" >
+    <bool>true</bool>
+   </property>
+   <property name="checkable" >
+    <bool>false</bool>
+   </property>
+   <property name="checked" >
+    <bool>false</bool>
+   </property>
+   <widget class="QLineEdit" name="optionsLE" >
+    <property name="geometry" >
+     <rect>
+      <x>10</x>
+      <y>20</y>
+      <width>421</width>
+      <height>22</height>
+     </rect>
+    </property>
+    <property name="toolTip" >
+     <string>eg: pdfstartview=XYZ, plainpages=false, pdfpagelabels</string>
+    </property>
+   </widget>
+  </widget>
+  <widget class="QLineEdit" name="keywordsLE" >
+   <property name="geometry" >
+    <rect>
+     <x>81</x>
+     <y>144</y>
+     <width>351</width>
+     <height>22</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QGroupBox" name="groupBox_4" >
+   <property name="geometry" >
+    <rect>
+     <x>221</x>
+     <y>191</y>
+     <width>221</width>
+     <height>131</height>
+    </rect>
+   </property>
+   <property name="title" >
+    <string>Links</string>
+   </property>
+   <widget class="QCheckBox" name="pdfborderCB" >
+    <property name="geometry" >
+     <rect>
+      <x>10</x>
+      <y>39</y>
+      <width>151</width>
+      <height>21</height>
+     </rect>
+    </property>
+    <property name="text" >
+     <string>No frames around links</string>
+    </property>
+    <property name="tristate" >
+     <bool>false</bool>
+    </property>
+   </widget>
+   <widget class="QCheckBox" name="pagebackrefCB" >
+    <property name="geometry" >
+     <rect>
+      <x>10</x>
+      <y>99</y>
+      <width>201</width>
+      <height>21</height>
+     </rect>
+    </property>
+    <property name="toolTip" >
+     <string>Adds "backlink" text to the end of each item in the 
bibliography</string>
+    </property>
+    <property name="text" >
+     <string>Backreference by pa&amp;ge number</string>
+    </property>
+   </widget>
+   <widget class="QCheckBox" name="backrefCB" >
+    <property name="geometry" >
+     <rect>
+      <x>10</x>
+      <y>79</y>
+      <width>201</width>
+      <height>21</height>
+     </rect>
+    </property>
+    <property name="toolTip" >
+     <string>Adds "backlink" text to the end of each item in the 
bibliography</string>
+    </property>
+    <property name="text" >
+     <string>&amp;Bibliographical backreferences</string>
+    </property>
+   </widget>
+   <widget class="QCheckBox" name="breaklinksCB" >
+    <property name="geometry" >
+     <rect>
+      <x>10</x>
+      <y>19</y>
+      <width>141</width>
+      <height>21</height>
+     </rect>
+    </property>
+    <property name="toolTip" >
+     <string>Allows link text to break across lines.</string>
+    </property>
+    <property name="text" >
+     <string>Break links over lines</string>
+    </property>
+   </widget>
+   <widget class="QCheckBox" name="colorlinksCB" >
+    <property name="geometry" >
+     <rect>
+      <x>10</x>
+      <y>59</y>
+      <width>81</width>
+      <height>21</height>
+     </rect>
+    </property>
+    <property name="text" >
+     <string>Color links</string>
+    </property>
+   </widget>
+  </widget>
+ </widget>
+ <tabstops>
+  <tabstop>use_hyperrefCB</tabstop>
+  <tabstop>titleLE</tabstop>
+  <tabstop>authorLE</tabstop>
+  <tabstop>subjectLE</tabstop>
+  <tabstop>keywordsLE</tabstop>
+  <tabstop>bookmarksGB</tabstop>
+  <tabstop>bookmarksnumberedCB</tabstop>
+  <tabstop>bookmarksopenGB</tabstop>
+  <tabstop>bookmarksopenlevelLE</tabstop>
+  <tabstop>optionsLE</tabstop>
+  <tabstop>breaklinksCB</tabstop>
+  <tabstop>pdfborderCB</tabstop>
+  <tabstop>colorlinksCB</tabstop>
+  <tabstop>backrefCB</tabstop>
+  <tabstop>pagebackrefCB</tabstop>
+  <tabstop>fullscreenCB</tabstop>
+ </tabstops>
+ <includes>
+  <include location="local" >qt_helpers.h</include>
+ </includes>
+ <resources/>
+ <connections/>
+ <designerdata>
+  <property name="gridDeltaX" >
+   <number>2</number>
+  </property>
+  <property name="gridDeltaY" >
+   <number>2</number>
+  </property>
+  <property name="gridSnapX" >
+   <bool>true</bool>
+  </property>
+  <property name="gridSnapY" >
+   <bool>true</bool>
+  </property>
+  <property name="gridVisible" >
+   <bool>false</bool>
+  </property>
+ </designerdata>
+</ui>
diff --git a/src/frontends/qt4/ui/compile_uic.sh 
b/src/frontends/qt4/ui/compile_uic.sh
index 0806939..5144a7a 100644
--- a/src/frontends/qt4/ui/compile_uic.sh
+++ b/src/frontends/qt4/ui/compile_uic.sh
@@ -6,6 +6,7 @@ uic BibtexAddUi.ui -o BibtexAddUi.h
 uic BibtexUi.ui -o BibtexUi.h
 uic BoxUi.ui -o BoxUi.h
 uic BranchesUi.ui -o BranchesUi.h
+uic PDFSupportUi.ui -o PDFSupportUi.h
 uic BranchUi.ui -o BranchUi.h
 uic ChangesUi.ui -o ChangesUi.h
 uic CharacterUi.ui -o CharacterUi.h
@@ -49,7 +50,7 @@ uic PrefSpellcheckerUi.ui -o PrefSpellcheckerUi.h
 uic PrefsUi.ui -o PrefsUi.h
 uic PrefUi.ui -o PrefUi.h
 uic PrintUi.ui -o PrintUi.h
-uic reambleUi.ui -o PreambleUi.h
+uic PreambleUi.ui -o PreambleUi.h
 uic RefUi.ui -o RefUi.h
 uic SearchUi.ui -o SearchUi.h
 uic SendtoUi.ui -o SendtoUi.h
@@ -61,7 +62,7 @@ uic TexinfoUi.ui -o TexinfoUi.h
 uic TextLayoutUi.ui -o TextLayoutUi.h
 uic ThesaurusUi.ui -o ThesaurusUi.h
 uic TocUi.ui -o TocUi.h
-uic ulletsUi.ui -o BulletsUi.h
+uic BulletsUi.ui -o BulletsUi.h
 uic URLUi.ui -o URLUi.h
 uic VSpaceUi.ui -o VSpaceUi.h
 uic WrapUi.ui -o WrapUi.h
diff --git a/src/insets/Inset.cpp b/src/insets/Inset.cpp
index 0995a7a..e505e4a 100644
--- a/src/insets/Inset.cpp
+++ b/src/insets/Inset.cpp
@@ -23,7 +23,6 @@
 #include "CoordCache.h"
 #include "Cursor.h"
 #include "debug.h"
-#include "debug.h"
 #include "Dimension.h"
 #include "DispatchResult.h"
 #include "FuncRequest.h"

Reply via email to