+namespace Alert = lyx::frontend::Alert;
+
+
+// Local translators
+namespace {
+
+// Paragraph separation
+typedef Translator<string, BufferParams::PARSEP> ParSepTranslator;
+
+
+ParSepTranslator const init_parseptranslator()
+{
+ ParSepTranslator translator(string_paragraph_separation[0], BufferParams::PARSEP_INDENT);
+ translator.addPair(string_paragraph_separation[1], BufferParams::PARSEP_SKIP);
+ return translator;
+}
+
+
+ParSepTranslator const & parseptranslator()
+{
+ static ParSepTranslator translator = init_parseptranslator();
+ return translator;
+}
+
+
+// Quotes language
+typedef Translator<string, InsetQuotes::quote_language> QuotesLangTranslator;
+
+
+QuotesLangTranslator const init_quoteslangtranslator()
+{
+ QuotesLangTranslator translator(string_quotes_language[0], InsetQuotes::EnglishQ);
+ translator.addPair(string_quotes_language[1], InsetQuotes::SwedishQ);
+ translator.addPair(string_quotes_language[2], InsetQuotes::GermanQ);
+ translator.addPair(string_quotes_language[3], InsetQuotes::PolishQ);
+ translator.addPair(string_quotes_language[4], InsetQuotes::FrenchQ);
+ translator.addPair(string_quotes_language[5], InsetQuotes::DanishQ);
+ return translator;
+}
+
+
+QuotesLangTranslator const & quoteslangtranslator()
+{
+ static QuotesLangTranslator translator = init_quoteslangtranslator();
+ return translator;
+}
+
+
+// Paper size
+typedef Translator<std::string, PAPER_SIZE> PaperSizeTranslator;
+
+
+PaperSizeTranslator const init_papersizetranslator()
+{
+ PaperSizeTranslator translator(string_papersize[0], PAPER_DEFAULT);
+ translator.addPair(string_papersize[1], PAPER_CUSTOM);
+ translator.addPair(string_papersize[2], PAPER_USLETTER);
+ translator.addPair(string_papersize[3], PAPER_USLEGAL);
+ translator.addPair(string_papersize[4], PAPER_USEXECUTIVE);
+ translator.addPair(string_papersize[5], PAPER_A3);
+ translator.addPair(string_papersize[6], PAPER_A4);
+ translator.addPair(string_papersize[7], PAPER_A5);
+ translator.addPair(string_papersize[8], PAPER_B3);
+ translator.addPair(string_papersize[9], PAPER_B4);
+ translator.addPair(string_papersize[10], PAPER_B5);
+ return translator;
+}
+
+
+PaperSizeTranslator const & papersizetranslator()
+{
+ static PaperSizeTranslator translator = init_papersizetranslator();
+ return translator;
+}
+
+
+// Paper orientation
+typedef Translator<string, PAPER_ORIENTATION> PaperOrientationTranslator;
+
+
+PaperOrientationTranslator const init_paperorientationtranslator()
+{
+ PaperOrientationTranslator translator(string_orientation[0], ORIENTATION_PORTRAIT);
+ translator.addPair(string_orientation[1], ORIENTATION_LANDSCAPE);
+ return translator;
+}
+
+
+PaperOrientationTranslator const & paperorientationtranslator()
+{
+ static PaperOrientationTranslator translator = init_paperorientationtranslator();
+ return translator;
+}
+
+
+// Page sides
+typedef Translator<int, LyXTextClass::PageSides> SidesTranslator;
+
+
+SidesTranslator const init_sidestranslator()
+{
+ SidesTranslator translator(1, LyXTextClass::OneSide);
+ translator.addPair(2, LyXTextClass::TwoSides);
+ return translator;
+}
+
+
+SidesTranslator const & sidestranslator()
+{
+ static SidesTranslator translator = init_sidestranslator();
+ return translator;
+}
+
+
+// LaTeX packages
+typedef Translator<int, BufferParams::Package> PackageTranslator;
+
+
+PackageTranslator const init_packagetranslator()
+{
+ PackageTranslator translator(0, BufferParams::package_off);
+ translator.addPair(1, BufferParams::package_auto);
+ translator.addPair(2, BufferParams::package_on);
+ return translator;
+}
+
+
+PackageTranslator const & packagetranslator()
+{
+ static PackageTranslator translator = init_packagetranslator();
+ return translator;
+}
+
+
+// Cite engine
+typedef Translator<string, biblio::CiteEngine> CiteEngineTranslator;
+
+
+CiteEngineTranslator const init_citeenginetranslator()
+{
+ CiteEngineTranslator translator("basic", biblio::ENGINE_BASIC);
+ translator.addPair("natbib_numerical", biblio::ENGINE_NATBIB_NUMERICAL);
+ translator.addPair("natbib_authoryear", biblio::ENGINE_NATBIB_AUTHORYEAR);
+ translator.addPair("jurabib", biblio::ENGINE_JURABIB);
+ return translator;
+}
+
+
+CiteEngineTranslator const & citeenginetranslator()
+{
+ static CiteEngineTranslator translator = init_citeenginetranslator();
+ return translator;
+}
+
+
+// Spacing
+typedef Translator<string, Spacing::Space> SpaceTranslator;
+
+
+SpaceTranslator const init_spacetranslator()
+{
+ SpaceTranslator translator("default", Spacing::Default);
+ translator.addPair("single", Spacing::Single);
+ translator.addPair("onehalf", Spacing::Onehalf);
+ translator.addPair("double", Spacing::Double);
+ translator.addPair("other", Spacing::Other);
+ return translator;
+}
+
+
+SpaceTranslator const & spacetranslator()
+{
+ static SpaceTranslator translator = init_spacetranslator();
+ return translator;
+}
+
+// ends annonym namespace
+}
+
+
+class BufferParams::Impl
+{
+public:
+ Impl();
+
+ AuthorList authorlist;
+ BranchList branchlist;
+ boost::array<Bullet, 4> temp_bullets;
+ boost::array<Bullet, 4> user_defined_bullets;
+ Spacing spacing;
+ /** This is the amount of space used for paragraph_separation "skip",
+ * and for detached paragraphs in "indented" documents.
+ */
+ VSpace defskip;
+};
+
+
+BufferParams::Impl::Impl()
+ : defskip(VSpace::MEDSKIP)
+{
+ // set initial author
+ authorlist.record(Author(lyxrc.user_name, lyxrc.user_email));
+}
+
+
+BufferParams::Impl *
+BufferParams::MemoryTraits::clone(BufferParams::Impl const * ptr)
+{
+ BOOST_ASSERT(ptr);
+
+ return new BufferParams::Impl(*ptr);
+}
+
+
+void BufferParams::MemoryTraits::destroy(BufferParams::Impl * ptr)
+{
+ delete ptr;
+}
+