X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetbib.C;h=7bebfb9d1fba3028f8881902b815f4a3227d342d;hb=3c8aba3b556871fb1100a2f98cd93d5d4e3f70c9;hp=dd34a47a2222afbf9f26610a10ac967ec5aa20d6;hpb=d6fa7c567c47f1af95f026174a83bf75dde08f84;p=lyx.git diff --git a/src/insets/insetbib.C b/src/insets/insetbib.C index dd34a47a22..7bebfb9d1f 100644 --- a/src/insets/insetbib.C +++ b/src/insets/insetbib.C @@ -2,6 +2,7 @@ #include using std::ifstream; +using std::getline; #include @@ -21,6 +22,9 @@ using std::ifstream; #include "lyxtext.h" #include "support/filetools.h" +using std::ostream; +using std::endl; + extern BufferView * current_view; FD_citation_form * citation_form = 0; @@ -220,7 +224,8 @@ InsetBibKey::InsetBibKey(InsetBibKey const * b): InsetBibKey::~InsetBibKey() { if(bibitem_form && bibitem_form->bibitem_form - && bibitem_form->bibitem_form->visible) + && bibitem_form->bibitem_form->visible + && bibitem_form->bibitem_form->u_vdata == &holder) fl_hide_form(bibitem_form->bibitem_form); } @@ -239,14 +244,13 @@ void InsetBibKey::setCounter(int c) // of time cause LyX3 won't use lyxlex anyway. (ale) void InsetBibKey::Write(ostream & os) const { - string s; + os << "\\bibitem "; if (!options.empty()) { - s += '['; - s += options + ']'; + os << '[' + << options << ']'; } - s += '{'; - s += contents + '}'; - os << "\\bibitem " << s << "\n"; + os << '{' + << contents << "}\n"; } @@ -304,24 +308,23 @@ InsetBibtex::InsetBibtex(string const & dbase, string const & style, { } - -string InsetBibtex::getScreenLabel() const +InsetBibtex::~InsetBibtex() { - return _("BibTeX Generated References"); + if(bibitem_form && bibitem_form->bibitem_form + && bibitem_form->bibitem_form->visible + && bibitem_form->bibitem_form->u_vdata == &holder) + fl_hide_form(bibitem_form->bibitem_form); } -int InsetBibtex::Latex(ostream & os, signed char /*fragile*/) const +string InsetBibtex::getScreenLabel() const { - string bib; - signed char dummy = 0; - int result = Latex(bib, dummy); - os << bib; - return result; + return _("BibTeX Generated References"); } -int InsetBibtex::Latex(string & file, signed char /*fragile*/) const +int InsetBibtex::Latex(ostream & os, + bool /*fragile*/, bool/*fs*/) const { // this looks like an horrible hack and it is :) The problem // is that owner is not initialized correctly when the bib @@ -354,12 +357,8 @@ int InsetBibtex::Latex(string & file, signed char /*fragile*/) const else style = getOptions(); - file += "\\bibliographystyle{"; - file += style; - file += "}\n"; - file += "\\bibliography{"; - file += db_out; - file += "}\n"; + os << "\\bibliographystyle{" << style << "}\n" + << "\\bibliography{" << db_out << "}\n"; return 2; } @@ -419,7 +418,7 @@ string InsetBibtex::getKeys(char delim) // BibTeX should have its own dialog. This is provisional. -void InsetBibtex::Edit(BufferView *, int, int, unsigned int) +void InsetBibtex::Edit(BufferView * bv, int, int, unsigned int) { if (!bibitem_form) { bibitem_form = create_form_bibitem_form(); @@ -427,7 +426,10 @@ void InsetBibtex::Edit(BufferView *, int, int, unsigned int) CancelCloseBoxCB, 0); } - bibitem_form->bibitem_form->u_vdata = this; + holder.inset = this; + holder.view = bv; + bibitem_form->bibitem_form->u_vdata = &holder; + fl_set_object_label(bibitem_form->key, _("Database:")); fl_set_object_label(bibitem_form->label, _("Style: ")); fl_set_input(bibitem_form->key, getContents().c_str());