2 /* This file is part of
3 * ======================================================
5 * LyX, The Document Processor
7 * Copyright 2001 The LyX Team.
9 * ======================================================
11 * \file ControlCitation.C
12 * \author Angus Leeming <a.leeming@ic.ac.uk>
19 #pragma implementation
23 #include "ButtonControllerBase.h"
24 #include "ControlCitation.h"
29 // need to #include this in _one_ of the ControlCommand-derived classses in
30 // order to instantiate
31 // ControlInset<InsetCommand, InsetCommandParams>::showInset
32 // ControlInset<InsetCommand, InsetCommandParams>::createInset
33 #include "ControlInset.tmpl"
40 vector<biblio::CiteStyle> ControlCitation::citeStyles_;
42 ControlCitation::ControlCitation(LyXView & lv, Dialogs & d)
43 : ControlCommand(lv, d, LFUN_CITATION_INSERT)
45 // These are permanent connections so we won't bother
46 // storing a copy because we won't be disconnecting.
47 d_.showCitation.connect(slot(this, &ControlCitation::showInset));
48 d_.createCitation.connect(slot(this, &ControlCitation::createInset));
52 void ControlCitation::clearDaughterParams()
58 void ControlCitation::setDaughterParams()
60 vector<pair<string,string> > blist = lv_.buffer()->getBibkeyList();
62 typedef std::map<string, string>::value_type InfoMapValue;
64 for (vector<pair<string,string> >::size_type i=0; i<blist.size(); ++i) {
65 bibkeysInfo_.insert(InfoMapValue(blist[i].first,
69 if (citeStyles_.empty())
70 citeStyles_ = biblio::getCiteStyles(usingNatbib());
72 if ((usingNatbib() && citeStyles_.size() == 1) ||
73 (!usingNatbib() && citeStyles_.size() != 1))
74 citeStyles_ = biblio::getCiteStyles(usingNatbib());
79 biblio::InfoMap const & ControlCitation::bibkeysInfo() const
85 bool ControlCitation::usingNatbib() const
87 return lv_.buffer()->params.use_natbib;
91 vector<string> const ControlCitation::getCiteStrings(string const & key) const
93 vector<string> styles;
95 vector<biblio::CiteStyle> const cs =
96 biblio::getCiteStyles(usingNatbib());
98 if (lv_.buffer()->params.use_numerical_citations)
99 styles = biblio::getNumericalStrings(key, bibkeysInfo_, cs);
101 styles = biblio::getAuthorYearStrings(key, bibkeysInfo_, cs);