diff options
Diffstat (limited to 'src/plugins/resourceeditor/resourceeditorplugin.cpp')
-rw-r--r-- | src/plugins/resourceeditor/resourceeditorplugin.cpp | 65 |
1 files changed, 31 insertions, 34 deletions
diff --git a/src/plugins/resourceeditor/resourceeditorplugin.cpp b/src/plugins/resourceeditor/resourceeditorplugin.cpp index 93ecef0e5a..2b92b1f309 100644 --- a/src/plugins/resourceeditor/resourceeditorplugin.cpp +++ b/src/plugins/resourceeditor/resourceeditorplugin.cpp @@ -38,12 +38,14 @@ #include <coreplugin/icore.h> #include <coreplugin/mimedatabase.h> #include <coreplugin/coreconstants.h> +#include <coreplugin/documentmanager.h> #include <coreplugin/id.h> #include <coreplugin/actionmanager/actioncontainer.h> #include <coreplugin/actionmanager/actionmanager.h> #include <coreplugin/editormanager/editormanager.h> #include <projectexplorer/project.h> #include <projectexplorer/projectexplorer.h> +#include <projectexplorer/projecttree.h> #include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/projectnodes.h> #include <extensionsystem/pluginmanager.h> @@ -179,10 +181,12 @@ bool ResourceEditorPlugin::initialize(const QStringList &arguments, QString *err folderContextMenu->addAction(command, ProjectExplorer::Constants::G_FOLDER_FILES); connect(m_openInEditor, SIGNAL(triggered()), this, SLOT(openEditorContextMenu())); - m_openInTextEditor = new QAction(tr("Open in Text Editor"), this); - command = Core::ActionManager::registerAction(m_openInTextEditor, Constants::C_OPEN_TEXT_EDITOR, projectTreeContext); - folderContextMenu->addAction(command, ProjectExplorer::Constants::G_FOLDER_FILES); - connect(m_openInTextEditor, SIGNAL(triggered()), this, SLOT(openTextEditorContextMenu())); + m_openWithMenu = new QMenu(tr("Open With"), folderContextMenu->menu()); + folderContextMenu->menu()->insertMenu( + folderContextMenu->insertLocation(ProjectExplorer::Constants::G_FOLDER_FILES), + m_openWithMenu); + connect(m_openWithMenu, &QMenu::triggered, + Core::DocumentManager::instance(), &Core::DocumentManager::executeOpenWithMenuAction); m_copyPath = new Utils::ParameterAction(QString(), tr("Copy path \"%1\""), Utils::ParameterAction::AlwaysEnabled, this); command = Core::ActionManager::registerAction(m_copyPath, Constants::C_COPY_PATH, projectTreeContext); @@ -202,9 +206,8 @@ bool ResourceEditorPlugin::initialize(const QStringList &arguments, QString *err m_renameResourceFile->setEnabled(false); m_removeResourceFile->setEnabled(false); - connect(ProjectExplorer::ProjectExplorerPlugin::instance(), SIGNAL(currentNodeChanged(ProjectExplorer::Node*,ProjectExplorer::Project*)), - this, SLOT(updateContextActions(ProjectExplorer::Node*,ProjectExplorer::Project*))); - + connect(ProjectTree::instance(), &ProjectTree::currentNodeChanged, + this, &ResourceEditorPlugin::updateContextActions); return true; } @@ -236,13 +239,13 @@ void ResourceEditorPlugin::addPrefixContextMenu() QString prefix = dialog.prefix(); if (prefix.isEmpty()) return; - ResourceTopLevelNode *topLevel = static_cast<ResourceTopLevelNode *>(ProjectExplorer::ProjectExplorerPlugin::currentNode()); + ResourceTopLevelNode *topLevel = static_cast<ResourceTopLevelNode *>(ProjectTree::currentNode()); topLevel->addPrefix(prefix, dialog.lang()); } void ResourceEditorPlugin::removePrefixContextMenu() { - ResourceFolderNode *rfn = static_cast<ResourceFolderNode *>(ProjectExplorer::ProjectExplorerPlugin::instance()->currentNode()); + ResourceFolderNode *rfn = static_cast<ResourceFolderNode *>(ProjectTree::currentNode()); if (QMessageBox::question(Core::ICore::mainWindow(), tr("Remove Prefix"), tr("Remove prefix %1 and all its files?").arg(rfn->displayName())) @@ -259,9 +262,9 @@ void ResourceEditorPlugin::renameFileContextMenu() void ResourceEditorPlugin::removeFileContextMenu() { - ResourceFolderNode *rfn = static_cast<ResourceFolderNode *>(ProjectExplorer::ProjectExplorerPlugin::instance()->currentNode()); + ResourceFolderNode *rfn = static_cast<ResourceFolderNode *>(ProjectTree::currentNode()); QString path = rfn->path(); - ProjectExplorer::FolderNode *parent = rfn->parentFolderNode(); + FolderNode *parent = rfn->parentFolderNode(); if (!parent->removeFiles(QStringList() << path)) QMessageBox::warning(Core::ICore::mainWindow(), tr("File Removal Failed"), @@ -270,33 +273,24 @@ void ResourceEditorPlugin::removeFileContextMenu() void ResourceEditorPlugin::openEditorContextMenu() { - ResourceTopLevelNode *topLevel = static_cast<ResourceTopLevelNode *>(ProjectExplorer::ProjectExplorerPlugin::instance()->currentNode()); - QString path = topLevel->path(); - Core::EditorManager::openEditor(path); -} - -void ResourceEditorPlugin::openTextEditorContextMenu() -{ - ResourceTopLevelNode *topLevel = static_cast<ResourceTopLevelNode *>(ProjectExplorerPlugin::currentNode()); - QString path = topLevel->path(); - Core::EditorManager::openEditor(path, Core::Constants::K_DEFAULT_TEXT_EDITOR_ID); + Core::EditorManager::openEditor(ProjectTree::currentNode()->path()); } void ResourceEditorPlugin::copyPathContextMenu() { - ResourceFileNode *node = static_cast<ResourceFileNode *>(ProjectExplorerPlugin::currentNode()); + ResourceFileNode *node = static_cast<ResourceFileNode *>(ProjectTree::currentNode()); QApplication::clipboard()->setText(QLatin1String(resourcePrefix) + node->qrcPath()); } void ResourceEditorPlugin::copyUrlContextMenu() { - ResourceFileNode *node = static_cast<ResourceFileNode *>(ProjectExplorerPlugin::currentNode()); + ResourceFileNode *node = static_cast<ResourceFileNode *>(ProjectTree::currentNode()); QApplication::clipboard()->setText(QLatin1String(urlPrefix) + node->qrcPath()); } void ResourceEditorPlugin::renamePrefixContextMenu() { - ResourceFolderNode *node = static_cast<ResourceFolderNode *>(ProjectExplorerPlugin::currentNode()); + ResourceFolderNode *node = static_cast<ResourceFolderNode *>(ProjectTree::currentNode()); PrefixLangDialog dialog(tr("Rename Prefix"), node->prefix(), node->lang(), Core::ICore::mainWindow()); if (dialog.exec() != QDialog::Accepted) @@ -308,9 +302,9 @@ void ResourceEditorPlugin::renamePrefixContextMenu() node->renamePrefix(prefix, dialog.lang()); } -void ResourceEditorPlugin::updateContextActions(ProjectExplorer::Node *node, ProjectExplorer::Project *) +void ResourceEditorPlugin::updateContextActions(Node *node, Project *) { - bool isResourceNode = qobject_cast<ResourceTopLevelNode *>(node); + bool isResourceNode = dynamic_cast<ResourceTopLevelNode *>(node); m_addPrefix->setEnabled(isResourceNode); m_addPrefix->setVisible(isResourceNode); @@ -318,9 +312,9 @@ void ResourceEditorPlugin::updateContextActions(ProjectExplorer::Node *node, Pro bool enableRemove = false; if (isResourceNode) { - ProjectExplorer::FolderNode *parent = node ? node->parentFolderNode() : 0; - enableRename = parent && parent->supportedActions(node).contains(ProjectExplorer::Rename); - enableRemove = parent && parent->supportedActions(node).contains(ProjectExplorer::RemoveFile); + FolderNode *parent = node ? node->parentFolderNode() : 0; + enableRename = parent && parent->supportedActions(node).contains(Rename); + enableRemove = parent && parent->supportedActions(node).contains(RemoveFile); } m_renameResourceFile->setEnabled(isResourceNode && enableRename); @@ -331,17 +325,20 @@ void ResourceEditorPlugin::updateContextActions(ProjectExplorer::Node *node, Pro m_openInEditor->setEnabled(isResourceNode); m_openInEditor->setVisible(isResourceNode); - m_openInTextEditor->setEnabled(isResourceNode); - m_openInTextEditor->setVisible(isResourceNode); - - bool isResourceFolder = qobject_cast<ResourceFolderNode *>(node); + bool isResourceFolder = dynamic_cast<ResourceFolderNode *>(node); m_removePrefix->setEnabled(isResourceFolder); m_removePrefix->setVisible(isResourceFolder); m_renamePrefix->setEnabled(isResourceFolder); m_renamePrefix->setVisible(isResourceFolder); - bool isResourceFile = qobject_cast<ResourceFileNode *>(node); + if (isResourceNode) + Core::DocumentManager::populateOpenWithMenu(m_openWithMenu, node->path()); + else + m_openWithMenu->clear(); + m_openWithMenu->menuAction()->setVisible(!m_openWithMenu->actions().isEmpty()); + + bool isResourceFile = dynamic_cast<ResourceFileNode *>(node); m_copyPath->setEnabled(isResourceFile); m_copyPath->setVisible(isResourceFile); m_copyUrl->setEnabled(isResourceFile); |