*
* \author Angus Leeming
* \author John Levon
- * \author Herbert Voss
+ * \author Herbert Voß
* \author Rob Lahaye
*
* Full author contact details are available in file CREDITS.
#include "lyx_forms.h"
-using namespace lyx::support;
-
-using std::sort;
using std::vector;
+using std::string;
+
+namespace lyx {
+
+using support::ChangeExtension;
+using support::compare;
+using support::contains;
+using support::FileFilterList;
+using support::getStringFromVector;
+using support::getVectorFromString;
+using support::OnlyFilename;
+using support::prefixIs;
+using support::split;
+
+namespace frontend {
typedef FormController<ControlBibtex, FormView<FD_bibtex> > base_class;
bcview().addReadOnly(dialog_->button_rescan);
bcview().addReadOnly(dialog_->input_style);
bcview().addReadOnly(dialog_->check_bibtotoc);
+ bcview().addReadOnly(dialog_->choice_btprint);
// trigger an input event for cut&paste with middle mouse button.
setPrehandler(dialog_->input_database);
fl_set_browser_dblclick_callback(dialog_->browser_styles,
C_FormDialogView_InputCB, 2);
+ fl_addto_choice(dialog_->choice_btprint,
+ _(" all cited references "
+ "| all uncited references "
+ "| all references ").c_str());
+
// set up the tooltips
string str = _("The database you want to cite from. Insert it "
"without the default extension \".bib\". Use comma "
"the styles which are in directories where TeX finds them "
"are listed!");
tooltips().init(dialog_->button_rescan, str);
+
+ str = _("The bibliography section contains...");
+ tooltips().init(dialog_->choice_btprint, str);
}
if (ob == dialog_->button_database_browse) {
// When browsing, take the first file only
string const in_name = getString(dialog_->input_database);
- string out_name =
- controller().Browse("",
- _("Select Database"),
- _("*.bib| BibTeX Databases (*.bib)"));
+ string out_name = controller().browseBib("");
if (!out_name.empty()) {
// add the database to any existing ones
if (!in_name.empty())
} else if (ob == dialog_->button_style_browse) {
string const in_name = getString(dialog_->input_style);
- string const style = controller().Browse(in_name,
- _("Select BibTeX-Style"),
- _("*.bst| BibTeX Styles (*.bst)"));
+ string const style = controller().browseBst(in_name);
if (!style.empty()) {
fl_set_input(dialog_->input_style, style.c_str());
}
string bibtotoc = "bibtotoc";
string bibstyle = controller().params().getOptions();
+ bool const bibtopic = controller().usingBibtopic();
bool const bibtotoc_exists = prefixIs(bibstyle, bibtotoc);
- fl_set_button(dialog_->check_bibtotoc, bibtotoc_exists);
+ fl_set_button(dialog_->check_bibtotoc, bibtotoc_exists && !bibtopic);
+ setEnabled(dialog_->check_bibtotoc, !bibtopic);
if (bibtotoc_exists) {
if (contains(bibstyle, ',')) { // bibstyle exists?
bibstyle = split(bibstyle, bibtotoc, ',');
}
fl_set_input(dialog_->input_style, bibstyle.c_str());
+ string btprint = controller().params().getSecOptions();
+ int btp = 1;
+ if (btprint == "btPrintNotCited")
+ btp = 2;
+ else if (btprint == "btPrintAll")
+ btp = 3;
+
+ fl_set_choice(dialog_->choice_btprint, btp);
+ setEnabled(dialog_->choice_btprint, bibtopic);
+
vector<string> styles;
controller().getBibStyles(styles);
it != dbase.end(); ++it) {
*it = ChangeExtension(*it, string());
}
- lyx::eliminate_duplicates(dbase);
+ eliminate_duplicates(dbase);
return getStringFromVector(dbase);
}
// no database -> no bibtex-command and no options!
controller().params().setContents("");
controller().params().setOptions("");
+ controller().params().setSecOptions("");
return;
}
controller().params().setOptions(bibtotoc + ',' + bibstyle);
} else {
- // At least one of addtotoc and bibstyle is empty. No harm to output both!
+ // At least one of addtotoc and bibstyle is empty.
+ // No harm to output both!
controller().params().setOptions(bibtotoc + bibstyle);
}
+
+ // bibtopic allows three kinds of sections:
+ // 1. sections that include all cited references of the database(s)
+ // 2. sec. that include all uncited references of the database(s)
+ // 3. sec. that include all references of the database(s), cited or not
+ if (controller().usingBibtopic()){
+ int btp = fl_get_choice(dialog_->choice_btprint);
+ switch (btp) {
+ case 1:
+ controller().params().setSecOptions("btPrintCited");
+ break;
+ case 2:
+ controller().params().setSecOptions("btPrintNotCited");
+ break;
+ case 3:
+ controller().params().setSecOptions("btPrintAll");
+ break;
+ }
+ }
+
+ else
+ controller().params().setSecOptions("");
+
}
+
+} // namespace frontend
+} // namespace lyx