]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/Clipboard.h
Honor pending spaces in InsetMathChar::write
[lyx.git] / src / frontends / Clipboard.h
index deddf5b0c98e72e914528b7907a94652af86d332..5e16a26bbf8d31179d9b2a4d4a2224961ea80181 100644 (file)
 #ifndef BASE_CLIPBOARD_H
 #define BASE_CLIPBOARD_H
 
-#include "support/docstring.h"
+#include "support/strfwd.h"
 
 namespace lyx {
+
+class Cursor;
+
+namespace support { class FileName; }
+
 namespace frontend {
 
 /**
@@ -27,6 +32,25 @@ class Clipboard
 public:
        virtual ~Clipboard() {}
 
+       enum GraphicsType {
+               PdfGraphicsType,
+               PngGraphicsType,
+               JpegGraphicsType,
+               LinkBackGraphicsType,
+               EmfGraphicsType,
+               WmfGraphicsType,
+               AnyGraphicsType
+       };
+
+       enum TextType {
+               AnyTextType,
+               LyXOrPlainTextType,
+               PlainTextType,
+               HtmlTextType,
+               LaTeXTextType,
+               LyXTextType,
+       };
+
        /**
         * Get the system clipboard contents. The format is as written in
         * .lyx files (may even be an older version than ours if it comes
@@ -36,8 +60,13 @@ public:
         * clipboard.
         */
        virtual std::string const getAsLyX() const = 0;
-       /// Get the contents of the window system clipboard in plain text format.
-       virtual docstring const getAsText() const = 0;
+       /// Get the contents of the window system clipboard in any text format except LyxTextType.
+       virtual docstring const getAsText(TextType type) const = 0;
+       /// Get the contents of the window system clipboard as graphics file.
+       virtual support::FileName getAsGraphics(Cursor const & cur, GraphicsType type) const = 0;
+
+       virtual docstring const & getFindBuffer() { return find_buffer_; }
+
        /**
         * Fill the system clipboard. The format of \p lyx is as written in
         * .lyx files, the format of \p text is plain text.
@@ -47,20 +76,36 @@ public:
         * This should be called when the user requests to cut or copy to
         * the clipboard.
         */
-       virtual void put(std::string const & lyx, docstring const & text) = 0;
+       virtual void put(std::string const & lyx, docstring const & html, docstring const & text) = 0;
+
+       /// Put a general string on the system clipboard (not LyX text)
+       virtual void put(std::string const & text) const = 0;
 
-       /// Does the clipboard contain LyX contents?
-       virtual bool hasLyXContents() const = 0;
+       virtual void setFindBuffer(docstring const & text) { find_buffer_ = text;}
+
+       /// Does the clipboard contain text contents?
+       virtual bool hasTextContents(TextType type = AnyTextType) const = 0;
+       /// Does the clipboard contain graphics contents of a certain type?
+       virtual bool hasGraphicsContents(GraphicsType type = AnyGraphicsType) const = 0;
        /// state of clipboard.
-       /// \retval true if the system clipboard has been set within LyX.
+       /// \returns true if the system clipboard has been set within LyX
+       /// (document contents, dialogs count as external here).
        virtual bool isInternal() const = 0;
+       /// \returns true if the OS has the concept of clipboard ownership,
+       /// which is crucial for our concept of internal clipboard.
+       virtual bool hasInternal() const = 0;
        /// Is the clipboard empty?
+       /// \returns true if both the LyX and the plaintext versions of the
+       /// clipboard are empty, and no supported graphics format is available.
        virtual bool empty() const = 0;
+
+private:
+       docstring find_buffer_;
 };
 
 } // namespace frontend
 
-/// Implementation is in Application.C
+/// Implementation is in Application.cpp
 extern frontend::Clipboard & theClipboard();
 
 } // namespace lyx