*
* LyX, The Document Processor
*
- * Copyright 1995 Matthias Ettrich
- * Copyright 1995-1999 the LyX Team.
+ * Copyright 1995-2000 the LyX Team.
*
* ====================================================== */
#pragma interface
#endif
+#include <X11/Xlib.h>
+
#include "gettext.h"
#include "lyxfont.h"
#include "lyxlex.h"
struct LaTeXFeatures;
+
+
/// Insets
class Inset {
public:
///
BIBTEX_CODE,
///
- TEXT_CODE
+ TEXT_CODE,
+ ///
+ ERT_CODE,
+ ///
+ FOOT_CODE,
+ ///
+ MARGIN_CODE,
+ ///
+ SPECIALCHAR_CODE,
+ ///
+ TABULAR_CODE
+ };
+
+ enum EDITABLE {
+ NOT_EDITABLE = 0,
+ IS_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 unsigned char Editable() const;
+ 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 free_spc (freespacing) variable is set, then this inset
+ is in a free-spacing paragraph.
*/
- virtual int Latex(ostream &, signed char fragile) const = 0;
+ virtual int Latex(std::ostream &, bool fragile,
+ bool free_spc) const = 0;
///
- virtual int Latex(string & file, signed char fragile) const = 0;
+ virtual int Ascii(std::ostream &) const = 0;
///
- virtual int Linuxdoc(string & /*file*/) const = 0;
+ virtual int Linuxdoc(std::ostream &) const = 0;
///
- virtual int DocBook(string & /*file*/) const = 0;
+ virtual int DocBook(std::ostream &) const = 0;
/// Updates needed features for this inset.
virtual void Validate(LaTeXFeatures & features) const;
///
virtual bool Deletable() const;
/// returns LyX code associated with the inset. Used for TOC, ...)
- virtual Inset::Code LyxCode() const = 0;
+ virtual Inset::Code LyxCode() const { return NO_CODE; }
/// Get the label that appears at screen
virtual string getLabel(int) 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
};
/// To convert old binary dispatch results
RESULT DISPATCH_RESULT(bool b) {
- return (b) ? DISPATCHED: FINISHED;
+ return b ? DISPATCHED : FINISHED;
}
+ ///
+ UpdatableInset() { scx = mx_scx = 0; }
///
//virtual ~UpdatableInset() {}
///
- virtual unsigned char Editable() const;
+ virtual EDITABLE Editable() const;
/// 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 void draw(Painter &, LyXFont const &,
int baseline, float & x) const;
///
- virtual void SetFont(LyXFont const &, bool toggleall = false);
+ virtual void SetFont(BufferView *, LyXFont const &,
+ bool toggleall = false);
+ ///
+ virtual bool InsertInset(BufferView *, Inset *) { return false; }
///
- virtual bool InsertInset(Inset *) { return false; }
+ virtual bool InsertInsetAllowed(Inset *) const { return true; }
///
virtual UpdatableInset * GetLockingInset() { return this; }
///
virtual bool UpdateInsetInInset(BufferView *, Inset *)
{ return false; }
///
- virtual bool UnlockInsetInInset(BufferView *, Inset *,
- bool /*lr*/=false)
+ 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 RESULT LocalDispatch(BufferView *, int, string const &);
///
virtual bool isCursorVisible() const { return cursor_visible; }
///
- virtual int getMaxWidth(UpdatableInset *) const { return -1; }
+ virtual int getMaxWidth(Painter & pain, UpdatableInset const *) const;
+
protected:
///
// virtual void UpdateLocal(bool flag=true);