summaryrefslogtreecommitdiff
path: root/src/plugins/resourceeditor/resourceeditorplugin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/resourceeditor/resourceeditorplugin.cpp')
-rw-r--r--src/plugins/resourceeditor/resourceeditorplugin.cpp65
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);