X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetert.h;h=86c9694e5fe57380bae394f5f67cdef36a5aa3a0;hb=b0eb70e869128e30ab7e4538aa32a244fd4cea57;hp=eddcd292c7a8ce58b0588570b552bd2688780bdd;hpb=7521b5d20f42102cf444e3fd8718a088a60d0098;p=lyx.git diff --git a/src/insets/insetert.h b/src/insets/insetert.h index eddcd292c7..86c9694e5f 100644 --- a/src/insets/insetert.h +++ b/src/insets/insetert.h @@ -1,57 +1,166 @@ // -*- C++ -*- -/* This file is part of - * ====================================================== - * - * LyX, The Document Processor +/** + * \file insetert.h + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * - * Copyright 1998 The LyX Team. + * \author Jürgen Vigna + * \author Lars Gullik Bjønnes * - *====================================================== + * Full author contact details are available in file CREDITS. */ -// The pristine updatable inset: Text - #ifndef INSETERT_H #define INSETERT_H -#ifdef __GNUG__ -#pragma interface -#endif #include "insetcollapsable.h" -/** A colapsable text inset - +/** A collapsable text inset for LaTeX insertions. + To write full ert (including styles and other insets) in a given - space. + space. + + Note that collapsed_ encompasses both the inline and collapsed button + versions of this inset. */ + +class Language; + class InsetERT : public InsetCollapsable { public: /// - InsetERT(); + enum ERTStatus { + Open, + Collapsed, + Inlined + }; + /// + InsetERT(BufferParams const &, bool collapsed = false); + /// + InsetERT(InsetERT const &); + /// + virtual std::auto_ptr clone() const; + /// + InsetERT(BufferParams const &, + Language const *, std::string const & contents, bool collapsed); + /// + ~InsetERT(); + /// + InsetOld::Code lyxCode() const { return InsetOld::ERT_CODE; } + /// + void read(Buffer const & buf, LyXLex & lex); /// - virtual void write(Buffer const * buf, std::ostream & os) const; + void write(Buffer const & buf, std::ostream & os) const; /// - virtual Inset * clone(Buffer const &, bool same_id = false) const; + std::string const editMessage() const; /// - virtual string const editMessage() const; + bool insertInset(BufferView *, InsetOld *); /// - virtual bool insertInset(BufferView *, Inset *); + bool insetAllowed(InsetOld::Code code) const { return code == InsetOld::NEWLINE_CODE; } /// - virtual void setFont(BufferView *, LyXFont const &, + void setFont(BufferView *, LyXFont const &, bool toggleall = false, bool selectall = false); /// - virtual void edit(BufferView *, int, int, unsigned int); + EDITABLE editable() const; /// - virtual int latex(Buffer const *, std::ostream &, bool fragile, - bool free_spc) const; + int latex(Buffer const &, std::ostream &, + LatexRunParams const &) const; /// - virtual int ascii(Buffer const *, + int ascii(Buffer const &, std::ostream &, int linelen = 0) const; /// - virtual int linuxdoc(Buffer const *, std::ostream &) const; + int linuxdoc(Buffer const &, std::ostream &) const; + /// + int docbook(Buffer const &, std::ostream &, bool mixcont) const; + /// + void validate(LaTeXFeatures &) const {} + /// + bool checkInsertChar(LyXFont &); + /// + // these are needed here because of the label/inlined functionallity + /// + bool isOpen() const { return status_ == Open || status_ == Inlined; } + /// + bool inlined() const { return status_ == Inlined; } + /// + ERTStatus status() const { return status_; } + /// + void open(BufferView *); + /// + void close(BufferView *) const; + /// + bool allowSpellcheck() const { return false; } + + WordLangTuple const + selectNextWordToSpellcheck(BufferView *, float &) const; + /// + void metrics(MetricsInfo &, Dimension &) const; + /// + void draw(PainterInfo & pi, int x, int y) const; + /// set the status of the inset + void status(BufferView *, ERTStatus const st) const; + /// + bool showInsetDialog(BufferView *) const; + /// + void getDrawFont(LyXFont &) const; + /// + bool forceDefaultParagraphs(InsetOld const *) const { + return true; + } +protected: + /// + virtual + DispatchResult + priv_dispatch(FuncRequest const &, idx_type &, pos_type &); +private: + /// + void lfunMousePress(FuncRequest const &); + /// + // the bool return is used to see if we opened a dialog so that we can + // check this from an outer inset and open the dialog of the outer inset + // if that one has one! + /// + bool lfunMouseRelease(FuncRequest const &); + /// + void lfunMouseMotion(FuncRequest const &); + /// + void init(); + /// + std::string const get_new_label() const; + /// + void setButtonLabel() const; + /// + void set_latex_font(BufferView *); + /// update status on button + void updateStatus(BufferView *, bool = false) const; + + /// + mutable ERTStatus status_; +}; + + +#include "mailinset.h" + +class InsetERTMailer : public MailInset { +public: + /// + InsetERTMailer(InsetERT & inset); + /// + virtual InsetBase & inset() const { return inset_; } + /// + virtual std::string const & name() const { return name_; } + /// + virtual std::string const inset2string(Buffer const &) const; + /// + static void string2params(std::string const &, InsetERT::ERTStatus &); + /// + static std::string const params2string(InsetERT::ERTStatus); +private: + /// + static std::string const name_; /// - virtual int docBook(Buffer const *, std::ostream &) const; + InsetERT & inset_; }; #endif