KDevelop API Documentation

parts/replace/replaceview.cpp

Go to the documentation of this file.
00001 /*************************************************************************** 00002 * Copyright (C) 2003 by Jens Dagerbo * 00003 * jens.dagerbo@swipnet.se * 00004 * * 00005 * This program is free software; you can redistribute it and/or modify * 00006 * it under the terms of the GNU General Public License as published by * 00007 * the Free Software Foundation; either version 2 of the License, or * 00008 * (at your option) any later version. * 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 // this is the hit 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 // popup menu? 00118 } 00119 else if ( btn == Qt::LeftButton ) 00120 { 00121 // map pos to item/column and call ReplacetItem::activate(pos) 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"
KDE Logo
This file is part of the documentation for KDevelop Version 3.0.4.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Oct 6 17:39:13 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003