X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetinclude.h;h=99d930061e096f1eece840c6dfef3248c3783c68;hb=62be565337f08855dbbbeea9d90db2ce497d4c10;hp=83dd6271477c6c7f076e3dce002b650bd0f725a8;hpb=9356012089091a9c47b51ced9c27c516bf766637;p=lyx.git diff --git a/src/insets/insetinclude.h b/src/insets/insetinclude.h index 83dd627147..99d930061e 100644 --- a/src/insets/insetinclude.h +++ b/src/insets/insetinclude.h @@ -1,126 +1,136 @@ // -*- C++ -*- -/* This file is part of* - * ====================================================== +/** + * \file insetinclude.h + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * - * LyX, The Document Processor - * - * Copyright 1997 LyX Team (this file was created this year) + * \author Lars Gullik Bjønnes * - * ====================================================== */ + * Full author contact details are available in file CREDITS + */ #ifndef INSET_INCLUDE_H #define INSET_INCLUDE_H -#ifdef __GNUG__ -#pragma interface -#endif - #include "insetcommand.h" +#include + class Buffer; struct LaTeXFeatures; // Created by AAS 970521 -/** Used to include files - */ -class InsetInclude: public InsetButton, public noncopyable { +/// for including tex/lyx files +class InsetInclude: public InsetButton, boost::noncopyable { public: - /// the type of inclusion - enum IncludeFlags { - /// - INCLUDE= 0, - /// - VERB = 1, - /// - INPUT = 2, - /// - VERBAST = 3 + /// the type of inclusion + enum Flags { + INCLUDE = 0, //< + VERB = 1, //< + INPUT = 2, //< + VERBAST = 3 //< }; - struct InsetIncludeParams { - InsetIncludeParams(InsetCommandParams const & cp = InsetCommandParams(), - IncludeFlags f = INCLUDE, bool nl = false, Buffer const * b = 0) - : cparams(cp), flag(f), noload(nl), buffer(b) {} + struct Params { + Params(InsetCommandParams const & cp = InsetCommandParams("input"), + Flags f = INPUT, + string const & name = string()) + : cparams(cp), flag(f), + masterFilename_(name) {} + InsetCommandParams cparams; - IncludeFlags flag; - bool noload; - Buffer const * buffer; + Flags flag; + string masterFilename_; + + /// + bool operator==(Params const &) const; + /// + bool operator!=(Params const &) const; }; /// - InsetInclude(InsetIncludeParams const &); + InsetInclude(Params const &); /// InsetInclude(InsetCommandParams const &, Buffer const &); - /// + ~InsetInclude(); - /// get the parameters - InsetIncludeParams const & params(void) const; + /// + virtual dispatch_result localDispatch(FuncRequest const & cmd); + /// Override these InsetButton methods if Previewing + int ascent(BufferView *, LyXFont const &) const; + /// + int descent(BufferView *, LyXFont const &) const; + /// + int width(BufferView *, LyXFont const &) const; + /// + void draw(BufferView *, LyXFont const &, int, float &) const; + + /// get the parameters + Params const & params(void) const; /// set the parameters - void setFromParams(InsetIncludeParams const & params); + void set(Params const & params); - /// - Inset * Clone(Buffer const &) const; /// - Inset::Code LyxCode() const { return Inset::INCLUDE_CODE; } + virtual Inset * clone(Buffer const &, bool same_id = false) const; + /// + Inset::Code lyxCode() const { return Inset::INCLUDE_CODE; } /// This returns the list of labels on the child buffer std::vector const getLabelList() const; /// This returns the list of bibkeys on the child buffer - std::vector< std::pair > const getKeys() const; + void fillWithBibKeys(std::vector > & keys) const; /// - void Edit(BufferView *, int x, int y, unsigned int button); - /// - EDITABLE Editable() const + EDITABLE editable() const { return IS_EDITABLE; } - /// With lyx3 we won't overload these 3 methods - void Write(Buffer const *, std::ostream &) const; - /// - void Read(Buffer const *, LyXLex &); + /// With lyx3 we won't overload these 3 methods + void write(Buffer const *, std::ostream &) const; /// - int Latex(Buffer const *, std::ostream &, bool fragile, bool free_spc) const; + void read(Buffer const *, LyXLex &); /// - int Ascii(Buffer const *, std::ostream &, int linelen) const; + int latex(Buffer const *, std::ostream &, + bool fragile, bool free_spc) const; /// - int Linuxdoc(Buffer const *, std::ostream &) const; + int ascii(Buffer const *, std::ostream &, int linelen) const; /// - int DocBook(Buffer const *, std::ostream &) const; + int linuxdoc(Buffer const *, std::ostream &) const; /// - void Validate(LaTeXFeatures &) const; - - /** Input inserts anything inside a paragraph. - Display can give some visual feedback - */ - bool display() const; + int docbook(Buffer const *, std::ostream &, bool mixcont) const; + /// + void validate(LaTeXFeatures &) const; - /// return the filename stub of the included file - string const getRelFileBaseName() const; - - /// return true if the included file is not loaded - bool isIncludeOnly() const; + /// take up a whole row if we're not type INPUT + bool display() const; /// return true if the file is or got loaded. bool loadIfNeeded() const; - - /// hide a dialog if about - Signal0 hideDialog; + + /// + void addPreview(grfx::PreviewLoader &) const; + private: /// get the text displayed on the button - string const getScreenLabel() const; + string const getScreenLabel(Buffer const *) const; /// is this a verbatim include ? bool isVerbatim() const; - /// get the filename of the master buffer - string const getMasterFilename() const; - /// get the included file name - string const getFileName() const; + /// get the filename of the master buffer + string const getMasterFilename() const; + /// get the included file name + string const getFileName() const; /// the parameters - InsetIncludeParams params_; - /// - string include_label; + Params params_; + /// holds the entity name that defines the file location (SGML) + string const include_label; + + /// Use the Pimpl idiom to hide the internals of the previewer. + class PreviewImpl; + friend class PreviewImpl; + /// The pointer never changes although *preview_'s contents may. + boost::scoped_ptr const preview_; }; @@ -129,10 +139,27 @@ inline bool InsetInclude::isVerbatim() const return params_.flag == VERB || params_.flag == VERBAST; } +#include "mailinset.h" -inline bool InsetInclude::isIncludeOnly() const -{ - return params_.flag == INCLUDE && params_.noload; -} +class InsetIncludeMailer : public MailInset { +public: + /// + InsetIncludeMailer(InsetInclude & inset); + /// + virtual InsetBase & inset() const { return inset_; } + /// + virtual string const & name() const { return name_; } + /// + virtual string const inset2string() const; + /// + static void string2params(string const &, InsetInclude::Params &); + /// + static string const params2string(InsetInclude::Params const &); +private: + /// + static string const name_; + /// + InsetInclude & inset_; +}; -#endif +#endif // INSETINCLUDE_H