]> git.lyx.org Git - lyx.git/blobdiff - src/bufferview_funcs.C
layout as string
[lyx.git] / src / bufferview_funcs.C
index 79c1165b45af668a9e1d3b594ff13a95526de63c..308c4dc796e7bf18b840c71cc4ae1d0aec7014b7 100644 (file)
@@ -4,7 +4,7 @@
  *           LyX, The Document Processor
  *        
  *           Copyright 1995 Matthias Ettrich
- *           Copyright 1995-2000 The LyX Team.
+ *           Copyright 1995-2001 The LyX Team.
  *
  * ====================================================== */
 
 #include "bufferview_funcs.h"
 #include "LyXView.h"
 #include "BufferView.h"
-#include "lyxparagraph.h"
+#include "paragraph.h"
 #include "lyxfont.h"
-#include "lyx_gui_misc.h"
 #include "lyxtext.h"
 #include "buffer.h"
-#include "support/lstrings.h"
 #include "lyx_cb.h"
 #include "language.h"
 #include "gettext.h"
-#include "lyxfunc.h"
+#include "ParagraphParameters.h"
+#include "lyxtextclasslist.h"
 
-#ifndef NEW_INSETS
-void Foot(BufferView * bv)
-{
-       if (!bv->available()) 
-               return;
-       
-       bv->owner()->getMiniBuffer()
-               ->Set(_("Inserting Footnote..."));
-       bv->hideCursor();
-       bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR);
-       bv->text->InsertFootnoteEnvironment(bv, LyXParagraph::FOOTNOTE);
-       bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
-}
-#endif
+#include "frontends/Alert.h"
 
+#include "support/lstrings.h"
 
-void Emph(BufferView * bv)
+void emph(BufferView * bv)
 {
        LyXFont font(LyXFont::ALL_IGNORE);
        font.setEmph(LyXFont::TOGGLE);
-       ToggleAndShow(bv, font);
+       toggleAndShow(bv, font);
 }
 
 
-void Bold(BufferView * bv)
+void bold(BufferView * bv)
 {
        LyXFont font(LyXFont::ALL_IGNORE);
        font.setSeries(LyXFont::BOLD_SERIES);
-       ToggleAndShow(bv, font);
+       toggleAndShow(bv, font);
 }
 
 
-void Noun(BufferView * bv)
+void noun(BufferView * bv)
 {
        LyXFont font(LyXFont::ALL_IGNORE);
        font.setNoun(LyXFont::TOGGLE);
-       ToggleAndShow(bv, font);
+       toggleAndShow(bv, font);
 }
 
 
-#ifndef NEW_INSETS
-void Margin(BufferView * bv)
-{
-       if (bv->available()) {
-               bv->owner()->getLyXFunc()->Dispatch(LFUN_MESSAGE, _("Inserting margin note...");
-               bv->hideCursor();
-               bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR);
-               bv->text->InsertFootnoteEnvironment(bv, LyXParagraph::MARGIN);
-               bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
-       }
-}
-#endif
-
-void Number(BufferView * bv)
+void number(BufferView * bv)
 {
        LyXFont font(LyXFont::ALL_IGNORE);
        font.setNumber(LyXFont::TOGGLE);
-       ToggleAndShow(bv, font);
+       toggleAndShow(bv, font);
 }
 
-void Lang(BufferView * bv, string const & l)
+void lang(BufferView * bv, string const & l)
 {
        LyXFont font(LyXFont::ALL_IGNORE);
        Language const * lang = languages.getLanguage(l);
        if (lang) {
                font.setLanguage(lang);
-               ToggleAndShow(bv, font);
+               toggleAndShow(bv, font);
        } else
-               WriteAlert(_("Error! unknown language"),l);
-}
-
-
-#ifndef NEW_INSETS
-void Melt(BufferView * bv)
-{
-       if (!bv->available()) return;
-
-       bv->owner()->getLyXFunc()->Dispatch(LFUN_MESSAGE, _("Melt"));
-       bv->hideCursor();
-       bv->beforeChange(bv->text);
-       bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR);
-       bv->text->MeltFootnoteEnvironment(bv);
-       bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
-}
-#endif
-
-
-void Tex(BufferView * bv)
-{
-       LyXFont font(LyXFont::ALL_IGNORE);
-       font.setLatex (LyXFont::TOGGLE);
-       ToggleAndShow(bv, font);
+               Alert::alert(_("Error! unknown language"),l);
 }
 
 
