forked from qt-creator/qt-creator
CMake: Project tree for server mode data
Change-Id: Ief884a76c1b4211501dd6515b17b6e88a8e881e5 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -25,22 +25,122 @@
|
||||
|
||||
#include "cmakeprojectnodes.h"
|
||||
|
||||
#include "cmakeprojectconstants.h"
|
||||
|
||||
#include <coreplugin/fileiconprovider.h>
|
||||
|
||||
#include <utils/algorithm.h>
|
||||
|
||||
#include <QApplication>
|
||||
|
||||
using namespace CMakeProjectManager;
|
||||
using namespace CMakeProjectManager::Internal;
|
||||
|
||||
CMakeProjectNode::CMakeProjectNode(const Utils::FileName &dirName)
|
||||
: ProjectExplorer::ProjectNode(dirName)
|
||||
CMakeInputsNode::CMakeInputsNode(const Utils::FileName &cmakeLists) :
|
||||
ProjectExplorer::ProjectNode(CMakeInputsNode::inputsPathFromCMakeListsPath(cmakeLists))
|
||||
{
|
||||
setPriority(Node::DefaultPriority - 10); // Bottom most!
|
||||
setDisplayName(QCoreApplication::translate("CMakeFilesProjectNode", "CMake Modules"));
|
||||
setIcon(QIcon(":/projectexplorer/images/session.png")); // TODO: Use a better icon!
|
||||
}
|
||||
|
||||
bool CMakeProjectNode::showInSimpleTree() const
|
||||
Utils::FileName CMakeInputsNode::inputsPathFromCMakeListsPath(const Utils::FileName &cmakeLists)
|
||||
{
|
||||
// TODO
|
||||
return true;
|
||||
Utils::FileName result = cmakeLists;
|
||||
result.appendPath("cmakeInputs"); // cmakeLists is a file, so this can not exist on disk
|
||||
return result;
|
||||
}
|
||||
|
||||
QList<ProjectExplorer::ProjectAction> CMakeProjectNode::supportedActions(Node *node) const
|
||||
bool CMakeInputsNode::showInSimpleTree() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
QList<ProjectExplorer::ProjectAction> CMakeInputsNode::supportedActions(ProjectExplorer::Node *node) const
|
||||
{
|
||||
Q_UNUSED(node);
|
||||
return QList<ProjectExplorer::ProjectAction>();
|
||||
}
|
||||
|
||||
CMakeListsNode::CMakeListsNode(const Utils::FileName &cmakeListPath) :
|
||||
ProjectExplorer::ProjectNode(cmakeListPath)
|
||||
{
|
||||
static QIcon folderIcon;
|
||||
if (folderIcon.isNull()) {
|
||||
const QIcon overlayIcon(Constants::FILEOVERLAY_CMAKE);
|
||||
QPixmap dirPixmap = qApp->style()->standardIcon(QStyle::SP_DirIcon).pixmap(QSize(16, 16));
|
||||
|
||||
folderIcon.addPixmap(Core::FileIconProvider::overlayIcon(dirPixmap, overlayIcon));
|
||||
}
|
||||
setIcon(folderIcon);
|
||||
}
|
||||
|
||||
bool CMakeListsNode::showInSimpleTree() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
QList<ProjectExplorer::ProjectAction> CMakeListsNode::supportedActions(ProjectExplorer::Node *node) const
|
||||
{
|
||||
Q_UNUSED(node);
|
||||
return QList<ProjectExplorer::ProjectAction>();
|
||||
}
|
||||
|
||||
CMakeProjectNode::CMakeProjectNode(const Utils::FileName &directory) :
|
||||
ProjectExplorer::ProjectNode(directory)
|
||||
{
|
||||
setPriority(Node::DefaultProjectPriority + 1000);
|
||||
setIcon(QIcon(":/projectexplorer/images/projectexplorer.png")); // TODO: Use proper icon!
|
||||
}
|
||||
|
||||
bool CMakeProjectNode::showInSimpleTree() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
QString CMakeProjectNode::tooltip() const
|
||||
{
|
||||
return QString();
|
||||
}
|
||||
|
||||
QList<ProjectExplorer::ProjectAction> CMakeProjectNode::supportedActions(ProjectExplorer::Node *node) const
|
||||
{
|
||||
Q_UNUSED(node);
|
||||
return QList<ProjectExplorer::ProjectAction>();
|
||||
}
|
||||
|
||||
CMakeTargetNode::CMakeTargetNode(const Utils::FileName &directory) :
|
||||
ProjectExplorer::ProjectNode(directory)
|
||||
{
|
||||
setPriority(Node::DefaultProjectPriority + 900);
|
||||
setIcon(QIcon(":/projectexplorer/images/build.png")); // TODO: Use proper icon!
|
||||
}
|
||||
|
||||
bool CMakeTargetNode::showInSimpleTree() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
QString CMakeTargetNode::tooltip() const
|
||||
{
|
||||
return m_tooltip;
|
||||
}
|
||||
|
||||
QList<ProjectExplorer::ProjectAction> CMakeTargetNode::supportedActions(ProjectExplorer::Node *node) const
|
||||
{
|
||||
Q_UNUSED(node);
|
||||
return QList<ProjectExplorer::ProjectAction>();
|
||||
}
|
||||
|
||||
void CMakeTargetNode::setTargetInformation(const QList<Utils::FileName> &artifacts,
|
||||
const QString &type)
|
||||
{
|
||||
m_tooltip = QCoreApplication::translate("CMakeTargetNode", "Target type: ") + type + "<br>";
|
||||
if (artifacts.count() == 0) {
|
||||
m_tooltip += QCoreApplication::translate("CMakeTargetNode", "No build artifacts");
|
||||
} else {
|
||||
const QStringList tmp = Utils::transform(artifacts, &Utils::FileName::toUserOutput);
|
||||
m_tooltip += QCoreApplication::translate("CMakeTargetNode", "Build artifacts:<br>")
|
||||
+ tmp.join("<br>");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user