- DeactivateDocumentButtons ();
- fl_deactivate_object (fd_form_document->group_radio_separation);
- fl_deactivate_object (fd_form_document->radio_indent);
- fl_deactivate_object (fd_form_document->radio_skip);
- fl_deactivate_object (fd_form_document->choice_class);
- fl_deactivate_object (fd_form_document->choice_pagestyle);
- fl_deactivate_object (fd_form_document->choice_fonts);
- fl_deactivate_object (fd_form_document->choice_fontsize);
- fl_deactivate_object (fd_form_document->input_float_placement);
- fl_deactivate_object (fd_form_document->choice_postscript_driver);
- fl_deactivate_object (fd_form_document->choice_inputenc);
- fl_deactivate_object (fd_form_document->group_radio_sides);
- fl_deactivate_object (fd_form_document->radio_sides_one);
- fl_deactivate_object (fd_form_document->radio_sides_two);
- fl_deactivate_object (fd_form_document->group_radio_columns);
- fl_deactivate_object (fd_form_document->radio_columns_one);
- fl_deactivate_object (fd_form_document->radio_columns_two);
- fl_deactivate_object (fd_form_document->input_extra);
- fl_deactivate_object (fd_form_document->choice_language);
- combo_language->deactivate();
- fl_deactivate_object (fd_form_document->input_default_skip);
- fl_deactivate_object (fd_form_document->choice_default_skip);
- fl_deactivate_object (fd_form_document->slider_secnumdepth);
- fl_deactivate_object (fd_form_document->slider_tocdepth);
- fl_deactivate_object (fd_form_document->choice_spacing);
- fl_deactivate_object (fd_form_document->input_spacing);
- fl_deactivate_object (fd_form_document->check_use_amsmath);
-}
-
-
-inline
-void EnableDocumentLayout ()
-{
- ActivateDocumentButtons ();
- fl_activate_object (fd_form_document->group_radio_separation);
- fl_activate_object (fd_form_document->radio_indent);
- fl_activate_object (fd_form_document->radio_skip);
- fl_activate_object (fd_form_document->choice_class);
- fl_activate_object (fd_form_document->choice_pagestyle);
- fl_activate_object (fd_form_document->choice_fonts);
- fl_activate_object (fd_form_document->choice_fontsize);
- fl_activate_object (fd_form_document->input_float_placement);
- fl_activate_object (fd_form_document->choice_postscript_driver);
- fl_activate_object (fd_form_document->choice_inputenc);
- fl_activate_object (fd_form_document->group_radio_sides);
- fl_activate_object (fd_form_document->radio_sides_one);
- fl_activate_object (fd_form_document->radio_sides_two);
- fl_activate_object (fd_form_document->group_radio_columns);
- fl_activate_object (fd_form_document->radio_columns_one);
- fl_activate_object (fd_form_document->radio_columns_two);
- fl_activate_object (fd_form_document->input_extra);
- fl_activate_object (fd_form_document->choice_language);
- combo_language->activate();
- fl_activate_object (fd_form_document->input_default_skip);
- fl_activate_object (fd_form_document->choice_default_skip);
- fl_activate_object (fd_form_document->slider_secnumdepth);
- fl_activate_object (fd_form_document->slider_tocdepth);
- fl_activate_object (fd_form_document->choice_spacing);
- fl_activate_object (fd_form_document->input_spacing);
- fl_activate_object (fd_form_document->check_use_amsmath);
-}
-
-
-bool UpdateLayoutDocument(BufferParams * params)
-{
- if (!current_view->getScreen() || !current_view->available()) {
- if (fd_form_document->form_document->visible)
- fl_hide_form(fd_form_document->form_document);
- return false;
- }
-
- if (params == 0)
- params = ¤t_view->buffer()->params;
- LyXTextClass const & tclass = textclasslist.TextClass(params->textclass);
-
- fl_set_choice_text(fd_form_document->choice_class,
- textclasslist.DescOfClass(params->textclass).c_str());
- combo_language->select_text(params->language.c_str());
-
- fl_set_choice_text(fd_form_document->choice_fonts,
- params->fonts.c_str());
- fl_set_choice_text(fd_form_document->choice_inputenc,
- params->inputenc.c_str());
- fl_set_choice_text(fd_form_document->choice_postscript_driver,
- params->graphicsDriver.c_str());
-
- // ale970405+lasgoutt970513
- fl_clear_choice(fd_form_document->choice_fontsize);
- fl_addto_choice(fd_form_document->choice_fontsize, "default");
- fl_addto_choice(fd_form_document->choice_fontsize,
- tclass.opt_fontsize().c_str());
- fl_set_choice(fd_form_document->choice_fontsize,
- tokenPos(tclass.opt_fontsize(), '|', params->fontsize) + 2);
-
- // ale970405+lasgoutt970513
- fl_clear_choice(fd_form_document->choice_pagestyle);
- fl_addto_choice(fd_form_document->choice_pagestyle, "default");
- fl_addto_choice(fd_form_document->choice_pagestyle,
- tclass.opt_pagestyle().c_str());
-
- fl_set_choice(fd_form_document->choice_pagestyle,
- tokenPos(tclass.opt_pagestyle(), '|', params->pagestyle) + 2);
-
- fl_set_button(fd_form_document->radio_indent, 0);
- fl_set_button(fd_form_document->radio_skip, 0);
-
-
- fl_set_button(fd_form_document->check_use_amsmath, params->use_amsmath);
-
- if (params->paragraph_separation == BufferParams::PARSEP_INDENT)
- fl_set_button(fd_form_document->radio_indent, 1);
- else
- fl_set_button(fd_form_document->radio_skip, 1);
-
- switch (params->getDefSkip().kind()) {
- case VSpace::SMALLSKIP:
- fl_set_choice (fd_form_document->choice_default_skip, 1);
- break;
- case VSpace::MEDSKIP:
- fl_set_choice (fd_form_document->choice_default_skip, 2);
- break;
- case VSpace::BIGSKIP:
- fl_set_choice (fd_form_document->choice_default_skip, 3);
- break;
- case VSpace::LENGTH:
- fl_set_choice (fd_form_document->choice_default_skip, 4);
- fl_set_input (fd_form_document->input_default_skip,
- params->getDefSkip().asLyXCommand().c_str());
- break;
- default:
- fl_set_choice (fd_form_document->choice_default_skip, 2);
- break;
- }
-
- fl_set_button(fd_form_document->radio_sides_one, 0);
- fl_set_button(fd_form_document->radio_sides_two, 0);
-
- switch (params->sides) {
- case LyXTextClass::OneSide:
- fl_set_button(fd_form_document->radio_sides_one, 1);
- break;
- case LyXTextClass::TwoSides:
- fl_set_button(fd_form_document->radio_sides_two, 1);
- break;
- }
-
- fl_set_button(fd_form_document->radio_columns_one, 0);
- fl_set_button(fd_form_document->radio_columns_two, 0);
-
- 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_spacing, "");
- switch (params->spacing.getSpace()) {
- case Spacing::Single:
- {
- // \singlespacing
- fl_set_choice(fd_form_document->choice_spacing, 1);
- break;
- }
- case Spacing::Onehalf:
- {
- // \onehalfspacing
- fl_set_choice(fd_form_document->choice_spacing, 2);
- break;
- }
- case Spacing::Double:
- {
- // \ doublespacing
- fl_set_choice(fd_form_document->choice_spacing, 3);
- break;
- }
- case Spacing::Other:
- {
- fl_set_choice(fd_form_document->choice_spacing, 4);
- char sval[20];
- sprintf(sval, "%g", params->spacing.getValue());
- fl_set_input(fd_form_document->input_spacing, sval);
- break;
- }
- }
-
-
- fl_set_counter_value(fd_form_document->slider_secnumdepth,
- params->secnumdepth);
- fl_set_counter_value(fd_form_document->slider_tocdepth,
- params->tocdepth);
- if (!params->float_placement.empty()) { // buffer local (Lgb)
- fl_set_input(fd_form_document->input_float_placement,
- params->float_placement.c_str());
- } else {
- fl_set_input(fd_form_document->input_float_placement, "");
- }
- if (!params->options.empty())
- fl_set_input(fd_form_document->input_extra,
- params->options.c_str());
- else
- fl_set_input(fd_form_document->input_extra, "");
-
- if (current_view->buffer()->isSGML()) {
- // bullets not used in SGML derived documents
- fl_deactivate_object(fd_form_document->button_bullets);
- fl_set_object_lcol(fd_form_document->button_bullets,
- FL_INACTIVE);
- } else {
- fl_activate_object(fd_form_document->button_bullets);
- fl_set_object_lcol(fd_form_document->button_bullets,
- FL_BLACK);
- }
-
- if (current_view->buffer()->isReadonly()) {
- DisableDocumentLayout();
- } else {
- EnableDocumentLayout();
- }
-
- return true;
-}
-
-
-void MenuLayoutDocument()
-{
- if (UpdateLayoutDocument()) {
- if (fd_form_document->form_document->visible) {
- fl_raise_form(fd_form_document->form_document);
- } else {
- fl_show_form(fd_form_document->form_document,
- FL_PLACE_MOUSE, FL_FULLBORDER,
- _("Document Layout"));
- }
- }
-}
-
-
-bool UpdateLayoutQuotes()
-{
- bool update = true;
- if (!current_view->getScreen()
- || !current_view->available()
- || current_view->buffer()->isReadonly())
- update = false;
-
- if (update) {
- fl_set_choice(fd_form_quotes->choice_quotes_language,
- current_view->buffer()->params.quotes_language + 1);
- fl_set_button(fd_form_quotes->radio_single, 0);
- fl_set_button(fd_form_quotes->radio_double, 0);
-
- if (current_view->buffer()->params.quotes_times == InsetQuotes::SingleQ)
- fl_set_button(fd_form_quotes->radio_single, 1);
- else
- fl_set_button(fd_form_quotes->radio_double, 1);
- } else if (fd_form_quotes->form_quotes->visible) {
- fl_hide_form(fd_form_quotes->form_quotes);
- }
- return update;
-}
-
-
-void MenuLayoutQuotes()
-{
- if (UpdateLayoutQuotes()) {
- if (fd_form_quotes->form_quotes->visible) {
- fl_raise_form(fd_form_quotes->form_quotes);
- } else {
- fl_show_form(fd_form_quotes->form_quotes,
- FL_PLACE_MOUSE, FL_FULLBORDER,
- _("Quotes"));
- }
- }
-}
-
-
-bool UpdateLayoutPreamble()
-{
- bool update = true;
- if (!current_view->getScreen() || ! current_view->available())
- update = false;
-
- if (update) {
- fl_set_input(fd_form_preamble->input_preamble,
- current_view->buffer()->params.preamble.c_str());
-
- if (current_view->buffer()->isReadonly()) {
- fl_deactivate_object(fd_form_preamble->input_preamble);
- fl_deactivate_object(fd_form_preamble->button_ok);
- fl_deactivate_object(fd_form_preamble->button_apply);
- fl_set_object_lcol(fd_form_preamble->button_ok, FL_INACTIVE);
- fl_set_object_lcol(fd_form_preamble->button_apply, FL_INACTIVE);
- }
- else {
- fl_activate_object(fd_form_preamble->input_preamble);
- fl_activate_object(fd_form_preamble->button_ok);
- fl_activate_object(fd_form_preamble->button_apply);
- fl_set_object_lcol(fd_form_preamble->button_ok, FL_BLACK);
- fl_set_object_lcol(fd_form_preamble->button_apply, FL_BLACK);
- }
- } else if (fd_form_preamble->form_preamble->visible) {
- fl_hide_form(fd_form_preamble->form_preamble);
- }
- return update;
-}
-
-void MenuLayoutPreamble()
-{
- static int ow = -1, oh;
-
- if (UpdateLayoutPreamble()) {
- if (fd_form_preamble->form_preamble->visible) {
- fl_raise_form(fd_form_preamble->form_preamble);
- } else {
- fl_show_form(fd_form_preamble->form_preamble,
- FL_PLACE_MOUSE | FL_FREE_SIZE,
- FL_FULLBORDER,
- _("LaTeX Preamble"));
- if (ow < 0) {
- ow = fd_form_preamble->form_preamble->w;
- oh = fd_form_preamble->form_preamble->h;
- }
- fl_set_form_minsize(fd_form_preamble->form_preamble,
- ow, oh);
- }
- }
-}
-
-
-void MenuLayoutSave()
-{
- if (!current_view->getScreen() || ! current_view->available())
- return;
-
- if (AskQuestion(_("Do you want to save the current settings"),
- _("for Character, Document, Paper and Quotes"),
- _("as default for new documents?")))
- current_view->buffer()->saveParamsAsDefaults();
-}
-
-
-void BufferView::insertNote()
-{
- InsetInfo * new_inset = new InsetInfo();
- insertInset(new_inset);
- new_inset->Edit(0, 0);
-}
-
-
-void BufferView::openStuff()
-{
- if (available()) {
- owner()->getMiniBuffer()->Set(_("Open/Close..."));
- getScreen()->HideCursor();
- beforeChange();
- update(-2);
- text->OpenStuff();
- update(0);
- }
-}
-
-
-void BufferView::toggleFloat()
-{
- if (available()) {
- owner()->getMiniBuffer()->Set(_("Open/Close..."));
- getScreen()->HideCursor();
- beforeChange();
- update(-2);
- text->ToggleFootnote();
- update(0);
- }
-}
-
-
-void BufferView::menuUndo()
-{
- if (available()) {
- owner()->getMiniBuffer()->Set(_("Undo"));
- getScreen()->HideCursor();
- beforeChange();
- update(-2);
- if (!text->TextUndo())
- owner()->getMiniBuffer()->Set(_("No further undo information"));
- else
- update(-1);
- }
-}
-
-
-void BufferView::menuRedo()
-{
- if (the_locking_inset) {
- owner()->getMiniBuffer()->Set(_("Redo not yet supported in math mode"));
- return;
- }
-
- if (available()) {
- owner()->getMiniBuffer()->Set(_("Redo"));
- getScreen()->HideCursor();
- beforeChange();
- update(-2);
- if (!text->TextRedo())
- owner()->getMiniBuffer()->Set(_("No further redo information"));
- else
- update(-1);
- }
-}
-
-
-void BufferView::hyphenationPoint()
-{
- if (available()) {
- getScreen()->HideCursor();
- update(-2);
- InsetSpecialChar * new_inset =
- new InsetSpecialChar(InsetSpecialChar::HYPHENATION);
- insertInset(new_inset);
- }
-}
-
-
-void BufferView::ldots()
-{
- if (available()) {
- getScreen()->HideCursor();
- update(-2);
- InsetSpecialChar * new_inset =
- new InsetSpecialChar(InsetSpecialChar::LDOTS);
- insertInset(new_inset);
- }
-}
-
-
-void BufferView::endOfSentenceDot()
-{
- if (available()) {
- getScreen()->HideCursor();
- update(-2);
- InsetSpecialChar * new_inset =
- new InsetSpecialChar(InsetSpecialChar::END_OF_SENTENCE);
- insertInset(new_inset);
- }
-}
-
-
-void BufferView::menuSeparator()
-{
- if (available()) {
- getScreen()->HideCursor();
- update(-2);
- InsetSpecialChar * new_inset =
- new InsetSpecialChar(InsetSpecialChar::MENU_SEPARATOR);
- insertInset(new_inset);
- }
-}
-
-
-void BufferView::newline()
-{
- if (available()) {
- getScreen()->HideCursor();
- update(-2);
- text->InsertChar(LyXParagraph::META_NEWLINE);
- update(-1);
- }
-}
-
-
-void BufferView::protectedBlank()
-{
- if (available()) {
- getScreen()->HideCursor();
- update(-2);
- text->InsertChar(LyXParagraph::META_PROTECTED_SEPARATOR);
- update(-1);
- }
-}
-
-
-void BufferView::hfill()
-{
- if (available()) {
- getScreen()->HideCursor();
- update(-2);
- text->InsertChar(LyXParagraph::META_HFILL);
- update(-1);
- }
-}
-
-
-/* -------> These CB's use ToggleFree() as the (one and only?) font-changer.
- They also show the current font state. */
-
-static
-void ToggleAndShow(LyXFont const &);
-
-
-void FontSizeCB(string const & size)
-{
- LyXFont font(LyXFont::ALL_IGNORE);
- font.setGUISize(size);
- ToggleAndShow(font);
-}
-
-
-void EmphCB()
-{
- LyXFont font(LyXFont::ALL_IGNORE);
- font.setEmph(LyXFont::TOGGLE);
- ToggleAndShow(font);
-}
-
-
-void NounCB()
-{
- LyXFont font(LyXFont::ALL_IGNORE);
- font.setNoun(LyXFont::TOGGLE);
- ToggleAndShow(font);
-}
-
-
-void BoldCB()
-{
- LyXFont font(LyXFont::ALL_IGNORE);
- font.setSeries(LyXFont::BOLD_SERIES);
- ToggleAndShow(font);
-}
-
-
-void UnderlineCB()
-{
- LyXFont font(LyXFont::ALL_IGNORE);
- font.setUnderbar(LyXFont::TOGGLE);
- ToggleAndShow(font);
-}
-
-
-void CodeCB()
-{
- LyXFont font(LyXFont::ALL_IGNORE);
- font.setFamily(LyXFont::TYPEWRITER_FAMILY); // no good
- ToggleAndShow(font);
-}
-
-
-void SansCB()
-{
- LyXFont font(LyXFont::ALL_IGNORE);
- font.setFamily(LyXFont::SANS_FAMILY);
- ToggleAndShow(font);
-}
-
-
-void RomanCB()
-{
- LyXFont font(LyXFont::ALL_IGNORE);
- font.setFamily(LyXFont::ROMAN_FAMILY);
- ToggleAndShow(font);
-}
-
-
-void TexCB()
-{
- LyXFont font(LyXFont::ALL_IGNORE);
- font.setLatex (LyXFont::TOGGLE);
- ToggleAndShow(font);
-}
-
-
-void StyleResetCB()
-{
- LyXFont font(LyXFont::ALL_INHERIT);
- ToggleAndShow(font);
-}
-
-
-/* -------> Returns the current font and depth by printing a message. In the
- * future perhaps we could try to implement a callback to the button-bar.
- * That is, `light' the bold button when the font is currently bold, etc.
- */
-string CurrentState()
-{
- string state;
- if (current_view->available()) {
- // I think we should only show changes from the default
- // font. (Asger)
- Buffer * buffer = current_view->buffer();
- LyXFont font = current_view->text->real_current_font;
- LyXFont defaultfont = textclasslist.TextClass(buffer->
- params.textclass).defaultfont();
- font.reduce(defaultfont);
- state = _("Font: ") + font.stateText();
-
- int depth = current_view->text->GetDepth();
- if (depth > 0)
- state += string(_(", Depth: ")) + tostr(depth);
- }
- return state;
-}
-
-
-// candidate for move to BufferView
-/* -------> Does the actual toggle job of the XxxCB() calls above.
- * Also shows the current font state.
- */
-static
-void ToggleAndShow(LyXFont const & font)
-{
- if (current_view->available()) {
- current_view->getScreen()->HideCursor();
- current_view->update(-2);
- current_view->text->ToggleFree(font, toggleall);
- current_view->update(1);
- }
-}
-
-
-// candidate for move to BufferView
-extern "C" void MarginCB(FL_OBJECT *, long)
-{
- if (current_view->available()) {
- current_view->owner()->getMiniBuffer()->Set(_("Inserting margin note..."));
- current_view->getScreen()->HideCursor();
- current_view->update(-2);
- current_view->text->InsertFootnoteEnvironment(LyXParagraph::MARGIN);
- current_view->update(1);
- }
-}
-
-
-extern "C" void FigureCB(FL_OBJECT *, long)
-{
- if (fd_form_figure->form_figure->visible) {
- fl_raise_form(fd_form_figure->form_figure);
- } else {
- fl_show_form(fd_form_figure->form_figure,
- FL_PLACE_MOUSE, FL_FULLBORDER,
- _("Insert Figure"));
- }
-}
-
-
-extern "C" void TableCB(FL_OBJECT *, long)
-{
- if (fd_form_table->form_table->visible) {
- fl_raise_form(fd_form_table->form_table);
- } else {
- fl_show_form(fd_form_table->form_table,
- FL_PLACE_MOUSE, FL_FULLBORDER,
- _("Insert Table"));
- }
-}
-
-
-void BufferView::copyEnvironment()
-{
- if (available()) {
- text->copyEnvironmentType();
- // clear the selection, even if mark_set
- getScreen()->ToggleSelection();
- text->ClearSelection();
- update(-2);
- owner()->getMiniBuffer()->Set(_("Paragraph environment type copied"));
- }
-}
-
-
-void BufferView::pasteEnvironment()
-{
- if (available()) {
- text->pasteEnvironmentType();
- owner()->getMiniBuffer()->Set(_("Paragraph environment type set"));
- update(1);
- }
-}
-
-
-void BufferView::copy()
-{
- if (available()) {
- text->CopySelection();
- // clear the selection, even if mark_set
- getScreen()->ToggleSelection();
- text->ClearSelection();
- update(-2);
- owner()->getMiniBuffer()->Set(_("Copy"));
- }
-}
-
-
-void BufferView::cut()
-{
- if (available()) {
- getScreen()->HideCursor();
- update(-2);
- text->CutSelection();
- update(1);
- owner()->getMiniBuffer()->Set(_("Cut"));
- }
-}
-
-
-void BufferView::paste()
-{
- if (!available()) return;
-
- owner()->getMiniBuffer()->Set(_("Paste"));
- getScreen()->HideCursor();
- // clear the selection
- getScreen()->ToggleSelection();
- text->ClearSelection();
- update(-2);
-
- // paste
- text->PasteSelection();
- update(1);
-
- // clear the selection
- getScreen()->ToggleSelection();
- text->ClearSelection();
- update(-2);
-}
-
-
-// candidate for move to BufferView
-extern "C" void MeltCB(FL_OBJECT *, long)
-{
- if (!current_view->available()) return;
-
- current_view->owner()->getMiniBuffer()->Set(_("Melt"));
- current_view->getScreen()->HideCursor();
- current_view->beforeChange();
- current_view->update(-2);
- current_view->text->MeltFootnoteEnvironment();
- current_view->update(1);
-}
-
-
-// candidate for move to BufferView
-// Change environment depth.
-// if decInc == 0, depth change taking mouse button number into account
-// if decInc == 1, increment depth
-// if decInc == -1, decrement depth
-extern "C" void DepthCB(FL_OBJECT * ob, long decInc)
-{
- int button = 1;
-
- /* When decInc != 0, fake a mouse button. This allows us to
- implement depth-plus and depth-min commands. RVDK_PATCH_5. */
- /* check out wether ob is defined, too (Matthias) */
- if ( decInc < 0 )
- button = 0;
- else if (!decInc && ob) {
- button = fl_get_button_numb(ob);
- }
-
- if (current_view->available()) {
- current_view->getScreen()->HideCursor();
- current_view->update(-2);
- if (button == 1)
- current_view->text->IncDepth();
- else
- current_view->text->DecDepth();
- current_view->update(1);
- current_view->owner()->getMiniBuffer()->Set(_("Changed environment depth"
- " (in possible range, maybe not)"));
- }
-}
-
-
-// This is both GUI and LyXFont dependent. Don't know where to put it. (Asger)
-// Well, it's mostly GUI dependent, so I guess it will stay here. (Asger)
-LyXFont UserFreeFont()
-{
- LyXFont font(LyXFont::ALL_IGNORE);
-
- int pos = fl_get_choice(fd_form_character->choice_family);
- switch(pos) {
- case 1: font.setFamily(LyXFont::IGNORE_FAMILY); break;
- case 2: font.setFamily(LyXFont::ROMAN_FAMILY); break;
- case 3: font.setFamily(LyXFont::SANS_FAMILY); break;
- case 4: font.setFamily(LyXFont::TYPEWRITER_FAMILY); break;
- case 5: font.setFamily(LyXFont::INHERIT_FAMILY); break;
- }
-
- pos = fl_get_choice(fd_form_character->choice_series);
- switch(pos) {
- case 1: font.setSeries(LyXFont::IGNORE_SERIES); break;
- case 2: font.setSeries(LyXFont::MEDIUM_SERIES); break;
- case 3: font.setSeries(LyXFont::BOLD_SERIES); break;
- case 4: font.setSeries(LyXFont::INHERIT_SERIES); break;
- }
-
- pos = fl_get_choice(fd_form_character->choice_shape);
- switch(pos) {
- case 1: font.setShape(LyXFont::IGNORE_SHAPE); break;
- case 2: font.setShape(LyXFont::UP_SHAPE); break;
- case 3: font.setShape(LyXFont::ITALIC_SHAPE); break;
- case 4: font.setShape(LyXFont::SLANTED_SHAPE); break;
- case 5: font.setShape(LyXFont::SMALLCAPS_SHAPE); break;
- case 6: font.setShape(LyXFont::INHERIT_SHAPE); break;
- }
-
- 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);
- current_view->owner()->getMiniBuffer()->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);
-
- switch (params.sides) {
- case LyXTextClass::OneSide:
- fl_set_button(fd_form_document->radio_sides_one, 1);
- break;
- case LyXTextClass::TwoSides:
- fl_set_button(fd_form_document->radio_sides_two, 1);
- break;
- }
-
- 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,
- current_view->buffer()->params.textclass + 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;
- current_view->owner()->getMiniBuffer()->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();
-
- current_view->owner()->getMiniBuffer()->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
-}
-
-
-void BufferView::gotoNote()
-{
- if (!getScreen()) return;
-
- getScreen()->HideCursor();
- beforeChange();
- update(-2);
- LyXCursor tmp;
-
- if (!text->GotoNextNote()) {
- if (text->cursor.pos
- || text->cursor.par != text->FirstParagraph()) {
- tmp = text->cursor;
- text->cursor.par = text->FirstParagraph();
- text->cursor.pos = 0;
- if (!text->GotoNextNote()) {
- text->cursor = tmp;
- owner()->getMiniBuffer()->Set(_("No more notes"));
- LyXBell();
- }
- } else {
- owner()->getMiniBuffer()->Set(_("No more notes"));
- LyXBell();
- }
- }
- update(0);
- text->sel_cursor = text->cursor;
-}
-
-
-void BufferView::insertCorrectQuote()
-{
- char c;
-
- if (text->cursor.pos)
- c = text->cursor.par->GetChar(text->cursor.pos - 1);
- else
- c = ' ';
-
- insertInset(new InsetQuotes(c, buffer()->params));
-}
-
-
-/* callbacks for form form_quotes */
-
-extern "C" void QuotesApplyCB(FL_OBJECT *, long)
-{
- if (!current_view->available())
- return;
-
- current_view->owner()->getMiniBuffer()->Set(_("Quotes type set"));
- //current_view->buffer()->params.quotes_language =
- // fl_get_choice(fd_form_quotes->choice_quotes_language) - 1;
- InsetQuotes::quote_language lga = InsetQuotes::EnglishQ;
- switch(fl_get_choice(fd_form_quotes->choice_quotes_language) - 1) {
- case 0:
- lga = InsetQuotes::EnglishQ;
- break;
- case 1:
- lga = InsetQuotes::SwedishQ;
- break;
- case 2:
- lga = InsetQuotes::GermanQ;
- break;
- case 3:
- lga = InsetQuotes::PolishQ;
- break;
- case 4:
- lga = InsetQuotes::FrenchQ;
- break;
- case 5:
- lga = InsetQuotes::DanishQ;
- break;
- }
- current_view->buffer()->params.quotes_language = lga;
- if (fl_get_button(fd_form_quotes->radio_single))
- current_view->buffer()->
- params.quotes_times = InsetQuotes::SingleQ;
- else
- current_view->buffer()->
- params.quotes_times = InsetQuotes::DoubleQ;
-}
-
-
-extern "C" void QuotesCancelCB(FL_OBJECT *, long)
-{
- fl_hide_form(fd_form_quotes->form_quotes);
-}
-
-
-extern "C" void QuotesOKCB(FL_OBJECT * ob, long data)
-{
- QuotesApplyCB(ob, data);
- QuotesCancelCB(ob, data);
-}
-
-
-
-/* callbacks for form form_preamble */
-
-extern "C" void PreambleCancelCB(FL_OBJECT *, long)
-{
- fl_hide_form(fd_form_preamble->form_preamble);
-}
-
-
-extern "C" void PreambleApplyCB(FL_OBJECT *, long)
-{
- if (!current_view->available())
- return;
-
- current_view->buffer()->params.preamble =
- fl_get_input(fd_form_preamble->input_preamble);
- current_view->buffer()->markDirty();
- current_view->owner()->getMiniBuffer()->Set(_("LaTeX preamble set"));
-}
-
-
-extern "C" void PreambleOKCB(FL_OBJECT * ob, long data)
-{
- PreambleApplyCB(ob, data);
- PreambleCancelCB(ob, data);
-}
-
-
-/* callbacks for form form_table */
-
-extern "C" void TableApplyCB(FL_OBJECT *, long)
-{
- if (!current_view->getScreen())
- return;
-
- // check for tables in tables
- if (current_view->text->cursor.par->table){
- WriteAlert(_("Impossible Operation!"),
- _("Cannot insert table in table."),
- _("Sorry."));
- return;
- }
-
- current_view->owner()->getMiniBuffer()->Set(_("Inserting table..."));
-
- int ysize = int(fl_get_slider_value(fd_form_table->slider_columns) + 0.5);
- int xsize = int(fl_get_slider_value(fd_form_table->slider_rows) + 0.5);
-
-
- current_view->getScreen()->HideCursor();
- current_view->beforeChange();
- current_view->update(-2);
-
- current_view->text->SetCursorParUndo();
- current_view->text->FreezeUndo();
-
- current_view->text->BreakParagraph();
- current_view->update(-1);
-
- if (current_view->text->cursor.par->Last()) {
- current_view->text->CursorLeft();
-
- current_view->text->BreakParagraph();
- current_view->update(-1);
- }
-
- current_view->text->current_font.setLatex(LyXFont::OFF);
- //if (!fl_get_button(fd_form_table->check_latex)){
- // insert the new wysiwy table
- current_view->text->SetLayout(0); // standard layout
- if (current_view->text->cursor.par->footnoteflag ==
- LyXParagraph::NO_FOOTNOTE) {
- current_view->text
- ->SetParagraph(0, 0,
- 0, 0,
- VSpace (0.3 * current_view->buffer()->
- params.spacing.getValue(),
- LyXLength::CM),
- VSpace (0.3 * current_view->buffer()->
- params.spacing.getValue(),
- LyXLength::CM),
- LYX_ALIGN_CENTER,
- string(),
- 0);
- }
- else
- current_view->text
- ->SetParagraph(0, 0,
- 0, 0,
- VSpace(VSpace::NONE),
- VSpace(VSpace::NONE),
- LYX_ALIGN_CENTER,
- string(),
- 0);
-
- current_view->text->cursor.par->table =
- new LyXTable(xsize, ysize);
-
- for (int i = 0; i < xsize * ysize - 1; ++i)
- current_view->text->cursor.par->InsertChar(0, LyXParagraph::META_NEWLINE);
- current_view->text->RedoParagraph();
-
- current_view->text->UnFreezeUndo();
-
- current_view->update(1);
- current_view->owner()->getMiniBuffer()->Set(_("Table inserted"));
-}
-
-
-extern "C" void TableCancelCB(FL_OBJECT *, long)
-{
- fl_hide_form(fd_form_table->form_table);
-}
-
-
-extern "C" void TableOKCB(FL_OBJECT * ob, long data)
-{
- TableApplyCB(ob, data);
- TableCancelCB(ob, data);
-}
-
-
-/* callbacks for form form_print */
-
-extern "C" void PrintCancelCB(FL_OBJECT *, long)
-{
- fl_hide_form(fd_form_print->form_print);
-}
-
-static bool stringOnlyContains (string const & LStr, char const * cset)
-{
- char const * cstr = LStr.c_str() ;
-
- return strspn(cstr, cset) == strlen(cstr) ;
-}
-
-extern "C" void PrintApplyCB(FL_OBJECT *, long)
-{
- if (!current_view->available())
- return;
- Buffer * buffer = current_view->buffer();
- string path = OnlyPath(buffer->fileName());
-
- string pageflag;
- if (fl_get_button(fd_form_print->radio_even_pages))
- pageflag = lyxrc->print_evenpage_flag + ' ';
- else if (fl_get_button(fd_form_print->radio_odd_pages))
- pageflag = lyxrc->print_oddpage_flag + ' ';
-
-// Changes by Stephan Witt (stephan.witt@beusen.de), 19-Jan-99
-// User may give a page (range) list
-// User may print multiple (unsorted) copies
- string pages = subst(fl_get_input(fd_form_print->input_pages), ';',',');
- pages = subst(pages, '+',',');
- pages = frontStrip(strip(pages)) ;
- while (!pages.empty()) { // a page range was given
- string piece ;
- pages = split (pages, piece, ',') ;
- piece = strip(piece) ;
- piece = frontStrip(piece) ;
- if ( !stringOnlyContains (piece, "0123456789-") ) {
- WriteAlert(_("ERROR! Unable to print!"),
- _("Check 'range of pages'!"));
- return;
- }
- if (piece.find('-') == string::npos) { // not found
- pageflag += lyxrc->print_pagerange_flag + piece + '-' + piece + ' ' ;
- } else if (suffixIs(piece, "-") ) { // missing last page
- pageflag += lyxrc->print_pagerange_flag + piece + "1000 ";
- } else if (prefixIs(piece, "-") ) { // missing first page
- pageflag += lyxrc->print_pagerange_flag + '1' + piece + ' ' ;
- } else {
- pageflag += lyxrc->print_pagerange_flag + piece + ' ' ;
- }
- }
-
- string copies = frontStrip(strip(fl_get_input(fd_form_print->input_copies)));
- if (!copies.empty()) { // a number of copies was given
- if ( !stringOnlyContains (copies, "0123456789") ) {
- WriteAlert(_("ERROR! Unable to print!"),
- _("Check 'number of copies'!"));
- return;
- }
- if (fl_get_button(fd_form_print->do_unsorted))
- pageflag += lyxrc->print_copies_flag;
- else
- pageflag += lyxrc->print_collcopies_flag;
- pageflag += " " + copies + ' ' ;
- }
-
- string reverseflag;
- if (fl_get_button(fd_form_print->radio_order_reverse))
- reverseflag = lyxrc->print_reverse_flag + ' ';
-
- string orientationflag;
- if (buffer->params.orientation == BufferParams::ORIENTATION_LANDSCAPE)
- orientationflag = lyxrc->print_landscape_flag + ' ';
-
- string ps_file = fl_get_input(fd_form_print->input_file);
- string printer = strip(fl_get_input(fd_form_print->input_printer));
-
- string printerflag;
- if (lyxrc->print_adapt_output // printer name should be passed to dvips
- && ! printer.empty()) // a printer name has been given
- printerflag = lyxrc->print_to_printer + printer + ' ';
-
- string extraflags;
- if (!lyxrc->print_extra_options.empty())
- extraflags = lyxrc->print_extra_options + ' ';
-
- string command = lyxrc->print_command + ' '
- + printerflag + pageflag + reverseflag
- + orientationflag + extraflags;
-
- char real_papersize = buffer->params.papersize;
- if (real_papersize == BufferParams::PAPER_DEFAULT)
- real_papersize = lyxrc->default_papersize;
-
- string paper;
- switch (real_papersize) {
- case BufferParams::PAPER_USLETTER:
- paper = "letter";
- break;
- case BufferParams::PAPER_A3PAPER:
- paper = "a3";
- break;
- case BufferParams::PAPER_A4PAPER:
- paper = "a4";
- break;
- case BufferParams::PAPER_A5PAPER:
- paper = "a5";
- break;
- case BufferParams::PAPER_B5PAPER:
- paper = "b5";
- break;
- case BufferParams::PAPER_EXECUTIVEPAPER:
- paper = "foolscap";
- break;
- case BufferParams::PAPER_LEGALPAPER:
- paper = "legal";
- break;
- default: /* If nothing else fits, keep an empty value... */
- break;
- }
-
- if (buffer->params.use_geometry
- && buffer->params.papersize2 == BufferParams::VM_PAPER_CUSTOM
- && !lyxrc->print_paper_dimension_flag.empty()
- && !buffer->params.paperwidth.empty()
- && !buffer->params.paperheight.empty()) {
- // using a custom papersize
- command += ' ';
- command += lyxrc->print_paper_dimension_flag + ' ';
- command += buffer->params.paperwidth + ',';
- command += buffer->params.paperheight + ' ';
- } else if (!lyxrc->print_paper_flag.empty()
- && !paper.empty()
- && (real_papersize != BufferParams::PAPER_USLETTER ||
- buffer->params.orientation == BufferParams::ORIENTATION_PORTRAIT)) {
- command += " " + lyxrc->print_paper_flag + " " + paper + " ";
- }
- if (fl_get_button(fd_form_print->radio_file))
- command += lyxrc->print_to_file
- + QuoteName(MakeAbsPath(ps_file, path));
- else if (!lyxrc->print_spool_command.empty())
- command += lyxrc->print_to_file
- + QuoteName(ps_file);
-
- // push directorypath, if necessary
- if (lyxrc->use_tempdir || (IsDirWriteable(path) < 1)){
- path = buffer->tmppath;
- }
- Path p(path);
-
- bool result;
- if (!lyxrc->print_spool_command.empty() &&
- !fl_get_button(fd_form_print->radio_file)) {
- string command2 = lyxrc->print_spool_command + ' ';
- if (!printer.empty())
- command2 += lyxrc->print_spool_printerprefix
- + printer;
- // First run dvips and, if succesful, then spool command
- if ((result = RunScript(buffer, true, command))) {
- result = RunScript(buffer, false, command2, ps_file);
- }
- } else
- result = RunScript(buffer, false, command);
-
- if (!result)
- WriteAlert(_("Error:"),
- _("Unable to print"),
- _("Check that your parameters are correct"));
-}
-
-
-extern "C" void PrintOKCB(FL_OBJECT * ob, long data)
-{
- PrintCancelCB(ob, data);
- PrintApplyCB(ob, data);
-}
-
-
-/* callbacks for form form_figure */
-extern "C" void FigureApplyCB(FL_OBJECT *, long)
-{
- if (!current_view->available())
- return;
-
- Buffer * buffer = current_view->buffer();
- if(buffer->isReadonly()) // paranoia
- return;
-
- current_view->owner()->getMiniBuffer()->Set(_("Inserting figure..."));
- if (fl_get_button(fd_form_figure->radio_inline)
- || current_view->text->cursor.par->table) {
- InsetFig * new_inset = new InsetFig(100, 20, buffer);
- current_view->insertInset(new_inset);
- current_view->owner()->getMiniBuffer()->Set(_("Figure inserted"));
- new_inset->Edit(0, 0);
- return;
- }
-
- current_view->getScreen()->HideCursor();
- current_view->update(-2);
- current_view->beforeChange();
-
- current_view->text->SetCursorParUndo();
- current_view->text->FreezeUndo();
-
- current_view->text->BreakParagraph();
- current_view->update(-1);
-
- if (current_view->text->cursor.par->Last()) {
- current_view->text->CursorLeft();
-
- current_view->text->BreakParagraph();
- current_view->update(-1);
- }
-
- // The standard layout should always be numer 0;
- current_view->text->SetLayout(0);
-
- if (current_view->text->cursor.par->footnoteflag ==
- LyXParagraph::NO_FOOTNOTE) {
- current_view->text->
- SetParagraph(0, 0,
- 0, 0,
- VSpace (0.3 * buffer->params.spacing.getValue(),
- LyXLength::CM),
- VSpace (0.3 *
- buffer->params.spacing.getValue(),
- LyXLength::CM),
- LYX_ALIGN_CENTER, string(), 0);
- } else
- current_view->text->SetParagraph(0, 0,
- 0, 0,
- VSpace(VSpace::NONE),
- VSpace(VSpace::NONE),
- LYX_ALIGN_CENTER,
- string(),
- 0);
-
- current_view->update(-1);
-
- Inset * new_inset = new InsetFig(100, 100, buffer);
- current_view->insertInset(new_inset);
- new_inset->Edit(0, 0);
- current_view->update(0);
- current_view->owner()->getMiniBuffer()->Set(_("Figure inserted"));
- current_view->text->UnFreezeUndo();
-}
-
-
-extern "C" void FigureCancelCB(FL_OBJECT *, long)
-{
- fl_hide_form(fd_form_figure->form_figure);
-}
-
-
-extern "C" void FigureOKCB(FL_OBJECT * ob, long data)
-{
- FigureApplyCB(ob, data);
- FigureCancelCB(ob, data);
-}
-
-
-extern "C" void ScreenApplyCB(FL_OBJECT *, long)
-{
- lyxrc->roman_font_name = fl_get_input(fd_form_screen->input_roman);
- lyxrc->sans_font_name = fl_get_input(fd_form_screen->input_sans);
- lyxrc->typewriter_font_name = fl_get_input(fd_form_screen->input_typewriter);
- lyxrc->font_norm = fl_get_input(fd_form_screen->input_font_norm);
- lyxrc->zoom = atoi(fl_get_input(fd_form_screen->intinput_size));
- fontloader.update();
-
- // All buffers will need resize
- bufferlist.resize();
-
- current_view->owner()->getMiniBuffer()->Set(_("Screen options set"));
-}
-
-
-extern "C" void ScreenCancelCB(FL_OBJECT *, long)
-{
- fl_hide_form(fd_form_screen->form_screen);
-}
-
-
-extern "C" void ScreenOKCB(FL_OBJECT * ob, long data)
-{
- ScreenCancelCB(ob, data);
- ScreenApplyCB(ob, data);
-}
-
-
-void LaTeXOptions()
-{
- if (!current_view->available())
- return;
-
- fl_set_button(fd_latex_options->accents,
- int(current_view->buffer()->params.allowAccents));
-
- if (fd_latex_options->LaTeXOptions->visible) {
- fl_raise_form(fd_latex_options->LaTeXOptions);
- } else {
- fl_show_form(fd_latex_options->LaTeXOptions,
- FL_PLACE_MOUSE, FL_FULLBORDER,
- _("LaTeX Options"));
- }
-}
-
-
-// This function runs "configure" and then rereads lyx.defaults to
-// reconfigure the automatic settings.
-void Reconfigure()
-{
- current_view->owner()->getMiniBuffer()->Set(_("Running configure..."));