]> git.lyx.org Git - lyx.git/blob - src/Citation.h
Update fr.po
[lyx.git] / src / Citation.h
1 // -*- C++ -*-
2 /**
3  * \file Citation.h
4  * This file is part of LyX, the document processor.
5  * Licence details can be found in the file COPYING.
6  *
7  * \author Herbert Voß
8  *
9  * Full author contact details are available in file CREDITS.
10  */
11
12 #ifndef CITATION_H
13 #define CITATION_H
14
15 #include "support/docstring.h"
16 #include <map>
17 #include <string>
18
19 namespace lyx {
20
21 class Buffer;
22
23
24 enum CiteEngineType {
25         ENGINE_TYPE_AUTHORYEAR = 1,
26         ENGINE_TYPE_NUMERICAL = 2,
27         ENGINE_TYPE_DEFAULT = 3,
28 };
29
30
31 class CitationStyle
32 {
33 public:
34         ///
35         CitationStyle() : name("cite"), cmd("cite"), forceUpperCase(false),
36                 hasStarredVersion(false), hasQualifiedList(false),
37                 textAfter(false), textBefore(false) {}
38
39         /// the LyX name
40         std::string name;
41         /// the LaTeX command (might differ from the LyX name)
42         std::string cmd;
43         /// Optional alternative description what the starred version does (for the GUI)
44         std::string stardesc;
45         /// Optional tooltip for the starred version
46         std::string startooltip;
47         /// upper casing author prefixes (van -> Van)
48         bool forceUpperCase;
49         /// starred version (full author list by default)
50         bool hasStarredVersion;
51         /// allows for qualified citation lists (a Biblatex feature)
52         bool hasQualifiedList;
53         /// supports text after the citation
54         bool textAfter;
55         /// supports text before the citation
56         bool textBefore;
57 };
58
59
60 /**
61  * Class for storing information about a given citation item in a given context.
62  * This is used in the label and menu string generation process.
63  */
64 class CiteItem
65 {
66 public:
67         /// The context this citation is displayed
68         enum CiteContext{
69                 Everywhere,
70                 Dialog,
71                 Export
72         };
73         ///
74         CiteItem() : forceUpperCase(false), Starred(false), isQualified(false),
75                 context(CiteItem::Everywhere), textAfter(docstring()),
76                 textBefore(docstring()), max_size(128), max_key_size(128),
77                 richtext(false) {}
78         /// requests upper casing author prefixes (van -> Van)
79         bool forceUpperCase;
80         /// is starred version (full author list by default)
81         bool Starred;
82         /// is a real qualified list
83         bool isQualified;
84         /// where this to be displayed?
85         CiteItem::CiteContext context;
86         /// text after the citation
87         docstring textAfter;
88         /// text before the citation
89         docstring textBefore;
90         /// Qualified lists's pre texts
91         std::map<docstring, docstring> pretexts;
92         ///
93         std::map<docstring, docstring> getPretexts() const { return pretexts; }
94         /// Qualified lists's post texts
95         std::map<docstring, docstring> posttexts;
96         ///
97         std::map<docstring, docstring> getPosttexts() const { return posttexts; }
98         /// the maximum display size as a label
99         size_t max_size;
100         /// the maximum size of the processed keys
101         /// (limited for performance reasons)
102         size_t max_key_size;
103         /// output richtext information?
104         bool richtext;
105 };
106
107 } // namespace lyx
108
109 #endif