00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
#include <qheader.h>
00013
#include <qtextstream.h>
00014
#include <qdir.h>
00015
#include <qstringlist.h>
00016
#include <qregexp.h>
00017
#include <qpalette.h>
00018
00019
#include "replaceitem.h"
00020
#include "replaceview.h"
00021
00022
00023
00024 ReplaceItem *
ReplaceView::firstChild()
const
00025
{
00026
return static_cast<ReplaceItem*>( QListView::firstChild() );
00027 }
00028
00029
00030 ReplaceView::ReplaceView(
QWidget * parent ) :
KListView( parent ), _latestfile( 0 )
00031 {
00032 setSorting( -1 );
00033 addColumn(
"" );
00034 header()->hide();
00035
setFullWidth();
00036
00037
QPalette pal = palette();
00038
QColorGroup cg = pal.
active();
00039 cg.setColor( QColorGroup::Highlight, Qt::lightGray );
00040 pal.setActive( cg );
00041 setPalette( pal );
00042
00043 connect(
this, SIGNAL( clicked(
QListViewItem * ) ), SLOT(
slotClicked(
QListViewItem * ) ) );
00044 connect(
this, SIGNAL( mouseButtonPressed(
int,
QListViewItem *,
const QPoint &,
int) ),
00045 SLOT(
slotMousePressed(
int,
QListViewItem *,
const QPoint &,
int) ) );
00046 }
00047
00048 void ReplaceView::makeReplacementsForFile(
QTextStream & istream,
QTextStream & ostream,
ReplaceItem const * fileitem )
00049 {
00050
int line = 0;
00051
00052
ReplaceItem const * lineitem = fileitem->
firstChild();
00053
while ( lineitem )
00054 {
00055
if ( lineitem->isOn() )
00056 {
00057
while ( line < lineitem->
line() )
00058 {
00059 ostream << istream.readLine() <<
"\n";
00060 line++;
00061 }
00062
00063 ostream << istream.readLine().replace(
_regexp,
_replacement ) <<
"\n";
00064 line++;
00065 }
00066
00067 lineitem = lineitem->
nextSibling();
00068 }
00069
00070
while ( !istream.atEnd() )
00071 {
00072 ostream << istream.readLine() <<
"\n";
00073 }
00074 }
00075
00076 void ReplaceView::showReplacementsForFile(
QTextStream & stream,
QString const & file )
00077 {
00078
ReplaceItem * latestitem = 0;
00079
00080
int line = 0;
00081
bool firstline =
true;
00082
00083
while ( !stream.atEnd() )
00084 {
00085
QString s = stream.readLine();
00086
00087
if ( s.contains(
_regexp ) > 0 )
00088 {
00089 s.replace(
_regexp,
_replacement );
00090
00091
if ( firstline )
00092 {
00093
_latestfile =
new ReplaceItem(
this,
_latestfile,
file );
00094 firstline =
false;
00095 }
00096 latestitem =
new ReplaceItem(
_latestfile, latestitem,
file, s.stripWhiteSpace(), line );
00097
_latestfile->insertItem( latestitem );
00098 }
00099 line++;
00100 }
00101 }
00102
00103 void ReplaceView::setReplacementData(
QRegExp const & re,
QString const & replacement )
00104 {
00105
_regexp = re;
00106
_replacement = replacement;
00107 }
00108
00109 void ReplaceView::slotMousePressed(
int btn,
QListViewItem* i,
const QPoint& pos,
int col)
00110 {
00111
kdDebug(0) <<
"ReplaceView::slotMousePressed()" <<
endl;
00112
00113
if (
ReplaceItem * item = dynamic_cast<ReplaceItem*>( i ) )
00114 {
00115
if ( btn == Qt::RightButton )
00116 {
00117
00118 }
00119
else if ( btn == Qt::LeftButton )
00120 {
00121
00122 item->
activate( col, viewport()->mapFromGlobal( pos ) -
QPoint( 0, itemRect(item).top() ) );
00123 }
00124 }
00125 }
00126
00127 void ReplaceView::slotClicked(
QListViewItem * item )
00128 {
00129
kdDebug(0) <<
"ReplaceView::slotClicked()" <<
endl;
00130
00131
if (
ReplaceItem * ri = dynamic_cast<ReplaceItem*>( item ) )
00132 {
00133
if ( ri->
lineClicked() )
00134 {
00135
kdDebug(0) <<
"emitting editDocument" <<
endl;
00136 emit
editDocument( ri->
file(), ri->
line() );
00137 }
00138 }
00139 }
00140
00141
#include "replaceview.moc"