* Licence details can be found in the file COPYING.
*
* \author Jean-Marc Lasgouttes
+ * \author Jürgen Spitzmüller
*
* Full author contact details are available in file CREDITS.
*/
/** Quotes.
Used for the various quotes. German, English, French, all either
double or single **/
-class InsetQuotes : public Inset
-{
+class InsetQuotesParams {
public:
///
- enum QuoteLanguage {
+ enum QuoteStyle {
///
EnglishQuotes,
///
///
PolishQuotes,
///
+ SwissQuotes,
+ ///
+ DanishQuotes,
+ ///
+ PlainQuotes,
+ ///
+ BritishQuotes,
+ ///
+ SwedishGQuotes,
+ ///
FrenchQuotes,
///
- DanishQuotes
+ FrenchINQuotes,
+ ///
+ RussianQuotes,
+ ///
+ CJKQuotes,
+ ///
+ CJKAngleQuotes,
+ ///
+ DynamicQuotes
};
///
enum QuoteSide {
///
- LeftQuote,
+ OpeningQuote,
///
- RightQuote
+ ClosingQuote
};
///
- enum QuoteTimes {
+ enum QuoteLevel {
///
- SingleQuotes,
+ SecondaryQuotes,
///
- DoubleQuotes
+ PrimaryQuotes
};
+ /// Returns the unicode character of a given quote
+ char_type getQuoteChar(QuoteStyle const &, QuoteLevel const &,
+ QuoteSide const &, bool const rtl = false) const;
+ /// Returns a map of quotation marks
+ std::map<std::string, docstring> getTypes() const;
+ ///
+ docstring getLaTeXQuote(char_type c, std::string const &,
+ bool const rtl = false) const;
+ ///
+ docstring getHTMLQuote(char_type c) const;
+ ///
+ docstring getXMLQuote(char_type c) const;
+ /// Returns a descriptive label of a style suitable for dialog and menu
+ docstring const getGuiLabel(QuoteStyle const & qs,
+ bool langdef = false);
+ /// Returns a descriptive label of a given char
+ docstring const getShortGuiLabel(docstring const & str);
+ ///
+ int stylescount() const;
+ /// Returns the matching style shortcut char
+ char getStyleChar(QuoteStyle const & style) const;
+ /// Returns the quote style from the shortcut string
+ QuoteStyle getQuoteStyle(std::string const & s,
+ bool const allow_wildcards = false,
+ QuoteStyle fallback = EnglishQuotes);
+ /// Returns the quote sind from the shortcut string
+ QuoteSide getQuoteSide(std::string const & s,
+ bool const allow_wildcards = false,
+ QuoteSide fallback = OpeningQuote);
+ /// Returns the quote level from the shortcut string
+ QuoteLevel getQuoteLevel(std::string const & s,
+ bool const allow_wildcards = false,
+ QuoteLevel fallback = PrimaryQuotes);
+};
+///
+extern InsetQuotesParams quoteparams;
+
+/** Quotes.
+ Used for the various quotes. German, English, French, all either
+ double or single **/
+class InsetQuotes : public Inset
+{
+public:
/** The constructor works like this:
\begin{itemize}
\item fls <- french single quote left
\end{itemize}
*/
explicit InsetQuotes(Buffer * buf, std::string const & str = "eld");
- /// Create the right quote inset after character c
- InsetQuotes(Buffer * buffer, char_type c);
/// Direct access to inner/outer quotation marks
- InsetQuotes(Buffer * buf, char_type c, QuoteTimes t);
+ InsetQuotes(Buffer * buf, char_type c, InsetQuotesParams::QuoteLevel level,
+ std::string const & side = std::string(),
+ std::string const & style = std::string());
///
- docstring name() const;
+ docstring layoutName() const;
///
void metrics(MetricsInfo &, Dimension &) const;
///
///
void read(Lexer & lex);
///
- int latex(otexstream &, OutputParams const &) const;
+ bool getStatus(Cursor &, FuncRequest const &, FuncStatus &) const;
///
- int plaintext(odocstream &, OutputParams const &) const;
+ void latex(otexstream &, OutputParams const &) const;
///
- int docbook(odocstream &, OutputParams const &) const;
+ int plaintext(odocstringstream & ods, OutputParams const & op,
+ size_t max_length = INT_MAX) const;
///
- docstring xhtml(XHTMLStream &, OutputParams const &) const;
+ void docbook(XMLStream &, OutputParams const &) const;
+ ///
+ docstring xhtml(XMLStream &, OutputParams const &) const;
- ///
+ ///
void toString(odocstream &) const;
///
- void forToc(docstring &, size_t maxlen) const;
+ void forOutliner(docstring &, size_t const maxlen, bool const) const;
+
+ /// Update the contextual information of this inset
+ void updateBuffer(ParIterator const &, UpdateType, bool const deleted = false);
///
void validate(LaTeXFeatures &) const;
///
+ std::string contextMenuName() const;
+ ///
InsetCode lyxCode() const { return QUOTE_CODE; }
/// should this inset be handled like a normal character
bool isChar() const { return true; }
+ /// Returns the current quote type
+ std::string getType() const;
+
private:
///
Inset * clone() const { return new InsetQuotes(*this); }
/// Decide whether we need left or right quotation marks
void setSide(char_type c);
///
- void parseString(std::string const &);
+ void parseString(std::string const &,
+ bool const allow_wildcards = false);
///
docstring displayString() const;
+ ///
+ docstring getQuoteEntity(bool isHTML) const;
+ ///
+ InsetQuotesParams::QuoteStyle getStyle(std::string const &);
///
- QuoteLanguage language_;
+ InsetQuotesParams::QuoteStyle style_;
+ ///
+ InsetQuotesParams::QuoteSide side_;
///
- QuoteSide side_;
+ InsetQuotesParams::QuoteLevel level_;
+ ///
+ InsetQuotesParams::QuoteStyle global_style_;
+ /// Current font encoding
+ std::string fontenc_;
+ /// Code of the contextual language
+ std::string context_lang_;
+ /// Is this in a pass-thru context?
+ bool pass_thru_;
+ /// Do we use fontspec?
+ bool fontspec_;
+ /// Do we have an internal font encoding?
+ bool internal_fontenc_;
+ /// Are we writing RTL?
+ bool rtl_;
+ ///
+ friend class InsetQuotesParams;
+
+protected:
+ /// \name Protected functions inherited from Inset class
+ //@{
///
- QuoteTimes times_;
+ void doDispatch(Cursor & cur, FuncRequest & cmd);
+ //@}
};
} // namespace lyx