X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsettext.h;h=a2dd9f98a993545f27db2a944adb93e8df52160f;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=6a26d2672bd07efd6b0711625727926c9da8c15d;hpb=0cb92344f7c6a5ea653997e3437f65f053bde2ed;p=lyx.git diff --git a/src/insets/insettext.h b/src/insets/insettext.h index 6a26d2672b..a2dd9f98a9 100644 --- a/src/insets/insettext.h +++ b/src/insets/insettext.h @@ -12,77 +12,75 @@ #ifndef INSETTEXT_H #define INSETTEXT_H -#include "updatableinset.h" +#include "inset.h" #include "RowList_fwd.h" #include "lyxfont.h" #include "lyxtext.h" +#include "ParagraphList_fwd.h" #include "support/types.h" #include "frontends/mouse_state.h" + +namespace lyx { + class Buffer; class BufferParams; class BufferView; +class CursorSlice; class Dimension; class LColor_color; -class CursorSlice; -class Painter; -class ParagraphList; -class Row; /** A text inset is like a TeX box to write full text (including styles and other insets) in a given space. */ -class InsetText : public UpdatableInset { +class InsetText : public InsetOld { public: /// explicit InsetText(BufferParams const &); /// InsetText(); - /// empty inset to empty par, or just mark as erased - void clear(bool just_mark_erased); + /// empty inset to empty par + void clear(); /// void read(Buffer const & buf, LyXLex & lex); /// void write(Buffer const & buf, std::ostream & os) const; /// - void metrics(MetricsInfo & mi, Dimension & dim) const; + bool metrics(MetricsInfo & mi, Dimension & dim) const; /// void draw(PainterInfo & pi, int x, int y) const; /// draw inset selection void drawSelection(PainterInfo & pi, int x, int y) const; + /// are we inside the area covered by the inset? + virtual bool covers(BufferView const & bv, int x, int y) const; + /// + virtual docstring const editMessage() const; /// - std::string const editMessage() const; + EDITABLE editable() const { return HIGHLY_EDITABLE; } /// - bool isTextInset() const { return true; } + bool canTrackChanges() const { return true; } /// - int latex(Buffer const &, std::ostream &, - OutputParams const &) const; + InsetText const * asTextInset() const { return this; } /// - int plaintext(Buffer const &, std::ostream &, - OutputParams const &) const; + int latex(Buffer const &, odocstream &, OutputParams const &) const; /// - int linuxdoc(Buffer const &, std::ostream &, - OutputParams const &) const; + int plaintext(Buffer const &, odocstream &, OutputParams const &) const; /// - int docbook(Buffer const &, std::ostream &, - OutputParams const &) const; + int docbook(Buffer const &, odocstream &, OutputParams const &) const; /// void validate(LaTeXFeatures & features) const; /// return x,y of given position relative to the inset's baseline - void getCursorPos(CursorSlice const & sl, int & x, int & y) const; + void cursorPos(BufferView const & bv, CursorSlice const & sl, + bool boundary, int & x, int & y) const; /// Code lyxCode() const { return TEXT_CODE; } /// - void setFont(BufferView *, LyXFont const &, - bool toggleall = false, - bool selectall = false); - /// - void setText(std::string const &, LyXFont const &); + void setText(docstring const &, LyXFont const &, bool trackChanges); /// void setAutoBreakRows(bool); /// @@ -94,37 +92,31 @@ public: /// void setFrameColor(LColor_color); /// - void setViewCache(BufferView const * bv) const; - /// bool showInsetDialog(BufferView *) const; - /// Appends \c list with all labels found within this inset. - void getLabelList(Buffer const &, std::vector & list) const; /// - LyXText * getText(int) const; + LyXText * getText(int i) const { + return (i == 0) ? const_cast(&text_) : 0; + } /// bool getStatus(LCursor & cur, FuncRequest const & cmd, FuncStatus &) const; - /// mark as erased for change tracking - void markErased() { clear(true); } - /** - * Mark as new. Used when pasting in tabular, and adding rows - * or columns. Note that pasting will ensure that tracking already - * happens, and this just resets the changes for the copied text, - * whereas for row/col add, we need to start tracking changes - * for the (empty) paragraph contained. - */ - void markNew(bool track_changes = false); + /// set the change for the entire inset + void setChange(Change const & change); + /// accept the changes within the inset + void acceptChanges(); + /// reject the changes within the inset + void rejectChanges(); /// append text onto the existing text void appendParagraphs(Buffer * bp, ParagraphList &); /// - void addPreview(lyx::graphics::PreviewLoader &) const; + void addPreview(graphics::PreviewLoader &) const; /// void edit(LCursor & cur, bool left); /// - InsetBase * editXY(LCursor & cur, int x, int y) const; + InsetBase * editXY(LCursor & cur, int x, int y); /// number of cells in this inset size_t nargs() const { return 1; } @@ -136,26 +128,24 @@ public: bool insetAllowed(Code) const { return true; } /// bool allowSpellCheck() const { return true; } + /// should paragraph indendation be ommitted in any case? + bool neverIndent(Buffer const &) const; + /// + InsetText(InsetText const &); + /// + bool wide() const { return wide_inset_; } + /// + void setWide(bool wide_inset) { wide_inset_ = wide_inset; } protected: - InsetText(InsetText const &); /// virtual void doDispatch(LCursor & cur, FuncRequest & cmd); -private: - virtual std::auto_ptr doClone() const; +private: /// - void updateLocal(LCursor &); + virtual std::auto_ptr doClone() const; /// void init(); - /// - void setCharFont(Buffer const &, int pos, LyXFont const & font); - /// - void removeNewlines(); - /// - void drawFrame(Painter &, int x, int y) const; - /// - void clearInset(Painter &, int x, int y) const; /// bool drawFrame_; @@ -164,13 +154,18 @@ private: */ int frame_color_; /// - mutable lyx::pit_type old_pit; + mutable pit_type old_pit; /// static int border_; + /// + bool wide_inset_; public: /// mutable LyXText text_; /// mutable LyXFont font_; }; + +} // namespace lyx + #endif