]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/controllers/ControlCitation.C
fix crash due to invalidated iterator
[lyx.git] / src / frontends / controllers / ControlCitation.C
index d5e37aee7236a664289c7df7fa22be29ff89eb84..e7d599f2ee66f9cbda43f46a34ae7aa86dd157ff 100644 (file)
 
 #include "buffer.h"
 #include "bufferparams.h"
+#include "debug.h" // temporary
 
 
 using std::string;
 using std::vector;
 using std::pair;
 
+namespace lyx {
+namespace frontend {
 
 vector<biblio::CiteStyle> ControlCitation::citeStyles_;
 
@@ -31,15 +34,18 @@ ControlCitation::ControlCitation(Dialog & d)
 
 bool ControlCitation::initialiseParams(string const & data)
 {
+       lyxerr << "ControlCitation::initialiseParams\n\t" << data << std::endl;
        ControlCommand::initialiseParams(data);
 
        vector<pair<string, string> > blist;
        kernel().buffer().fillWithBibKeys(blist);
 
-       bool use_styles = (usingNatbib() || usingJurabib());
-       
+       biblio::CiteEngine const engine = biblio::getEngine(kernel().buffer());
+
+       bool use_styles = engine != biblio::ENGINE_BASIC;
+
        typedef std::map<string, string>::value_type InfoMapValue;
-       
+
        for (vector<pair<string,string> >::size_type i = 0;
             i < blist.size(); ++i) {
                bibkeysInfo_.insert(InfoMapValue(blist[i].first,
@@ -47,12 +53,11 @@ bool ControlCitation::initialiseParams(string const & data)
        }
 
        if (citeStyles_.empty())
-               citeStyles_ = biblio::getCiteStyles(usingNatbib(), usingJurabib());
+               citeStyles_ = biblio::getCiteStyles(engine);
        else {
                if ((use_styles && citeStyles_.size() == 1) ||
                    (!use_styles && citeStyles_.size() != 1))
-                       citeStyles_ = biblio::getCiteStyles(usingNatbib(), 
-                               usingJurabib());
+                       citeStyles_ = biblio::getCiteStyles(engine);
        }
 
        return true;
@@ -73,15 +78,9 @@ biblio::InfoMap const & ControlCitation::bibkeysInfo() const
 }
 
 
-bool ControlCitation::usingNatbib() const
-{
-    return kernel().buffer().params().use_natbib;
-}
-
-
-bool ControlCitation::usingJurabib() const
+biblio::CiteEngine_enum ControlCitation::getEngine() const
 {
-    return kernel().buffer().params().use_jurabib;
+       return biblio::getEngine(kernel().buffer());
 }
 
 
@@ -89,13 +88,16 @@ vector<string> const ControlCitation::getCiteStrings(string const & key) const
 {
        vector<string> styles;
 
-       vector<biblio::CiteStyle> const cs =
-               biblio::getCiteStyles(usingNatbib(), usingJurabib());
+       biblio::CiteEngine const engine = biblio::getEngine(kernel().buffer());
+       vector<biblio::CiteStyle> const cs = biblio::getCiteStyles(engine);
 
-       if (kernel().buffer().params().use_numerical_citations)
+       if (engine == biblio::ENGINE_NATBIB_NUMERICAL)
                styles = biblio::getNumericalStrings(key, bibkeysInfo_, cs);
        else
                styles = biblio::getAuthorYearStrings(key, bibkeysInfo_, cs);
 
        return styles;
 }
+
+} // namespace frontend
+} // namespace lyx