Resources: Register as tree manager

Change-Id: I400c1d77b23e465de7acbc517530f6c080549c5e
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Tobias Hunger
2017-03-10 10:49:06 +01:00
parent fa67aa084b
commit 3c85c00577
2 changed files with 14 additions and 2 deletions

View File

@@ -491,7 +491,6 @@ bool FolderNode::isAncesterOf(Node *n)
bool FolderNode::replaceSubtree(Node *oldNode, Node *newNode) bool FolderNode::replaceSubtree(Node *oldNode, Node *newNode)
{ {
std::unique_ptr<Node> nn(newNode); std::unique_ptr<Node> nn(newNode);
if (!oldNode) { if (!oldNode) {
addNode(nn.release()); // Happens e.g. when a project is registered addNode(nn.release()); // Happens e.g. when a project is registered
} else { } else {
@@ -506,7 +505,6 @@ bool FolderNode::replaceSubtree(Node *oldNode, Node *newNode)
} }
delete oldNode; delete oldNode;
} }
ProjectTree::emitSubtreeChanged(this); ProjectTree::emitSubtreeChanged(this);
return true; return true;
} }

View File

@@ -44,6 +44,7 @@
#include <projectexplorer/projectnodes.h> #include <projectexplorer/projectnodes.h>
#include <extensionsystem/pluginmanager.h> #include <extensionsystem/pluginmanager.h>
#include <utils/algorithm.h>
#include <utils/parameteraction.h> #include <utils/parameteraction.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
@@ -210,6 +211,19 @@ bool ResourceEditorPlugin::initialize(const QStringList &arguments, QString *err
void ResourceEditorPlugin::extensionsInitialized() void ResourceEditorPlugin::extensionsInitialized()
{ {
ProjectTree::registerTreeManager([](FolderNode *folder) {
QList<FileNode *> toReplace;
folder->forEachNode([&toReplace](FileNode *fn) {
if (fn->fileType() == FileType::Resource)
toReplace.append(fn);
});
for (FileNode *file : toReplace) {
FolderNode *const pn = file->parentFolderNode();
const Utils::FileName path = file->filePath();
pn->replaceSubtree(file, new ResourceTopLevelNode(path, QString(), pn));
}
});
} }
void ResourceEditorPlugin::onUndo() void ResourceEditorPlugin::onUndo()