]> git.lyx.org Git - lyx.git/blobdiff - src/insets/insetinclude.C
clear()->erase() ; lots of using directives for cxx
[lyx.git] / src / insets / insetinclude.C
index cafba467dd0afa6ff3e53119ef5516d1c37b12fb..1d28e3347b4e8ab3b3389c3a5a03c663182e5127 100644 (file)
@@ -7,8 +7,8 @@
 #endif
 
 #include FORMS_H_LOCATION 
-#include "filedlg.h" 
 #include "insetinclude.h"
+#include "filedlg.h" 
 #include "buffer.h"
 #include "bufferlist.h"
 #include "debug.h"
 #include "include_form.h"
 #include "support/FileInfo.h"
 #include "layout.h"
+#include "lyxfunc.h"
+
+using std::ostream;
+using std::endl;
 
 extern BufferView * current_view;
 
-extern LyXRC * lyxrc;
 extern BufferList bufferlist;
-extern void UpdateInset(Inset * inset, bool mark_dirty = true);
 
 
 FD_include * create_form_include(void)
@@ -108,7 +110,7 @@ extern "C" void include_cb(FL_OBJECT *, long arg)
                 else
                         ext = "*.lyx";
                // launches dialog
-               fileDlg.SetButton(0, _("Documents"), lyxrc->document_path);
+               fileDlg.SetButton(0, _("Documents"), lyxrc.document_path);
     
                // Use by default the master's path
                string filename = fileDlg.Select(_("Select Child Document"),
@@ -145,7 +147,7 @@ extern "C" void include_cb(FL_OBJECT *, long arg)
                        }
                        
                        fl_hide_form(form->include);
-                       UpdateInset(inset);
+                       current_view->updateInset(inset, true);
                        break;
                } // fall through
                
@@ -166,7 +168,7 @@ extern "C" void include_cb(FL_OBJECT *, long arg)
                        }
                        
                        fl_hide_form(form->include);
-                       UpdateInset(inset);
+                       current_view->updateInset(inset, true);
                        current_view->owner()->getLyXFunc()->Dispatch(LFUN_CHILDOPEN, inset->getContents().c_str());
                 }
                 break;
@@ -210,7 +212,8 @@ InsetInclude::~InsetInclude()
        }
 }
 
-InsetInclude * InsetInclude::Clone() const
+
+Inset * InsetInclude::Clone() const
 { 
        InsetInclude * ii = new InsetInclude (contents, master); 
        ii->setNoLoad(isNoLoad());
@@ -225,10 +228,11 @@ InsetInclude * InsetInclude::Clone() const
        return ii;
 }
 
-void InsetInclude::Edit(int, int)
+
+void InsetInclude::Edit(BufferView * bv, int, int, unsigned int)
 {
-       if(current_view->buffer()->isReadonly())
-               WarnReadonly();
+       if(bv->buffer()->isReadonly())
+               WarnReadonly(bv->buffer()->fileName());
 
        if (!form) {
                 form = create_form_include();
@@ -258,9 +262,9 @@ void InsetInclude::Edit(int, int)
 }
 
 
-void InsetInclude::Write(FILE * file)
+void InsetInclude::Write(ostream & os) const
 {
-       fprintf(file, "Include %s\n", getCommand().c_str());
+       os << "Include " << getCommand() << "\n";
 }
 
 
@@ -280,6 +284,12 @@ void InsetInclude::Read(LyXLex & lex)
 }
 
 
+bool InsetInclude::display() const 
+{
+       return !isInput();
+}
+
+
 string InsetInclude::getScreenLabel() const
 {
        string temp;
@@ -300,6 +310,14 @@ string InsetInclude::getScreenLabel() const
 }
 
 
+void InsetInclude::setContents(string const & c)
+{
+       InsetCommand::setContents(c);
+       filename = MakeAbsPath(contents, 
+                              OnlyPath(getMasterFilename())); 
+}
+
+
 bool InsetInclude::loadIfNeeded() const
 {
        if (isNoLoad() || isVerb()) return false;
@@ -314,29 +332,19 @@ bool InsetInclude::loadIfNeeded() const
 }
 
 
