X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2FWorkArea.h;h=b4d9f9ee199b249ae3f44841fdbebe79faf7b9fd;hb=bc20c9f382a0db9f91ac9cfc32bd70f445a45b0e;hp=7c399a18751fcb9b9c3539264a7d4c1dd8c4a58f;hpb=2805c297349d82c62f3b0d9c2dcc45611e748f53;p=lyx.git diff --git a/src/frontends/WorkArea.h b/src/frontends/WorkArea.h index 7c399a1875..b4d9f9ee19 100644 --- a/src/frontends/WorkArea.h +++ b/src/frontends/WorkArea.h @@ -14,33 +14,15 @@ #ifndef BASE_WORKAREA_H #define BASE_WORKAREA_H -#include "frontends/key_state.h" -#include "frontends/LyXKeySym.h" -#include "frontends/Timeout.h" +#include "frontends/KeyModifier.h" -#include "support/docstring.h" - -#include +namespace lyx { class BufferView; -class FuncRequest; -class LyXView; +class KeySymbol; -namespace lyx { namespace frontend { -class Painter; - -/// types of cursor in work area -enum CursorShape { - /// normal I-beam - BAR_SHAPE, - /// L-shape for locked insets of a different language - L_SHAPE, - /// reverse L-shape for RTL text - REVERSED_L_SHAPE -}; - /** * The work area class represents the widget that provides the * view onto a document. It is owned by the BufferView, and @@ -48,22 +30,24 @@ enum CursorShape { * It works in concert with the BaseScreen class to update the * widget view of a document. */ -class WorkArea : public boost::signals::trackable { +class WorkArea +{ public: - WorkArea(LyXView & lyx_view); - - virtual ~WorkArea() {} - - void setBufferView(BufferView * buffer_view); + /// + WorkArea() {} + /// + virtual ~WorkArea(); /// - BufferView & bufferView(); + virtual BufferView & bufferView() = 0; /// - BufferView const & bufferView() const; + virtual BufferView const & bufferView() const = 0; + /// return true if has the keyboard input focus. + virtual bool hasFocus() const = 0; - /// return the painter object for this work area - virtual Painter & getPainter() = 0; + /// return true if has this WorkArea is visible. + virtual bool isVisible() const = 0; /// return the width of the work area in pixels virtual int width() const = 0; @@ -79,70 +63,27 @@ public: */ virtual void setScrollbarParams(int height, int pos, int line_height) = 0; - /// redraw the screen, without using existing pixmap - virtual void redraw(); - - /// grey out (no buffer) - void greyOut(); - - /// FIXME: should be protected, public until the qt3 and gtk frontends are - /// cleaned up. - void processKeySym(LyXKeySymPtr key, key_modifier::state state); - -protected: - /// cause the display of the given area of the work area - virtual void expose(int x, int y, int w, int h) = 0; - -public: - /// FIXME: This is public because of qt3 and gtk, should be protected - void dispatch(FuncRequest const & cmd0); - - /// FIXME: This is public because of qt3 and gtk, should be protected - void resizeBufferView(); - - /// FIXME: This is public because of qt3 and gtk, should be protected - void scrollBufferView(int position); - -protected: - /// hide the visible cursor, if it is visible - void hideCursor(); - - /// show the cursor if it is not visible - void showCursor(); - - /// toggle the cursor's visibility - void toggleCursor(); - - /// hide the cursor - virtual void removeCursor() = 0; - - /// paint the cursor and store the background - virtual void showCursor(int x, int y, int h, CursorShape shape) = 0; - /// - BufferView * buffer_view_; + virtual void scheduleRedraw() = 0; + /// redraw the screen, without using existing pixmap + virtual void redraw() = 0; /// - LyXView & lyx_view_; - -private: - /// - void updateScrollbar(); - /// - void checkAndGreyOut(); - /// - void displayMessage(lyx::docstring const &); - /// buffer messages signal connection - boost::signals::connection message_connection_; + virtual void stopBlinkingCursor() = 0; + virtual void startBlinkingCursor() = 0; - /// - bool greyed_out_; + /// 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; - /// is the cursor currently displayed - bool cursor_visible_; + /// 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; - /// - Timeout cursor_timeout_; + /// Update window titles of all users. + virtual void updateWindowTitle() = 0; }; } // namespace frontend