You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdevelop/parts/fileview/partwidget.cpp

145 lines
5.1 KiB

/***************************************************************************
* Copyright (C) 2003 by KDevelop authors *
* tdevelop-devel@kde.org *
* *
* 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 "partwidget.h"
#include <tqwhatsthis.h>
#include <tqvbox.h>
#include <tqlayout.h>
#include <tqtoolbutton.h>
#include <tqdom.h>
#include <kxmlguiclient.h>
#include <kcombobox.h>
#include <tdeaction.h>
#include <kdebug.h>
#include <kiconloader.h>
#include <tdelocale.h>
#include "kdevversioncontrol.h"
#include "kdevcore.h"
#include "kdevproject.h"
#include "kdevmainwindow.h"
#include "fileviewpart.h"
#include "filetreewidget.h"
///////////////////////////////////////////////////////////////////////////////
// class PartWidget
///////////////////////////////////////////////////////////////////////////////
PartWidget::PartWidget( FileViewPart *part, TQWidget *parent )
: TQVBox( parent, "fileviewpartwidget" ), m_filetree( 0 ),
m_filter( 0 ), m_btnFilter( 0 ), m_part( part )
{
Q_ASSERT( part && parent );
KDevVCSFileInfoProvider *infoProvider = 0;
if (part && part->versionControl() && part->versionControl()->fileInfoProvider())
infoProvider = part->versionControl()->fileInfoProvider();
m_filetree = new FileTreeWidget( m_part, this, infoProvider );
setCaption(i18n("File Tree"));
m_filetree->setCaption(i18n("File Tree"));
m_filetree->setIcon(SmallIcon("folder"));
TQWhatsThis::add(m_filetree, i18n("<b>File tree</b><p>"
"The file viewer shows all files of the project "
"in a tree layout."));
TQHBox* filterBox = new TQHBox( this );
m_btnFilter = new TQToolButton( filterBox );
m_btnFilter->setIconSet( SmallIconSet("filter" ) );
m_btnFilter->setToggleButton( true );
m_filter = new KHistoryCombo( true, filterBox, "filter");
m_filter->setSizePolicy( TQSizePolicy( TQSizePolicy::Expanding, TQSizePolicy::Fixed ));
filterBox->setStretchFactor(m_filter, 2);
connect( m_btnFilter, TQ_SIGNAL( clicked() ), this, TQ_SLOT( slotBtnFilterClick() ) );
connect( m_filter, TQ_SIGNAL( activated(const TQString&) ), this, TQ_SLOT( slotFilterChange(const TQString&) ) );
connect( m_filter, TQ_SIGNAL( returnPressed(const TQString&) ),
m_filter, TQ_SLOT( addToHistory(const TQString&) ) );
TQWhatsThis::add
( m_filter,
i18n("<p>Here you can enter a name filter to limit which files are <b>not displayed</b>."
"<p>To clear the filter, toggle off the filter button to the left."
"<p>To reapply the last filter used, toggle on the filter button." ) );
TQWhatsThis::add
( m_btnFilter,
i18n("<p>This button clears the name filter when toggled off, or "
"reapplies the last filter used when toggled on.") );
m_filter->insertItem( m_filetree->hidePatterns() );
}
///////////////////////////////////////////////////////////////////////////////
PartWidget::~PartWidget()
{
}
///////////////////////////////////////////////////////////////////////////////
void PartWidget::showProjectFiles()
{
m_filetree->openDirectory( m_part->project()->projectDirectory() );
m_filetree->applyHidePatterns( m_filetree->hidePatterns() );
}
///////////////////////////////////////////////////////////////////////////////
void PartWidget::slotFilterChange( const TQString & nf )
{
TQString f = nf.stripWhiteSpace();
bool empty = f.isEmpty() || f == "*";
if ( empty )
{
m_filter->lineEdit()->setText( TQString() );
TQToolTip::add( m_btnFilter, i18n("Apply last filter (\"%1\")").arg( m_lastFilter ) );
}
else
{
m_lastFilter = f;
TQToolTip::add( m_btnFilter, i18n("Clear filter") );
}
m_btnFilter->setOn( !empty );
// this will be never true after the m_filter has been used;)
m_btnFilter->setEnabled( !( empty && m_lastFilter.isEmpty() ) );
m_filetree->applyHidePatterns( f );
}
///////////////////////////////////////////////////////////////////////////////
/*
When the button in the filter box toggles:
If off:
If the name filer is anything but "" or "*", reset it.
If on:
Set last filter.
*/
void PartWidget::slotBtnFilterClick()
{
if ( !m_btnFilter->isOn() )
{
slotFilterChange( TQString() );
}
else
{
m_filter->lineEdit()->setText( m_lastFilter );
slotFilterChange( m_lastFilter );
}
}
void PartWidget::focusInEvent( TQFocusEvent * )
{
m_filetree->setFocus();
}
#include "partwidget.moc"