]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetInclude.cpp
Fix text frame drawing.
[lyx.git] / src / insets / InsetInclude.cpp
index d2bd3652ef7ac4c7358b9bc10434ce1bae551efe..82a48be4f9b6987e170e9d2499f77eb2f3bef733 100644 (file)
@@ -81,7 +81,6 @@ using support::sum;
 
 using std::endl;
 using std::string;
-using std::auto_ptr;
 using std::istringstream;
 using std::ostream;
 using std::ostringstream;
@@ -279,9 +278,9 @@ void InsetInclude::set(InsetCommandParams const & p, Buffer const & buffer)
 }
 
 
-auto_ptr<Inset> InsetInclude::doClone() const
+Inset * InsetInclude::clone() const
 {
-       return auto_ptr<Inset>(new InsetInclude(*this));
+       return new InsetInclude(*this);
 }
 
 
@@ -482,7 +481,7 @@ int InsetInclude::latex(Buffer const & buffer, odocstream & os,
 
                Buffer * tmp = theBufferList().getBuffer(included_file.absFilename());
 
-               if (tmp->params().textclass != m_buffer->params().textclass) {
+               if (tmp->params().getBaseClass() != m_buffer->params().getBaseClass()) {
                        // FIXME UNICODE
                        docstring text = bformat(_("Included file `%1$s'\n"
                                                "has textclass `%2$s'\n"
@@ -493,6 +492,26 @@ int InsetInclude::latex(Buffer const & buffer, odocstream & os,
                        Alert::warning(_("Different textclasses"), text);
                        //return 0;
                }
+               
+               // Make sure modules used in child are all included in master
+               //FIXME It might be worth loading the children's modules into the master
+               //over in BufferParams rather than doing this check.
+               vector<string> const masterModules = m_buffer->params().getModules();
+               vector<string> const childModules = tmp->params().getModules();
+               vector<string>::const_iterator it = childModules.begin();
+               vector<string>::const_iterator end = childModules.end();
+               for (; it != end; ++it) {
+                       string const module = *it;
+                       vector<string>::const_iterator found = 
+                               find(masterModules.begin(), masterModules.end(), module);
+                       if (found != masterModules.end()) {
+                               docstring text = bformat(_("Included file `%1$s'\n"
+                                                       "uses module `%2$s'\n"
+                                                       "which is not used in parent file."),
+                                      makeDisplayPath(included_file.absFilename()), from_utf8(module));
+                               Alert::warning(_("Module not found"), text);
+                       }
+               }
 
                tmp->markDepClean(m_buffer->temppath());
 
@@ -939,6 +958,16 @@ void InsetInclude::updateLabels(Buffer const & buffer,
 }
 
 
+void InsetInclude::registerEmbeddedFiles(Buffer const & buffer,
+       EmbeddedFiles & files, ParConstIterator const & pit) const
+{
+       // include and input are temprarily not considered.
+       if (isVerbatim(params_) || isListings(params_))
+               files.registerFile(includedFilename(buffer, params_).absFilename(),
+                       EmbeddedFile::AUTO, pit);
+}
+
+
 string const InsetIncludeMailer::name_("include");
 
 InsetIncludeMailer::InsetIncludeMailer(InsetInclude & inset)