summaryrefslogtreecommitdiff
path: root/DevTools
diff options
context:
space:
mode:
authorAndreas Kling <awesomekling@gmail.com>2019-06-17 19:50:30 +0200
committerAndreas Kling <awesomekling@gmail.com>2019-06-17 19:50:30 +0200
commit3b9fcab1afb992977c5dd5be3b8ebfd29d9e609c (patch)
tree13dcea67e0cd37d750f4e8f08f5c60808faf8649 /DevTools
parent04a8fc9bd7d4a3dd31cce39266464bb05ca0bfca (diff)
downloadserenity-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.cpp23
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()