Преглед изворни кода

tools: add templates list to New Project panel

Daniele Bartolini пре 5 година
родитељ
комит
85558fbbfc

+ 4 - 0
docs/changelog.rst

@@ -9,6 +9,10 @@ Changelog
 
 * Removed support for multiple components per Unit.
 
+**Tools**
+
+* Added the ability to select from a number of templates (samples) when creating new projects
+
 **Lua API**
 
 * All component managers accessors have been uniformed to accept a component instance ID (instead of a UnitId or both):

+ 24 - 0
tools/level_editor/level_editor.vala

@@ -446,6 +446,7 @@ public class LevelEditorApplication : Gtk.Application
 
 		_user = new User();
 		_panel_new_project = new PanelNewProject(this, _user, _project);
+		_panel_new_project.fill_templates_list(_templates_dir.get_path());
 
 		_panel_welcome = new PanelWelcome();
 		_panel_projects_list = new PanelProjectsList(this, _user);
@@ -2076,6 +2077,7 @@ public class LevelEditorApplication : Gtk.Application
 
 // Global paths
 public static GLib.File _toolchain_dir;
+public static GLib.File _templates_dir;
 public static GLib.File _config_dir;
 public static GLib.File _logs_dir;
 public static GLib.File _documents_dir;
@@ -2210,6 +2212,28 @@ public static int main(string[] args)
 		return 1;
 	}
 
+	// Find templates path, more desirable paths come first.
+	string templates_path[] =
+	{
+		".",
+		"../..",
+		"../../.."
+	};
+	for (ii = 0; ii < templates_path.length; ++ii)
+	{
+		string path = Path.build_filename(templates_path[ii], "samples");
+		if (GLib.FileUtils.test(path, FileTest.EXISTS) && GLib.FileUtils.test(path, FileTest.IS_DIR))
+		{
+			_templates_dir = File.new_for_path(path);
+			break;
+		}
+	}
+	if (ii == templates_path.length)
+	{
+		loge("Unable to find the templates directory");
+		return 1;
+	}
+
 	LevelEditorApplication app = new LevelEditorApplication();
 	return app.run(args);
 }

+ 72 - 1
tools/level_editor/panel_new_project.vala

@@ -29,6 +29,9 @@ public class PanelNewProject : Gtk.Viewport
 	[GtkChild]
 	Gtk.FileChooserButton _file_chooser_button_location;
 
+	[GtkChild]
+	ComboBoxMap _combo_box_map_template;
+
 	[GtkChild]
 	Gtk.Label _label_message;
 
@@ -41,6 +44,9 @@ public class PanelNewProject : Gtk.Viewport
 
 		_file_chooser_button_location.set_current_folder(_documents_dir.get_path());
 
+		_combo_box_map_template.append("", "None");
+		_combo_box_map_template.value = "";
+
 		_button_back.clicked.connect(() => {
 			_application.show_panel("panel_welcome", StackTransitionType.SLIDE_UP);
 		});
@@ -76,10 +82,75 @@ public class PanelNewProject : Gtk.Viewport
 
 			_user.add_recent_project(source_dir, _entry_name.text);
 			_application.show_panel("main_vbox");
-			_project.create_initial_files(source_dir);
+
+			if (_combo_box_map_template.value == "")
+				_project.create_initial_files(source_dir);
+			else
+				copy_template_to_source_dir(source_dir, _combo_box_map_template.value);
+
 			_application.restart_backend(source_dir, LEVEL_NONE);
 		});
 	}
+
+	public void fill_templates_list(string path)
+	{
+		GLib.File file = GLib.File.new_for_path(path);
+		try
+		{
+			FileEnumerator enumerator = file.enumerate_children("standard::*"
+				, FileQueryInfoFlags.NOFOLLOW_SYMLINKS
+				);
+			for (GLib.FileInfo? info = enumerator.next_file(); info != null ; info = enumerator.next_file())
+			{
+				GLib.File source_dir = GLib.File.new_for_path(GLib.Path.build_filename(path, info.get_name()));
+				_combo_box_map_template.append(source_dir.get_path(), info.get_name());
+			}
+		}
+		catch (GLib.Error e)
+		{
+			loge(e.message);
+		}
+	}
+
+	public void copy_recursive(GLib.File dst, GLib.File src, GLib.FileCopyFlags flags = GLib.FileCopyFlags.NONE)
+	{
+		try
+		{
+			GLib.FileType src_type = src.query_file_type(GLib.FileQueryInfoFlags.NONE);
+			if (src_type == GLib.FileType.DIRECTORY)
+			{
+				if (dst.query_exists() == false)
+					dst.make_directory();
+				src.copy_attributes(dst, flags);
+
+				string dst_path = dst.get_path();
+				string src_path = src.get_path();
+				GLib.FileEnumerator enum = src.enumerate_children(GLib.FileAttribute.STANDARD_NAME, GLib.FileQueryInfoFlags.NONE);
+				for (GLib.FileInfo? info = enum.next_file(); info != null; info = enum.next_file())
+				{
+					copy_recursive(GLib.File.new_for_path(GLib.Path.build_filename(dst_path, info.get_name()))
+						, GLib.File.new_for_path(GLib.Path.build_filename(src_path, info.get_name()))
+						, flags
+						);
+				}
+			}
+			else if (src_type == GLib.FileType.REGULAR)
+			{
+				src.copy(dst, flags);
+			}
+		}
+		catch (Error e)
+		{
+			loge(e.message);
+		}
+	}
+
+	public void copy_template_to_source_dir(string source_dir, string template_dir)
+	{
+		GLib.File dst = GLib.File.new_for_path(source_dir);
+		GLib.File src = GLib.File.new_for_path(template_dir);
+		copy_recursive(dst, src);
+	}
 }
 
 }

+ 236 - 230
tools/level_editor/resources/gresources.c

@@ -7,7 +7,7 @@
 #endif
 
 #ifdef _MSC_VER
-static const SECTION union { const guint8 data[45942]; const double alignment; void * const ptr;}  gresources_resource_data = { {
+static const SECTION union { const guint8 data[45990]; const double alignment; void * const ptr;}  gresources_resource_data = { {
   0107, 0126, 0141, 0162, 0151, 0141, 0156, 0164, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 
   0030, 0000, 0000, 0000, 0140, 0005, 0000, 0000, 0000, 0000, 0000, 0050, 0060, 0000, 0000, 0000, 
   0000, 0000, 0000, 0000, 0003, 0000, 0000, 0000, 0003, 0000, 0000, 0000, 0003, 0000, 0000, 0000, 
@@ -32,68 +32,68 @@ static const SECTION union { const guint8 data[45942]; const double alignment; v
   0010, 0011, 0000, 0000, 0310, 0011, 0000, 0000, 0130, 0370, 0316, 0366, 0040, 0000, 0000, 0000, 
   0310, 0011, 0000, 0000, 0016, 0000, 0166, 0000, 0330, 0011, 0000, 0000, 0263, 0012, 0000, 0000, 
   0230, 0074, 0133, 0021, 0034, 0000, 0000, 0000, 0263, 0012, 0000, 0000, 0024, 0000, 0166, 0000, 
-  0310, 0012, 0000, 0000, 0350, 0015, 0000, 0000, 0270, 0066, 0255, 0035, 0040, 0000, 0000, 0000, 
-  0350, 0015, 0000, 0000, 0020, 0000, 0166, 0000, 0370, 0015, 0000, 0000, 0001, 0020, 0000, 0000, 
-  0231, 0360, 0240, 0310, 0043, 0000, 0000, 0000, 0001, 0020, 0000, 0000, 0010, 0000, 0166, 0000, 
-  0020, 0020, 0000, 0000, 0217, 0025, 0000, 0000, 0252, 0154, 0124, 0346, 0034, 0000, 0000, 0000, 
-  0217, 0025, 0000, 0000, 0025, 0000, 0166, 0000, 0250, 0025, 0000, 0000, 0103, 0032, 0000, 0000, 
-  0233, 0167, 0147, 0330, 0040, 0000, 0000, 0000, 0103, 0032, 0000, 0000, 0021, 0000, 0166, 0000, 
-  0130, 0032, 0000, 0000, 0173, 0034, 0000, 0000, 0074, 0102, 0276, 0112, 0034, 0000, 0000, 0000, 
-  0173, 0034, 0000, 0000, 0012, 0000, 0166, 0000, 0210, 0034, 0000, 0000, 0011, 0037, 0000, 0000, 
-  0017, 0004, 0200, 0333, 0032, 0000, 0000, 0000, 0011, 0037, 0000, 0000, 0005, 0000, 0114, 0000, 
-  0020, 0037, 0000, 0000, 0024, 0037, 0000, 0000, 0020, 0207, 0145, 0265, 0041, 0000, 0000, 0000, 
-  0024, 0037, 0000, 0000, 0012, 0000, 0166, 0000, 0040, 0037, 0000, 0000, 0241, 0043, 0000, 0000, 
-  0220, 0356, 0057, 0304, 0051, 0000, 0000, 0000, 0241, 0043, 0000, 0000, 0006, 0000, 0114, 0000, 
-  0250, 0043, 0000, 0000, 0260, 0043, 0000, 0000, 0020, 0043, 0007, 0242, 0040, 0000, 0000, 0000, 
-  0260, 0043, 0000, 0000, 0015, 0000, 0166, 0000, 0300, 0043, 0000, 0000, 0173, 0044, 0000, 0000, 
-  0062, 0213, 0104, 0064, 0022, 0000, 0000, 0000, 0173, 0044, 0000, 0000, 0012, 0000, 0166, 0000, 
-  0210, 0044, 0000, 0000, 0147, 0047, 0000, 0000, 0223, 0146, 0011, 0064, 0040, 0000, 0000, 0000, 
-  0147, 0047, 0000, 0000, 0016, 0000, 0166, 0000, 0170, 0047, 0000, 0000, 0165, 0050, 0000, 0000, 
-  0123, 0047, 0126, 0074, 0016, 0000, 0000, 0000, 0165, 0050, 0000, 0000, 0005, 0000, 0114, 0000, 
-  0174, 0050, 0000, 0000, 0200, 0050, 0000, 0000, 0324, 0265, 0002, 0000, 0377, 0377, 0377, 0377, 
-  0200, 0050, 0000, 0000, 0001, 0000, 0114, 0000, 0204, 0050, 0000, 0000, 0210, 0050, 0000, 0000, 
-  0266, 0235, 0265, 0317, 0051, 0000, 0000, 0000, 0210, 0050, 0000, 0000, 0006, 0000, 0114, 0000, 
-  0220, 0050, 0000, 0000, 0224, 0050, 0000, 0000, 0030, 0024, 0046, 0107, 0040, 0000, 0000, 0000, 
-  0224, 0050, 0000, 0000, 0020, 0000, 0166, 0000, 0250, 0050, 0000, 0000, 0046, 0052, 0000, 0000, 
-  0230, 0371, 0361, 0261, 0027, 0000, 0000, 0000, 0046, 0052, 0000, 0000, 0012, 0000, 0166, 0000, 
-  0060, 0052, 0000, 0000, 0231, 0070, 0000, 0000, 0071, 0076, 0145, 0322, 0024, 0000, 0000, 0000, 
-  0231, 0070, 0000, 0000, 0005, 0000, 0114, 0000, 0240, 0070, 0000, 0000, 0244, 0070, 0000, 0000, 
-  0312, 0145, 0174, 0315, 0040, 0000, 0000, 0000, 0244, 0070, 0000, 0000, 0023, 0000, 0166, 0000, 
-  0270, 0070, 0000, 0000, 0232, 0071, 0000, 0000, 0033, 0017, 0005, 0100, 0045, 0000, 0000, 0000, 
-  0232, 0071, 0000, 0000, 0005, 0000, 0114, 0000, 0240, 0071, 0000, 0000, 0244, 0071, 0000, 0000, 
-  0314, 0345, 0221, 0310, 0051, 0000, 0000, 0000, 0244, 0071, 0000, 0000, 0006, 0000, 0114, 0000, 
-  0254, 0071, 0000, 0000, 0260, 0071, 0000, 0000, 0115, 0055, 0050, 0076, 0040, 0000, 0000, 0000, 
-  0260, 0071, 0000, 0000, 0016, 0000, 0166, 0000, 0300, 0071, 0000, 0000, 0214, 0072, 0000, 0000, 
-  0275, 0323, 0130, 0261, 0002, 0000, 0000, 0000, 0214, 0072, 0000, 0000, 0003, 0000, 0114, 0000, 
-  0220, 0072, 0000, 0000, 0240, 0072, 0000, 0000, 0335, 0362, 0143, 0037, 0034, 0000, 0000, 0000, 
-  0240, 0072, 0000, 0000, 0026, 0000, 0166, 0000, 0270, 0072, 0000, 0000, 0235, 0075, 0000, 0000, 
-  0137, 0074, 0322, 0266, 0052, 0000, 0000, 0000, 0235, 0075, 0000, 0000, 0005, 0000, 0114, 0000, 
-  0244, 0075, 0000, 0000, 0250, 0075, 0000, 0000, 0137, 0054, 0245, 0047, 0040, 0000, 0000, 0000, 
-  0250, 0075, 0000, 0000, 0020, 0000, 0166, 0000, 0270, 0075, 0000, 0000, 0346, 0076, 0000, 0000, 
-  0120, 0335, 0065, 0032, 0016, 0000, 0000, 0000, 0346, 0076, 0000, 0000, 0010, 0000, 0114, 0000, 
-  0360, 0076, 0000, 0000, 0054, 0077, 0000, 0000, 0261, 0025, 0353, 0013, 0056, 0000, 0000, 0000, 
-  0054, 0077, 0000, 0000, 0005, 0000, 0114, 0000, 0064, 0077, 0000, 0000, 0070, 0077, 0000, 0000, 
-  0343, 0242, 0030, 0047, 0050, 0000, 0000, 0000, 0070, 0077, 0000, 0000, 0006, 0000, 0114, 0000, 
-  0100, 0077, 0000, 0000, 0104, 0077, 0000, 0000, 0305, 0324, 0153, 0334, 0002, 0000, 0000, 0000, 
-  0104, 0077, 0000, 0000, 0004, 0000, 0114, 0000, 0110, 0077, 0000, 0000, 0114, 0077, 0000, 0000, 
-  0126, 0253, 0054, 0130, 0040, 0000, 0000, 0000, 0114, 0077, 0000, 0000, 0016, 0000, 0166, 0000, 
-  0140, 0077, 0000, 0000, 0033, 0101, 0000, 0000, 0130, 0331, 0264, 0313, 0051, 0000, 0000, 0000, 
-  0033, 0101, 0000, 0000, 0010, 0000, 0114, 0000, 0044, 0101, 0000, 0000, 0050, 0101, 0000, 0000, 
-  0010, 0240, 0151, 0334, 0002, 0000, 0000, 0000, 0050, 0101, 0000, 0000, 0004, 0000, 0114, 0000, 
-  0054, 0101, 0000, 0000, 0060, 0101, 0000, 0000, 0372, 0314, 0155, 0001, 0031, 0000, 0000, 0000, 
-  0060, 0101, 0000, 0000, 0012, 0000, 0166, 0000, 0100, 0101, 0000, 0000, 0030, 0142, 0000, 0000, 
-  0113, 0120, 0220, 0013, 0023, 0000, 0000, 0000, 0030, 0142, 0000, 0000, 0004, 0000, 0114, 0000, 
-  0034, 0142, 0000, 0000, 0040, 0142, 0000, 0000, 0073, 0027, 0056, 0252, 0002, 0000, 0000, 0000, 
-  0040, 0142, 0000, 0000, 0006, 0000, 0114, 0000, 0050, 0142, 0000, 0000, 0100, 0142, 0000, 0000, 
-  0034, 0254, 0073, 0232, 0051, 0000, 0000, 0000, 0100, 0142, 0000, 0000, 0010, 0000, 0114, 0000, 
-  0110, 0142, 0000, 0000, 0114, 0142, 0000, 0000, 0135, 0177, 0153, 0060, 0040, 0000, 0000, 0000, 
-  0114, 0142, 0000, 0000, 0017, 0000, 0166, 0000, 0140, 0142, 0000, 0000, 0147, 0144, 0000, 0000, 
-  0076, 0137, 0367, 0324, 0036, 0000, 0000, 0000, 0147, 0144, 0000, 0000, 0012, 0000, 0166, 0000, 
-  0170, 0144, 0000, 0000, 0365, 0253, 0000, 0000, 0356, 0202, 0206, 0066, 0014, 0000, 0000, 0000, 
-  0365, 0253, 0000, 0000, 0012, 0000, 0166, 0000, 0000, 0254, 0000, 0000, 0134, 0262, 0000, 0000, 
-  0056, 0352, 0140, 0306, 0051, 0000, 0000, 0000, 0134, 0262, 0000, 0000, 0006, 0000, 0114, 0000, 
-  0144, 0262, 0000, 0000, 0150, 0262, 0000, 0000, 0137, 0254, 0016, 0272, 0040, 0000, 0000, 0000, 
-  0150, 0262, 0000, 0000, 0014, 0000, 0166, 0000, 0170, 0262, 0000, 0000, 0165, 0263, 0000, 0000, 
+  0310, 0012, 0000, 0000, 0021, 0016, 0000, 0000, 0270, 0066, 0255, 0035, 0040, 0000, 0000, 0000, 
+  0021, 0016, 0000, 0000, 0020, 0000, 0166, 0000, 0050, 0016, 0000, 0000, 0061, 0020, 0000, 0000, 
+  0231, 0360, 0240, 0310, 0043, 0000, 0000, 0000, 0061, 0020, 0000, 0000, 0010, 0000, 0166, 0000, 
+  0100, 0020, 0000, 0000, 0277, 0025, 0000, 0000, 0252, 0154, 0124, 0346, 0034, 0000, 0000, 0000, 
+  0277, 0025, 0000, 0000, 0025, 0000, 0166, 0000, 0330, 0025, 0000, 0000, 0163, 0032, 0000, 0000, 
+  0233, 0167, 0147, 0330, 0040, 0000, 0000, 0000, 0163, 0032, 0000, 0000, 0021, 0000, 0166, 0000, 
+  0210, 0032, 0000, 0000, 0253, 0034, 0000, 0000, 0074, 0102, 0276, 0112, 0034, 0000, 0000, 0000, 
+  0253, 0034, 0000, 0000, 0012, 0000, 0166, 0000, 0270, 0034, 0000, 0000, 0071, 0037, 0000, 0000, 
+  0017, 0004, 0200, 0333, 0032, 0000, 0000, 0000, 0071, 0037, 0000, 0000, 0005, 0000, 0114, 0000, 
+  0100, 0037, 0000, 0000, 0104, 0037, 0000, 0000, 0020, 0207, 0145, 0265, 0041, 0000, 0000, 0000, 
+  0104, 0037, 0000, 0000, 0012, 0000, 0166, 0000, 0120, 0037, 0000, 0000, 0321, 0043, 0000, 0000, 
+  0220, 0356, 0057, 0304, 0051, 0000, 0000, 0000, 0321, 0043, 0000, 0000, 0006, 0000, 0114, 0000, 
+  0330, 0043, 0000, 0000, 0340, 0043, 0000, 0000, 0020, 0043, 0007, 0242, 0040, 0000, 0000, 0000, 
+  0340, 0043, 0000, 0000, 0015, 0000, 0166, 0000, 0360, 0043, 0000, 0000, 0253, 0044, 0000, 0000, 
+  0062, 0213, 0104, 0064, 0022, 0000, 0000, 0000, 0253, 0044, 0000, 0000, 0012, 0000, 0166, 0000, 
+  0270, 0044, 0000, 0000, 0227, 0047, 0000, 0000, 0223, 0146, 0011, 0064, 0040, 0000, 0000, 0000, 
+  0227, 0047, 0000, 0000, 0016, 0000, 0166, 0000, 0250, 0047, 0000, 0000, 0245, 0050, 0000, 0000, 
+  0123, 0047, 0126, 0074, 0016, 0000, 0000, 0000, 0245, 0050, 0000, 0000, 0005, 0000, 0114, 0000, 
+  0254, 0050, 0000, 0000, 0260, 0050, 0000, 0000, 0324, 0265, 0002, 0000, 0377, 0377, 0377, 0377, 
+  0260, 0050, 0000, 0000, 0001, 0000, 0114, 0000, 0264, 0050, 0000, 0000, 0270, 0050, 0000, 0000, 
+  0266, 0235, 0265, 0317, 0051, 0000, 0000, 0000, 0270, 0050, 0000, 0000, 0006, 0000, 0114, 0000, 
+  0300, 0050, 0000, 0000, 0304, 0050, 0000, 0000, 0030, 0024, 0046, 0107, 0040, 0000, 0000, 0000, 
+  0304, 0050, 0000, 0000, 0020, 0000, 0166, 0000, 0330, 0050, 0000, 0000, 0126, 0052, 0000, 0000, 
+  0230, 0371, 0361, 0261, 0027, 0000, 0000, 0000, 0126, 0052, 0000, 0000, 0012, 0000, 0166, 0000, 
+  0140, 0052, 0000, 0000, 0311, 0070, 0000, 0000, 0071, 0076, 0145, 0322, 0024, 0000, 0000, 0000, 
+  0311, 0070, 0000, 0000, 0005, 0000, 0114, 0000, 0320, 0070, 0000, 0000, 0324, 0070, 0000, 0000, 
+  0312, 0145, 0174, 0315, 0040, 0000, 0000, 0000, 0324, 0070, 0000, 0000, 0023, 0000, 0166, 0000, 
+  0350, 0070, 0000, 0000, 0312, 0071, 0000, 0000, 0033, 0017, 0005, 0100, 0045, 0000, 0000, 0000, 
+  0312, 0071, 0000, 0000, 0005, 0000, 0114, 0000, 0320, 0071, 0000, 0000, 0324, 0071, 0000, 0000, 
+  0314, 0345, 0221, 0310, 0051, 0000, 0000, 0000, 0324, 0071, 0000, 0000, 0006, 0000, 0114, 0000, 
+  0334, 0071, 0000, 0000, 0340, 0071, 0000, 0000, 0115, 0055, 0050, 0076, 0040, 0000, 0000, 0000, 
+  0340, 0071, 0000, 0000, 0016, 0000, 0166, 0000, 0360, 0071, 0000, 0000, 0274, 0072, 0000, 0000, 
+  0275, 0323, 0130, 0261, 0002, 0000, 0000, 0000, 0274, 0072, 0000, 0000, 0003, 0000, 0114, 0000, 
+  0300, 0072, 0000, 0000, 0320, 0072, 0000, 0000, 0335, 0362, 0143, 0037, 0034, 0000, 0000, 0000, 
+  0320, 0072, 0000, 0000, 0026, 0000, 0166, 0000, 0350, 0072, 0000, 0000, 0315, 0075, 0000, 0000, 
+  0137, 0074, 0322, 0266, 0052, 0000, 0000, 0000, 0315, 0075, 0000, 0000, 0005, 0000, 0114, 0000, 
+  0324, 0075, 0000, 0000, 0330, 0075, 0000, 0000, 0137, 0054, 0245, 0047, 0040, 0000, 0000, 0000, 
+  0330, 0075, 0000, 0000, 0020, 0000, 0166, 0000, 0350, 0075, 0000, 0000, 0026, 0077, 0000, 0000, 
+  0120, 0335, 0065, 0032, 0016, 0000, 0000, 0000, 0026, 0077, 0000, 0000, 0010, 0000, 0114, 0000, 
+  0040, 0077, 0000, 0000, 0134, 0077, 0000, 0000, 0261, 0025, 0353, 0013, 0056, 0000, 0000, 0000, 
+  0134, 0077, 0000, 0000, 0005, 0000, 0114, 0000, 0144, 0077, 0000, 0000, 0150, 0077, 0000, 0000, 
+  0343, 0242, 0030, 0047, 0050, 0000, 0000, 0000, 0150, 0077, 0000, 0000, 0006, 0000, 0114, 0000, 
+  0160, 0077, 0000, 0000, 0164, 0077, 0000, 0000, 0305, 0324, 0153, 0334, 0002, 0000, 0000, 0000, 
+  0164, 0077, 0000, 0000, 0004, 0000, 0114, 0000, 0170, 0077, 0000, 0000, 0174, 0077, 0000, 0000, 
+  0126, 0253, 0054, 0130, 0040, 0000, 0000, 0000, 0174, 0077, 0000, 0000, 0016, 0000, 0166, 0000, 
+  0220, 0077, 0000, 0000, 0113, 0101, 0000, 0000, 0130, 0331, 0264, 0313, 0051, 0000, 0000, 0000, 
+  0113, 0101, 0000, 0000, 0010, 0000, 0114, 0000, 0124, 0101, 0000, 0000, 0130, 0101, 0000, 0000, 
+  0010, 0240, 0151, 0334, 0002, 0000, 0000, 0000, 0130, 0101, 0000, 0000, 0004, 0000, 0114, 0000, 
+  0134, 0101, 0000, 0000, 0140, 0101, 0000, 0000, 0372, 0314, 0155, 0001, 0031, 0000, 0000, 0000, 
+  0140, 0101, 0000, 0000, 0012, 0000, 0166, 0000, 0160, 0101, 0000, 0000, 0110, 0142, 0000, 0000, 
+  0113, 0120, 0220, 0013, 0023, 0000, 0000, 0000, 0110, 0142, 0000, 0000, 0004, 0000, 0114, 0000, 
+  0114, 0142, 0000, 0000, 0120, 0142, 0000, 0000, 0073, 0027, 0056, 0252, 0002, 0000, 0000, 0000, 
+  0120, 0142, 0000, 0000, 0006, 0000, 0114, 0000, 0130, 0142, 0000, 0000, 0160, 0142, 0000, 0000, 
+  0034, 0254, 0073, 0232, 0051, 0000, 0000, 0000, 0160, 0142, 0000, 0000, 0010, 0000, 0114, 0000, 
+  0170, 0142, 0000, 0000, 0174, 0142, 0000, 0000, 0135, 0177, 0153, 0060, 0040, 0000, 0000, 0000, 
+  0174, 0142, 0000, 0000, 0017, 0000, 0166, 0000, 0220, 0142, 0000, 0000, 0227, 0144, 0000, 0000, 
+  0076, 0137, 0367, 0324, 0036, 0000, 0000, 0000, 0227, 0144, 0000, 0000, 0012, 0000, 0166, 0000, 
+  0250, 0144, 0000, 0000, 0045, 0254, 0000, 0000, 0356, 0202, 0206, 0066, 0014, 0000, 0000, 0000, 
+  0045, 0254, 0000, 0000, 0012, 0000, 0166, 0000, 0060, 0254, 0000, 0000, 0214, 0262, 0000, 0000, 
+  0056, 0352, 0140, 0306, 0051, 0000, 0000, 0000, 0214, 0262, 0000, 0000, 0006, 0000, 0114, 0000, 
+  0224, 0262, 0000, 0000, 0230, 0262, 0000, 0000, 0137, 0254, 0016, 0272, 0040, 0000, 0000, 0000, 
+  0230, 0262, 0000, 0000, 0014, 0000, 0166, 0000, 0250, 0262, 0000, 0000, 0245, 0263, 0000, 0000, 
   0141, 0170, 0151, 0163, 0055, 0154, 0157, 0143, 0141, 0154, 0056, 0160, 0156, 0147, 0000, 0000, 
   0266, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0211, 0120, 0116, 0107, 0015, 0012, 0032, 0012, 
   0000, 0000, 0000, 0015, 0111, 0110, 0104, 0122, 0000, 0000, 0000, 0020, 0000, 0000, 0000, 0020, 
@@ -180,58 +180,61 @@ static const SECTION union { const guint8 data[45942]; const double alignment; v
   0072, 0041, 0027, 0014, 0074, 0000, 0000, 0017, 0026, 0041, 0003, 0376, 0206, 0370, 0340, 0000, 
   0000, 0000, 0000, 0111, 0105, 0116, 0104, 0256, 0102, 0140, 0202, 0000, 0000, 0050, 0165, 0165, 
   0141, 0171, 0051, 0160, 0141, 0156, 0145, 0154, 0137, 0156, 0145, 0167, 0137, 0160, 0162, 0157, 
-  0152, 0145, 0143, 0164, 0056, 0165, 0151, 0000, 0242, 0022, 0000, 0000, 0001, 0000, 0000, 0000, 
-  0170, 0332, 0325, 0130, 0115, 0157, 0243, 0060, 0020, 0275, 0367, 0127, 0260, 0276, 0256, 0010, 
-  0045, 0321, 0126, 0075, 0000, 0225, 0032, 0265, 0275, 0124, 0253, 0036, 0272, 0173, 0105, 0306, 
-  0114, 0300, 0255, 0261, 0131, 0333, 0344, 0343, 0337, 0357, 0100, 0110, 0233, 0257, 0206, 0064, 
-  0152, 0322, 0366, 0024, 0202, 0237, 0075, 0343, 0067, 0157, 0306, 0143, 0202, 0253, 0151, 0041, 
-  0234, 0061, 0150, 0303, 0225, 0014, 0211, 0337, 0073, 0047, 0016, 0110, 0246, 0122, 0056, 0263, 
-  0220, 0374, 0171, 0274, 0165, 0057, 0311, 0125, 0164, 0026, 0374, 0160, 0135, 0347, 0016, 0044, 
-  0150, 0152, 0041, 0165, 0046, 0334, 0346, 0116, 0046, 0150, 0012, 0316, 0240, 0067, 0270, 0354, 
-  0371, 0216, 0353, 0042, 0210, 0113, 0013, 0172, 0104, 0031, 0104, 0201, 0206, 0177, 0025, 0327, 
-  0140, 0034, 0301, 0223, 0220, 0144, 0366, 0371, 0047, 0171, 0265, 0062, 0350, 0371, 0027, 0304, 
-  0213, 0002, 0013, 0105, 0051, 0160, 0101, 0207, 0011, 0152, 0114, 0110, 0206, 0132, 0115, 0344, 
-  0003, 0225, 0040, 0176, 0303, 0344, 0101, 0253, 0047, 0140, 0226, 0070, 0045, 0325, 0040, 0155, 
-  0110, 0356, 0354, 0363, 0137, 0016, 0223, 0122, 0151, 0113, 0242, 0240, 0324, 0252, 0004, 0155, 
-  0147, 0216, 0244, 0005, 0204, 0144, 0314, 0015, 0117, 0004, 0220, 0350, 0121, 0127, 0020, 0170, 
-  0213, 0321, 0015, 0034, 0243, 0322, 0035, 0051, 0126, 0031, 0022, 0335, 0122, 0141, 0126, 0240, 
-  0054, 0347, 0042, 0215, 0002, 0225, 0324, 0166, 0127, 0174, 0032, 0012, 0132, 0224, 0047, 0064, 
-  0212, 0133, 0275, 0126, 0123, 0342, 0360, 0064, 0044, 0211, 0232, 0306, 0022, 0046, 0161, 0331, 
-  0362, 0161, 0024, 0057, 0326, 0240, 0005, 0325, 0031, 0227, 0256, 0261, 0264, 0346, 0332, 0357, 
-  0167, 0103, 0101, 0246, 0373, 0001, 0255, 0102, 0042, 0007, 0173, 0000, 0023, 0145, 0255, 0052, 
-  0072, 0260, 0112, 0163, 0324, 0006, 0265, 0050, 0053, 0022, 0241, 0276, 0054, 0147, 0124, 0354, 
-  0300, 0233, 0222, 0062, 0124, 0366, 0272, 0253, 0157, 0005, 0341, 0236, 0046, 0040, 0116, 0302, 
-  0270, 0150, 0054, 0071, 0126, 0123, 0151, 0060, 0045, 0050, 0056, 0037, 0222, 0031, 0340, 0114, 
-  0114, 0005, 0247, 0315, 0205, 0035, 0363, 0247, 0124, 0360, 0014, 0071, 0070, 0137, 0306, 0120, 
-  0153, 0065, 0117, 0052, 0013, 0146, 0351, 0271, 0235, 0060, 0001, 0236, 0345, 0230, 0135, 0143, 
-  0052, 0052, 0250, 0125, 0046, 0322, 0072, 0045, 0327, 0141, 0006, 0371, 0204, 0027, 0224, 0337, 
-  0373, 0125, 0203, 0274, 0345, 0205, 0275, 0071, 0153, 0350, 0021, 0145, 0317, 0310, 0355, 0206, 
-  0153, 0060, 0055, 0151, 0255, 0216, 0056, 0012, 0106, 0134, 0210, 0116, 0112, 0113, 0145, 0370, 
-  0074, 0332, 0053, 0073, 0365, 0136, 0214, 0173, 0155, 0054, 0333, 0237, 0272, 0156, 0111, 0227, 
-  0051, 0121, 0025, 0322, 0204, 0175, 0174, 0306, 0174, 0066, 0341, 0240, 0056, 0130, 0233, 0361, 
-  0276, 0323, 0074, 0075, 0111, 0270, 0363, 0005, 0051, 0035, 0113, 0242, 0263, 0356, 0213, 0146, 
-  0057, 0166, 0331, 0156, 0166, 0350, 0176, 0107, 0175, 0343, 0370, 0216, 0211, 0117, 0225, 0261, 
-  0174, 0064, 0043, 0021, 0203, 0372, 0164, 0331, 0043, 0005, 0374, 0025, 0141, 0164, 0251, 0123, 
-  0300, 0310, 0272, 0250, 0147, 0312, 0362, 0065, 0115, 0255, 0001, 0261, 0160, 0155, 0307, 0275, 
-  0251, 0275, 0055, 0007, 0311, 0215, 0264, 0172, 0366, 0010, 0123, 0073, 0257, 0355, 0061, 0324, 
-  0377, 0343, 0332, 0300, 0207, 0104, 0241, 0003, 0271, 0257, 0352, 0270, 0054, 0053, 0353, 0226, 
-  0225, 0306, 0154, 0103, 0373, 0124, 0224, 0071, 0075, 0234, 0124, 0377, 0210, 0244, 0176, 0021, 
-  0015, 0337, 0053, 0326, 0234, 0101, 0337, 0115, 0307, 0376, 0141, 0224, 0337, 0162, 0001, 0303, 
-  0134, 0241, 0070, 0364, 0165, 0205, 0247, 0264, 0154, 0325, 0214, 0025, 0034, 0142, 0066, 0037, 
-  0210, 0223, 0146, 0044, 0026, 0055, 0065, 0137, 0252, 0254, 0122, 0066, 0167, 0311, 0200, 0300, 
-  0235, 0341, 0352, 0042, 0335, 0031, 0022, 0313, 0155, 0175, 0012, 0156, 0106, 0336, 0073, 0126, 
-  0062, 0034, 0030, 0231, 0272, 0153, 0074, 0011, 0321, 0255, 0106, 0261, 0355, 0333, 0247, 0333, 
-  0272, 0330, 0253, 0343, 0135, 0226, 0122, 0253, 0236, 0004, 0067, 0116, 0336, 0221, 0210, 0327, 
-  0210, 0337, 0341, 0320, 0307, 0227, 0124, 0015, 0014, 0370, 0030, 0214, 0233, 0302, 0210, 0126, 
-  0302, 0166, 0327, 0340, 0355, 0314, 0175, 0126, 0027, 0165, 0250, 0316, 0266, 0304, 0212, 0151, 
-  0300, 0273, 0334, 0173, 0242, 0065, 0154, 0146, 0174, 0313, 0170, 0031, 0073, 0023, 0170, 0315, 
-  0155, 0030, 0131, 0250, 0275, 0312, 0062, 0060, 0170, 0075, 0166, 0333, 0362, 0122, 0027, 0207, 
-  0026, 0367, 0131, 0341, 0355, 0357, 0016, 0357, 0161, 0152, 0127, 0177, 0057, 0115, 0341, 0315, 
-  0237, 0101, 0336, 0124, 0136, 0357, 0035, 0036, 0175, 0255, 0074, 0230, 0067, 0037, 0363, 0064, 
-  0150, 0164, 0036, 0027, 0140, 0014, 0315, 0340, 0044, 0125, 0370, 0260, 0116, 0341, 0223, 0245, 
-  0366, 0366, 0213, 0305, 0347, 0040, 0174, 0174, 0375, 0222, 0164, 0366, 0037, 0025, 0075, 0311, 
-  0154, 0000, 0050, 0165, 0165, 0141, 0171, 0051, 0154, 0145, 0166, 0145, 0154, 0055, 0154, 0141, 
-  0171, 0145, 0162, 0163, 0056, 0160, 0156, 0147, 0371, 0001, 0000, 0000, 0000, 0000, 0000, 0000, 
+  0152, 0145, 0143, 0164, 0056, 0165, 0151, 0000, 0112, 0025, 0000, 0000, 0001, 0000, 0000, 0000, 
+  0170, 0332, 0325, 0130, 0115, 0163, 0332, 0060, 0020, 0275, 0347, 0127, 0270, 0272, 0166, 0014, 
+  0061, 0114, 0063, 0071, 0140, 0147, 0046, 0114, 0223, 0113, 0332, 0311, 0201, 0366, 0352, 0221, 
+  0345, 0305, 0050, 0221, 0045, 0127, 0222, 0371, 0370, 0367, 0135, 0201, 0111, 0370, 0066, 0141, 
+  0002, 0204, 0023, 0006, 0077, 0111, 0253, 0267, 0357, 0355, 0112, 0164, 0356, 0306, 0271, 0360, 
+  0206, 0240, 0015, 0127, 0062, 0044, 0101, 0343, 0232, 0170, 0040, 0231, 0112, 0271, 0314, 0102, 
+  0362, 0247, 0367, 0340, 0337, 0222, 0273, 0350, 0252, 0363, 0315, 0367, 0275, 0107, 0220, 0240, 
+  0251, 0205, 0324, 0033, 0161, 0073, 0360, 0062, 0101, 0123, 0360, 0332, 0215, 0366, 0155, 0043, 
+  0360, 0174, 0037, 0101, 0134, 0132, 0320, 0175, 0312, 0040, 0352, 0150, 0370, 0127, 0162, 0015, 
+  0306, 0023, 0074, 0011, 0111, 0146, 0137, 0277, 0223, 0367, 0125, 0332, 0215, 0340, 0206, 0064, 
+  0243, 0216, 0205, 0274, 0020, 0070, 0241, 0307, 0004, 0065, 0046, 0044, 0135, 0255, 0106, 0362, 
+  0231, 0112, 0020, 0277, 0141, 0364, 0254, 0325, 0013, 0060, 0113, 0274, 0202, 0152, 0220, 0066, 
+  0044, 0217, 0366, 0365, 0057, 0207, 0121, 0241, 0264, 0045, 0121, 0247, 0320, 0252, 0000, 0155, 
+  0047, 0236, 0244, 0071, 0204, 0144, 0310, 0015, 0117, 0004, 0220, 0250, 0247, 0113, 0350, 0064, 
+  0347, 0157, 0327, 0160, 0214, 0112, 0277, 0257, 0130, 0151, 0110, 0364, 0100, 0205, 0131, 0202, 
+  0262, 0001, 0027, 0151, 0324, 0121, 0211, 0133, 0167, 0051, 0246, 0256, 0240, 0171, 0161, 0302, 
+  0105, 0161, 0253, 0367, 0152, 0114, 0074, 0236, 0206, 0044, 0121, 0343, 0130, 0302, 0050, 0056, 
+  0052, 0076, 0216, 0022, 0305, 0012, 0064, 0247, 0072, 0343, 0322, 0067, 0226, 0072, 0256, 0203, 
+  0126, 0075, 0024, 0144, 0272, 0037, 0320, 0052, 0044, 0262, 0275, 0007, 0060, 0121, 0326, 0252, 
+  0274, 0006, 0253, 0064, 0107, 0155, 0120, 0213, 0262, 0042, 0021, 0352, 0313, 0162, 0106, 0305, 
+  0016, 0274, 0051, 0050, 0103, 0145, 0257, 0206, 0272, 0055, 0011, 0117, 0064, 0001, 0161, 0022, 
+  0306, 0305, 0164, 0045, 0317, 0152, 0052, 0015, 0132, 0202, 0342, 0364, 0041, 0231, 0000, 0216, 
+  0104, 0053, 0170, 0225, 0027, 0166, 0214, 0037, 0123, 0301, 0063, 0344, 0340, 0172, 0021, 0103, 
+  0255, 0325, 0074, 0051, 0055, 0230, 0205, 0347, 0152, 0300, 0010, 0170, 0066, 0100, 0167, 0015, 
+  0251, 0050, 0301, 0251, 0114, 0244, 0316, 0222, 0253, 0060, 0203, 0174, 0302, 0033, 0052, 0150, 
+  0374, 0160, 0240, 0346, 0342, 0304, 0315, 0031, 0153, 0030, 0021, 0145, 0257, 0310, 0355, 0132, 
+  0150, 0060, 0056, 0250, 0123, 0107, 0035, 0005, 0175, 0056, 0104, 0055, 0245, 0205, 0062, 0174, 
+  0226, 0355, 0245, 0235, 0066, 0337, 0026, 0157, 0126, 0271, 0254, 0076, 0134, 0335, 0222, 0076, 
+  0123, 0242, 0314, 0245, 0011, 0133, 0370, 0214, 0176, 0066, 0141, 0333, 0025, 0254, 0365, 0174, 
+  0077, 0152, 0236, 0236, 0044, 0335, 0203, 0071, 0051, 0065, 0123, 0142, 0260, 0376, 0233, 0146, 
+  0157, 0166, 0255, 0075, 0335, 0241, 0177, 0211, 0372, 0306, 0367, 0073, 0006, 0276, 0224, 0306, 
+  0362, 0376, 0204, 0104, 0014, 0134, 0167, 0331, 0303, 0002, 0301, 0222, 0060, 0352, 0324, 0051, 
+  0240, 0157, 0175, 0324, 0063, 0145, 0203, 0025, 0115, 0255, 0000, 0261, 0160, 0155, 0306, 0155, 
+  0325, 0336, 0206, 0106, 0362, 0123, 0132, 0075, 0351, 0301, 0330, 0316, 0152, 0173, 0014, 0356, 
+  0173, 0354, 0026, 0370, 0224, 0054, 0324, 0040, 0367, 0125, 0035, 0227, 0105, 0151, 0375, 0242, 
+  0324, 0350, 0066, 0134, 0237, 0212, 0142, 0100, 0017, 0047, 0065, 0070, 0042, 0251, 0137, 0104, 
+  0303, 0117, 0212, 0115, 0173, 0320, 0245, 0351, 0070, 0070, 0214, 0362, 0007, 0056, 0240, 0073, 
+  0120, 0050, 0016, 0175, 0137, 0142, 0227, 0226, 0225, 0232, 0261, 0202, 0103, 0314, 0146, 0057, 
+  0342, 0144, 0372, 0046, 0026, 0025, 0065, 0137, 0252, 0254, 0122, 0066, 0013, 0311, 0200, 0300, 
+  0235, 0341, 0354, 0042, 0335, 0231, 0022, 0313, 0255, 0353, 0202, 0353, 0231, 0157, 0036, 0313, 
+  0014, 0301, 0345, 0232, 0241, 0127, 0235, 0352, 0057, 0315, 0014, 0255, 0103, 0213, 0172, 0127, 
+  0345, 0211, 0302, 0363, 0372, 0057, 0132, 0124, 0106, 0140, 0356, 0227, 0330, 0235, 0334, 0163, 
+  0132, 0304, 0363, 0153, 0316, 0171, 0055, 0160, 0034, 0235, 0266, 0016, 0323, 0251, 0273, 0335, 
+  0234, 0204, 0215, 0112, 0076, 0170, 0075, 0331, 0347, 0126, 0160, 0263, 0327, 0315, 0154, 0261, 
+  0344, 0125, 0125, 0056, 0301, 0215, 0223, 0017, 0170, 0344, 0036, 0361, 0073, 0002, 0372, 0374, 
+  0326, 0257, 0201, 0001, 0037, 0202, 0361, 0123, 0350, 0323, 0122, 0330, 0372, 0263, 0302, 0146, 
+  0346, 0316, 0165, 0332, 0077, 0260, 0036, 0156, 0312, 0025, 0323, 0260, 0321, 0214, 0333, 0263, 
+  0325, 0235, 0216, 0270, 0310, 0174, 0031, 0073, 0021, 0200, 0374, 0070, 0106, 0346, 0152, 0057, 
+  0263, 0014, 0214, 0205, 0324, 0257, 0332, 0240, 0153, 0142, 0025, 0356, 0134, 0351, 0255, 0051, 
+  0043, 0307, 0251, 0135, 0355, 0275, 0064, 0205, 0245, 0233, 0301, 0140, 0172, 0102, 0150, 0176, 
+  0040, 0242, 0257, 0345, 0203, 0331, 0271, 0140, 0146, 0203, 0251, 0316, 0343, 0034, 0214, 0241, 
+  0331, 0151, 0172, 0322, 0141, 0115, 0374, 0314, 0122, 0333, 0376, 0303, 0274, 0237, 0343, 0343, 
+  0373, 0077, 0236, 0127, 0377, 0001, 0114, 0026, 0302, 0242, 0000, 0050, 0165, 0165, 0141, 0171, 
+  0051, 0154, 0145, 0166, 0145, 0154, 0055, 0154, 0141, 0171, 0145, 0162, 0163, 0056, 0160, 0156, 
+  0147, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0371, 0001, 0000, 0000, 0000, 0000, 0000, 0000, 
   0211, 0120, 0116, 0107, 0015, 0012, 0032, 0012, 0000, 0000, 0000, 0015, 0111, 0110, 0104, 0122, 
   0000, 0000, 0000, 0020, 0000, 0000, 0000, 0020, 0010, 0006, 0000, 0000, 0000, 0037, 0363, 0377, 
   0141, 0000, 0000, 0000, 0004, 0163, 0102, 0111, 0124, 0010, 0010, 0010, 0010, 0174, 0010, 0144, 
@@ -2882,7 +2885,7 @@ static const SECTION union { const guint8 data[45942]; const double alignment; v
   0165, 0165, 0141, 0171, 0051
 } };
 #else /* _MSC_VER */
-static const SECTION union { const guint8 data[45942]; const double alignment; void * const ptr;}  gresources_resource_data = {
+static const SECTION union { const guint8 data[45990]; const double alignment; void * const ptr;}  gresources_resource_data = {
   "\107\126\141\162\151\141\156\164\000\000\000\000\000\000\000\000"
   "\030\000\000\000\140\005\000\000\000\000\000\050\060\000\000\000"
   "\000\000\000\000\003\000\000\000\003\000\000\000\003\000\000\000"
@@ -2907,68 +2910,68 @@ static const SECTION union { const guint8 data[45942]; const double alignment; v
   "\010\011\000\000\310\011\000\000\130\370\316\366\040\000\000\000"
   "\310\011\000\000\016\000\166\000\330\011\000\000\263\012\000\000"
   "\230\074\133\021\034\000\000\000\263\012\000\000\024\000\166\000"
-  "\310\012\000\000\350\015\000\000\270\066\255\035\040\000\000\000"
-  "\350\015\000\000\020\000\166\000\370\015\000\000\001\020\000\000"
-  "\231\360\240\310\043\000\000\000\001\020\000\000\010\000\166\000"
-  "\020\020\000\000\217\025\000\000\252\154\124\346\034\000\000\000"
-  "\217\025\000\000\025\000\166\000\250\025\000\000\103\032\000\000"
-  "\233\167\147\330\040\000\000\000\103\032\000\000\021\000\166\000"
-  "\130\032\000\000\173\034\000\000\074\102\276\112\034\000\000\000"
-  "\173\034\000\000\012\000\166\000\210\034\000\000\011\037\000\000"
-  "\017\004\200\333\032\000\000\000\011\037\000\000\005\000\114\000"
-  "\020\037\000\000\024\037\000\000\020\207\145\265\041\000\000\000"
-  "\024\037\000\000\012\000\166\000\040\037\000\000\241\043\000\000"
-  "\220\356\057\304\051\000\000\000\241\043\000\000\006\000\114\000"
-  "\250\043\000\000\260\043\000\000\020\043\007\242\040\000\000\000"
-  "\260\043\000\000\015\000\166\000\300\043\000\000\173\044\000\000"
-  "\062\213\104\064\022\000\000\000\173\044\000\000\012\000\166\000"
-  "\210\044\000\000\147\047\000\000\223\146\011\064\040\000\000\000"
-  "\147\047\000\000\016\000\166\000\170\047\000\000\165\050\000\000"
-  "\123\047\126\074\016\000\000\000\165\050\000\000\005\000\114\000"
-  "\174\050\000\000\200\050\000\000\324\265\002\000\377\377\377\377"
-  "\200\050\000\000\001\000\114\000\204\050\000\000\210\050\000\000"
-  "\266\235\265\317\051\000\000\000\210\050\000\000\006\000\114\000"
-  "\220\050\000\000\224\050\000\000\030\024\046\107\040\000\000\000"
-  "\224\050\000\000\020\000\166\000\250\050\000\000\046\052\000\000"
-  "\230\371\361\261\027\000\000\000\046\052\000\000\012\000\166\000"
-  "\060\052\000\000\231\070\000\000\071\076\145\322\024\000\000\000"
-  "\231\070\000\000\005\000\114\000\240\070\000\000\244\070\000\000"
-  "\312\145\174\315\040\000\000\000\244\070\000\000\023\000\166\000"
-  "\270\070\000\000\232\071\000\000\033\017\005\100\045\000\000\000"
-  "\232\071\000\000\005\000\114\000\240\071\000\000\244\071\000\000"
-  "\314\345\221\310\051\000\000\000\244\071\000\000\006\000\114\000"
-  "\254\071\000\000\260\071\000\000\115\055\050\076\040\000\000\000"
-  "\260\071\000\000\016\000\166\000\300\071\000\000\214\072\000\000"
-  "\275\323\130\261\002\000\000\000\214\072\000\000\003\000\114\000"
-  "\220\072\000\000\240\072\000\000\335\362\143\037\034\000\000\000"
-  "\240\072\000\000\026\000\166\000\270\072\000\000\235\075\000\000"
-  "\137\074\322\266\052\000\000\000\235\075\000\000\005\000\114\000"
-  "\244\075\000\000\250\075\000\000\137\054\245\047\040\000\000\000"
-  "\250\075\000\000\020\000\166\000\270\075\000\000\346\076\000\000"
-  "\120\335\065\032\016\000\000\000\346\076\000\000\010\000\114\000"
-  "\360\076\000\000\054\077\000\000\261\025\353\013\056\000\000\000"
-  "\054\077\000\000\005\000\114\000\064\077\000\000\070\077\000\000"
-  "\343\242\030\047\050\000\000\000\070\077\000\000\006\000\114\000"
-  "\100\077\000\000\104\077\000\000\305\324\153\334\002\000\000\000"
-  "\104\077\000\000\004\000\114\000\110\077\000\000\114\077\000\000"
-  "\126\253\054\130\040\000\000\000\114\077\000\000\016\000\166\000"
-  "\140\077\000\000\033\101\000\000\130\331\264\313\051\000\000\000"
-  "\033\101\000\000\010\000\114\000\044\101\000\000\050\101\000\000"
-  "\010\240\151\334\002\000\000\000\050\101\000\000\004\000\114\000"
-  "\054\101\000\000\060\101\000\000\372\314\155\001\031\000\000\000"
-  "\060\101\000\000\012\000\166\000\100\101\000\000\030\142\000\000"
-  "\113\120\220\013\023\000\000\000\030\142\000\000\004\000\114\000"
-  "\034\142\000\000\040\142\000\000\073\027\056\252\002\000\000\000"
-  "\040\142\000\000\006\000\114\000\050\142\000\000\100\142\000\000"
-  "\034\254\073\232\051\000\000\000\100\142\000\000\010\000\114\000"
-  "\110\142\000\000\114\142\000\000\135\177\153\060\040\000\000\000"
-  "\114\142\000\000\017\000\166\000\140\142\000\000\147\144\000\000"
-  "\076\137\367\324\036\000\000\000\147\144\000\000\012\000\166\000"
-  "\170\144\000\000\365\253\000\000\356\202\206\066\014\000\000\000"
-  "\365\253\000\000\012\000\166\000\000\254\000\000\134\262\000\000"
-  "\056\352\140\306\051\000\000\000\134\262\000\000\006\000\114\000"
-  "\144\262\000\000\150\262\000\000\137\254\016\272\040\000\000\000"
-  "\150\262\000\000\014\000\166\000\170\262\000\000\165\263\000\000"
+  "\310\012\000\000\021\016\000\000\270\066\255\035\040\000\000\000"
+  "\021\016\000\000\020\000\166\000\050\016\000\000\061\020\000\000"
+  "\231\360\240\310\043\000\000\000\061\020\000\000\010\000\166\000"
+  "\100\020\000\000\277\025\000\000\252\154\124\346\034\000\000\000"
+  "\277\025\000\000\025\000\166\000\330\025\000\000\163\032\000\000"
+  "\233\167\147\330\040\000\000\000\163\032\000\000\021\000\166\000"
+  "\210\032\000\000\253\034\000\000\074\102\276\112\034\000\000\000"
+  "\253\034\000\000\012\000\166\000\270\034\000\000\071\037\000\000"
+  "\017\004\200\333\032\000\000\000\071\037\000\000\005\000\114\000"
+  "\100\037\000\000\104\037\000\000\020\207\145\265\041\000\000\000"
+  "\104\037\000\000\012\000\166\000\120\037\000\000\321\043\000\000"
+  "\220\356\057\304\051\000\000\000\321\043\000\000\006\000\114\000"
+  "\330\043\000\000\340\043\000\000\020\043\007\242\040\000\000\000"
+  "\340\043\000\000\015\000\166\000\360\043\000\000\253\044\000\000"
+  "\062\213\104\064\022\000\000\000\253\044\000\000\012\000\166\000"
+  "\270\044\000\000\227\047\000\000\223\146\011\064\040\000\000\000"
+  "\227\047\000\000\016\000\166\000\250\047\000\000\245\050\000\000"
+  "\123\047\126\074\016\000\000\000\245\050\000\000\005\000\114\000"
+  "\254\050\000\000\260\050\000\000\324\265\002\000\377\377\377\377"
+  "\260\050\000\000\001\000\114\000\264\050\000\000\270\050\000\000"
+  "\266\235\265\317\051\000\000\000\270\050\000\000\006\000\114\000"
+  "\300\050\000\000\304\050\000\000\030\024\046\107\040\000\000\000"
+  "\304\050\000\000\020\000\166\000\330\050\000\000\126\052\000\000"
+  "\230\371\361\261\027\000\000\000\126\052\000\000\012\000\166\000"
+  "\140\052\000\000\311\070\000\000\071\076\145\322\024\000\000\000"
+  "\311\070\000\000\005\000\114\000\320\070\000\000\324\070\000\000"
+  "\312\145\174\315\040\000\000\000\324\070\000\000\023\000\166\000"
+  "\350\070\000\000\312\071\000\000\033\017\005\100\045\000\000\000"
+  "\312\071\000\000\005\000\114\000\320\071\000\000\324\071\000\000"
+  "\314\345\221\310\051\000\000\000\324\071\000\000\006\000\114\000"
+  "\334\071\000\000\340\071\000\000\115\055\050\076\040\000\000\000"
+  "\340\071\000\000\016\000\166\000\360\071\000\000\274\072\000\000"
+  "\275\323\130\261\002\000\000\000\274\072\000\000\003\000\114\000"
+  "\300\072\000\000\320\072\000\000\335\362\143\037\034\000\000\000"
+  "\320\072\000\000\026\000\166\000\350\072\000\000\315\075\000\000"
+  "\137\074\322\266\052\000\000\000\315\075\000\000\005\000\114\000"
+  "\324\075\000\000\330\075\000\000\137\054\245\047\040\000\000\000"
+  "\330\075\000\000\020\000\166\000\350\075\000\000\026\077\000\000"
+  "\120\335\065\032\016\000\000\000\026\077\000\000\010\000\114\000"
+  "\040\077\000\000\134\077\000\000\261\025\353\013\056\000\000\000"
+  "\134\077\000\000\005\000\114\000\144\077\000\000\150\077\000\000"
+  "\343\242\030\047\050\000\000\000\150\077\000\000\006\000\114\000"
+  "\160\077\000\000\164\077\000\000\305\324\153\334\002\000\000\000"
+  "\164\077\000\000\004\000\114\000\170\077\000\000\174\077\000\000"
+  "\126\253\054\130\040\000\000\000\174\077\000\000\016\000\166\000"
+  "\220\077\000\000\113\101\000\000\130\331\264\313\051\000\000\000"
+  "\113\101\000\000\010\000\114\000\124\101\000\000\130\101\000\000"
+  "\010\240\151\334\002\000\000\000\130\101\000\000\004\000\114\000"
+  "\134\101\000\000\140\101\000\000\372\314\155\001\031\000\000\000"
+  "\140\101\000\000\012\000\166\000\160\101\000\000\110\142\000\000"
+  "\113\120\220\013\023\000\000\000\110\142\000\000\004\000\114\000"
+  "\114\142\000\000\120\142\000\000\073\027\056\252\002\000\000\000"
+  "\120\142\000\000\006\000\114\000\130\142\000\000\160\142\000\000"
+  "\034\254\073\232\051\000\000\000\160\142\000\000\010\000\114\000"
+  "\170\142\000\000\174\142\000\000\135\177\153\060\040\000\000\000"
+  "\174\142\000\000\017\000\166\000\220\142\000\000\227\144\000\000"
+  "\076\137\367\324\036\000\000\000\227\144\000\000\012\000\166\000"
+  "\250\144\000\000\045\254\000\000\356\202\206\066\014\000\000\000"
+  "\045\254\000\000\012\000\166\000\060\254\000\000\214\262\000\000"
+  "\056\352\140\306\051\000\000\000\214\262\000\000\006\000\114\000"
+  "\224\262\000\000\230\262\000\000\137\254\016\272\040\000\000\000"
+  "\230\262\000\000\014\000\166\000\250\262\000\000\245\263\000\000"
   "\141\170\151\163\055\154\157\143\141\154\056\160\156\147\000\000"
   "\266\000\000\000\000\000\000\000\211\120\116\107\015\012\032\012"
   "\000\000\000\015\111\110\104\122\000\000\000\020\000\000\000\020"
@@ -3055,58 +3058,61 @@ static const SECTION union { const guint8 data[45942]; const double alignment; v
   "\072\041\027\014\074\000\000\017\026\041\003\376\206\370\340\000"
   "\000\000\000\111\105\116\104\256\102\140\202\000\000\050\165\165"
   "\141\171\051\160\141\156\145\154\137\156\145\167\137\160\162\157"
-  "\152\145\143\164\056\165\151\000\242\022\000\000\001\000\000\000"
-  "\170\332\325\130\115\157\243\060\020\275\367\127\260\276\256\010"
-  "\045\321\126\075\000\225\032\265\275\124\253\036\272\173\105\306"
-  "\114\300\255\261\131\333\344\343\337\357\100\110\233\257\206\064"
-  "\152\322\366\024\202\237\075\343\067\157\306\143\202\253\151\041"
-  "\234\061\150\303\225\014\211\337\073\047\016\110\246\122\056\263"
-  "\220\374\171\274\165\057\311\125\164\026\374\160\135\347\016\044"
-  "\150\152\041\165\046\334\346\116\046\150\012\316\240\067\270\354"
-  "\371\216\353\042\210\113\013\172\104\031\104\201\206\177\025\327"
-  "\140\034\301\223\220\144\366\371\047\171\265\062\350\371\027\304"
-  "\213\002\013\105\051\160\101\207\011\152\114\110\206\132\115\344"
-  "\003\225\040\176\303\344\101\253\047\140\226\070\045\325\040\155"
-  "\110\356\354\363\137\016\223\122\151\113\242\240\324\252\004\155"
-  "\147\216\244\005\204\144\314\015\117\004\220\350\121\127\020\170"
-  "\213\321\015\034\243\322\035\051\126\031\022\335\122\141\126\240"
-  "\054\347\042\215\002\225\324\166\127\174\032\012\132\224\047\064"
-  "\212\133\275\126\123\342\360\064\044\211\232\306\022\046\161\331"
-  "\362\161\024\057\326\240\005\325\031\227\256\261\264\346\332\357"
-  "\167\103\101\246\373\001\255\102\042\007\173\000\023\145\255\052"
-  "\072\260\112\163\324\006\265\050\053\022\241\276\054\147\124\354"
-  "\300\233\222\062\124\366\272\253\157\005\341\236\046\040\116\302"
-  "\270\150\054\071\126\123\151\060\045\050\056\037\222\031\340\114"
-  "\114\005\247\315\205\035\363\247\124\360\014\071\070\137\306\120"
-  "\153\065\117\052\013\146\351\271\235\060\001\236\345\230\135\143"
-  "\052\052\250\125\046\322\072\045\327\141\006\371\204\027\224\337"
-  "\373\125\203\274\345\205\275\071\153\350\021\145\317\310\355\206"
-  "\153\060\055\151\255\216\056\012\106\134\210\116\112\113\145\370"
-  "\074\332\053\073\365\136\214\173\155\054\333\237\272\156\111\227"
-  "\051\121\025\322\204\175\174\306\174\066\341\240\056\130\233\361"
-  "\276\323\074\075\111\270\363\005\051\035\113\242\263\356\213\146"
-  "\057\166\331\156\166\350\176\107\175\343\370\216\211\117\225\261"
-  "\174\064\043\021\203\372\164\331\043\005\374\025\141\164\251\123"
-  "\300\310\272\250\147\312\362\065\115\255\001\261\160\155\307\275"
-  "\251\275\055\007\311\215\264\172\366\010\123\073\257\355\061\324"
-  "\377\343\332\300\207\104\241\003\271\257\352\270\054\053\353\226"
-  "\225\306\154\103\373\124\224\071\075\234\124\377\210\244\176\021"
-  "\015\337\053\326\234\101\337\115\307\376\141\224\337\162\001\303"
-  "\134\241\070\364\165\205\247\264\154\325\214\025\034\142\066\037"
-  "\210\223\146\044\026\055\065\137\252\254\122\066\167\311\200\300"
-  "\235\341\352\042\335\031\022\313\155\175\012\156\106\336\073\126"
-  "\062\034\030\231\272\153\074\011\321\255\106\261\355\333\247\333"
-  "\272\330\253\343\135\226\122\253\236\004\067\116\336\221\210\327"
-  "\210\337\341\320\307\227\124\015\014\370\030\214\233\302\210\126"
-  "\302\166\327\340\355\314\175\126\027\165\250\316\266\304\212\151"
-  "\300\273\334\173\242\065\154\146\174\313\170\031\073\023\170\315"
-  "\155\030\131\250\275\312\062\060\170\075\166\333\362\122\027\207"
-  "\026\367\131\341\355\357\016\357\161\152\127\177\057\115\341\315"
-  "\237\101\336\124\136\357\035\036\175\255\074\230\067\037\363\064"
-  "\150\164\036\027\140\014\315\340\044\125\370\260\116\341\223\245"
-  "\366\366\213\305\347\040\174\174\375\222\164\366\037\025\075\311"
-  "\154\000\050\165\165\141\171\051\154\145\166\145\154\055\154\141"
-  "\171\145\162\163\056\160\156\147\371\001\000\000\000\000\000\000"
+  "\152\145\143\164\056\165\151\000\112\025\000\000\001\000\000\000"
+  "\170\332\325\130\115\163\332\060\020\275\347\127\270\272\166\014"
+  "\061\114\063\071\140\147\046\114\223\113\332\311\201\366\352\221"
+  "\345\305\050\221\045\127\222\371\370\367\135\201\111\370\066\141"
+  "\002\204\023\006\077\111\253\267\357\355\112\164\356\306\271\360"
+  "\206\240\015\127\062\044\101\343\232\170\040\231\112\271\314\102"
+  "\362\247\367\340\337\222\273\350\252\363\315\367\275\107\220\240"
+  "\251\205\324\033\161\073\360\062\101\123\360\332\215\366\155\043"
+  "\360\174\037\101\134\132\320\175\312\040\352\150\370\127\162\015"
+  "\306\023\074\011\111\146\137\277\223\367\125\332\215\340\206\064"
+  "\243\216\205\274\020\070\241\307\004\065\046\044\135\255\106\362"
+  "\231\112\020\277\141\364\254\325\013\060\113\274\202\152\220\066"
+  "\044\217\366\365\057\207\121\241\264\045\121\247\320\252\000\155"
+  "\047\236\244\071\204\144\310\015\117\004\220\250\247\113\350\064"
+  "\347\157\327\160\214\112\277\257\130\151\110\364\100\205\131\202"
+  "\262\001\027\151\324\121\211\133\167\051\246\256\240\171\161\302"
+  "\105\161\253\367\152\114\074\236\206\044\121\343\130\302\050\056"
+  "\052\076\216\022\305\012\064\247\072\343\322\067\226\072\256\203"
+  "\126\075\024\144\272\037\320\052\044\262\275\007\060\121\326\252"
+  "\274\006\253\064\107\155\120\213\262\042\021\352\313\162\106\305"
+  "\016\274\051\050\103\145\257\206\272\055\011\117\064\001\161\022"
+  "\306\305\164\045\317\152\052\015\132\202\342\364\041\231\000\216"
+  "\104\053\170\225\027\166\214\037\123\301\063\344\340\172\021\103"
+  "\255\325\074\051\055\230\205\347\152\300\010\170\066\100\167\015"
+  "\251\050\301\251\114\244\316\222\253\060\203\174\302\033\052\150"
+  "\374\160\240\346\342\304\315\031\153\030\021\145\257\310\355\132"
+  "\150\060\056\250\123\107\035\005\175\056\104\055\245\205\062\174"
+  "\226\355\245\235\066\337\026\157\126\271\254\076\134\335\222\076"
+  "\123\242\314\245\011\133\370\214\176\066\141\333\025\254\365\174"
+  "\077\152\236\236\044\335\203\071\051\065\123\142\260\376\233\146"
+  "\157\166\255\075\335\241\177\211\372\306\367\073\006\276\224\306"
+  "\362\376\204\104\014\134\167\331\303\002\301\222\060\352\324\051"
+  "\240\157\175\324\063\145\203\025\115\255\000\261\160\155\306\155"
+  "\325\336\206\106\362\123\132\075\351\301\330\316\152\173\014\356"
+  "\173\354\026\370\224\054\324\040\367\125\035\227\105\151\375\242"
+  "\324\350\066\134\237\212\142\100\017\047\065\070\042\251\137\104"
+  "\303\117\212\115\173\320\245\351\070\070\214\362\007\056\240\073"
+  "\120\050\016\175\137\142\227\226\225\232\261\202\103\314\146\057"
+  "\342\144\372\046\026\025\065\137\252\254\122\066\013\311\200\300"
+  "\235\341\354\042\335\231\022\313\255\353\202\353\231\157\036\313"
+  "\014\301\345\232\241\127\235\352\057\315\014\255\103\213\172\127"
+  "\345\211\302\363\372\057\132\124\106\140\356\227\330\235\334\163"
+  "\132\304\363\153\316\171\055\160\034\235\266\016\323\251\273\335"
+  "\234\204\215\112\076\170\075\331\347\126\160\263\327\315\154\261"
+  "\344\125\125\056\301\215\223\017\170\344\036\361\073\002\372\374"
+  "\326\257\201\001\037\202\361\123\350\323\122\330\372\263\302\146"
+  "\346\316\165\332\077\260\036\156\312\025\323\260\321\214\333\263"
+  "\325\235\216\270\310\174\031\073\021\200\374\070\106\346\152\057"
+  "\263\014\214\205\324\257\332\240\153\142\025\356\134\351\255\051"
+  "\043\307\251\135\355\275\064\205\245\233\301\140\172\102\150\176"
+  "\040\242\257\345\203\331\271\140\146\203\251\316\343\034\214\241"
+  "\331\151\172\322\141\115\374\314\122\333\376\303\274\237\343\343"
+  "\373\077\236\127\377\001\114\026\302\242\000\050\165\165\141\171"
+  "\051\154\145\166\145\154\055\154\141\171\145\162\163\056\160\156"
+  "\147\000\000\000\000\000\000\000\371\001\000\000\000\000\000\000"
   "\211\120\116\107\015\012\032\012\000\000\000\015\111\110\104\122"
   "\000\000\000\020\000\000\000\020\010\006\000\000\000\037\363\377"
   "\141\000\000\000\004\163\102\111\124\010\010\010\010\174\010\144"

+ 25 - 1
tools/level_editor/resources/ui/panel_new_project.ui

@@ -95,6 +95,30 @@
                     <property name="top-attach">1</property>
                   </packing>
                 </child>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="visible">True</property>
+                    <property name="can-focus">False</property>
+                    <property name="label" translatable="yes">Template</property>
+                    <property name="justify">center</property>
+                    <property name="xalign">1</property>
+                  </object>
+                  <packing>
+                    <property name="left-attach">0</property>
+                    <property name="top-attach">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="CrownComboBoxMap" id="_combo_box_map_template">
+                    <property name="visible">True</property>
+                    <property name="can-focus">False</property>
+                    <property name="hexpand">True</property>
+                  </object>
+                  <packing>
+                    <property name="left-attach">1</property>
+                    <property name="top-attach">2</property>
+                  </packing>
+                </child>
                 <child>
                   <object class="GtkBox">
                     <property name="visible">True</property>
@@ -135,7 +159,7 @@
                   </object>
                   <packing>
                     <property name="left-attach">1</property>
-                    <property name="top-attach">2</property>
+                    <property name="top-attach">3</property>
                   </packing>
                 </child>
                 <child>