]> git.lyx.org Git - lyx.git/blob - src/frontends/controllers/ControlCitation.C
Make buffer's member variables private; use accessor functions.
[lyx.git] / src / frontends / controllers / ControlCitation.C
1 /**
2  * \file ControlCitation.C
3  * This file is part of LyX, the document processor.
4  * Licence details can be found in the file COPYING.
5  *
6  * \author Angus Leeming
7  *
8  * Full author contact details are available in file CREDITS.
9  */
10
11 #include <config.h>
12
13 #include "ControlCitation.h"
14
15 #include "buffer.h"
16
17 using std::vector;
18 using std::pair;
19
20
21 vector<biblio::CiteStyle> ControlCitation::citeStyles_;
22
23
24 ControlCitation::ControlCitation(Dialog & d)
25         : ControlCommand(d, "citation")
26 {}
27
28
29 bool ControlCitation::initialiseParams(string const & data)
30 {
31         ControlCommand::initialiseParams(data);
32
33         vector<pair<string,string> > blist;
34         kernel().buffer().fillWithBibKeys(blist);
35
36         typedef std::map<string, string>::value_type InfoMapValue;
37
38         for (vector<pair<string,string> >::size_type i = 0;
39              i < blist.size(); ++i) {
40                 bibkeysInfo_.insert(InfoMapValue(blist[i].first,
41                                                  blist[i].second));
42         }
43
44         if (citeStyles_.empty())
45                 citeStyles_ = biblio::getCiteStyles(usingNatbib());
46         else {
47                 if ((usingNatbib() && citeStyles_.size() == 1) ||
48                     (!usingNatbib() && citeStyles_.size() != 1))
49                         citeStyles_ = biblio::getCiteStyles(usingNatbib());
50         }
51
52         return true;
53 }
54
55
56
57 void ControlCitation::clearParams()
58 {
59         ControlCommand::clearParams();
60         bibkeysInfo_.clear();
61 }
62
63
64 biblio::InfoMap const & ControlCitation::bibkeysInfo() const
65 {
66         return bibkeysInfo_;
67 }
68
69
70 bool ControlCitation::usingNatbib() const
71 {
72     return kernel().buffer().params().use_natbib;
73 }
74
75
76 vector<string> const ControlCitation::getCiteStrings(string const & key) const
77 {
78         vector<string> styles;
79
80         vector<biblio::CiteStyle> const cs =
81                 biblio::getCiteStyles(usingNatbib());
82
83         if (kernel().buffer().params().use_numerical_citations)
84                 styles = biblio::getNumericalStrings(key, bibkeysInfo_, cs);
85         else
86                 styles = biblio::getAuthorYearStrings(key, bibkeysInfo_, cs);
87
88         return styles;
89 }