@@ -134,110 +85,73 @@ void changeDepth(BufferView * bv, LyXText * text, int decInc)
        bv->hideCursor();
        bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR);
        if (decInc >= 0)
-               text->IncDepth(bv);
+               text->incDepth(bv);
        else
-               text->DecDepth(bv);
+               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()->getLyXFunc()
-               ->Dispatch(LFUN_MESSAGE,
-                          _("Changed environment depth "
-                            "(in possible range, maybe not)"));
-}
-
-
-// How should this actually work? Should it prohibit input in all BufferViews,
-// or just in the current one? If "just the current one", then it should be
-// placed in BufferView. If "all BufferViews" then LyXGUI (I think) should
-// run "ProhibitInput" on all LyXViews which will run prohibitInput on all
-// BufferViews. Or is it perhaps just the (input in) BufferViews in the
-// current LyxView that should be prohibited (Lgb) (This applies to
-// "AllowInput" as well.)
-void ProhibitInput(BufferView * bv)
-{
-       bv->hideCursor();
-
-       static Cursor cursor;
-       static bool cursor_undefined = true;
-   
-       if (cursor_undefined){
-               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_get_display(), bv->owner()->getForm()->window, 
-                     cursor);
-
-       XFlush(fl_get_display());
-       fl_deactivate_all_forms();
-}
-
-
-void AllowInput(BufferView * bv)
-{
-       /* reset the cursor from the watch for all forms and the canvas */
-   
-       XUndefineCursor(fl_get_display(), bv->owner()->getForm()->window);
-
-       XFlush(fl_get_display());
-       fl_activate_all_forms();
+       bv->owner()->message(_("Changed environment depth "
+                              "(in possible range, maybe not)"));
 }
 
 
-void Code(BufferView * bv)
+void code(BufferView * bv)
 {
        LyXFont font(LyXFont::ALL_IGNORE);
        font.setFamily(LyXFont::TYPEWRITER_FAMILY); // no good
-       ToggleAndShow(bv, font);
+       toggleAndShow(bv, font);
 }
 
 
-void Sans(BufferView * bv)
+void sans(BufferView * bv)
 {
        LyXFont font(LyXFont::ALL_IGNORE);
        font.setFamily(LyXFont::SANS_FAMILY);
-       ToggleAndShow(bv, font);
+       toggleAndShow(bv, font);
 }
 
 
-void Roman(BufferView * bv)
+void roman(BufferView * bv)
 {
        LyXFont font(LyXFont::ALL_IGNORE);
        font.setFamily(LyXFont::ROMAN_FAMILY);
-       ToggleAndShow(bv, font);
+       toggleAndShow(bv, font);
 }
 
 
-void StyleReset(BufferView * bv)
+void styleReset(BufferView * bv)
 {
+#ifndef INHERIT_LANG
        LyXFont font(LyXFont::ALL_INHERIT, ignore_language);
-       ToggleAndShow(bv, font);
+#else 
+       LyXFont font(LyXFont::ALL_INHERIT);
+#endif
+       toggleAndShow(bv, font);
 }
 
 
-void Underline(BufferView * bv)
+void underline(BufferView * bv)
 {
        LyXFont font(LyXFont::ALL_IGNORE);
        font.setUnderbar(LyXFont::TOGGLE);
-       ToggleAndShow(bv, font);
+       toggleAndShow(bv, font);
 }
 
 
-void FontSize(BufferView * bv, string const & size)
+void fontSize(BufferView * bv, string const & size)
 {
        LyXFont font(LyXFont::ALL_IGNORE);
        font.setLyXSize(size);
-       ToggleAndShow(bv, font);
+       toggleAndShow(bv, font);
 }
 
 
 // Returns the current font and depth as a message. 
-string const CurrentState(BufferView * bv)
+string const currentState(BufferView * bv)
 {
-       string state;
+       ostringstream state;
+
        if (bv->available()) { 
                // I think we should only show changes from the default
                // font. (Asger)
@@ -245,68 +159,80 @@ string const CurrentState(BufferView * bv)
                Buffer * buffer = bv->buffer();
                LyXFont font = text->real_current_font;
                LyXFont const & defaultfont =
-                       textclasslist
-                       .TextClass(buffer->params.textclass)
-                       .defaultfont();
+                       textclasslist[buffer->params.textclass].defaultfont();
                font.reduce(defaultfont);
-               state = _("Font: ") + font.stateText(&buffer->params);
+
+               state << _("Font:") << ' '
+                     << font.stateText(&buffer->params);
+               
                // The paragraph depth
-               int depth = text->GetDepth();
-               if (depth > 0) 
-                       state += string(_(", Depth: ")) + tostr(depth);
+               int depth = text->getDepth();
+               if (depth > 0)
+                       state << _(", Depth: ") << depth;
+               
                // The paragraph spacing, but only if different from
                // buffer spacing.
-               if (!text->cursor.par()->params.spacing().isDefault()) {
+               if (!text->cursor.par()->params().spacing().isDefault()) {
                        Spacing::Space cur_space =
-                               text->cursor.par()->params.spacing().getSpace();
-                       state += _(", Spacing: ");
+                               text->cursor.par()->params().spacing().getSpace();
+                       state << _(", Spacing: ");
+
                        switch (cur_space) {
                        case Spacing::Single:
-                               state += _("Single");
+                               state << _("Single");
+                               
                                break;
                        case Spacing::Onehalf:
-                               state += _("Onehalf");
+                               state << _("Onehalf");
                                break;
                        case Spacing::Double:
-                               state += _("Double");
+                               state << _("Double");
                                break;
                        case Spacing::Other:
-                               state += _("Other (");
-                               state += tostr(text->cursor.par()->params.spacing().getValue());
-                               state += ")";
+                               state << _("Other (")
+                                     << text->cursor.par()->params().spacing().getValue()
+                                     << ")";
                                break;
                        case Spacing::Default:
                                // should never happen, do nothing
                                break;
                        }
                }
+#if 1
+               state << _(", Paragraph: ") << text->cursor.par()->id();
+#endif
        }
-       return state;
+       return state.str().c_str();
 }
 
 
 /* -------> Does the actual toggle job of the XxxCB() calls above.
  * Also shows the current font state.
  */
-void ToggleAndShow(BufferView * bv, LyXFont const & font, bool toggleall)
+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();
+               if (!text)
+                       return;
 
                bv->hideCursor();
                bv->update(text, BufferView::SELECT|BufferView::FITCUR);
-               text->ToggleFree(bv, font, toggleall);
+               text->toggleFree(bv, font, toggleall);
                bv->update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
 
                if (font.language() != ignore_language ||
-                   font.latex() != LyXFont::IGNORE ||
                    font.number() != LyXFont::IGNORE) {
                        LyXCursor & cursor = text->cursor;
-                       text->ComputeBidiTables(bv->buffer(), cursor.row());
+                       text->computeBidiTables(bv->buffer(), cursor.row());
                        if (cursor.boundary() != 
-                           text->IsBoundary(bv->buffer(), cursor.par(), cursor.pos(),
-                                            text->real_current_font) )
-                               text->SetCursor(bv, cursor.par(), cursor.pos(),
+                           text->isBoundary(bv->buffer(), cursor.par(), cursor.pos(),
+                                            text->real_current_font))
+                               text->setCursor(bv, cursor.par(), cursor.pos(),
                                                false, !cursor.boundary());
                }
        }