forked from qt-creator/qt-creator
Plugins: A bit more Keys and Store
Change-Id: Iee55eeaa881dd9f2047fdbe95ad8d827f4ba34e0 Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This commit is contained in:
@@ -78,18 +78,18 @@ public:
|
||||
|
||||
Command introspect(const Utils::FilePath &sourceDirectory) const;
|
||||
|
||||
static inline std::optional<Utils::FilePath> find()
|
||||
static std::optional<Utils::FilePath> find()
|
||||
{
|
||||
return ToolWrapper::findTool({"meson.py", "meson"});
|
||||
}
|
||||
|
||||
static inline QString toolName() { return {"Meson"}; };
|
||||
static QString toolName() { return {"Meson"}; }
|
||||
};
|
||||
|
||||
template<>
|
||||
inline QVariantMap toVariantMap<MesonWrapper>(const MesonWrapper &meson)
|
||||
inline Utils::Store toVariantMap<MesonWrapper>(const MesonWrapper &meson)
|
||||
{
|
||||
QVariantMap data;
|
||||
Utils::Store data;
|
||||
data.insert(Constants::ToolsSettings::NAME_KEY, meson.m_name);
|
||||
data.insert(Constants::ToolsSettings::EXE_KEY, meson.m_exe.toSettings());
|
||||
data.insert(Constants::ToolsSettings::AUTO_DETECTED_KEY, meson.m_autoDetected);
|
||||
@@ -98,7 +98,7 @@ inline QVariantMap toVariantMap<MesonWrapper>(const MesonWrapper &meson)
|
||||
return data;
|
||||
}
|
||||
template<>
|
||||
inline MesonWrapper *fromVariantMap<MesonWrapper *>(const QVariantMap &data)
|
||||
inline MesonWrapper *fromVariantMap<MesonWrapper *>(const Utils::Store &data)
|
||||
{
|
||||
return new MesonWrapper(data[Constants::ToolsSettings::NAME_KEY].toString(),
|
||||
Utils::FilePath::fromSettings(data[Constants::ToolsSettings::EXE_KEY]),
|
||||
|
||||
@@ -14,17 +14,17 @@ class NinjaWrapper final : public ToolWrapper
|
||||
public:
|
||||
using ToolWrapper::ToolWrapper;
|
||||
|
||||
static inline std::optional<Utils::FilePath> find()
|
||||
static std::optional<Utils::FilePath> find()
|
||||
{
|
||||
return ToolWrapper::findTool({"ninja", "ninja-build"});
|
||||
}
|
||||
static inline QString toolName() { return {"Ninja"}; };
|
||||
static QString toolName() { return {"Ninja"}; }
|
||||
};
|
||||
|
||||
template<>
|
||||
inline QVariantMap toVariantMap<NinjaWrapper>(const NinjaWrapper &meson)
|
||||
inline Utils::Store toVariantMap<NinjaWrapper>(const NinjaWrapper &meson)
|
||||
{
|
||||
QVariantMap data;
|
||||
Utils::Store data;
|
||||
data.insert(Constants::ToolsSettings::NAME_KEY, meson.m_name);
|
||||
data.insert(Constants::ToolsSettings::EXE_KEY, meson.m_exe.toSettings());
|
||||
data.insert(Constants::ToolsSettings::AUTO_DETECTED_KEY, meson.m_autoDetected);
|
||||
@@ -33,7 +33,7 @@ inline QVariantMap toVariantMap<NinjaWrapper>(const NinjaWrapper &meson)
|
||||
return data;
|
||||
}
|
||||
template<>
|
||||
inline NinjaWrapper *fromVariantMap<NinjaWrapper *>(const QVariantMap &data)
|
||||
inline NinjaWrapper *fromVariantMap<NinjaWrapper *>(const Utils::Store &data)
|
||||
{
|
||||
return new NinjaWrapper(data[Constants::ToolsSettings::NAME_KEY].toString(),
|
||||
Utils::FilePath::fromSettings(data[Constants::ToolsSettings::EXE_KEY]),
|
||||
|
||||
@@ -22,7 +22,7 @@ ToolItemSettings::ToolItemSettings(QWidget *parent)
|
||||
|
||||
m_mesonPathChooser = new PathChooser;
|
||||
m_mesonPathChooser->setExpectedKind(PathChooser::ExistingCommand);
|
||||
m_mesonPathChooser->setHistoryCompleter(QLatin1String("Meson.Command.History"));
|
||||
m_mesonPathChooser->setHistoryCompleter("Meson.Command.History");
|
||||
|
||||
using namespace Layouting;
|
||||
|
||||
|
||||
@@ -7,20 +7,23 @@
|
||||
#include "mesonprojectmanagertr.h"
|
||||
|
||||
#include <coreplugin/icore.h>
|
||||
#include <utils/fileutils.h>
|
||||
|
||||
#include <utils/filepath.h>
|
||||
#include <utils/store.h>
|
||||
|
||||
#include <QGuiApplication>
|
||||
#include <QVariantMap>
|
||||
|
||||
#include <iterator>
|
||||
#include <vector>
|
||||
|
||||
using namespace Utils;
|
||||
|
||||
namespace MesonProjectManager {
|
||||
namespace Internal {
|
||||
|
||||
static QString entryName(int index)
|
||||
static Key entryName(int index)
|
||||
{
|
||||
return QString("%1%2").arg(Constants::ToolsSettings::ENTRY_KEY).arg(index);
|
||||
return Constants::ToolsSettings::ENTRY_KEY + Key::number(index);
|
||||
}
|
||||
|
||||
ToolsSettingsAccessor::ToolsSettingsAccessor()
|
||||
@@ -34,16 +37,16 @@ void ToolsSettingsAccessor::saveMesonTools(const std::vector<MesonTools::Tool_t>
|
||||
QWidget *parent)
|
||||
{
|
||||
using namespace Constants;
|
||||
QVariantMap data;
|
||||
Store data;
|
||||
int entry_count = 0;
|
||||
for (const MesonTools::Tool_t &tool : tools) {
|
||||
auto asMeson = std::dynamic_pointer_cast<MesonWrapper>(tool);
|
||||
if (asMeson)
|
||||
data.insert(entryName(entry_count), toVariantMap<MesonWrapper>(*asMeson));
|
||||
data.insert(entryName(entry_count), QVariant::fromValue(toVariantMap<MesonWrapper>(*asMeson)));
|
||||
else {
|
||||
auto asNinja = std::dynamic_pointer_cast<NinjaWrapper>(tool);
|
||||
if (asNinja)
|
||||
data.insert(entryName(entry_count), toVariantMap<NinjaWrapper>(*asNinja));
|
||||
data.insert(entryName(entry_count), QVariant::fromValue(toVariantMap<NinjaWrapper>(*asNinja)));
|
||||
}
|
||||
entry_count++;
|
||||
}
|
||||
@@ -58,14 +61,14 @@ std::vector<MesonTools::Tool_t> ToolsSettingsAccessor::loadMesonTools(QWidget *p
|
||||
auto entry_count = data.value(ToolsSettings::ENTRY_COUNT, 0).toInt();
|
||||
std::vector<MesonTools::Tool_t> result;
|
||||
for (auto toolIndex = 0; toolIndex < entry_count; toolIndex++) {
|
||||
auto name = entryName(toolIndex);
|
||||
Key name = entryName(toolIndex);
|
||||
if (data.contains(name)) {
|
||||
const auto map = data[name].toMap();
|
||||
auto type = map.value(ToolsSettings::TOOL_TYPE_KEY, ToolsSettings::TOOL_TYPE_MESON);
|
||||
if (type == ToolsSettings::TOOL_TYPE_NINJA)
|
||||
result.emplace_back(fromVariantMap<NinjaWrapper *>(data[name].toMap()));
|
||||
result.emplace_back(fromVariantMap<NinjaWrapper *>(data[name].value<Store>()));
|
||||
else
|
||||
result.emplace_back(fromVariantMap<MesonWrapper *>(data[name].toMap()));
|
||||
result.emplace_back(fromVariantMap<MesonWrapper *>(data[name].value<Store>()));
|
||||
}
|
||||
}
|
||||
return result;
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
|
||||
#include <utils/process.h>
|
||||
|
||||
#include <QUuid>
|
||||
|
||||
namespace MesonProjectManager {
|
||||
namespace Internal {
|
||||
|
||||
|
||||
@@ -7,14 +7,9 @@
|
||||
|
||||
#include <utils/commandline.h>
|
||||
#include <utils/environment.h>
|
||||
#include <utils/fileutils.h>
|
||||
#include <utils/id.h>
|
||||
#include <utils/qtcassert.h>
|
||||
|
||||
#include <QFileInfo>
|
||||
#include <QUuid>
|
||||
#include <QVariant>
|
||||
#include <QVariantMap>
|
||||
#include <utils/store.h>
|
||||
|
||||
#include <optional>
|
||||
|
||||
@@ -32,17 +27,17 @@ public:
|
||||
: m_cmd{exe, args}
|
||||
, m_workDir{workDir}
|
||||
{}
|
||||
inline const Utils::CommandLine &cmdLine() const { return m_cmd; }
|
||||
inline const Utils::FilePath &workDir() const { return m_workDir; }
|
||||
inline Utils::FilePath executable() const { return m_cmd.executable(); }
|
||||
inline QStringList arguments() const { return m_cmd.splitArguments(); }
|
||||
inline QString toUserOutput() const { return m_cmd.toUserOutput(); };
|
||||
const Utils::CommandLine &cmdLine() const { return m_cmd; }
|
||||
const Utils::FilePath &workDir() const { return m_workDir; }
|
||||
Utils::FilePath executable() const { return m_cmd.executable(); }
|
||||
QStringList arguments() const { return m_cmd.splitArguments(); }
|
||||
QString toUserOutput() const { return m_cmd.toUserOutput(); }
|
||||
};
|
||||
|
||||
class ToolWrapper
|
||||
{
|
||||
public:
|
||||
virtual ~ToolWrapper(){};
|
||||
virtual ~ToolWrapper() {}
|
||||
ToolWrapper() = delete;
|
||||
ToolWrapper(const QString &name, const Utils::FilePath &path, bool autoDetected = false);
|
||||
ToolWrapper(const QString &name,
|
||||
@@ -54,12 +49,12 @@ public:
|
||||
ToolWrapper &operator=(const ToolWrapper &other) = default;
|
||||
ToolWrapper &operator=(ToolWrapper &&other) = default;
|
||||
|
||||
inline const Version &version() const noexcept { return m_version; };
|
||||
inline bool isValid() const noexcept { return m_isValid; };
|
||||
inline bool autoDetected() const noexcept { return m_autoDetected; };
|
||||
inline Utils::Id id() const noexcept { return m_id; };
|
||||
inline Utils::FilePath exe() const noexcept { return m_exe; };
|
||||
inline QString name() const noexcept { return m_name; };
|
||||
const Version &version() const noexcept { return m_version; }
|
||||
bool isValid() const noexcept { return m_isValid; }
|
||||
bool autoDetected() const noexcept { return m_autoDetected; }
|
||||
Utils::Id id() const noexcept { return m_id; }
|
||||
Utils::FilePath exe() const noexcept { return m_exe; }
|
||||
QString name() const noexcept { return m_name; }
|
||||
|
||||
inline void setName(const QString &newName) { m_name = newName; }
|
||||
virtual void setExe(const Utils::FilePath &newExe);
|
||||
@@ -69,9 +64,9 @@ public:
|
||||
static std::optional<Utils::FilePath> findTool(const QStringList &exeNames);
|
||||
|
||||
template<typename T>
|
||||
friend QVariantMap toVariantMap(const T &);
|
||||
friend Utils::Store toVariantMap(const T &);
|
||||
template<typename T>
|
||||
friend T fromVariantMap(const QVariantMap &);
|
||||
friend T fromVariantMap(const Utils::Store &);
|
||||
|
||||
protected:
|
||||
Version m_version;
|
||||
@@ -83,9 +78,9 @@ protected:
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
QVariantMap toVariantMap(const T &);
|
||||
Utils::Store toVariantMap(const T &);
|
||||
template<typename T>
|
||||
T fromVariantMap(const QVariantMap &);
|
||||
T fromVariantMap(const Utils::Store &);
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace MesonProjectManager
|
||||
|
||||
Reference in New Issue
Block a user