X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FText3.cpp;h=e730e268a198de167006eda687888b3242c18221;hb=8db4a8dd4663cdd6a3cf67777ea2538a380d0dd2;hp=7231f07cfad293cd97d3f27120c4aea254c7bdfb;hpb=1050cc44714f8b78e233d6a559ead3d7a8b6aa56;p=lyx.git diff --git a/src/Text3.cpp b/src/Text3.cpp index 7231f07cfa..e730e268a1 100644 --- a/src/Text3.cpp +++ b/src/Text3.cpp @@ -71,6 +71,10 @@ #include #include +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(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") { @@ -983,14 +986,13 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd) break; } - case LFUN_DATE_INSERT: - if (cmd.argument().empty()) - lyx::dispatch(FuncRequest(LFUN_SELF_INSERT, - formatted_time(current_time()))); - else - lyx::dispatch(FuncRequest(LFUN_SELF_INSERT, - formatted_time(current_time(), to_utf8(cmd.argument())))); + case LFUN_DATE_INSERT: { + string const format = cmd.argument().empty() + ? lyxrc.date_insert_format : to_utf8(cmd.argument()); + string const time = formatted_time(current_time(), format); + lyx::dispatch(FuncRequest(LFUN_SELF_INSERT, time)); break; + } case LFUN_MOUSE_TRIPLE: if (cmd.button() == mouse_button::button1) { @@ -1029,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")); @@ -1210,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: @@ -1247,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()); @@ -1514,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()) @@ -1527,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 { @@ -1565,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; } @@ -1889,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: @@ -1993,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: