mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-26 18:31:11 +00:00
feat(automation): pure UI node model + JSON serializer with unit test
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
#include "WidgetSerializer.hpp"
|
||||
|
||||
namespace Slic3r { namespace GUI { namespace Automation {
|
||||
|
||||
static const char* backend_name(BackendKind k) {
|
||||
return k == BackendKind::Wx ? "wx" : "imgui";
|
||||
}
|
||||
|
||||
nlohmann::json node_to_json(const UiNode& node, bool include_children) {
|
||||
nlohmann::json j;
|
||||
j["backend"] = backend_name(node.backend);
|
||||
j["id"] = node.id;
|
||||
j["path"] = node.path;
|
||||
j["class"] = node.klass;
|
||||
j["label"] = node.label;
|
||||
j["rect"] = { {"x", node.rect.x}, {"y", node.rect.y},
|
||||
{"w", node.rect.w}, {"h", node.rect.h} };
|
||||
j["enabled"] = node.enabled;
|
||||
j["visible"] = node.visible;
|
||||
if (node.has_value)
|
||||
j["value"] = node.value;
|
||||
if (include_children && node.backend == BackendKind::Wx) {
|
||||
nlohmann::json arr = nlohmann::json::array();
|
||||
for (const UiNode& c : node.children)
|
||||
arr.push_back(node_to_json(c, true));
|
||||
j["children"] = std::move(arr);
|
||||
}
|
||||
return j;
|
||||
}
|
||||
|
||||
nlohmann::json app_state_to_json(const AppState& s) {
|
||||
nlohmann::json j;
|
||||
j["active_tab"] = s.active_tab;
|
||||
j["project_loaded"] = s.project_loaded;
|
||||
j["slicing"] = s.slicing;
|
||||
j["slice_progress"] = s.slice_progress;
|
||||
j["foreground"] = s.foreground;
|
||||
if (s.modal_dialog)
|
||||
j["modal_dialog"] = *s.modal_dialog;
|
||||
return j;
|
||||
}
|
||||
|
||||
}}} // namespace
|
||||
Reference in New Issue
Block a user