X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsettext.h;h=ad86205f1bf06cefa66fd67023a5e0b8abc36932;hb=183239b7def8ca0e51432f2d88891d4b9f055953;hp=62e4bfad0659f19e45ac3b227a305d6a52817d68;hpb=99b64f351e737f9593e96d247b256377f62ca5a5;p=lyx.git diff --git a/src/insets/insettext.h b/src/insets/insettext.h index 62e4bfad06..ad86205f1b 100644 --- a/src/insets/insettext.h +++ b/src/insets/insettext.h @@ -6,204 +6,105 @@ * * \author Jürgen Vigna * - * Full author contact details are available in file CREDITS + * Full author contact details are available in file CREDITS. */ #ifndef INSETTEXT_H #define INSETTEXT_H #include "updatableinset.h" -#include "textcursor.h" -#include "LString.h" -#include "LColor.h" -#include "ParagraphList.h" -#include "RowList.h" -#include "dimension.h" +#include "RowList_fwd.h" +#include "lyxfont.h" #include "lyxtext.h" #include "support/types.h" #include "frontends/mouse_state.h" -#include - -class Painter; -class BufferView; class Buffer; class BufferParams; -class LyXCursor; -class LyXText; +class BufferView; +class Dimension; +class LColor_color; +class CursorSlice; +class Painter; +class ParagraphList; class Row; -class Paragraph; + /** 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: /// - /// numbers need because of test if codeA < codeB - /// - enum UpdateCodes { - /// - NONE = 0, - /// - CURSOR = 1, - /// - DRAW_FRAME = 2, - /// - SELECTION = 4, - /// - CURSOR_PAR = 8, - /// - FULL = 16, - /// - INIT = 32 - }; - /// - enum DrawFrame { - /// - NEVER = 0, - /// - LOCKED, - /// - ALWAYS - }; - /// - InsetText(BufferParams const &); - /// - explicit InsetText(InsetText const &); - /// - InsetBase * clone() const; - /// - InsetText & operator=(InsetText const & it); + explicit InsetText(BufferParams const &); + /// + InsetText(); /// 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(BufferView *, bool fordraw = false) 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; /// - void setUpdateStatus(int what) const; - /// - string const editMessage() 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; /// - bool updateInsetInInset(BufferView *, Inset *); + int plaintext(Buffer const &, std::ostream &, + OutputParams const &) const; /// - RESULT localDispatch(FuncRequest const &); + int linuxdoc(Buffer const &, std::ostream &, + OutputParams const &) const; /// - int latex(Buffer const *, std::ostream &, - LatexRunParams const &) const; - /// - int ascii(Buffer const *, std::ostream &, int linelen) const; - /// - int linuxdoc(Buffer const *, std::ostream &) const { return 0; } - /// - int docbook(Buffer const *, std::ostream &, bool mixcont) const ; + int docbook(Buffer const &, std::ostream &, + OutputParams const &) const; /// void validate(LaTeXFeatures & features) const; /// - Inset::Code lyxCode() const { return Inset::TEXT_CODE; } + Code lyxCode() const { return 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 *, Inset *); - /// - bool insetAllowed(Inset::Code) const; - /// - UpdatableInset * getLockingInset() const; - /// - UpdatableInset * getFirstLockingInsetOfType(Inset::Code); + void getCursorPos(LCursor const & cur, int & x, int & y) const; /// void setFont(BufferView *, LyXFont const &, bool toggleall = false, bool selectall = false); /// - int getMaxWidth(BufferView *, UpdatableInset const *) const; - /// - void init(InsetText const * ins); - /// - void writeParagraphData(Buffer const *, std::ostream &) const; - /// - void setParagraphData(ParagraphList const &); - /// - void setText(string const &, LyXFont const &); + void setText(std::string const &, LyXFont const &); /// void setAutoBreakRows(bool); /// - bool getAutoBreakRows() const { return autoBreakRows; } + bool getAutoBreakRows() const { return autoBreakRows_; } /// - void setDrawFrame(BufferView *, DrawFrame); + void setDrawFrame(bool); /// - void setFrameColor(BufferView *, LColor::color); + LColor_color frameColor() const; /// - 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; - /// - void resizeLyXText(BufferView *, bool force = false) const; - /// bool showInsetDialog(BufferView *) const; + /// Appends \c list with all labels found within this inset. + void getLabelList(Buffer const &, std::vector & list) const; /// - void getLabelList(std::vector &) const; - /// - bool nodraw() 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); - /// - Inset * getInsetFromID(int id) const; - /// - ParagraphList * getParagraphs(int) const; + LyXText * getText(int) const; /// - LyXCursor const & cursor(BufferView *) const; - /// - bool allowSpellcheck() const { return true; } - /// - WordLangTuple const - selectNextWordToSpellcheck(BufferView *, float & value) const; - /// - void selectSelectedWord(BufferView *); - /// - void toggleSelection(BufferView *, bool kill_selection); + 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 @@ -212,164 +113,63 @@ 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 *, string const &, - bool = true, bool = false); - /// - bool searchBackward(BufferView *, string const &, - bool = true, bool = false); - /// - bool checkInsertChar(LyXFont &); - /// - void getDrawFont(LyXFont &) const; /// append text onto the existing text void appendParagraphs(Buffer * bp, ParagraphList &); /// void addPreview(lyx::graphics::PreviewLoader &) const; - // - // Public structures and variables /// - mutable int need_update; - - bool haveParagraphs() const { - return true; - } + void edit(LCursor & cur, bool left); /// - ParagraphList paragraphs; -protected: - /// - void updateLocal(BufferView *, int what, 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 *); - /// - mutable int drawTextXOffset; - /// - mutable int drawTextYOffset; - /// - bool autoBreakRows; - /// - DrawFrame drawFrame_; - /// - LColor::color frame_color; - -private: - /// - void lfunMousePress(FuncRequest const &); - /// - bool lfunMouseRelease(FuncRequest const &); - /// - void lfunMouseMotion(FuncRequest const &); + InsetBase * editXY(LCursor & cur, int x, int y) const; + /// number of cells in this inset + size_t nargs() const { return 1; } /// - RESULT moveRight(BufferView *, - bool activate_inset = true, - bool selecting = false); + ParagraphList & paragraphs(); /// - RESULT moveLeft(BufferView *, - bool activate_inset = true, - bool selecting = false); + ParagraphList const & paragraphs() const; /// - RESULT moveRightIntern(BufferView *, bool front, - bool activate_inset = true, - bool selecting = false); + bool insetAllowed(Code) const { return true; } /// - RESULT moveLeftIntern(BufferView *, bool front, - bool activate_inset = true, - bool selecting = false); + bool allowSpellCheck() const { return true; } +protected: + InsetText(InsetText const &); /// - RESULT moveUp(BufferView *); - /// - RESULT moveDown(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(BufferView *) const; - /// - int cix(BufferView *) const; - /// - int cy() const; - /// - int ciy() const; - /// - lyx::pos_type cpos() const; - /// - ParagraphList::iterator cpar() const; - /// - bool cboundary() const; - /// - RowList::iterator crow() const; - /// - void drawFrame(Painter &, int x) const; - /// - void clearInset(BufferView *, int start_x, int baseline) const; - /// - void saveLyXTextState() const; - /// - void restoreLyXTextState() const; - /// - void collapseParagraphs(BufferView *); + virtual void doDispatch(LCursor & cur, FuncRequest & cmd); +private: + virtual std::auto_ptr doClone() const; - /* Private structures and variables */ /// - mutable bool locked; + void updateLocal(LCursor &); /// - mutable int top_y; + void init(); /// - ParagraphList::iterator inset_par; + void setCharFont(Buffer const &, int pos, LyXFont const & font); /// - lyx::pos_type inset_pos; - /// - bool inset_boundary; - /// - mutable int inset_x; - /// - mutable int inset_y; - /// - bool no_selection; - /// - UpdatableInset * the_locking_inset; + void removeNewlines(); /// - mutable ParagraphList::iterator old_par; + void drawFrame(Painter &, int x, int y) const; /// - mutable int last_drawn_width; - - /// some funny 'temporarily saved state' - mutable TextCursor sstate; + void clearInset(Painter &, int x, int y) const; /// - // to remember old painted frame dimensions to clear it on the right spot! - /// - mutable int frame_x; - mutable int frame_y; - mutable int frame_w; - mutable int frame_h; - mutable bool in_insetAllowed; + bool autoBreakRows_; /// - // these are used to check for mouse movement in Motion selection code + bool drawFrame_; + /** We store the LColor::color value as an int to get LColor.h out + * of the header file. + */ + int frame_color_; /// - int mouse_x; - int mouse_y; + mutable lyx::pit_type old_par; public: - /// - void reinitLyXText() const; /// mutable LyXText text_; /// - mutable int textwidth_; + mutable LyXFont font_; }; #endif