]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetQuotes.h
Do not check again and again for non existing files
[lyx.git] / src / insets / InsetQuotes.h
index fec7fbca2349c600c1bf1360c8e5b739646a01d3..25b4a8b463c5c19dd375c109b0319a7fb362eacf 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,84 @@ 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 &, 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;
+       /// 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,7 +123,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);
+       InsetQuotes(Buffer * buf, char_type c, InsetQuotesParams::QuoteLevel level,
+                   std::string const & side = std::string(),
+                   std::string const & style = std::string());
        ///
        docstring layoutName() const;
        ///
@@ -76,6 +137,8 @@ public:
        ///
        void read(Lexer & lex);
        ///
+       bool getStatus(Cursor &, FuncRequest const &, FuncStatus &) const;
+       ///
        void latex(otexstream &, OutputParams const &) const;
        ///
        int plaintext(odocstringstream & ods, OutputParams const & op,
@@ -85,18 +148,26 @@ public:
        ///
        docstring xhtml(XHTMLStream &, OutputParams const &) const;
 
-       /// 
+       ///
        void toString(odocstream &) const;
        ///
        void forOutliner(docstring &, size_t const maxlen, bool const) const;
 
+       /// Update the contextual information of this inset
+       void updateBuffer(ParIterator const &, UpdateType);
+
        ///
        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); }
@@ -104,18 +175,44 @@ private:
        /// 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() 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