2
0
Daniele Bartolini 9 жил өмнө
parent
commit
729e188d17

+ 20 - 10
tools/level_editor/level_editor.vala

@@ -87,6 +87,7 @@ namespace Crown
 
 
 		private Gtk.ActionGroup _action_group;
 		private Gtk.ActionGroup _action_group;
 		private Gtk.UIManager _ui_manager;
 		private Gtk.UIManager _ui_manager;
+		private Gtk.Toolbar _toolbar;
 		private Gtk.Paned _pane_left;
 		private Gtk.Paned _pane_left;
 		private Gtk.Paned _pane_right;
 		private Gtk.Paned _pane_right;
 		private Gtk.Notebook _notebook_left;
 		private Gtk.Notebook _notebook_left;
@@ -295,15 +296,16 @@ namespace Crown
 				error(e.message);
 				error(e.message);
 			}
 			}
 
 
+			_toolbar = _ui_manager.get_widget("/toolbar") as Toolbar;
+			_toolbar.set_icon_size(Gtk.IconSize.SMALL_TOOLBAR);
+			_toolbar.set_style(Gtk.ToolbarStyle.ICONS);
+
 			_pane_left = new Gtk.Paned(Gtk.Orientation.VERTICAL);
 			_pane_left = new Gtk.Paned(Gtk.Orientation.VERTICAL);
 			_pane_left.pack1(_alignment_engine, true, true);
 			_pane_left.pack1(_alignment_engine, true, true);
 			_pane_left.pack2(_console_view, true, true);
 			_pane_left.pack2(_console_view, true, true);
 
 
-			Toolbar toolbar = _ui_manager.get_widget("/toolbar") as Toolbar;
-			toolbar.set_icon_size(Gtk.IconSize.SMALL_TOOLBAR);
-			toolbar.set_style(Gtk.ToolbarStyle.ICONS);
 			Gtk.Box vb = new Gtk.Box(Gtk.Orientation.VERTICAL, 0);
 			Gtk.Box vb = new Gtk.Box(Gtk.Orientation.VERTICAL, 0);
-			vb.pack_start(toolbar, false, false, 0);
+			vb.pack_start(_toolbar, false, false, 0);
 			vb.pack_start(_pane_left, true, true, 0);
 			vb.pack_start(_pane_left, true, true, 0);
 
 
 			_notebook_right = new Notebook();
 			_notebook_right = new Notebook();
@@ -335,11 +337,6 @@ namespace Crown
 			_file_filter.set_filter_name("Level (*.level)");
 			_file_filter.set_filter_name("Level (*.level)");
 			_file_filter.add_pattern("*.level");
 			_file_filter.add_pattern("*.level");
 
 
-			_resource_browser = new ResourceBrowser(toolbar, _source_dir, _data_dir);
-			_resource_browser.resource_selected.connect(on_resource_browser_resource_selected);
-			_resource_browser.delete_event.connect(() => { _resource_browser.hide(); return true; });
-			_resource_browser.modal = true;
-
 			// Save level once every 5 minutes.
 			// Save level once every 5 minutes.
 			GLib.Timeout.add_seconds(5*3600, save_timeout);
 			GLib.Timeout.add_seconds(5*3600, save_timeout);
 
 
@@ -803,7 +800,12 @@ namespace Crown
 
 
 		private void shutdown()
 		private void shutdown()
 		{
 		{
-			_resource_browser.destroy();
+			if (_resource_browser != null)
+				_resource_browser.destroy();
+
+			if (_preferences_dialog != null)
+				_preferences_dialog.destroy();
+
 			stop_game();
 			stop_game();
 			stop_engine();
 			stop_engine();
 			stop_compiler();
 			stop_compiler();
@@ -1011,6 +1013,14 @@ namespace Crown
 
 
 		private void on_resource_browser(Gtk.Action action)
 		private void on_resource_browser(Gtk.Action action)
 		{
 		{
+			if (_resource_browser == null)
+			{
+				_resource_browser = new ResourceBrowser(_toolbar, _source_dir, _data_dir);
+				_resource_browser.resource_selected.connect(on_resource_browser_resource_selected);
+				_resource_browser.delete_event.connect(() => { _resource_browser.hide(); return true; });
+				_resource_browser.modal = true;
+			}
+
 			_resource_browser.show_all();
 			_resource_browser.show_all();
 		}
 		}