void bibitem_cb(FL_OBJECT *, long data)
{ switch (data) { // case 0: fl_hide_form(citation_form->citation_form); // break; // case 1: case 1: // OK, citation
{ // InsetCommand *inset = (InsetCommand*)citation_form->vdata; // inset->setContents(bibcombox->getline()); // inset->setOptions(fl_get_input(citation_form->label)); // fl_hide_form(citation_form->citation_form); // UpdateInset(inset); // break; if(!current_view->currentBuffer()->isReadonly()) {
InsetCommand *inset = (InsetCommand*)citation_form->vdata;
inset->setContents(bibcombox->getline());
inset->setOptions(fl_get_input(citation_form->label));
fl_hide_form(citation_form->citation_form); // shouldn't mark the buffer dirty unless something // was actually altered
UpdateInset(inset); break;
} // fall through to Cancel on RO-mode
} // case 2: fl_hide_form(bibitem_form->bibitem_form); case 0: fl_hide_form(citation_form->citation_form); break; // case 3:
case 3: // OK, bibitem
{ // InsetCommand *inset = (InsetCommand *)bibitem_form->vdata; // inset->setContents(fl_get_input(bibitem_form->key)); // inset->setOptions(fl_get_input(bibitem_form->label)); // fl_hide_form(bibitem_form->bibitem_form); // // Does look like a hack? It is! (but will change at 0.13) // current_view->currentBuffer()->text->RedoParagraph(); // current_view->currentBuffer()->update(1); // break; if(!current_view->currentBuffer()->isReadonly()) {
InsetCommand *inset = (InsetCommand *)bibitem_form->vdata;
inset->setContents(fl_get_input(bibitem_form->key));
inset->setOptions(fl_get_input(bibitem_form->label));
fl_hide_form(bibitem_form->bibitem_form); // Does look like a hack? It is! (but will change at 0.13)
current_view->currentBuffer()->text->RedoParagraph();
current_view->currentBuffer()->update(1); break;
} // fall through to Cancel on RO-mode
} case 2: // Cancel, bibitem
fl_hide_form(bibitem_form->bibitem_form); // Cancel, bibitem break;
}
}
void InsetBibKey::setCounter(int c)
{
counter = c;
if (contents.empty())
contents += counter;
}
// 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 // of time cause LyX3 won't use lyxlex anyway. (ale) void InsetBibKey::Write(FILE *file)
{
LString s; if (!options.empty()) {
s += '[';
s += options + ']';
}
s += '{';
s += contents + '}';
fprintf(file,"\\bibitem %s\n", s.c_str());
}
LString InsetBibKey::getScreenLabel() const
{ if (!options.empty()) return options;
LString s; return s + counter;
}
/* The value in "Key:" isn't allways set right after a few bibkey insets have been added/removed. Perhaps the wrong object is deleted/used somewhere upwards? (Joacim 1998-03-04)
*/ void InsetBibKey::Edit(int, int)
{ if(current_view->currentBuffer()->isReadonly())
WarnReadonly();
if (!bibitem_form) {
bibitem_form = create_form_bibitem_form();
fl_set_form_atclose(bibitem_form->bibitem_form,
CancelCloseBoxCB, NULL);
}
bibitem_form->vdata = this; // InsetBibtex uses the same form, with different labels
fl_set_object_label(bibitem_form->key, idex(_("Key:|#K")));
fl_set_button_shortcut(bibitem_form->key,scex(_("Key:|#K")),1);
fl_set_object_label(bibitem_form->label, idex(_("Label:|#L")));
fl_set_button_shortcut(bibitem_form->label,scex(_("Label:|#L")),1);
fl_set_input(bibitem_form->key, getContents().c_str());
fl_set_input(bibitem_form->label, getOptions().c_str()); if (bibitem_form->bibitem_form->visible) {
fl_raise_form(bibitem_form->bibitem_form);
} else {
fl_show_form(bibitem_form->bibitem_form,FL_PLACE_MOUSE,
FL_FULLBORDER,
_("Bibliography item"));
}
}
int InsetBibtex::Latex(FILE *file, signedchar/*fragile*/)
{
LString bib; signedchar dummy = 0; int result = Latex(bib, dummy);
fprintf(file, "%s", bib.c_str()); return result;
}
int InsetBibtex::Latex(LString &file, signedchar/*fragile*/)
{ // 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
LString db_in, adb, db_out;
db_in = getContents();
db_in.split(adb, ','); while(!adb.empty()) { if (!owner->niceFile &&
IsFileReadable(MakeAbsPath(adb,owner->filepath)+".bib"))
adb = MakeAbsPath(adb,owner->filepath);
db_out += adb;
db_out += ',';
db_in.split(adb,',');
}
db_out.strip(',');
// BibTeX should have its own dialog. This is provisional. void InsetBibtex::Edit(int, int)
{ if (!bibitem_form) {
bibitem_form = create_form_bibitem_form();
fl_set_form_atclose(bibitem_form->bibitem_form,
CancelCloseBoxCB, NULL);
}
bool InsetBibtex::addDatabase(LString const &db)
{ if (!contents.contains(db.c_str())) { if (!contents.empty())
contents += ',';
contents += db; returntrue;
} returnfalse;
}
bool InsetBibtex::delDatabase(LString const &db)
{ if (contents.contains(db.c_str())) {
LString bd = db; int n = contents.tokenPos(',', bd); if (n > 0) {
LString tmp(',');
tmp += bd;
contents.subst(tmp.c_str(), ",");
} elseif (n==0)
contents.split(bd, ','); else returnfalse;
} returntrue;
}
// This function should be in LyXView when multiframe works ale970302 void BibitemUpdate(Combox* combox)
{
combox->clear();
if (!current_view->available()) return;
LyXParagraph *par = current_view->currentBuffer()->paragraph; while (par) { if (par->bibkey)
combox->addto(par->bibkey->getContents().c_str());
par = par->next;
}
}
// ale070405 This function maybe shouldn't be here. We'll fix this at 0.13. int bibitemMaxWidth(constclass LyXFont &font)
{ int w = 0; // Does look like a hack? It is! (but will change at 0.13)
LyXParagraph *par = current_view->currentBuffer()->paragraph;
while (par) { if (par->bibkey) { int wx = par->bibkey->Width(font); if (wx>w) w = wx;
}
par = par->next;
} return w;
}
// ale070405
LString bibitemWidthest()
{ int w = 0; // Does look like a hack? It is! (but will change at 0.13)
LyXParagraph *par = current_view->currentBuffer()->paragraph;
InsetBibKey *bkey=0;
LyXFont font;
while (par) { if (par->bibkey) { int wx = par->bibkey->Width(font); if (wx>w) {
w = wx;
bkey = par->bibkey;
}
}
par = par->next;
}
if (bkey) return bkey->getOptions();
return LString();
}
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.