// -*- C++ -*- /** * \file WorkArea.h * Copyright 1995-2002 the LyX Team * Read the file COPYING * * \author unknown * \author John Levon */ #ifndef WORKAREA_H #define WORKAREA_H #include "frontends/mouse_state.h" #include "frontends/key_state.h" #include "frontends/LyXKeySym.h" #include #include #include #include #include class Painter; /** * The work area class represents the widget that provides the * view onto a document. It is owned by the BufferView, and * is responsible for handing events back to its owning BufferView. * It works in concert with the LyXScreen class to update the * widget view of a document. */ class WorkArea { public: WorkArea() {} virtual ~WorkArea() {} /// return the painter object for this work area virtual Painter & getPainter() = 0; /// return the width of the work area in pixels virtual int workWidth() const = 0; /// return the height of the work area in pixels virtual int workHeight() const = 0; /** * Update the scrollbar. * @param height the total document height in pixels * @param pos the current position in the document, in pixels * @param line_height the line-scroll amount, in pixels */ virtual void setScrollbarParams(int height, int pos, int line_height) = 0; // FIXME: this is an odd place to have it, but xforms needs it here ... /// a selection exists virtual void haveSelection(bool) const = 0; /// get the X clipboard contents virtual string const getClipboard() const = 0; /// fill the clipboard virtual void putClipboard(string const &) const = 0; /// work area dimensions have changed boost::signal0 workAreaResize; /// the scrollbar has changed boost::signal1 scrollDocView; /// a key combination has been pressed boost::signal2 workAreaKeyPress; /// a mouse button has been pressed boost::signal3 workAreaButtonPress; /// a mouse button has been released boost::signal3 workAreaButtonRelease; /// the mouse has moved boost::signal3 workAreaMotionNotify; /// a mouse button has been double-clicked boost::signal3 workAreaDoubleClick; /// a mouse button has been triple-clicked boost::signal3 workAreaTripleClick; /// emitted when an X client has requested our selection boost::signal0 selectionRequested; /// emitted when another X client has stolen our selection boost::signal0 selectionLost; }; #endif // WORKAREA_H