X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetinclude.h;h=9aed79b72bf9b6013829448e171689f36743be29;hb=3c7232560282456bae466ef66e69d3eb511500fd;hp=a4a24d141ba2778a204ca4326b828ee2b08203fb;hpb=c22b132ede62d12110a4cb273160eb0a7e36f6e0;p=lyx.git diff --git a/src/insets/insetinclude.h b/src/insets/insetinclude.h index a4a24d141b..9aed79b72b 100644 --- a/src/insets/insetinclude.h +++ b/src/insets/insetinclude.h @@ -3,9 +3,9 @@ * ====================================================== * * LyX, The Document Processor - * + * * Copyright 1997 LyX Team (this file was created this year) - * + * * ====================================================== */ #ifndef INSET_INCLUDE_H @@ -17,6 +17,8 @@ #include "insetcommand.h" +#include + class Buffer; struct LaTeXFeatures; @@ -24,155 +26,125 @@ struct LaTeXFeatures; /** Used to include files */ -class InsetInclude: public InsetCommand { +class InsetInclude: public InsetButton, boost::noncopyable { public: + /// the type of inclusion + enum Flags { + /// + INCLUDE = 0, + /// + VERB = 1, + /// + INPUT = 2, + /// + VERBAST = 3 + }; + + struct Params { + Params(InsetCommandParams const & cp = InsetCommandParams(), + Flags f = INCLUDE, + bool nl = false, + string const & name = string()) + : cparams(cp), flag(f), noload(nl), + masterFilename_(name) {} + InsetCommandParams cparams; + Flags flag; + bool noload; + string masterFilename_; + + /// + bool operator==(Params const &) const; + /// + bool operator!=(Params const &) const; + }; + + /// + InsetInclude(Params const &); /// - InsetInclude(InsetCommandParams const &, Buffer *); + InsetInclude(InsetCommandParams const &, Buffer const &); /// ~InsetInclude(); - /// - Inset * Clone() const; + + /// get the parameters + Params const & params(void) const; + /// set the parameters + void set(Params const & params); + /// - 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 Edit(BufferView *, int x, int y, unsigned int button); + void edit(BufferView *, int x, int y, mouse_button::state button); + /// + void edit(BufferView * bv, bool front = true); /// - 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 &); - /// - int Latex(Buffer const *, std::ostream &, bool fragile, bool free_spc) const; + /// With lyx3 we won't overload these 3 methods + void write(Buffer const *, std::ostream &) const; /// - int Linuxdoc(Buffer const *, std::ostream &) const; + void read(Buffer const *, LyXLex &); /// - int DocBook(Buffer const *, std::ostream &) const; + int latex(Buffer const *, std::ostream &, + bool fragile, bool free_spc) const; /// - void Validate(LaTeXFeatures &) const; - - /** Input inserts anything inside a paragraph. - Display can give some visual feedback - */ - bool display() const; - /// - string const getScreenLabel() const; - /// - string const getMasterFilename() const; - /// - string const getFileName() const; - - /// In "input" mode uses \input instead of \include. - bool isInput() const { return flag == InsetInclude::INPUT; } - /// If this is true, the child file shouldn't be loaded by lyx - bool isNoLoad() const { return noload; } - - /** A verbatim file shouldn't be loaded by LyX - * No need to generate LaTeX code of a verbatim file - */ - bool isVerb() const; - /// - bool isVerbVisibleSpace() const { - return flag == InsetInclude::VERBAST; - } - /// - bool isInclude() const { return flag == InsetInclude::INCLUDE;} - /// - void setInput(); - /// - void setNoLoad(bool); - /// - void setInclude(); - /// - void setVerb(); - /// - void setVisibleSpace(bool b); - /// return true if the file is or got loaded. - bool loadIfNeeded() const; -private: - /// - enum Include_Flags { - /// - INCLUDE= 0, - /// - VERB = 1, - /// - INPUT = 2, - /// - VERBAST = 3 - }; - + int ascii(Buffer const *, std::ostream &, int linelen) const; /// - bool noload; + int linuxdoc(Buffer const *, std::ostream &) const; /// - int flag; - /// - Buffer * master; + int docbook(Buffer const *, std::ostream &) const; /// - string include_label; -}; + void validate(LaTeXFeatures &) const; + /** Input inserts anything inside a paragraph. + Display can give some visual feedback + */ + bool display() const; -inline -bool InsetInclude::isVerb() const -{ - return flag == InsetInclude::VERB || flag == InsetInclude::VERBAST; -} + /// return the filename stub of the included file + string const getRelFileBaseName() const; + /// return true if the included file is not loaded + bool isIncludeOnly() const; -inline -void InsetInclude::setInput() -{ - if (!isInput()) { - flag = InsetInclude::INPUT; - setCmdName("input"); - } -} - + /// return true if the file is or got loaded. + bool loadIfNeeded() const; -inline -void InsetInclude::setNoLoad(bool b) -{ - noload = b; -} + /// hide a dialog if about + boost::signal0 hideDialog; +private: + /// get the text displayed on the button + 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; + + /// the parameters + Params params_; + /// holds the entity name that defines the file location (SGML) + string const include_label; +}; -inline -void InsetInclude::setInclude() +inline bool InsetInclude::isVerbatim() const { - if (!isInclude()) { - flag = InsetInclude::INCLUDE; - setCmdName("include"); - } + return params_.flag == VERB || params_.flag == VERBAST; } -inline -void InsetInclude::setVerb() -{ - if (!isVerb()) { - flag = InsetInclude::VERB; - setCmdName("verbatiminput"); - } -} - - -inline -void InsetInclude::setVisibleSpace(bool b) +inline bool InsetInclude::isIncludeOnly() const { - if (b && flag == InsetInclude::VERB) { - setCmdName("verbatiminput*"); - flag = InsetInclude::VERBAST; - } else if (!b && flag == InsetInclude::VERBAST) { - setCmdName("verbatiminput"); - flag = InsetInclude::VERB; - } + return params_.flag == INCLUDE && params_.noload; } + #endif