Jürgen Spitzmüller wrote:
I found a small glitch in the backport that resulted in LyX not exporting the correct natbib cite commands, but always \cite instead. Trunk is correct in this regard.

I think Martin's backport was not at fault here. Trunk is correct because I extended Martin's cite_engine patch. Look at rev 17537 below. Maybe you should backport the rest of it?

Abdel.


Author: younes
Date: Sun Mar 25 03:12:38 2007
New Revision: 17537

URL: http://www.lyx.org/trac/changeset/17537
Log:
* BufferParams:
  * transfer CiteEngine enum declaration to biblio.h
  * delete unneeded CiteEngine_enum
  * cite_engine is now cite_engine_ and is private.


Modified:
    lyx-devel/trunk/src/LaTeXFeatures.C
    lyx-devel/trunk/src/bufferparams.C
    lyx-devel/trunk/src/bufferparams.h
    lyx-devel/trunk/src/frontends/controllers/ControlBibtex.C
    lyx-devel/trunk/src/frontends/controllers/biblio.C
    lyx-devel/trunk/src/frontends/controllers/biblio.h
    lyx-devel/trunk/src/frontends/qt4/QDocumentDialog.C
    lyx-devel/trunk/src/insets/insetcite.C
    lyx-devel/trunk/src/insets/insetcite.h
    lyx-devel/trunk/src/lyxfunc.C

Modified: lyx-devel/trunk/src/LaTeXFeatures.C
URL: http://www.lyx.org/trac/file/lyx-devel/trunk/src/LaTeXFeatures.C?rev=17537
==============================================================================
--- lyx-devel/trunk/src/LaTeXFeatures.C (original)
+++ lyx-devel/trunk/src/LaTeXFeatures.C Sun Mar 25 03:12:38 2007
@@ -31,6 +31,7 @@
 #include "support/docstream.h"
 #include "support/filetools.h"

+#include "frontends/controllers/biblio.h"

 namespace lyx {

@@ -378,7 +379,7 @@
        // natbib.sty
        if (isRequired("natbib") && ! tclass.provides(LyXTextClass::natbib)) {
                packages << "\\usepackage[";
-               if (params_.cite_engine == biblio::ENGINE_NATBIB_NUMERICAL) {
+               if (params_.getEngine() == biblio::ENGINE_NATBIB_NUMERICAL) {
                        packages << "numbers";
                } else {
                        packages << "authoryear";

Modified: lyx-devel/trunk/src/bufferparams.C
URL: http://www.lyx.org/trac/file/lyx-devel/trunk/src/bufferparams.C?rev=17537
==============================================================================
--- lyx-devel/trunk/src/bufferparams.C (original)
+++ lyx-devel/trunk/src/bufferparams.C Sun Mar 25 03:12:38 2007
@@ -37,6 +37,7 @@
 #include "vspace.h"

 #include "frontends/Alert.h"
+#include "frontends/controllers/biblio.h"

 #include "support/lyxalgo.h" // for lyx::count
 #include "support/convert.h"
@@ -303,7 +304,7 @@
        use_geometry = false;
        use_amsmath = package_auto;
        use_esint = package_auto;
-       cite_engine = biblio::ENGINE_BASIC;
+       cite_engine_ = biblio::ENGINE_BASIC;
        use_bibtopic = false;
        trackChanges = false;
        outputChanges = false;
@@ -495,7 +496,7 @@
        } else if (token == "\\cite_engine") {
                string engine;
                lex >> engine;
-               cite_engine = citeenginetranslator().find(engine);
+               cite_engine_ = citeenginetranslator().find(engine);
        } else if (token == "\\use_bibtopic") {
                lex >> use_bibtopic;
        } else if (token == "\\tracking_changes") {
@@ -642,7 +643,7 @@
           << "\n\\use_geometry " << convert<string>(use_geometry)
           << "\n\\use_amsmath " << use_amsmath
           << "\n\\use_esint " << use_esint
-          << "\n\\cite_engine " << citeenginetranslator().find(cite_engine)
+          << "\n\\cite_engine " << citeenginetranslator().find(cite_engine_)
           << "\n\\use_bibtopic " << convert<string>(use_bibtopic)
           << "\n\\paperorientation " << string_orientation[orientation]
           << '\n';
@@ -1483,14 +1484,20 @@
 }


-biblio::CiteEngine_enum BufferParams::getEngine() const
+biblio::CiteEngine BufferParams::getEngine() const
 {
        // FIXME the class should provide the numerical/
        // authoryear choice
        if (getLyXTextClass().provides(LyXTextClass::natbib)
-           && cite_engine != biblio::ENGINE_NATBIB_NUMERICAL)
+           && cite_engine_ != biblio::ENGINE_NATBIB_NUMERICAL)
                return biblio::ENGINE_NATBIB_AUTHORYEAR;
-       return cite_engine;
+       return cite_engine_;
+}
+
+
+void BufferParams::setCiteEngine(biblio::CiteEngine const cite_engine)
+{
+       cite_engine_ = cite_engine;
 }

 } // namespace lyx

Modified: lyx-devel/trunk/src/bufferparams.h
URL: http://www.lyx.org/trac/file/lyx-devel/trunk/src/bufferparams.h?rev=17537
==============================================================================
--- lyx-devel/trunk/src/bufferparams.h (original)
+++ lyx-devel/trunk/src/bufferparams.h Sun Mar 25 03:12:38 2007
@@ -39,23 +39,8 @@
 class VSpace;
 class Language;

-
 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_; }
