📄 textreplacement.cpp
字号:
/******************************************************************************** Copyright (C) 1992-2006 Trolltech ASA. All rights reserved.**** This file is part of the qt3to4 porting application of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file. Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://www.trolltech.com/products/qt/opensource.html**** If you are unsure which license is appropriate for your use, please** review the following information:** http://www.trolltech.com/products/qt/licensing.html or contact the** sales department at sales@trolltech.com.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#include "textreplacement.h"bool TextReplacements::insert(QByteArray newText, int insertPosition, int currentLenght){ //bubble sort the new replacement into the list int i; for(i=0; i<textReplacementList.size(); ++i) { if (insertPosition == textReplacementList.at(i).insertPosition) return false; // multiple replacements on the same insertPosition is not allowed. if(insertPosition < textReplacementList.at(i).insertPosition) break; //we found the right position } //++i; // cout << "inserting new text " << newText.constData() << endl; // %s at %d overwriting %d bytes at list pos %d\n", newText.constData(), insertPosition, currentLenght, i); TextReplacement rep; rep.newText=newText; rep.insertPosition=insertPosition; rep.currentLenght=currentLenght; textReplacementList.insert(i, rep); return true;}void TextReplacements::clear(){ textReplacementList.clear();}QByteArray TextReplacements::apply(QByteArray current){ QByteArray newData=current; int i; int replacementOffset=0; for(i=0; i<textReplacementList.size(); ++i) { TextReplacement rep=textReplacementList.at(i); //printf("applying new text %s insert at %d overwriting %d bytes \n", rep.newText.constData(), rep.insertPosition, rep.currentLenght); newData.remove(rep.insertPosition+replacementOffset, rep.currentLenght); newData.insert(rep.insertPosition+replacementOffset, rep.newText); //modify all remaining replacements if we change the document length replacementOffset+=(rep.newText.size() - rep.currentLenght); } return newData;}TextReplacements &TextReplacements::operator+=(const TextReplacements &other){ foreach(TextReplacement rep, other.replacements()) { insert(rep.newText, rep.insertPosition, rep.currentLenght); } return *this;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -