Răsfoiți Sursa

tools: do not start editor view until data is successfully compiled

Daniele Bartolini 5 ani în urmă
părinte
comite
95289d7c6b
2 a modificat fișierele cu 48 adăugiri și 35 ștergeri
  1. 20 16
      tools/level_editor/level_editor.vala
  2. 28 19
      tools/level_editor/resource_chooser.vala

+ 20 - 16
tools/level_editor/level_editor.vala

@@ -369,6 +369,9 @@ namespace Crown
 			_toolbar = builder.get_object("toolbar") as Gtk.Toolbar;
 			_toolbar_run = builder.get_object("run") as Gtk.ToolButton;
 
+			_editor_view_overlay = new Gtk.Overlay();
+			_editor_view_overlay.add_overlay(_toolbar);
+
 			_resource_popover = new Gtk.Popover(_toolbar);
 			_resource_popover.delete_event.connect(() => { _resource_popover.hide(); return true; });
 			_resource_popover.modal = true;
@@ -383,8 +386,6 @@ namespace Crown
 			_level_tree_view_notebook.append_page(_level_treeview, new Gtk.Image.from_icon_name("level-tree", IconSize.SMALL_TOOLBAR));
 			_level_tree_view_notebook.append_page(_level_layers_treeview, new Gtk.Image.from_icon_name("level-layers", IconSize.SMALL_TOOLBAR));
 
-			_editor_view_overlay = new Gtk.Overlay();
-
 			_editor_pane = new Gtk.Paned(Gtk.Orientation.HORIZONTAL);
 			_editor_pane.pack1(_project_slide, false, false);
 			_editor_pane.pack2(_editor_slide, true, false);
@@ -773,19 +774,9 @@ namespace Crown
 			_data_compiler.compile.begin(_project.data_dir(), _project.platform(), (obj, res) => {
 				if (_data_compiler.compile.end(res))
 				{
-					if (_editor_view != null)
-						return;
-
-					_editor_view = new EditorView(_editor);
-					_editor_view.realized.connect(on_editor_view_realized);
-					_editor_view.button_press_event.connect(on_button_press);
-					_editor_view.button_release_event.connect(on_button_release);
-
-					_editor_view_overlay.add(_editor_view);
-					_editor_view_overlay.add_overlay(_toolbar);
+					restart_editor();
 
 					_project_slide.show_widget(_project_browser);
-					_editor_slide.show_widget(_editor_view_overlay);
 					_inspector_slide.show_widget(_inspector_pane);
 				}
 			});
@@ -872,7 +863,22 @@ namespace Crown
 		private void restart_editor()
 		{
 			stop_editor();
-			start_editor(_editor_view.window_id);
+
+			if (_editor_view != null)
+			{
+				_editor_view_overlay.remove(_editor_view);
+				_editor_view = null;
+			}
+
+			_editor_view = new EditorView(_editor);
+			_editor_view.realized.connect(on_editor_view_realized);
+			_editor_view.button_press_event.connect(on_button_press);
+			_editor_view.button_release_event.connect(on_button_release);
+
+			_editor_view_overlay.add(_editor_view);
+			_editor_slide.show_widget(_editor_view_overlay);
+
+			_resource_chooser.restart_editor();
 		}
 
 		private void start_game(StartGame sg)
@@ -1112,8 +1118,6 @@ namespace Crown
 				_level.load_empty_level();
 				stop_compiler();
 				start_compiler();
-				restart_editor();
-				_resource_chooser.restart_editor();
 			}
 
 			fcd.destroy();

+ 28 - 19
tools/level_editor/resource_chooser.vala

@@ -35,7 +35,8 @@ namespace Crown
 		public Gtk.TreeSelection _tree_selection;
 		public Gtk.ScrolledWindow _scrolled_window;
 
-		public Gtk.Widget _editor_view;
+		public Slide _editor_slide;
+		public EditorView _editor_view;
 
 		// Signals
 		public signal void resource_selected(string type, string name);
@@ -116,24 +117,19 @@ namespace Crown
 			_scrolled_window.add(_tree_view);
 			_scrolled_window.set_size_request(300, 400);
 
-			if (_preview)
-			{
-				EditorView ev = new EditorView(_console_client, false);
-				ev.set_size_request(300, 300);
-				ev.realized.connect(on_editor_view_realized);
-				_editor_view = ev;
-
-				this.destroy.connect(on_destroy);
-			}
-			else
-			{
-				_editor_view = new Gtk.Label("No Preview");
-				_editor_view.set_size_request(300, 300);
-			}
+			_editor_slide = new Slide();
 
 			this.pack_start(_filter_entry, false, true, 0);
-			this.pack_start(_editor_view, true, true, 0);
+			this.pack_start(_editor_slide, true, true, 0);
 			this.pack_start(_scrolled_window, true, true, 0);
+
+			Gtk.Label label = new Gtk.Label("No Preview");
+			label.set_size_request(300, 300);
+			_editor_slide.show_widget(label);
+
+			this.destroy.connect(on_destroy);
+
+			restart_editor();
 		}
 
 		private void on_row_activated(Gtk.TreePath path, TreeViewColumn column)
@@ -228,11 +224,14 @@ namespace Crown
 			if (!_preview)
 				return;
 
-			_console_client.close();
+			if (_console_client != null)
+			{
+				_console_client.send_script("Device.quit()");
+				_console_client.close();
+			}
 
 			if (_editor_process != null)
 			{
-				_editor_process.force_exit();
 				try
 				{
 					_editor_process.wait();
@@ -250,7 +249,17 @@ namespace Crown
 				return;
 
 			stop_editor();
-			start_editor(((EditorView)_editor_view).window_id);
+
+			if (_editor_view != null)
+			{
+				_editor_view = null;
+			}
+
+			_editor_view = new EditorView(_console_client, false);
+			_editor_view.set_size_request(300, 300);
+			_editor_view.realized.connect(on_editor_view_realized);
+
+			_editor_slide.show_widget(_editor_view);
 		}
 
 		private void on_editor_view_realized()