X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2FWorkArea.h;h=b4d9f9ee199b249ae3f44841fdbebe79faf7b9fd;hb=bc20c9f382a0db9f91ac9cfc32bd70f445a45b0e;hp=0c7a78b9d0b33d53932f821af0eed69744bbacc2;hpb=60b905b88519e0c6a2a41d991521793afbf0e8d5;p=lyx.git diff --git a/src/frontends/WorkArea.h b/src/frontends/WorkArea.h index 0c7a78b9d0..b4d9f9ee19 100644 --- a/src/frontends/WorkArea.h +++ b/src/frontends/WorkArea.h @@ -1,54 +1,60 @@ // -*- C++ -*- /** * \file WorkArea.h - * Copyright 1995-2002 the LyX Team - * Read the file COPYING + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * * \author unknown - * \author John Levon + * \author John Levon + * \author Abdelrazak Younes + * + * Full author contact details are available in file CREDITS. */ -#ifndef WORKAREA_H -#define WORKAREA_H +#ifndef BASE_WORKAREA_H +#define BASE_WORKAREA_H + +#include "frontends/KeyModifier.h" -#include "frontends/mouse_state.h" -#include "frontends/key_state.h" -#include "frontends/LyXKeySym.h" +namespace lyx { -#include -#include -#include -#include +class BufferView; +class KeySymbol; -#include +namespace frontend { -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 + * It works in concert with the BaseScreen class to update the * widget view of a document. */ -class WorkArea { +class WorkArea +{ public: - + /// WorkArea() {} + /// + virtual ~WorkArea(); + + /// + virtual BufferView & bufferView() = 0; + /// + virtual BufferView const & bufferView() const = 0; + + /// return true if has the keyboard input focus. + virtual bool hasFocus() const = 0; + + /// return true if has this WorkArea is visible. + virtual bool isVisible() const = 0; - 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; + virtual int width() const = 0; + /// return the height of the work area in pixels - virtual int workHeight() const = 0; - - /// FIXME: GUII - virtual void redraw() const = 0; - + virtual int height() const = 0; + /** * Update the scrollbar. * @param height the total document height in pixels @@ -56,35 +62,31 @@ public: * @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; + + /// + virtual void scheduleRedraw() = 0; + + /// redraw the screen, without using existing pixmap + virtual void redraw() = 0; + /// + virtual void stopBlinkingCursor() = 0; + virtual void startBlinkingCursor() = 0; + + /// Process Key pressed event. + /// This needs to be public because it is accessed externally by GuiView. + virtual void processKeySym(KeySymbol const & key, KeyModifier mod) = 0; + + /// close this work area. + /// Slot for Buffer::closing signal. + virtual void close() = 0; + /// This function is called when the buffer readonly status change. + virtual void setReadOnly(bool) = 0; + + /// Update window titles of all users. + virtual void updateWindowTitle() = 0; }; - -#endif // WORKAREA_H + +} // namespace frontend +} // namespace lyx + +#endif // BASE_WORKAREA_H