X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetinclude.C;h=1d28e3347b4e8ab3b3389c3a5a03c663182e5127;hb=3c8aba3b556871fb1100a2f98cd93d5d4e3f70c9;hp=9353fb97dcb552f8c583f699cd0b00c2541b995b;hpb=a94cb21697336d5e81e21d0f1ec2a8b8b78dbbcc;p=lyx.git diff --git a/src/insets/insetinclude.C b/src/insets/insetinclude.C index 9353fb97dc..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) @@ -35,47 +37,47 @@ FD_include * create_form_include(void) FD_include * fdui = (FD_include *) fl_calloc(1, sizeof(FD_include)); fdui->include = fl_bgn_form(FL_NO_BOX, 340, 210); - obj = fl_add_box(FL_UP_BOX,0,0,340,210,""); - obj = fl_add_frame(FL_ENGRAVED_FRAME,10,70,160,90,""); - fdui->browsebt = obj = fl_add_button(FL_NORMAL_BUTTON,230,30,100,30,idex(_("Browse|#B"))); - fl_set_button_shortcut(obj,scex(_("Browse|#B")),1); - fl_set_object_lsize(obj,FL_NORMAL_SIZE); - fl_set_object_callback(obj,include_cb,0); - fdui->flag1 = obj = fl_add_checkbutton(FL_PUSH_BUTTON,180,70,150,30,idex(_("Don't typeset|#D"))); - fl_set_button_shortcut(obj,scex(_("Don't typeset|#D")),1); - fl_set_object_lsize(obj,FL_NORMAL_SIZE); - obj = fl_add_button(FL_RETURN_BUTTON,120,170,100,30,_("OK")); - fl_set_object_lsize(obj,FL_NORMAL_SIZE); - fl_set_object_callback(obj,include_cb,1); - obj = fl_add_button(FL_NORMAL_BUTTON,230,170,100,30,idex(_("Cancel|^["))); - fl_set_button_shortcut(obj,scex(_("Cancel|^[")),1); - fl_set_object_lsize(obj,FL_NORMAL_SIZE); - fl_set_object_callback(obj,include_cb,2); - obj = fl_add_button(FL_NORMAL_BUTTON,230,130,100,30,idex(_("Load|#L"))); - fl_set_button_shortcut(obj,scex(_("Load|#L")),1); - fl_set_object_lsize(obj,FL_NORMAL_SIZE); - fl_set_object_callback(obj,include_cb,5); - fdui->input = obj = fl_add_input(FL_NORMAL_INPUT,10,30,210,30,idex(_("File name:|#F"))); - fl_set_input_shortcut(obj,scex(_("File name:|#F")),1); - fl_set_object_lsize(obj,FL_NORMAL_SIZE); - fl_set_object_lalign(obj,FL_ALIGN_TOP_LEFT); - fdui->flag41 = obj = fl_add_checkbutton(FL_PUSH_BUTTON,180,100,150,30,idex(_("Visible space|#s"))); - fl_set_button_shortcut(obj,scex(_("Visible space|#s")),1); - fl_set_object_lsize(obj,FL_NORMAL_SIZE); + obj = fl_add_box(FL_UP_BOX, 0, 0, 340, 210, ""); + obj = fl_add_frame(FL_ENGRAVED_FRAME, 10, 70, 160, 90, ""); + fdui->browsebt = obj = fl_add_button(FL_NORMAL_BUTTON, 230, 30, 100, 30, idex(_("Browse|#B"))); + fl_set_button_shortcut(obj, scex(_("Browse|#B")), 1); + fl_set_object_lsize(obj, FL_NORMAL_SIZE); + fl_set_object_callback(obj, include_cb, 0); + fdui->flag1 = obj = fl_add_checkbutton(FL_PUSH_BUTTON, 180, 70, 150, 30, idex(_("Don't typeset|#D"))); + fl_set_button_shortcut(obj, scex(_("Don't typeset|#D")), 1); + fl_set_object_lsize(obj, FL_NORMAL_SIZE); + obj = fl_add_button(FL_RETURN_BUTTON, 120, 170, 100, 30, _("OK")); + fl_set_object_lsize(obj, FL_NORMAL_SIZE); + fl_set_object_callback(obj, include_cb, 1); + obj = fl_add_button(FL_NORMAL_BUTTON, 230, 170, 100, 30, idex(_("Cancel|^["))); + fl_set_button_shortcut(obj, scex(_("Cancel|^[")), 1); + fl_set_object_lsize(obj, FL_NORMAL_SIZE); + fl_set_object_callback(obj, include_cb, 2); + obj = fl_add_button(FL_NORMAL_BUTTON, 230, 130, 100, 30, idex(_("Load|#L"))); + fl_set_button_shortcut(obj, scex(_("Load|#L")), 1); + fl_set_object_lsize(obj, FL_NORMAL_SIZE); + fl_set_object_callback(obj, include_cb, 5); + fdui->input = obj = fl_add_input(FL_NORMAL_INPUT, 10, 30, 210, 30, idex(_("File name:|#F"))); + fl_set_input_shortcut(obj, scex(_("File name:|#F")), 1); + fl_set_object_lsize(obj, FL_NORMAL_SIZE); + fl_set_object_lalign(obj, FL_ALIGN_TOP_LEFT); + fdui->flag41 = obj = fl_add_checkbutton(FL_PUSH_BUTTON, 180, 100, 150, 30, idex(_("Visible space|#s"))); + fl_set_button_shortcut(obj, scex(_("Visible space|#s")), 1); + fl_set_object_lsize(obj, FL_NORMAL_SIZE); fdui->include_grp = fl_bgn_group(); - fdui->flag4 = obj = fl_add_checkbutton(FL_RADIO_BUTTON,10,130,160,30,idex(_("Verbatim|#V"))); - fl_set_button_shortcut(obj,scex(_("Verbatim|#V")),1); - fl_set_object_lsize(obj,FL_NORMAL_SIZE); - fl_set_object_callback(obj,include_cb,10); - fdui->flag2 = obj = fl_add_checkbutton(FL_RADIO_BUTTON,10,100,160,30,idex(_("Use input|#i"))); - fl_set_button_shortcut(obj,scex(_("Use input|#i")),1); - fl_set_object_lsize(obj,FL_NORMAL_SIZE); - fl_set_object_callback(obj,include_cb,11); - fdui->flag3 = obj = fl_add_checkbutton(FL_RADIO_BUTTON,10,70,160,30,idex(_("Use include|#U"))); - fl_set_button_shortcut(obj,scex(_("Use include|#U")),1); - fl_set_object_lsize(obj,FL_NORMAL_SIZE); - fl_set_object_callback(obj,include_cb,11); + fdui->flag4 = obj = fl_add_checkbutton(FL_RADIO_BUTTON, 10, 130, 160, 30, idex(_("Verbatim|#V"))); + fl_set_button_shortcut(obj, scex(_("Verbatim|#V")), 1); + fl_set_object_lsize(obj, FL_NORMAL_SIZE); + fl_set_object_callback(obj, include_cb, 10); + fdui->flag2 = obj = fl_add_checkbutton(FL_RADIO_BUTTON, 10, 100, 160, 30, idex(_("Use input|#i"))); + fl_set_button_shortcut(obj, scex(_("Use input|#i")), 1); + fl_set_object_lsize(obj, FL_NORMAL_SIZE); + fl_set_object_callback(obj, include_cb, 11); + fdui->flag3 = obj = fl_add_checkbutton(FL_RADIO_BUTTON, 10, 70, 160, 30, idex(_("Use include|#U"))); + fl_set_button_shortcut(obj, scex(_("Use include|#U")), 1); + fl_set_object_lsize(obj, FL_NORMAL_SIZE); + fl_set_object_callback(obj, include_cb, 11); fl_end_group(); fl_end_form(); @@ -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() } } -Inset * InsetInclude::Clone() + +Inset * InsetInclude::Clone() const { InsetInclude * ii = new InsetInclude (contents, master); ii->setNoLoad(isNoLoad()); @@ -225,10 +228,11 @@ Inset * InsetInclude::Clone() 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(); @@ -252,15 +256,15 @@ void InsetInclude::Edit(int, int) if (form->include->visible) { fl_raise_form(form->include); } else { - fl_show_form(form->include,FL_PLACE_MOUSE, FL_FULLBORDER, + fl_show_form(form->include, FL_PLACE_MOUSE, FL_FULLBORDER, _("Include")); } } -void InsetInclude::Write(FILE * file) +void InsetInclude::Write(ostream & os) const { - fprintf(file, "Include %s\n", getCommand().c_str()); + os << "Include " << getCommand() << "\n"; } @@ -268,7 +272,7 @@ void InsetInclude::Read(LyXLex & lex) { InsetCommand::Read(lex); - if (getCmdName()=="include") + if (getCmdName() == "include") setInclude(); else if (getCmdName() == "input") setInput(); @@ -280,6 +284,12 @@ void InsetInclude::Read(LyXLex & lex) } +bool InsetInclude::display() const +{ + return !isInput(); +} + + string InsetInclude::getScreenLabel() const { string temp; @@ -292,14 +302,22 @@ string InsetInclude::getScreenLabel() const temp += ": "; if (contents.empty()) { - temp+="???"; + temp+= "???"; } else { - temp+=contents; + temp+= contents; } return temp; } +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,17 +358,17 @@ 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(); - writefile = ChangeExtension(writefile,".tex",false); + writefile = ChangeExtension(writefile, ".tex", false); lyxerr[Debug::LATEX] << "incfile:" << incfile << endl; lyxerr[Debug::LATEX] << "writefile:" << writefile << endl; @@ -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()); }