forked from qt-creator/qt-creator
CMakePM: Add "variable" link to CMake offline/online documentation
This way an user can find quickly a CMake variable if needed. Change-Id: Ie885a34321cf2ce31ee662659e669de88b28801c Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -494,8 +494,7 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc)
|
||||
|
||||
auto handleOptionsLink = [this](const QString &link) {
|
||||
const CMakeTool *tool = CMakeKitAspect::cmakeTool(m_buildConfiguration->target()->kit());
|
||||
if (tool)
|
||||
tool->openCMakeHelpUrl("%1/manual/cmake.1.html#options");
|
||||
CMakeTool::openCMakeHelpUrl(tool, "%1/manual/cmake.1.html#options");
|
||||
};
|
||||
connect(bc->aspect<InitialCMakeArgumentsAspect>(),
|
||||
&Utils::BaseAspect::labelLinkActivated,
|
||||
@@ -518,10 +517,14 @@ void CMakeBuildSettingsWidget::batchEditConfiguration()
|
||||
auto editor = new QPlainTextEdit(dialog);
|
||||
|
||||
auto label = new QLabel(dialog);
|
||||
label->setText(tr("Enter one CMake variable per line.\n"
|
||||
"To set or change a variable, use -D<variable>:<type>=<value>.\n"
|
||||
"<type> can have one of the following values: FILEPATH, PATH, BOOL, INTERNAL, or STRING.\n"
|
||||
"To unset a variable, use -U<variable>.\n"));
|
||||
label->setText(tr("Enter one CMake <a href=\"variable\">variable</a> per line.<br/>"
|
||||
"To set or change a variable, use -D<variable>:<type>=<value>.<br/>"
|
||||
"<type> can have one of the following values: FILEPATH, PATH, BOOL, INTERNAL, or STRING.<br/>"
|
||||
"To unset a variable, use -U<variable>.<br/>"));
|
||||
connect(label, &QLabel::linkActivated, this, [this](const QString &link) {
|
||||
const CMakeTool *tool = CMakeKitAspect::cmakeTool(m_buildConfiguration->target()->kit());
|
||||
CMakeTool::openCMakeHelpUrl(tool, "%1/manual/cmake-variables.7.html");
|
||||
});
|
||||
editor->setMinimumSize(800, 200);
|
||||
|
||||
auto chooser = new Utils::VariableChooser(dialog);
|
||||
|
@@ -925,15 +925,20 @@ private:
|
||||
|
||||
QTC_ASSERT(!m_editor, return);
|
||||
|
||||
const CMakeTool *tool = CMakeKitAspect::cmakeTool(kit());
|
||||
|
||||
m_dialog = new QDialog(m_summaryLabel->window());
|
||||
m_dialog->setWindowTitle(tr("Edit CMake Configuration"));
|
||||
auto layout = new QVBoxLayout(m_dialog);
|
||||
m_editor = new QPlainTextEdit;
|
||||
auto editorLabel = new QLabel(m_dialog);
|
||||
editorLabel->setText(tr("Enter one CMake variable per line.\n"
|
||||
"To set a variable, use -D<variable>:<type>=<value>.\n"
|
||||
"<type> can have one of the following values: FILEPATH, PATH, "
|
||||
editorLabel->setText(tr("Enter one CMake <a href=\"variable\">variable</a> per line.<br/>"
|
||||
"To set a variable, use -D<variable>:<type>=<value>.<br/>"
|
||||
"<type> can have one of the following values: FILEPATH, PATH, "
|
||||
"BOOL, INTERNAL, or STRING."));
|
||||
connect(editorLabel, &QLabel::linkActivated, this, [=](const QString &link) {
|
||||
CMakeTool::openCMakeHelpUrl(tool, "%1/manual/cmake-variables.7.html");
|
||||
});
|
||||
m_editor->setMinimumSize(800, 200);
|
||||
|
||||
auto chooser = new VariableChooser(m_dialog);
|
||||
@@ -943,10 +948,8 @@ private:
|
||||
m_additionalEditor = new QLineEdit;
|
||||
auto additionalLabel = new QLabel(m_dialog);
|
||||
additionalLabel->setText(tr("Additional CMake <a href=\"options\">options</a>:"));
|
||||
connect(additionalLabel, &QLabel::linkActivated, this, [this](const QString &link) {
|
||||
const CMakeTool *tool = CMakeKitAspect::cmakeTool(kit());
|
||||
if (tool)
|
||||
tool->openCMakeHelpUrl("%1/manual/cmake.1.html#options");
|
||||
connect(additionalLabel, &QLabel::linkActivated, this, [=](const QString &link) {
|
||||
CMakeTool::openCMakeHelpUrl(tool, "%1/manual/cmake.1.html#options");
|
||||
});
|
||||
|
||||
auto additionalChooser = new VariableChooser(m_dialog);
|
||||
|
@@ -382,26 +382,32 @@ FilePath CMakeTool::searchQchFile(const FilePath &executable)
|
||||
return {};
|
||||
}
|
||||
|
||||
QString CMakeTool::documentationUrl(bool online) const
|
||||
QString CMakeTool::documentationUrl(const Version &version, bool online)
|
||||
{
|
||||
if (online)
|
||||
return QString("https://cmake.org/cmake/help/v%1.%2")
|
||||
.arg(version().major)
|
||||
.arg(version().minor);
|
||||
if (online) {
|
||||
QString helpVersion = "latest";
|
||||
if (!(version.major == 0 && version.minor == 0))
|
||||
helpVersion = QString("v%1.%2").arg(version.major).arg(version.minor);
|
||||
|
||||
return QString("qthelp://org.cmake.%1.%2.%3/doc")
|
||||
.arg(version().major)
|
||||
.arg(version().minor)
|
||||
.arg(version().patch);
|
||||
return QString("https://cmake.org/cmake/help/%1").arg(helpVersion);
|
||||
}
|
||||
|
||||
void CMakeTool::openCMakeHelpUrl(const QString &linkUrl) const
|
||||
{
|
||||
if (!isValid())
|
||||
return;
|
||||
return QString("qthelp://org.cmake.%1.%2.%3/doc")
|
||||
.arg(version.major)
|
||||
.arg(version.minor)
|
||||
.arg(version.patch);
|
||||
}
|
||||
|
||||
const bool online = qchFilePath().isEmpty();
|
||||
Core::HelpManager::showHelpUrl(linkUrl.arg(documentationUrl(online)));
|
||||
void CMakeTool::openCMakeHelpUrl(const CMakeTool *tool, const QString &linkUrl)
|
||||
{
|
||||
bool online = true;
|
||||
Version version;
|
||||
if (tool && tool->isValid()) {
|
||||
online = tool->qchFilePath().isEmpty();
|
||||
version = tool->version();
|
||||
}
|
||||
|
||||
Core::HelpManager::showHelpUrl(linkUrl.arg(documentationUrl(version, online)));
|
||||
}
|
||||
|
||||
void CMakeTool::readInformation() const
|
||||
|
@@ -112,8 +112,8 @@ public:
|
||||
QString detectionSource() const { return m_detectionSource; }
|
||||
void setDetectionSource(const QString &source) { m_detectionSource = source; }
|
||||
|
||||
QString documentationUrl(bool online) const;
|
||||
void openCMakeHelpUrl(const QString &linkUrl) const;
|
||||
static QString documentationUrl(const Version &version, bool online);
|
||||
static void openCMakeHelpUrl(const CMakeTool *tool, const QString &linkUrl);
|
||||
|
||||
private:
|
||||
void readInformation() const;
|
||||
|
Reference in New Issue
Block a user