From 6d7bf0f7e721f15f10846e30ed84e5c993e2dfdb Mon Sep 17 00:00:00 2001 From: Orgad Shaneh <orgad.shaneh@audiocodes.com> Date: Tue, 24 Sep 2013 12:12:09 +0300 Subject: [PATCH] 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> --- .../coreplugin/editormanager/editormanager.cpp | 12 ++++++++++++ src/plugins/coreplugin/editormanager/editormanager.h | 2 ++ src/plugins/coreplugin/fileutils.cpp | 5 +++++ src/plugins/coreplugin/fileutils.h | 1 + .../projectexplorer/foldernavigationwidget.cpp | 7 +------ src/plugins/projectexplorer/foldernavigationwidget.h | 2 -- src/plugins/projectexplorer/projectexplorer.cpp | 4 +++- src/plugins/texteditor/findinfiles.cpp | 2 ++ src/plugins/texteditor/findinfiles.h | 2 +- 9 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index 508f2ce8e8e..4a9890f05ed 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -198,6 +198,7 @@ public: QAction *m_closeAllEditorsExceptVisibleContextAction; QAction *m_openGraphicalShellAction; QAction *m_openTerminalAction; + QAction *m_findInDirectoryAction; DocumentModel::Entry *m_contextMenuEntry; Internal::OpenEditorsWindow *m_windowPopup; @@ -240,6 +241,7 @@ EditorManagerPrivate::EditorManagerPrivate(QWidget *parent) : m_closeAllEditorsExceptVisibleContextAction(new QAction(EditorManager::tr("Close All Except Visible"), parent)), m_openGraphicalShellAction(new QAction(FileUtils::msgGraphicalShellAction(), parent)), m_openTerminalAction(new QAction(FileUtils::msgTerminalAction(), parent)), + m_findInDirectoryAction(new QAction(FileUtils::msgFindInDirectory(), parent)), m_windowPopup(0), m_coreListener(0), m_reloadSetting(IDocument::AlwaysAsk), @@ -345,6 +347,7 @@ EditorManager::EditorManager(QWidget *parent) : connect(d->m_openGraphicalShellAction, SIGNAL(triggered()), this, SLOT(showInGraphicalShell())); connect(d->m_openTerminalAction, SIGNAL(triggered()), this, SLOT(openTerminal())); + connect(d->m_findInDirectoryAction, SIGNAL(triggered()), this, SLOT(findInDirectory())); // Goto Previous In History Action 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(); d->m_openGraphicalShellAction->setEnabled(enabled); d->m_openTerminalAction->setEnabled(enabled); + d->m_findInDirectoryAction->setEnabled(enabled); contextMenu->addAction(d->m_openGraphicalShellAction); contextMenu->addAction(d->m_openTerminalAction); + contextMenu->addAction(d->m_findInDirectoryAction); } static void setFocusToEditorViewAndUnmaximizePanes(EditorView *view) @@ -958,6 +963,13 @@ void EditorManager::openTerminal() 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) { QWidget *activeWin = qApp->activeWindow(); diff --git a/src/plugins/coreplugin/editormanager/editormanager.h b/src/plugins/coreplugin/editormanager/editormanager.h index 0648051fb54..5987b9e8b50 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.h +++ b/src/plugins/coreplugin/editormanager/editormanager.h @@ -195,6 +195,7 @@ signals: void editorOpened(Core::IEditor *editor); void editorAboutToClose(Core::IEditor *editor); void editorsClosed(QList<Core::IEditor *> editors); + void findOnFileSystemRequest(const QString &path); public slots: static bool closeAllEditors(bool askAboutModifiedEditors = true); @@ -229,6 +230,7 @@ private slots: static void showInGraphicalShell(); static void openTerminal(); + static void findInDirectory(); static void rootDestroyed(QObject *root); static void setCurrentEditorFromContextChange(); diff --git a/src/plugins/coreplugin/fileutils.cpp b/src/plugins/coreplugin/fileutils.cpp index 1d127d679ab..716baa3030e 100644 --- a/src/plugins/coreplugin/fileutils.cpp +++ b/src/plugins/coreplugin/fileutils.cpp @@ -140,6 +140,11 @@ void FileUtils::openTerminal(const QString &path) QProcess::startDetached(terminalEmulator, args, pwd); } +QString FileUtils::msgFindInDirectory() +{ + return QApplication::translate("Core::Internal", "Find in This Directory..."); +} + QString FileUtils::msgGraphicalShellAction() { if (HostOsInfo::isWindowsHost()) diff --git a/src/plugins/coreplugin/fileutils.h b/src/plugins/coreplugin/fileutils.h index aa025f2a543..92ffa12a89f 100644 --- a/src/plugins/coreplugin/fileutils.h +++ b/src/plugins/coreplugin/fileutils.h @@ -43,6 +43,7 @@ struct CORE_EXPORT FileUtils // Helpers for common directory browser options. static void showInGraphicalShell(QWidget *parent, const QString &path); static void openTerminal(const QString &path); + static QString msgFindInDirectory(); // Platform-dependent action descriptions static QString msgGraphicalShellAction(); static QString msgTerminalAction(); diff --git a/src/plugins/projectexplorer/foldernavigationwidget.cpp b/src/plugins/projectexplorer/foldernavigationwidget.cpp index fea4543db30..6aad3a6b208 100644 --- a/src/plugins/projectexplorer/foldernavigationwidget.cpp +++ b/src/plugins/projectexplorer/foldernavigationwidget.cpp @@ -307,7 +307,7 @@ void FolderNavigationWidget::contextMenuEvent(QContextMenuEvent *ev) QAction *actionTerminal = menu.addAction(Core::FileUtils::msgTerminalAction()); actionTerminal->setEnabled(hasCurrentItem); - QAction *actionFind = menu.addAction(msgFindOnFileSystem()); + QAction *actionFind = menu.addAction(Core::FileUtils::msgFindInDirectory()); actionFind->setEnabled(hasCurrentItem); // open with... if (!m_fileSystemModel->isDir(current)) { @@ -349,11 +349,6 @@ void FolderNavigationWidget::contextMenuEvent(QContextMenuEvent *ev) Core::DocumentManager::executeOpenWithMenuAction(action); } -QString FolderNavigationWidget::msgFindOnFileSystem() -{ - return tr("Find in this directory..."); -} - void FolderNavigationWidget::setHiddenFilesFilter(bool filter) { QDir::Filters filters = m_fileSystemModel->filter(); diff --git a/src/plugins/projectexplorer/foldernavigationwidget.h b/src/plugins/projectexplorer/foldernavigationwidget.h index e154a4a1096..6b6aaed266e 100644 --- a/src/plugins/projectexplorer/foldernavigationwidget.h +++ b/src/plugins/projectexplorer/foldernavigationwidget.h @@ -60,8 +60,6 @@ public: FolderNavigationWidget(QWidget *parent = 0); bool autoSynchronization() const; - - static QString msgFindOnFileSystem(); bool hiddenFilesFilter() const; public slots: diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 16c20331175..dad6d1720f8 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -584,8 +584,10 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er projecTreeContext); 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); + + mfileContextMenu->addAction(cmd, Constants::G_FILE_OTHER); mfolderContextMenu->addAction(cmd, Constants::G_FOLDER_CONFIG); msubProjectContextMenu->addAction(cmd, Constants::G_PROJECT_LAST); mprojectContextMenu->addAction(cmd, Constants::G_PROJECT_LAST); diff --git a/src/plugins/texteditor/findinfiles.cpp b/src/plugins/texteditor/findinfiles.cpp index 7885d5508a3..e103ced903c 100644 --- a/src/plugins/texteditor/findinfiles.cpp +++ b/src/plugins/texteditor/findinfiles.cpp @@ -53,6 +53,8 @@ FindInFiles::FindInFiles() m_directory(0) { m_instance = this; + connect(Core::EditorManager::instance(), SIGNAL(findOnFileSystemRequest(QString)), + this, SLOT(findOnFileSystem(QString))); } FindInFiles::~FindInFiles() diff --git a/src/plugins/texteditor/findinfiles.h b/src/plugins/texteditor/findinfiles.h index 736521bd612..e3c6f9ba634 100644 --- a/src/plugins/texteditor/findinfiles.h +++ b/src/plugins/texteditor/findinfiles.h @@ -64,7 +64,7 @@ protected: QString label() const; QString toolTip() const; -public: +public slots: static void findOnFileSystem(const QString &path); private slots: -- GitLab