-};
-
+enum CiteEngine;
 } // namespace biblio


@@ -240,8 +225,6 @@
        /// Whether and how to load esint
        Package use_esint;
        ///
-       biblio::CiteEngine cite_engine;
-       ///
        bool use_bibtopic;
        /// revision tracking for this buffer ?
        bool trackChanges;
@@ -278,7 +261,10 @@
        /// path of the current buffer
        std::string filepath;
        /// get the appropriate cite engine (natbib handling)
-       biblio::CiteEngine_enum getEngine() const;
+       biblio::CiteEngine getEngine() const;
+
+       ///
+       void setCiteEngine(biblio::CiteEngine const);

 private:
/** Use the Pimpl idiom to hide those member variables that would otherwise
@@ -291,6 +277,9 @@
                static void destroy(Impl *);
        };
        support::copied_ptr<Impl, MemoryTraits> pimpl_;
+
+       ///
+       biblio::CiteEngine cite_engine_;
 };

 } // namespace lyx

Modified: lyx-devel/trunk/src/frontends/controllers/ControlBibtex.C
URL: http://www.lyx.org/trac/file/lyx-devel/trunk/src/frontends/controllers/ControlBibtex.C?rev=17537
==============================================================================
--- lyx-devel/trunk/src/frontends/controllers/ControlBibtex.C (original)
+++ lyx-devel/trunk/src/frontends/controllers/ControlBibtex.C Sun Mar 25 03:12:38 2007
@@ -133,7 +133,7 @@
 {
        // the different bibtex packages have (and need) their
        // own "plain" stylefiles
-       biblio::CiteEngine_enum const & engine =
+       biblio::CiteEngine const engine =
                kernel().buffer().params().getEngine();
        docstring defaultstyle;
        switch (engine) {

Modified: lyx-devel/trunk/src/frontends/controllers/biblio.C
URL: http://www.lyx.org/trac/file/lyx-devel/trunk/src/frontends/controllers/biblio.C?rev=17537
==============================================================================
--- lyx-devel/trunk/src/frontends/controllers/biblio.C (original)
+++ lyx-devel/trunk/src/frontends/controllers/biblio.C Sun Mar 25 03:12:38 2007
@@ -111,7 +111,7 @@


 string const asValidLatexCommand(string const & input,
-                                CiteEngine_enum const & engine)
+                                CiteEngine const engine)
 {
        string const default_str = default_cite_command(engine);
        if (!is_possible_cite_command(input))
@@ -688,7 +688,7 @@
 }


-vector<CiteStyle> const getCiteStyles(CiteEngine_enum const & engine)
+vector<CiteStyle> const getCiteStyles(CiteEngine const engine)
 {
        unsigned int nStyles = 0;
        unsigned int start = 0;

Modified: lyx-devel/trunk/src/frontends/controllers/biblio.h
URL: http://www.lyx.org/trac/file/lyx-devel/trunk/src/frontends/controllers/biblio.h?rev=17537
==============================================================================
--- lyx-devel/trunk/src/frontends/controllers/biblio.h (original)
+++ lyx-devel/trunk/src/frontends/controllers/biblio.h Sun Mar 25 03:12:38 2007
@@ -23,7 +23,12 @@
 namespace lyx {
 namespace biblio {

-class CiteEngine_enum;
+enum CiteEngine {
+       ENGINE_BASIC,
+       ENGINE_NATBIB_AUTHORYEAR,
+       ENGINE_NATBIB_NUMERICAL,
+       ENGINE_JURABIB
+};


 enum CiteStyle {
@@ -55,7 +60,7 @@
  *  returns an appropriate command, valid for \c engine.
  */
 std::string const asValidLatexCommand(std::string const & input,
-                                     CiteEngine_enum const & engine);
+                                     CiteEngine const engine);

 /// First entry is the bibliography key, second the data
 typedef std::map<std::string, docstring> InfoMap;
