X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetinclude.C;h=f2e598dffcbcc15e16ba4aa92ca45df7c4707b47;hb=dbd7a961fc46bb10c85bdd8c7fb6626477ae63d8;hp=3e66d587a2961046a9b3b4419a65c14ae25d33a7;hpb=7521b5d20f42102cf444e3fd8718a088a60d0098;p=lyx.git diff --git a/src/insets/insetinclude.C b/src/insets/insetinclude.C index 3e66d587a2..f2e598dffc 100644 --- a/src/insets/insetinclude.C +++ b/src/insets/insetinclude.C @@ -1,26 +1,28 @@ - #include -#include - #ifdef __GNUG__ #pragma implementation #endif -#include "frontends/Dialogs.h" - #include "insetinclude.h" #include "buffer.h" #include "bufferlist.h" #include "BufferView.h" #include "debug.h" -#include "support/filetools.h" #include "lyxrc.h" #include "LyXView.h" #include "LaTeXFeatures.h" #include "gettext.h" +#include "lyxtextclasslist.h" + +#include "frontends/Dialogs.h" + +#include "support/filetools.h" #include "support/FileInfo.h" -#include "layout.h" +#include "support/lstrings.h" + +#include + using std::ostream; using std::endl; @@ -35,7 +37,7 @@ string const unique_id() { static unsigned int seed = 1000; - std::ostringstream ost; + ostringstream ost; ost << "file" << ++seed; // Needed if we use lyxstring. @@ -51,10 +53,10 @@ InsetInclude::InsetInclude(Params const & p) InsetInclude::InsetInclude(InsetCommandParams const & p, Buffer const & b) + : include_label(unique_id()) { params_.cparams = p; params_.masterFilename_ = b.fileName(); - include_label = unique_id(); } @@ -127,6 +129,12 @@ void InsetInclude::edit(BufferView * bv, int, int, unsigned int) } +void InsetInclude::edit(BufferView * bv, bool) +{ + edit(bv, 0, 0, 0); +} + + void InsetInclude::write(Buffer const *, ostream & os) const { os << "Include " << params_.cparams.getCommand() << "\n"; @@ -156,7 +164,7 @@ bool InsetInclude::display() const } -string const InsetInclude::getScreenLabel() const +string const InsetInclude::getScreenLabel(Buffer const *) const { string temp; @@ -210,8 +218,10 @@ bool InsetInclude::loadIfNeeded() const // the readonly flag can/will be wrong, not anymore I think. FileInfo finfo(getFileName()); - bool const ro = !finfo.writable(); - return bufferlist.readFile(getFileName(), ro) != 0; + if (!finfo.isOK()) + return false; + + return bufferlist.readFile(getFileName(), !finfo.writable()) != 0; } @@ -232,9 +242,9 @@ int InsetInclude::latex(Buffer const * buffer, ostream & os, lyxerr << "WARNING: Included file `" << MakeDisplayPath(getFileName()) << "' has textclass `" - << textclasslist.NameOfClass(tmp->params.textclass) + << textclasslist[tmp->params.textclass].name() << "' while parent file has textclass `" - << textclasslist.NameOfClass(buffer->params.textclass) + << textclasslist[buffer->params.textclass].name() << "'." << endl; //return 0; } @@ -285,7 +295,7 @@ int InsetInclude::latex(Buffer const * buffer, ostream & os, } -int InsetInclude::ascii(Buffer const *, std::ostream & os, int) const +int InsetInclude::ascii(Buffer const *, ostream & os, int) const { if (isVerbatim()) os << GetFileContents(getFileName()); @@ -306,7 +316,7 @@ int InsetInclude::linuxdoc(Buffer const * buffer, ostream & os) const // write it to a file (so far the complete file) string writefile = ChangeExtension(getFileName(), ".sgml"); - if (!buffer->tmppath.empty() && !buffer->niceFile) { + if (!buffer->tmppath.empty() && buffer->niceFile) { incfile = subst(incfile, '/','@'); writefile = AddName(buffer->tmppath, incfile); } else @@ -322,9 +332,9 @@ int InsetInclude::linuxdoc(Buffer const * buffer, ostream & os) const } if (isVerbatim()) { - os << "" - << ""; + os << ""; } else os << '&' << include_label << ';'; @@ -332,7 +342,7 @@ int InsetInclude::linuxdoc(Buffer const * buffer, ostream & os) const } -int InsetInclude::docBook(Buffer const * buffer, ostream & os) const +int InsetInclude::docbook(Buffer const * buffer, ostream & os) const { string incfile(params_.cparams.getContents()); @@ -345,7 +355,7 @@ int InsetInclude::docBook(Buffer const * buffer, ostream & os) const // write it to a file (so far the complete file) string writefile = ChangeExtension(getFileName(), ".sgml"); - if (!buffer->tmppath.empty() && !buffer->niceFile) { + if (!buffer->tmppath.empty() && buffer->niceFile) { incfile = subst(incfile, '/','@'); writefile = AddName(buffer->tmppath, incfile); } else @@ -360,9 +370,9 @@ int InsetInclude::docBook(Buffer const * buffer, ostream & os) const } if (isVerbatim()) { - os << "" - << ""; + os << ""; } else os << '&' << include_label << ';'; @@ -378,7 +388,7 @@ void InsetInclude::validate(LaTeXFeatures & features) const Buffer const * const b = bufferlist.getBuffer(getMasterFilename()); - if (b && !b->tmppath.empty() && b->niceFile) { + if (b && !b->tmppath.empty() && b->niceFile && !isVerbatim()) { incfile = subst(incfile, '/','@'); writefile = AddName(b->tmppath, incfile); } else @@ -387,10 +397,10 @@ void InsetInclude::validate(LaTeXFeatures & features) const if (IsLyXFilename(getFileName())) writefile = ChangeExtension(writefile, ".sgml"); - features.IncludedFiles[include_label] = writefile; + features.includeFile(include_label, writefile); if (isVerbatim()) - features.verbatim = true; + features.require("verbatim"); // Here we must do the fun stuff... // Load the file in the include if it needs