#include "lyxfont.h"
#include "layout.h"
#include "lyxlayout_ptr_fwd.h"
-#include "ParagraphList_fwd.h"
+#include "ParagraphList.h"
#include <iosfwd>
class BufferView;
class CursorSlice;
class Dimension;
+class ErrorList;
class InsetBase;
class InsetBase_code;
class FuncRequest;
///
typedef lyx::pos_type pos_type;
///
+ typedef lyx::char_type char_type;
+ ///
typedef lyx::pit_type pit_type;
/// constructor
///
LyXFont getFont(Paragraph const & par, pos_type pos) const;
///
+ void applyOuterFont(LyXFont &) const;
+ ///
LyXFont getLayoutFont(pit_type pit) const;
///
LyXFont getLabelFont(Paragraph const & par) const;
void breakParagraph(LCursor & cur, bool keep_layout = false);
/// set layout over selection
- pit_type setLayout(pit_type start, pit_type end,
+ void setLayout(pit_type start, pit_type end,
std::string const & layout);
///
void setLayout(LCursor & cur, std::string const & layout);
void setFont(LCursor & cur, LyXFont const &, bool toggleall = false);
/// rebreaks the given par
- void redoParagraph(pit_type pit);
+ bool redoParagraph(pit_type pit);
/// returns pos in given par at given x coord
pos_type x2pos(pit_type pit, int row, int x) const;
void toggleFree(LCursor & cur, LyXFont const &, bool toggleall = false);
///
- std::string getStringToIndex(LCursor & cur);
+ std::string getStringToIndex(LCursor const & cur);
/// insert a character at cursor position
- void insertChar(LCursor & cur, char c);
+ void insertChar(LCursor & cur, lyx::char_type c);
/// insert an inset at cursor position
void insertInset(LCursor & cur, InsetBase * inset);
FuncStatus & status) const;
/// access to out BufferView. This should go...
-// BufferView * bv();
- /// access to out BufferView. This should go...
BufferView * bv() const;
- /// access to individual paragraphs
- Paragraph & getPar(pit_type par) const;
+ /// read-only access to individual paragraph
+ Paragraph const & getPar(pit_type pit) const { return pars_[pit]; }
+ /// read-write access to individual paragraph
+ Paragraph & getPar(pit_type pit) { return pars_[pit]; }
// Returns the current font and depth as a message.
- std::string LyXText::currentState(LCursor & cur);
+ std::string currentState(LCursor & cur);
/** returns row near the specified
* y-coordinate in given paragraph (relative to the screen).
bool setCursor(LCursor & cur, pit_type par, pos_type pos,
bool setfont = true, bool boundary = false);
///
- void setCursor(CursorSlice &, pit_type par,
- pos_type pos, bool boundary = false);
+ void setCursor(CursorSlice &, pit_type par, pos_type pos);
///
void setCursorIntern(LCursor & cur, pit_type par,
- pos_type pos, bool setfont = true, bool boundary = false);
+ pos_type pos, bool setfont = true, bool boundary = false);
///
void setCurrentFont(LCursor & cur);
void recUndo(pit_type first, pit_type last) const;
///
void recUndo(pit_type first) const;
+ /// returns true if par was empty and was removed
+ bool setCursorFromCoordinates(LCursor & cur, int x, int y);
///
- void setCursorFromCoordinates(LCursor & cur, int x, int y);
- ///
- InsetBase * editXY(LCursor & cur, int x, int y) const;
+ InsetBase * editXY(LCursor & cur, int x, int y);
/// Move cursor one line up.
/**
* Returns true if an update is needed after the move.
///
bool cursorDownParagraph(LCursor & cur);
///
- void cursorHome(LCursor & cur);
+ bool cursorHome(LCursor & cur);
///
- void cursorEnd(LCursor & cur);
+ bool cursorEnd(LCursor & cur);
///
bool cursorPrevious(LCursor & cur);
///
bool cursorNext(LCursor & cur);
///
- void cursorTop(LCursor & cur);
- ///
- void cursorBottom(LCursor & cur);
+ bool cursorTop(LCursor & cur);
///
- void Delete(LCursor & cur);
- ///
- void backspace(LCursor & cur);
+ bool cursorBottom(LCursor & cur);
+ /// Erase character at cursor. Honour change tracking
+ bool erase(LCursor & cur);
+ /** At cursor position 0, merge paragraph with the one before it.
+ * Ignore CT (this is used in \c acceptChange, \c rejectChange for
+ * physical deletion of paragraph break)
+ */
+ bool backspacePos0(LCursor & cur);
+ /// Delete character before cursor. Honour CT
+ bool backspace(LCursor & cur);
///
bool selectWordWhenUnderCursor(LCursor & cur, lyx::word_location);
///
/// current text heigth
int height() const;
- /// updates all counters
- void updateCounters();
/// Returns an inset if inset was hit, or 0 if not.
InsetBase * checkInsetHit(int x, int y) const;
int singleWidth(Paragraph const & par, pos_type pos) const;
///
int singleWidth(Paragraph const & par,
- pos_type pos, char c, LyXFont const & Font) const;
+ pos_type pos, char_type c, LyXFont const & Font) const;
/// return the color of the canvas
LColor_color backgroundColor() const;
RowMetrics computeRowMetrics(pit_type pit, Row const & row) const;
/// access to our paragraphs
- ParagraphList & paragraphs() const;
+ ParagraphList const & paragraphs() const { return pars_; }
+ ParagraphList & paragraphs() { return pars_; }
/// return true if this is the main text
bool isMainText() const;
///
void write(Buffer const & buf, std::ostream & os) const;
/// returns whether we've seen our usual 'end' marker
- bool read(Buffer const & buf, LyXLex & lex);
+ bool read(Buffer const & buf, LyXLex & lex, ErrorList & errorList);
///
int ascent() const;
///
int descent() const;
///
- int cursorX(CursorSlice const & cursor) const;
+ int cursorX(CursorSlice const & cursor, bool boundary) const;
///
- int cursorY(CursorSlice const & cursor) const;
+ int cursorY(CursorSlice const & cursor, bool boundary) const;
- ///
- friend class LyXScreen;
+ /// delete double space or empty paragraphs around old cursor
+ bool deleteEmptyParagraphMechanism(LCursor & cur, LCursor & old);
public:
///
LyXFont current_font;
/// the current font
LyXFont real_current_font;
- /// our buffer's default layout font
- LyXFont defaultfont_;
///
int background_color_;
///
ParagraphList pars_;
- /// our 'outermost' Font
+ /// our 'outermost' font. This is handed down from the surrounding
+ // inset through the pi/mi parameter (pi.base.font)
LyXFont font_;
///
/// change on pit
pit_type undoSpan(pit_type pit);
- /// used in setlayout
- void makeFontEntriesLayoutSpecific(BufferParams const &, Paragraph & par);
-
/// Calculate and set the height of the row
void setHeightOfRow(pit_type, Row & row);
// position. Called by deleteEmptyParagraphMechanism
void fixCursorAfterDelete(CursorSlice & cur, CursorSlice const & where);
- /// delete double space or empty paragraphs around old cursor
- bool deleteEmptyParagraphMechanism(LCursor & cur, LCursor const & old);
-
- ///
- void setCounter(Buffer const &, pit_type pit);
///
void deleteWordForward(LCursor & cur);
///
/// return the default height of a row in pixels, considering font zoom
int defaultRowHeight();
-///
-std::string expandLabel(LyXTextClass const & textclass,
- LyXLayout_ptr const & layout, bool appendix);
-
-
#endif // LYXTEXT_H