2 * \file ControlCitation.C
3 * This file is part of LyX, the document processor.
4 * Licence details can be found in the file COPYING.
6 * \author Angus Leeming
8 * Full author contact details are available in file CREDITS.
13 #include "ControlCitation.h"
23 vector<biblio::CiteStyle> ControlCitation::citeStyles_;
26 ControlCitation::ControlCitation(Dialog & d)
27 : ControlCommand(d, "citation")
31 bool ControlCitation::initialiseParams(string const & data)
33 ControlCommand::initialiseParams(data);
35 vector<pair<string, string> > blist;
36 kernel().buffer().fillWithBibKeys(blist);
38 biblio::CiteEngine const engine = biblio::getEngine(kernel().buffer());
40 bool use_styles = engine != biblio::ENGINE_BASIC;
42 typedef std::map<string, string>::value_type InfoMapValue;
44 for (vector<pair<string,string> >::size_type i = 0;
45 i < blist.size(); ++i) {
46 bibkeysInfo_.insert(InfoMapValue(blist[i].first,
50 if (citeStyles_.empty())
51 citeStyles_ = biblio::getCiteStyles(engine);
53 if ((use_styles && citeStyles_.size() == 1) ||
54 (!use_styles && citeStyles_.size() != 1))
55 citeStyles_ = biblio::getCiteStyles(engine);
63 void ControlCitation::clearParams()
65 ControlCommand::clearParams();
70 biblio::InfoMap const & ControlCitation::bibkeysInfo() const
76 biblio::CiteEngine ControlCitation::getEngine() const
78 return biblio::getEngine(kernel().buffer());
82 vector<string> const ControlCitation::getCiteStrings(string const & key) const
84 vector<string> styles;
86 biblio::CiteEngine const engine = biblio::getEngine(kernel().buffer());
87 vector<biblio::CiteStyle> const cs = biblio::getCiteStyles(engine);
89 if (engine == biblio::ENGINE_NATBIB_NUMERICAL)
90 styles = biblio::getNumericalStrings(key, bibkeysInfo_, cs);
92 styles = biblio::getAuthorYearStrings(key, bibkeysInfo_, cs);