+/**
+ * \file insetbib.C
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Alejandro Aguilar Sierra
+ *
+ * Full author contact details are available in file CREDITS
+ */
#include <config.h>
#ifdef __GNUG__
#include "gettext.h"
#include "lyxtext.h"
#include "lyxrc.h"
-#include "font.h"
-#include "LyXView.h"
-#include "lyxtextclasslist.h"
+#include "lyxlex.h"
+#include "frontends/font_metrics.h"
+#include "frontends/LyXView.h"
#include "frontends/Dialogs.h"
}
-void InsetBibKey::setCounter(int c)
-{
- counter = c;
+void InsetBibKey::setCounter(int c)
+{
+ counter = c;
}
// I'm sorry but this is still necessary because \bibitem is used also
// as a LyX 2.x command, and lyxlex is not enough smart to understand
-// real LaTeX commands. Yes, that could be fixed, but would be a waste
+// real LaTeX commands. Yes, that could be fixed, but would be a waste
// of time cause LyX3 won't use lyxlex anyway. (ale)
void InsetBibKey::write(Buffer const *, ostream & os) const
{
}
-void InsetBibKey::edit(BufferView * bv, int, int, unsigned int)
-{
- bv->owner()->getDialogs()->showBibitem(this);
+void InsetBibKey::edit(BufferView * bv, int, int, mouse_button::state)
+{
+ bv->owner()->getDialogs().showBibitem(this);
}
void InsetBibKey::edit(BufferView * bv, bool)
{
- edit(bv, 0, 0, 0);
+ edit(bv, 0, 0, mouse_button::none);
}
// 1. \bibliographystyle{style}
// 2. \addcontentsline{...} - if option bibtotoc set
// 3. \bibliography{database}
- string adb, db_out;
+ string adb;
string db_in = getContents();
db_in = split(db_in, adb, ',');
// Style-Options
string style = getOptions(); // maybe empty! and with bibtotoc
string bibtotoc;
- if (prefixIs(style,"bibtotoc")) {
+ if (prefixIs(style, "bibtotoc")) {
bibtotoc = "bibtotoc";
- if (contains(style,',')) {
- style = split(style,bibtotoc,',');
+ if (contains(style, ',')) {
+ style = split(style, bibtotoc, ',');
}
}
- if (!buffer->niceFile
- && IsFileReadable(MakeAbsPath(style, buffer->filepath) + ".bst")) {
- style = MakeAbsPath(style, buffer->filepath);
+ if (!buffer->niceFile
+ && IsFileReadable(MakeAbsPath(style, buffer->filePath()) + ".bst")) {
+ style = MakeAbsPath(style, buffer->filePath());
}
if (!style.empty()) { // we want no \biblio...{}
}
// bibtotoc-Option
- if (!bibtotoc.empty()) {
+ if (!bibtotoc.empty()) {
// maybe a problem when a textclass has no "art" as
// part of its name, because it's than book.
// For the "official" lyx-layouts it's no problem to support
// all well
- if (!contains(textclasslist.NameOfClass(buffer->params.textclass),"art")) {
+ if (!contains(buffer->params.getLyXTextClass().name(),
+ "art")) {
if (buffer->params.sides == LyXTextClass::OneSide) {
// oneside
os << "\\clearpage";
} else {
// article class
- os << "\\addcontentsline{toc}{section}{\\refname}";
+ os << "\\addcontentsline{toc}{section}{\\refname}";
}
}
// If we generate in a temp dir, we might need to give an
// absolute path there. This is a bit complicated since we can
// have a comma-separated list of bibliographies
+ string db_out;
while (!adb.empty()) {
if (!buffer->niceFile &&
- IsFileReadable(MakeAbsPath(adb, buffer->filepath)+".bib"))
- adb = os::external_path(MakeAbsPath(adb, buffer->filepath));
+ IsFileReadable(MakeAbsPath(adb, buffer->filePath())+".bib"))
+ adb = os::external_path(MakeAbsPath(adb, buffer->filePath()));
db_out += adb;
db_out += ',';
db_in= split(db_in, adb,',');
}
- db_out = strip(db_out, ',');
+ db_out = rtrim(db_out, ",");
os << "\\bibliography{" << db_out << "}\n";
return 2;
}
-vector<string> const InsetBibtex::getFiles(Buffer const &) const
+vector<string> const InsetBibtex::getFiles(Buffer const & buffer) const
{
// Doesn't appear to be used (Angus, 31 July 2001)
- // Path p(buffer->filepath);
+ Path p(buffer.filePath());
vector<string> vec;
// If we didn't find a matching file name just fail silently
if (!file.empty())
vec.push_back(file);
-
+
// Get next file name
- bibfiles = split(bibfiles, tmp, ',');
+ bibfiles = split(bibfiles, tmp, ',');
}
return vec;
ifstream ifs(it->c_str());
string linebuf0;
while (getline(ifs, linebuf0)) {
- string linebuf = frontStrip(strip(linebuf0));
- if (linebuf.empty() ) continue;
+ string linebuf = trim(linebuf0);
+ if (linebuf.empty()) continue;
if (prefixIs(linebuf, "@")) {
linebuf = subst(linebuf, '{', '(');
string tmp;
linebuf = split(linebuf, tmp, '(');
- tmp = lowercase(tmp);
+ tmp = ascii_lowercase(tmp);
if (!prefixIs(tmp, "@string")
&& !prefixIs(tmp, "@preamble")) {
linebuf = split(linebuf, tmp, ',');
- tmp = frontStrip(tmp);
+ tmp = ltrim(tmp, " \t");
if (!tmp.empty()) {
keys.push_back(pair<string,string>(tmp,string()));
}
}
}
}
- return keys;
+ return keys;
}
-void InsetBibtex::edit(BufferView * bv, int, int, unsigned int)
+void InsetBibtex::edit(BufferView * bv, int, int, mouse_button::state)
{
- bv->owner()->getDialogs()->showBibtex(this);
+ bv->owner()->getDialogs().showBibtex(this);
}
void InsetBibtex::edit(BufferView * bv, bool)
{
- edit(bv, 0, 0, 0);
+ edit(bv, 0, 0, mouse_button::none);
}
{
string contents(getContents());
if (!contains(contents, db)) {
- if (!contents.empty())
+ if (!contents.empty())
contents += ",";
setContents(contents + db);
return true;
setContents(subst(getContents(), tmp, ", "));
} else if (n == 0)
setContents(split(getContents(), bd, ','));
- else
+ else
return false;
}
return true;
int w = 0;
// Ha, now we are mainly at 1.2.0 and it is still here (Jug)
// Does look like a hack? It is! (but will change at 0.13)
- Paragraph * par = bv->buffer()->paragraph;
-
- while (par) {
- if (par->bibkey) {
- int const wx = par->bibkey->width(bv, font);
- if (wx > w) w = wx;
+ ParagraphList::iterator it = bv->buffer()->paragraphs.begin();
+ ParagraphList::iterator end = bv->buffer()->paragraphs.end();
+ for (; it != end; ++it) {
+ if (it->bibkey) {
+ int const wx = it->bibkey->width(bv, font);
+ if (wx > w)
+ w = wx;
}
- par = par->next();
}
return w;
}
{
int w = 0;
// Does look like a hack? It is! (but will change at 0.13)
- Paragraph * par = buffer->paragraph;
+
InsetBibKey * bkey = 0;
LyXFont font;
-
- while (par) {
- if (par->bibkey) {
+
+ ParagraphList::iterator it = buffer->paragraphs.begin();
+ ParagraphList::iterator end = buffer->paragraphs.end();
+ for (; it != end; ++it) {
+ if (it->bibkey) {
int const wx =
- lyxfont::width(par->bibkey->getBibLabel(),
- font);
+ font_metrics::width(it->bibkey->getBibLabel(),
+ font);
if (wx > w) {
w = wx;
- bkey = par->bibkey;
+ bkey = it->bibkey;
}
}
- par = par->next();
}
-
+
if (bkey && !bkey->getBibLabel().empty())
return bkey->getBibLabel();
-
+
return "99";
}