X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsettext.h;h=d89bb3413e4aee9d0ec14c8dfea50240d7d174c1;hb=5603df4a5b7e511b31026c9a4f8f55b2b10fde57;hp=8e21176b03b87af430d348f6108c9366fd986530;hpb=839576adbceff99b21a71050d03d349115379c83;p=lyx.git diff --git a/src/insets/insettext.h b/src/insets/insettext.h index 8e21176b03..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,64 +60,42 @@ 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); - /// - RESULT localDispatch(FuncRequest const &); - /// int latex(Buffer const &, std::ostream &, - LatexRunParams const &) const; + OutputParams const &) const; /// - int ascii(Buffer const &, std::ostream &, int linelen) const; + int plaintext(Buffer const &, std::ostream &, + OutputParams const &) const; /// - int linuxdoc(Buffer const &, std::ostream &) const ; + int linuxdoc(Buffer const &, std::ostream &, + OutputParams const &) const; /// - int docbook(Buffer const &, std::ostream &, bool mixcont) const ; + int docbook(Buffer const &, std::ostream &, + 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); @@ -126,46 +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); - /// - InsetOld * getInsetFromID(int id) const; - /// - ParagraphList * getParagraphs(int) const; - /// - LyXCursor const & cursor(BufferView *) const; + LyXText * getText(int) const; /// - bool allowSpellcheck() const { return true; } - /// - WordLangTuple const - selectNextWordToSpellcheck(BufferView *, float & value) const; - /// - void selectSelectedWord(BufferView *); + 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 @@ -174,19 +128,7 @@ public: * for the (empty) paragraph contained. */ void markNew(bool track_changes = false); - /// find next change - bool nextChange(BufferView *, lyx::pos_type & length); - /// - bool searchForward(BufferView *, std::string const &, - bool = true, bool = false); - /// - bool searchBackward(BufferView *, std::string const &, - bool = true, bool = false); - /// - bool checkInsertChar(LyXFont &); - /// - void getDrawFont(LyXFont &) const; /// append text onto the existing text void appendParagraphs(Buffer * bp, ParagraphList &); @@ -194,75 +136,41 @@ public: void addPreview(lyx::graphics::PreviewLoader &) const; /// - bool haveParagraphs() const { - return true; - } - /// - mutable ParagraphList paragraphs; -protected: + 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: /// - RESULT moveRight(BufferView *); - /// - RESULT moveLeft(BufferView *); - /// - RESULT moveRightIntern(BufferView *, bool front, - bool activate_inset = true, - bool selecting = false); - /// - RESULT moveLeftIntern(BufferView *, bool front, - bool activate_inset = true, - bool selecting = false); - + void priv_dispatch(LCursor & cur, FuncRequest & cmd); +private: /// - RESULT moveUp(BufferView *); + void updateLocal(LCursor &); /// - RESULT 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, - mouse_button::state button = mouse_button::none); - /// void removeNewlines(); /// - int cx() const; - /// - int cy() const; - /// - lyx::pos_type cpos() const; - /// - ParagraphList::iterator cpar() const; - /// - bool cboundary() const; - /// - RowList::iterator crow() const; + void drawFrame(Painter &, int x, int y) 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_; /// @@ -272,39 +180,11 @@ private: */ int frame_color_; /// - mutable bool locked; - /// - mutable int top_y; - /// - lyx::paroffset_type inset_par; - /// - lyx::pos_type inset_pos; - /// - 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