mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-26 00:05:58 +01:00
hyprctl: parse custom types in getoption
This commit is contained in:
parent
9d89b7109d
commit
12da0fc84f
2 changed files with 20 additions and 4 deletions
|
@ -14,6 +14,8 @@ class ICustomConfigValueData {
|
||||||
virtual ~ICustomConfigValueData() = 0;
|
virtual ~ICustomConfigValueData() = 0;
|
||||||
|
|
||||||
virtual eConfigValueDataTypes getDataType() = 0;
|
virtual eConfigValueDataTypes getDataType() = 0;
|
||||||
|
|
||||||
|
virtual std::string toString() = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CGradientValueData : public ICustomConfigValueData {
|
class CGradientValueData : public ICustomConfigValueData {
|
||||||
|
@ -51,6 +53,15 @@ class CGradientValueData : public ICustomConfigValueData {
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual std::string toString() {
|
||||||
|
std::string result;
|
||||||
|
for (auto& c : m_vColors) {
|
||||||
|
result += std::format("{:x} ", c.getAsHex());
|
||||||
|
}
|
||||||
|
|
||||||
|
result += std::format("{}deg", (int)(m_fAngle * 180.0 / M_PI));
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class CCssGapData : public ICustomConfigValueData {
|
class CCssGapData : public ICustomConfigValueData {
|
||||||
|
@ -103,4 +114,8 @@ class CCssGapData : public ICustomConfigValueData {
|
||||||
virtual eConfigValueDataTypes getDataType() {
|
virtual eConfigValueDataTypes getDataType() {
|
||||||
return CVD_TYPE_CSS_VALUE;
|
return CVD_TYPE_CSS_VALUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual std::string toString() {
|
||||||
|
return std::format("{} {} {} {}", top, right, bottom, left);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -1225,8 +1225,8 @@ std::string dispatchGetOption(eHyprCtlOutputFormat format, std::string request)
|
||||||
return std::format("vec2: [{}, {}]\nset: {}", std::any_cast<Hyprlang::VEC2>(VAL).x, std::any_cast<Hyprlang::VEC2>(VAL).y, VAR->m_bSetByUser);
|
return std::format("vec2: [{}, {}]\nset: {}", std::any_cast<Hyprlang::VEC2>(VAL).x, std::any_cast<Hyprlang::VEC2>(VAL).y, VAR->m_bSetByUser);
|
||||||
else if (TYPE == typeid(Hyprlang::STRING))
|
else if (TYPE == typeid(Hyprlang::STRING))
|
||||||
return std::format("str: {}\nset: {}", std::any_cast<Hyprlang::STRING>(VAL), VAR->m_bSetByUser);
|
return std::format("str: {}\nset: {}", std::any_cast<Hyprlang::STRING>(VAL), VAR->m_bSetByUser);
|
||||||
else if (TYPE == typeid(Hyprlang::CUSTOMTYPE*))
|
else if (TYPE == typeid(void*))
|
||||||
return std::format("custom type at: {:x}\nset: {}", (uintptr_t)std::any_cast<Hyprlang::CUSTOMTYPE*>(VAL), VAR->m_bSetByUser);
|
return std::format("custom type: {}\nset: {}", ((ICustomConfigValueData*)std::any_cast<void*>(VAL))->toString(), VAR->m_bSetByUser);
|
||||||
} else {
|
} else {
|
||||||
if (TYPE == typeid(Hyprlang::INT))
|
if (TYPE == typeid(Hyprlang::INT))
|
||||||
return std::format("{{\"option\": \"{}\", \"int\": {}, \"set\": {} }}", curitem, std::any_cast<Hyprlang::INT>(VAL), VAR->m_bSetByUser);
|
return std::format("{{\"option\": \"{}\", \"int\": {}, \"set\": {} }}", curitem, std::any_cast<Hyprlang::INT>(VAL), VAR->m_bSetByUser);
|
||||||
|
@ -1237,8 +1237,9 @@ std::string dispatchGetOption(eHyprCtlOutputFormat format, std::string request)
|
||||||
VAR->m_bSetByUser);
|
VAR->m_bSetByUser);
|
||||||
else if (TYPE == typeid(Hyprlang::STRING))
|
else if (TYPE == typeid(Hyprlang::STRING))
|
||||||
return std::format("{{\"option\": \"{}\", \"str\": \"{}\", \"set\": {} }}", curitem, escapeJSONStrings(std::any_cast<Hyprlang::STRING>(VAL)), VAR->m_bSetByUser);
|
return std::format("{{\"option\": \"{}\", \"str\": \"{}\", \"set\": {} }}", curitem, escapeJSONStrings(std::any_cast<Hyprlang::STRING>(VAL)), VAR->m_bSetByUser);
|
||||||
else if (TYPE == typeid(Hyprlang::CUSTOMTYPE*))
|
else if (TYPE == typeid(void*))
|
||||||
return std::format("{{\"option\": \"{}\", \"custom\": \"{:x}\", \"set\": {} }}", curitem, (uintptr_t)std::any_cast<Hyprlang::CUSTOMTYPE*>(VAL), VAR->m_bSetByUser);
|
return std::format("{{\"option\": \"{}\", \"custom\": \"{}\", \"set\": {} }}", curitem, ((ICustomConfigValueData*)std::any_cast<void*>(VAL))->toString(),
|
||||||
|
VAR->m_bSetByUser);
|
||||||
}
|
}
|
||||||
|
|
||||||
return "invalid type (internal error)";
|
return "invalid type (internal error)";
|
||||||
|
|
Loading…
Reference in a new issue