X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsettext.h;h=d89bb3413e4aee9d0ec14c8dfea50240d7d174c1;hb=5603df4a5b7e511b31026c9a4f8f55b2b10fde57;hp=db8617cf9eda924b388a4a3e3d495ea341146933;hpb=2ad9bd1e7d0c18b70a277bd6c807a05356f767b8;p=lyx.git diff --git a/src/insets/insettext.h b/src/insets/insettext.h index db8617cf9e..d89bb3413e 100644 --- a/src/insets/insettext.h +++ b/src/insets/insettext.h @@ -13,29 +13,28 @@ #define INSETTEXT_H #include "updatableinset.h" -#include "ParagraphList_fwd.h" #include "RowList_fwd.h" +#include "lyxfont.h" #include "lyxtext.h" #include "support/types.h" #include "frontends/mouse_state.h" - class Buffer; class BufferParams; class BufferView; class Dimension; class LColor_color; -class LyXCursor; +class CursorSlice; class Painter; -class Paragraph; +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. - @author: Jürgen Vigna */ class InsetText : public UpdatableInset { public: @@ -51,6 +50,8 @@ public: /// explicit InsetText(BufferParams const &); /// + explicit InsetText(); + /// InsetText(InsetText const &); /// virtual std::auto_ptr clone() const; @@ -59,27 +60,20 @@ public: /// empty inset to empty par, or just mark as erased void clear(bool just_mark_erased); /// - void read(Buffer const &, LyXLex &); - /// - void write(Buffer const &, std::ostream &) const; + void read(Buffer const & buf, LyXLex & lex); /// - void metrics(MetricsInfo &, Dimension &) const; + void write(Buffer const & buf, std::ostream & os) const; /// - int textWidth() const; + void 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; /// std::string const editMessage() const; /// bool isTextInset() const { return true; } /// - void insetUnlock(BufferView *); - /// - bool lockInsetInInset(BufferView *, UpdatableInset *); - /// - bool unlockInsetInInset(BufferView *, - UpdatableInset *, bool lr = false); - /// int latex(Buffer const &, std::ostream &, OutputParams const &) const; /// @@ -87,37 +81,21 @@ public: OutputParams const &) const; /// int linuxdoc(Buffer const &, std::ostream &, - OutputParams const &) const ; + OutputParams const &) const; /// int docbook(Buffer const &, std::ostream &, - OutputParams const &) const ; + OutputParams const &) const; /// void validate(LaTeXFeatures & features) const; /// InsetOld::Code lyxCode() const { return InsetOld::TEXT_CODE; } /// FIXME, document - void getCursorPos(BufferView *, int & x, int & y) const; - /// Get the absolute document x,y of the cursor - virtual void getCursor(BufferView &, int &, int &) const; - /// - int insetInInsetY() const; - /// - void fitInsetCursor(BufferView *) const; - /// - bool insertInset(BufferView *, InsetOld *); - /// - bool insetAllowed(InsetOld::Code) const; - /// - UpdatableInset * getLockingInset() const; - /// - UpdatableInset * getFirstLockingInsetOfType(InsetOld::Code); + void getCursorPos(LCursor const & cur, int & x, int & y) const; /// void setFont(BufferView *, LyXFont const &, bool toggleall = false, bool selectall = false); /// - void writeParagraphData(Buffer const &, std::ostream &) const; - /// void setText(std::string const &, LyXFont const &); /// void setAutoBreakRows(bool); @@ -127,39 +105,21 @@ public: void setDrawFrame(DrawFrame); /// LColor_color frameColor() const; - void setFrameColor(LColor_color); /// - LyXText * getLyXText(BufferView const *, - bool const recursive = false) const; + void setFrameColor(LColor_color); /// void setViewCache(BufferView const * bv) const; /// - void deleteLyXText(BufferView *, bool recursive = true) const; - /// bool showInsetDialog(BufferView *) const; /// Appends \c list with all labels found within this inset. void getLabelList(Buffer const &, std::vector & list) const; /// - int scroll(bool recursive = true) const; - /// - void scroll(BufferView * bv, float sx) const { - UpdatableInset::scroll(bv, sx); - } - /// - void scroll(BufferView * bv, int offset) const { - UpdatableInset::scroll(bv, offset); - } - /// - void clearSelection(BufferView * bv); - /// - ParagraphList * getParagraphs(int) const; - /// LyXText * getText(int) const; /// - LyXCursor const & cursor(BufferView *) const; + bool getStatus(LCursor & cur, FuncRequest const & cmd, FuncStatus &) const; /// mark as erased for change tracking - void markErased() { clear(true); }; + 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 @@ -169,10 +129,6 @@ public: */ void markNew(bool track_changes = false); - /// - bool checkInsertChar(LyXFont &); - /// - void getDrawFont(LyXFont &) const; /// append text onto the existing text void appendParagraphs(Buffer * bp, ParagraphList &); @@ -180,83 +136,41 @@ public: void addPreview(lyx::graphics::PreviewLoader &) const; /// - void edit(BufferView *, bool); - /// - void edit(BufferView *, int, int); - /// - UpdatableInset * lockingInset() const { return the_locking_inset; } - - /// - int numParagraphs() const { return 1; } - /// - mutable ParagraphList paragraphs; -protected: - /// - virtual - DispatchResult - priv_dispatch(FuncRequest const &, idx_type &, pos_type &); + void edit(LCursor & cur, bool left); /// - void updateLocal(BufferView *, bool mark_dirty); - /// set parameters for an initial lock of this inset - void lockInset(BufferView *); - /// lock an inset inside this one - void lockInset(BufferView *, UpdatableInset *); + InsetBase * editXY(LCursor & cur, int x, int y); -private: + /// number of cells in this inset + size_t nargs() const { return 1; } /// - void init(); + ParagraphList & paragraphs(); /// - void lfunMousePress(FuncRequest const &); + ParagraphList const & paragraphs() const; /// - bool lfunMouseRelease(FuncRequest const &); + bool insetAllowed(Code) const { return true; } /// - void lfunMouseMotion(FuncRequest const &); + bool allowSpellCheck() const { return true; } +protected: /// - DispatchResult moveRight(BufferView *); - /// - DispatchResult moveLeft(BufferView *); - /// - DispatchResult moveRightIntern(BufferView *, bool front, - bool activate_inset = true, - bool selecting = false); - /// - DispatchResult moveLeftIntern(BufferView *, bool front, - bool activate_inset = true, - bool selecting = false); - + void priv_dispatch(LCursor & cur, FuncRequest & cmd); +private: /// - DispatchResult moveUp(BufferView *); + void updateLocal(LCursor &); /// - DispatchResult moveDown(BufferView *); + void init(); + // If the inset is empty set the language of the current font to the + // language to the surronding text (if different). + void sanitizeEmptyText(BufferView &); /// void setCharFont(Buffer const &, int pos, LyXFont const & font); /// - bool checkAndActivateInset(BufferView * bv, bool front); - /// - bool checkAndActivateInset(BufferView * bv, int x = 0, int y = 0); - /// void removeNewlines(); /// - int cx() const; - /// - int cy() const; - /// - lyx::pos_type cpos() const; - /// - ParagraphList::iterator cpar() const; + void drawFrame(Painter &, int x, int y) const; /// - bool cboundary() const; - /// - RowList::iterator crow() const; - /// - void drawFrame(Painter &, int x) const; - /// - void clearInset(BufferView *, int start_x, int baseline) const; - /// - void collapseParagraphs(BufferView *); + void clearInset(Painter &, int x, int y) const; - /* Private structures and variables */ /// bool autoBreakRows_; /// @@ -266,33 +180,11 @@ private: */ int frame_color_; /// - mutable bool locked; - /// - bool inset_boundary; - /// - mutable int inset_x; - /// - mutable int inset_y; - /// - bool no_selection; - /// - UpdatableInset * the_locking_inset; - /// - mutable lyx::paroffset_type old_par; - - /// - // to remember old painted frame dimensions to clear it on the right spot! - /// - mutable bool in_insetAllowed; - /// - // these are used to check for mouse movement in Motion selection code - /// - int mouse_x; - int mouse_y; + mutable lyx::par_type old_par; public: /// mutable LyXText text_; /// - mutable int textwidth_; + mutable LyXFont font_; }; #endif