From: Michael Schmitt Date: Fri, 6 Oct 2006 18:53:35 +0000 (+0000) Subject: Change tracking: X-Git-Tag: 1.6.10~12447 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=eb11f2c542876ad71c5bfdcc207c57a26a0eeb8b;p=features.git Change tracking: * rename output_changes to outputChanges * rename tracking_changes to trackChanges * add FIXMEs for later revision * remove trackChanges(); the CT data structure will always be set up * decouple LFUNs changes-output/change-accept/change-reject/ all-changes-accept/all-changes-reject from LFUN changes-track git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@15261 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/BufferView.C b/src/BufferView.C index 3f156cfa73..cea4268b0c 100644 --- a/src/BufferView.C +++ b/src/BufferView.C @@ -501,7 +501,7 @@ void BufferView::setCursorFromScrollbar() Change const BufferView::getCurrentChange() { - if (!buffer_->params().tracking_changes || !cursor_.selection()) + if (!cursor_.selection()) return Change(Change::UNCHANGED); DocIterator dit = cursor_.selectionBegin(); @@ -664,15 +664,14 @@ FuncStatus BufferView::getStatus(FuncRequest const & cmd) case LFUN_CHANGES_TRACK: flag.enabled(true); - flag.setOnOff(buffer_->params().tracking_changes); + flag.setOnOff(buffer_->params().trackChanges); break; case LFUN_CHANGES_OUTPUT: { OutputParams runparams; LaTeXFeatures features(*buffer_, buffer_->params(), runparams); - flag.enabled(buffer_ && buffer_->params().tracking_changes - && features.isAvailable("dvipost")); - flag.setOnOff(buffer_->params().output_changes); + flag.enabled(buffer_ && features.isAvailable("dvipost")); + flag.setOnOff(buffer_->params().outputChanges); break; } @@ -680,7 +679,7 @@ FuncStatus BufferView::getStatus(FuncRequest const & cmd) case LFUN_CHANGE_NEXT: case LFUN_ALL_CHANGES_ACCEPT: case LFUN_ALL_CHANGES_REJECT: - flag.enabled(buffer_ && buffer_->params().tracking_changes); + flag.enabled(buffer_); // FIXME: Change tracking (MG) break; case LFUN_BUFFER_TOGGLE_COMPRESSION: { @@ -832,12 +831,11 @@ bool BufferView::dispatch(FuncRequest const & cmd) } case LFUN_CHANGES_TRACK: - trackChanges(); + buffer_->params().trackChanges = !buffer_->params().trackChanges; break; case LFUN_CHANGES_OUTPUT: { - bool const state = buffer_->params().output_changes; - buffer_->params().output_changes = !state; + buffer_->params().outputChanges = !buffer_->params().outputChanges; break; } @@ -1426,33 +1424,3 @@ void BufferView::menuInsertLyXFile(string const & filenm) buffer_->errors("Parse"); resize(); } - - -void BufferView::trackChanges() -{ - bool const tracking = buffer_->params().tracking_changes; - - if (!tracking) { - for_each(buffer_->par_iterator_begin(), - buffer_->par_iterator_end(), - bind(&Paragraph::trackChanges, _1, Change::UNCHANGED)); - buffer_->params().tracking_changes = true; - - // We cannot allow undos beyond the freeze point - buffer_->undostack().clear(); - } else { - cursor_.setCursor(doc_iterator_begin(buffer_->inset())); - if (lyx::find::findNextChange(this)) { - showDialog("changes"); - return; - } - - for_each(buffer_->par_iterator_begin(), - buffer_->par_iterator_end(), - mem_fun_ref(&Paragraph::untrackChanges)); - - buffer_->params().tracking_changes = false; - } - - buffer_->redostack().clear(); -} diff --git a/src/BufferView.h b/src/BufferView.h index 80199dd270..9f8ae09cad 100644 --- a/src/BufferView.h +++ b/src/BufferView.h @@ -236,9 +236,6 @@ private: /// ScrollbarParameters scrollbarParameters_; - /// track changes for the document - void trackChanges(); - /// ViewMetricsInfo metrics_info_; diff --git a/src/CutAndPaste.C b/src/CutAndPaste.C index 4aaa47369f..1d44755fd8 100644 --- a/src/CutAndPaste.C +++ b/src/CutAndPaste.C @@ -210,10 +210,8 @@ pasteSelectionHelper(LCursor & cur, ParagraphList const & parlist, } // reset change tracking status - if (buffer.params().tracking_changes) - tmpbuf->cleanChanges(Paragraph::trackingOn); - else - tmpbuf->cleanChanges(Paragraph::trackingOff); + // FIXME: Change tracking (MG) + // tmpbuf->cleanChanges(Paragraph::trackingOn/Off); } bool const empty = pars[pit].empty(); @@ -319,7 +317,8 @@ PitPosPair eraseSelectionHelper(BufferParams const & params, // only if either (1) change tracking is off, or (2) the para break // is "blue" for (pit_type pit = startpit; pit != endpit + 1;) { - bool const merge = !params.tracking_changes || + // FIXME: Change tracking (MG) + bool const merge = !params.trackChanges || pars[pit].lookupChange(pars[pit].size()) == Change::INSERTED; pos_type const left = ( pit == startpit ? startpos : 0 ); diff --git a/src/buffer.C b/src/buffer.C index 2ce60e9dfc..df4cddcded 100644 --- a/src/buffer.C +++ b/src/buffer.C @@ -1106,8 +1106,7 @@ void Buffer::validate(LaTeXFeatures & features) const { LyXTextClass const & tclass = params().getLyXTextClass(); - if (features.isAvailable("dvipost") && params().tracking_changes - && params().output_changes) + if (features.isAvailable("dvipost") && params().outputChanges) features.require("dvipost"); // AMS Style is at document level diff --git a/src/bufferparams.C b/src/bufferparams.C index 9b14b59695..61d1088e46 100644 --- a/src/bufferparams.C +++ b/src/bufferparams.C @@ -300,8 +300,8 @@ BufferParams::BufferParams() use_amsmath = AMS_AUTO; cite_engine = biblio::ENGINE_BASIC; use_bibtopic = false; - tracking_changes = false; - output_changes = false; + trackChanges = false; + outputChanges = false; secnumdepth = 3; tocdepth = 3; language = default_language; @@ -490,9 +490,9 @@ string const BufferParams::readToken(LyXLex & lex, string const & token) } else if (token == "\\use_bibtopic") { lex >> use_bibtopic; } else if (token == "\\tracking_changes") { - lex >> tracking_changes; + lex >> trackChanges; } else if (token == "\\output_changes") { - lex >> output_changes; + lex >> outputChanges; } else if (token == "\\branch") { lex.next(); string branch = lex.getString(); @@ -699,10 +699,11 @@ void BufferParams::writeFile(ostream & os) const } } - os << "\\tracking_changes " << convert(tracking_changes) << "\n"; - os << "\\output_changes " << convert(output_changes) << "\n"; + os << "\\tracking_changes " << convert(trackChanges) << "\n"; + os << "\\output_changes " << convert(outputChanges) << "\n"; - if (tracking_changes) { + if (trackChanges) { + // FIXME: Change tracking (MG) AuthorList::Authors::const_iterator it = pimpl_->authorlist.begin(); AuthorList::Authors::const_iterator end = pimpl_->authorlist.end(); for (; it != end; ++it) { @@ -1084,7 +1085,7 @@ bool BufferParams::writeLaTeX(ostream & os, LaTeXFeatures & features, lyxpreamble += "\\makeatother\n"; // dvipost settings come after everything else - if (features.isAvailable("dvipost") && tracking_changes && output_changes) { + if (features.isAvailable("dvipost") && outputChanges) { lyxpreamble += "\\dvipostlayout\n" "\\dvipost{osstart color push Red}\n" diff --git a/src/bufferparams.h b/src/bufferparams.h index 4be55bdf4c..3ea4bc7cf8 100644 --- a/src/bufferparams.h +++ b/src/bufferparams.h @@ -226,15 +226,15 @@ public: /// bool use_bibtopic; /// revision tracking for this buffer ? - bool tracking_changes; + bool trackChanges; /** This param decides whether change tracking marks should be output * (using the dvipost package) or if the current "state" of the * document should be output instead. Since dvipost needs dvi * specials, it only works with dvi/ps output (the param will be - * ignored with other output flavors and disabled when dbipost is + * ignored with other output flavors and disabled when dvipost is * not installed). */ - bool output_changes; + bool outputChanges; /// Time ago we agreed that this was a buffer property [ale990407] std::string parentname; /// diff --git a/src/insets/insettabular.C b/src/insets/insettabular.C index 0774f66c3f..3d772296c4 100644 --- a/src/insets/insettabular.C +++ b/src/insets/insettabular.C @@ -1847,7 +1847,8 @@ void InsetTabular::cutSelection(LCursor & cur) for (col_type j = cs; j <= ce; ++j) { shared_ptr t = cell(tabular.getCellNumber(i, j)); - if (cur.buffer().params().tracking_changes) + if (cur.buffer().params().trackChanges) + // FIXME: Change tracking (MG) t->markErased(true); else t->clear(); diff --git a/src/insets/insettext.C b/src/insets/insettext.C index 2ff1fdb0c6..caf81d05ae 100644 --- a/src/insets/insettext.C +++ b/src/insets/insettext.C @@ -80,8 +80,6 @@ InsetText::InsetText(BufferParams const & bp) { paragraphs().push_back(Paragraph()); paragraphs().back().layout(bp.getLyXTextClass().defaultLayout()); - if (bp.tracking_changes) - paragraphs().back().trackChanges(); // Dispose of the infamous L-shaped cursor. text_.current_font.setLanguage(bp.language); text_.real_current_font.setLanguage(bp.language); @@ -155,12 +153,6 @@ void InsetText::read(Buffer const & buf, LyXLex & lex) { clear(); -#ifdef WITH_WARNINGS -#warning John, look here. Doesnt make much sense. -#endif - if (buf.params().tracking_changes) - paragraphs().begin()->trackChanges(); - // delete the initial paragraph Paragraph oldpar = *paragraphs().begin(); paragraphs().clear(); diff --git a/src/lyxfunc.C b/src/lyxfunc.C index 6945cc176d..40d7f275d0 100644 --- a/src/lyxfunc.C +++ b/src/lyxfunc.C @@ -639,8 +639,7 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const } // Are we in a DELETED change-tracking region? - if (buf && buf->params().tracking_changes - && lookupChangeType(cur, true) == Change::DELETED + if (buf && lookupChangeType(cur, true) == Change::DELETED && !lyxaction.funcHasFlag(cmd.action, LyXAction::ReadOnly) && !lyxaction.funcHasFlag(cmd.action, LyXAction::NoBuffer)) { flag.message(lyx::from_utf8(N_("This portion of the document is deleted."))); diff --git a/src/paragraph.C b/src/paragraph.C index 2ca17c2ef2..aac2e0128d 100644 --- a/src/paragraph.C +++ b/src/paragraph.C @@ -894,7 +894,7 @@ bool Paragraph::simpleTeXOnePar(Buffer const & buf, // output change tracking marks only if desired, // if dvipost is installed, // and with dvi/ps (other formats don't work) - bool const output = bparams.output_changes + bool const output = bparams.outputChanges && runparams.flavor == OutputParams::LATEX && features.isAvailable("dvipost"); diff --git a/src/paragraph_funcs.C b/src/paragraph_funcs.C index 20a284bb6f..3d4421bd04 100644 --- a/src/paragraph_funcs.C +++ b/src/paragraph_funcs.C @@ -110,9 +110,6 @@ void breakParagraph(BufferParams const & bparams, // remember to set the inset_owner tmp->setInsetOwner(par.inInset()); - if (bparams.tracking_changes) - tmp->trackChanges(); - // this is an idea for a more userfriendly layout handling, I will // see what the users say @@ -187,7 +184,8 @@ void breakParagraph(BufferParams const & bparams, } // subtle, but needed to get empty pars working right - if (bparams.tracking_changes) { + if (bparams.trackChanges) { + // FIXME: Change tracking (MG) if (!par.size()) { par.cleanChanges(); } else if (!tmp->size()) { @@ -205,9 +203,6 @@ void breakParagraphConservative(BufferParams const & bparams, Paragraph()); Paragraph & par = pars[par_offset]; - if (bparams.tracking_changes) - tmp.trackChanges(); - tmp.makeSameLayout(par); // When can pos > size()? @@ -228,7 +223,8 @@ void breakParagraphConservative(BufferParams const & bparams, // If tracking changes, set all the text that is to be // erased to Type::INSERTED. for (pos_type k = pos_end; k >= pos; --k) { - if (bparams.tracking_changes) + if (bparams.trackChanges) + // FIXME: Change tracking (MG) par.setChange(k, Change::INSERTED); par.erase(k); } diff --git a/src/paragraph_pimpl.C b/src/paragraph_pimpl.C index 8c0461b830..f4e77fc8c4 100644 --- a/src/paragraph_pimpl.C +++ b/src/paragraph_pimpl.C @@ -533,7 +533,7 @@ void Paragraph::Pimpl::simpleTeXSpecialChars(Buffer const & buf, // if dvipost is installed, // and with dvi/ps (other formats don't work) LaTeXFeatures features(buf, bparams, runparams); - bool const output = bparams.output_changes + bool const output = bparams.outputChanges && runparams.flavor == OutputParams::LATEX && features.isAvailable("dvipost"); diff --git a/src/tabular.C b/src/tabular.C index 25aea3843b..10c59096e0 100644 --- a/src/tabular.C +++ b/src/tabular.C @@ -495,7 +495,8 @@ void LyXTabular::appendRow(BufferParams const & bp, idx_type const cell) for (row_type i = row + 2; i < rows_; ++i) swap(cell_info[i], old[i - 1]); - if (bp.tracking_changes) + if (bp.trackChanges) + // FIXME: Change Tracking (MG) for (col_type j = 0; j < columns_; ++j) cell_info[row + 1][j].inset->markNew(true); @@ -523,7 +524,8 @@ void LyXTabular::copyRow(BufferParams const & bp, row_type const row) row_info.insert(row_info.begin() + row, row_info[row]); cell_info.insert(cell_info.begin() + row, cell_info[row]); - if (bp.tracking_changes) + if (bp.trackChanges) + // FIXME: Change Tracking (MG) for (col_type j = 0; j < columns_; ++j) cell_info[row + 1][j].inset->markNew(true); @@ -555,7 +557,8 @@ void LyXTabular::appendColumn(BufferParams const & bp, idx_type const cell) //++column; for (row_type i = 0; i < rows_; ++i) { cell_info[i][column + 1].inset->clear(); - if (bp.tracking_changes) + if (bp.trackChanges) + // FIXME: Change Tracking (MG) cell_info[i][column + 1].inset->markNew(true); } fixCellNums(); @@ -585,7 +588,8 @@ void LyXTabular::copyColumn(BufferParams const & bp, col_type const column) for (row_type i = 0; i < rows_; ++i) cell_info[i].insert(cell_info[i].begin() + column, cell_info[i][column]); - if (bp.tracking_changes) + if (bp.trackChanges) + // FIXME: Change Tracking (MG) for (row_type i = 0; i < rows_; ++i) cell_info[i][column + 1].inset->markNew(true); fixCellNums(); diff --git a/src/text.C b/src/text.C index f494ca4f00..67ef060a8d 100644 --- a/src/text.C +++ b/src/text.C @@ -1170,7 +1170,8 @@ void LyXText::breakParagraph(LCursor & cur, bool keep_layout) updateLabels(cur.buffer(), current_it, last_it); // Mark "carriage return" as inserted if change tracking: - if (cur.buffer().params().tracking_changes) { + if (cur.buffer().params().trackChanges) { + // FIXME: Change tracking (MG) cur.paragraph().setChange(cur.paragraph().size(), Change::INSERTED); } @@ -1670,7 +1671,8 @@ bool LyXText::erase(LCursor & cur) if (pars_[cur.pit()].layout() == pars_[scur.pit()].layout()) { recordUndo(scur, Undo::DELETE, scur.pit()); needsUpdate = backspace(cur); - if (cur.buffer().params().tracking_changes) { + if (cur.buffer().params().trackChanges) { + // FIXME: Change tracking (MG) // move forward after the paragraph break is DELETED Paragraph & par = cur.paragraph(); if (par.lookupChange(par.size()) == Change::DELETED) @@ -1774,7 +1776,8 @@ bool LyXText::backspace(LCursor & cur) // the the backspace will collapse two paragraphs into // one. - if (cur.pit() != 0 && cur.buffer().params().tracking_changes) { + if (cur.pit() != 0 && cur.buffer().params().trackChanges) { + // FIXME: Change tracking (MG) // Previous paragraph, mark "carriage return" as // deleted: Paragraph & par = pars_[cur.pit() - 1]; @@ -2214,8 +2217,6 @@ bool LyXText::read(Buffer const & buf, LyXLex & lex, ErrorList & errorList) Paragraph par; par.params().depth(depth); - if (buf.params().tracking_changes) - par.trackChanges(); par.setFont(0, LyXFont(LyXFont::ALL_INHERIT, buf.params().language)); pars_.push_back(par); @@ -2372,10 +2373,9 @@ string LyXText::currentState(LCursor & cur) Paragraph const & par = cur.paragraph(); std::ostringstream os; - bool const show_change = buf.params().tracking_changes - && par.lookupChange(cur.pos()) != Change::UNCHANGED; + bool const show_change = par.lookupChange(cur.pos()) != Change::UNCHANGED; - if (buf.params().tracking_changes) + if (buf.params().trackChanges) os << "[C] "; if (show_change) { diff --git a/src/text3.C b/src/text3.C index 92d8006f97..5a424ec629 100644 --- a/src/text3.C +++ b/src/text3.C @@ -1708,7 +1708,7 @@ bool LyXText::getStatus(LCursor & cur, FuncRequest const & cmd, case LFUN_CHANGE_ACCEPT: case LFUN_CHANGE_REJECT: - enable = cur.buffer().params().tracking_changes; + enable = true; // FIXME: Change tracking (MG) break; case LFUN_WORD_DELETE_FORWARD: