Herbert's patch, part 2

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@2557 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Angus Leeming 2001-08-20 13:41:06 +00:00
parent 00d24ec876
commit 9b5e14fb66
5 changed files with 158 additions and 20 deletions

View File

@ -1,3 +1,9 @@
2001-08-20 Herbert Voss <voss@perce.de>
* FormBibtex.C:
* forms/form_bibtex.fd: enhanced bibtex-data gui to browse for
databases and styles. Added an option for "bibliography into toc"
2001-08-18 Lars Gullik Bjønnes <larsbj@birdstep.com>
* FormMathsBitmap.h: use the lyx::shared_c_ptr that uses free() to

View File

@ -5,6 +5,7 @@
*
* \author Angus Leeming
* \author John Levon
* \author Herbert Voss <voss@lyx.org>
*/
#ifdef __GNUG__
@ -19,6 +20,8 @@
#include "gettext.h"
#include "debug.h"
#include "support/lstrings.h"
#include "support/filetools.h"
typedef FormCB<ControlBibtex, FormDB<FD_form_bibtex> > base_class;
@ -38,16 +41,53 @@ void FormBibtex::build()
bc().setOK(dialog_->button_ok);
bc().setCancel(dialog_->button_cancel);
bc().addReadOnly(dialog_->database_browse);
bc().addReadOnly(dialog_->database);
bc().addReadOnly(dialog_->style_browse);
bc().addReadOnly(dialog_->style);
bc().addReadOnly(dialog_->radio_bibtotoc);
}
ButtonPolicy::SMInput FormBibtex::input(FL_OBJECT *, long)
ButtonPolicy::SMInput FormBibtex::input(FL_OBJECT * ob, long)
{
// minimal validation
if (!compare(fl_get_input(dialog_->database),""))
if (ob == dialog_->database_browse) {
string const in_name = fl_get_input(dialog_->database);
fl_freeze_form(form());
string out_name =
controller().Browse(in_name,
"Select Database",
"*.bib| BibTeX Databases (*.bib)");
if (suffixIs(out_name,".bib")) {
// to prevent names like xxxbib.bib
// latex needs it without suffix
out_name = ChangeExtension(out_name,"");
}
fl_set_input(dialog_->database, out_name.c_str());
fl_unfreeze_form(form());
}
if (ob == dialog_->style_browse) {
string const in_name = fl_get_input(dialog_->style);
fl_freeze_form(form());
string out_name =
controller().Browse(in_name,
"Select BibTeX-Style",
"*.bst| BibTeX Styles (*.bst)");
if (suffixIs(out_name,".bst")) {
// to prevent names like xxxbib.bib
// name for display only
out_name = OnlyFilename(ChangeExtension(out_name,""));
}
fl_set_input(dialog_->style, out_name.c_str());
fl_unfreeze_form(form());
}
if (!compare(fl_get_input(dialog_->database),"")) {
return ButtonPolicy::SMI_NOOP;
}
return ButtonPolicy::SMI_VALID;
}
@ -57,13 +97,42 @@ void FormBibtex::update()
{
fl_set_input(dialog_->database,
controller().params().getContents().c_str());
fl_set_input(dialog_->style,
controller().params().getOptions().c_str());
string bibtotoc = "bibtotoc";
string bibstyle (controller().params().getOptions().c_str());
if (prefixIs(bibstyle,bibtotoc)) { // bibtotoc exists?
fl_set_button(dialog_->radio_bibtotoc,1);
if (contains(bibstyle,',')) { // bibstyle exists?
bibstyle = split(bibstyle,bibtotoc,',');
} else {
bibstyle = "";
}
fl_set_input(dialog_->style,bibstyle.c_str());
} else {
fl_set_button(dialog_->radio_bibtotoc,0);
fl_set_input(dialog_->style,bibstyle.c_str());
}
}
void FormBibtex::apply()
{
controller().params().setContents(fl_get_input(dialog_->database));
controller().params().setOptions(fl_get_input(dialog_->style));
string const bibstyle = fl_get_input(dialog_->style); // may be empty!
if ((fl_get_button(dialog_->radio_bibtotoc) > 0) &&
(!bibstyle.empty())) {
// both bibtotoc and style
controller().params().setOptions("bibtotoc,"+bibstyle);
} else {
if (fl_get_button(dialog_->radio_bibtotoc) > 0) {
// bibtotoc and no style
controller().params().setOptions("bibtotoc");
} else {
// only style
controller().params().setOptions(bibstyle);
}
}
}

View File

