X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetinclude.C;h=1d28e3347b4e8ab3b3389c3a5a03c663182e5127;hb=3c8aba3b556871fb1100a2f98cd93d5d4e3f70c9;hp=cafba467dd0afa6ff3e53119ef5516d1c37b12fb;hpb=1d7d3cc4afa2205c801ccc2aa71c7ac59359dc5f;p=lyx.git diff --git a/src/insets/insetinclude.C b/src/insets/insetinclude.C index cafba467dd..1d28e3347b 100644 --- a/src/insets/insetinclude.C +++ b/src/insets/insetinclude.C @@ -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" @@ -21,12 +21,14 @@ #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()); }