- pos = fl_get_choice(fd_form_character->choice_size);
- switch(pos) {
- case 1: font.setSize(LyXFont::IGNORE_SIZE); break;
- case 2: font.setSize(LyXFont::SIZE_TINY); break;
- case 3: font.setSize(LyXFont::SIZE_SCRIPT); break;
- case 4: font.setSize(LyXFont::SIZE_FOOTNOTE); break;
- case 5: font.setSize(LyXFont::SIZE_SMALL); break;
- case 6: font.setSize(LyXFont::SIZE_NORMAL); break;
- case 7: font.setSize(LyXFont::SIZE_LARGE); break;
- case 8: font.setSize(LyXFont::SIZE_LARGER); break;
- case 9: font.setSize(LyXFont::SIZE_LARGEST); break;
- case 10: font.setSize(LyXFont::SIZE_HUGE); break;
- case 11: font.setSize(LyXFont::SIZE_HUGER); break;
- case 12: font.setSize(LyXFont::INCREASE_SIZE); break;
- case 13: font.setSize(LyXFont::DECREASE_SIZE); break;
- case 14: font.setSize(LyXFont::INHERIT_SIZE); break;
- }
-
- pos = fl_get_choice(fd_form_character->choice_bar);
- switch(pos) {
- case 1: font.setEmph(LyXFont::IGNORE);
- font.setUnderbar(LyXFont::IGNORE);
- font.setNoun(LyXFont::IGNORE);
- font.setLatex(LyXFont::IGNORE);
- break;
- case 2: font.setEmph(LyXFont::TOGGLE); break;
- case 3: font.setUnderbar(LyXFont::TOGGLE); break;
- case 4: font.setNoun(LyXFont::TOGGLE); break;
- case 5: font.setLatex(LyXFont::TOGGLE); break;
- case 6: font.setEmph(LyXFont::INHERIT);
- font.setUnderbar(LyXFont::INHERIT);
- font.setNoun(LyXFont::INHERIT);
- font.setLatex(LyXFont::INHERIT);
- break;
- }
-
- pos = fl_get_choice(fd_form_character->choice_color);
- switch(pos) {
- case 1: font.setColor(LyXFont::IGNORE_COLOR); break;
- case 2: font.setColor(LyXFont::NONE); break;
- case 3: font.setColor(LyXFont::BLACK); break;
- case 4: font.setColor(LyXFont::WHITE); break;
- case 5: font.setColor(LyXFont::RED); break;
- case 6: font.setColor(LyXFont::GREEN); break;
- case 7: font.setColor(LyXFont::BLUE); break;
- case 8: font.setColor(LyXFont::CYAN); break;
- case 9: font.setColor(LyXFont::MAGENTA); break;
- case 10: font.setColor(LyXFont::YELLOW); break;
- case 11: font.setColor(LyXFont::INHERIT_COLOR); break;
- }
-
- return font;
-}
-
-
-void FreeCB()
-{
- ToggleAndShow(UserFreeFont());
-}
-
-
-/* callbacks for form form_title */
-extern "C" void TimerCB(FL_OBJECT *, long)
-{
- // only if the form still exists
- if (fd_form_title->form_title != 0) {
- if (fd_form_title->form_title->visible) {
- fl_hide_form(fd_form_title->form_title);
- }
- fl_free_form(fd_form_title->form_title);
- fd_form_title->form_title = 0;
- }
-}
-
-
-/* callbacks for form form_paragraph */
-
-extern "C" void ParagraphVSpaceCB(FL_OBJECT * obj, long )
-{
- // "Synchronize" the choices and input fields, making it
- // impossible to commit senseless data.
-
- FD_form_paragraph const * fp = fd_form_paragraph;
-
- if (obj == fp->choice_space_above) {
- if (fl_get_choice (fp->choice_space_above) != 7) {
- fl_set_input (fp->input_space_above, "");
- ActivateParagraphButtons();
- }
- } else if (obj == fp->choice_space_below) {
- if (fl_get_choice (fp->choice_space_below) != 7) {
- fl_set_input (fp->input_space_below, "");
- ActivateParagraphButtons();
- }
- } else if (obj == fp->input_space_above) {
- string input = fl_get_input (fp->input_space_above);
-
- if (input.empty()) {
- fl_set_choice (fp->choice_space_above, 1);
- ActivateParagraphButtons();
- }
- else if (isValidGlueLength (input)) {
- fl_set_choice (fp->choice_space_above, 7);
- ActivateParagraphButtons();
- }
- else {
- fl_set_choice (fp->choice_space_above, 7);
- DeactivateParagraphButtons();
- }
- } else if (obj == fp->input_space_below) {
- string input = fl_get_input (fp->input_space_below);
-
- if (input.empty()) {
- fl_set_choice (fp->choice_space_below, 1);
- ActivateParagraphButtons();
- }
- else if (isValidGlueLength (input)) {
- fl_set_choice (fp->choice_space_below, 7);
- ActivateParagraphButtons();
- }
- else {
- fl_set_choice (fp->choice_space_below, 7);
- DeactivateParagraphButtons();
- }
- }
-}
-
-
-extern "C" void ParagraphApplyCB(FL_OBJECT *, long)
-{
- if (!current_view->available())
- return;
-
- VSpace space_top, space_bottom;
- LyXAlignment align;
- string labelwidthstring;
- bool noindent;
-
- // If a vspace kind is "Length" but there's no text in
- // the input field, reset the kind to "None".
- if (fl_get_choice (fd_form_paragraph->choice_space_above) == 7
- && !*(fl_get_input (fd_form_paragraph->input_space_above))) {
- fl_set_choice (fd_form_paragraph->choice_space_above, 1);
- }
- if (fl_get_choice (fd_form_paragraph->choice_space_below) == 7
- && !*(fl_get_input (fd_form_paragraph->input_space_below))) {
- fl_set_choice (fd_form_paragraph->choice_space_below, 1);
- }
-
- bool line_top = fl_get_button(fd_form_paragraph->check_lines_top);
- bool line_bottom = fl_get_button(fd_form_paragraph->check_lines_bottom);
- bool pagebreak_top = fl_get_button(fd_form_paragraph->check_pagebreaks_top);
- bool pagebreak_bottom = fl_get_button(fd_form_paragraph->check_pagebreaks_bottom);
- switch (fl_get_choice (fd_form_paragraph->choice_space_above)) {
- case 1: space_top = VSpace(VSpace::NONE); break;
- case 2: space_top = VSpace(VSpace::DEFSKIP); break;
- case 3: space_top = VSpace(VSpace::SMALLSKIP); break;
- case 4: space_top = VSpace(VSpace::MEDSKIP); break;
- case 5: space_top = VSpace(VSpace::BIGSKIP); break;
- case 6: space_top = VSpace(VSpace::VFILL); break;
- case 7: space_top = VSpace(LyXGlueLength (fl_get_input (fd_form_paragraph->input_space_above))); break;
- }
- if (fl_get_button (fd_form_paragraph->check_space_above))
- space_top.setKeep (true);
- switch (fl_get_choice (fd_form_paragraph->choice_space_below)) {
- case 1: space_bottom = VSpace(VSpace::NONE); break;
- case 2: space_bottom = VSpace(VSpace::DEFSKIP); break;
- case 3: space_bottom = VSpace(VSpace::SMALLSKIP); break;
- case 4: space_bottom = VSpace(VSpace::MEDSKIP); break;
- case 5: space_bottom = VSpace(VSpace::BIGSKIP); break;
- case 6: space_bottom = VSpace(VSpace::VFILL); break;
- case 7: space_bottom = VSpace(LyXGlueLength (fl_get_input (fd_form_paragraph->input_space_below))); break;
- }
- if (fl_get_button (fd_form_paragraph->check_space_below))
- space_bottom.setKeep (true);
-
- if (fl_get_button(fd_form_paragraph->radio_align_left))
- align = LYX_ALIGN_LEFT;
- else if (fl_get_button(fd_form_paragraph->radio_align_right))
- align = LYX_ALIGN_RIGHT;
- else if (fl_get_button(fd_form_paragraph->radio_align_center))
- align = LYX_ALIGN_CENTER;
- else
- align = LYX_ALIGN_BLOCK;
-
- labelwidthstring = fl_get_input(fd_form_paragraph->input_labelwidth);
- noindent = fl_get_button(fd_form_paragraph->check_noindent);
-
- current_view->text->SetParagraph(line_top,
- line_bottom,
- pagebreak_top,
- pagebreak_bottom,
- space_top,
- space_bottom,
- align,
- labelwidthstring,
- noindent);
- current_view->update(1);
- minibuffer->Set(_("Paragraph layout set"));
-}
-
-
-extern "C" void ParagraphCancelCB(FL_OBJECT *, long)
-{
- fl_hide_form(fd_form_paragraph->form_paragraph);
-}
-
-
-extern "C" void ParagraphOKCB(FL_OBJECT *ob, long data)
-{
- ParagraphApplyCB(ob, data);
- ParagraphCancelCB(ob, data);
-}
-
-
-/* callbacks for form form_character */
-
-extern "C" void CharacterApplyCB(FL_OBJECT *, long)
-{
- // we set toggleall locally here, since it should be true for
- // all other uses of ToggleAndShow() (JMarc)
- toggleall = fl_get_button(fd_form_character->check_toggle_all);
- ToggleAndShow( UserFreeFont());
- toggleall = true;
-}
-
-
-extern "C" void CharacterCloseCB(FL_OBJECT *, long)
-{
- fl_hide_form(fd_form_character->form_character);
-}
-
-
-extern "C" void CharacterOKCB(FL_OBJECT *ob, long data)
-{
- CharacterApplyCB(ob, data);
- CharacterCloseCB(ob, data);
-}
-
-
-/* callbacks for form form_document */
-
-void UpdateDocumentButtons(BufferParams const & params)
-{
- fl_set_choice(fd_form_document->choice_pagestyle, 1);
-
- if (params.sides == 2)
- fl_set_button(fd_form_document->radio_sides_two, 1);
- else
- fl_set_button(fd_form_document->radio_sides_one, 1);
-
- if (params.columns == 2)
- fl_set_button(fd_form_document->radio_columns_two, 1);
- else
- fl_set_button(fd_form_document->radio_columns_one, 1);
-
- fl_set_input(fd_form_document->input_extra, params.options.c_str());
- fl_set_counter_value(fd_form_document->slider_secnumdepth,
- params.secnumdepth);
- fl_set_counter_value(fd_form_document->slider_tocdepth,
- params.tocdepth);
-
-}
-
-extern "C" void ChoiceClassCB(FL_OBJECT * ob, long)
-{
- ProhibitInput();
- if (textclasslist.Load(fl_get_choice(ob)-1)) {
- if (AskQuestion(_("Should I set some parameters to"),
- fl_get_choice_text(ob),
- _("the defaults of this document class?"))) {
- BufferParams params = BufferParams();
- params.textclass = fl_get_choice(ob)-1;
- params.useClassDefaults();
- UpdateLayoutDocument(¶ms);
- UpdateDocumentButtons(params);
- }
- } else {
- // unable to load new style
- WriteAlert(_("Conversion Errors!"),
- _("Unable to switch to new document class."),
- _("Reverting to original document class."));
- fl_set_choice(fd_form_document->choice_class,
- GetCurrentTextClass() + 1);
- }
- AllowInput();
-}
-
-
-extern "C" void DocumentDefskipCB(FL_OBJECT * obj, long)
-{
- // "Synchronize" the choice and the input field, so that it
- // is impossible to commit senseless data.
- FD_form_document const * fd = fd_form_document;
-
- if (obj == fd->choice_default_skip) {
- if (fl_get_choice (fd->choice_default_skip) != 4) {
- fl_set_input (fd->input_default_skip, "");
- ActivateDocumentButtons();
- }
- } else if (obj == fd->input_default_skip) {
-
- char const * input = fl_get_input (fd->input_default_skip);
-
- if (!*input) {
- fl_set_choice (fd->choice_default_skip, 2);
- ActivateDocumentButtons();
- } else if (isValidGlueLength (input)) {
- fl_set_choice (fd->choice_default_skip, 4);
- ActivateDocumentButtons();
- } else {
- fl_set_choice (fd->choice_default_skip, 4);
- DeactivateDocumentButtons();
- }
- }
-}
-
-
-extern "C" void DocumentSpacingCB(FL_OBJECT * obj, long)
-{
- // "Synchronize" the choice and the input field, so that it
- // is impossible to commit senseless data.
- FD_form_document const * fd = fd_form_document;
-
- if (obj == fd->choice_spacing
- && fl_get_choice (fd->choice_spacing) != 4) {
- fl_set_input(fd->input_spacing, "");
- } else if (obj == fd->input_spacing) {
-
- const char* input = fl_get_input (fd->input_spacing);
-
- if (!*input) {
- fl_set_choice (fd->choice_spacing, 1);
- } else {
- fl_set_choice (fd->choice_spacing, 4);
- }
- }
-}
-
-
-extern "C" void DocumentApplyCB(FL_OBJECT *, long)
-{
- bool redo = false;
- BufferParams *params = &(current_view->buffer()->params);
- current_view->buffer()->params.language =
- combo_language->getline();
-
- // If default skip is a "Length" but there's no text in the
- // input field, reset the kind to "Medskip", which is the default.
- if (fl_get_choice (fd_form_document->choice_default_skip) == 4
- && !*(fl_get_input (fd_form_document->input_default_skip))) {
- fl_set_choice (fd_form_document->choice_default_skip, 2);
- }
-
- /* this shouldn't be done automatically IMO. For example I write german
- * documents with an american keyboard very often. Matthias */
-
- /* ChangeKeymap(buffer->parameters.language, TRUE, false,
- fl_get_choice(fd_form_document->choice_language)); */
- params->fonts =
- fl_get_choice_text(fd_form_document->choice_fonts);
- params->inputenc =
- fl_get_choice_text(fd_form_document->choice_inputenc);
- params->fontsize =
- fl_get_choice_text(fd_form_document->choice_fontsize);
- params->pagestyle =
- fl_get_choice_text(fd_form_document->choice_pagestyle);
- params->graphicsDriver =
- fl_get_choice_text(fd_form_document->choice_postscript_driver);
- params->use_amsmath =
- fl_get_button(fd_form_document->check_use_amsmath);
-
- if (!current_view->available())
- return;
-
- LyXTextClassList::ClassList::size_type new_class = fl_get_choice(fd_form_document->choice_class) - 1;
- if (params->textclass != new_class) {
- // try to load new_class
- if (textclasslist.Load(new_class)) {
- // successfully loaded
- redo = true;
- minibuffer->Set(_("Converting document to new document class..."));
- int ret = current_view->text->
- SwitchLayoutsBetweenClasses(current_view->buffer()->
- params.textclass,
- new_class,
- current_view->buffer()->
- paragraph);
-
- if (ret) {
- string s;
- if (ret == 1)
- s = _("One paragraph couldn't be converted");
- else {
- s += tostr(ret);
- s += _(" paragraphs couldn't be converted");
- }
- WriteAlert(_("Conversion Errors!"), s,
- _("into chosen document class"));
- }
-
- params->textclass = new_class;
- } else {
- // problem changing class -- warn user and retain old style
- WriteAlert(_("Conversion Errors!"),
- _("Unable to switch to new document class."),
- _("Reverting to original document class."));
- fl_set_choice(fd_form_document->choice_class, params->textclass + 1);
- }
- }
-
- char tmpsep = params->paragraph_separation;
- if (fl_get_button(fd_form_document->radio_indent))
- params->paragraph_separation = BufferParams::PARSEP_INDENT;
- else
- params->paragraph_separation = BufferParams::PARSEP_SKIP;
- if (tmpsep != params->paragraph_separation)
- redo = true;
-
- VSpace tmpdefskip = params->getDefSkip();
- switch (fl_get_choice (fd_form_document->choice_default_skip)) {
- case 1: params->setDefSkip(VSpace(VSpace::SMALLSKIP)); break;
- case 2: params->setDefSkip(VSpace(VSpace::MEDSKIP)); break;
- case 3: params->setDefSkip(VSpace(VSpace::BIGSKIP)); break;
- case 4: params->setDefSkip(
- VSpace (LyXGlueLength (fl_get_input
- (fd_form_document->input_default_skip))));
- break;
- // DocumentDefskipCB assures that this never happens
- default: params->setDefSkip(VSpace(VSpace::MEDSKIP)); break;
- }
- if (!(tmpdefskip == params->getDefSkip()))
- redo = true;
-
- if (fl_get_button(fd_form_document->radio_columns_two))
- params->columns = 2;
- else
- params->columns = 1;
- if (fl_get_button(fd_form_document->radio_sides_two))
- params->sides = LyXTextClass::TwoSides;
- else
- params->sides = LyXTextClass::OneSide;
-
- Spacing tmpSpacing = params->spacing;
- switch(fl_get_choice(fd_form_document->choice_spacing)) {
- case 1:
- lyxerr.debug() << "Spacing: SINGLE" << endl;
- params->spacing.set(Spacing::Single);
- break;
- case 2:
- lyxerr.debug() << "Spacing: ONEHALF" << endl;
- params->spacing.set(Spacing::Onehalf);
- break;
- case 3:
- lyxerr.debug() << "Spacing: DOUBLE" << endl;
- params->spacing.set(Spacing::Double);
- break;
- case 4:
- lyxerr.debug() << "Spacing: OTHER" << endl;
- params->spacing.set(Spacing::Other,
- fl_get_input(fd_form_document->input_spacing));
- break;
- }
- if (tmpSpacing != params->spacing)
- redo = true;
-
- signed char tmpchar =
- static_cast<signed char>(fl_get_counter_value(fd_form_document->slider_secnumdepth));
- if (params->secnumdepth != tmpchar)
- redo = true;
- params->secnumdepth = tmpchar;
-
- params->tocdepth =
- static_cast<int>(fl_get_counter_value(fd_form_document->slider_tocdepth));
-
- params->float_placement =
- fl_get_input(fd_form_document->input_float_placement);
-
- // More checking should be done to ensure the string doesn't have
- // spaces or illegal placement characters in it. (thornley)
-
- if (redo)
- current_view->redoCurrentBuffer();
-
- minibuffer->Set(_("Document layout set"));
- current_view->buffer()->markDirty();
-
- params->options =
- fl_get_input(fd_form_document->input_extra);
-
-}
-
-
-extern "C" void DocumentCancelCB(FL_OBJECT *, long)
-{
- fl_hide_form(fd_form_document->form_document);
-}
-
-
-extern "C" void DocumentOKCB(FL_OBJECT * ob, long data)
-{
- DocumentCancelCB(ob, data);
- DocumentApplyCB(ob, data);
-}
-
-
-extern "C" void DocumentBulletsCB(FL_OBJECT *, long)
-{
- bulletForm();
- // bullet callbacks etc. in bullet_panel.C -- ARRae
-}