replaceview.cpp
Go to the documentation of this file.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(true);
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"
This file is part of the documentation for KDevelop Version 3.1.2.