@ -22,33 +22,39 @@ FD_form_bibtex * FormBibtex::build_bibtex()
FL_OBJECT *obj;
FD_form_bibtex *fdui = new FD_form_bibtex;
fdui->form = fl_bgn_form(FL_NO_BOX, 220, 130);
fdui->form = fl_bgn_form(FL_NO_BOX, 450, 170);
fdui->form->u_vdata = this;
obj = fl_add_box(FL_UP_BOX, 0, 0, 220, 130, "");
obj = fl_add_box(FL_UP_BOX, 0, 0, 450, 170, "");
{
char const * const dummy = N_("Database:|#D");
fdui->database = obj = fl_add_input(FL_NORMAL_INPUT, 80, 10, 130, 30, idex(_(dummy)));
fdui->database = obj = fl_add_input(FL_NORMAL_INPUT, 90, 10, 260, 30, idex(_(dummy)));
fl_set_button_shortcut(obj, scex(_(dummy)), 1);
}
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
fl_set_object_callback(obj, C_FormBaseInputCB, 0);
fdui->button_ok = obj = fl_add_button(FL_RETURN_BUTTON, 20, 90, 90, 30, _("OK"));
fdui->button_ok = obj = fl_add_button(FL_RETURN_BUTTON, 250, 130, 90, 30, _("OK"));
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
fl_set_object_callback(obj, C_FormBaseOKCB, 3);
{
char const * const dummy = N_("Cancel|^[");
fdui->button_cancel = obj = fl_add_button(FL_NORMAL_BUTTON, 120, 90, 90, 30, idex(_(dummy)));
fdui->button_cancel = obj = fl_add_button(FL_NORMAL_BUTTON, 350, 130, 90, 30, idex(_(dummy)));
fl_set_button_shortcut(obj, scex(_(dummy)), 1);
}
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
fl_set_object_callback(obj, C_FormBaseCancelCB, 2);
{
char const * const dummy = N_("Style:|#S");
fdui->style = obj = fl_add_input(FL_NORMAL_INPUT, 80, 50, 130, 30, idex(_(dummy)));
fdui->style = obj = fl_add_input(FL_NORMAL_INPUT, 90, 50, 260, 30, idex(_(dummy)));
fl_set_button_shortcut(obj, scex(_(dummy)), 1);
}
fl_set_object_lsize(obj, FL_NORMAL_SIZE);
fl_set_object_callback(obj, C_FormBaseInputCB, 0);
fdui->database_browse = obj = fl_add_button(FL_PUSH_BUTTON, 360, 10, 80, 30, _("Browse"));
fl_set_button_shortcut(obj, _("B"), 1);
fdui->style_browse = obj = fl_add_button(FL_PUSH_BUTTON, 360, 50, 80, 30, _("Browse"));
fl_set_button_shortcut(obj, _("l"), 1);
fdui->radio_bibtotoc = obj = fl_add_checkbutton(FL_PUSH_BUTTON, 90, 90, 30, 30, _("Add bibliography to TOC"));
fl_set_button_shortcut(obj, _("T"), 1);
fl_end_form();
fdui->form->fdui = fdui;

View File

@ -19,6 +19,9 @@ struct FD_form_bibtex {
FL_OBJECT *button_ok;
FL_OBJECT *button_cancel;
FL_OBJECT *style;
FL_OBJECT *database_browse;
FL_OBJECT *style_browse;
FL_OBJECT *radio_bibtotoc;
};
#endif /* FD_form_bibtex_h_ */

View File

@ -8,14 +8,14 @@ Unit of measure: FL_COORD_PIXEL
=============== FORM ===============
Name: form_bibtex
Width: 220
Height: 130
Number of Objects: 5
Width: 450
Height: 170
Number of Objects: 8
--------------------
class: FL_BOX
type: UP_BOX
box: 0 0 220 130
box: 0 0 450 170
boxtype: FL_UP_BOX
colors: FL_COL1 FL_COL1
alignment: FL_ALIGN_CENTER
@ -33,7 +33,7 @@ argument:
--------------------
class: FL_INPUT
type: NORMAL_INPUT
box: 80 10 130 30
box: 90 10 260 30
boxtype: FL_DOWN_BOX
colors: FL_COL1 FL_MCOL
alignment: FL_ALIGN_LEFT
@ -51,7 +51,7 @@ argument: 0
--------------------
class: FL_BUTTON
type: RETURN_BUTTON
box: 20 90 90 30
box: 250 130 90 30
boxtype: FL_UP_BOX
colors: FL_COL1 FL_COL1
alignment: FL_ALIGN_CENTER
@ -69,7 +69,7 @@ argument: 3
--------------------
class: FL_BUTTON
type: NORMAL_BUTTON
box: 120 90 90 30
box: 350 130 90 30
boxtype: FL_UP_BOX
colors: FL_COL1 FL_COL1
alignment: FL_ALIGN_CENTER
@ -87,7 +87,7 @@ argument: 2
--------------------
class: FL_INPUT
type: NORMAL_INPUT
box: 80 50 130 30
box: 90 50 260 30
boxtype: FL_DOWN_BOX
colors: FL_COL1 FL_MCOL
alignment: FL_ALIGN_LEFT
@ -102,5 +102,59 @@ name: style
callback: C_FormBaseInputCB
argument: 0
--------------------
class: FL_BUTTON
type: PUSH_BUTTON
box: 360 10 80 30
boxtype: FL_UP_BOX
colors: FL_COL1 FL_COL1
alignment: FL_ALIGN_CENTER
style: FL_NORMAL_STYLE
size: FL_DEFAULT_SIZE
lcol: FL_BLACK
label: Browse
shortcut: B
resize: FL_RESIZE_ALL
gravity: FL_NoGravity FL_NoGravity
name: database_browse
callback:
argument: database
--------------------
class: FL_BUTTON
type: PUSH_BUTTON
box: 360 50 80 30
boxtype: FL_UP_BOX
colors: FL_COL1 FL_COL1
alignment: FL_ALIGN_CENTER
style: FL_NORMAL_STYLE
size: FL_DEFAULT_SIZE
lcol: FL_BLACK
label: Browse
shortcut: l
resize: FL_RESIZE_ALL
gravity: FL_NoGravity FL_NoGravity
name: style_browse
callback:
argument:
--------------------
class: FL_CHECKBUTTON
type: PUSH_BUTTON
box: 90 90 30 30
boxtype: FL_NO_BOX
colors: FL_COL1 FL_YELLOW
alignment: FL_ALIGN_CENTER
style: FL_NORMAL_STYLE
size: FL_DEFAULT_SIZE
lcol: FL_BLACK
label: Add bibliography to TOC
shortcut: T
resize: FL_RESIZE_ALL
gravity: FL_NoGravity FL_NoGravity
name: radio_bibtotoc
callback:
argument:
==============================
create_the_forms