-void Newline()
-{
- if (current_view->available()) {
- current_view->getScreen()->HideCursor();
- current_view->currentBuffer()->update(-2);
- current_view->currentBuffer()->text->InsertChar(LYX_META_NEWLINE);
- current_view->currentBuffer()->update(-1);
- }
-}
-
-
-void ProtectedBlank()
-{
- if (current_view->available()) {
- current_view->getScreen()->HideCursor();
- current_view->currentBuffer()->update(-2);
- current_view->currentBuffer()->text->InsertChar(LYX_META_PROTECTED_SEPARATOR);
- current_view->currentBuffer()->update(-1);
- }
-}
-
-
-void HFill()
-{
- if (current_view->available()) {
- current_view->getScreen()->HideCursor();
- current_view->currentBuffer()->update(-2);
- current_view->currentBuffer()->text->InsertChar(LYX_META_HFILL);
- current_view->currentBuffer()->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->currentBuffer();
- LyXFont font = buffer->text->real_current_font;
- LyXFont defaultfont = lyxstyle.TextClass(buffer->
- params.textclass)->defaultfont;
- font.reduce(defaultfont);
- state = _("Font: ") + font.stateText();
-
- int depth = buffer->text->GetDepth();
- if (depth>0)
- state += string(_(", Depth: ")) + tostr(depth);
- }
- return state;
-}
-
-
-/* -------> 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->currentBuffer()->update(-2);
- current_view->currentBuffer()->text->ToggleFree(font, toggleall);
- current_view->currentBuffer()->update(1);
- }
- // removed since it overrides the ToggleFree Message about the style
- // Since Styles are more "High Level" than raw fonts I think the user
- // prefers it like this Matthias
- // FontStateShowCB( 0, 0 );
-}
-
-
-extern "C" void MarginCB(FL_OBJECT *, long)
-{
- if (current_view->available()) {
- minibuffer->Set(_("Inserting margin note..."));
- current_view->getScreen()->HideCursor();
- current_view->currentBuffer()->update(-2);
- current_view->currentBuffer()->text->InsertFootnoteEnvironment(LyXParagraph::MARGIN);
- current_view->currentBuffer()->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 CopyEnvironmentCB()
-{
- if (current_view->available()) {
- current_view->currentBuffer()->text->copyEnvironmentType();
- /* clear the selection, even if mark_set */
- current_view->getScreen()->ToggleSelection();
- current_view->currentBuffer()->text->ClearSelection();
- current_view->currentBuffer()->update(-2);
- minibuffer->Set(_("Paragraph environment type copied"));
- }
-}
-
-
-void PasteEnvironmentCB()
-{
- if (current_view->available()) {
- current_view->currentBuffer()->text->pasteEnvironmentType();
- minibuffer->Set(_("Paragraph environment type set"));
- current_view->currentBuffer()->update(1);
- }
-}
-
-
-void CopyCB()
-{
- if (current_view->available()) {
- current_view->currentBuffer()->text->CopySelection();
- /* clear the selection, even if mark_set */
- current_view->getScreen()->ToggleSelection();
- current_view->currentBuffer()->text->ClearSelection();
- current_view->currentBuffer()->update(-2);
- minibuffer->Set(_("Copy"));
- }
-}
-
-
-void CutCB()
-{
- if (current_view->available()) {
- current_view->getScreen()->HideCursor();
- current_view->currentBuffer()->update(-2);
- current_view->currentBuffer()->text->CutSelection();
- current_view->currentBuffer()->update(1);
- minibuffer->Set(_("Cut"));
- }
-}
-
-
-void PasteCB()
-{
- if (!current_view->available()) return;
-
- minibuffer->Set(_("Paste"));
- current_view->getScreen()->HideCursor();
- /* clear the selection */
- current_view->getScreen()->ToggleSelection();
- current_view->currentBuffer()->text->ClearSelection();
- current_view->currentBuffer()->update(-2);
-
- /* paste */
- current_view->currentBuffer()->text->PasteSelection();
- current_view->currentBuffer()->update(1);
-
- /* clear the selection */
- current_view->getScreen()->ToggleSelection();
- current_view->currentBuffer()->text->ClearSelection();
- current_view->currentBuffer()->update(-2);
-}
-
-
-extern "C" void MeltCB(FL_OBJECT *, long)
-{
- if (!current_view->available()) return;
-
- minibuffer->Set(_("Melt"));
- current_view->getScreen()->HideCursor();
- BeforeChange();
- current_view->currentBuffer()->update(-2);
- current_view->currentBuffer()->text->MeltFootnoteEnvironment();
- current_view->currentBuffer()->update(1);
-}
-
-
-// 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->currentBuffer()->update(-2);
- if (button == 1)
- current_view->currentBuffer()->text->IncDepth();
- else
- current_view->currentBuffer()->text->DecDepth();
- current_view->currentBuffer()->update(1);
- minibuffer->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;
-
- 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 )