X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FText3.cpp;h=ee0e7b1fc99c671f08b4f1f8c652236b1b26ac5d;hb=e08e5afeea7194d95be1f02fe9484383574d203f;hp=157395564ac80fea66da12622e8192de7edafb78;hpb=1c7d39519795a364860994dd798e5b81bd1ab2cf;p=lyx.git diff --git a/src/Text3.cpp b/src/Text3.cpp index 157395564a..ee0e7b1fc9 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 { @@ -396,10 +395,8 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd) Paragraph & par = cur.paragraph(); bool start = !par.params().startOfAppendix(); -#ifdef WITH_WARNINGS -#warning The code below only makes sense at top level. +// FIXME: The code below only makes sense at top level. // Should LFUN_APPENDIX be restricted to top-level paragraphs? -#endif // ensure that we have only one start_of_appendix in this document // FIXME: this don't work for multipart document! for (pit_type tmp = 0, end = pars_.size(); tmp != end; ++tmp) { @@ -655,9 +652,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd) case LFUN_DELETE_BACKWARD_SKIP: // Reverse the effect of LFUN_BREAK_PARAGRAPH_SKIP. if (!cur.selection()) { -#ifdef WITH_WARNINGS -#warning look here -#endif + // FIXME: look here //CursorSlice cur = cursor(); backspace(cur); //anchor() = cur; @@ -690,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(); @@ -900,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()) @@ -908,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; } @@ -987,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) { @@ -1531,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 { @@ -1569,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; } @@ -1603,7 +1606,6 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd) } needsUpdate |= (cur.pos() != cur.lastpos()) && cur.selection(); - theSelection().haveSelection(bv->cursor().selection()); // FIXME: The cursor flag is reset two lines below // so we need to check here if some of the LFUN did touch that. @@ -1998,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: