lyx_mirror/src/frontends/qt4/GuiClipboard.h
Georg Baum 14fa2c7162 Remove using directives from headers
The only exceptions are:

- The purpose of the header is to drag in the used symbol, e.g. unique_ptr.h
- The used symbol is inside a class or a namespace other than lyx

The reason for this is that global 'using' statements effectively forbid to
use the used symbols in any other namespace in the whole program, since simply
adding or removing an #include of the corresponding header subtly changes the
name lookup. The namespace lyx is sort of global, so it should not have these
statements either.
2016-06-26 18:22:59 +02:00

109 lines
2.6 KiB
C++

// -*- C++ -*-
/**
* \file GuiClipboard.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author unknown
* \author John Levon
* \author Abdelrazak Younes
*
* Full author contact details are available in file CREDITS.
*/
#ifndef GUICLIPBOARD_H
#define GUICLIPBOARD_H
#include "frontends/Clipboard.h"
#include <QMimeData>
#include <QObject>
#include <QStringList>
#include <boost/cstdint.hpp>
namespace lyx {
namespace frontend {
class QMacPasteboardMimeGraphics;
/**
* \class CacheMimeData
*
* This class is used in order to query the clipboard only once on
* startup and once each time the contents of the clipboard changes.
*/
class CacheMimeData : public QMimeData
{
Q_OBJECT
public:
// LyX calls "on_dataChanged" on startup, so it is not necessary to
// query the clipboard here.
CacheMimeData()
{}
/// reads the clipboard and updates the cached_formats_
void update();
/// returns the cached list of formats supported by the object
virtual QStringList formats() const { return cached_formats_; }
/// reads the clipboard and returns the data
QByteArray data(QString const & mimeType) const;
private:
/// the cached list of formats supported by the object
QStringList cached_formats_;
};
/**
* The Qt4 version of the Clipboard.
*/
class GuiClipboard: public QObject, public Clipboard
{
Q_OBJECT
public:
GuiClipboard();
/** Clipboard overloaded methods
*/
//@{
std::string const getAsLyX() const;
support::FileName getAsGraphics(Cursor const & cur, GraphicsType type) const;
docstring const getAsText(TextType type) const;
void put(std::string const & text) const;
void put(std::string const & lyx, docstring const & html, docstring const & text);
bool hasGraphicsContents(GraphicsType type = AnyGraphicsType) const;
bool hasTextContents(TextType typetype = AnyTextType) const;
bool isInternal() const;
bool hasInternal() const;
bool empty() const;
//@}
support::FileName getPastedGraphicsFileName(Cursor const & cur,
Clipboard::GraphicsType & type) const;
private Q_SLOTS:
void on_dataChanged();
void update();
private:
bool plaintext_clipboard_empty_;
bool has_text_contents_;
bool has_graphics_contents_;
/// the cached mime data used to describe the information
/// that can be stored in the clipboard
CacheMimeData cache_;
/// checksum for internal clipboard data (used on Mac)
boost::uint32_t checksum;
};
QString const lyxMimeType();
QString const pdfMimeType();
QString const emfMimeType();
QString const wmfMimeType();
} // namespace frontend
} // namespace lyx
#endif // GUICLIPBOARD_H