X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Flyxinset.h;h=401884e6d71ab6e91603e3bdb7ca79aacfcc244b;hb=3c8aba3b556871fb1100a2f98cd93d5d4e3f70c9;hp=2a007b8d027d78bb62093224dd37c699db920410;hpb=9cdcc414983ddd1d9b3c7a4b26e6ae961ac718ac;p=lyx.git diff --git a/src/insets/lyxinset.h b/src/insets/lyxinset.h index 2a007b8d02..401884e6d7 100644 --- a/src/insets/lyxinset.h +++ b/src/insets/lyxinset.h @@ -4,8 +4,7 @@ * * LyX, The Document Processor * - * Copyright 1995 Matthias Ettrich - * Copyright 1995-1999 the LyX Team. + * Copyright 1995-2000 the LyX Team. * * ====================================================== */ @@ -16,6 +15,8 @@ #pragma interface #endif +#include + #include "gettext.h" #include "lyxfont.h" #include "lyxlex.h" @@ -26,6 +27,8 @@ class BufferView; struct LaTeXFeatures; + + /// Insets class Inset { public: @@ -78,9 +81,27 @@ 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() {} /// @@ -95,35 +116,46 @@ public: /// 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 { @@ -145,8 +177,21 @@ public: 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; }; @@ -184,6 +229,8 @@ public: 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 @@ -192,22 +239,29 @@ public: 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); @@ -226,9 +280,12 @@ public: 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; } /// @@ -237,15 +294,19 @@ public: 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);