#pragma interface
#endif
+#include <vector>
+
#include <X11/Xlib.h>
#include "gettext.h"
#include "lyxfont.h"
#include "lyxlex.h"
-class Painter;
class BufferView;
+class Buffer;
+class Painter;
+class LyXText;
struct LaTeXFeatures;
-
/// Insets
class Inset {
public:
///
MARGIN_CODE,
///
+ FLOAT_CODE,
+ ///
+ MINIPAGE_CODE,
+ ///
SPECIALCHAR_CODE,
///
- TABULAR_CODE
+ TABULAR_CODE,
+ ///
+ EXTERNAL_CODE,
+ ///
+ THEOREM_CODE
};
+ ///
+ enum { TEXT_TO_INSET_OFFSET = 2 };
+
enum EDITABLE {
NOT_EDITABLE = 0,
IS_EDITABLE,
///
virtual ~Inset() {}
///
- virtual int ascent(Painter &, LyXFont const &) const = 0;
+ virtual int ascent(BufferView *, LyXFont const &) const = 0;
///
- virtual int descent(Painter &, LyXFont const &) const = 0;
+ virtual int descent(BufferView *, LyXFont const &) const = 0;
///
- virtual int width(Painter &, LyXFont const &) const = 0;
+ virtual int width(BufferView *, 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>();
}
///
virtual bool DirectWrite() const;
/// Returns true if the inset should be centered alone
- virtual bool display() const { return false; }
+ virtual bool display() const { return false; }
/// Changes the display state of the inset
- virtual void display(bool) {}
+ virtual void display(bool) {}
///
- virtual int GetNumberOfLabels() const {
- return 0;
- }
+ /// returns true if this inset needs a row on it's own
+ ///
+ virtual bool needFullRow() const { return false; }
///
virtual bool InsertInsetAllowed(Inset *) const { return false; }
///
int x() const { return top_x; }
///
int y() const { return top_baseline; }
+ ///
+ /// because we could have fake text insets and have to call this
+ /// inside them without cast!!!
+ virtual LyXText * getLyXText(BufferView *) const;
+ virtual void deleteLyXText(BufferView *, bool =true) const {}
+ virtual void resizeLyXText(BufferView *) const {}
protected:
///
///
UpdatableInset() { scx = mx_scx = 0; }
///
- //virtual ~UpdatableInset() {}
- ///
virtual EDITABLE Editable() const;
/// may call ToggleLockedInsetCursor
///
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);