]> git.lyx.org Git - lyx.git/blobdiff - src/insets/insetcollapsable.h
Some more changes for updating text-insets.
[lyx.git] / src / insets / insetcollapsable.h
index 1dc504afa16e53a76bb55a24122233dda8963d05..687c11317aa1eacda9a9589d9e6ec59e7b66b4ff 100644 (file)
 #pragma interface
 #endif
 
-#include "insettext.h"
+#include "lyxinset.h"
 #include "lyxfont.h"
 #include "LColor.h"
 
 
 class Painter;
+class InsetText;
+class LyXText;
 
 /** A colapsable text inset
   
 */
-class InsetCollapsable : public InsetText {
+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;
     ///
-       explicit
-    InsetCollapsable(Buffer *);
+    explicit
+    InsetCollapsable();
     ///
     ~InsetCollapsable() {}
     ///
     Inset * Clone() const;
     ///
-    void Read(LyXLex &);
+    void Read(Buffer const *, LyXLex &);
     ///
-    void Write(std::ostream &) const;
+    void Write(Buffer const *, std::ostream &) const;
     ///
     int ascent(Painter &, LyXFont const &) const;
     ///
@@ -51,15 +58,29 @@ public:
     ///
     int width(Painter &, LyXFont const & f) const;
     ///
-    void draw(Painter & pain, const LyXFont &, int , float &) 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 IsTextInset() const { return true; }
+    ///
+    bool doClearArea() const;
+    ///
     void InsetUnlock(BufferView *);
     ///
-    bool display() const { return (!collapsed); }
+    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);
     ///
@@ -67,6 +88,30 @@ public:
     ///
     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; }
@@ -74,6 +119,9 @@ public:
     void setAutoCollapse(bool f) { autocollapse = f; }
     ///
     int getMaxWidth(Painter & pain, UpdatableInset const *) const;
+    ///
+    LyXText * getLyXText(BufferView *) const;
+    void deleteLyXText(BufferView *);
 
 protected:
     ///
@@ -85,27 +133,35 @@ protected:
     ///
     void draw_collapsed(Painter & pain, const LyXFont &, int , float &) const;
     ///
-    void UpdateLocal(BufferView *, bool);
-    ///
     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;
 
 private:
     ///
     string label;
     ///
-    LyXFont labelfont;
-    ///
     bool autocollapse;
     ///
-    mutable int
-       button_length, button_top_y, button_bottom_y;
+    int widthCollapsed;
+    ///
+    int oldWidth;
     ///
-    int widthOffset;
+    mutable int topx;
+    mutable int topbaseline;
+    mutable UpdateCodes need_update;
 };
 
 #endif