|
|
|
/***************************************************************************
|
|
|
|
* Copyright (C) 2003 by Jens Dagerbo *
|
|
|
|
* jens.dagerbo@swipnet.se *
|
|
|
|
* *
|
|
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
|
|
* it under the terms of the GNU General Public License as published by *
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
|
|
* (at your option) any later version. *
|
|
|
|
* *
|
|
|
|
***************************************************************************/
|
|
|
|
|
|
|
|
#include <tqheader.h>
|
|
|
|
#include <tqtextstream.h>
|
|
|
|
#include <tqdir.h>
|
|
|
|
#include <tqstringlist.h>
|
|
|
|
#include <tqregexp.h>
|
|
|
|
#include <tqpalette.h>
|
|
|
|
|
|
|
|
#include "replaceitem.h"
|
|
|
|
#include "replaceview.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ReplaceItem * ReplaceView::firstChild() const
|
|
|
|
{
|
|
|
|
return static_cast<ReplaceItem*>( TQListView::firstChild() );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
ReplaceView::ReplaceView( TQWidget * parent ) : TDEListView( parent ), _latestfile( 0 )
|
|
|
|
{
|
|
|
|
setSorting( -1 );
|
|
|
|
addColumn( "" );
|
|
|
|
header()->hide();
|
|
|
|
setFullWidth(true);
|
|
|
|
|
|
|
|
TQPalette pal = palette();
|
|
|
|
TQColorGroup cg = pal.active();
|
|
|
|
cg.setColor( TQColorGroup::Highlight, TQt::lightGray );
|
|
|
|
pal.setActive( cg );
|
|
|
|
setPalette( pal );
|
|
|
|
|
|
|
|
connect( this, TQ_SIGNAL( clicked( TQListViewItem * ) ), TQ_SLOT( slotClicked( TQListViewItem * ) ) );
|
|
|
|
connect( this, TQ_SIGNAL( mouseButtonPressed( int, TQListViewItem *, const TQPoint &, int) ),
|
|
|
|
TQ_SLOT( slotMousePressed(int, TQListViewItem *, const TQPoint &, int) ) );
|
|
|
|
}
|
|
|
|
|
|
|
|
void ReplaceView::makeReplacementsForFile( TQTextStream & istream, TQTextStream & ostream, ReplaceItem const * fileitem )
|
|
|
|
{
|
|
|
|
int line = 0;
|
|
|
|
|
|
|
|
ReplaceItem const * lineitem = fileitem->firstChild();
|
|
|
|
while ( lineitem )
|
|
|
|
{
|
|
|
|
if ( lineitem->isOn() )
|
|
|
|
{
|
|
|
|
while ( line < lineitem->line() )
|
|
|
|
{
|
|
|
|
ostream << istream.readLine() << "\n";
|
|
|
|
line++;
|
|
|
|
}
|
|
|
|
// this is the hit
|
|
|
|
ostream << istream.readLine().replace( _regexp, _replacement ) << "\n";
|
|
|
|
line++;
|
|
|
|
}
|
|
|
|
|
|
|
|
lineitem = lineitem->nextSibling();
|
|
|
|
}
|
|
|
|
|
|
|
|
while ( !istream.atEnd() )
|
|
|
|
{
|
|
|
|
ostream << istream.readLine() << "\n";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void ReplaceView::showReplacementsForFile( TQTextStream & stream, TQString const & file )
|
|
|
|
{
|
|
|
|
ReplaceItem * latestitem = 0;
|
|
|
|
|
|
|
|
int line = 0;
|
|
|
|
bool firstline = true;
|
|
|
|
|
|
|
|
while ( !stream.atEnd() )
|
|
|
|
{
|
|
|
|
TQString s = stream.readLine();
|
|
|
|
|
|
|
|
if ( s.contains( _regexp ) > 0 )
|
|
|
|
{
|
|
|
|
s.replace( _regexp, _replacement );
|
|
|
|
|
|
|
|
if ( firstline )
|
|
|
|
{
|
|
|
|
_latestfile = new ReplaceItem( this, _latestfile, file );
|
|
|
|
firstline = false;
|
|
|
|
}
|
|
|
|
latestitem = new ReplaceItem( _latestfile, latestitem, file, s.stripWhiteSpace(), line );
|
|
|
|
_latestfile->insertItem( latestitem );
|
|
|
|
}
|
|
|
|
line++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void ReplaceView::setReplacementData( TQRegExp const & re, TQString const & replacement )
|
|
|
|
{
|
|
|
|
_regexp = re;
|
|
|
|
_replacement = replacement;
|
|
|
|
}
|
|
|
|
|
|
|
|
void ReplaceView::slotMousePressed(int btn, TQListViewItem* i, const TQPoint& pos, int col)
|
|
|
|
{
|
|
|
|
kdDebug(0) << "ReplaceView::slotMousePressed()" << endl;
|
|
|
|
|
|
|
|
if ( ReplaceItem * item = dynamic_cast<ReplaceItem*>( i ) )
|
|
|
|
{
|
|
|
|
if ( btn == TQt::RightButton )
|
|
|
|
{
|
|
|
|
// popup menu?
|
|
|
|
}
|
|
|
|
else if ( btn == TQt::LeftButton )
|
|
|
|
{
|
|
|
|
// map pos to item/column and call ReplacetItem::activate(pos)
|
|
|
|
item->activate( col, viewport()->mapFromGlobal( pos ) - TQPoint( 0, itemRect(item).top() ) );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void ReplaceView::slotClicked( TQListViewItem * item )
|
|
|
|
{
|
|
|
|
kdDebug(0) << "ReplaceView::slotClicked()" << endl;
|
|
|
|
|
|
|
|
if ( ReplaceItem * ri = dynamic_cast<ReplaceItem*>( item ) )
|
|
|
|
{
|
|
|
|
if ( ri->lineClicked() )
|
|
|
|
{
|
|
|
|
kdDebug(0) << "emitting editDocument" << endl;
|
|
|
|
emit editDocument( ri->file(), ri->line() );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#include "replaceview.moc"
|