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"
33 vector<biblio::CiteStyle> ControlCitation::citeStyles_;
35 ControlCitation::ControlCitation(LyXView & lv, Dialogs & d)
36 : ControlCommand(lv, d, LFUN_CITATION_INSERT)
38 // These are permanent connections so we won't bother
39 // storing a copy because we won't be disconnecting.
40 d_.showCitation.connect(slot(this, &ControlCitation::showInset));
41 d_.createCitation.connect(slot(this, &ControlCitation::createInset));
45 void ControlCitation::clearDaughterParams()
51 void ControlCitation::setDaughterParams()
53 vector<pair<string,string> > blist = lv_.buffer()->getBibkeyList();
55 typedef std::map<string, string>::value_type InfoMapValue;
57 for (vector<pair<string,string> >::size_type i=0; i<blist.size(); ++i) {
58 bibkeysInfo_.insert(InfoMapValue(blist[i].first,
62 if (citeStyles_.empty())
63 citeStyles_ = biblio::getCiteStyles(usingNatbib());
65 if ((usingNatbib() && citeStyles_.size() == 1) ||
66 (!usingNatbib() && citeStyles_.size() != 1))
67 citeStyles_ = biblio::getCiteStyles(usingNatbib());
72 biblio::InfoMap const & ControlCitation::bibkeysInfo() const
78 bool ControlCitation::usingNatbib() const
80 return lv_.buffer()->params.use_natbib;
84 vector<string> const ControlCitation::getCiteStrings(string const & key) const
86 vector<string> styles;
88 vector<biblio::CiteStyle> const cs =
89 biblio::getCiteStyles(usingNatbib());
91 if (lv_.buffer()->params.use_numerical_citations)
92 styles = biblio::getNumericalStrings(key, bibkeysInfo_, cs);
94 styles = biblio::getAuthorYearStrings(key, bibkeysInfo_, cs);