diff options
author | Andreas Kling <awesomekling@gmail.com> | 2019-06-17 19:50:30 +0200 |
---|---|---|
committer | Andreas Kling <awesomekling@gmail.com> | 2019-06-17 19:50:30 +0200 |
commit | 3b9fcab1afb992977c5dd5be3b8ebfd29d9e609c (patch) | |
tree | 13dcea67e0cd37d750f4e8f08f5c60808faf8649 /DevTools | |
parent | 04a8fc9bd7d4a3dd31cce39266464bb05ca0bfca (diff) | |
download | serenity-3b9fcab1afb992977c5dd5be3b8ebfd29d9e609c.zip |
VisualBuilder: Switch to JSON for the form output.
This makes widgets-within-widgets straightforward instead of confusing.
The UI doesn't actually let you put widgets inside one another just yet,
but at least now the output format won't be a problem. :^)
Diffstat (limited to 'DevTools')
-rw-r--r-- | DevTools/VisualBuilder/VBForm.cpp | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/DevTools/VisualBuilder/VBForm.cpp b/DevTools/VisualBuilder/VBForm.cpp index 9472b1b631..71aea3ab16 100644 --- a/DevTools/VisualBuilder/VBForm.cpp +++ b/DevTools/VisualBuilder/VBForm.cpp @@ -1,6 +1,8 @@ #include "VBForm.h" #include "VBProperty.h" #include "VBWidget.h" +#include <AK/JsonArray.h> +#include <AK/JsonObject.h> #include <LibCore/CFile.h> #include <LibGUI/GAction.h> #include <LibGUI/GMenu.h> @@ -310,17 +312,24 @@ void VBForm::write_to_file(const String& path) GMessageBox::show(String::format("Could not open '%s' for writing", path.characters()), "Error", GMessageBox::Type::Error, window()); return; } - file.printf("[Form]\n"); - file.printf("Name=%s\n", m_name.characters()); - file.printf("\n"); - int i = 0; + + JsonObject form_object; + form_object.set("name", m_name); + JsonArray widget_array; for (auto& widget : m_widgets) { - file.printf("[Widget %d]\n", i++); + JsonObject widget_object; widget->for_each_property([&](auto& property) { - file.printf("%s=%s\n", property.name().characters(), property.value().to_string().characters()); + if (property.value().is_bool()) + widget_object.set(property.name(), property.value().to_bool()); + else if (property.value().is_int()) + widget_object.set(property.name(), property.value().to_int()); + else + widget_object.set(property.name(), property.value().to_string()); }); - file.printf("\n"); + widget_array.append(widget_object); } + form_object.set("widgets", widget_array); + file.write(form_object.to_string()); } void VBForm::dump() |