*
* LyX, The Document Processor
*
- * Copyright 1995 Matthias Ettrich
* Copyright 1995-2000 the LyX Team.
*
* ====================================================== */
#pragma interface
#endif
+#include <X11/Xlib.h>
+
#include "gettext.h"
#include "lyxfont.h"
#include "lyxlex.h"
-using std::ostream;
-
class Painter;
class Buffer;
class BufferView;
struct LaTeXFeatures;
+
/// Insets
class Inset {
public:
///
SPECIALCHAR_CODE,
///
- NUMBER_CODE
+ TABULAR_CODE
};
enum EDITABLE {
HIGHLY_EDITABLE
};
+ ///
+ Inset() { owner_ = 0; }
///
virtual ~Inset() {}
///
///
virtual LyXFont ConvertFont(LyXFont font);
/// what appears in the minibuffer when opening
- virtual const char * EditMessage() const {return _("Opened inset");}
+ virtual const char * EditMessage() const;
///
virtual void Edit(BufferView *, int x, int y, unsigned int button);
///
virtual EDITABLE Editable() const;
///
+ virtual void InsetButtonPress(BufferView *, int, int, int) {}
+ ///
+ virtual void InsetButtonRelease(BufferView *, int, int, int) {}
+ ///
+ virtual void InsetMotionNotify(BufferView *, int , int , int) {}
+ ///
bool IsTextInset() const;
///
virtual bool AutoDelete() const;
///
- virtual void Write(ostream &) const = 0;
+ virtual void Write(std::ostream &) const = 0;
///
virtual void Read(LyXLex & lex) = 0;
/** returns the number of rows (\n's) of generated tex code.
- fragile != 0 means, that the inset should take care about
+ fragile == true means, that the inset should take care about
fragile commands by adding a \protect before.
- If the freee_spc (freespacing) variable is set, then this inset
+ If the free_spc (freespacing) variable is set, then this inset
is in a free-spacing paragraph.
*/
- virtual int Latex(ostream &, signed char fragile,
+ virtual int Latex(std::ostream &, bool fragile,
bool free_spc) const = 0;
-
///
- virtual int Linuxdoc(ostream &) const = 0;
+ virtual int Ascii(std::ostream &) const = 0;
+ ///
+ virtual int Linuxdoc(std::ostream &) const = 0;
///
- virtual int DocBook(ostream &) const = 0;
+ virtual int DocBook(std::ostream &) const = 0;
/// Updates needed features for this inset.
virtual void Validate(LaTeXFeatures & features) const;
///
return 0;
}
///
- virtual void init(BufferView *) {}
-
+ virtual bool InsertInsetAllowed(Inset *) const { return false; }
+ ///
+ virtual void setInsetName(const char * s) { name = s; }
+ ///
+ virtual string getInsetName() const { return name; }
+ ///
+ virtual void setOwner(Inset * inset) { owner_ = inset; }
+ ///
+ virtual Inset * owner() const { return owner_; }
+ ///
+private:
+ ///
+ Inset * owner_;
+ ///
+ string name;
};
are not enough.
DISPATCHED = the inset catched the action
+ DISPATCHED_NOUPDATE = the inset catched the action and no update
+ is needed here to redraw the inset
FINISHED = the inset must be unlocked as a result
of the action
UNDISPATCHED = the action was not catched, it should be
enum RESULT {
UNDISPATCHED = 0,
DISPATCHED,
+ DISPATCHED_NOUPDATE,
FINISHED
};
}
///
- UpdatableInset() {
- scx = mx_scx = 0;
- owner_ = 0;
- }
+ UpdatableInset() { scx = mx_scx = 0; }
///
//virtual ~UpdatableInset() {}
///
/// may call ToggleLockedInsetCursor
virtual void ToggleInsetCursor(BufferView *);
///
+ virtual void ShowInsetCursor(BufferView *);
+ ///
+ virtual void HideInsetCursor(BufferView *);
+ ///
virtual void GetCursorPos(int &, int &) const {}
///
virtual void InsetButtonPress(BufferView *, int x, int y, int button);
///
virtual bool InsertInset(BufferView *, Inset *) { return false; }
///
+ virtual bool InsertInsetAllowed(Inset *) const { return true; }
+ ///
virtual UpdatableInset * GetLockingInset() { return this; }
///
virtual int InsetInInsetY() { return 0; }
virtual bool UpdateInsetInInset(BufferView *, Inset *)
{ return false; }
///
- virtual bool UnlockInsetInInset(BufferView *, Inset *,
+ virtual bool LockInsetInInset(BufferView *, UpdatableInset *)
+ { return false; }
+ ///
+ virtual bool UnlockInsetInInset(BufferView *, UpdatableInset *,
bool /*lr*/ = false)
{ return false; }
/// An updatable inset could handle lyx editing commands
///
virtual bool isCursorVisible() const { return cursor_visible; }
///
- virtual int getMaxWidth(Painter & pain) const;
- ///
- virtual void setOwner(UpdatableInset * inset) { owner_ = inset; }
- ///
- virtual UpdatableInset * owner() { return owner_; }
+ virtual int getMaxWidth(Painter & pain, UpdatableInset const *) const;
protected:
///
///
int mx_scx;
mutable int scx;
- ///
- UpdatableInset * owner_;
-
};
#endif