#pragma interface
#endif
+#include <vector>
+
#include <X11/Xlib.h>
#include "gettext.h"
#include "lyxfont.h"
#include "lyxlex.h"
-class Painter;
-class Buffer;
class BufferView;
+class Buffer;
+class Painter;
struct LaTeXFeatures;
///
MARGIN_CODE,
///
+ FLOAT_CODE,
+ ///
+ MINIPAGE_CODE,
+ ///
SPECIALCHAR_CODE,
///
- TABULAR_CODE
+ TABULAR_CODE,
+ ///
+ EXTERNAL_CODE
};
enum EDITABLE {
};
///
- Inset() { owner_ = 0; }
+ Inset() { owner_ = 0; top_x = top_baseline = 0; }
///
virtual ~Inset() {}
///
///
virtual int width(Painter &, LyXFont const &) const = 0;
///
- virtual void draw(Painter &, LyXFont const &,
- int baseline, float & x) const = 0;
+ virtual void draw(BufferView *, LyXFont const &,
+ int baseline, float & x, bool cleared) const = 0;
+ /// update the inset representation
+ virtual void update(BufferView *, LyXFont const &, bool =false)
+ {}
///
virtual LyXFont ConvertFont(LyXFont font);
/// what appears in the minibuffer when opening
virtual void Edit(BufferView *, int x, int y, unsigned int button);
///
virtual EDITABLE Editable() const;
- ///
+ /// This is called when the user clicks inside an inset
virtual void InsetButtonPress(BufferView *, int, int, int) {}
- ///
+ /// This is called when the user releases the button inside an inset
virtual void InsetButtonRelease(BufferView *, int, int, int) {}
- ///
+ /// This is caleld when the user moves the mouse inside an inset
virtual void InsetMotionNotify(BufferView *, int , int , int) {}
///
- bool IsTextInset() const;
+ virtual bool IsTextInset() const { return false; }
+ ///
+ virtual bool doClearArea() const { return true; }
///
virtual bool AutoDelete() const;
///
- virtual void Write(std::ostream &) const = 0;
+ virtual void Write(Buffer const *, std::ostream &) const = 0;
///
- virtual void Read(LyXLex & lex) = 0;
+ virtual void Read(Buffer const *, LyXLex & lex) = 0;
/** returns the number of rows (\n's) of generated tex code.
fragile == true means, that the inset should take care about
fragile commands by adding a \protect before.
If the free_spc (freespacing) variable is set, then this inset
is in a free-spacing paragraph.
*/
- virtual int Latex(std::ostream &, bool fragile,
+ virtual int Latex(Buffer const *, std::ostream &, bool fragile,
bool free_spc) const = 0;
///
- virtual int Ascii(std::ostream &) const = 0;
+ virtual int Ascii(Buffer const *, std::ostream &) const = 0;
///
- virtual int Linuxdoc(std::ostream &) const = 0;
+ virtual int Linuxdoc(Buffer const *, std::ostream &) const = 0;
///
- virtual int DocBook(std::ostream &) const = 0;
+ virtual int DocBook(Buffer const *, std::ostream &) const = 0;
/// Updates needed features for this inset.
virtual void Validate(LaTeXFeatures & features) const;
///
/// returns LyX code associated with the inset. Used for TOC, ...)
virtual Inset::Code LyxCode() const { return NO_CODE; }
- /// Get the label that appears at screen
- virtual string getLabel(int) const {
- return string();
+ virtual std::vector<string> getLabelList() const {
+ return std::vector<string>();
}
///
/// Changes the display state of the inset
virtual void display(bool) {}
///
- virtual int GetNumberOfLabels() const {
- return 0;
- }
- ///
virtual bool InsertInsetAllowed(Inset *) const { return false; }
///
virtual void setInsetName(const char * s) { name = s; }
///
virtual Inset * owner() const { return owner_; }
///
+ int x() const { return top_x; }
+ ///
+ int y() const { return top_baseline; }
+
+protected:
+ ///
+ mutable int top_x;
+ mutable int top_baseline;
+
private:
///
Inset * owner_;
///
virtual void HideInsetCursor(BufferView *);
///
- virtual void GetCursorPos(int &, int &) const {}
+ virtual void GetCursorPos(BufferView *, int &, int &) const {}
///
virtual void InsetButtonPress(BufferView *, int x, int y, int button);
///
///
virtual void Edit(BufferView *, int x, int y, unsigned int button);
///
- virtual void draw(Painter &, LyXFont const &,
- int baseline, float & x) const;
+ virtual void draw(BufferView *, LyXFont const &,
+ int baseline, float & x, bool cleared) const;
///
virtual void SetFont(BufferView *, LyXFont const &,
bool toggleall = false);
///
virtual UpdatableInset * GetLockingInset() { return this; }
///
+ virtual UpdatableInset * GetFirstLockingInsetOfType(Inset::Code c)
+ { return (c == LyxCode()) ? this : 0; }
+ ///
virtual int InsetInInsetY() { return 0; }
///
virtual bool UpdateInsetInInset(BufferView *, Inset *)
protected:
///
- // virtual void UpdateLocal(bool flag=true);
- ///
- mutable int top_x;
- mutable int top_baseline;
mutable bool cursor_visible;
private: