X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetert.h;h=86c9694e5fe57380bae394f5f67cdef36a5aa3a0;hb=b0eb70e869128e30ab7e4538aa32a244fd4cea57;hp=0ba3405cb3f30b3ff538a7e4d699a7911e0edda9;hpb=45a03f4f67bb00f8142e465c615f348f0622eb32;p=lyx.git diff --git a/src/insets/insetert.h b/src/insets/insetert.h index 0ba3405cb3..86c9694e5f 100644 --- a/src/insets/insetert.h +++ b/src/insets/insetert.h @@ -1,46 +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); + /// + void write(Buffer const & buf, std::ostream & os) const; + /// + std::string const editMessage() const; + /// + bool insertInset(BufferView *, InsetOld *); + /// + bool insetAllowed(InsetOld::Code code) const { return code == InsetOld::NEWLINE_CODE; } + /// + void setFont(BufferView *, LyXFont const &, + bool toggleall = false, bool selectall = false); + /// + EDITABLE editable() const; + /// + int latex(Buffer const &, std::ostream &, + LatexRunParams const &) const; + /// + int ascii(Buffer const &, + std::ostream &, int linelen = 0) 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_; } /// - void Write(Buffer const * buf, std::ostream & os) const; + virtual std::string const & name() const { return name_; } /// - Inset * Clone() const; + virtual std::string const inset2string(Buffer const &) const; /// - string const EditMessage() const; + static void string2params(std::string const &, InsetERT::ERTStatus &); /// - bool InsertInset(BufferView *, Inset *) { return false; } + static std::string const params2string(InsetERT::ERTStatus); +private: /// - void SetFont(BufferView *, LyXFont const &, bool toggleall = false); + static std::string const name_; /// - void Edit(BufferView *, int, int, unsigned int); + InsetERT & inset_; }; #endif