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.
173 lines
5.0 KiB
173 lines
5.0 KiB
/* This file is part of the KDE project
|
|
Copyright (C) 2001 Christoph Cullmann <cullmann@kde.org>
|
|
Copyright (C) 2001 Joseph Wenninger <jowenn@kde.org>
|
|
Copyright (C) 2001 Anders Lund <anders.lund@lund.tdcadsl.dk>
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Library General Public
|
|
License version 2 as published by the Free Software Foundation.
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Library General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Library General Public License
|
|
along with this library; see the file COPYING.LIB. If not, write to
|
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#ifndef __KATE_FILESELECTOR_H__
|
|
#define __KATE_FILESELECTOR_H__
|
|
|
|
#include "katemain.h"
|
|
#include "katedocmanager.h"
|
|
#include <kate/document.h>
|
|
|
|
#include <qvbox.h>
|
|
#include <kfile.h>
|
|
#include <kurl.h>
|
|
#include <ktoolbar.h>
|
|
#include <qframe.h>
|
|
|
|
class KateMainWindow;
|
|
class KateViewManager;
|
|
class KActionCollection;
|
|
class KActionSelector;
|
|
class KFileView;
|
|
|
|
/*
|
|
The kate file selector presents a directory view, in which the default action is
|
|
to open the activated file.
|
|
Additinally, a toolbar for managing the kdiroperator widget + sync that to
|
|
the directory of the current file is available, as well as a filter widget
|
|
allowing to filter the displayed files using a name filter.
|
|
*/
|
|
|
|
/* I think this fix for not moving toolbars is better */
|
|
class KateFileSelectorToolBar: public KToolBar
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
KateFileSelectorToolBar(QWidget *parent);
|
|
virtual ~KateFileSelectorToolBar();
|
|
|
|
virtual void setMovingEnabled( bool b );
|
|
};
|
|
|
|
class KateFileSelectorToolBarParent: public QFrame
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
KateFileSelectorToolBarParent(QWidget *parent);
|
|
~KateFileSelectorToolBarParent();
|
|
void setToolBar(KateFileSelectorToolBar *tb);
|
|
private:
|
|
KateFileSelectorToolBar *m_tb;
|
|
protected:
|
|
virtual void resizeEvent ( QResizeEvent * );
|
|
};
|
|
|
|
class KateFileSelector : public QVBox
|
|
{
|
|
Q_OBJECT
|
|
|
|
friend class KFSConfigPage;
|
|
|
|
public:
|
|
/* When to sync to current document directory */
|
|
enum AutoSyncEvent { DocumentChanged=1, GotVisible=2 };
|
|
|
|
KateFileSelector( KateMainWindow *mainWindow=0, KateViewManager *viewManager=0,
|
|
QWidget * parent = 0, const char * name = 0 );
|
|
~KateFileSelector();
|
|
|
|
void readConfig( KConfig *, const QString & );
|
|
void writeConfig( KConfig *, const QString & );
|
|
void setupToolbar( KConfig * );
|
|
void setView( KFile::FileView );
|
|
KDirOperator *dirOperator(){ return dir; }
|
|
KActionCollection *actionCollection() { return mActionCollection; };
|
|
|
|
public slots:
|
|
void slotFilterChange(const QString&);
|
|
void setDir(KURL);
|
|
void setDir( const QString& url ) { setDir( KURL( url ) ); };
|
|
void kateViewChanged();
|
|
void selectorViewChanged( KFileView * );
|
|
|
|
private slots:
|
|
void cmbPathActivated( const KURL& u );
|
|
void cmbPathReturnPressed( const QString& u );
|
|
void dirUrlEntered( const KURL& u );
|
|
void dirFinishedLoading();
|
|
void setActiveDocumentDir();
|
|
void btnFilterClick();
|
|
|
|
protected:
|
|
void focusInEvent( QFocusEvent * );
|
|
void showEvent( QShowEvent * );
|
|
bool eventFilter( QObject *, QEvent * );
|
|
void initialDirChangeHack();
|
|
|
|
private:
|
|
class KateFileSelectorToolBar *toolbar;
|
|
KActionCollection *mActionCollection;
|
|
class KBookmarkHandler *bookmarkHandler;
|
|
KURLComboBox *cmbPath;
|
|
KDirOperator * dir;
|
|
class KAction *acSyncDir;
|
|
KHistoryCombo * filter;
|
|
class QToolButton *btnFilter;
|
|
|
|
KateMainWindow *mainwin;
|
|
KateViewManager *viewmanager;
|
|
|
|
QString lastFilter;
|
|
int autoSyncEvents; // enabled autosync events
|
|
QString waitingUrl; // maybe display when we gets visible
|
|
QString waitingDir;
|
|
};
|
|
|
|
/* TODO anders
|
|
KFSFilterHelper
|
|
A popup widget presenting a listbox with checkable items
|
|
representing the mime types available in the current directory, and
|
|
providing a name filter based on those.
|
|
*/
|
|
|
|
/*
|
|
Config page for file selector.
|
|
Allows for configuring the toolbar, the history length
|
|
of the path and file filter combos, and how to handle
|
|
user closed session.
|
|
*/
|
|
class KFSConfigPage : public Kate::ConfigPage {
|
|
Q_OBJECT
|
|
public:
|
|
KFSConfigPage( QWidget* parent=0, const char *name=0, KateFileSelector *kfs=0);
|
|
virtual ~KFSConfigPage() {};
|
|
|
|
virtual void apply();
|
|
virtual void reload();
|
|
|
|
private slots:
|
|
void slotMyChanged();
|
|
|
|
private:
|
|
void init();
|
|
|
|
KateFileSelector *fileSelector;
|
|
KActionSelector *acSel;
|
|
class QSpinBox *sbPathHistLength, *sbFilterHistLength;
|
|
class QCheckBox *cbSyncActive, *cbSyncShow;
|
|
class QCheckBox *cbSesLocation, *cbSesFilter;
|
|
|
|
bool m_changed;
|
|
};
|
|
|
|
|
|
#endif //__KATE_FILESELECTOR_H__
|
|
// kate: space-indent on; indent-width 2; replace-tabs on;
|