citation patch from Angus

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@998 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Lars Gullik Bjønnes 2000-09-04 13:22:22 +00:00
parent e0c724415c
commit 2fa9fa22c4
5 changed files with 92 additions and 36 deletions

View File

@ -1,3 +1,12 @@
2000-09-04 Angus Leeming <a.leeming@ic.ac.uk> +
* src/frontends/xforms/Menubar_pimpl.C: added two using directives
so that code compiles with DEC cxx.
* src/frontends/xforms/FormCitation.C (setSize): code re-writtenn
to work correctly! Also now supports the additional elements
neeeded by natbib.
2000-09-01 Allan Rae <rae@lyx.org>
* src/frontends/ButtonPolicies.C: renamed all the references to

View File

@ -3381,6 +3381,8 @@ int Buffer::runLaTeX()
AllowInput(users);
return latex.getNumErrors();
#else
return 0;
#endif
}

View File

@ -44,6 +44,6 @@ public:
string const BufferExtension(Buffer const * buffer);
};
//#define NEW_EXPORT 1
#define NEW_EXPORT 1
#endif

View File

@ -35,6 +35,8 @@ using std::max;
using std::min;
using std::find;
static int min_wform;
FormCitation::FormCitation(LyXView * lv, Dialogs * d)
: FormCommand(lv, d, _("Citation")), dialog_(0)
{
@ -64,6 +66,7 @@ void FormCitation::clearStore()
void FormCitation::build()
{
dialog_ = build_citation();
min_wform = dialog_->form->w;
}
@ -196,54 +199,94 @@ void FormCitation::setCiteButtons( State status ) const
void FormCitation::setSize( int hbrsr, bool bibPresent ) const
{
int const hinfo = dialog_->infoBrsr->h;
int const hother = 140;
hbrsr = max( hbrsr, 175 );
int wform = dialog_->form->w;
int hform = hbrsr + hother;
bool const natbib = false; // will eventually be input
hbrsr = max( hbrsr, 175 ); // limit max size of cite/bib brsrs
if( bibPresent ) hform += hinfo + 30;
fl_set_form_size( dialog_->form, wform, hform );
// dh1, dh2, dh3 are the vertical separation between elements.
// These can be specified because the browser height is fixed
// so they are not changed by dynamic resizing
static int const dh1 = 30; // top of form to top of cite/bib brsrs;
// bottom of cite/bib brsrs to top of info;
// bottom of info to top next element;
// bottom of style to top textBefore;
// bottom of text to top ok/cancel buttons.
static int const dh2 = 10; // bottom of textBefore to top textAftr;
// bottom of ok/cancel buttons to bottom form
static int const dh3 = 5; // spacing between add/delete/... buttons.
// No resizing is allowed in the y-direction
fl_set_form_minsize( dialog_->form, wform, hform );
fl_set_form_maxsize( dialog_->form, 3*wform, hform );
int const wbrsr = dialog_->citeBrsr->w;
static int const hinfo = dialog_->infoBrsr->h;
static int const hstyle = dialog_->style->h;
static int const htext = dialog_->textAftr->h;
static int const hok = dialog_->ok->h;
int const wform = dialog_->form->w;
int hform = dh1 + hbrsr + dh1;
if( bibPresent ) hform += hinfo + dh1;
if( natbib ) hform += hstyle + dh1 + htext + dh2;
hform += htext + dh1 + hok + dh2;
bool const sizeSet = ( hform != dialog_->form->h );
if( sizeSet ) fl_set_form_size( dialog_->form, wform, hform );
// No vertical resizing is allowed
// min_wform set in build()
fl_set_form_minsize( dialog_->form, min_wform, hform );
fl_set_form_maxsize( dialog_->form, 3*min_wform, hform );
if( !sizeSet ) return;
int x = 0;
int y = 0;
fl_set_object_geometry( dialog_->box, 0, y, wform, hform );
y += 30;
fl_set_object_geometry( dialog_->citeBrsr, 10, y, 180, hbrsr );
fl_set_object_geometry( dialog_->bibBrsr, 240, y, 180, hbrsr );
fl_set_object_geometry( dialog_->box, x, y, wform, hform );
fl_set_object_position( dialog_->addBtn, 200, y );
y += 5 + dialog_->addBtn->h;
fl_set_object_position( dialog_->delBtn, 200, y );
y += 5 + dialog_->delBtn->h;
fl_set_object_position( dialog_->upBtn, 200, y );
y += 5 + dialog_->upBtn->h;
fl_set_object_position( dialog_->downBtn, 200, y );
x = dialog_->citeBrsr->x;
y += dh1;
fl_set_object_geometry( dialog_->citeBrsr, x, y, wbrsr, hbrsr );
x = dialog_->bibBrsr->x;
fl_set_object_geometry( dialog_->bibBrsr, x, y, wbrsr, hbrsr );
y = dialog_->bibBrsr->y + dialog_->bibBrsr->h;
x = dialog_->addBtn->x;
fl_set_object_position( dialog_->addBtn, x, y );
y += dh3 + dialog_->addBtn->h;
fl_set_object_position( dialog_->delBtn, x, y );
y += dh3 + dialog_->delBtn->h;
fl_set_object_position( dialog_->upBtn, x, y );
y += dh3 + dialog_->upBtn->h;
fl_set_object_position( dialog_->downBtn, x, y );
// awaiting natbib support
fl_hide_object( dialog_->style );
y = dh1 + hbrsr + dh1; // in position for next element
if( bibPresent ) {
y += 30;
fl_set_object_position( dialog_->infoBrsr, 10, y );
x = dialog_->infoBrsr->x;
fl_set_object_position( dialog_->infoBrsr, x, y );
fl_show_object( dialog_->infoBrsr );
y += hinfo;
}
else
y += hinfo + dh1;
} else
fl_hide_object( dialog_->infoBrsr );
y += 20;
// awaiting natbib support
fl_hide_object( dialog_->textBefore );
if( natbib ) {
x = dialog_->style->x;
fl_set_object_position( dialog_->style, x, y );
fl_show_object( dialog_->style );
x = dialog_->textBefore->x;
y += hstyle + dh1;
fl_set_object_position( dialog_->textBefore, x, y );
fl_show_object( dialog_->textBefore );
y += htext + dh2;
} else {
fl_hide_object( dialog_->style );
fl_hide_object( dialog_->textBefore );
}
fl_set_object_position( dialog_->textAftr, 100, y );
fl_set_object_position( dialog_->ok, 230, y+50 );
fl_set_object_position( dialog_->cancel, 330, y+50 );
x = dialog_->textAftr->x;
fl_set_object_position( dialog_->textAftr, x, y );
x = dialog_->ok->x;
y += htext + dh1;
fl_set_object_position( dialog_->ok, x, y );
x = dialog_->cancel->x;
fl_set_object_position( dialog_->cancel, x, y );
}

View File

@ -32,6 +32,8 @@
using std::pair;
using std::endl;
using std::vector;
using std::max;
using std::min;
typedef vector<int>::size_type size_type;