#include "BufferView.h"
#include "cursor.h"
-#include "errorlist.h"
+#include "metricsinfo.h"
-#include "insets/inset.h"
-
-#include "frontends/key_state.h"
#include "frontends/LyXKeySym.h"
-#include "frontends/Timeout.h"
#include "support/types.h"
-#include <boost/scoped_ptr.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/signals/trackable.hpp>
-
class Change;
-class LyXKeySym;
class LyXView;
class FuncRequest;
class FuncStatus;
-class ViewMetricsInfo;
namespace lyx {
namespace frontend {
class Gui;
-class WorkArea;
-class Clipboard;
-class Painter;
-class GuiCursor;
}
}
///
-class BufferView::Pimpl : public boost::signals::trackable {
+class BufferView::Pimpl {
public:
///
- Pimpl(BufferView & bv, LyXView * owner, int width, int height);
- ///
- lyx::frontend::Painter & painter() const;
+ Pimpl(BufferView & bv, LyXView * owner);
///
void setBuffer(Buffer * buf);
+ /// return the first layout of the Buffer.
+ std::string firstLayout();
///
void resizeCurrentBuffer();
//
//
bool multiParSel();
///
- void update(Update::flags flags = Update::Force);
- ///
- void newFile(std::string const &, std::string const &, bool);
- ///
+ bool update(Update::flags flags = Update::Force);
+ /// load a buffer into the view
bool loadLyXFile(std::string const &, bool);
///
- void workAreaResize();
+ void workAreaResize(int width, int height);
///
void updateScrollbar();
///
+ ScrollbarParameters const & scrollbarParameters() const;
+ ///
void scrollDocView(int value);
+ ///
+ void setCursorFromScrollbar();
/// Wheel mouse scroll, move by multiples of text->defaultRowHeight().
void scroll(int lines);
///
- void workAreaKeyPress(LyXKeySymPtr key, key_modifier::state state);
- ///
void selectionRequested();
///
void selectionLost();
///
- void cursorToggle();
- ///
bool available() const;
/// get the change at the cursor position
Change const getCurrentChange();
FuncStatus getStatus(FuncRequest const & cmd);
/// a function should be executed
bool dispatch(FuncRequest const & ev);
- /// Flag: do a full redraw of inside text of inset
- bool repaintAll() { return refresh_inside_; }
- ///
- void repaintAll(bool r) {refresh_inside_ = r; }
- /// the frontend
- lyx::frontend::Gui & gui() const;
- /// our workarea
- lyx::frontend::WorkArea & workarea() const;
- /// the clipboard
- lyx::frontend::Clipboard & clipboard() const;
+ /// Width and height of the BufferView in Pixels
+ /**
+ This is set externally by the workAreaResize method.
+ */
+ int width() const;
+ /// Height of the BufferView in Pixels
+ /**
+ This is set externally by the workAreaResize method.
+ */
+ int height() const;
+
+ ///
+ ViewMetricsInfo const & viewMetricsInfo();
+ ///
+ void updateMetrics(bool singlepar = false);
private:
- /// An error list (replaces the error insets)
- ErrorList errorlist_;
- /// add an error to the list
- void addError(ErrorItem const &);
- /// buffer errors signal connection
- boost::signals::connection errorConnection_;
- /// buffer messages signal connection
- boost::signals::connection messageConnection_;
- /// buffer busy status signal connection
- boost::signals::connection busyConnection_;
- /// buffer title changed signal connection
- boost::signals::connection titleConnection_;
- /// buffer reset timers signal connection
- boost::signals::connection timerConnection_;
- /// buffer readonly status changed signal connection
- boost::signals::connection readonlyConnection_;
- /// buffer closing signal connection
- boost::signals::connection closingConnection_;
- /// connect to signals in the given buffer
- void connectBuffer(Buffer & buf);
- /// disconnect from signals in the given buffer
- void disconnectBuffer();
+ ///
+ int width_;
+ ///
+ int height_;
+ ///
+ ScrollbarParameters scrollbarParameters_;
+
/// track changes for the document
void trackChanges();
- /// notify readonly status
- void showReadonly(bool);
+ ///
+ ViewMetricsInfo metrics_info_;
///
friend class BufferView;
/// Estimated average par height for scrollbar
int wh_;
///
- Timeout cursor_timeout;
- ///
- void stuffClipboard(std::string const &) const;
- ///
- bool using_xterm_cursor;
- ///
class Position {
public:
/// Filename
///
void menuInsertLyXFile(std::string const & filen);
- lyx::frontend::WorkArea * workArea_;
- int workAreaId_;
-
/// this is used to handle XSelection events in the right manner
struct {
CursorSlice cursor;
lyx::pit_type anchor_ref_;
///
int offset_ref_;
- ///
- ViewMetricsInfo metrics(bool singlepar = false);
- /// Working variable indicating a full screen refresh
- mutable bool refresh_inside_;
};
#endif // BUFFERVIEW_PIMPL_H