X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2FWorkArea.h;h=d6912fc7fad982d59ba7ec90675ff970eee0a4e8;hb=f66146973407ecb44ca93bae074ee916d5ed2f04;hp=c990863234dd52479e3c7a4c93c3d2d1d2d5cbac;hpb=1e394731004491d04abe436112b5a89521bbd19a;p=lyx.git diff --git a/src/frontends/WorkArea.h b/src/frontends/WorkArea.h index c990863234..d6912fc7fa 100644 --- a/src/frontends/WorkArea.h +++ b/src/frontends/WorkArea.h @@ -1,169 +1,48 @@ // -*- C++ -*- -/* This file is part of - * ====================================================== +/** + * \file WorkArea.h + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * - * LyX, The Document Processor + * \author unknown + * \author John Levon + * \author Abdelrazak Younes * - * Copyright 1995 Matthias Ettrich - * Copyright 1995-2001 The LyX Team. - * - * ======================================================*/ - -#ifndef WORKAREA_H -#define WORKAREA_H - -#if 1 -#include "frontends/xforms/XWorkArea.h" -#else - -#ifdef __GNUG__ -#pragma interface -#endif + * Full author contact details are available in file CREDITS. + */ -#include "frontends/Painter.h" +#ifndef BASE_WORKAREA_H +#define BASE_WORKAREA_H -#include FORMS_H_LOCATION +#include "frontends/KeyModifier.h" -#include -#include -#include -#include +namespace lyx { -#include +namespace frontend { - -/// -class WorkArea { +/** + * The work area class represents the widget that provides the view + * onto a document. It owns the BufferView, and is responsible for + * handing events back to its BufferView. + */ +class WorkArea +{ public: /// - WorkArea(int xpos, int ypos, int width, int height); - /// - ~WorkArea(); - /// - Painter & getPainter() { return painter_; } - /// - int workWidth() const { return work_area->w; } - /// - unsigned int width() const { return work_area->w + scrollbar->w; } - //unsigned int width() const { return backgroundbox->w + 15; } - /// - unsigned int height() const { return work_area->h; } - //unsigned int height() const { return backgroundbox->h; } - /// - int xpos() const { return work_area->x; } - //int xpos() const { return backgroundbox->x; } - /// - int ypos() const { return work_area->y; } - //int ypos() const { return backgroundbox->y; } - /// - void resize(int xpos, int ypos, int width, int height); - /// - void redraw() const { - fl_redraw_object(work_area); - fl_redraw_object(scrollbar); - } - /// - void setFocus() const; - /// - Window getWin() const { return work_area->form->window; } - /// - bool hasFocus() const { return work_area->focus; } - /// - bool active() const { return work_area->active; } - /// - bool belowMouse() const; - /// - bool visible() const { return work_area->form->visible; } - /// - void greyOut() const; - /// - void setScrollbar(double pos, double length_fraction) const; - /// - void setScrollbarValue(double y) const { - fl_set_scrollbar_value(scrollbar, y); - } - /// - void setScrollbarBounds(double, double) const; - /// - void setScrollbarIncrements(double inc) const; - /// - double getScrollbarValue() const { - return fl_get_scrollbar_value(scrollbar); - } - /// - std::pair const getScrollbarBounds() const { - std::pair p; - fl_get_scrollbar_bounds(scrollbar, &p.first, &p.second); - return p; - } - /// - Pixmap getPixmap() const { return workareapixmap; } - /// xforms callback - static int work_area_handler(FL_OBJECT *, int event, - FL_Coord, FL_Coord, - int /*key*/, void * xev); - /// xforms callback - static void scroll_cb(FL_OBJECT *, long); - /// a selection exists - void haveSelection(bool) const; - /// - string const getClipboard() const; - /// - void putClipboard(string const &) const; - // Signals - /// - boost::signal0 workAreaExpose; - /// - boost::signal1 scrollCB; - /// - boost::signal2 workAreaKeyPress; - /// - boost::signal3 workAreaButtonPress; - /// - boost::signal3 workAreaButtonRelease; - /// - boost::signal3 workAreaMotionNotify; - /// - boost::signal0 workAreaFocus; - /// - boost::signal0 workAreaUnfocus; - /// - boost::signal0 workAreaEnter; - /// - boost::signal0 workAreaLeave; - /// - boost::signal3 workAreaDoubleClick; - /// - 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 ~WorkArea() {} - /// handles SelectionRequest X Event, to fill the clipboard - int event_cb(XEvent * xev); -private: - /// - void createPixmap(int, int); + /// Update metrics if needed and schedule a paint event + virtual void scheduleRedraw(bool update_metrics) = 0; - /// - FL_OBJECT * backgroundbox; - /// - FL_OBJECT * work_area; - /// - FL_OBJECT * scrollbar; - /// - mutable FL_OBJECT * splash_; - /// - mutable FL_OBJECT * splash_text_; - /// The pixmap overlay on the workarea - Pixmap workareapixmap; - /// - Painter painter_; - /// if we call redraw with true needed for locking-insets - bool screen_cleared; + /// close this work area. + /// Slot for Buffer::closing signal. + virtual void close() = 0; + + /// Update window titles of all users. + virtual void updateWindowTitle() = 0; }; -#endif +} // namespace frontend +} // namespace lyx -#endif +#endif // BASE_WORKAREA_H