X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetcollapsable.h;h=2880a32027d68186e0189bd50894f561504e5307;hb=4a5b7a5952ad2381fcdf4830511293e184c7c5a1;hp=14174a00ca2958aa993b30eb3986a07fb80c28af;hpb=946895278050e4a464c9591e99232a72f5f4dec9;p=lyx.git diff --git a/src/insets/insetcollapsable.h b/src/insets/insetcollapsable.h index 14174a00ca..2880a32027 100644 --- a/src/insets/insetcollapsable.h +++ b/src/insets/insetcollapsable.h @@ -4,7 +4,7 @@ * * LyX, The Document Processor * - * Copyright 2000 The LyX Team. + * Copyright 2000-2001 The LyX Team. * *====================================================== */ @@ -17,150 +17,227 @@ #pragma interface #endif -#include "lyxinset.h" +#include "inset.h" +#include "insettext.h" #include "lyxfont.h" #include "LColor.h" - class Painter; -class InsetText; class LyXText; +class Paragraph; +class LyXCursor; -/** A colapsable text inset +/** A collapsable text inset */ class InsetCollapsable : public UpdatableInset { public: - /// - enum UpdateCodes { - NONE = 0, - FULL - }; - /// - static int const TEXT_TO_TOP_OFFSET = 2; - /// - static int const TEXT_TO_BOTTOM_OFFSET = 2; - /// - InsetCollapsable(); - /// - Inset * Clone() const; - /// - void Read(Buffer const *, LyXLex &); - /// - void Write(Buffer const *, std::ostream &) const; - /// - int ascent(Painter &, LyXFont const &) const; - /// - int descent(Painter &, LyXFont const &) const; - /// - int width(Painter &, LyXFont const & f) const; - /// - void draw(BufferView *, const LyXFont &, int , float &, bool) const; - /// - void update(BufferView *, LyXFont const &, bool =false); - /// - void Edit(BufferView *, int, int, unsigned int); - /// - EDITABLE Editable() const; - /// - bool InsertInset(BufferView *, Inset * inset); - /// - bool IsTextInset() const { return true; } - /// - bool doClearArea() const; - /// - void InsetUnlock(BufferView *); - /// - bool needFullRow() const { return !collapsed; } - /// - bool LockInsetInInset(BufferView *, UpdatableInset *); - /// - bool UnlockInsetInInset(BufferView *, UpdatableInset *, bool lr = false); - /// - bool UpdateInsetInInset(BufferView *, Inset *); - /// - int InsetInInsetY(); - /// - void InsetButtonRelease(BufferView *, int, int, int); - /// - void InsetButtonPress(BufferView *, int, int, int); - /// - void InsetMotionNotify(BufferView *, int, int, int); - /// - void InsetKeyPress(XKeyEvent *); - /// - UpdatableInset::RESULT LocalDispatch(BufferView *, int, string const &); - /// - int Latex(Buffer const *, std::ostream &, bool fragile, bool free_spc) const; - /// - int Ascii(Buffer const *, std::ostream &) const { return 0; } - /// - int Linuxdoc(Buffer const *, std::ostream &) const { return 0; } - /// - int DocBook(Buffer const *, std::ostream &) const { return 0; } - /// - void Validate(LaTeXFeatures & features) const; - /// - void GetCursorPos(BufferView *, int & x, int & y) const; - /// - void ToggleInsetCursor(BufferView *); - /// - UpdatableInset * GetLockingInset(); - /// - UpdatableInset * GetFirstLockingInsetOfType(Inset::Code); - /// - void SetFont(BufferView *, LyXFont const &, bool toggleall = false); - /// - void setLabel(string const & l) { label = l; } - /// - void setLabelFont(LyXFont & f) { labelfont = f; } - /// - void setAutoCollapse(bool f) { autocollapse = f; } - /// - int getMaxWidth(Painter & pain, UpdatableInset const *) const; - /// - LyXText * getLyXText(BufferView *) const; - void deleteLyXText(BufferView *); + /// + enum UpdateCodes { + NONE = 0, + FULL + }; + /// + static int const TEXT_TO_TOP_OFFSET = 2; + /// + static int const TEXT_TO_BOTTOM_OFFSET = 2; + /// inset is initially collapsed if bool = true + InsetCollapsable(bool = false); + /// + InsetCollapsable(InsetCollapsable const & in, bool same_id = false); + /// + void read(Buffer const *, LyXLex &); + /// + void write(Buffer const *, std::ostream &) const; + /// + int ascent(BufferView *, LyXFont const &) const; + /// + int descent(BufferView *, LyXFont const &) const; + /// + int width(BufferView *, LyXFont const &) const; + /// + void draw(BufferView *, const LyXFont &, int , float &, bool) const; + /// + void update(BufferView *, LyXFont const &, bool =false); + /// + void edit(BufferView *, int, int, unsigned int); + /// + void edit(BufferView *, bool front = true); + /// + EDITABLE editable() const; + /// + bool insertInset(BufferView *, Inset * inset); + /// + virtual bool insetAllowed(Inset::Code code) const { + return inset.insetAllowed(code); + } + /// + bool isTextInset() const { return true; } + /// + bool doClearArea() const; + /// + void insetUnlock(BufferView *); + /// + bool needFullRow() const { return isOpen(); } + /// + bool lockInsetInInset(BufferView *, UpdatableInset *); + /// + bool unlockInsetInInset(BufferView *, UpdatableInset *, + bool lr = false); + /// + bool updateInsetInInset(BufferView *, Inset *); + /// + unsigned int insetInInsetY(); + /// + bool insetButtonRelease(BufferView *, int, int, int); + /// + void insetButtonPress(BufferView *, int, int, int); + /// + void insetMotionNotify(BufferView *, int, int, int); + /// + void insetKeyPress(XKeyEvent *); + /// + UpdatableInset::RESULT localDispatch(BufferView *, kb_action, + string const &); + /// + int latex(Buffer const *, std::ostream &, + bool fragile, bool free_spc) const; + /// + int ascii(Buffer const *, std::ostream &, int) const; + /// + int linuxdoc(Buffer const *, std::ostream &) const; + /// + int docbook(Buffer const *, std::ostream &) const; + /// + void validate(LaTeXFeatures & features) const; + /// + void getCursorPos(BufferView *, int & x, int & y) const; + /// + void toggleInsetCursor(BufferView *); + /// + void showInsetCursor(BufferView *, bool show = true); + /// + void hideInsetCursor(BufferView *); + /// + void fitInsetCursor(BufferView * bv) const { + inset.fitInsetCursor(bv); + } + UpdatableInset * getLockingInset() const; + /// + UpdatableInset * getFirstLockingInsetOfType(Inset::Code); + /// + void setFont(BufferView *, LyXFont const &, bool toggleall = false, + bool selectall = false); + /// + void setLabel(string const & l) const; + /// + void setLabelFont(LyXFont & f) { labelfont = f; } +#if 0 + /// + void setAutoCollapse(bool f) { autocollapse = f; } +#endif +#if 0 + /// + int getMaxWidth(BufferView *, UpdatableInset const *) const; +#endif + /// + LyXText * getLyXText(BufferView const *, bool const recursive) const; + /// + void deleteLyXText(BufferView *, bool recursive=true) const; + /// + void resizeLyXText(BufferView *, bool force = false) const; + /// + std::vector const getLabelList() 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); + } + /// + Paragraph * getParFromID(int id) const; + /// + Inset * getInsetFromID(int id) const; + /// + Paragraph * firstParagraph() const; + /// + Paragraph * getFirstParagraph(int) const; + /// + LyXCursor const & cursor(BufferView *) const; + /// + bool isOpen() const { return !collapsed_; } + /// + void open(BufferView *); + /// + void close(BufferView *) const; + /// + bool allowSpellcheck() { return inset.allowSpellcheck(); } + string const selectNextWordToSpellcheck(BufferView *, float &) const; + + void selectSelectedWord(BufferView * bv) { + inset.selectSelectedWord(bv); + } + void toggleSelection(BufferView * bv, bool kill_selection) { + inset.toggleSelection(bv, kill_selection); + } + /// + bool searchForward(BufferView * bv, string const & str, + bool = true, bool = false); + bool searchBackward(BufferView * bv, string const & str, + bool = true, bool = false); protected: - /// - int ascent_collapsed(Painter &, LyXFont const &) const; - /// - int descent_collapsed(Painter &, LyXFont const &) const; - /// - int width_collapsed(Painter &, LyXFont const & f) const; - /// - void draw_collapsed(Painter & pain, const LyXFont &, int , float &) const; - /// - int getMaxTextWidth(Painter & pain, UpdatableInset const *) const; - - /// - bool collapsed; - /// - LColor::color framecolor; - /// - LyXFont labelfont; - /// - InsetText * inset; - // Instead of making these ints protected we could have a - // protected method "clickInButton" (Lgb) - /// - mutable int - button_length, button_top_y, button_bottom_y; + /// + int ascent_collapsed() const; + /// + int descent_collapsed() const; + /// + int width_collapsed() const; + /// + void draw_collapsed(Painter & pain, int , float &) const; + /// + int getMaxTextWidth(Painter & pain, UpdatableInset const *) const; + + /// + mutable bool collapsed_; + /// + LColor::color framecolor; + /// + LyXFont labelfont; +public: + /// + mutable InsetText inset; +protected: + /// + mutable int button_length; + /// + mutable int button_top_y; + /// + mutable int button_bottom_y; + /// + mutable int topx; + mutable int topbaseline; + mutable UpdateCodes need_update; private: - /// - string label; - /// - bool autocollapse; - /// - int widthCollapsed; - /// - int oldWidth; - /// - mutable int topx; - mutable int topbaseline; - mutable UpdateCodes need_update; + /// + mutable string label; +#if 0 + /// + bool autocollapse; +#endif + /// + mutable int oldWidth; + /// + bool in_update; + /// + mutable bool first_after_edit; }; #endif