[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-i18n-doc
Subject: KBabel Patch: Find in files/Replace in files uses wrong project
From: Stephan Johach <lucardus () onlinehome ! de>
Date: 2006-12-20 17:44:49
Message-ID: 200612201901.26387.lucardus () onlinehome ! de
[Download RAW message or body]
Hi all!
The attached patch fixes
http://bugs.kde.org/show_bug.cgi?id=117308
How to reproduce:
Open catalogmanager (default project is used)
Open another project (to see the problem it should have other identiy
settings for example).
Use Ctrl-F to start the find in file Dialog.
-> KBabel is started with the first match
Look into the project settings in KBabel
-> The default project is loaded
The problem is that saving the file could lead to saving wrong identity
settings or other project data to the po-File.
Solution:
Catalogmanager now passes the open project via dcop to kbabel.
Please test. If no one objects I will commit on saturday 23.12.06 to the 3.5
branch.
Stephan
["kbabel-BR117308.patch" (text/x-diff)]
Index: kbabel/kbabeliface.h
===================================================================
--- kbabel/kbabeliface.h (revision 615209)
+++ kbabel/kbabeliface.h (working copy)
@@ -67,6 +67,14 @@
QString findStr, QString replaceStr, int caseSensitive, int wholeWords, int \
isRegExp, int inMsgid, int inMsgstr, int inComment, int ignoreAccelMarker,
int ignoreContextInfo, int ask, int askForNextFile, int askForSave)=0;
+ virtual bool findInFile(QCString fileSource, QCString url,
+ QString findStr, int caseSensitive, int wholeWords, int isRegExp,
+ int inMsgid, int inMsgstr, int inComment,
+ int ignoreAccelMarker, int ignoreContextInfo, int askForNextFile, int askForSave, \
QCString project )=0; + virtual bool replaceInFile(QCString fileSource, QCString \
url, + QString findStr, QString replaceStr, int caseSensitive, int wholeWords, int \
isRegExp, + int inMsgid, int inMsgstr, int inComment, int ignoreAccelMarker,
+ int ignoreContextInfo, int ask, int askForNextFile, int askForSave, QCString \
project )=0; virtual void spellcheck(QStringList fileList)=0;
};
Index: kbabel/main.cpp
===================================================================
--- kbabel/main.cpp (revision 615209)
+++ kbabel/main.cpp (working copy)
@@ -73,6 +73,14 @@
QString findStr, QString replaceStr, int caseSensitive, int wholeWords, int \
isRegExp, int inMsgid, int inMsgstr, int inComment,
int ignoreAccelMarker, int ignoreContextInfo, int ask, int askForNextFile, int \
askForSave); + virtual bool findInFile(QCString fileSource, QCString url,
+ QString findStr, int caseSensitive, int wholeWords, int isRegExp,
+ int inMsgid, int inMsgstr, int inComment,
+ int ignoreAccelMarker, int ignoreContextInfo, int askForNextFile, int askForSave, \
QCString project ); + virtual bool replaceInFile(QCString fileSource, QCString \
url, + QString findStr, QString replaceStr, int caseSensitive, int wholeWords, int \
isRegExp, + int inMsgid, int inMsgstr, int inComment,
+ int ignoreAccelMarker, int ignoreContextInfo, int ask, int askForNextFile, int \
askForSave, QCString project ); virtual void spellcheck(QStringList fileList);
private:
KBabelMW* findInstance( const KURL& url, const QString& project, const QString& \
package) const; @@ -393,10 +401,22 @@
int inMsgid, int inMsgstr, int inComment,
int ignoreAccelMarker, int ignoreContextInfo, int askForNextFile, int askForSave)
{
+ // no project given, open with default project
+ return findInFile ( fileSource, url, findStr, caseSensitive,
+ wholeWords, isRegExp, inMsgid, inMsgstr, inComment, \
ignoreAccelMarker, ignoreContextInfo, + askForNextFile, \
askForSave, + KBabel::ProjectManager::defaultProjectName().utf8() );
+}
+
+bool KBabelInterface::findInFile(QCString fileSource, QCString url,
+ QString findStr, int caseSensitive, int wholeWords, int isRegExp,
+ int inMsgid, int inMsgstr, int inComment,
+ int ignoreAccelMarker, int ignoreContextInfo, int askForNextFile, int askForSave, \
QCString project ) +{
kdDebug(KBABEL) << "findInFile (" <<fileSource<< "): " << url << " for " << \
findStr << endl;
const KURL u( QString::fromLocal8Bit( url ) );
- KBabelMW *kb = findInstance( u, KBabel::ProjectManager::defaultProjectName(), \
QString() ); + KBabelMW *kb = findInstance( u, QString::fromLocal8Bit(project), \
QString() );
if(!kb) return false;
@@ -424,10 +444,23 @@
int inMsgid, int inMsgstr, int inComment,
int ignoreAccelMarker, int ignoreContextInfo, int ask, int askForNextFile, int \
askForSave) {
+ return replaceInFile( fileSource, url,
+ findStr, replaceStr, caseSensitive, wholeWords, \
isRegExp, + inMsgid, inMsgstr, inComment, \
ignoreAccelMarker, ignoreContextInfo, + ask, \
askForNextFile, askForSave, + \
KBabel::ProjectManager::defaultProjectName().utf8() ); +}
+
+bool KBabelInterface::replaceInFile(QCString fileSource, QCString url,
+ QString findStr, QString replaceStr, int caseSensitive, int wholeWords, int \
isRegExp, + int inMsgid, int inMsgstr, int inComment,
+ int ignoreAccelMarker, int ignoreContextInfo, int ask, int askForNextFile, int \
askForSave, + QCString project )
+{
kdDebug(KBABEL) << "replaceInFile (" <<fileSource<< "): " << url << " for " << \
findStr << endl;
const KURL u ( QString::fromLocal8Bit( url ) );
- KBabelMW *kb = findInstance( u, KBabel::ProjectManager::defaultProjectName(), \
QString() ); + KBabelMW *kb = findInstance( u, QString::fromLocal8Bit(project), \
QString() );
if( !kb ) return false;
Index: catalogmanager/catalogmanager.cpp
===================================================================
--- catalogmanager/catalogmanager.cpp (revision 615209)
+++ catalogmanager/catalogmanager.cpp (working copy)
@@ -958,6 +958,7 @@
{
if( startKBabel() )
{
+ QCString \
funcCall("findInFile(QCString,QCString,QString,int,int,int,int,int,int,int,int,int,int)");
DCOPClient *client = kapp->dcopClient();
QByteArray data;
QDataStream arg(data, IO_WriteOnly);
@@ -974,8 +975,13 @@
arg << (_findOptions.ignoreContextInfo ? 1 : 0);
arg << (_findOptions.askForNextFile ? 1 : 0);
arg << (_findOptions.askForSave ? 1 : 0);
+ if(_configFile != "kbabelrc" ) {
+ arg << _configFile.utf8();
+ funcCall="findInFile(QCString,QCString,QString,int,int,int,int,int,int,int,int,int,int,QCString)";
+ }
+ kdDebug(KBABEL) << "DCOP: " << QString(data.data()) << endl;
if( !client->send("kbabel","KBabelIFace",
- \
"findInFile(QCString,QCString,QString,int,int,int,int,int,int,int,int,int,int)", \
data) + funcCall, data)
) {
KMessageBox::error( this, i18n("DCOP communication with KBabel \
failed."), i18n("DCOP Communication Error")); stopSearching();
@@ -1037,9 +1043,11 @@
{
if( startKBabel() )
{
+ QCString funcCall("replaceInFile(QCString,QCString,QString,QString,int,int,int,int,int,int,int,int,int,int,int)");
DCOPClient *client = kapp->dcopClient();
QByteArray data;
QDataStream arg(data, IO_WriteOnly);
+
arg << client->appId();
arg << url.utf8();
arg << options.findStr;
@@ -1055,8 +1063,12 @@
arg << (options.ask ? 1 : 0);
arg << (options.askForNextFile ? 1 : 0);
arg << (options.askForSave ? 1 : 0);
+ if(_configFile != "kbabelrc" ) {
+ arg << _configFile.utf8();
+ funcCall="replaceInFile(QCString,QCString,QString,QString,int,int,int,int,int,int,int,int,int,int,int,QCString)";
+ }
if( !client->send("kbabel","KBabelIFace",
- \
"replaceInFile(QCString,QCString,QString,QString,int,int,int,int,int,int,int,int,int,int,int)", \
data) + funcCall, data)
) {
KMessageBox::error( this, i18n("DCOP communication with KBabel \
failed."), i18n("DCOP Communication Error")); stopSearching();
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic