]> git.lyx.org Git - lyx.git/blobdiff - src/Text3.cpp
* LyXView:
[lyx.git] / src / Text3.cpp
index 1d3f0e30dff6d41d3ef1c8ceca73660ffbba5566..e730e268a198de167006eda687888b3242c18221 100644 (file)
 #include <clocale>
 #include <sstream>
 
+using std::endl;
+using std::string;
+using std::istringstream;
+using std::ostringstream;
 
 namespace lyx {
 
@@ -83,14 +87,9 @@ using cap::replaceSelection;
 using support::isStrUnsignedInt;
 using support::token;
 
-using std::endl;
-using std::string;
-using std::istringstream;
-using std::ostringstream;
-
-
+namespace frontend {
 extern docstring current_layout;
-
+}
 
 namespace {
 
@@ -686,6 +685,10 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                break;
        }
 
+       // TODO
+       // With the creation of LFUN_PARAGRAPH_PARAMS, this is now redundant,
+       // as its duties can be performed there. Should it be removed??
+       // FIXME For now, it can just dispatch LFUN_PARAGRAPH_PARAMS...
        case LFUN_PARAGRAPH_SPACING: {
                Paragraph & par = cur.paragraph();
                Spacing::Space cur_spacing = par.params().spacing().getSpace();
@@ -817,15 +820,15 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                cur.message(_("Paste"));
                cap::replaceSelection(cur);
                if (cmd.argument().empty() && !theClipboard().isInternal())
-                       pasteClipboard(cur, bv->buffer()->errorList("Paste"));
+                       pasteClipboard(cur, bv->buffer().errorList("Paste"));
                else {
                        string const arg(to_utf8(cmd.argument()));
-                       pasteFromStack(cur, bv->buffer()->errorList("Paste"),
+                       pasteFromStack(cur, bv->buffer().errorList("Paste"),
                                        isStrUnsignedInt(arg) ?
                                                convert<unsigned int>(arg) :
                                                0);
                }
-               bv->buffer()->errors("Paste");
+               bv->buffer().errors("Paste");
                cur.clearSelection(); // bug 393
                finishUndo();
                break;
@@ -878,7 +881,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
 
                // Derive layout number from given argument (string)
                // and current buffer's textclass (number)
-               TextClass const & tclass = bv->buffer()->params().getTextClass();
+               TextClass const & tclass = bv->buffer().params().getTextClass();
                if (layout.empty())
                        layout = tclass.defaultLayoutName();
                bool hasLayout = tclass.hasLayout(layout);
@@ -896,7 +899,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                        break;
                }
 
-               bool change_layout = (current_layout != layout);
+               bool change_layout = (frontend::current_layout != layout);
 
                if (!change_layout && cur.selection() &&
                        cur.selBegin().pit() != cur.selEnd().pit())
@@ -904,7 +907,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                        pit_type spit = cur.selBegin().pit();
                        pit_type epit = cur.selEnd().pit() + 1;
                        while (spit != epit) {
-                               if (pars_[spit].layout()->name() != current_layout) {
+                               if (pars_[spit].layout()->name() != frontend::current_layout) {
                                        change_layout = true;
                                        break;
                                }
@@ -922,9 +925,9 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
 
        case LFUN_CLIPBOARD_PASTE:
                cur.clearSelection();
-               pasteClipboard(cur, bv->buffer()->errorList("Paste"),
+               pasteClipboard(cur, bv->buffer().errorList("Paste"),
                               cmd.argument() == "paragraph");
-               bv->buffer()->errors("Paste");
+               bv->buffer().errors("Paste");
                break;
 
        case LFUN_PRIMARY_SELECTION_PASTE:
@@ -950,7 +953,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
        case LFUN_QUOTE_INSERT: {
                Paragraph & par = cur.paragraph();
                pos_type pos = cur.pos();
-               BufferParams const & bufparams = bv->buffer()->params();
+               BufferParams const & bufparams = bv->buffer().params();
                Layout_ptr const & style = par.layout();
                if (!style->pass_thru
                    && par.getFontSettings(bufparams, pos).language()->lang() != "hebrew") {
@@ -1028,9 +1031,9 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                                cap::copySelectionToStack();
 
                                cap::pasteSelection(bv->cursor(), 
-                                                   bv->buffer()->errorList("Paste"));
-                               bv->buffer()->errors("Paste");
-                               bv->buffer()->markDirty();
+                                                   bv->buffer().errorList("Paste"));
+                               bv->buffer().errors("Paste");
+                               bv->buffer().markDirty();
                                finishUndo();
                        } else {
                                lyx::dispatch(FuncRequest(LFUN_PRIMARY_SELECTION_PASTE, "paragraph"));
@@ -1209,7 +1212,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                // inside it.
                doInsertInset(cur, this, cmd, true, true);
                cur.posRight();
-               updateLabels(*bv->buffer());
+               updateLabels(bv->buffer());
                break;
        case LFUN_NOTE_INSERT:
        case LFUN_CHARSTYLE_INSERT:
@@ -1246,7 +1249,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                cur.posRight();
                ParagraphList & pars = cur.text()->paragraphs();
 
-               TextClass const & tclass = bv->buffer()->params().getTextClass();
+               TextClass const & tclass = bv->buffer().params().getTextClass();
 
                // add a separate paragraph for the caption inset
                pars.push_back(Paragraph());
@@ -1513,7 +1516,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                break;
 
        case LFUN_FLOAT_LIST: {
-               TextClass const & tclass = bv->buffer()->params().getTextClass();
+               TextClass const & tclass = bv->buffer().params().getTextClass();
                if (tclass.floats().typeExist(to_utf8(cmd.argument()))) {
                        recordUndo(cur);
                        if (cur.selection())
@@ -1526,7 +1529,8 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                        }
 
                        setLayout(cur, tclass.defaultLayoutName());
-                       setParagraph(cur, Spacing(), LYX_ALIGN_LAYOUT, docstring(), 0);
+                       ParagraphParameters p;
+                       setParagraphs(cur, p);
                        insertInset(cur, new InsetFloatList(to_utf8(cmd.argument())));
                        cur.posRight();
                } else {
@@ -1564,17 +1568,21 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
        case LFUN_PARAGRAPH_PARAMS_APPLY: {
                // Given data, an encoding of the ParagraphParameters
                // generated in the Paragraph dialog, this function sets
-               // the current paragraph appropriately.
-               istringstream is(to_utf8(cmd.argument()));
-               Lexer lex(0, 0);
-               lex.setStream(is);
-               ParagraphParameters params;
-               params.read(lex);
-               setParagraph(cur,
-                            params.spacing(),
-                            params.align(),
-                            params.labelWidthString(),
-                            params.noindent());
+               // the current paragraph, or currently selected paragraphs,
+               // appropriately. 
+               // NOTE: This function overrides all existing settings.
+               setParagraphs(cur, cmd.argument());
+               cur.message(_("Paragraph layout set"));
+               break;
+       }
+       
+       case LFUN_PARAGRAPH_PARAMS: {
+               // Given data, an encoding of the ParagraphParameters as we'd
+               // find them in a LyX file, this function modifies the current paragraph, 
+               // or currently selected paragraphs. 
+               // NOTE: This function only modifies, and does not override, existing
+               // settings.
+               setParagraphs(cur, cmd.argument(), true);
                cur.message(_("Paragraph layout set"));
                break;
        }
@@ -1888,7 +1896,7 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
                break;
 
        case LFUN_INSET_DISSOLVE:
-               enable = !isMainText(*cur.bv().buffer()) && cur.inset().nargs() == 1;
+               enable = !isMainText(cur.bv().buffer()) && cur.inset().nargs() == 1;
                break;
 
        case LFUN_CHANGE_ACCEPT:
@@ -1992,6 +2000,7 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
        case LFUN_ACCENT_OGONEK:
        case LFUN_THESAURUS_ENTRY:
        case LFUN_PARAGRAPH_PARAMS_APPLY:
+       case LFUN_PARAGRAPH_PARAMS:
        case LFUN_ESCAPE:
        case LFUN_BUFFER_END:
        case LFUN_BUFFER_BEGIN: