← Back to team overview

ayatana-commits team mailing list archive

[Branch ~dbusmenu-team/dbusmenu/trunk] Rev 124: Merging in the added JSON functionality branch

 

Merge authors:
  Ted Gould (ted)
Related merge proposals:
  https://code.launchpad.net/~ted/dbusmenu/json-it-out/+merge/28696
  proposed by: Ted Gould (ted)
  review: Approve - Kalle Valo (kvalo)
------------------------------------------------------------
revno: 124 [merge]
committer: Ted Gould <ted@xxxxxxxx>
branch nick: trunk
timestamp: Wed 2010-06-30 11:28:30 -0500
message:
  Merging in the added JSON functionality branch
added:
  tests/dbusmenu-jsonloader.pc.in
  tests/json-loader.c
  tests/json-loader.h
  tests/test-json-01.json
  tests/test-json-client.c
  tests/test-json-server.c
modified:
  .bzrignore
  configure.ac
  tests/Makefile.am
  tests/test-gtk-label-server.c
  tools/dbusmenu-dumper.c


--
lp:dbusmenu
https://code.launchpad.net/~dbusmenu-team/dbusmenu/trunk

Your team ayatana-commits is subscribed to branch lp:dbusmenu.
To unsubscribe from this branch go to https://code.launchpad.net/~dbusmenu-team/dbusmenu/trunk/+edit-subscription
=== modified file '.bzrignore'
--- .bzrignore	2010-06-28 17:58:36 +0000
+++ .bzrignore	2010-06-28 23:33:43 +0000
@@ -182,3 +182,9 @@
 docs/libdbusmenu-gtk/reference/tmpl/menuitem.sgml.bak
 gtk-doc.make
 m4/gtk-doc.m4
+tests/dbusmenu-jsonloader.pc
+tests/libdbusmenu-jsonloader.la
+tests/libdbusmenu_jsonloader_la-json-loader.lo
+tests/test-json-server
+tests/test-json-client
+tests/test-json

=== modified file 'configure.ac'
--- configure.ac	2010-06-24 14:20:25 +0000
+++ configure.ac	2010-06-29 02:47:43 +0000
@@ -62,8 +62,10 @@
 ###########################
 
 JSON_GLIB_REQUIRED_VERSION=0.6.0
+GIO_UNIX_REQUIRED_VERSION=2.24
 
-PKG_CHECK_MODULES(DBUSMENUTESTS,  json-glib-1.0 >= $JSON_GLIB_REQUIRED_VERSION)
+PKG_CHECK_MODULES(DBUSMENUTESTS,  json-glib-1.0 >= $JSON_GLIB_REQUIRED_VERSION
+                                  gio-unix-2.0  >= $GIO_UNIX_REQUIRED_VERSION)
 
 AC_SUBST(DBUSMENUTESTS_CFLAGS)
 AC_SUBST(DBUSMENUTESTS_LIBS)
@@ -126,6 +128,7 @@
 tools/Makefile
 tools/testapp/Makefile
 tests/Makefile
+tests/dbusmenu-jsonloader.pc
 docs/Makefile
 docs/libdbusmenu-glib/Makefile
 docs/libdbusmenu-glib/reference/Makefile

=== modified file 'tests/Makefile.am'
--- tests/Makefile.am	2010-06-21 19:47:08 +0000
+++ tests/Makefile.am	2010-06-29 04:22:58 +0000
@@ -1,14 +1,17 @@
 
 DBUS_RUNNER=dbus-test-runner
 
+CLEANFILES=
+
 TESTS = \
 	test-glib-objects-test \
 	test-glib-layout \
 	test-glib-properties \
 	test-glib-proxy \
 	test-glib-simple-items \
+	test-glib-submenu \
+	test-json \
 	test-gtk-objects-test \
-	test-glib-submenu \
 	test-gtk-label \
 	test-gtk-shortcut \
 	test-gtk-reorder
@@ -31,11 +34,50 @@
 	test-gtk-shortcut-client \
 	test-gtk-shortcut-server \
 	test-glib-simple-items \
-	test-gtk-reorder-server
+	test-gtk-reorder-server \
+	test-json-client \
+	test-json-server
 
 XVFB_RUN=". $(srcdir)/run-xvfb.sh"
 
 ######################
+# JSON Loader lib
+######################
+
+lib_LTLIBRARIES = libdbusmenu-jsonloader.la
+
+libdbusmenu_jsonloaderincludedir=$(includedir)/libdbusmenu-0.1/libdbusmenu-jsonloader/
+
+libdbusmenu_jsonloaderinclude_HEADERS = \
+	json-loader.h
+
+libdbusmenu_jsonloader_la_SOURCES = \
+	json-loader.h \
+	json-loader.c
+
+libdbusmenu_jsonloader_la_LDFLAGS = \
+	-version-info $(LIBDBUSMENU_CURRENT):$(LIBDBUSMENU_REVISION):$(LIBDBUSMENU_AGE) \
+	-no-undefined \
+	-export-symbols-regex "^[^_].*"
+
+libdbusmenu_jsonloader_la_CFLAGS = \
+	$(DBUSMENUGLIB_CFLAGS) \
+	$(DBUSMENUTESTS_CFLAGS) \
+	-I $(srcdir)/.. \
+	-Wall \
+	-Werror \
+	-DG_DISABLE_DEPRECATED \
+	-DG_LOG_DOMAIN="\"LIBDBUSMENU-JSONLOADER\""
+
+libdbusmenu_jsonloader_la_LIBADD = \
+	../libdbusmenu-glib/libdbusmenu-glib.la \
+	$(DBUSMENUGLIB_LIBS) \
+	$(DBUSMENUTESTS_LIBS)
+
+pkgconfig_DATA = dbusmenu-jsonloader.pc
+pkgconfigdir = $(libdir)/pkgconfig
+
+######################
 # Test GLib server
 ######################
 
@@ -84,6 +126,47 @@
 	$(DBUSMENUGLIB_LIBS)
 
 ######################
+# Test JSON
+######################
+
+test-json: test-json-client test-json-server Makefile.am
+	@echo "#!/bin/bash" > $@
+	@echo $(XVFB_RUN) >> $@
+	@echo $(DBUS_RUNNER) --task ./test-json-client --task-name Client --parameter $(top_builddir)/tools/dbusmenu-dumper --parameter test-json-01.output.json --ignore-return --task ./test-json-server --task-name Server --parameter $(srcdir)/test-json-01.json --ignore-return >> $@
+	@echo diff $(srcdir)/test-json-01.json test-json-01.output.json \> /dev/null >> $@
+	@chmod +x $@
+
+CLEANFILES += test-json-01.output.json
+
+test_json_server_SOURCES = \
+	test-json-server.c
+
+test_json_server_CFLAGS = \
+	-I $(srcdir)/.. \
+	-I $(srcdir) \
+	$(DBUSMENUGLIB_CFLAGS) \
+	$(DBUSMENUTESTS_CFLAGS) \
+	-Wall -Werror
+
+test_json_server_LDADD = \
+	../libdbusmenu-glib/libdbusmenu-glib.la \
+	libdbusmenu-jsonloader.la \
+	$(DBUSMENUTESTS_LIBS) \
+	$(DBUSMENUGLIB_LIBS)
+
+test_json_client_SOURCES = \
+	test-json-client.c
+
+test_json_client_CFLAGS = \
+	-I $(srcdir)/.. \
+	$(DBUSMENUGLIB_CFLAGS) -Wall -Werror
+
+test_json_client_LDADD = \
+	../libdbusmenu-glib/libdbusmenu-glib.la \
+	$(DBUSMENUTESTS_LIBS) \
+	$(DBUSMENUGLIB_LIBS)
+
+######################
 # Test Glib Submenu
 ######################
 
@@ -286,6 +369,7 @@
 test_gtk_label_server_LDADD = \
 	../libdbusmenu-glib/libdbusmenu-glib.la \
 	../libdbusmenu-gtk/libdbusmenu-gtk.la \
+	libdbusmenu-jsonloader.la \
 	$(DBUSMENUGTK_LIBS) \
 	$(DBUSMENUTESTS_LIBS)
 
@@ -421,9 +505,10 @@
 	dbusmenu-gtk/mago_tests/data/several_submenus_recursive.json \
 	dbusmenu-gtk/mago_tests/data/several_submenus_utf8.json \
 	dbusmenu-gtk/mago_tests/data/static.json \
-	dbusmenu-gtk/mago_tests/data/test-gtk-label.json
+	dbusmenu-gtk/mago_tests/data/test-gtk-label.json \
+	test-json-01.json
 
-CLEANFILES = \
+CLEANFILES += \
 	dbusmenu-gtk/mago_tests/dbusmenu.pyc
 
 distclean-local:

=== added file 'tests/dbusmenu-jsonloader.pc.in'
--- tests/dbusmenu-jsonloader.pc.in	1970-01-01 00:00:00 +0000
+++ tests/dbusmenu-jsonloader.pc.in	2010-06-29 03:44:06 +0000
@@ -0,0 +1,14 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+bindir=@bindir@
+includedir=@includedir@
+
+Cflags: -I${includedir}/libdbusmenu-0.1
+Requires: dbus-glib-1,dbusmenu-glib,json-glib-1.0
+Libs: -L${libdir} -ldbusmenu-jsonloader
+
+Name: libdbusmenu-jsonloader
+Description: A small library to load JSON descriptions of menus.  Mostly for testing.
+Version: @VERSION@
+

=== added file 'tests/json-loader.c'
--- tests/json-loader.c	1970-01-01 00:00:00 +0000
+++ tests/json-loader.c	2010-06-29 03:39:59 +0000
@@ -0,0 +1,220 @@
+/*
+A loader to turn JSON into dbusmenu menuitems
+
+Copyright 2010 Canonical Ltd.
+
+Authors:
+    Ted Gould <ted@xxxxxxxxxxxxx>
+
+This program is free software: you can redistribute it and/or modify it 
+under the terms of the GNU General Public License version 3, as published 
+by the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful, but 
+WITHOUT ANY WARRANTY; without even the implied warranties of 
+MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR 
+PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along 
+with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "json-loader.h"
+#include <dbus/dbus-gtype-specialized.h>
+
+static GValue *
+node2value (JsonNode * node)
+{
+	if (node == NULL) {
+		return NULL;
+	}
+
+	GValue * value = g_new0(GValue, 1);
+
+	if (JSON_NODE_TYPE(node) == JSON_NODE_VALUE) {
+		json_node_get_value(node, value);
+		return value;
+	}
+
+	if (JSON_NODE_TYPE(node) == JSON_NODE_ARRAY) {
+		JsonArray * array = json_node_get_array(node);
+		JsonNode * first = json_array_get_element(array, 0);
+
+		if (JSON_NODE_TYPE(first) == JSON_NODE_VALUE) {
+			GValue subvalue = {0};
+			json_node_get_value(first, &subvalue);
+
+			if (G_VALUE_TYPE(&subvalue) == G_TYPE_STRING) {
+				GArray * garray = g_array_sized_new(TRUE, TRUE, sizeof(gchar *), json_array_get_length(array));
+				g_value_init(value, G_TYPE_STRV);
+				g_value_take_boxed(value, garray->data);
+
+				int i;
+				for (i = 0; i < json_array_get_length(array); i++) {
+					const gchar * str = json_node_get_string(json_array_get_element(array, i));
+					gchar * dupstr = g_strdup(str);
+					g_array_append_val(garray, dupstr);
+				}
+
+				g_array_free(garray, FALSE);
+			} else {
+				GValueArray * varray = g_value_array_new(json_array_get_length(array));
+				g_value_init(value, G_TYPE_VALUE_ARRAY);
+				g_value_take_boxed(value, varray);
+
+				g_value_array_append(varray, &subvalue);
+				g_value_unset(&subvalue);
+
+				int i;
+				for (i = 1; i < json_array_get_length(array); i++) {
+					json_node_get_value(first, &subvalue);
+					g_value_array_append(varray, &subvalue);
+					g_value_unset(&subvalue);
+				}
+			}
+
+		} else {
+			GValue * subvalue = node2value(first);
+			GType type = dbus_g_type_get_collection("GPtrArray", G_VALUE_TYPE(subvalue));
+			gpointer * wrapper = dbus_g_type_specialized_construct(type);
+
+			g_value_init(value, type);
+			g_value_take_boxed(value, wrapper);
+
+			DBusGTypeSpecializedAppendContext ctx;
+			dbus_g_type_specialized_init_append(value, &ctx);
+
+			dbus_g_type_specialized_collection_append(&ctx, subvalue);
+			int i;
+			for (i = 1; i < json_array_get_length(array); i++) {
+				GValue * subvalue = node2value(node);
+				dbus_g_type_specialized_collection_append(&ctx, subvalue);
+			}
+
+			dbus_g_type_specialized_collection_end_append(&ctx);
+		}
+	}
+
+	if (JSON_NODE_TYPE(node) == JSON_NODE_OBJECT) {
+		JsonObject * obj = json_node_get_object(node);
+
+		GType type = dbus_g_type_get_map("GHashTable", G_TYPE_STRING, G_TYPE_VALUE);
+		GHashTable * hash = (GHashTable *)dbus_g_type_specialized_construct(type);
+
+		g_value_init(value, type);
+		g_value_take_boxed(value, hash);
+
+		DBusGTypeSpecializedAppendContext ctx;
+		dbus_g_type_specialized_init_append(value, &ctx);
+		
+		GList * members = NULL;
+		for (members = json_object_get_members(obj); members != NULL; members = g_list_next(members)) {
+			const gchar * member = members->data;
+
+			JsonNode * lnode = json_object_get_member(obj, member);
+			GValue * value = node2value(lnode);
+
+			if (value != NULL) {
+				GValue name = {0};
+				g_value_init(&name, G_TYPE_STRING);
+				g_value_set_static_string(&name, member);
+
+				dbus_g_type_specialized_map_append(&ctx, &name, value);
+			
+				g_value_unset(&name);
+				g_value_unset(value);
+				g_free(value);
+			}
+		}
+	}
+
+	return value;
+}
+
+static void
+set_props (DbusmenuMenuitem * mi, JsonObject * node)
+{
+	if (node == NULL) return;
+
+	GList * members = NULL;
+	for (members = json_object_get_members(node); members != NULL; members = g_list_next(members)) {
+		const gchar * member = members->data;
+
+		if (!g_strcmp0(member, "id")) { continue; }
+		if (!g_strcmp0(member, "submenu")) { continue; }
+
+		JsonNode * lnode = json_object_get_member(node, member);
+		GValue * value = node2value(lnode);
+
+		if (value != NULL) {
+			dbusmenu_menuitem_property_set_value(mi, member, value);
+			g_value_unset(value);
+			g_free(value);
+		}
+	}
+
+	return;
+}
+
+DbusmenuMenuitem *
+dbusmenu_json_build_from_node (const JsonNode * cnode)
+{
+	JsonNode * node = (JsonNode *)cnode; /* To match the jsonglib API :( */
+
+	if (node == NULL) return NULL;
+	if (JSON_NODE_TYPE(node) != JSON_NODE_OBJECT) return NULL;
+
+	JsonObject * layout = json_node_get_object(node);
+
+	DbusmenuMenuitem * local = NULL;
+	if (json_object_has_member(layout, "id")) {
+		JsonNode * node = json_object_get_member(layout, "id");
+		g_return_val_if_fail(JSON_NODE_TYPE(node) == JSON_NODE_VALUE, NULL);
+		local = dbusmenu_menuitem_new_with_id(json_node_get_int(node));
+	} else {
+		local = dbusmenu_menuitem_new();
+	}
+
+	set_props(local, layout);
+	
+	if (json_object_has_member(layout, "submenu")) {
+		JsonNode * node = json_object_get_member(layout, "submenu");
+		g_return_val_if_fail(JSON_NODE_TYPE(node) == JSON_NODE_ARRAY, local);
+		JsonArray * array = json_node_get_array(node);
+		guint count;
+		for (count = 0; count < json_array_get_length(array); count++) {
+			DbusmenuMenuitem * child = dbusmenu_json_build_from_node(json_array_get_element(array, count));
+			if (child != NULL) {
+				dbusmenu_menuitem_child_append(local, child);
+			}
+		}
+	}
+
+	/* g_debug("Layout to menu return: 0x%X", (unsigned int)local); */
+	return local;
+}
+
+DbusmenuMenuitem *
+dbusmenu_json_build_from_file (const gchar * filename)
+{
+	JsonParser * parser = json_parser_new();
+
+	GError * error = NULL;
+	if (!json_parser_load_from_file(parser, filename, &error)) {
+		g_warning("Failed parsing file %s because: %s", filename, error->message);
+		g_error_free(error);
+		return NULL;
+	}
+
+	JsonNode * root_node = json_parser_get_root(parser);
+	if (JSON_NODE_TYPE(root_node) != JSON_NODE_OBJECT) {
+		g_warning("Root node is not an object, fail.  It's an: %s", json_node_type_name(root_node));
+		return NULL;
+	}
+
+	DbusmenuMenuitem * mi = dbusmenu_json_build_from_node(root_node);
+
+	g_object_unref(parser);
+
+	return mi;
+}

=== added file 'tests/json-loader.h'
--- tests/json-loader.h	1970-01-01 00:00:00 +0000
+++ tests/json-loader.h	2010-06-29 03:39:59 +0000
@@ -0,0 +1,31 @@
+/*
+A loader to turn JSON into dbusmenu menuitems
+
+Copyright 2010 Canonical Ltd.
+
+Authors:
+    Ted Gould <ted@xxxxxxxxxxxxx>
+
+This program is free software: you can redistribute it and/or modify it 
+under the terms of the GNU General Public License version 3, as published 
+by the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful, but 
+WITHOUT ANY WARRANTY; without even the implied warranties of 
+MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR 
+PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along 
+with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef __DBUSMENU_JSON_LOADER_H__
+#define __DBUSMENU_JSON_LOADER_H__
+
+#include <libdbusmenu-glib/menuitem.h>
+#include <json-glib/json-glib.h>
+
+DbusmenuMenuitem *  dbusmenu_json_build_from_node (const JsonNode * node);
+DbusmenuMenuitem *  dbusmenu_json_build_from_file (const gchar * filename);
+
+#endif /* __DBUSMENU_JSON_LOADER_H__ */

=== modified file 'tests/test-gtk-label-server.c'
--- tests/test-gtk-label-server.c	2010-02-04 19:04:28 +0000
+++ tests/test-gtk-label-server.c	2010-06-28 20:55:53 +0000
@@ -30,74 +30,7 @@
 #include <libdbusmenu-glib/server.h>
 
 #include <json-glib/json-glib.h>
-
-static void
-menuitem_click(DbusmenuMenuitem * mi, guint32 time, gpointer user_data)
-{
-	g_debug("Clicked on: %d @ %d", dbusmenu_menuitem_get_id(mi), time);
-	return;
-}
-
-static void
-set_props (DbusmenuMenuitem * mi, JsonObject * node)
-{
-	if (node == NULL) return;
-
-	GList * members = NULL;
-	for (members = json_object_get_members(node); members != NULL; members = g_list_next(members)) {
-		const gchar * member = members->data;
-
-		if (!g_strcmp0(member, "id")) { continue; }
-		if (!g_strcmp0(member, "submenu")) { continue; }
-
-		JsonNode * lnode = json_object_get_member(node, member);
-		if (JSON_NODE_TYPE(lnode) != JSON_NODE_VALUE) { continue; }
-
-		GValue value = {0};
-		json_node_get_value(lnode, &value);
-		dbusmenu_menuitem_property_set_value(mi, member, &value);
-		g_value_unset(&value);
-	}
-
-	return;
-}
-
-static DbusmenuMenuitem *
-layout2menuitem (JsonNode * inlayout)
-{
-	if (inlayout == NULL) return NULL;
-	if (JSON_NODE_TYPE(inlayout) != JSON_NODE_OBJECT) return NULL;
-
-	JsonObject * layout = json_node_get_object(inlayout);
-
-	DbusmenuMenuitem * local = NULL;
-	if (json_object_has_member(layout, "id")) {
-		JsonNode * node = json_object_get_member(layout, "id");
-		g_return_val_if_fail(JSON_NODE_TYPE(node) == JSON_NODE_VALUE, NULL);
-		local = dbusmenu_menuitem_new_with_id(json_node_get_int(node));
-	} else {
-		local = dbusmenu_menuitem_new();
-	}
-	g_signal_connect(G_OBJECT(local), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(menuitem_click), NULL);
-
-	set_props(local, layout);
-	
-	if (json_object_has_member(layout, "submenu")) {
-		JsonNode * node = json_object_get_member(layout, "submenu");
-		g_return_val_if_fail(JSON_NODE_TYPE(node) == JSON_NODE_ARRAY, local);
-		JsonArray * array = json_node_get_array(node);
-		guint count;
-		for (count = 0; count < json_array_get_length(array); count++) {
-			DbusmenuMenuitem * child = layout2menuitem(json_array_get_element(array, count));
-			if (child != NULL) {
-				dbusmenu_menuitem_child_append(local, child);
-			}
-		}
-	}
-
-	/* g_debug("Layout to menu return: 0x%X", (unsigned int)local); */
-	return local;
-}
+#include "json-loader.h"
 
 static JsonArray * root_array = NULL;
 static guint layouton = 0;
@@ -114,7 +47,7 @@
 	}
 	g_debug("Updating to Layout %d", layouton);
 
-	dbusmenu_server_set_root(server, layout2menuitem(json_array_get_element(root_array, layouton)));
+	dbusmenu_server_set_root(server, dbusmenu_json_build_from_node(json_array_get_element(root_array, layouton)));
 	layouton++;
 
 	return TRUE;

=== added file 'tests/test-json-01.json'
--- tests/test-json-01.json	1970-01-01 00:00:00 +0000
+++ tests/test-json-01.json	2010-06-29 03:27:09 +0000
@@ -0,0 +1,4023 @@
+{
+  "id": 0,
+  "children-display": "submenu",
+  "submenu": [
+      {
+        "id": 5,
+        "enabled": true,
+        "label": "File",
+        "children-display": "submenu",
+        "visible": true,
+        "submenu": [
+            {
+              "id": 6,
+              "shortcut": [["Control", "q"]],
+              "enabled": true,
+              "label": "Quit",
+              "visible": true
+            },
+            {
+              "id": 7,
+              "shortcut": [["Control", "Shift", "w"]],
+              "enabled": true,
+              "label": "Close all",
+              "visible": true
+            },
+            {
+              "id": 8,
+              "shortcut": [["Control", "w"]],
+              "enabled": true,
+              "label": "Close",
+              "visible": true
+            },
+            {
+              "id": 9,
+              "type": "separator"
+            },
+            {
+              "id": 10,
+              "enabled": true,
+              "label": "Send by Email...",
+              "visible": true
+            },
+            {
+              "id": 11,
+              "shortcut": [["Control", "p"]],
+              "enabled": true,
+              "label": "Print...",
+              "visible": true
+            },
+            {
+              "id": 12,
+              "enabled": true,
+              "label": "Page Setup",
+              "visible": true
+            },
+            {
+              "id": 13,
+              "type": "separator"
+            },
+            {
+              "id": 14,
+              "enabled": true,
+              "label": "Revert",
+              "visible": true
+            },
+            {
+              "id": 15,
+              "enabled": true,
+              "label": "Save as Template...",
+              "visible": true
+            },
+            {
+              "id": 16,
+              "enabled": true,
+              "label": "Save a Copy...",
+              "visible": true
+            },
+            {
+              "id": 17,
+              "shortcut": [["Control", "Shift", "s"]],
+              "enabled": true,
+              "label": "Save As...",
+              "visible": true
+            },
+            {
+              "id": 18,
+              "shortcut": [["Control", "s"]],
+              "enabled": true,
+              "label": "Save",
+              "visible": true
+            },
+            {
+              "id": 19,
+              "type": "separator"
+            },
+            {
+              "id": 20,
+              "enabled": true,
+              "label": "Open Recent",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 21,
+                    "enabled": true,
+                    "label": "Document History",
+                    "visible": true
+                  },
+                  {
+                    "id": 22,
+                    "type": "separator"
+                  },
+                  {
+                    "id": 23,
+                    "shortcut": [["Control", "2"]],
+                    "enabled": true,
+                    "label": "giggity.jpg",
+                    "visible": true
+                  },
+                  {
+                    "id": 24,
+                    "shortcut": [["Control", "1"]],
+                    "enabled": true,
+                    "label": "Icon Height.svg",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 25,
+              "enabled": true,
+              "label": "Open Location...",
+              "visible": true
+            },
+            {
+              "id": 26,
+              "shortcut": [["Control", "Alt", "o"]],
+              "enabled": true,
+              "label": "Open as Layers...",
+              "visible": true
+            },
+            {
+              "id": 27,
+              "shortcut": [["Control", "o"]],
+              "enabled": true,
+              "label": "Open...",
+              "visible": true
+            },
+            {
+              "id": 28,
+              "enabled": true,
+              "label": "Create",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 29,
+                    "enabled": true,
+                    "label": "Web Page Themes",
+                    "children-display": "submenu",
+                    "visible": true,
+                    "submenu": [
+                        {
+                          "id": 30,
+                          "enabled": true,
+                          "label": "Classic.Gimp.Org",
+                          "children-display": "submenu",
+                          "visible": true,
+                          "submenu": [
+                              {
+                                "id": 31,
+                                "enabled": true,
+                                "label": "Tube Sub-Sub-Button Label...",
+                                "visible": true
+                              },
+                              {
+                                "id": 32,
+                                "enabled": true,
+                                "label": "Tube Sub-Button Label...",
+                                "visible": true
+                              },
+                              {
+                                "id": 33,
+                                "enabled": true,
+                                "label": "Tube Button Label...",
+                                "visible": true
+                              },
+                              {
+                                "id": 34,
+                                "enabled": true,
+                                "label": "Small Header...",
+                                "visible": true
+                              },
+                              {
+                                "id": 35,
+                                "enabled": true,
+                                "label": "General Tube Labels...",
+                                "visible": true
+                              },
+                              {
+                                "id": 36,
+                                "enabled": true,
+                                "label": "Big Header...",
+                                "visible": true
+                              }
+                          ]
+                        },
+                        {
+                          "id": 37,
+                          "enabled": true,
+                          "label": "Beveled Pattern",
+                          "children-display": "submenu",
+                          "visible": true,
+                          "submenu": [
+                              {
+                                "id": 38,
+                                "enabled": true,
+                                "label": "Hrule...",
+                                "visible": true
+                              },
+                              {
+                                "id": 39,
+                                "enabled": true,
+                                "label": "Heading...",
+                                "visible": true
+                              },
+                              {
+                                "id": 40,
+                                "enabled": true,
+                                "label": "Button...",
+                                "visible": true
+                              },
+                              {
+                                "id": 41,
+                                "enabled": true,
+                                "label": "Bullet...",
+                                "visible": true
+                              },
+                              {
+                                "id": 42,
+                                "enabled": true,
+                                "label": "Arrow...",
+                                "visible": true
+                              }
+                          ]
+                        },
+                        {
+                          "id": 43,
+                          "enabled": true,
+                          "label": "Alien Glow",
+                          "children-display": "submenu",
+                          "visible": true,
+                          "submenu": [
+                              {
+                                "id": 44,
+                                "enabled": true,
+                                "label": "Hrule...",
+                                "visible": true
+                              },
+                              {
+                                "id": 45,
+                                "enabled": true,
+                                "label": "Button...",
+                                "visible": true
+                              },
+                              {
+                                "id": 46,
+                                "enabled": true,
+                                "label": "Bullet...",
+                                "visible": true
+                              },
+                              {
+                                "id": 47,
+                                "enabled": true,
+                                "label": "Arrow...",
+                                "visible": true
+                              }
+                          ]
+                        }
+                    ]
+                  },
+                  {
+                    "id": 48,
+                    "enabled": true,
+                    "label": "Patterns",
+                    "children-display": "submenu",
+                    "visible": true,
+                    "submenu": [
+                        {
+                          "id": 49,
+                          "enabled": true,
+                          "label": "Truchet...",
+                          "visible": true
+                        },
+                        {
+                          "id": 50,
+                          "enabled": true,
+                          "label": "Swirly...",
+                          "visible": true
+                        },
+                        {
+                          "id": 51,
+                          "enabled": true,
+                          "label": "Swirl-Tile...",
+                          "visible": true
+                        },
+                        {
+                          "id": 52,
+                          "enabled": true,
+                          "label": "Render Map...",
+                          "visible": true
+                        },
+                        {
+                          "id": 53,
+                          "enabled": true,
+                          "label": "Land...",
+                          "visible": true
+                        },
+                        {
+                          "id": 54,
+                          "enabled": true,
+                          "label": "Flatland...",
+                          "visible": true
+                        },
+                        {
+                          "id": 55,
+                          "enabled": true,
+                          "label": "Camouflage...",
+                          "visible": true
+                        },
+                        {
+                          "id": 56,
+                          "enabled": true,
+                          "label": "3D Truchet...",
+                          "visible": true
+                        }
+                    ]
+                  },
+                  {
+                    "id": 57,
+                    "enabled": true,
+                    "label": "Logos",
+                    "children-display": "submenu",
+                    "visible": true,
+                    "submenu": [
+                        {
+                          "id": 58,
+                          "enabled": true,
+                          "label": "Web Title Header...",
+                          "visible": true
+                        },
+                        {
+                          "id": 59,
+                          "enabled": true,
+                          "label": "Textured...",
+                          "visible": true
+                        },
+                        {
+                          "id": 60,
+                          "enabled": true,
+                          "label": "Text Circle...",
+                          "visible": true
+                        },
+                        {
+                          "id": 61,
+                          "enabled": true,
+                          "label": "Starscape...",
+                          "visible": true
+                        },
+                        {
+                          "id": 62,
+                          "enabled": true,
+                          "label": "Speed Text...",
+                          "visible": true
+                        },
+                        {
+                          "id": 63,
+                          "enabled": true,
+                          "label": "SOTA Chrome...",
+                          "visible": true
+                        },
+                        {
+                          "id": 64,
+                          "enabled": true,
+                          "label": "Particle Trace...",
+                          "visible": true
+                        },
+                        {
+                          "id": 65,
+                          "enabled": true,
+                          "label": "Newsprint Text...",
+                          "visible": true
+                        },
+                        {
+                          "id": 66,
+                          "enabled": true,
+                          "label": "Neon...",
+                          "visible": true
+                        },
+                        {
+                          "id": 67,
+                          "enabled": true,
+                          "label": "Imigre-26...",
+                          "visible": true
+                        },
+                        {
+                          "id": 68,
+                          "enabled": true,
+                          "label": "Gradient Bevel...",
+                          "visible": true
+                        },
+                        {
+                          "id": 69,
+                          "enabled": true,
+                          "label": "Glowing Hot...",
+                          "visible": true
+                        },
+                        {
+                          "id": 70,
+                          "enabled": true,
+                          "label": "Glossy...",
+                          "visible": true
+                        },
+                        {
+                          "id": 71,
+                          "enabled": true,
+                          "label": "Frosty...",
+                          "visible": true
+                        },
+                        {
+                          "id": 72,
+                          "enabled": true,
+                          "label": "Crystal...",
+                          "visible": true
+                        },
+                        {
+                          "id": 73,
+                          "enabled": true,
+                          "label": "Cool Metal...",
+                          "visible": true
+                        },
+                        {
+                          "id": 74,
+                          "enabled": true,
+                          "label": "Comic Book...",
+                          "visible": true
+                        },
+                        {
+                          "id": 75,
+                          "enabled": true,
+                          "label": "Chrome...",
+                          "visible": true
+                        },
+                        {
+                          "id": 76,
+                          "enabled": true,
+                          "label": "Chip Away...",
+                          "visible": true
+                        },
+                        {
+                          "id": 77,
+                          "enabled": true,
+                          "label": "Chalk...",
+                          "visible": true
+                        },
+                        {
+                          "id": 78,
+                          "enabled": true,
+                          "label": "Carved...",
+                          "visible": true
+                        },
+                        {
+                          "id": 79,
+                          "enabled": true,
+                          "label": "Bovination...",
+                          "visible": true
+                        },
+                        {
+                          "id": 80,
+                          "enabled": true,
+                          "label": "Blended...",
+                          "visible": true
+                        },
+                        {
+                          "id": 81,
+                          "enabled": true,
+                          "label": "Basic I...",
+                          "visible": true
+                        },
+                        {
+                          "id": 82,
+                          "enabled": true,
+                          "label": "Basic II...",
+                          "visible": true
+                        },
+                        {
+                          "id": 83,
+                          "enabled": true,
+                          "label": "Alien Neon...",
+                          "visible": true
+                        },
+                        {
+                          "id": 84,
+                          "enabled": true,
+                          "label": "Alien Glow...",
+                          "visible": true
+                        },
+                        {
+                          "id": 85,
+                          "enabled": true,
+                          "label": "3D Outline...",
+                          "visible": true
+                        }
+                    ]
+                  },
+                  {
+                    "id": 86,
+                    "enabled": true,
+                    "label": "Buttons",
+                    "children-display": "submenu",
+                    "visible": true,
+                    "submenu": [
+                        {
+                          "id": 87,
+                          "enabled": true,
+                          "label": "Simple Beveled Button...",
+                          "visible": true
+                        },
+                        {
+                          "id": 88,
+                          "enabled": true,
+                          "label": "Round Button...",
+                          "visible": true
+                        }
+                    ]
+                  },
+                  {
+                    "id": 89,
+                    "type": "separator"
+                  },
+                  {
+                    "id": 90,
+                    "enabled": true,
+                    "label": "xscanimage",
+                    "children-display": "submenu",
+                    "visible": true,
+                    "submenu": [
+                        {
+                          "id": 91,
+                          "enabled": false,
+                          "label": "Device dialog...",
+                          "visible": true
+                        }
+                    ]
+                  },
+                  {
+                    "id": 92,
+                    "enabled": true,
+                    "label": "Screenshot...",
+                    "visible": true
+                  },
+                  {
+                    "id": 93,
+                    "shortcut": [["Control", "Shift", "v"]],
+                    "enabled": true,
+                    "label": "From Clipboard",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 94,
+              "shortcut": [["Control", "n"]],
+              "enabled": true,
+              "label": "New...",
+              "visible": true
+            }
+        ]
+      },
+      {
+        "id": 95,
+        "enabled": true,
+        "label": "Edit",
+        "children-display": "submenu",
+        "visible": true,
+        "submenu": [
+            {
+              "id": 96,
+              "enabled": true,
+              "label": "Units",
+              "visible": true
+            },
+            {
+              "id": 97,
+              "enabled": true,
+              "label": "Modules",
+              "visible": true
+            },
+            {
+              "id": 98,
+              "enabled": true,
+              "label": "Keyboard Shortcuts",
+              "visible": true
+            },
+            {
+              "id": 99,
+              "enabled": true,
+              "label": "Preferences",
+              "visible": true
+            },
+            {
+              "id": 100,
+              "type": "separator"
+            },
+            {
+              "id": 101,
+              "enabled": false,
+              "label": "Stroke Path...",
+              "visible": true
+            },
+            {
+              "id": 102,
+              "enabled": false,
+              "label": "Stroke Selection...",
+              "visible": true
+            },
+            {
+              "id": 103,
+              "shortcut": [["Control", "semicolon"]],
+              "enabled": true,
+              "label": "Fill with Pattern",
+              "visible": true
+            },
+            {
+              "id": 104,
+              "shortcut": [["Control", "period"]],
+              "enabled": true,
+              "label": "Fill with BG Color",
+              "visible": true
+            },
+            {
+              "id": 105,
+              "shortcut": [["Control", "comma"]],
+              "enabled": true,
+              "label": "Fill with FG Color",
+              "visible": true
+            },
+            {
+              "id": 106,
+              "shortcut": [["Delete"]],
+              "enabled": true,
+              "label": "Clear",
+              "visible": true
+            },
+            {
+              "id": 107,
+              "type": "separator"
+            },
+            {
+              "id": 108,
+              "enabled": true,
+              "label": "Buffer",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 109,
+                    "enabled": true,
+                    "label": "Paste Named...",
+                    "visible": true
+                  },
+                  {
+                    "id": 110,
+                    "enabled": true,
+                    "label": "Copy Visible Named...",
+                    "visible": true
+                  },
+                  {
+                    "id": 111,
+                    "enabled": true,
+                    "label": "Copy Named...",
+                    "visible": true
+                  },
+                  {
+                    "id": 112,
+                    "enabled": true,
+                    "label": "Cut Named...",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 113,
+              "enabled": true,
+              "label": "Paste as",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 114,
+                    "enabled": true,
+                    "label": "New Pattern...",
+                    "visible": true
+                  },
+                  {
+                    "id": 115,
+                    "enabled": true,
+                    "label": "New Brush...",
+                    "visible": true
+                  },
+                  {
+                    "id": 116,
+                    "enabled": true,
+                    "label": "New Layer",
+                    "visible": true
+                  },
+                  {
+                    "id": 117,
+                    "shortcut": [["Control", "Shift", "v"]],
+                    "enabled": true,
+                    "label": "New Image",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 118,
+              "enabled": true,
+              "label": "Paste Into",
+              "visible": true
+            },
+            {
+              "id": 119,
+              "shortcut": [["Control", "v"]],
+              "enabled": true,
+              "label": "Paste",
+              "visible": true
+            },
+            {
+              "id": 120,
+              "shortcut": [["Control", "Shift", "c"]],
+              "enabled": true,
+              "label": "Copy Visible",
+              "visible": true
+            },
+            {
+              "id": 121,
+              "shortcut": [["Control", "c"]],
+              "enabled": true,
+              "label": "Copy",
+              "visible": true
+            },
+            {
+              "id": 122,
+              "shortcut": [["Control", "x"]],
+              "enabled": true,
+              "label": "Cut",
+              "visible": true
+            },
+            {
+              "id": 123,
+              "type": "separator"
+            },
+            {
+              "id": 124,
+              "enabled": true,
+              "label": "Undo History",
+              "visible": true
+            },
+            {
+              "id": 3,
+              "enabled": false,
+              "label": "_Fade...",
+              "visible": true
+            },
+            {
+              "id": 2,
+              "shortcut": [["Control", "y"]],
+              "enabled": false,
+              "label": "_Redo",
+              "visible": true
+            },
+            {
+              "id": 1,
+              "shortcut": [["Control", "z"]],
+              "enabled": false,
+              "label": "_Undo",
+              "visible": true
+            }
+        ]
+      },
+      {
+        "id": 125,
+        "enabled": true,
+        "label": "Select",
+        "children-display": "submenu",
+        "visible": true,
+        "submenu": [
+            {
+              "id": 126,
+              "enabled": false,
+              "label": "To Path",
+              "visible": true
+            },
+            {
+              "id": 127,
+              "enabled": true,
+              "label": "Save to Channel",
+              "visible": true
+            },
+            {
+              "id": 128,
+              "shortcut": [["Shift", "q"]],
+              "enabled": true,
+              "toggle-state": 0,
+              "label": "Toggle Quick Mask",
+              "toggle-type": "checkmark",
+              "visible": true
+            },
+            {
+              "id": 129,
+              "type": "separator"
+            },
+            {
+              "id": 130,
+              "enabled": true,
+              "label": "Distort...",
+              "visible": true
+            },
+            {
+              "id": 131,
+              "enabled": false,
+              "label": "Border...",
+              "visible": true
+            },
+            {
+              "id": 132,
+              "enabled": false,
+              "label": "Grow...",
+              "visible": true
+            },
+            {
+              "id": 133,
+              "enabled": false,
+              "label": "Shrink...",
+              "visible": true
+            },
+            {
+              "id": 134,
+              "enabled": false,
+              "label": "Sharpen",
+              "visible": true
+            },
+            {
+              "id": 135,
+              "enabled": false,
+              "label": "Feather...",
+              "visible": true
+            },
+            {
+              "id": 136,
+              "type": "separator"
+            },
+            {
+              "id": 137,
+              "enabled": true,
+              "label": "Selection Editor",
+              "visible": true
+            },
+            {
+              "id": 138,
+              "shortcut": [["Shift", "v"]],
+              "enabled": false,
+              "label": "From Path",
+              "visible": true
+            },
+            {
+              "id": 139,
+              "shortcut": [["Shift", "o"]],
+              "enabled": true,
+              "label": "By Color",
+              "visible": true
+            },
+            {
+              "id": 140,
+              "shortcut": [["Control", "Shift", "l"]],
+              "enabled": false,
+              "label": "Float",
+              "visible": true
+            },
+            {
+              "id": 141,
+              "shortcut": [["Control", "i"]],
+              "enabled": true,
+              "label": "Invert",
+              "visible": true
+            },
+            {
+              "id": 142,
+              "shortcut": [["Control", "Shift", "a"]],
+              "enabled": false,
+              "label": "None",
+              "visible": true
+            },
+            {
+              "id": 143,
+              "shortcut": [["Control", "a"]],
+              "enabled": true,
+              "label": "All",
+              "visible": true
+            }
+        ]
+      },
+      {
+        "id": 144,
+        "enabled": true,
+        "label": "View",
+        "children-display": "submenu",
+        "visible": true,
+        "submenu": [
+            {
+              "id": 145,
+              "enabled": true,
+              "toggle-state": 1,
+              "label": "Show Statusbar",
+              "toggle-type": "checkmark",
+              "visible": true
+            },
+            {
+              "id": 146,
+              "enabled": true,
+              "toggle-state": 0,
+              "label": "Show Scrollbars",
+              "toggle-type": "checkmark",
+              "visible": true
+            },
+            {
+              "id": 147,
+              "shortcut": [["Control", "Shift", "r"]],
+              "enabled": true,
+              "toggle-state": 0,
+              "label": "Show Rulers",
+              "toggle-type": "checkmark",
+              "visible": true
+            },
+            {
+              "id": 148,
+              "enabled": true,
+              "toggle-state": 1,
+              "label": "Show Menubar",
+              "toggle-type": "checkmark",
+              "visible": true
+            },
+            {
+              "id": 149,
+              "enabled": true,
+              "label": "Padding Color",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 150,
+                    "enabled": true,
+                    "label": "As in Preferences",
+                    "visible": true
+                  },
+                  {
+                    "id": 151,
+                    "type": "separator"
+                  },
+                  {
+                    "id": 152,
+                    "enabled": true,
+                    "label": "Select Custom Color...",
+                    "visible": true
+                  },
+                  {
+                    "id": 153,
+                    "enabled": true,
+                    "label": "Dark Check Color",
+                    "visible": true
+                  },
+                  {
+                    "id": 154,
+                    "enabled": true,
+                    "label": "Light Check Color",
+                    "visible": true
+                  },
+                  {
+                    "id": 155,
+                    "enabled": true,
+                    "label": "From Theme",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 156,
+              "type": "separator"
+            },
+            {
+              "id": 157,
+              "enabled": true,
+              "toggle-state": 0,
+              "label": "Snap to Active Path",
+              "toggle-type": "checkmark",
+              "visible": true
+            },
+            {
+              "id": 158,
+              "enabled": true,
+              "toggle-state": 0,
+              "label": "Snap to Canvas Edges",
+              "toggle-type": "checkmark",
+              "visible": true
+            },
+            {
+              "id": 159,
+              "enabled": true,
+              "toggle-state": 0,
+              "label": "Snap to Grid",
+              "toggle-type": "checkmark",
+              "visible": true
+            },
+            {
+              "id": 160,
+              "enabled": true,
+              "toggle-state": 1,
+              "label": "Snap to Guides",
+              "toggle-type": "checkmark",
+              "visible": true
+            },
+            {
+              "id": 161,
+              "type": "separator"
+            },
+            {
+              "id": 162,
+              "enabled": true,
+              "toggle-state": 0,
+              "label": "Show Sample Points",
+              "toggle-type": "checkmark",
+              "visible": true
+            },
+            {
+              "id": 163,
+              "enabled": true,
+              "toggle-state": 0,
+              "label": "Show Grid",
+              "toggle-type": "checkmark",
+              "visible": true
+            },
+            {
+              "id": 164,
+              "shortcut": [["Control", "Shift", "t"]],
+              "enabled": true,
+              "toggle-state": 0,
+              "label": "Show Guides",
+              "toggle-type": "checkmark",
+              "visible": true
+            },
+            {
+              "id": 165,
+              "enabled": true,
+              "toggle-state": 0,
+              "label": "Show Layer Boundary",
+              "toggle-type": "checkmark",
+              "visible": true
+            },
+            {
+              "id": 166,
+              "shortcut": [["Control", "t"]],
+              "enabled": true,
+              "toggle-state": 0,
+              "label": "Show Selection",
+              "toggle-type": "checkmark",
+              "visible": true
+            },
+            {
+              "id": 167,
+              "type": "separator"
+            },
+            {
+              "id": 168,
+              "enabled": true,
+              "label": "Display Filters...",
+              "visible": true
+            },
+            {
+              "id": 169,
+              "enabled": true,
+              "label": "Navigation Window",
+              "visible": true
+            },
+            {
+              "id": 170,
+              "type": "separator"
+            },
+            {
+              "id": 171,
+              "enabled": true,
+              "shortcut": [["F11"]],
+              "toggle-state": 0,
+              "label": "Fullscreen",
+              "toggle-type": "checkmark",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 172,
+                    "enabled": true,
+                    "label": "Open Display...",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 173,
+              "shortcut": [["Control", "e"]],
+              "enabled": true,
+              "label": "Shrink Wrap",
+              "visible": true
+            },
+            {
+              "id": 174,
+              "type": "separator"
+            },
+            {
+              "id": 175,
+              "enabled": true,
+              "label": "_Zoom (67%)",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 176,
+                    "enabled": true,
+                    "toggle-state": 0,
+                    "label": "Othe_r (67%)...",
+                    "toggle-type": "checkmark",
+                    "visible": true
+                  },
+                  {
+                    "id": 177,
+                    "type": "separator"
+                  },
+                  {
+                    "id": 178,
+                    "enabled": true,
+                    "toggle-state": 0,
+                    "label": "1:16  (6.25%)",
+                    "toggle-type": "checkmark",
+                    "visible": true
+                  },
+                  {
+                    "id": 179,
+                    "enabled": true,
+                    "toggle-state": 0,
+                    "label": "1:8  (12.5%)",
+                    "toggle-type": "checkmark",
+                    "visible": true
+                  },
+                  {
+                    "id": 180,
+                    "enabled": true,
+                    "toggle-state": 0,
+                    "label": "1:4  (25%)",
+                    "toggle-type": "checkmark",
+                    "visible": true
+                  },
+                  {
+                    "id": 181,
+                    "enabled": true,
+                    "toggle-state": 0,
+                    "label": "1:2  (50%)",
+                    "toggle-type": "checkmark",
+                    "visible": true
+                  },
+                  {
+                    "id": 182,
+                    "shortcut": [["1"]],
+                    "enabled": true,
+                    "toggle-state": 1,
+                    "label": "1:1  (100%)",
+                    "toggle-type": "checkmark",
+                    "visible": true
+                  },
+                  {
+                    "id": 183,
+                    "enabled": true,
+                    "toggle-state": 0,
+                    "label": "2:1  (200%)",
+                    "toggle-type": "checkmark",
+                    "visible": true
+                  },
+                  {
+                    "id": 184,
+                    "enabled": true,
+                    "toggle-state": 0,
+                    "label": "4:1  (400%)",
+                    "toggle-type": "checkmark",
+                    "visible": true
+                  },
+                  {
+                    "id": 185,
+                    "enabled": true,
+                    "toggle-state": 0,
+                    "label": "8:1  (800%)",
+                    "toggle-type": "checkmark",
+                    "visible": true
+                  },
+                  {
+                    "id": 186,
+                    "enabled": true,
+                    "toggle-state": 0,
+                    "label": "16:1  (1600%)",
+                    "toggle-type": "checkmark",
+                    "visible": true
+                  },
+                  {
+                    "id": 187,
+                    "type": "separator"
+                  },
+                  {
+                    "id": 188,
+                    "enabled": true,
+                    "label": "Fill Window",
+                    "visible": true
+                  },
+                  {
+                    "id": 189,
+                    "shortcut": [["Control", "Shift", "e"]],
+                    "enabled": true,
+                    "label": "Fit Image in Window",
+                    "visible": true
+                  },
+                  {
+                    "id": 190,
+                    "shortcut": [["plus"]],
+                    "enabled": true,
+                    "label": "Zoom In",
+                    "visible": true
+                  },
+                  {
+                    "id": 191,
+                    "shortcut": [["minus"]],
+                    "enabled": true,
+                    "label": "Zoom Out",
+                    "visible": true
+                  },
+                  {
+                    "id": 4,
+                    "shortcut": [["grave"]],
+                    "enabled": true,
+                    "label": "Re_vert Zoom (67%)",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 192,
+              "enabled": true,
+              "toggle-state": 1,
+              "label": "Dot for Dot",
+              "toggle-type": "checkmark",
+              "visible": true
+            },
+            {
+              "id": 193,
+              "enabled": true,
+              "label": "New View",
+              "visible": true
+            }
+        ]
+      },
+      {
+        "id": 194,
+        "enabled": true,
+        "label": "Image",
+        "children-display": "submenu",
+        "visible": true,
+        "submenu": [
+            {
+              "id": 195,
+              "shortcut": [["Alt", "Return"]],
+              "enabled": true,
+              "label": "Image Properties",
+              "visible": true
+            },
+            {
+              "id": 196,
+              "enabled": true,
+              "label": "Configure Grid...",
+              "visible": true
+            },
+            {
+              "id": 197,
+              "enabled": true,
+              "label": "Guides",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 198,
+                    "enabled": true,
+                    "label": "Remove all Guides",
+                    "visible": true
+                  },
+                  {
+                    "id": 199,
+                    "enabled": true,
+                    "label": "New Guides from Selection",
+                    "visible": true
+                  },
+                  {
+                    "id": 200,
+                    "enabled": true,
+                    "label": "New Guide...",
+                    "visible": true
+                  },
+                  {
+                    "id": 201,
+                    "enabled": true,
+                    "label": "New Guide (by Percent)...",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 202,
+              "type": "separator"
+            },
+            {
+              "id": 203,
+              "enabled": true,
+              "label": "Align Visible Layers...",
+              "visible": true
+            },
+            {
+              "id": 204,
+              "enabled": true,
+              "label": "Flatten Image",
+              "visible": true
+            },
+            {
+              "id": 205,
+              "shortcut": [["Control", "m"]],
+              "enabled": true,
+              "label": "Merge Visible Layers...",
+              "visible": true
+            },
+            {
+              "id": 206,
+              "type": "separator"
+            },
+            {
+              "id": 207,
+              "enabled": true,
+              "label": "Zealous Crop",
+              "visible": true
+            },
+            {
+              "id": 208,
+              "enabled": true,
+              "label": "Autocrop Image",
+              "visible": true
+            },
+            {
+              "id": 209,
+              "enabled": false,
+              "label": "Crop to Selection",
+              "visible": true
+            },
+            {
+              "id": 210,
+              "type": "separator"
+            },
+            {
+              "id": 211,
+              "enabled": true,
+              "label": "Scale Image...",
+              "visible": true
+            },
+            {
+              "id": 212,
+              "enabled": true,
+              "label": "Print Size...",
+              "visible": true
+            },
+            {
+              "id": 213,
+              "enabled": false,
+              "label": "Fit Canvas to Selection",
+              "visible": true
+            },
+            {
+              "id": 214,
+              "enabled": true,
+              "label": "Fit Canvas to Layers",
+              "visible": true
+            },
+            {
+              "id": 215,
+              "enabled": true,
+              "label": "Canvas Size...",
+              "visible": true
+            },
+            {
+              "id": 216,
+              "type": "separator"
+            },
+            {
+              "id": 217,
+              "enabled": true,
+              "label": "Transform",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 218,
+                    "enabled": true,
+                    "label": "Guillotine",
+                    "visible": true
+                  },
+                  {
+                    "id": 219,
+                    "type": "separator"
+                  },
+                  {
+                    "id": 220,
+                    "enabled": true,
+                    "label": "Rotate 180\302\260",
+                    "visible": true
+                  },
+                  {
+                    "id": 221,
+                    "enabled": true,
+                    "label": "Rotate 90\302\260 counter-clockwise",
+                    "visible": true
+                  },
+                  {
+                    "id": 222,
+                    "enabled": true,
+                    "label": "Rotate 90\302\260 clockwise",
+                    "visible": true
+                  },
+                  {
+                    "id": 223,
+                    "type": "separator"
+                  },
+                  {
+                    "id": 224,
+                    "enabled": true,
+                    "label": "Flip Vertically",
+                    "visible": true
+                  },
+                  {
+                    "id": 225,
+                    "enabled": true,
+                    "label": "Flip Horizontally",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 226,
+              "enabled": true,
+              "label": "Mode",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 227,
+                    "enabled": true,
+                    "label": "Convert to Color Profile...",
+                    "visible": true
+                  },
+                  {
+                    "id": 228,
+                    "enabled": true,
+                    "label": "Assign Color Profile...",
+                    "visible": true
+                  },
+                  {
+                    "id": 229,
+                    "type": "separator"
+                  },
+                  {
+                    "id": 230,
+                    "enabled": true,
+                    "toggle-state": 0,
+                    "label": "Indexed...",
+                    "toggle-type": "checkmark",
+                    "visible": true
+                  },
+                  {
+                    "id": 231,
+                    "enabled": true,
+                    "toggle-state": 0,
+                    "label": "Grayscale",
+                    "toggle-type": "checkmark",
+                    "visible": true
+                  },
+                  {
+                    "id": 232,
+                    "enabled": true,
+                    "toggle-state": 1,
+                    "label": "RGB",
+                    "toggle-type": "checkmark",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 233,
+              "shortcut": [["Control", "d"]],
+              "enabled": true,
+              "label": "Duplicate",
+              "visible": true
+            }
+        ]
+      },
+      {
+        "id": 234,
+        "enabled": true,
+        "label": "Layer",
+        "children-display": "submenu",
+        "visible": true,
+        "submenu": [
+            {
+              "id": 235,
+              "enabled": true,
+              "label": "Autocrop Layer",
+              "visible": true
+            },
+            {
+              "id": 236,
+              "enabled": false,
+              "label": "Crop to Selection",
+              "visible": true
+            },
+            {
+              "id": 237,
+              "enabled": true,
+              "label": "Scale Layer...",
+              "visible": true
+            },
+            {
+              "id": 238,
+              "enabled": true,
+              "label": "Layer to Image Size",
+              "visible": true
+            },
+            {
+              "id": 239,
+              "enabled": true,
+              "label": "Layer Boundary Size...",
+              "visible": true
+            },
+            {
+              "id": 240,
+              "type": "separator"
+            },
+            {
+              "id": 241,
+              "enabled": true,
+              "label": "Transform",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 242,
+                    "shortcut": [["Control", "Shift", "o"]],
+                    "enabled": true,
+                    "label": "Offset...",
+                    "visible": true
+                  },
+                  {
+                    "id": 243,
+                    "type": "separator"
+                  },
+                  {
+                    "id": 244,
+                    "enabled": true,
+                    "label": "Arbitrary Rotation...",
+                    "visible": true
+                  },
+                  {
+                    "id": 245,
+                    "enabled": true,
+                    "label": "Rotate 180\302\260",
+                    "visible": true
+                  },
+                  {
+                    "id": 246,
+                    "enabled": true,
+                    "label": "Rotate 90\302\260 counter-clockwise",
+                    "visible": true
+                  },
+                  {
+                    "id": 247,
+                    "enabled": true,
+                    "label": "Rotate 90\302\260 clockwise",
+                    "visible": true
+                  },
+                  {
+                    "id": 248,
+                    "type": "separator"
+                  },
+                  {
+                    "id": 249,
+                    "enabled": true,
+                    "label": "Flip Vertically",
+                    "visible": true
+                  },
+                  {
+                    "id": 250,
+                    "enabled": true,
+                    "label": "Flip Horizontally",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 251,
+              "enabled": true,
+              "label": "Transparency",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 252,
+                    "enabled": true,
+                    "label": "Intersect with Selection",
+                    "visible": true
+                  },
+                  {
+                    "id": 253,
+                    "enabled": true,
+                    "label": "Subtract from Selection",
+                    "visible": true
+                  },
+                  {
+                    "id": 254,
+                    "enabled": true,
+                    "label": "Add to Selection",
+                    "visible": true
+                  },
+                  {
+                    "id": 255,
+                    "enabled": true,
+                    "label": "Alpha to Selection",
+                    "visible": true
+                  },
+                  {
+                    "id": 256,
+                    "type": "separator"
+                  },
+                  {
+                    "id": 257,
+                    "enabled": true,
+                    "label": "Threshold Alpha...",
+                    "visible": true
+                  },
+                  {
+                    "id": 258,
+                    "enabled": true,
+                    "label": "Semi-Flatten",
+                    "visible": true
+                  },
+                  {
+                    "id": 259,
+                    "enabled": true,
+                    "label": "Color to Alpha...",
+                    "visible": true
+                  },
+                  {
+                    "id": 260,
+                    "enabled": true,
+                    "label": "Remove Alpha Channel",
+                    "visible": true
+                  },
+                  {
+                    "id": 261,
+                    "enabled": false,
+                    "label": "Add Alpha Channel",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 262,
+              "enabled": true,
+              "label": "Mask",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 263,
+                    "enabled": false,
+                    "label": "Intersect with Selection",
+                    "visible": true
+                  },
+                  {
+                    "id": 264,
+                    "enabled": false,
+                    "label": "Subtract from Selection",
+                    "visible": true
+                  },
+                  {
+                    "id": 265,
+                    "enabled": false,
+                    "label": "Add to Selection",
+                    "visible": true
+                  },
+                  {
+                    "id": 266,
+                    "enabled": false,
+                    "label": "Mask to Selection",
+                    "visible": true
+                  },
+                  {
+                    "id": 267,
+                    "type": "separator"
+                  },
+                  {
+                    "id": 268,
+                    "enabled": false,
+                    "toggle-state": 0,
+                    "label": "Disable Layer Mask",
+                    "toggle-type": "checkmark",
+                    "visible": true
+                  },
+                  {
+                    "id": 269,
+                    "enabled": false,
+                    "toggle-state": 0,
+                    "label": "Edit Layer Mask",
+                    "toggle-type": "checkmark",
+                    "visible": true
+                  },
+                  {
+                    "id": 270,
+                    "enabled": false,
+                    "toggle-state": 0,
+                    "label": "Show Layer Mask",
+                    "toggle-type": "checkmark",
+                    "visible": true
+                  },
+                  {
+                    "id": 271,
+                    "type": "separator"
+                  },
+                  {
+                    "id": 272,
+                    "enabled": false,
+                    "label": "Delete Layer Mask",
+                    "visible": true
+                  },
+                  {
+                    "id": 273,
+                    "enabled": false,
+                    "label": "Apply Layer Mask",
+                    "visible": true
+                  },
+                  {
+                    "id": 274,
+                    "enabled": true,
+                    "label": "Add Layer Mask...",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 275,
+              "enabled": true,
+              "label": "Stack",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 276,
+                    "enabled": true,
+                    "label": "Reverse Layer Order",
+                    "visible": true
+                  },
+                  {
+                    "id": 277,
+                    "type": "separator"
+                  },
+                  {
+                    "id": 278,
+                    "enabled": false,
+                    "label": "Layer to Bottom",
+                    "visible": true
+                  },
+                  {
+                    "id": 279,
+                    "enabled": false,
+                    "label": "Layer to Top",
+                    "visible": true
+                  },
+                  {
+                    "id": 280,
+                    "enabled": false,
+                    "label": "Lower Layer",
+                    "visible": true
+                  },
+                  {
+                    "id": 281,
+                    "enabled": false,
+                    "label": "Raise Layer",
+                    "visible": true
+                  },
+                  {
+                    "id": 282,
+                    "type": "separator"
+                  },
+                  {
+                    "id": 283,
+                    "shortcut": [["End"]],
+                    "enabled": false,
+                    "label": "Select Bottom Layer",
+                    "visible": true
+                  },
+                  {
+                    "id": 284,
+                    "shortcut": [["Home"]],
+                    "enabled": false,
+                    "label": "Select Top Layer",
+                    "visible": true
+                  },
+                  {
+                    "id": 285,
+                    "shortcut": [["Page_Down"]],
+                    "enabled": false,
+                    "label": "Select Next Layer",
+                    "visible": true
+                  },
+                  {
+                    "id": 286,
+                    "shortcut": [["Page_Up"]],
+                    "enabled": false,
+                    "label": "Select Previous Layer",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 287,
+              "type": "separator",
+              "children-display": "submenu",
+              "submenu": [
+                  {
+                    "id": 288,
+                    "enabled": false,
+                    "label": "Empty",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 289,
+              "enabled": true,
+              "label": "Delete Layer",
+              "visible": true
+            },
+            {
+              "id": 290,
+              "enabled": false,
+              "label": "Merge Down",
+              "visible": true
+            },
+            {
+              "id": 291,
+              "shortcut": [["Control", "h"]],
+              "enabled": false,
+              "label": "Anchor Layer",
+              "visible": true
+            },
+            {
+              "id": 292,
+              "shortcut": [["Control", "Shift", "d"]],
+              "enabled": true,
+              "label": "Duplicate Layer",
+              "visible": true
+            },
+            {
+              "id": 293,
+              "enabled": true,
+              "label": "New from Visible",
+              "visible": true
+            },
+            {
+              "id": 294,
+              "shortcut": [["Control", "Shift", "n"]],
+              "enabled": true,
+              "label": "New Layer...",
+              "visible": true
+            }
+        ]
+      },
+      {
+        "id": 295,
+        "enabled": true,
+        "label": "Colors",
+        "children-display": "submenu",
+        "visible": true,
+        "submenu": [
+            {
+              "id": 296,
+              "enabled": true,
+              "label": "Retinex...",
+              "visible": true
+            },
+            {
+              "id": 297,
+              "enabled": true,
+              "label": "Maximum RGB...",
+              "visible": true
+            },
+            {
+              "id": 298,
+              "enabled": false,
+              "label": "Hot...",
+              "visible": true
+            },
+            {
+              "id": 299,
+              "enabled": true,
+              "label": "Filter Pack...",
+              "visible": true
+            },
+            {
+              "id": 300,
+              "enabled": true,
+              "label": "Color to Alpha...",
+              "visible": true
+            },
+            {
+              "id": 301,
+              "enabled": true,
+              "label": "Colorify...",
+              "visible": true
+            },
+            {
+              "id": 302,
+              "type": "separator"
+            },
+            {
+              "id": 303,
+              "enabled": true,
+              "label": "Info",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 304,
+                    "enabled": true,
+                    "label": "Smooth Palette...",
+                    "visible": true
+                  },
+                  {
+                    "id": 305,
+                    "enabled": true,
+                    "label": "Colorcube Analysis...",
+                    "visible": true
+                  },
+                  {
+                    "id": 306,
+                    "enabled": true,
+                    "label": "Border Average...",
+                    "visible": true
+                  },
+                  {
+                    "id": 307,
+                    "enabled": true,
+                    "label": "Histogram",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 308,
+              "enabled": true,
+              "label": "Map",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 309,
+                    "enabled": true,
+                    "label": "Sample Colorize...",
+                    "visible": true
+                  },
+                  {
+                    "id": 310,
+                    "enabled": true,
+                    "label": "Rotate Colors...",
+                    "visible": true
+                  },
+                  {
+                    "id": 311,
+                    "enabled": true,
+                    "label": "Palette Map",
+                    "visible": true
+                  },
+                  {
+                    "id": 312,
+                    "enabled": true,
+                    "label": "Gradient Map",
+                    "visible": true
+                  },
+                  {
+                    "id": 313,
+                    "enabled": true,
+                    "label": "Color Exchange...",
+                    "visible": true
+                  },
+                  {
+                    "id": 314,
+                    "enabled": true,
+                    "label": "Alien Map...",
+                    "visible": true
+                  },
+                  {
+                    "id": 315,
+                    "type": "separator"
+                  },
+                  {
+                    "id": 316,
+                    "enabled": false,
+                    "label": "Set Colormap...",
+                    "visible": true
+                  },
+                  {
+                    "id": 317,
+                    "enabled": false,
+                    "label": "Rearrange Colormap...",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 318,
+              "enabled": true,
+              "label": "Components",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 319,
+                    "enabled": false,
+                    "label": "Recompose",
+                    "visible": true
+                  },
+                  {
+                    "id": 320,
+                    "enabled": true,
+                    "label": "Decompose...",
+                    "visible": true
+                  },
+                  {
+                    "id": 321,
+                    "enabled": false,
+                    "label": "Compose...",
+                    "visible": true
+                  },
+                  {
+                    "id": 322,
+                    "enabled": true,
+                    "label": "Channel Mixer...",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 323,
+              "enabled": true,
+              "label": "Auto",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 324,
+                    "enabled": true,
+                    "label": "Stretch HSV",
+                    "visible": true
+                  },
+                  {
+                    "id": 325,
+                    "enabled": true,
+                    "label": "Stretch Contrast",
+                    "visible": true
+                  },
+                  {
+                    "id": 326,
+                    "enabled": true,
+                    "label": "Normalize",
+                    "visible": true
+                  },
+                  {
+                    "id": 327,
+                    "enabled": true,
+                    "label": "Color Enhance",
+                    "visible": true
+                  },
+                  {
+                    "id": 328,
+                    "enabled": true,
+                    "label": "White Balance",
+                    "visible": true
+                  },
+                  {
+                    "id": 329,
+                    "enabled": true,
+                    "label": "Equalize",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 330,
+              "type": "separator"
+            },
+            {
+              "id": 331,
+              "enabled": true,
+              "toggle-state": 0,
+              "label": "Use GEGL",
+              "toggle-type": "checkmark",
+              "visible": true
+            },
+            {
+              "id": 332,
+              "type": "separator"
+            },
+            {
+              "id": 333,
+              "enabled": true,
+              "label": "Value Invert",
+              "visible": true
+            },
+            {
+              "id": 334,
+              "enabled": true,
+              "label": "Invert",
+              "visible": true
+            },
+            {
+              "id": 335,
+              "type": "separator"
+            },
+            {
+              "id": 336,
+              "enabled": true,
+              "label": "Desaturate...",
+              "visible": true
+            },
+            {
+              "id": 337,
+              "enabled": true,
+              "label": "Posterize...",
+              "visible": true
+            },
+            {
+              "id": 338,
+              "enabled": true,
+              "label": "Curves...",
+              "visible": true
+            },
+            {
+              "id": 339,
+              "enabled": true,
+              "label": "Levels...",
+              "visible": true
+            },
+            {
+              "id": 340,
+              "enabled": true,
+              "label": "Threshold...",
+              "visible": true
+            },
+            {
+              "id": 341,
+              "enabled": true,
+              "label": "Brightness-Contrast...",
+              "visible": true
+            },
+            {
+              "id": 342,
+              "enabled": true,
+              "label": "Colorize...",
+              "visible": true
+            },
+            {
+              "id": 343,
+              "enabled": true,
+              "label": "Hue-Saturation...",
+              "visible": true
+            },
+            {
+              "id": 344,
+              "enabled": true,
+              "label": "Color Balance...",
+              "visible": true
+            }
+        ]
+      },
+      {
+        "id": 345,
+        "enabled": true,
+        "label": "Tools",
+        "children-display": "submenu",
+        "visible": true,
+        "submenu": [
+            {
+              "id": 346,
+              "shortcut": [["x"]],
+              "enabled": true,
+              "label": "Swap Colors",
+              "visible": true
+            },
+            {
+              "id": 347,
+              "shortcut": [["d"]],
+              "enabled": true,
+              "label": "Default Colors",
+              "visible": true
+            },
+            {
+              "id": 348,
+              "shortcut": [["Control", "b"]],
+              "enabled": true,
+              "label": "Toolbox",
+              "visible": true
+            },
+            {
+              "id": 349,
+              "type": "separator"
+            },
+            {
+              "id": 350,
+              "enabled": true,
+              "label": "GEGL Operation...",
+              "visible": true
+            },
+            {
+              "id": 351,
+              "shortcut": [["t"]],
+              "enabled": true,
+              "label": "Text",
+              "visible": true
+            },
+            {
+              "id": 352,
+              "shortcut": [["Shift", "m"]],
+              "enabled": true,
+              "label": "Measure",
+              "visible": true
+            },
+            {
+              "id": 353,
+              "shortcut": [["z"]],
+              "enabled": true,
+              "label": "Zoom",
+              "visible": true
+            },
+            {
+              "id": 354,
+              "shortcut": [["o"]],
+              "enabled": true,
+              "label": "Color Picker",
+              "visible": true
+            },
+            {
+              "id": 355,
+              "shortcut": [["b"]],
+              "enabled": true,
+              "label": "Paths",
+              "visible": true
+            },
+            {
+              "id": 356,
+              "enabled": true,
+              "label": "Color Tools",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 357,
+                    "enabled": true,
+                    "label": "Desaturate...",
+                    "visible": true
+                  },
+                  {
+                    "id": 358,
+                    "enabled": true,
+                    "label": "Posterize...",
+                    "visible": true
+                  },
+                  {
+                    "id": 359,
+                    "enabled": true,
+                    "label": "Curves...",
+                    "visible": true
+                  },
+                  {
+                    "id": 360,
+                    "enabled": true,
+                    "label": "Levels...",
+                    "visible": true
+                  },
+                  {
+                    "id": 361,
+                    "enabled": true,
+                    "label": "Threshold...",
+                    "visible": true
+                  },
+                  {
+                    "id": 362,
+                    "enabled": true,
+                    "label": "Brightness-Contrast...",
+                    "visible": true
+                  },
+                  {
+                    "id": 363,
+                    "enabled": true,
+                    "label": "Colorize...",
+                    "visible": true
+                  },
+                  {
+                    "id": 364,
+                    "enabled": true,
+                    "label": "Hue-Saturation...",
+                    "visible": true
+                  },
+                  {
+                    "id": 365,
+                    "enabled": true,
+                    "label": "Color Balance...",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 366,
+              "enabled": true,
+              "label": "Transform Tools",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 367,
+                    "shortcut": [["Shift", "f"]],
+                    "enabled": true,
+                    "label": "Flip",
+                    "visible": true
+                  },
+                  {
+                    "id": 368,
+                    "shortcut": [["Shift", "p"]],
+                    "enabled": true,
+                    "label": "Perspective",
+                    "visible": true
+                  },
+                  {
+                    "id": 369,
+                    "shortcut": [["Shift", "s"]],
+                    "enabled": true,
+                    "label": "Shear",
+                    "visible": true
+                  },
+                  {
+                    "id": 370,
+                    "shortcut": [["Shift", "t"]],
+                    "enabled": true,
+                    "label": "Scale",
+                    "visible": true
+                  },
+                  {
+                    "id": 371,
+                    "shortcut": [["Shift", "r"]],
+                    "enabled": true,
+                    "label": "Rotate",
+                    "visible": true
+                  },
+                  {
+                    "id": 372,
+                    "shortcut": [["Shift", "c"]],
+                    "enabled": true,
+                    "label": "Crop",
+                    "visible": true
+                  },
+                  {
+                    "id": 373,
+                    "shortcut": [["m"]],
+                    "enabled": true,
+                    "label": "Move",
+                    "visible": true
+                  },
+                  {
+                    "id": 374,
+                    "shortcut": [["q"]],
+                    "enabled": true,
+                    "label": "Align",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 375,
+              "enabled": true,
+              "label": "Paint Tools",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 376,
+                    "shortcut": [["Shift", "d"]],
+                    "enabled": true,
+                    "label": "Dodge / Burn",
+                    "visible": true
+                  },
+                  {
+                    "id": 377,
+                    "shortcut": [["s"]],
+                    "enabled": true,
+                    "label": "Smudge",
+                    "visible": true
+                  },
+                  {
+                    "id": 378,
+                    "shortcut": [["Shift", "u"]],
+                    "enabled": true,
+                    "label": "Blur / Sharpen",
+                    "visible": true
+                  },
+                  {
+                    "id": 379,
+                    "enabled": true,
+                    "label": "Perspective Clone",
+                    "visible": true
+                  },
+                  {
+                    "id": 380,
+                    "shortcut": [["h"]],
+                    "enabled": true,
+                    "label": "Heal",
+                    "visible": true
+                  },
+                  {
+                    "id": 381,
+                    "shortcut": [["c"]],
+                    "enabled": true,
+                    "label": "Clone",
+                    "visible": true
+                  },
+                  {
+                    "id": 382,
+                    "shortcut": [["k"]],
+                    "enabled": true,
+                    "label": "Ink",
+                    "visible": true
+                  },
+                  {
+                    "id": 383,
+                    "shortcut": [["a"]],
+                    "enabled": true,
+                    "label": "Airbrush",
+                    "visible": true
+                  },
+                  {
+                    "id": 384,
+                    "shortcut": [["Shift", "e"]],
+                    "enabled": true,
+                    "label": "Eraser",
+                    "visible": true
+                  },
+                  {
+                    "id": 385,
+                    "shortcut": [["p"]],
+                    "enabled": true,
+                    "label": "Paintbrush",
+                    "visible": true
+                  },
+                  {
+                    "id": 386,
+                    "shortcut": [["n"]],
+                    "enabled": true,
+                    "label": "Pencil",
+                    "visible": true
+                  },
+                  {
+                    "id": 387,
+                    "shortcut": [["l"]],
+                    "enabled": true,
+                    "label": "Blend",
+                    "visible": true
+                  },
+                  {
+                    "id": 388,
+                    "shortcut": [["Shift", "b"]],
+                    "enabled": true,
+                    "label": "Bucket Fill",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 389,
+              "enabled": true,
+              "label": "Selection Tools",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 390,
+                    "shortcut": [["i"]],
+                    "enabled": true,
+                    "label": "Intelligent Scissors",
+                    "visible": true
+                  },
+                  {
+                    "id": 391,
+                    "shortcut": [["Shift", "o"]],
+                    "enabled": true,
+                    "label": "By Color Select",
+                    "visible": true
+                  },
+                  {
+                    "id": 392,
+                    "shortcut": [["u"]],
+                    "enabled": true,
+                    "label": "Fuzzy Select",
+                    "visible": true
+                  },
+                  {
+                    "id": 393,
+                    "enabled": true,
+                    "label": "Foreground Select",
+                    "visible": true
+                  },
+                  {
+                    "id": 394,
+                    "shortcut": [["f"]],
+                    "enabled": true,
+                    "label": "Free Select",
+                    "visible": true
+                  },
+                  {
+                    "id": 395,
+                    "shortcut": [["e"]],
+                    "enabled": true,
+                    "label": "Ellipse Select",
+                    "visible": true
+                  },
+                  {
+                    "id": 396,
+                    "shortcut": [["r"]],
+                    "enabled": true,
+                    "label": "Rectangle Select",
+                    "visible": true
+                  }
+              ]
+            }
+        ]
+      },
+      {
+        "id": 397,
+        "enabled": true,
+        "label": "Filters",
+        "children-display": "submenu",
+        "visible": true,
+        "submenu": [
+            {
+              "id": 398,
+              "enabled": true,
+              "label": "Script-Fu",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 399,
+                    "enabled": true,
+                    "label": "Start Server...",
+                    "visible": true
+                  },
+                  {
+                    "id": 400,
+                    "enabled": true,
+                    "label": "Refresh Scripts",
+                    "visible": true
+                  },
+                  {
+                    "id": 401,
+                    "enabled": true,
+                    "label": "Console",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 402,
+              "enabled": true,
+              "label": "Python-Fu",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 403,
+                    "enabled": true,
+                    "label": "Console",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 404,
+              "type": "separator"
+            },
+            {
+              "id": 405,
+              "enabled": true,
+              "label": "Alpha to Logo",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 406,
+                    "enabled": true,
+                    "label": "Textured...",
+                    "visible": true
+                  },
+                  {
+                    "id": 407,
+                    "enabled": true,
+                    "label": "Particle Trace...",
+                    "visible": true
+                  },
+                  {
+                    "id": 408,
+                    "enabled": true,
+                    "label": "Neon...",
+                    "visible": true
+                  },
+                  {
+                    "id": 409,
+                    "enabled": true,
+                    "label": "Gradient Bevel...",
+                    "visible": true
+                  },
+                  {
+                    "id": 410,
+                    "enabled": true,
+                    "label": "Glowing Hot...",
+                    "visible": true
+                  },
+                  {
+                    "id": 411,
+                    "enabled": true,
+                    "label": "Glossy...",
+                    "visible": true
+                  },
+                  {
+                    "id": 412,
+                    "enabled": true,
+                    "label": "Frosty...",
+                    "visible": true
+                  },
+                  {
+                    "id": 413,
+                    "enabled": true,
+                    "label": "Cool Metal...",
+                    "visible": true
+                  },
+                  {
+                    "id": 414,
+                    "enabled": true,
+                    "label": "Comic Book...",
+                    "visible": true
+                  },
+                  {
+                    "id": 415,
+                    "enabled": true,
+                    "label": "Chrome...",
+                    "visible": true
+                  },
+                  {
+                    "id": 416,
+                    "enabled": true,
+                    "label": "Chip Away...",
+                    "visible": true
+                  },
+                  {
+                    "id": 417,
+                    "enabled": true,
+                    "label": "Chalk...",
+                    "visible": true
+                  },
+                  {
+                    "id": 418,
+                    "enabled": true,
+                    "label": "Bovination...",
+                    "visible": true
+                  },
+                  {
+                    "id": 419,
+                    "enabled": true,
+                    "label": "Blended...",
+                    "visible": true
+                  },
+                  {
+                    "id": 420,
+                    "enabled": true,
+                    "label": "Basic I...",
+                    "visible": true
+                  },
+                  {
+                    "id": 421,
+                    "enabled": true,
+                    "label": "Basic II...",
+                    "visible": true
+                  },
+                  {
+                    "id": 422,
+                    "enabled": true,
+                    "label": "Alien Neon...",
+                    "visible": true
+                  },
+                  {
+                    "id": 423,
+                    "enabled": true,
+                    "label": "Alien Glow...",
+                    "visible": true
+                  },
+                  {
+                    "id": 424,
+                    "enabled": true,
+                    "label": "3D Outline...",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 425,
+              "type": "separator"
+            },
+            {
+              "id": 426,
+              "enabled": true,
+              "label": "Animation",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 427,
+                    "enabled": true,
+                    "label": "Unoptimize",
+                    "visible": true
+                  },
+                  {
+                    "id": 428,
+                    "enabled": true,
+                    "label": "Playback...",
+                    "visible": true
+                  },
+                  {
+                    "id": 429,
+                    "enabled": true,
+                    "label": "Optimize (for GIF)",
+                    "visible": true
+                  },
+                  {
+                    "id": 430,
+                    "enabled": true,
+                    "label": "Optimize (Difference)",
+                    "visible": true
+                  },
+                  {
+                    "id": 431,
+                    "type": "separator"
+                  },
+                  {
+                    "id": 432,
+                    "enabled": true,
+                    "label": "Waves...",
+                    "visible": true
+                  },
+                  {
+                    "id": 433,
+                    "enabled": true,
+                    "label": "Spinning Globe...",
+                    "visible": true
+                  },
+                  {
+                    "id": 434,
+                    "enabled": true,
+                    "label": "Rippling...",
+                    "visible": true
+                  },
+                  {
+                    "id": 435,
+                    "enabled": true,
+                    "label": "Burn-In...",
+                    "visible": true
+                  },
+                  {
+                    "id": 436,
+                    "enabled": true,
+                    "label": "Blend...",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 437,
+              "enabled": true,
+              "label": "Web",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 438,
+                    "enabled": true,
+                    "label": "Slice...",
+                    "visible": true
+                  },
+                  {
+                    "id": 439,
+                    "enabled": true,
+                    "label": "Semi-Flatten",
+                    "visible": true
+                  },
+                  {
+                    "id": 440,
+                    "enabled": true,
+                    "label": "Image Map...",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 441,
+              "enabled": true,
+              "label": "Render",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 442,
+                    "enabled": true,
+                    "label": "Spyrogimp...",
+                    "visible": true
+                  },
+                  {
+                    "id": 443,
+                    "enabled": true,
+                    "label": "Sphere Designer...",
+                    "visible": true
+                  },
+                  {
+                    "id": 444,
+                    "enabled": true,
+                    "label": "Line Nova...",
+                    "visible": true
+                  },
+                  {
+                    "id": 445,
+                    "enabled": true,
+                    "label": "Lava...",
+                    "visible": true
+                  },
+                  {
+                    "id": 446,
+                    "enabled": true,
+                    "label": "Gfig...",
+                    "visible": true
+                  },
+                  {
+                    "id": 447,
+                    "enabled": true,
+                    "label": "Fractal Explorer...",
+                    "visible": true
+                  },
+                  {
+                    "id": 448,
+                    "enabled": true,
+                    "label": "Circuit...",
+                    "visible": true
+                  },
+                  {
+                    "id": 449,
+                    "type": "separator"
+                  },
+                  {
+                    "id": 450,
+                    "enabled": true,
+                    "label": "Pattern",
+                    "children-display": "submenu",
+                    "visible": true,
+                    "submenu": [
+                        {
+                          "id": 451,
+                          "enabled": true,
+                          "label": "Sinus...",
+                          "visible": true
+                        },
+                        {
+                          "id": 452,
+                          "enabled": true,
+                          "label": "Qbist...",
+                          "visible": true
+                        },
+                        {
+                          "id": 453,
+                          "enabled": true,
+                          "label": "Maze...",
+                          "visible": true
+                        },
+                        {
+                          "id": 454,
+                          "enabled": true,
+                          "label": "Jigsaw...",
+                          "visible": true
+                        },
+                        {
+                          "id": 455,
+                          "enabled": true,
+                          "label": "Grid...",
+                          "visible": true
+                        },
+                        {
+                          "id": 456,
+                          "enabled": true,
+                          "label": "Diffraction Patterns...",
+                          "visible": true
+                        },
+                        {
+                          "id": 457,
+                          "enabled": true,
+                          "label": "CML Explorer...",
+                          "visible": true
+                        },
+                        {
+                          "id": 458,
+                          "enabled": true,
+                          "label": "Checkerboard...",
+                          "visible": true
+                        }
+                    ]
+                  },
+                  {
+                    "id": 459,
+                    "enabled": true,
+                    "label": "Nature",
+                    "children-display": "submenu",
+                    "visible": true,
+                    "submenu": [
+                        {
+                          "id": 460,
+                          "enabled": true,
+                          "label": "IFS Fractal...",
+                          "visible": true
+                        },
+                        {
+                          "id": 461,
+                          "enabled": true,
+                          "label": "Flame...",
+                          "visible": true
+                        }
+                    ]
+                  },
+                  {
+                    "id": 462,
+                    "enabled": true,
+                    "label": "Clouds",
+                    "children-display": "submenu",
+                    "visible": true,
+                    "submenu": [
+                        {
+                          "id": 463,
+                          "enabled": true,
+                          "label": "Solid Noise...",
+                          "visible": true
+                        },
+                        {
+                          "id": 464,
+                          "enabled": true,
+                          "label": "Plasma...",
+                          "visible": true
+                        },
+                        {
+                          "id": 465,
+                          "enabled": true,
+                          "label": "Fog...",
+                          "visible": true
+                        },
+                        {
+                          "id": 466,
+                          "enabled": true,
+                          "label": "Difference Clouds...",
+                          "visible": true
+                        }
+                    ]
+                  }
+              ]
+            },
+            {
+              "id": 467,
+              "enabled": true,
+              "label": "Map",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 468,
+                    "enabled": true,
+                    "label": "Warp...",
+                    "visible": true
+                  },
+                  {
+                    "id": 469,
+                    "enabled": true,
+                    "label": "Tile...",
+                    "visible": true
+                  },
+                  {
+                    "id": 470,
+                    "enabled": true,
+                    "label": "Small Tiles...",
+                    "visible": true
+                  },
+                  {
+                    "id": 471,
+                    "enabled": true,
+                    "label": "Paper Tile...",
+                    "visible": true
+                  },
+                  {
+                    "id": 472,
+                    "enabled": true,
+                    "label": "Map Object...",
+                    "visible": true
+                  },
+                  {
+                    "id": 473,
+                    "enabled": true,
+                    "label": "Make Seamless",
+                    "visible": true
+                  },
+                  {
+                    "id": 474,
+                    "enabled": true,
+                    "label": "Illusion...",
+                    "visible": true
+                  },
+                  {
+                    "id": 475,
+                    "enabled": true,
+                    "label": "Fractal Trace...",
+                    "visible": true
+                  },
+                  {
+                    "id": 476,
+                    "enabled": true,
+                    "label": "Displace...",
+                    "visible": true
+                  },
+                  {
+                    "id": 477,
+                    "enabled": true,
+                    "label": "Bump Map...",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 478,
+              "enabled": true,
+              "label": "Decor",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 479,
+                    "enabled": false,
+                    "label": "Stencil Chrome...",
+                    "visible": true
+                  },
+                  {
+                    "id": 480,
+                    "enabled": false,
+                    "label": "Stencil Carve...",
+                    "visible": true
+                  },
+                  {
+                    "id": 481,
+                    "enabled": false,
+                    "label": "Slide...",
+                    "visible": true
+                  },
+                  {
+                    "id": 482,
+                    "enabled": false,
+                    "label": "Round Corners...",
+                    "visible": true
+                  },
+                  {
+                    "id": 483,
+                    "enabled": true,
+                    "label": "Old Photo...",
+                    "visible": true
+                  },
+                  {
+                    "id": 484,
+                    "enabled": true,
+                    "label": "Fuzzy Border...",
+                    "visible": true
+                  },
+                  {
+                    "id": 485,
+                    "enabled": true,
+                    "label": "Coffee Stain...",
+                    "visible": true
+                  },
+                  {
+                    "id": 486,
+                    "enabled": true,
+                    "label": "Add Border...",
+                    "visible": true
+                  },
+                  {
+                    "id": 487,
+                    "enabled": true,
+                    "label": "Add Bevel...",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 488,
+              "enabled": true,
+              "label": "Artistic",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 489,
+                    "enabled": true,
+                    "label": "Weave...",
+                    "visible": true
+                  },
+                  {
+                    "id": 490,
+                    "enabled": true,
+                    "label": "Van Gogh (LIC)...",
+                    "visible": true
+                  },
+                  {
+                    "id": 491,
+                    "enabled": true,
+                    "label": "Softglow...",
+                    "visible": true
+                  },
+                  {
+                    "id": 492,
+                    "enabled": true,
+                    "label": "Predator...",
+                    "visible": true
+                  },
+                  {
+                    "id": 493,
+                    "enabled": true,
+                    "label": "Photocopy...",
+                    "visible": true
+                  },
+                  {
+                    "id": 494,
+                    "enabled": true,
+                    "label": "Oilify...",
+                    "visible": true
+                  },
+                  {
+                    "id": 495,
+                    "enabled": true,
+                    "label": "GIMPressionist...",
+                    "visible": true
+                  },
+                  {
+                    "id": 496,
+                    "enabled": true,
+                    "label": "Cubism...",
+                    "visible": true
+                  },
+                  {
+                    "id": 497,
+                    "enabled": true,
+                    "label": "Clothify...",
+                    "visible": true
+                  },
+                  {
+                    "id": 498,
+                    "enabled": true,
+                    "label": "Cartoon...",
+                    "visible": true
+                  },
+                  {
+                    "id": 499,
+                    "enabled": true,
+                    "label": "Apply Canvas...",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 500,
+              "enabled": true,
+              "label": "Combine",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 501,
+                    "enabled": true,
+                    "label": "Filmstrip...",
+                    "visible": true
+                  },
+                  {
+                    "id": 502,
+                    "enabled": true,
+                    "label": "Depth Merge...",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 503,
+              "enabled": true,
+              "label": "Generic",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 504,
+                    "enabled": true,
+                    "label": "Erode",
+                    "visible": true
+                  },
+                  {
+                    "id": 505,
+                    "enabled": true,
+                    "label": "Dilate",
+                    "visible": true
+                  },
+                  {
+                    "id": 506,
+                    "enabled": true,
+                    "label": "Convolution Matrix...",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 507,
+              "enabled": true,
+              "label": "Edge-Detect",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 508,
+                    "enabled": true,
+                    "label": "Sobel...",
+                    "visible": true
+                  },
+                  {
+                    "id": 509,
+                    "enabled": true,
+                    "label": "Neon...",
+                    "visible": true
+                  },
+                  {
+                    "id": 510,
+                    "enabled": true,
+                    "label": "Laplace",
+                    "visible": true
+                  },
+                  {
+                    "id": 511,
+                    "enabled": true,
+                    "label": "Edge...",
+                    "visible": true
+                  },
+                  {
+                    "id": 512,
+                    "enabled": true,
+                    "label": "Difference of Gaussians...",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 513,
+              "enabled": true,
+              "label": "Noise",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 514,
+                    "enabled": true,
+                    "label": "Spread...",
+                    "visible": true
+                  },
+                  {
+                    "id": 515,
+                    "enabled": true,
+                    "label": "Slur...",
+                    "visible": true
+                  },
+                  {
+                    "id": 516,
+                    "enabled": true,
+                    "label": "RGB Noise...",
+                    "visible": true
+                  },
+                  {
+                    "id": 517,
+                    "enabled": true,
+                    "label": "Pick...",
+                    "visible": true
+                  },
+                  {
+                    "id": 518,
+                    "enabled": true,
+                    "label": "Hurl...",
+                    "visible": true
+                  },
+                  {
+                    "id": 519,
+                    "enabled": true,
+                    "label": "HSV Noise...",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 520,
+              "enabled": true,
+              "label": "Light and Shadow",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 521,
+                    "enabled": true,
+                    "label": "Glass Tile...",
+                    "visible": true
+                  },
+                  {
+                    "id": 522,
+                    "enabled": true,
+                    "label": "Apply Lens...",
+                    "visible": true
+                  },
+                  {
+                    "id": 523,
+                    "type": "separator"
+                  },
+                  {
+                    "id": 524,
+                    "enabled": true,
+                    "label": "Xach-Effect...",
+                    "visible": true
+                  },
+                  {
+                    "id": 525,
+                    "enabled": true,
+                    "label": "Perspective...",
+                    "visible": true
+                  },
+                  {
+                    "id": 526,
+                    "enabled": true,
+                    "label": "Drop Shadow...",
+                    "visible": true
+                  },
+                  {
+                    "id": 527,
+                    "type": "separator"
+                  },
+                  {
+                    "id": 528,
+                    "enabled": true,
+                    "label": "Supernova...",
+                    "visible": true
+                  },
+                  {
+                    "id": 529,
+                    "enabled": true,
+                    "label": "Sparkle...",
+                    "visible": true
+                  },
+                  {
+                    "id": 530,
+                    "enabled": true,
+                    "label": "Lighting Effects...",
+                    "visible": true
+                  },
+                  {
+                    "id": 531,
+                    "enabled": true,
+                    "label": "Lens Flare...",
+                    "visible": true
+                  },
+                  {
+                    "id": 532,
+                    "enabled": true,
+                    "label": "Gradient Flare...",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 533,
+              "enabled": true,
+              "label": "Distorts",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 534,
+                    "enabled": true,
+                    "label": "Wind...",
+                    "visible": true
+                  },
+                  {
+                    "id": 535,
+                    "enabled": true,
+                    "label": "Whirl and Pinch...",
+                    "visible": true
+                  },
+                  {
+                    "id": 536,
+                    "enabled": true,
+                    "label": "Waves...",
+                    "visible": true
+                  },
+                  {
+                    "id": 537,
+                    "enabled": true,
+                    "label": "Video...",
+                    "visible": true
+                  },
+                  {
+                    "id": 538,
+                    "enabled": true,
+                    "label": "Value Propagate...",
+                    "visible": true
+                  },
+                  {
+                    "id": 539,
+                    "enabled": true,
+                    "label": "Shift...",
+                    "visible": true
+                  },
+                  {
+                    "id": 540,
+                    "enabled": true,
+                    "label": "Ripple...",
+                    "visible": true
+                  },
+                  {
+                    "id": 541,
+                    "enabled": true,
+                    "label": "Polar Coordinates...",
+                    "visible": true
+                  },
+                  {
+                    "id": 542,
+                    "enabled": true,
+                    "label": "Pagecurl...",
+                    "visible": true
+                  },
+                  {
+                    "id": 543,
+                    "enabled": true,
+                    "label": "Newsprint...",
+                    "visible": true
+                  },
+                  {
+                    "id": 544,
+                    "enabled": true,
+                    "label": "Mosaic...",
+                    "visible": true
+                  },
+                  {
+                    "id": 545,
+                    "enabled": true,
+                    "label": "Lens Distortion...",
+                    "visible": true
+                  },
+                  {
+                    "id": 546,
+                    "enabled": true,
+                    "label": "IWarp...",
+                    "visible": true
+                  },
+                  {
+                    "id": 547,
+                    "enabled": true,
+                    "label": "Erase Every Other Row...",
+                    "visible": true
+                  },
+                  {
+                    "id": 548,
+                    "enabled": true,
+                    "label": "Engrave...",
+                    "visible": true
+                  },
+                  {
+                    "id": 549,
+                    "enabled": true,
+                    "label": "Emboss...",
+                    "visible": true
+                  },
+                  {
+                    "id": 550,
+                    "enabled": true,
+                    "label": "Curve Bend...",
+                    "visible": true
+                  },
+                  {
+                    "id": 551,
+                    "enabled": true,
+                    "label": "Blinds...",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 552,
+              "enabled": true,
+              "label": "Enhance",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 553,
+                    "enabled": true,
+                    "label": "Unsharp Mask...",
+                    "visible": true
+                  },
+                  {
+                    "id": 554,
+                    "enabled": true,
+                    "label": "Sharpen...",
+                    "visible": true
+                  },
+                  {
+                    "id": 555,
+                    "enabled": true,
+                    "label": "Red Eye Removal...",
+                    "visible": true
+                  },
+                  {
+                    "id": 556,
+                    "enabled": false,
+                    "label": "NL Filter...",
+                    "visible": true
+                  },
+                  {
+                    "id": 557,
+                    "enabled": true,
+                    "label": "Destripe...",
+                    "visible": true
+                  },
+                  {
+                    "id": 558,
+                    "enabled": true,
+                    "label": "Despeckle...",
+                    "visible": true
+                  },
+                  {
+                    "id": 559,
+                    "enabled": true,
+                    "label": "Deinterlace...",
+                    "visible": true
+                  },
+                  {
+                    "id": 560,
+                    "enabled": true,
+                    "label": "Antialias",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 561,
+              "enabled": true,
+              "label": "Blur",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 562,
+                    "enabled": true,
+                    "label": "Tileable Blur...",
+                    "visible": true
+                  },
+                  {
+                    "id": 563,
+                    "enabled": true,
+                    "label": "Selective Gaussian Blur...",
+                    "visible": true
+                  },
+                  {
+                    "id": 564,
+                    "enabled": true,
+                    "label": "Pixelize...",
+                    "visible": true
+                  },
+                  {
+                    "id": 565,
+                    "enabled": true,
+                    "label": "Motion Blur...",
+                    "visible": true
+                  },
+                  {
+                    "id": 566,
+                    "enabled": true,
+                    "label": "Gaussian Blur...",
+                    "visible": true
+                  },
+                  {
+                    "id": 567,
+                    "enabled": true,
+                    "label": "Blur",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 568,
+              "type": "separator"
+            },
+            {
+              "id": 569,
+              "enabled": true,
+              "label": "Reset all Filters",
+              "visible": true
+            },
+            {
+              "id": 570,
+              "shortcut": [["Control", "Shift", "f"]],
+              "enabled": false,
+              "label": "Re-Show Last",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 571,
+                    "enabled": false,
+                    "label": "Empty",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 572,
+              "shortcut": [["Control", "f"]],
+              "enabled": false,
+              "label": "Repeat Last",
+              "visible": true
+            }
+        ]
+      },
+      {
+        "id": 573,
+        "enabled": true,
+        "label": "Windows",
+        "children-display": "submenu",
+        "visible": true,
+        "submenu": [
+            {
+              "id": 574,
+              "shortcut": [["Control", "b"]],
+              "enabled": true,
+              "label": "Toolbox",
+              "visible": true
+            },
+            {
+              "id": 575,
+              "type": "separator"
+            },
+            {
+              "id": 576,
+              "enabled": true,
+              "label": "Dockable Dialogs",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 577,
+                    "enabled": true,
+                    "label": "Error Console",
+                    "visible": true
+                  },
+                  {
+                    "id": 578,
+                    "enabled": true,
+                    "label": "Tools",
+                    "visible": true
+                  },
+                  {
+                    "id": 579,
+                    "enabled": true,
+                    "label": "Templates",
+                    "visible": true
+                  },
+                  {
+                    "id": 580,
+                    "enabled": true,
+                    "label": "Document History",
+                    "visible": true
+                  },
+                  {
+                    "id": 581,
+                    "enabled": true,
+                    "label": "Images",
+                    "visible": true
+                  },
+                  {
+                    "id": 582,
+                    "type": "separator"
+                  },
+                  {
+                    "id": 583,
+                    "enabled": true,
+                    "label": "Buffers",
+                    "visible": true
+                  },
+                  {
+                    "id": 584,
+                    "enabled": true,
+                    "label": "Fonts",
+                    "visible": true
+                  },
+                  {
+                    "id": 585,
+                    "enabled": true,
+                    "label": "Palettes",
+                    "visible": true
+                  },
+                  {
+                    "id": 586,
+                    "shortcut": [["Control", "g"]],
+                    "enabled": true,
+                    "label": "Gradients",
+                    "visible": true
+                  },
+                  {
+                    "id": 587,
+                    "shortcut": [["Control", "Shift", "p"]],
+                    "enabled": true,
+                    "label": "Patterns",
+                    "visible": true
+                  },
+                  {
+                    "id": 588,
+                    "shortcut": [["Control", "Shift", "b"]],
+                    "enabled": true,
+                    "label": "Brushes",
+                    "visible": true
+                  },
+                  {
+                    "id": 589,
+                    "enabled": true,
+                    "label": "Colors",
+                    "visible": true
+                  },
+                  {
+                    "id": 590,
+                    "type": "separator"
+                  },
+                  {
+                    "id": 591,
+                    "enabled": true,
+                    "label": "Sample Points",
+                    "visible": true
+                  },
+                  {
+                    "id": 592,
+                    "enabled": true,
+                    "label": "Pointer",
+                    "visible": true
+                  },
+                  {
+                    "id": 593,
+                    "enabled": true,
+                    "label": "Undo History",
+                    "visible": true
+                  },
+                  {
+                    "id": 594,
+                    "enabled": true,
+                    "label": "Navigation",
+                    "visible": true
+                  },
+                  {
+                    "id": 595,
+                    "enabled": true,
+                    "label": "Selection Editor",
+                    "visible": true
+                  },
+                  {
+                    "id": 596,
+                    "enabled": true,
+                    "label": "Histogram",
+                    "visible": true
+                  },
+                  {
+                    "id": 597,
+                    "enabled": true,
+                    "label": "Colormap",
+                    "visible": true
+                  },
+                  {
+                    "id": 598,
+                    "enabled": true,
+                    "label": "Paths",
+                    "visible": true
+                  },
+                  {
+                    "id": 599,
+                    "enabled": true,
+                    "label": "Channels",
+                    "visible": true
+                  },
+                  {
+                    "id": 600,
+                    "shortcut": [["Control", "l"]],
+                    "enabled": true,
+                    "label": "Layers",
+                    "visible": true
+                  },
+                  {
+                    "id": 601,
+                    "type": "separator"
+                  },
+                  {
+                    "id": 602,
+                    "enabled": true,
+                    "label": "Device Status",
+                    "visible": true
+                  },
+                  {
+                    "id": 603,
+                    "enabled": true,
+                    "label": "Tool Options",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 604,
+              "enabled": true,
+              "label": "Recently Closed Docks",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 605,
+                    "enabled": false,
+                    "label": "Empty",
+                    "visible": true
+                  }
+              ]
+            }
+        ]
+      },
+      {
+        "id": 606,
+        "enabled": true,
+        "label": "Help",
+        "children-display": "submenu",
+        "visible": true,
+        "submenu": [
+            {
+              "id": 607,
+              "enabled": true,
+              "label": "User Manual",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 608,
+                    "enabled": true,
+                    "label": "Working with Digital Camera Photos",
+                    "visible": true
+                  },
+                  {
+                    "id": 609,
+                    "enabled": true,
+                    "label": "Using Paths",
+                    "visible": true
+                  },
+                  {
+                    "id": 610,
+                    "enabled": true,
+                    "label": "Preparing your Images for the Web",
+                    "visible": true
+                  },
+                  {
+                    "id": 611,
+                    "enabled": true,
+                    "label": "How to Use Dialogs",
+                    "visible": true
+                  },
+                  {
+                    "id": 612,
+                    "enabled": true,
+                    "label": "Drawing Simple Objects",
+                    "visible": true
+                  },
+                  {
+                    "id": 613,
+                    "enabled": true,
+                    "label": "Create, Open and Save Files",
+                    "visible": true
+                  },
+                  {
+                    "id": 614,
+                    "enabled": true,
+                    "label": "Basic Concepts",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 615,
+              "enabled": true,
+              "label": "GIMP Online",
+              "children-display": "submenu",
+              "visible": true,
+              "submenu": [
+                  {
+                    "id": 616,
+                    "enabled": true,
+                    "label": "User Manual Web Site",
+                    "visible": true
+                  },
+                  {
+                    "id": 617,
+                    "enabled": true,
+                    "label": "Plug-in Registry",
+                    "visible": true
+                  },
+                  {
+                    "id": 618,
+                    "enabled": true,
+                    "label": "Main Web Site",
+                    "visible": true
+                  },
+                  {
+                    "id": 619,
+                    "enabled": true,
+                    "label": "Developer Web Site",
+                    "visible": true
+                  }
+              ]
+            },
+            {
+              "id": 620,
+              "type": "separator"
+            },
+            {
+              "id": 621,
+              "enabled": true,
+              "label": "Procedure Browser",
+              "visible": true
+            },
+            {
+              "id": 622,
+              "enabled": true,
+              "label": "Plug-In Browser",
+              "visible": true
+            },
+            {
+              "id": 623,
+              "type": "separator"
+            },
+            {
+              "id": 624,
+              "enabled": true,
+              "label": "About",
+              "visible": true
+            },
+            {
+              "id": 625,
+              "enabled": true,
+              "label": "Tip of the Day",
+              "visible": true
+            },
+            {
+              "id": 626,
+              "shortcut": [["Shift", "F1"]],
+              "enabled": true,
+              "label": "Context Help",
+              "visible": true
+            },
+            {
+              "id": 627,
+              "shortcut": [["F1"]],
+              "enabled": true,
+              "label": "Help",
+              "visible": true
+            }
+        ]
+      }
+  ]
+}

=== added file 'tests/test-json-client.c'
--- tests/test-json-client.c	1970-01-01 00:00:00 +0000
+++ tests/test-json-client.c	2010-06-30 16:13:47 +0000
@@ -0,0 +1,75 @@
+/*
+Test to check the json-loader and dbusmenu-dumper
+
+Copyright 2010 Canonical Ltd.
+
+Authors:
+    Ted Gould <ted@xxxxxxxxxxxxx>
+
+This program is free software: you can redistribute it and/or modify it 
+under the terms of the GNU General Public License version 3, as published 
+by the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful, but 
+WITHOUT ANY WARRANTY; without even the implied warranties of 
+MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR 
+PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along 
+with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <glib.h>
+#include <gio/gio.h>
+#include <dbus/dbus-glib.h>
+#include <dbus/dbus-glib-bindings.h>
+#include <dbus/dbus-glib-lowlevel.h>
+
+GMainLoop * mainloop = NULL;
+
+int
+main (int argc, char ** argv)
+{
+	g_type_init();
+	g_debug("Wait for friends");
+
+	GError * error = NULL;
+	DBusGConnection * session_bus = dbus_g_bus_get(DBUS_BUS_SESSION, &error);
+	if (error != NULL) {
+		g_error("Unable to get session bus: %s", error->message);
+		return 1;
+	}   
+
+	DBusGProxy * bus_proxy = dbus_g_proxy_new_for_name(session_bus, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS);
+
+	gboolean has_owner = FALSE;
+	gint owner_count = 0;
+	while (!has_owner && owner_count < 10000) {
+		org_freedesktop_DBus_name_has_owner(bus_proxy, "org.dbusmenu.test", &has_owner, NULL);
+		owner_count++;
+	}
+
+	if (owner_count == 10000) {
+		g_error("Unable to get name owner after 10000 tries");
+		return 1;
+	}
+
+	g_usleep(500000);
+
+	g_debug("Initing");
+
+	gchar * command = g_strdup_printf("%s --dbus-name=org.dbusmenu.test --dbus-object=/org/test", argv[1]);
+	g_debug("Executing: %s", command);
+
+	gchar * output;
+	g_spawn_command_line_sync(command, &output, NULL, NULL, NULL);
+
+	GFile * ofile = g_file_new_for_commandline_arg(argv[2]);
+	if (ofile != NULL) {
+		g_file_replace_contents(ofile, output, g_utf8_strlen(output, -1), NULL, FALSE, 0, NULL, NULL, NULL);
+	}
+
+	g_debug("Exiting");
+
+	return 0;
+}

=== added file 'tests/test-json-server.c'
--- tests/test-json-server.c	1970-01-01 00:00:00 +0000
+++ tests/test-json-server.c	2010-06-29 03:39:59 +0000
@@ -0,0 +1,81 @@
+/*
+Test to check the json-loader and dbusmenu-dumper
+
+Copyright 2010 Canonical Ltd.
+
+Authors:
+    Ted Gould <ted@xxxxxxxxxxxxx>
+
+This program is free software: you can redistribute it and/or modify it 
+under the terms of the GNU General Public License version 3, as published 
+by the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful, but 
+WITHOUT ANY WARRANTY; without even the implied warranties of 
+MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR 
+PURPOSE.  See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along 
+with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <glib.h>
+
+#include <dbus/dbus.h>
+#include <dbus/dbus-glib.h>
+#include <dbus/dbus-glib-lowlevel.h>
+#include <dbus/dbus-glib-bindings.h>
+
+#include <libdbusmenu-glib/server.h>
+#include <libdbusmenu-glib/menuitem.h>
+
+#include "json-loader.h"
+
+static GMainLoop * mainloop = NULL;
+
+static gboolean
+timer_func (gpointer data)
+{
+	g_main_loop_quit(mainloop);
+	return FALSE;
+}
+
+int
+main (int argc, char ** argv)
+{
+	GError * error = NULL;
+
+	g_type_init();
+
+	DBusGConnection * connection = dbus_g_bus_get(DBUS_BUS_SESSION, NULL);
+	g_debug("DBus ID: %s", dbus_connection_get_server_id(dbus_g_connection_get_connection(dbus_g_bus_get(DBUS_BUS_SESSION, NULL))));
+
+	DBusGProxy * bus_proxy = dbus_g_proxy_new_for_name(connection, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS);
+	guint nameret = 0;
+
+	if (!org_freedesktop_DBus_request_name(bus_proxy, "org.dbusmenu.test", 0, &nameret, &error)) {
+		g_error("Unable to call to request name");
+		return 1;
+	}
+
+	if (nameret != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) {
+		g_error("Unable to get name");
+		return 1;
+	}
+
+	DbusmenuServer * server = dbusmenu_server_new("/org/test");
+
+	DbusmenuMenuitem * root = dbusmenu_json_build_from_file(argv[1]);
+	g_return_val_if_fail(root!=NULL, 1);
+
+	dbusmenu_server_set_root(server, root);
+
+	g_timeout_add(10000, timer_func, NULL);
+
+	mainloop = g_main_loop_new(NULL, FALSE);
+	g_main_loop_run(mainloop);
+
+	g_debug("Quiting");
+
+	return 0;
+}

=== modified file 'tools/dbusmenu-dumper.c'
--- tools/dbusmenu-dumper.c	2010-06-28 17:55:51 +0000
+++ tools/dbusmenu-dumper.c	2010-06-28 23:04:06 +0000
@@ -116,6 +116,12 @@
 		str = collection_dumper(value, depth);
 	} else if (G_VALUE_TYPE(value) == G_TYPE_STRV) {
 		str = strv_dumper(value);
+	} else if (G_VALUE_TYPE(value) == G_TYPE_BOOLEAN) {
+		if (g_value_get_boolean(value)) {
+			str = g_strdup("true");
+		} else {
+			str = g_strdup("false");
+		}
 	} else {
 		str = g_strdup_value_contents(value);
 	}