X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fbufferparams.h;h=5951f830114577da9f71f54bc626453634044ba7;hb=65ca7003ba47b7348610393a9a0d2d309b4e9702;hp=559db97c61aa1415e93cf0f90f7e0c2e9e96f60b;hpb=f9c1cafbe6b7095bb520891de9b93a2495e3a9a8;p=lyx.git diff --git a/src/bufferparams.h b/src/bufferparams.h index 559db97c61..5951f83011 100644 --- a/src/bufferparams.h +++ b/src/bufferparams.h @@ -20,10 +20,9 @@ #include "insets/insetquotes.h" -#include "support/cow_ptr.h" +#include "support/copied_ptr.h" #include "support/types.h" -#include "support/std_string.h" #include @@ -35,14 +34,35 @@ class LatexFeatures; class Spacing; class TexRow; class VSpace; -struct Language; +class Language; + + +namespace lyx { +namespace biblio { + +enum CiteEngine { + ENGINE_BASIC, + ENGINE_NATBIB_AUTHORYEAR, + ENGINE_NATBIB_NUMERICAL, + ENGINE_JURABIB +}; + +class CiteEngine_enum { + CiteEngine val_; +public: + CiteEngine_enum(CiteEngine val) : val_(val) {} + operator CiteEngine() const{ return val_; } +}; + +} // namespace biblio +} // namespace lyx /** Buffer parameters. - This class contains all the parameters for this a buffer uses. Some - work needs to be done on this class to make it nice. Now everything - is in public. -*/ + * This class contains all the parameters for this a buffer uses. Some + * work needs to be done on this class to make it nice. Now everything + * is in public. + */ class BufferParams { public: /// @@ -57,20 +77,17 @@ public: ~BufferParams(); /// read a header token, if unrecognised, return it or an unknown class name - string const readToken(LyXLex & lex, string const & token); + std::string const readToken(LyXLex & lex, std::string const & token); /// void writeFile(std::ostream &) const; /** \returns true if the babel package is used (interogates - the BufferParams and a LyXRC variable). - This returned value can then be passed to the insets... + * the BufferParams and a LyXRC variable). + * This returned value can then be passed to the insets... */ bool writeLaTeX(std::ostream &, LaTeXFeatures &, TexRow &) const; - /// - void setPaperStuff(); - /// void useClassDefaults(); @@ -84,55 +101,54 @@ public: void setDefSkip(VSpace const & vs); /** Wether paragraphs are separated by using a indent like in - articles or by using a little skip like in letters. - */ + * articles or by using a little skip like in letters. + */ PARSEP paragraph_separation; /// InsetQuotes::quote_language quotes_language; /// InsetQuotes::quote_times quotes_times; /// - string fontsize; + std::string fontsize; /// lyx::textclass_type textclass; /// LyXTextClass const & getLyXTextClass() const; + /// returns the main font for the buffer (document) + LyXFont const getFont() const; + /* this are for the PaperLayout */ - /// the general papersize (papersize2 or paperpackage + /// the papersize PAPER_SIZE papersize; - /// the selected Geometry papersize - VMARGIN_PAPER_TYPE papersize2; - /// a special paperpackage .sty-file - PAPER_PACKAGES paperpackage; /// PAPER_ORIENTATION orientation; - /// + /// use custom margins bool use_geometry; /// - string paperwidth; + std::string paperwidth; /// - string paperheight; + std::string paperheight; /// - string leftmargin; + std::string leftmargin; /// - string topmargin; + std::string topmargin; /// - string rightmargin; + std::string rightmargin; /// - string bottommargin; + std::string bottommargin; /// - string headheight; + std::string headheight; /// - string headsep; + std::string headsep; /// - string footskip; + std::string footskip; /* some LaTeX options */ /// The graphics driver - string graphicsDriver; + std::string graphicsDriver; /// - string fonts; + std::string fonts; /// Spacing & spacing(); Spacing const & spacing() const; @@ -146,19 +162,19 @@ public: BranchList & branchlist(); BranchList const & branchlist() const; /// - string inputenc; + std::string inputenc; /// - string preamble; + std::string preamble; /// - string options; + std::string options; /// - string float_placement; + std::string float_placement; /// unsigned int columns; /// LyXTextClass::PageSides sides; /// - string pagestyle; + std::string pagestyle; /// \param index should lie in the range 0 <= \c index <= 3. Bullet & temp_bullet(lyx::size_type index); Bullet const & temp_bullet(lyx::size_type index) const; @@ -171,6 +187,10 @@ public: void readLanguage(LyXLex &); /// void readGraphicsDriver(LyXLex &); + /// + void readBullets(LyXLex &); + /// + void readBulletsLaTeX(LyXLex &); /// use AMS package, not, or auto enum AMS { @@ -180,13 +200,21 @@ public: }; AMS use_amsmath; /// - bool use_natbib; + lyx::biblio::CiteEngine cite_engine; /// - bool use_numerical_citations; + bool use_bibtopic; /// revision tracking for this buffer ? bool tracking_changes; + /** This param decides if change tracking marks should be output + * (using the dvipost package) or if the current "state" of the + * document should be output instead. Since dvipost needs dvi + * specials, it only works with dvi/ps output (the param will be + * ignored with other output flavors and disabled when dbipost is + * not installed). + */ + bool output_changes; /// Time ago we agreed that this was a buffer property [ale990407] - string parentname; + std::string parentname; /// bool compressed; @@ -197,16 +225,23 @@ public: /// map of the file's author IDs to buffer author IDs std::vector author_map; /// - string const dvips_options() const; + std::string const dvips_options() const; /// - string const paperSizeName() const; + std::string const paperSizeName() const; + /// + std::string const babelCall(std::string const & lang_opts) const; private: /** Use the Pimpl idiom to hide those member variables that would otherwise - drag in other header files. + * drag in other header files. */ class Impl; - lyx::support::cow_ptr pimpl_; + class MemoryTraits { + public: + static Impl * clone(Impl const *); + static void destroy(Impl *); + }; + lyx::support::copied_ptr pimpl_; }; #endif