EditorManager: Add "Find in this directory..." for open files

Also add in Projects view

Change-Id: I42145c742a38f5538a4ed44574963136aa18e134
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
This commit is contained in:
Orgad Shaneh
2013-09-24 12:12:09 +03:00
committed by Orgad Shaneh
parent 895caa7544
commit 6d7bf0f7e7
9 changed files with 27 additions and 10 deletions

View File

@@ -198,6 +198,7 @@ public:
QAction *m_closeAllEditorsExceptVisibleContextAction; QAction *m_closeAllEditorsExceptVisibleContextAction;
QAction *m_openGraphicalShellAction; QAction *m_openGraphicalShellAction;
QAction *m_openTerminalAction; QAction *m_openTerminalAction;
QAction *m_findInDirectoryAction;
DocumentModel::Entry *m_contextMenuEntry; DocumentModel::Entry *m_contextMenuEntry;
Internal::OpenEditorsWindow *m_windowPopup; Internal::OpenEditorsWindow *m_windowPopup;
@@ -240,6 +241,7 @@ EditorManagerPrivate::EditorManagerPrivate(QWidget *parent) :
m_closeAllEditorsExceptVisibleContextAction(new QAction(EditorManager::tr("Close All Except Visible"), parent)), m_closeAllEditorsExceptVisibleContextAction(new QAction(EditorManager::tr("Close All Except Visible"), parent)),
m_openGraphicalShellAction(new QAction(FileUtils::msgGraphicalShellAction(), parent)), m_openGraphicalShellAction(new QAction(FileUtils::msgGraphicalShellAction(), parent)),
m_openTerminalAction(new QAction(FileUtils::msgTerminalAction(), parent)), m_openTerminalAction(new QAction(FileUtils::msgTerminalAction(), parent)),
m_findInDirectoryAction(new QAction(FileUtils::msgFindInDirectory(), parent)),
m_windowPopup(0), m_windowPopup(0),
m_coreListener(0), m_coreListener(0),
m_reloadSetting(IDocument::AlwaysAsk), m_reloadSetting(IDocument::AlwaysAsk),
@@ -345,6 +347,7 @@ EditorManager::EditorManager(QWidget *parent) :
connect(d->m_openGraphicalShellAction, SIGNAL(triggered()), this, SLOT(showInGraphicalShell())); connect(d->m_openGraphicalShellAction, SIGNAL(triggered()), this, SLOT(showInGraphicalShell()));
connect(d->m_openTerminalAction, SIGNAL(triggered()), this, SLOT(openTerminal())); connect(d->m_openTerminalAction, SIGNAL(triggered()), this, SLOT(openTerminal()));
connect(d->m_findInDirectoryAction, SIGNAL(triggered()), this, SLOT(findInDirectory()));
// Goto Previous In History Action // Goto Previous In History Action
cmd = ActionManager::registerAction(d->m_gotoPreviousDocHistoryAction, Constants::GOTOPREVINHISTORY, editDesignContext); cmd = ActionManager::registerAction(d->m_gotoPreviousDocHistoryAction, Constants::GOTOPREVINHISTORY, editDesignContext);
@@ -813,8 +816,10 @@ void EditorManager::addNativeDirActions(QMenu *contextMenu, DocumentModel::Entry
bool enabled = entry && !entry->fileName().isEmpty(); bool enabled = entry && !entry->fileName().isEmpty();
d->m_openGraphicalShellAction->setEnabled(enabled); d->m_openGraphicalShellAction->setEnabled(enabled);
d->m_openTerminalAction->setEnabled(enabled); d->m_openTerminalAction->setEnabled(enabled);
d->m_findInDirectoryAction->setEnabled(enabled);
contextMenu->addAction(d->m_openGraphicalShellAction); contextMenu->addAction(d->m_openGraphicalShellAction);
contextMenu->addAction(d->m_openTerminalAction); contextMenu->addAction(d->m_openTerminalAction);
contextMenu->addAction(d->m_findInDirectoryAction);
} }
static void setFocusToEditorViewAndUnmaximizePanes(EditorView *view) static void setFocusToEditorViewAndUnmaximizePanes(EditorView *view)
@@ -958,6 +963,13 @@ void EditorManager::openTerminal()
Core::FileUtils::openTerminal(QFileInfo(d->m_contextMenuEntry->fileName()).path()); Core::FileUtils::openTerminal(QFileInfo(d->m_contextMenuEntry->fileName()).path());
} }
void EditorManager::findInDirectory()
{
if (!d->m_contextMenuEntry || d->m_contextMenuEntry->fileName().isEmpty())
return;
emit m_instance->findOnFileSystemRequest(QFileInfo(d->m_contextMenuEntry->fileName()).path());
}
void EditorManager::rootDestroyed(QObject *root) void EditorManager::rootDestroyed(QObject *root)
{ {
QWidget *activeWin = qApp->activeWindow(); QWidget *activeWin = qApp->activeWindow();

View File

@@ -195,6 +195,7 @@ signals:
void editorOpened(Core::IEditor *editor); void editorOpened(Core::IEditor *editor);
void editorAboutToClose(Core::IEditor *editor); void editorAboutToClose(Core::IEditor *editor);
void editorsClosed(QList<Core::IEditor *> editors); void editorsClosed(QList<Core::IEditor *> editors);
void findOnFileSystemRequest(const QString &path);
public slots: public slots:
static bool closeAllEditors(bool askAboutModifiedEditors = true); static bool closeAllEditors(bool askAboutModifiedEditors = true);
@@ -229,6 +230,7 @@ private slots:
static void showInGraphicalShell(); static void showInGraphicalShell();
static void openTerminal(); static void openTerminal();
static void findInDirectory();
static void rootDestroyed(QObject *root); static void rootDestroyed(QObject *root);
static void setCurrentEditorFromContextChange(); static void setCurrentEditorFromContextChange();

View File

@@ -140,6 +140,11 @@ void FileUtils::openTerminal(const QString &path)
QProcess::startDetached(terminalEmulator, args, pwd); QProcess::startDetached(terminalEmulator, args, pwd);
} }
QString FileUtils::msgFindInDirectory()
{
return QApplication::translate("Core::Internal", "Find in This Directory...");
}
QString FileUtils::msgGraphicalShellAction() QString FileUtils::msgGraphicalShellAction()
{ {
if (HostOsInfo::isWindowsHost()) if (HostOsInfo::isWindowsHost())

View File

@@ -43,6 +43,7 @@ struct CORE_EXPORT FileUtils
// Helpers for common directory browser options. // Helpers for common directory browser options.
static void showInGraphicalShell(QWidget *parent, const QString &path); static void showInGraphicalShell(QWidget *parent, const QString &path);
static void openTerminal(const QString &path); static void openTerminal(const QString &path);
static QString msgFindInDirectory();
// Platform-dependent action descriptions // Platform-dependent action descriptions
static QString msgGraphicalShellAction(); static QString msgGraphicalShellAction();
static QString msgTerminalAction(); static QString msgTerminalAction();

View File

@@ -307,7 +307,7 @@ void FolderNavigationWidget::contextMenuEvent(QContextMenuEvent *ev)
QAction *actionTerminal = menu.addAction(Core::FileUtils::msgTerminalAction()); QAction *actionTerminal = menu.addAction(Core::FileUtils::msgTerminalAction());
actionTerminal->setEnabled(hasCurrentItem); actionTerminal->setEnabled(hasCurrentItem);
QAction *actionFind = menu.addAction(msgFindOnFileSystem()); QAction *actionFind = menu.addAction(Core::FileUtils::msgFindInDirectory());
actionFind->setEnabled(hasCurrentItem); actionFind->setEnabled(hasCurrentItem);
// open with... // open with...
if (!m_fileSystemModel->isDir(current)) { if (!m_fileSystemModel->isDir(current)) {
@@ -349,11 +349,6 @@ void FolderNavigationWidget::contextMenuEvent(QContextMenuEvent *ev)
Core::DocumentManager::executeOpenWithMenuAction(action); Core::DocumentManager::executeOpenWithMenuAction(action);
} }
QString FolderNavigationWidget::msgFindOnFileSystem()
{
return tr("Find in this directory...");
}
void FolderNavigationWidget::setHiddenFilesFilter(bool filter) void FolderNavigationWidget::setHiddenFilesFilter(bool filter)
{ {
QDir::Filters filters = m_fileSystemModel->filter(); QDir::Filters filters = m_fileSystemModel->filter();

View File

@@ -60,8 +60,6 @@ public:
FolderNavigationWidget(QWidget *parent = 0); FolderNavigationWidget(QWidget *parent = 0);
bool autoSynchronization() const; bool autoSynchronization() const;
static QString msgFindOnFileSystem();
bool hiddenFilesFilter() const; bool hiddenFilesFilter() const;
public slots: public slots:

View File

@@ -584,8 +584,10 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
projecTreeContext); projecTreeContext);
mfileContextMenu->addAction(cmd, Constants::G_FILE_OPEN); mfileContextMenu->addAction(cmd, Constants::G_FILE_OPEN);
d->m_searchOnFileSystem = new QAction(FolderNavigationWidget::msgFindOnFileSystem(), this); d->m_searchOnFileSystem = new QAction(FileUtils::msgFindInDirectory(), this);
cmd = ActionManager::registerAction(d->m_searchOnFileSystem, ProjectExplorer::Constants::SEARCHONFILESYSTEM, projecTreeContext); cmd = ActionManager::registerAction(d->m_searchOnFileSystem, ProjectExplorer::Constants::SEARCHONFILESYSTEM, projecTreeContext);
mfileContextMenu->addAction(cmd, Constants::G_FILE_OTHER);
mfolderContextMenu->addAction(cmd, Constants::G_FOLDER_CONFIG); mfolderContextMenu->addAction(cmd, Constants::G_FOLDER_CONFIG);
msubProjectContextMenu->addAction(cmd, Constants::G_PROJECT_LAST); msubProjectContextMenu->addAction(cmd, Constants::G_PROJECT_LAST);
mprojectContextMenu->addAction(cmd, Constants::G_PROJECT_LAST); mprojectContextMenu->addAction(cmd, Constants::G_PROJECT_LAST);

View File

@@ -53,6 +53,8 @@ FindInFiles::FindInFiles()
m_directory(0) m_directory(0)
{ {
m_instance = this; m_instance = this;
connect(Core::EditorManager::instance(), SIGNAL(findOnFileSystemRequest(QString)),
this, SLOT(findOnFileSystem(QString)));
} }
FindInFiles::~FindInFiles() FindInFiles::~FindInFiles()

View File

@@ -64,7 +64,7 @@ protected:
QString label() const; QString label() const;
QString toolTip() const; QString toolTip() const;
public: public slots:
static void findOnFileSystem(const QString &path); static void findOnFileSystem(const QString &path);
private slots: private slots: