]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetQuotes.h
Merge branch 'master' into biblatex2
[lyx.git] / src / insets / InsetQuotes.h
index 9bb217952c42215f2a94fbe6a7bdaafae41f6b57..f9dd5aeafa789cd98cdbc77db267c0bb5c13b39e 100644 (file)
@@ -5,6 +5,7 @@
  * 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.
  */
@@ -22,11 +23,10 @@ namespace lyx {
 /** 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,
                ///
@@ -36,25 +36,83 @@ public:
                ///
                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 &) const;
+       /// Returns a map of quotation marks
+       std::map<std::string, docstring> getTypes() const;
+       ///
+       docstring getLaTeXQuote(char_type c, std::string const &) const;
+       ///
+       docstring getHTMLQuote(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 string);
+       ///
+       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
@@ -64,9 +122,9 @@ public:
          */
        explicit InsetQuotes(Buffer * buf, std::string const & str = "eld");
        /// Direct access to inner/outer quotation marks
-       InsetQuotes(Buffer * buf, char_type c, QuoteTimes t,
-                   std::string const & s = std::string(),
-                   std::string const & l = std::string());
+       InsetQuotes(Buffer * buf, char_type c, InsetQuotesParams::QuoteLevel level,
+                   std::string const & side = std::string(),
+                   std::string const & style = std::string());
        ///
        docstring layoutName() const;
        ///
@@ -105,11 +163,9 @@ public:
        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;
-       /// Returns a map of quotation marks
-       std::map<std::string, docstring> getTypes() const;
 
 private:
        ///
@@ -125,20 +181,26 @@ private:
        ///
        docstring getQuoteEntity() const;
        ///
-       QuoteLanguage getLanguage(std::string const &);
+       InsetQuotesParams::QuoteStyle getStyle(std::string const &);
 
        ///
-       QuoteLanguage language_;
+       InsetQuotesParams::QuoteStyle style_;
+       ///
+       InsetQuotesParams::QuoteSide side_;
        ///
-       QuoteSide side_;
+       InsetQuotesParams::QuoteLevel level_;
        ///
-       QuoteTimes times_;
+       InsetQuotesParams::QuoteStyle global_style_;
        ///
        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_;
+       ///
+       friend class InsetQuotesParams;
 
 protected:
        /// \name Protected functions inherited from Inset class