#ifndef BUFFER_VIEW_H
#define BUFFER_VIEW_H
+#include "cursor.h"
#include "metricsinfo.h"
#include "frontends/LyXKeySym.h"
#include "support/types.h"
#include <boost/utility.hpp>
+#include <boost/signal.hpp>
#include <string>
void setBuffer(Buffer * b);
/// return the buffer being viewed
Buffer * buffer() const;
- /// return the first layout of the Buffer.
- std::string firstLayout();
/// return the owning main view
LyXView * owner() const;
/// return the Scrollbar Parameters
ScrollbarParameters const & scrollbarParameters() const;
- /// FIXME
- bool available() const;
-
/// Save the current position as bookmark i
void savePosition(unsigned int i);
/// Restore the position from bookmark i
bool dispatch(FuncRequest const & argument);
///
- void selectionRequested();
+ lyx::docstring const requestSelection();
///
- void selectionLost();
+ void clearSelection();
///
void workAreaResize(int width, int height);
/// a function should be executed from the workarea
bool workAreaDispatch(FuncRequest const & ev);
- /// clear the X selection
- void unsetXSel();
-
/// access to offset
int offset_ref() const;
/// access to anchor
LCursor & cursor();
/// access to full cursor
LCursor const & cursor() const;
- ///
- LyXText * text() const;
/// sets cursor and open all relevant collapsable insets.
void setCursor(DocIterator const &);
/// sets cursor; this is used when handling LFUN_MOUSE_PRESS.
///
void updateMetrics(bool singlepar = false);
+ /// This signal is emitted when some message shows up.
+ boost::signal<void(lyx::docstring)> message;
+
private:
///
- class Pimpl;
+ bool multiParSel();
+ ///
+ int width_;
+ ///
+ int height_;
+ ///
+ ScrollbarParameters scrollbarParameters_;
+
+ /// track changes for the document
+ void trackChanges();
+
+ ///
+ ViewMetricsInfo metrics_info_;
+
+ ///
+ LyXView * owner_;
+ ///
+ Buffer * buffer_;
+
+ /// Estimated average par height for scrollbar
+ int wh_;
+ ///
+ class Position {
+ public:
+ /// Filename
+ std::string filename;
+ /// Cursor paragraph Id
+ int par_id;
+ /// Cursor position
+ lyx::pos_type par_pos;
+ ///
+ Position() : par_id(0), par_pos(0) {}
+ ///
+ Position(std::string const & f, int id, lyx::pos_type pos)
+ : filename(f), par_id(id), par_pos(pos) {}
+ };
+ ///
+ std::vector<Position> saved_positions;
+ ///
+ void menuInsertLyXFile(std::string const & filen);
+
+ /// this is used to handle XSelection events in the right manner
+ struct {
+ CursorSlice cursor;
+ CursorSlice anchor;
+ bool set;
+ } xsel_cache_;
+ ///
+ LCursor cursor_;
+ ///
+ bool multiparsel_cache_;
///
- friend class BufferView::Pimpl;
+ lyx::pit_type anchor_ref_;
///
- Pimpl * pimpl_;
+ int offset_ref_;
};
#endif // BUFFERVIEW_H