@@ -121,7 +126,7 @@


 /// Returns a vector of available Citation styles.
-std::vector<CiteStyle> const getCiteStyles(CiteEngine_enum const &);
+std::vector<CiteStyle> const getCiteStyles(CiteEngine const );

 /**
    "Translates" the available Citation Styles into strings for this key.

Modified: lyx-devel/trunk/src/frontends/qt4/QDocumentDialog.C
URL: http://www.lyx.org/trac/file/lyx-devel/trunk/src/frontends/qt4/QDocumentDialog.C?rev=17537
==============================================================================
--- lyx-devel/trunk/src/frontends/qt4/QDocumentDialog.C (original)
+++ lyx-devel/trunk/src/frontends/qt4/QDocumentDialog.C Sun Mar 25 03:12:38 2007
@@ -35,6 +35,7 @@
 #include "tex-strings.h" // tex_graphics
 #include "Spacing.h"

+#include "frontends/controllers/biblio.h"
 #include "controllers/ControlDocument.h"
 #include "controllers/frnt_lang.h"

@@ -642,18 +643,18 @@
                fromqstr(preambleModule->preambleTE->document()->toPlainText());

        // biblio
-       params.cite_engine = biblio::ENGINE_BASIC;
+       params.setCiteEngine(biblio::ENGINE_BASIC);

        if (biblioModule->citeNatbibRB->isChecked()) {
                bool const use_numerical_citations =
                        biblioModule->citeStyleCO->currentIndex();
                if (use_numerical_citations)
-                       params.cite_engine = biblio::ENGINE_NATBIB_NUMERICAL;
+                       params.setCiteEngine(biblio::ENGINE_NATBIB_NUMERICAL);
                else
-                       params.cite_engine = biblio::ENGINE_NATBIB_AUTHORYEAR;
+                       params.setCiteEngine(biblio::ENGINE_NATBIB_AUTHORYEAR);

        } else if (biblioModule->citeJurabibRB->isChecked())
-               params.cite_engine = biblio::ENGINE_JURABIB;
+               params.setCiteEngine(biblio::ENGINE_JURABIB);

        params.use_bibtopic =
                biblioModule->bibtopicCB->isChecked();
@@ -920,17 +921,17 @@

        // biblio
        biblioModule->citeDefaultRB->setChecked(
-               params.cite_engine == biblio::ENGINE_BASIC);
+               params.getEngine() == biblio::ENGINE_BASIC);

        biblioModule->citeNatbibRB->setChecked(
-               params.cite_engine == biblio::ENGINE_NATBIB_NUMERICAL ||
-               params.cite_engine == biblio::ENGINE_NATBIB_AUTHORYEAR);
+               params.getEngine() == biblio::ENGINE_NATBIB_NUMERICAL ||
+               params.getEngine() == biblio::ENGINE_NATBIB_AUTHORYEAR);

        biblioModule->citeStyleCO->setCurrentIndex(
-               params.cite_engine == biblio::ENGINE_NATBIB_NUMERICAL);
+               params.getEngine() == biblio::ENGINE_NATBIB_NUMERICAL);

        biblioModule->citeJurabibRB->setChecked(
-               params.cite_engine == biblio::ENGINE_JURABIB);
+               params.getEngine() == biblio::ENGINE_JURABIB);

        biblioModule->bibtopicCB->setChecked(
                params.use_bibtopic);

Modified: lyx-devel/trunk/src/insets/insetcite.C
URL: http://www.lyx.org/trac/file/lyx-devel/trunk/src/insets/insetcite.C?rev=17537
==============================================================================
--- lyx-devel/trunk/src/insets/insetcite.C (original)
+++ lyx-devel/trunk/src/insets/insetcite.C Sun Mar 25 03:12:38 2007
@@ -317,7 +317,7 @@
        docstring const after  = getParam("after");

        docstring label;
-       biblio::CiteEngine const engine = buffer.params().cite_engine;
+       biblio::CiteEngine const engine = buffer.params().getEngine();
        if (engine != biblio::ENGINE_BASIC) {
                // FIXME UNICODE
                label = getNatbibLabel(buffer, getCmdName(), 
to_utf8(getParam("key")),
@@ -446,7 +446,7 @@

 void InsetCitation::validate(LaTeXFeatures & features) const
 {
-       switch (features.bufferParams().cite_engine) {
+       switch (features.bufferParams().getEngine()) {
        case biblio::ENGINE_BASIC:
                break;
        case biblio::ENGINE_NATBIB_AUTHORYEAR:

Modified: lyx-devel/trunk/src/insets/insetcite.h
URL: http://www.lyx.org/trac/file/lyx-devel/trunk/src/insets/insetcite.h?rev=17537
==============================================================================
--- lyx-devel/trunk/src/insets/insetcite.h (original)
+++ lyx-devel/trunk/src/insets/insetcite.h Sun Mar 25 03:12:38 2007
@@ -15,7 +15,8 @@


 #include "insetcommand.h"
-#include "bufferparams.h"
+
+#include "frontends/controllers/biblio.h"


 namespace lyx {

Modified: lyx-devel/trunk/src/lyxfunc.C
URL: http://www.lyx.org/trac/file/lyx-devel/trunk/src/lyxfunc.C?rev=17537
==============================================================================
--- lyx-devel/trunk/src/lyxfunc.C (original)
+++ lyx-devel/trunk/src/lyxfunc.C Sun Mar 25 03:12:38 2007
@@ -1623,7 +1623,7 @@
                case LFUN_BUFFER_PARAMS_APPLY: {
                        BOOST_ASSERT(lyx_view_);
                        biblio::CiteEngine const engine =
-                               lyx_view_->buffer()->params().cite_engine;
+                               lyx_view_->buffer()->params().getEngine();

                        istringstream ss(argument);
                        LyXLex lex(0,0);
@@ -1637,7 +1637,7 @@
                                       << (unknown_tokens == 1 ? "" : "s")
                                       << endl;
                        }
-                       if (engine == lyx_view_->buffer()->params().cite_engine)
+                       if (engine == lyx_view_->buffer()->params().getEngine())
                                break;

                        LCursor & cur = view()->cursor();







Patch against 1.4svn attached. OK?
Jürgen


------------------------------------------------------------------------

Index: src/insets/insetcite.C
===================================================================
--- src/insets/insetcite.C      (Revision 17544)
+++ src/insets/insetcite.C      (Arbeitskopie)
@@ -402,7 +402,7 @@
 int InsetCitation::latex(Buffer const & buffer, ostream & os,
                         OutputParams const &) const
 {
-       biblio::CiteEngine const cite_engine = buffer.params().cite_engine;
+       biblio::CiteEngine const cite_engine = buffer.params().getEngine();
        string const cite_str =
                biblio::asValidLatexCommand(getCmdName(), cite_engine);

Reply via email to