X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fbufferview_funcs.C;h=c028e0af285244ff86c873cbcbb9cb5696930ec0;hb=4bcf99c809049e2551f990a9962fd61676f35caa;hp=e7113979a99ba73228be0142372c6feb63f2f67b;hpb=2889b5fd3e8987d0c265ff4726a7fb6c6cb6c034;p=lyx.git diff --git a/src/bufferview_funcs.C b/src/bufferview_funcs.C index e7113979a9..c028e0af28 100644 --- a/src/bufferview_funcs.C +++ b/src/bufferview_funcs.C @@ -1,5 +1,19 @@ +/* This file is part of + * ====================================================== + * + * LyX, The Document Processor + * + * Copyright 1995 Matthias Ettrich + * Copyright 1995-2000 The LyX Team. + * + * ====================================================== */ + #include +#ifdef __GNUG__ +#pragma implementation +#endif + #include "bufferview_funcs.h" #include "LyXView.h" #include "BufferView.h" @@ -7,28 +21,11 @@ #include "lyxfont.h" #include "lyx_gui_misc.h" #include "lyxtext.h" -#include "minibuffer.h" #include "buffer.h" #include "support/lstrings.h" #include "lyx_cb.h" -#include "layout_forms.h" - -extern FD_form_paragraph * fd_form_paragraph; -extern FD_form_character * fd_form_character; - - -void Foot(BufferView * bv) -{ - if (!bv->available()) - return; - - bv->owner()->getMiniBuffer() - ->Set(_("Inserting Footnote...")); - bv->hideCursor(); - bv->update(-2); - bv->text->InsertFootnoteEnvironment(LyXParagraph::FOOTNOTE); - bv->update(1); -} +#include "language.h" +#include "gettext.h" void Emph(BufferView * bv) @@ -55,43 +52,25 @@ void Noun(BufferView * bv) } -void Margin(BufferView * bv) +void Number(BufferView * bv) { - if (bv->available()) { - bv->owner()->getMiniBuffer()->Set(_("Inserting margin note...")); - bv->hideCursor(); - bv->update(-2); - bv->text->InsertFootnoteEnvironment(LyXParagraph::MARGIN); - bv->update(1); - } + LyXFont font(LyXFont::ALL_IGNORE); + font.setNumber(LyXFont::TOGGLE); + ToggleAndShow(bv, font); } - void Lang(BufferView * bv, string const & l) { LyXFont font(LyXFont::ALL_IGNORE); - Languages::iterator lit = languages.find(l); - if (lit != languages.end()) { - font.setLanguage(&(*lit).second); + Language const * lang = languages.getLanguage(l); + if (lang) { + font.setLanguage(lang); ToggleAndShow(bv, font); } else WriteAlert(_("Error! unknown language"),l); } -void Melt(BufferView * bv) -{ - if (!bv->available()) return; - - bv->owner()->getMiniBuffer()->Set(_("Melt")); - bv->hideCursor(); - bv->beforeChange(); - bv->update(-2); - bv->text->MeltFootnoteEnvironment(); - bv->update(1); -} - - void Tex(BufferView * bv) { LyXFont font(LyXFont::ALL_IGNORE); @@ -103,26 +82,22 @@ void Tex(BufferView * bv) // Change environment depth. // if decInc >= 0, increment depth // if decInc < 0, decrement depth -void changeDepth(BufferView * bv, int decInc) +void changeDepth(BufferView * bv, LyXText * text, int decInc) { - if (!bv->available()) return; + if (!bv->available() || !text) + return; bv->hideCursor(); - bv->update(-2); + bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR); if (decInc >= 0) - bv->text->IncDepth(); + text->IncDepth(bv); else - bv->text->DecDepth(); - bv->update(1); - bv->owner()->getMiniBuffer() - ->Set(_("Changed environment depth" - " (in possible range, maybe not)")); -} - - -void Free(BufferView * bv) -{ - ToggleAndShow(bv, UserFreeFont()); + text->DecDepth(bv); + if (text->inset_owner) + bv->updateInset((Inset *)text->inset_owner, true); + bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + bv->owner()->message(_("Changed environment depth " + "(in possible range, maybe not)")); } @@ -141,24 +116,16 @@ void ProhibitInput(BufferView * bv) static bool cursor_undefined = true; if (cursor_undefined){ - cursor = XCreateFontCursor(fl_display, XC_watch); - XFlush(fl_display); + cursor = XCreateFontCursor(fl_get_display(), XC_watch); + XFlush(fl_get_display()); cursor_undefined = false; } /* set the cursor to the watch for all forms and the canvas */ - XDefineCursor(fl_display, bv->owner()->getForm()->window, + XDefineCursor(fl_get_display(), bv->owner()->getForm()->window, cursor); - if (fd_form_paragraph->form_paragraph->visible) - XDefineCursor(fl_display, - fd_form_paragraph->form_paragraph->window, - cursor); - if (fd_form_character->form_character->visible) - XDefineCursor(fl_display, - fd_form_character->form_character->window, - cursor); - - XFlush(fl_display); + + XFlush(fl_get_display()); fl_deactivate_all_forms(); } @@ -167,15 +134,9 @@ void AllowInput(BufferView * bv) { /* reset the cursor from the watch for all forms and the canvas */ - XUndefineCursor(fl_display, bv->owner()->getForm()->window); - if (fd_form_paragraph->form_paragraph->visible) - XUndefineCursor(fl_display, - fd_form_paragraph->form_paragraph->window); - if (fd_form_character->form_character->visible) - XUndefineCursor(fl_display, - fd_form_character->form_character->window); - - XFlush(fl_display); + XUndefineCursor(fl_get_display(), bv->owner()->getForm()->window); + + XFlush(fl_get_display()); fl_activate_all_forms(); } @@ -222,23 +183,21 @@ void Underline(BufferView * bv) void FontSize(BufferView * bv, string const & size) { LyXFont font(LyXFont::ALL_IGNORE); - font.setGUISize(size); + font.setLyXSize(size); ToggleAndShow(bv, 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(BufferView * bv) +// Returns the current font and depth as a message. +string const CurrentState(BufferView * bv) { string state; if (bv->available()) { // I think we should only show changes from the default // font. (Asger) + LyXText * text = bv->getLyXText(); Buffer * buffer = bv->buffer(); - LyXFont font = bv->text->real_current_font; + LyXFont font = text->real_current_font; LyXFont const & defaultfont = textclasslist .TextClass(buffer->params.textclass) @@ -246,14 +205,14 @@ string CurrentState(BufferView * bv) font.reduce(defaultfont); state = _("Font: ") + font.stateText(&buffer->params); // The paragraph depth - int depth = bv->text->GetDepth(); + int depth = text->GetDepth(); if (depth > 0) state += string(_(", Depth: ")) + tostr(depth); // The paragraph spacing, but only if different from // buffer spacing. - if (!bv->text->cursor.par()->spacing.isDefault()) { + if (!text->cursor.par()->params.spacing().isDefault()) { Spacing::Space cur_space = - bv->text->cursor.par()->spacing.getSpace(); + text->cursor.par()->params.spacing().getSpace(); state += _(", Spacing: "); switch (cur_space) { case Spacing::Single: @@ -267,7 +226,7 @@ string CurrentState(BufferView * bv) break; case Spacing::Other: state += _("Other ("); - state += tostr(bv->text->cursor.par()->spacing.getValue()); + state += tostr(text->cursor.par()->params.spacing().getValue()); state += ")"; break; case Spacing::Default: @@ -283,26 +242,30 @@ string CurrentState(BufferView * bv) /* -------> Does the actual toggle job of the XxxCB() calls above. * Also shows the current font state. */ -void ToggleAndShow(BufferView * bv, LyXFont const & font) +void ToggleAndShow(BufferView * bv, LyXFont const & font, bool toggleall) { if (bv->available()) { + if (bv->theLockingInset()) { + bv->theLockingInset()->SetFont(bv, font, toggleall); + return; + } + LyXText * text = bv->getLyXText(); + bv->hideCursor(); - bv->update(-2); - if (bv->the_locking_inset) - bv->the_locking_inset->SetFont(bv, font, toggleall); - else - bv->text->ToggleFree(font, toggleall); - bv->update(1); + bv->update(text, BufferView::SELECT|BufferView::FITCUR); + text->ToggleFree(bv, font, toggleall); + bv->update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); if (font.language() != ignore_language || - font.latex() != LyXFont::IGNORE) { - LyXText * text = bv->text; + font.latex() != LyXFont::IGNORE || + font.number() != LyXFont::IGNORE) + { LyXCursor & cursor = text->cursor; - text->ComputeBidiTables(cursor.row()); + text->ComputeBidiTables(bv->buffer(), cursor.row()); if (cursor.boundary() != - text->IsBoundary(cursor.par(), cursor.pos(), + text->IsBoundary(bv->buffer(), cursor.par(), cursor.pos(), text->real_current_font) ) - text->SetCursor(cursor.par(), cursor.pos(), + text->SetCursor(bv, cursor.par(), cursor.pos(), false, !cursor.boundary()); } }