-int InsetInclude::Latex(FILE * file, signed char /*fragile*/)
-{
-       string include_file;
-       signed char dummy = 0;
-       Latex(include_file, dummy);
-       fprintf(file, "%s", include_file.c_str());
-       return 0;
-}
-
-
-int InsetInclude::Latex(string & file, signed char /*fragile*/)
+int InsetInclude::Latex(ostream & os,
+                       bool /*fragile*/, bool /*fs*/) const
 {
-       string writefile, incfile;
-
        // Do nothing if no file name has been specified
        if (contents.empty())
                return 0;
     
        // Use += to force a copy of contents (JMarc)
-       incfile += contents;
+       // How does that force anything? (Lgb)
+       string incfile(contents);
 
        if (loadIfNeeded()) {
-               Buffer *tmp = bufferlist.getBuffer(getFileName());
+               Buffer * tmp = bufferlist.getBuffer(getFileName());
 
                if (tmp->params.textclass != master->params.textclass) {
                        lyxerr << "ERROR: Cannot handle include file `"
@@ -350,13 +358,13 @@ int InsetInclude::Latex(string & file, signed char /*fragile*/)
                }
                
                // write it to a file (so far the complete file)
-               writefile = ChangeExtension(getFileName(), ".tex", false);
+               string writefile = ChangeExtension(getFileName(), ".tex", false);
                if (!master->tmppath.empty()
                    && !master->niceFile) {
                        incfile = subst(incfile, '/','@');
-                       #ifdef __EMX__
+#ifdef __EMX__
                        incfile = subst(incfile, ':', '$');
-                       #endif
+#endif
                        writefile = AddName(master->tmppath, incfile);
                } else
                        writefile = getFileName();
@@ -372,29 +380,23 @@ int InsetInclude::Latex(string & file, signed char /*fragile*/)
        } 
 
        if (isVerb()) {
-               file += '\\';
-               file += command + '{';
-               file += incfile + '}';
+               os << '\\' << command << '{' << incfile << '}';
        } 
        else if (isInput()) {
                // \input wants file with extension (default is .tex)
                if (!IsLyXFilename(getFileName())) {
-                       file += '\\';
-                       file += command + '{';
-                       file += incfile + '}';
+                       os << '\\' << command << '{' << incfile << '}';
                } else {
-                       file += '\\';
-                       file += command + '{';
-                       file += ChangeExtension(incfile, ".tex", false)
-                               + '}';
+                       os << '\\' << command << '{'
+                          << ChangeExtension(incfile, ".tex", false)
+                          <<  '}';
                }
        } else {
                // \include don't want extension and demands that the
                // file really have .tex
-               file += '\\';
-               file += command + '{';
-               file +=         ChangeExtension(incfile, string(), false)
-                       + '}';
+               os << '\\' << command << '{'
+                  << ChangeExtension(incfile, string(), false)
+                  << '}';
        }
 
        return 0;
@@ -434,9 +436,9 @@ string InsetInclude::getLabel(int) const
 }
 
 
-int InsetInclude::GetNumberOfLabels() const {
+int InsetInclude::GetNumberOfLabels() const
+{
     string label;
-    int nl;
 
     if (loadIfNeeded()) {
        Buffer * tmp = bufferlist.getBuffer(getFileName());
@@ -444,20 +446,20 @@ int InsetInclude::GetNumberOfLabels() const {
        label = tmp->getReferenceList('\n');
        tmp->setParentName(getMasterFilename());
     }
-       nl = (label.empty())? 0: 1;
+    int nl = (label.empty())? 0: 1;
        
     return nl;
 }
 
 
-string InsetInclude::getKeys() const
+string InsetInclude::getKeys(char delim) const
 {
        string lst;
        
        if (loadIfNeeded()) {
                Buffer *tmp = bufferlist.getBuffer(getFileName());
                tmp->setParentName(""); 
-               lst =  tmp->getBibkeyList(',');
+               lst =  tmp->getBibkeyList(delim);
                tmp->setParentName(getMasterFilename());
        }