X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2FClipboard.h;h=af617f5aecc4af11ac5889a35a83f6ea7ac947d5;hb=1f10969bb5c5f36017bf5ba8671381b09945cf57;hp=0db784c9268c8e9e19fe7bd87bf0b75ef085dfa0;hpb=0ee7c6e283bb6a592f6f86a2c45d34c60ba4026e;p=lyx.git diff --git a/src/frontends/Clipboard.h b/src/frontends/Clipboard.h index 0db784c926..af617f5aec 100644 --- a/src/frontends/Clipboard.h +++ b/src/frontends/Clipboard.h @@ -14,6 +14,8 @@ #ifndef BASE_CLIPBOARD_H #define BASE_CLIPBOARD_H +#include "Cursor.h" + #include "support/strfwd.h" namespace lyx { @@ -27,6 +29,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 +57,11 @@ 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; + /** * Fill the system clipboard. The format of \p lyx is as written in * .lyx files, the format of \p text is plain text. @@ -47,17 +71,25 @@ 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; + /// 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. /// \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. + /// clipboard are empty, and no supported graphics format is available. virtual bool empty() const = 0; };