2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/*************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*  script_editor_plugin.cpp                                             */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*                       This file is part of:                           */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*                           GODOT ENGINE                                */  
						 
					
						
							
								
									
										
										
										
											2017-08-27 14:16:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/*                      https://godotengine.org                          */  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/*************************************************************************/  
						 
					
						
							
								
									
										
										
										
											2018-01-01 14:40:08 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur.                 */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md)    */  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/*                                                                       */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Permission is hereby granted, free of charge, to any person obtaining */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* a copy of this software and associated documentation files (the       */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* "Software"), to deal in the Software without restriction, including   */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* without limitation the rights to use, copy, modify, merge, publish,   */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* distribute, sublicense, and/or sell copies of the Software, and to    */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* permit persons to whom the Software is furnished to do so, subject to */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* the following conditions:                                             */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*                                                                       */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* The above copyright notice and this permission notice shall be        */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* included in all copies or substantial portions of the Software.       */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*                                                                       */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*************************************************************************/  
						 
					
						
							
								
									
										
										
										
											2018-01-05 00:50:27 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "script_editor_plugin.h" 
  
						 
					
						
							
								
									
										
										
										
											2017-01-16 08:04:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-26 17:46:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "core/io/resource_loader.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "core/os/file_access.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "core/os/input.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "core/os/keyboard.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "core/os/os.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "core/project_settings.h" 
  
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "editor/editor_node.h" 
  
						 
					
						
							
								
									
										
										
										
											2017-03-05 14:21:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "editor/editor_settings.h" 
  
						 
					
						
							
								
									
										
										
										
											2018-02-12 02:36:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "editor/find_in_files.h" 
  
						 
					
						
							
								
									
										
										
										
											2017-08-26 17:46:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "editor/node_dock.h" 
  
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "editor/script_editor_debugger.h" 
  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "scene/main/viewport.h" 
  
						 
					
						
							
								
									
										
										
										
											2018-02-12 02:36:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "script_text_editor.h" 
  
						 
					
						
							
								
									
										
										
										
											2017-08-26 17:46:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/*** SCRIPT EDITOR ****/  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-09-12 10:52:29 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditorBase : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_SIGNAL ( MethodInfo ( " name_changed " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-29 06:00:37 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_SIGNAL ( MethodInfo ( " edited_script_changed " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_SIGNAL ( MethodInfo ( " request_help_search " ,  PropertyInfo ( Variant : : STRING ,  " topic " ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-26 15:34:41 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_SIGNAL ( MethodInfo ( " request_help_index " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_SIGNAL ( MethodInfo ( " request_open_script_at_line " ,  PropertyInfo ( Variant : : OBJECT ,  " script " ) ,  PropertyInfo ( Variant : : INT ,  " line " ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-12 10:52:29 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_SIGNAL ( MethodInfo ( " request_save_history " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_SIGNAL ( MethodInfo ( " go_to_help " ,  PropertyInfo ( Variant : : STRING ,  " what " ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-12 02:36:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// TODO This signal is no use for VisualScript...
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_SIGNAL ( MethodInfo ( " search_in_files_requested " ,  PropertyInfo ( Variant : : STRING ,  " text " ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-12 10:52:29 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  bool  _can_open_in_editor ( Script  * p_script )  {  
						 
					
						
							
								
									
										
										
										
											2016-07-06 20:35:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  path  =  p_script - > get_path ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( path . find ( " :: " )  ! =  - 1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-06 20:35:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										//refuse handling this if it can't be edited
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										bool  valid  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for  ( int  i  =  0 ;  i  <  EditorNode : : get_singleton ( ) - > get_editor_data ( ) . get_edited_scene_count ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-06 20:35:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( path . begins_with ( EditorNode : : get_singleton ( ) - > get_editor_data ( ) . get_scene_path ( i ) ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												valid  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-06 20:35:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  valid ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-06-26 01:14:31 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  EditorScriptCodeCompletionCache  :  public  ScriptCodeCompletionCache  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									struct  Cache  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uint64_t  time_loaded ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										RES  cache ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Map < String ,  Cache >  cached ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-26 01:14:31 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								public :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uint64_t  max_time_cache ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  max_cache_size ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									void  cleanup ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										List < Map < String ,  Cache > : : Element  * >  to_clean ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-26 01:14:31 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Map < String ,  Cache > : : Element  * I  =  cached . front ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										while  ( I )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ( OS : : get_singleton ( ) - > get_ticks_msec ( )  -  I - > get ( ) . time_loaded )  >  max_time_cache )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-26 01:14:31 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												to_clean . push_back ( I ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											I  =  I - > next ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-26 01:14:31 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										while  ( to_clean . front ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-26 01:14:31 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											cached . erase ( to_clean . front ( ) - > get ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											to_clean . pop_front ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									RES  get_cached_resource ( const  String  & p_path )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-26 01:14:31 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Map < String ,  Cache > : : Element  * E  =  cached . find ( p_path ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-26 01:14:31 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! E )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Cache  c ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											c . cache  =  ResourceLoader : : load ( p_path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											E  =  cached . insert ( p_path ,  c ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-26 01:14:31 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										E - > get ( ) . time_loaded  =  OS : : get_singleton ( ) - > get_ticks_msec ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-26 01:14:31 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( cached . size ( )  >  max_cache_size )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-26 01:14:31 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											uint64_t  older ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Map < String ,  Cache > : : Element  * O  =  cached . front ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											older  =  O - > get ( ) . time_loaded ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Map < String ,  Cache > : : Element  * I  =  O ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											while  ( I )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( I - > get ( ) . time_loaded  <  older )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-26 01:14:31 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													older  =  I - > get ( ) . time_loaded ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													O  =  I ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-26 01:14:31 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												I  =  I - > next ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-26 01:14:31 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-12-18 15:46:17 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( O  ! =  E )  {  //should never happen..
 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-26 01:14:31 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												cached . erase ( O ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  E - > get ( ) . cache ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EditorScriptCodeCompletionCache ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										max_cache_size  =  128 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										max_time_cache  =  5  *  60  *  1000 ;  //minutes, five
 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-26 01:14:31 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditorQuickOpen : : popup ( const  Vector < String >  & p_functions ,  bool  p_dontclear )  {  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									popup_centered_ratio ( 0.6 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_dontclear ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										search_box - > select_all ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										search_box - > clear ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									search_box - > grab_focus ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									functions  =  p_functions ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									_update_search ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditorQuickOpen : : _text_changed ( const  String  & p_newtext )  {  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_update_search ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-20 12:38:03 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditorQuickOpen : : _sbox_input ( const  Ref < InputEvent >  & p_ie )  {  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-20 12:38:03 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Ref < InputEventKey >  k  =  p_ie ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-20 12:38:03 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( k . is_valid ( )  & &  ( k - > get_scancode ( )  = =  KEY_UP  | | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																k - > get_scancode ( )  = =  KEY_DOWN  | | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																k - > get_scancode ( )  = =  KEY_PAGEUP  | | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																k - > get_scancode ( )  = =  KEY_PAGEDOWN ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										search_options - > call ( " _gui_input " ,  k ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										search_box - > accept_event ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditorQuickOpen : : _update_search ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									search_options - > clear ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									TreeItem  * root  =  search_options - > create_item ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  functions . size ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										String  file  =  functions [ i ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ( search_box - > get_text ( )  = =  " "  | |  file . findn ( search_box - > get_text ( ) )  ! =  - 1 ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											TreeItem  * ti  =  search_options - > create_item ( root ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											ti - > set_text ( 0 ,  file ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( root - > get_children ( )  = =  ti ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												ti - > select ( 0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									get_ok ( ) - > set_disabled ( root - > get_children ( )  = =  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditorQuickOpen : : _confirmed ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									TreeItem  * ti  =  search_options - > get_selected ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! ti ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									int  line  =  ti - > get_text ( 0 ) . get_slice ( " : " ,  1 ) . to_int ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									emit_signal ( " goto_line " ,  line  -  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditorQuickOpen : : _notification ( int  p_what )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-07-26 16:02:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( p_what )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  NOTIFICATION_ENTER_TREE :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-07-26 16:02:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											connect ( " confirmed " ,  this ,  " _confirmed " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-26 13:45:38 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-08-11 12:04:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											search_box - > set_right_icon ( get_icon ( " Search " ,  " EditorIcons " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-26 13:45:38 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											search_box - > set_clear_button_enabled ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-07-26 16:02:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditorQuickOpen : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " _text_changed " ) ,  & ScriptEditorQuickOpen : : _text_changed ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " _confirmed " ) ,  & ScriptEditorQuickOpen : : _confirmed ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " _sbox_input " ) ,  & ScriptEditorQuickOpen : : _sbox_input ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_SIGNAL ( MethodInfo ( " goto_line " ,  PropertyInfo ( Variant : : INT ,  " line " ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ScriptEditorQuickOpen : : ScriptEditorQuickOpen ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									VBoxContainer  * vbc  =  memnew ( VBoxContainer ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									add_child ( vbc ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									search_box  =  memnew ( LineEdit ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									vbc - > add_margin_child ( TTR ( " Search: " ) ,  search_box ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									search_box - > connect ( " text_changed " ,  this ,  " _text_changed " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									search_box - > connect ( " gui_input " ,  this ,  " _sbox_input " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									search_options  =  memnew ( Tree ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									vbc - > add_margin_child ( TTR ( " Matches: " ) ,  search_options ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-03 22:25:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									get_ok ( ) - > set_text ( TTR ( " Open " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									get_ok ( ) - > set_disabled ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									register_text_enter ( search_box ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_hide_on_ok ( false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									search_options - > connect ( " item_activated " ,  this ,  " _confirmed " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									search_options - > set_hide_root ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/////////////////////////////////
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								ScriptEditor  * ScriptEditor : : script_editor  =  NULL ;  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*** SCRIPT EDITOR ******/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  ScriptEditor : : _get_debug_tooltip ( const  String  & p_text ,  Node  * _se )  {  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  val  =  debugger - > get_var_value ( p_text ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( val  ! =  String ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  p_text  +  " :  "  +  val ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _breaked ( bool  p_breaked ,  bool  p_can_debug )  {  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-02-20 21:22:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( bool ( EditorSettings : : get_singleton ( ) - > get ( " text_editor/external/use_external_editor " ) ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > set_item_disabled ( debug_menu - > get_popup ( ) - > get_item_index ( DEBUG_NEXT ) ,  ! ( p_breaked  & &  p_can_debug ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > set_item_disabled ( debug_menu - > get_popup ( ) - > get_item_index ( DEBUG_STEP ) ,  ! ( p_breaked  & &  p_can_debug ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > set_item_disabled ( debug_menu - > get_popup ( ) - > get_item_index ( DEBUG_BREAK ) ,  p_breaked ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > set_item_disabled ( debug_menu - > get_popup ( ) - > get_item_index ( DEBUG_CONTINUE ) ,  ! p_breaked ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  tab_container - > get_child_count ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-06 19:00:54 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ScriptEditorBase  * se  =  Object : : cast_to < ScriptEditorBase > ( tab_container - > get_child ( i ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-06 19:00:54 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! se )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										se - > set_debugger_active ( p_breaked ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : _show_debugger ( bool  p_show )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-14 12:26:56 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									//debug_menu->get_popup()->set_item_checked( debug_menu->get_popup()->get_item_index(DEBUG_SHOW), p_show);
 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-08-09 16:39:59 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _script_created ( Ref < Script >  p_script )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									editor - > push_item ( p_script . operator - > ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : _goto_script_line2 ( int  p_line )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-12 02:36:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ScriptEditorBase  * current  =  _get_current_editor ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( current ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										current - > goto_line ( p_line ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _goto_script_line ( REF  p_script ,  int  p_line )  {  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-09 17:19:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Ref < Script >  script  =  Object : : cast_to < Script > ( * p_script ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 21:10:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! script . is_null ( )  & &  script - > has_source_code ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-09 17:19:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( edit ( p_script ,  p_line ,  0 ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											editor - > push_item ( p_script . ptr ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-06 19:00:54 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-12 02:36:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											ScriptEditorBase  * current  =  _get_current_editor ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( current ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												current - > goto_line ( p_line ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-09 17:19:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-12 02:36:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								ScriptEditorBase  * ScriptEditor : : _get_current_editor ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  selected  =  tab_container - > get_current_tab ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( selected  <  0  | |  selected  > =  tab_container - > get_child_count ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  Object : : cast_to < ScriptEditorBase > ( tab_container - > get_child ( selected ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _update_history_arrows ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_back - > set_disabled ( history_pos  < =  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									script_forward - > set_disabled ( history_pos  > =  history . size ( )  -  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-09-12 10:52:29 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _save_history ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( history_pos  > =  0  & &  history_pos  <  history . size ( )  & &  history [ history_pos ] . control  = =  tab_container - > get_current_tab_control ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-12 10:52:29 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Node  * n  =  tab_container - > get_current_tab_control ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( Object : : cast_to < ScriptEditorBase > ( n ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-12 10:52:29 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-25 03:11:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											history . write [ history_pos ] . state  =  Object : : cast_to < ScriptEditorBase > ( n ) - > get_edit_state ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-12 10:52:29 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( Object : : cast_to < EditorHelp > ( n ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-12 10:52:29 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-25 03:11:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											history . write [ history_pos ] . state  =  Object : : cast_to < EditorHelp > ( n ) - > get_scroll ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-12 10:52:29 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									history . resize ( history_pos  +  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-12 10:52:29 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ScriptHistory  sh ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									sh . control  =  tab_container - > get_current_tab_control ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									sh . state  =  Variant ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-12 10:52:29 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									history . push_back ( sh ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									history_pos + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_update_history_arrows ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _go_to_tab ( int  p_idx )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Control  * c  =  Object : : cast_to < Control > ( tab_container - > get_child ( p_idx ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! c ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( history_pos  > =  0  & &  history_pos  <  history . size ( )  & &  history [ history_pos ] . control  = =  tab_container - > get_current_tab_control ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Node  * n  =  tab_container - > get_current_tab_control ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( Object : : cast_to < ScriptEditorBase > ( n ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-25 03:11:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											history . write [ history_pos ] . state  =  Object : : cast_to < ScriptEditorBase > ( n ) - > get_edit_state ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( Object : : cast_to < EditorHelp > ( n ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-25 03:11:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											history . write [ history_pos ] . state  =  Object : : cast_to < EditorHelp > ( n ) - > get_scroll ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									history . resize ( history_pos  +  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ScriptHistory  sh ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									sh . control  =  c ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									sh . state  =  Variant ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									history . push_back ( sh ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									history_pos + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									tab_container - > set_current_tab ( p_idx ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									c  =  tab_container - > get_current_tab_control ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( Object : : cast_to < ScriptEditorBase > ( c ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										script_name_label - > set_text ( Object : : cast_to < ScriptEditorBase > ( c ) - > get_name ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										script_icon - > set_texture ( Object : : cast_to < ScriptEditorBase > ( c ) - > get_icon ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-13 10:45:50 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( is_visible_in_tree ( ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Object : : cast_to < ScriptEditorBase > ( c ) - > ensure_focus ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-07-06 09:18:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Ref < Script >  script  =  Object : : cast_to < ScriptEditorBase > ( c ) - > get_edited_resource ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( script  ! =  NULL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											notify_script_changed ( script ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( Object : : cast_to < EditorHelp > ( c ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										script_name_label - > set_text ( Object : : cast_to < EditorHelp > ( c ) - > get_class ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										script_icon - > set_texture ( get_icon ( " Help " ,  " EditorIcons " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-13 10:45:50 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( is_visible_in_tree ( ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Object : : cast_to < EditorHelp > ( c ) - > set_focused ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									c - > set_meta ( " __editor_pass " ,  + + edit_pass ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_history_arrows ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_script_colors ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-28 15:20:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_members_overview ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 19:56:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_help_overview ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_selected_editor_menu ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-28 15:20:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_members_overview_visibility ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 19:56:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_help_overview_visibility ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-27 16:07:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _add_recent_script ( String  p_path )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_path . empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 22:31:36 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Array  rc  =  EditorSettings : : get_singleton ( ) - > get_project_metadata ( " recent_files " ,  " scripts " ,  Array ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( rc . find ( p_path )  ! =  - 1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										rc . erase ( p_path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									rc . push_front ( p_path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( rc . size ( )  >  10 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										rc . resize ( 10 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-27 16:07:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 22:31:36 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									EditorSettings : : get_singleton ( ) - > set_project_metadata ( " recent_files " ,  " scripts " ,  rc ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-27 16:07:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_recent_scripts ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : _update_recent_scripts ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 22:31:36 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Array  rc  =  EditorSettings : : get_singleton ( ) - > get_project_metadata ( " recent_files " ,  " scripts " ,  Array ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-27 16:07:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									recent_scripts - > clear ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									recent_scripts - > add_shortcut ( ED_SHORTCUT ( " script_editor/open_recent " ,  TTR ( " Open Recent " ) ,  KEY_MASK_CMD  |  KEY_MASK_SHIFT  |  KEY_T ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									recent_scripts - > add_separator ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 22:31:36 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  path ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  rc . size ( ) ;  i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										path  =  rc [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										recent_scripts - > add_item ( path . replace ( " res:// " ,  " " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-27 16:07:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									recent_scripts - > add_separator ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									recent_scripts - > add_shortcut ( ED_SHORTCUT ( " script_editor/clear_recent " ,  TTR ( " Clear Recent Files " ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-10-11 16:24:57 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									recent_scripts - > set_as_minsize ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-27 16:07:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : _open_recent_script ( int  p_idx )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// clear button
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_idx  = =  recent_scripts - > get_item_count ( )  -  1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 22:31:36 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										EditorSettings : : get_singleton ( ) - > set_project_metadata ( " recent_files " ,  " scripts " ,  Array ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-10-11 16:24:57 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										call_deferred ( " _update_recent_scripts " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-27 16:07:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// take two for the open recent button
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_idx  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										p_idx  - =  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 22:31:36 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Array  rc  =  EditorSettings : : get_singleton ( ) - > get_project_metadata ( " recent_files " ,  " scripts " ,  Array ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_INDEX ( p_idx ,  rc . size ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-27 16:07:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 22:31:36 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  path  =  rc [ p_idx ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// if its not on disk its a help file or deleted
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( FileAccess : : exists ( path ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										List < String >  extensions ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ResourceLoader : : get_recognized_extensions_for_type ( " Script " ,  & extensions ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( extensions . find ( path . get_extension ( ) ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Ref < Script >  script  =  ResourceLoader : : load ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( script . is_valid ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												edit ( script ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-27 16:07:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 22:31:36 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Error  err ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Ref < TextFile >  text_file  =  _load_text_file ( path ,  & err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( text_file . is_valid ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											edit ( text_file ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 22:31:36 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// if it's a path then its most likely a deleted file not help
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if  ( ! path . is_resource_file ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_help_class_open ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-27 16:07:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 22:31:36 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									rc . remove ( p_idx ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EditorSettings : : get_singleton ( ) - > set_project_metadata ( " recent_files " ,  " scripts " ,  rc ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_update_recent_scripts ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_show_error_dialog ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : _show_error_dialog ( String  p_path )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									error_dialog - > set_text ( vformat ( TTR ( " Can't open '%s'. The file could have been moved or deleted. " ) ,  p_path ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									error_dialog - > popup_centered_minsize ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-27 16:07:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-07 06:32:03 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _close_tab ( int  p_idx ,  bool  p_save ,  bool  p_history_back )  {  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-06 20:35:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									int  selected  =  p_idx ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( selected  <  0  | |  selected  > =  tab_container - > get_child_count ( ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-09 00:00:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Node  * tselected  =  tab_container - > get_child ( selected ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ScriptEditorBase  * current  =  Object : : cast_to < ScriptEditorBase > ( tab_container - > get_child ( selected ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( current )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-02 19:45:59 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( p_save )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											apply_scripts ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Ref < Script >  script  =  current - > get_edited_resource ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( script  ! =  NULL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											notify_script_close ( script ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-07-22 10:08:56 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// roll back to previous tab
 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-07 06:32:03 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_history_back )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_history_back ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2017-07-22 10:08:56 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									//remove from history
 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									history . resize ( history_pos  +  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  history . size ( ) ;  i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( history [ i ] . control  = =  tselected )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											history . remove ( i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											i - - ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											history_pos - - ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( history_pos  > =  history . size ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										history_pos  =  history . size ( )  -  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  idx  =  tab_container - > get_current_tab ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-08 19:47:47 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( current )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										current - > clear_edit_menu ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									memdelete ( tselected ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( idx  > =  tab_container - > get_child_count ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										idx  =  tab_container - > get_child_count ( )  -  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( idx  > =  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( history_pos  > =  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											idx  =  history [ history_pos ] . control - > get_index ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										tab_container - > set_current_tab ( idx ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_history_arrows ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_script_names ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-28 15:20:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_members_overview_visibility ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 19:56:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_help_overview_visibility ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-18 12:30:43 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_save_layout ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-06 20:35:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : _close_current_tab ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_close_tab ( tab_container - > get_current_tab ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _close_discard_current_tab ( const  String  & p_str )  {  
						 
					
						
							
								
									
										
										
										
											2017-01-02 19:45:59 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_close_tab ( tab_container - > get_current_tab ( ) ,  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									erase_tab_confirm - > hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-17 15:18:48 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _close_docs_tab ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  child_count  =  tab_container - > get_child_count ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  child_count  -  1 ;  i  > =  0 ;  i - - )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-17 15:18:48 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										EditorHelp  * se  =  Object : : cast_to < EditorHelp > ( tab_container - > get_child ( i ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-17 15:18:48 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( se )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-07 06:32:03 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_close_tab ( i ,  true ,  false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-17 15:18:48 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-12-07 11:57:41 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _copy_script_path ( )  {  
						 
					
						
							
								
									
										
										
										
											2018-02-12 02:36:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ScriptEditorBase  * se  =  _get_current_editor ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									RES  script  =  se - > get_edited_resource ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-07 11:57:41 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									OS : : get_singleton ( ) - > set_clipboard ( script - > get_path ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-20 13:15:40 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _close_other_tabs ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  child_count  =  tab_container - > get_child_count ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  current_idx  =  tab_container - > get_current_tab ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( int  i  =  child_count  -  1 ;  i  > =  0 ;  i - - )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( i  = =  current_idx )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										tab_container - > set_current_tab ( i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ScriptEditorBase  * se  =  Object : : cast_to < ScriptEditorBase > ( tab_container - > get_child ( i ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( se )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// Maybe there are unsaved changes
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( se - > is_unsaved ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												_ask_close_current_unsaved_tab ( se ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_close_current_tab ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-13 02:56:38 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _close_all_tabs ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  child_count  =  tab_container - > get_child_count ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  child_count  -  1 ;  i  > =  0 ;  i - - )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-13 02:56:38 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										tab_container - > set_current_tab ( i ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ScriptEditorBase  * se  =  Object : : cast_to < ScriptEditorBase > ( tab_container - > get_child ( i ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-13 02:56:38 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( se )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// Maybe there are unsaved changes
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( se - > is_unsaved ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												_ask_close_current_unsaved_tab ( se ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_close_current_tab ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : _ask_close_current_unsaved_tab ( ScriptEditorBase  * current )  {  
						 
					
						
							
								
									
										
										
										
											2018-01-06 14:32:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									erase_tab_confirm - > set_text ( TTR ( " Close and save changes? " )  +  " \n \" "  +  current - > get_name ( )  +  " \" " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-13 02:56:38 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									erase_tab_confirm - > popup_centered_minsize ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2016-07-17 15:18:48 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _resave_scripts ( const  String  & p_str )  {  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									apply_scripts ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  tab_container - > get_child_count ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ScriptEditorBase  * se  =  Object : : cast_to < ScriptEditorBase > ( tab_container - > get_child ( i ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! se ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										RES  script  =  se - > get_edited_resource ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( script - > get_path ( )  = =  " "  | |  script - > get_path ( ) . find ( " local:// " )  ! =  - 1  | |  script - > get_path ( ) . find ( " :: " )  ! =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											continue ;  //internal script, who cares
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-23 19:21:34 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( trim_trailing_whitespace_on_save )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											se - > trim_trailing_whitespace ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-23 19:21:34 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-17 14:46:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( convert_indent_on_save )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( use_space_indentation )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												se - > convert_indent_to_spaces ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												se - > convert_indent_to_tabs ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Ref < TextFile >  text_file  =  script ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( text_file  ! =  NULL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											se - > apply_code ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_save_text_file ( text_file ,  text_file - > get_path ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											editor - > save_resource ( script ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										se - > tag_saved_version ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									disk_changed - > hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _reload_scripts ( )  {  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  tab_container - > get_child_count ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ScriptEditorBase  * se  =  Object : : cast_to < ScriptEditorBase > ( tab_container - > get_child ( i ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! se )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										RES  edited_res  =  se - > get_edited_resource ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( edited_res - > get_path ( )  = =  " "  | |  edited_res - > get_path ( ) . find ( " local:// " )  ! =  - 1  | |  edited_res - > get_path ( ) . find ( " :: " )  ! =  - 1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											continue ;  //internal script, who cares
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										uint64_t  last_date  =  edited_res - > get_last_modified_time ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uint64_t  date  =  FileAccess : : get_modified_time ( edited_res - > get_path ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-09 12:12:03 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( last_date  = =  date )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-09 12:12:03 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Ref < Script >  script  =  edited_res ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( script  ! =  NULL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Ref < Script >  rel_script  =  ResourceLoader : : load ( script - > get_path ( ) ,  script - > get_class ( ) ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ERR_CONTINUE ( ! rel_script . is_valid ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											script - > set_source_code ( rel_script - > get_source_code ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											script - > set_last_modified_time ( rel_script - > get_last_modified_time ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											script - > reload ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Ref < TextFile >  text_file  =  edited_res ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( text_file  ! =  NULL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Error  err ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Ref < TextFile >  rel_text_file  =  _load_text_file ( text_file - > get_path ( ) ,  & err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ERR_CONTINUE ( ! rel_text_file . is_valid ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											text_file - > set_text ( rel_text_file - > get_text ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											text_file - > set_last_modified_time ( rel_text_file - > get_last_modified_time ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										se - > reload_text ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									disk_changed - > hide ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-09 09:08:41 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_script_names ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _res_saved_callback ( const  Ref < Resource >  & p_res )  {  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  tab_container - > get_child_count ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ScriptEditorBase  * se  =  Object : : cast_to < ScriptEditorBase > ( tab_container - > get_child ( i ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! se )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										RES  script  =  se - > get_edited_resource ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( script - > get_path ( )  = =  " "  | |  script - > get_path ( ) . find ( " local:// " )  ! =  - 1  | |  script - > get_path ( ) . find ( " :: " )  ! =  - 1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											continue ;  //internal script, who cares
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( script  = =  p_res )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											se - > tag_saved_version ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_script_names ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-06-03 12:34:11 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! pending_auto_reload  & &  auto_reload_running_scripts )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										call_deferred ( " _live_auto_reload_running_scripts " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										pending_auto_reload  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-03 12:34:11 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : _live_auto_reload_running_scripts ( )  {  
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									pending_auto_reload  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-03 12:34:11 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									debugger - > reload_scripts ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  ScriptEditor : : _test_script_times_on_disk ( RES  p_for_script )  {  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									disk_changed_list - > clear ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									TreeItem  * r  =  disk_changed_list - > create_item ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									disk_changed_list - > set_hide_root ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									bool  need_ask  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bool  need_reload  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bool  use_autoreload  =  bool ( EDITOR_DEF ( " text_editor/files/auto_reload_scripts_on_external_change " ,  false ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  tab_container - > get_child_count ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ScriptEditorBase  * se  =  Object : : cast_to < ScriptEditorBase > ( tab_container - > get_child ( i ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( se )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											RES  edited_res  =  se - > get_edited_resource ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( edited_res . is_valid ( )  & &  p_for_script  ! =  edited_res ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-19 22:07:07 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( edited_res - > get_path ( )  = =  " "  | |  edited_res - > get_path ( ) . find ( " local:// " )  ! =  - 1  | |  edited_res - > get_path ( ) . find ( " :: " )  ! =  - 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-09 09:08:41 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												continue ;  //internal script, who cares
 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											uint64_t  last_date  =  edited_res - > get_last_modified_time ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											uint64_t  date  =  FileAccess : : get_modified_time ( edited_res - > get_path ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( last_date  ! =  date )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-12-09 09:08:41 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												TreeItem  * ti  =  disk_changed_list - > create_item ( r ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												ti - > set_text ( 0 ,  edited_res - > get_path ( ) . get_file ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( ! use_autoreload  | |  se - > is_unsaved ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													need_ask  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-09 09:08:41 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												need_reload  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-09 09:08:41 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-12-09 09:08:41 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( need_reload )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! need_ask )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-01-10 12:55:12 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											script_editor - > _reload_scripts ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											need_reload  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-16 18:58:41 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											disk_changed - > call_deferred ( " popup_centered_ratio " ,  0.5 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-16 18:58:41 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-12-09 09:08:41 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  need_reload ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-12 15:45:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _file_dialog_action ( String  p_file )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( file_dialog_option )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-08-14 23:41:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  FILE_NEW_TEXTFILE :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Error  err ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											FileAccess  * file  =  FileAccess : : open ( p_file ,  FileAccess : : WRITE ,  & err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												memdelete ( file ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												editor - > show_warning ( TTR ( " Error writing TextFile: " )  +  " \n "  +  p_file ,  TTR ( " Error! " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file - > close ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											memdelete ( file ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// fallthrough to open the file.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  FILE_OPEN :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											List < String >  extensions ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ResourceLoader : : get_recognized_extensions_for_type ( " Script " ,  & extensions ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( extensions . find ( p_file . get_extension ( ) ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Ref < Script >  scr  =  ResourceLoader : : load ( p_file ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( ! scr . is_valid ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													editor - > show_warning ( TTR ( " Error could not load file. " ) ,  TTR ( " Error! " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													file_dialog_option  =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												edit ( scr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												file_dialog_option  =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Error  error ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Ref < TextFile >  text_file  =  _load_text_file ( p_file ,  & error ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( error  ! =  OK )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												editor - > show_warning ( TTR ( " Error could not load file. " ) ,  TTR ( " Error! " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( text_file . is_valid ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												edit ( text_file ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												file_dialog_option  =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2018-08-14 23:41:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  FILE_SAVE_AS :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ScriptEditorBase  * current  =  _get_current_editor ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											String  path  =  ProjectSettings : : get_singleton ( ) - > localize_path ( p_file ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Error  err  =  _save_text_file ( current - > get_edited_resource ( ) ,  path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( err  ! =  OK )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												editor - > show_accept ( TTR ( " Error saving file! " ) ,  TTR ( " OK " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											( ( Resource  * ) current - > get_edited_resource ( ) . ptr ( ) ) - > set_path ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_update_script_names ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-21 12:10:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  THEME_SAVE_AS :  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ! EditorSettings : : get_singleton ( ) - > save_text_editor_theme_as ( p_file ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-12 15:45:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												editor - > show_warning ( TTR ( " Error while saving theme " ) ,  TTR ( " Error saving " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-21 12:10:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  THEME_IMPORT :  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ! EditorSettings : : get_singleton ( ) - > import_text_editor_theme ( p_file ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-12 15:45:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												editor - > show_warning ( TTR ( " Error importing theme " ) ,  TTR ( " Error importing " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									file_dialog_option  =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-07-06 09:18:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Ref < Script >  ScriptEditor : : _get_current_script ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-12 02:36:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ScriptEditorBase  * current  =  _get_current_editor ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-07-06 09:18:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( current )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Ref < Script >  script  =  current - > get_edited_resource ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  script  ! =  NULL  ?  script  :  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-07-06 09:18:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-07-19 19:47:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Array  ScriptEditor : : _get_open_scripts ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2017-07-06 09:18:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Array  ret ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-07-19 19:47:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Vector < Ref < Script >  >  scripts  =  get_open_scripts ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-07-06 09:18:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									int  scrits_amount  =  scripts . size ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( int  idx_script  =  0 ;  idx_script  <  scrits_amount ;  idx_script + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ret . push_back ( scripts [ idx_script ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : _menu_option ( int  p_option )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( p_option )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-09 16:39:59 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  FILE_NEW :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											script_create_dialog - > config ( " Node " ,  " .gd " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											script_create_dialog - > popup_centered ( Size2 ( 300 ,  300 )  *  EDSCALE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-09 16:39:59 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-08-14 23:41:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  FILE_NEW_TEXTFILE :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file_dialog - > set_mode ( EditorFileDialog : : MODE_SAVE_FILE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file_dialog - > set_access ( EditorFileDialog : : ACCESS_FILESYSTEM ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file_dialog_option  =  FILE_NEW_TEXTFILE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file_dialog - > clear_filters ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file_dialog - > popup_centered_ratio ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file_dialog - > set_title ( TTR ( " New TextFile... " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  FILE_OPEN :  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											file_dialog - > set_mode ( EditorFileDialog : : MODE_OPEN_FILE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file_dialog - > set_access ( EditorFileDialog : : ACCESS_FILESYSTEM ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file_dialog_option  =  FILE_OPEN ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											List < String >  extensions ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ResourceLoader : : get_recognized_extensions_for_type ( " Script " ,  & extensions ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file_dialog - > clear_filters ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  ( int  i  =  0 ;  i  <  extensions . size ( ) ;  i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												file_dialog - > add_filter ( " *. "  +  extensions [ i ]  +  "  ;  "  +  extensions [ i ] . to_upper ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file_dialog - > popup_centered_ratio ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file_dialog - > set_title ( TTR ( " Open File " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  FILE_SAVE_ALL :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-10-02 20:39:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( _test_script_times_on_disk ( ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 21:10:52 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											save_all_scripts ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  SEARCH_HELP :  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-24 22:33:26 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											help_search_dialog - > popup ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  SEARCH_CLASSES :  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 07:51:09 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											help_index - > popup ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  SEARCH_WEBSITE :  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-20 10:01:34 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											OS : : get_singleton ( ) - > shell_open ( " http://docs.godotengine.org/ " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  WINDOW_NEXT :  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_history_forward ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  WINDOW_PREV :  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 21:42:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_history_back ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 21:42:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  WINDOW_SORT :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_sort_list_on_update  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_update_script_names ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-12 10:09:50 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  DEBUG_SHOW :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( debugger )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												bool  visible  =  debug_menu - > get_popup ( ) - > is_item_checked ( debug_menu - > get_popup ( ) - > get_item_index ( DEBUG_SHOW ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												debug_menu - > get_popup ( ) - > set_item_checked ( debug_menu - > get_popup ( ) - > get_item_index ( DEBUG_SHOW ) ,  ! visible ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-12 10:09:50 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( visible ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													debugger - > hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													debugger - > show ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  DEBUG_SHOW_KEEP_OPEN :  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											bool  visible  =  debug_menu - > get_popup ( ) - > is_item_checked ( debug_menu - > get_popup ( ) - > get_item_index ( DEBUG_SHOW_KEEP_OPEN ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-12 10:09:50 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( debugger ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												debugger - > set_hide_on_stop ( visible ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											debug_menu - > get_popup ( ) - > set_item_checked ( debug_menu - > get_popup ( ) - > get_item_index ( DEBUG_SHOW_KEEP_OPEN ) ,  ! visible ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-12 10:09:50 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-25 17:20:01 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  DEBUG_WITH_EXTERNAL_EDITOR :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											bool  debug_with_external_editor  =  ! debug_menu - > get_popup ( ) - > is_item_checked ( debug_menu - > get_popup ( ) - > get_item_index ( DEBUG_WITH_EXTERNAL_EDITOR ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											debugger - > set_debug_with_external_editor ( debug_with_external_editor ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											debug_menu - > get_popup ( ) - > set_item_checked ( debug_menu - > get_popup ( ) - > get_item_index ( DEBUG_WITH_EXTERNAL_EDITOR ) ,  debug_with_external_editor ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-07-10 14:11:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  TOGGLE_SCRIPTS_PANEL :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											list_split - > set_visible ( ! list_split - > is_visible ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-25 17:20:01 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-12 02:36:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ScriptEditorBase  * current  =  _get_current_editor ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( current )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										switch  ( p_option )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  FILE_SAVE :  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-23 14:44:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( _test_script_times_on_disk ( ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													return ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-23 14:44:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( trim_trailing_whitespace_on_save ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													current - > trim_trailing_whitespace ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-17 14:46:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( convert_indent_on_save )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( use_space_indentation )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														current - > convert_indent_to_spaces ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														current - > convert_indent_to_tabs ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Ref < TextFile >  text_file  =  current - > get_edited_resource ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( text_file  ! =  NULL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													current - > apply_code ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													_save_text_file ( text_file ,  text_file - > get_path ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												editor - > save_resource ( current - > get_edited_resource ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  FILE_SAVE_AS :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												current - > trim_trailing_whitespace ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-17 14:46:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( convert_indent_on_save )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( use_space_indentation )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														current - > convert_indent_to_spaces ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														current - > convert_indent_to_tabs ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Ref < TextFile >  text_file  =  current - > get_edited_resource ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( text_file  ! =  NULL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													file_dialog - > set_mode ( EditorFileDialog : : MODE_SAVE_FILE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													file_dialog - > set_access ( EditorFileDialog : : ACCESS_FILESYSTEM ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													file_dialog_option  =  FILE_SAVE_AS ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													List < String >  extensions ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													ResourceLoader : : get_recognized_extensions_for_type ( " Script " ,  & extensions ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													file_dialog - > clear_filters ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													file_dialog - > set_current_dir ( text_file - > get_path ( ) . get_base_dir ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													file_dialog - > set_current_file ( text_file - > get_path ( ) . get_file ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													file_dialog - > popup_centered_ratio ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													file_dialog - > set_title ( TTR ( " Save File As... " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												editor - > push_item ( Object : : cast_to < Object > ( current - > get_edited_resource ( ) . ptr ( ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												editor - > save_resource_as ( current - > get_edited_resource ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-06-08 20:00:02 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  FILE_TOOL_RELOAD : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  FILE_TOOL_RELOAD_SOFT :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												current - > reload ( p_option  = =  FILE_TOOL_RELOAD_SOFT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-18 19:24:38 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-23 19:21:34 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-27 19:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  FILE_RUN :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												Ref < Script >  scr  =  current - > get_edited_resource ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( scr  = =  NULL  | |  scr . is_null ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-27 19:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													EditorNode : : get_singleton ( ) - > show_warning ( " Can't obtain the script for running " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-03 14:53:17 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												current - > apply_code ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Error  err  =  scr - > reload ( false ) ;  //hard reload script before running always
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( err  ! =  OK )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													EditorNode : : get_singleton ( ) - > show_warning ( " Script failed reloading, check console for errors. " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-27 19:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( ! scr - > is_tool ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													EditorNode : : get_singleton ( ) - > show_warning ( " Script is not in tool mode, will not be able to run " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( ! ClassDB : : is_parent_class ( scr - > get_instance_base_type ( ) ,  " EditorScript " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													EditorNode : : get_singleton ( ) - > show_warning ( " To run this script, it must inherit EditorScript and be set to tool mode " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Ref < EditorScript >  es  =  memnew ( EditorScript ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												es - > set_script ( scr . get_ref_ptr ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												es - > set_editor ( EditorNode : : get_singleton ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												es - > _run ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												EditorNode : : get_undo_redo ( ) - > clear_history ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  FILE_CLOSE :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( current - > is_unsaved ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-13 02:56:38 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													_ask_close_current_unsaved_tab ( current ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-27 15:29:04 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													_close_current_tab ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-27 15:29:04 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-07 11:57:41 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  FILE_COPY_PATH :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												_copy_script_path ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-02 10:11:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  SHOW_IN_FILE_SYSTEM :  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												RES  script  =  current - > get_edited_resource ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-02 10:11:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												FileSystemDock  * file_system_dock  =  EditorNode : : get_singleton ( ) - > get_filesystem_dock ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												file_system_dock - > navigate_to_path ( script - > get_path ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// Ensure that the FileSystem dock is visible.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												TabContainer  * tab_container  =  ( TabContainer  * ) file_system_dock - > get_parent_control ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												tab_container - > set_current_tab ( file_system_dock - > get_position_in_parent ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  CLOSE_DOCS :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												_close_docs_tab ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-27 15:29:04 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-20 13:15:40 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  CLOSE_OTHER_TABS :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												_close_other_tabs ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-13 02:56:38 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  CLOSE_ALL :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												_close_all_tabs ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  DEBUG_NEXT :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( debugger ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													debugger - > debug_next ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  DEBUG_STEP :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( debugger ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													debugger - > debug_step ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  DEBUG_BREAK :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( debugger ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													debugger - > debug_break ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  DEBUG_CONTINUE :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( debugger ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													debugger - > debug_continue ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 21:42:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  WINDOW_MOVE_UP :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( tab_container - > get_current_tab ( )  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													tab_container - > move_child ( current ,  tab_container - > get_current_tab ( )  -  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 21:42:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													tab_container - > set_current_tab ( tab_container - > get_current_tab ( )  -  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													_update_script_names ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 21:42:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  WINDOW_MOVE_DOWN :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( tab_container - > get_current_tab ( )  <  tab_container - > get_child_count ( )  -  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													tab_container - > move_child ( current ,  tab_container - > get_current_tab ( )  +  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 21:42:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													tab_container - > set_current_tab ( tab_container - > get_current_tab ( )  +  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													_update_script_names ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											default :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( p_option  > =  WINDOW_SELECT_BASE )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													tab_container - > set_current_tab ( p_option  -  WINDOW_SELECT_BASE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													script_list - > select ( p_option  -  WINDOW_SELECT_BASE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-17 02:41:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										EditorHelp  * help  =  Object : : cast_to < EditorHelp > ( tab_container - > get_current_tab_control ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-17 02:41:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( help )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-17 02:41:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											switch  ( p_option )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-12 14:21:09 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												case  SEARCH_CLASSES :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													help_index - > popup ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													help_index - > call_deferred ( " select_class " ,  help - > get_class ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-17 02:41:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												case  HELP_SEARCH_FIND :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													help - > popup_search ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  HELP_SEARCH_FIND_NEXT :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													help - > search_again ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  FILE_CLOSE :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													_close_current_tab ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  CLOSE_DOCS :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													_close_docs_tab ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-20 13:15:40 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												case  CLOSE_OTHER_TABS :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													_close_other_tabs ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-17 02:41:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												case  CLOSE_ALL :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													_close_all_tabs ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 21:42:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												case  WINDOW_MOVE_UP :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( tab_container - > get_current_tab ( )  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														tab_container - > move_child ( help ,  tab_container - > get_current_tab ( )  -  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														tab_container - > set_current_tab ( tab_container - > get_current_tab ( )  -  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														_update_script_names ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  WINDOW_MOVE_DOWN :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( tab_container - > get_current_tab ( )  <  tab_container - > get_child_count ( )  -  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														tab_container - > move_child ( help ,  tab_container - > get_current_tab ( )  +  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														tab_container - > set_current_tab ( tab_container - > get_current_tab ( )  +  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														_update_script_names ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-17 02:41:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-06-21 12:10:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _theme_option ( int  p_option )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_option )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  THEME_IMPORT :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file_dialog - > set_mode ( EditorFileDialog : : MODE_OPEN_FILE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file_dialog - > set_access ( EditorFileDialog : : ACCESS_FILESYSTEM ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file_dialog_option  =  THEME_IMPORT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file_dialog - > clear_filters ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file_dialog - > add_filter ( " *.tet " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file_dialog - > popup_centered_ratio ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file_dialog - > set_title ( TTR ( " Import Theme " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  THEME_RELOAD :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											EditorSettings : : get_singleton ( ) - > load_text_editor_theme ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  THEME_SAVE :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ! EditorSettings : : get_singleton ( ) - > save_text_editor_theme ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												editor - > show_warning ( TTR ( " Error while saving theme " ) ,  TTR ( " Error saving " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  THEME_SAVE_AS :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file_dialog - > set_mode ( EditorFileDialog : : MODE_SAVE_FILE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file_dialog - > set_access ( EditorFileDialog : : ACCESS_FILESYSTEM ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file_dialog_option  =  THEME_SAVE_AS ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file_dialog - > clear_filters ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file_dialog - > add_filter ( " *.tet " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file_dialog - > set_current_path ( EditorSettings : : get_singleton ( ) - > get_text_editor_themes_dir ( ) . plus_file ( EditorSettings : : get_singleton ( ) - > get ( " text_editor/theme/color_theme " ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file_dialog - > popup_centered_ratio ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											file_dialog - > set_title ( TTR ( " Save Theme As... " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : _tab_changed ( int  p_which )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ensure_select_current ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : _notification ( int  p_what )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-07-26 16:02:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( p_what )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  NOTIFICATION_ENTER_TREE :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											editor - > connect ( " play_pressed " ,  this ,  " _editor_play " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											editor - > connect ( " pause_pressed " ,  this ,  " _editor_pause " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											editor - > connect ( " stop_pressed " ,  this ,  " _editor_stop " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											editor - > connect ( " script_add_function_request " ,  this ,  " _add_callback " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											editor - > connect ( " resource_saved " ,  this ,  " _res_saved_callback " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											script_list - > connect ( " item_selected " ,  this ,  " _script_selected " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-20 13:15:40 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-07-26 16:02:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											members_overview - > connect ( " item_selected " ,  this ,  " _members_overview_selected " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 19:56:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											help_overview - > connect ( " item_selected " ,  this ,  " _help_overview_selected " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-07-26 16:02:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											script_split - > connect ( " dragged " ,  this ,  " _script_split_dragged " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											autosave_timer - > connect ( " timeout " ,  this ,  " _autosave_scripts " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												float  autosave_time  =  EditorSettings : : get_singleton ( ) - > get ( " text_editor/files/autosave_interval_secs " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( autosave_time  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													autosave_timer - > set_wait_time ( autosave_time ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													autosave_timer - > start ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													autosave_timer - > stop ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-04 23:32:40 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-07-26 16:02:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											EditorSettings : : get_singleton ( ) - > connect ( " settings_changed " ,  this ,  " _editor_settings_changed " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											help_search - > set_icon ( get_icon ( " HelpSearch " ,  " EditorIcons " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											site_search - > set_icon ( get_icon ( " Instance " ,  " EditorIcons " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_search - > set_icon ( get_icon ( " ClassList " ,  " EditorIcons " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-07-26 16:02:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											script_forward - > set_icon ( get_icon ( " Forward " ,  " EditorIcons " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											script_back - > set_icon ( get_icon ( " Back " ,  " EditorIcons " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-04-30 14:27:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											members_overview_alphabeta_sort_button - > set_icon ( get_icon ( " Sort " ,  " EditorIcons " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-07-26 16:02:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-07-26 16:02:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  NOTIFICATION_READY :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-07-26 16:02:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											get_tree ( ) - > connect ( " tree_changed " ,  this ,  " _tree_changed " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-17 01:01:47 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											editor - > get_inspector_dock ( ) - > connect ( " request_help " ,  this ,  " _request_help " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-07-26 16:02:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											editor - > connect ( " request_help_search " ,  this ,  " _help_search " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											editor - > connect ( " request_help_index " ,  this ,  " _help_index " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-07-26 16:02:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  NOTIFICATION_EXIT_TREE :  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-07-26 16:02:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											editor - > disconnect ( " play_pressed " ,  this ,  " _editor_play " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											editor - > disconnect ( " pause_pressed " ,  this ,  " _editor_pause " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											editor - > disconnect ( " stop_pressed " ,  this ,  " _editor_stop " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-07-26 16:02:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  MainLoop : : NOTIFICATION_WM_FOCUS_IN :  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-07-26 16:02:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_test_script_times_on_disk ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_update_modified_scripts_for_external_editor ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  EditorSettings : : NOTIFICATION_EDITOR_SETTINGS_CHANGED :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-30 01:03:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											help_search - > set_icon ( get_icon ( " HelpSearch " ,  " EditorIcons " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											site_search - > set_icon ( get_icon ( " Instance " ,  " EditorIcons " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_search - > set_icon ( get_icon ( " ClassList " ,  " EditorIcons " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											script_forward - > set_icon ( get_icon ( " Forward " ,  " EditorIcons " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											script_back - > set_icon ( get_icon ( " Back " ,  " EditorIcons " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-10-20 06:24:00 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-06-06 17:55:33 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											members_overview_alphabeta_sort_button - > set_icon ( get_icon ( " Sort " ,  " EditorIcons " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											filename - > add_style_override ( " normal " ,  editor - > get_gui_base ( ) - > get_stylebox ( " normal " ,  " LineEdit " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-10-20 06:24:00 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											recent_scripts - > set_as_minsize ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-07-26 16:02:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-12 02:36:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  CanvasItem : : NOTIFICATION_VISIBILITY_CHANGED :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( is_visible ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												find_in_files_button - > show ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												find_in_files - > hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												find_in_files_button - > hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-07-26 16:02:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-25 17:45:20 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  ScriptEditor : : can_take_away_focus ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-12 02:36:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ScriptEditorBase  * current  =  _get_current_editor ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( current ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  current - > can_lose_focus_on_node_selection ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-25 17:45:20 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2016-07-06 20:35:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : close_builtin_scripts_from_scene ( const  String  & p_scene )  {  
						 
					
						
							
								
									
										
										
										
											2016-07-06 20:35:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  tab_container - > get_child_count ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-06 20:35:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ScriptEditorBase  * se  =  Object : : cast_to < ScriptEditorBase > ( tab_container - > get_child ( i ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-06 20:35:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( se )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-06 20:35:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Ref < Script >  script  =  se - > get_edited_resource ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( script  = =  NULL  | |  ! script . is_valid ( ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-06 20:35:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( script - > get_path ( ) . find ( " :: " )  ! =  - 1  & &  script - > get_path ( ) . begins_with ( p_scene ) )  {  //is an internal script and belongs to scene being closed
 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-06 20:35:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												_close_tab ( i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												i - - ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-12-09 09:08:41 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : edited_scene_changed ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_update_modified_scripts_for_external_editor ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-07-06 09:18:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : notify_script_close ( const  Ref < Script >  & p_script )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_signal ( " script_close " ,  p_script ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : notify_script_changed ( const  Ref < Script >  & p_script )  {  
						 
					
						
							
								
									
										
										
										
											2017-07-19 19:47:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									emit_signal ( " editor_script_changed " ,  p_script ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-07-06 09:18:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  const  Node  * _find_node_with_script ( const  Node  * p_node ,  const  RefPtr  & p_script )  {  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_node - > get_script ( )  = =  p_script ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  p_node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  p_node - > get_child_count ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										const  Node  * result  =  _find_node_with_script ( p_node - > get_child ( i ) ,  p_script ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										if  ( result ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : get_breakpoints ( List < String >  * p_breakpoints )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  tab_container - > get_child_count ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ScriptEditorBase  * se  =  Object : : cast_to < ScriptEditorBase > ( tab_container - > get_child ( i ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! se ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Ref < Script >  script  =  se - > get_edited_resource ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( script  = =  NULL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										List < int >  bpoints ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										se - > get_breakpoints ( & bpoints ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										String  base  =  script - > get_path ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ERR_CONTINUE ( base . begins_with ( " local:// " )  | |  base  = =  " " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										for  ( List < int > : : Element  * E  =  bpoints . front ( ) ;  E ;  E  =  E - > next ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_breakpoints - > push_back ( base  +  " : "  +  itos ( E - > get ( )  +  1 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : ensure_focus_current ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! is_inside_tree ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-12 02:36:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ScriptEditorBase  * current  =  _get_current_editor ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( current ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										current - > ensure_focus ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-28 15:20:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _members_overview_selected ( int  p_idx )  {  
						 
					
						
							
								
									
										
										
										
											2018-02-12 02:36:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ScriptEditorBase  * se  =  _get_current_editor ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-28 15:20:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! se )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-09 17:35:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Go to the member's line and reset the cursor column. We can't change scroll_position
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// directly until we have gone to the line first, since code might be folded.
 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-12 21:40:12 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									se - > goto_line ( members_overview - > get_item_metadata ( p_idx ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Dictionary  state  =  se - > get_edit_state ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-10-08 14:29:27 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									state [ " column " ]  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-09 17:35:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									state [ " scroll_position " ]  =  members_overview - > get_item_metadata ( p_idx ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-10-08 14:29:27 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									se - > set_edit_state ( state ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-28 15:20:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 19:56:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _help_overview_selected ( int  p_idx )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Node  * current  =  tab_container - > get_child ( tab_container - > get_current_tab ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EditorHelp  * se  =  Object : : cast_to < EditorHelp > ( current ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! se )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									se - > scroll_to_section ( help_overview - > get_item_metadata ( p_idx ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _script_selected ( int  p_idx )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									grab_focus_block  =  ! Input : : get_singleton ( ) - > is_mouse_button_pressed ( 1 ) ;  //amazing hack, simply amazing
 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_go_to_tab ( script_list - > get_item_metadata ( p_idx ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									grab_focus_block  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : ensure_select_current ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( tab_container - > get_child_count ( )  & &  tab_container - > get_current_tab ( )  > =  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-12 02:36:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ScriptEditorBase  * se  =  _get_current_editor ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( se )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-13 10:45:50 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ! grab_focus_block  & &  is_visible_in_tree ( ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												se - > ensure_focus ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_selected_editor_menu ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _find_scripts ( Node  * p_base ,  Node  * p_current ,  Set < Ref < Script >  >  & used )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_current  ! =  p_base  & &  p_current - > get_owner ( )  ! =  p_base ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_current - > get_script_instance ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Ref < Script >  scr  =  p_current - > get_script ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( scr . is_valid ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											used . insert ( scr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  p_current - > get_child_count ( ) ;  i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_find_scripts ( p_base ,  p_current - > get_child ( i ) ,  used ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								struct  _ScriptEditorItemData  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  name ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-02 14:31:01 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  sort_key ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Ref < Texture >  icon ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  index ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  tooltip ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bool  used ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-18 09:20:46 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									int  category ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 21:42:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Node  * ref ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									bool  operator < ( const  _ScriptEditorItemData  & id )  const  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  category  = =  id . category  ?  sort_key  <  id . sort_key  :  category  <  id . category ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-28 15:20:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _update_members_overview_visibility ( )  {  
						 
					
						
							
								
									
										
										
										
											2017-07-22 14:02:34 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-12 02:36:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ScriptEditorBase  * se  =  _get_current_editor ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-28 15:20:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! se )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-06 06:18:11 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										members_overview_alphabeta_sort_button - > set_visible ( false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-28 15:20:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										members_overview - > set_visible ( false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-01 21:28:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										overview_vbox - > set_visible ( false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-28 15:20:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( members_overview_enabled  & &  se - > show_members_overview ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-06 06:18:11 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										members_overview_alphabeta_sort_button - > set_visible ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-28 15:20:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										members_overview - > set_visible ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-01 21:28:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										overview_vbox - > set_visible ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-28 15:20:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-06 06:18:11 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										members_overview_alphabeta_sort_button - > set_visible ( false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-28 15:20:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										members_overview - > set_visible ( false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-01 21:28:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										overview_vbox - > set_visible ( false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-28 15:20:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-04-30 14:27:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _toggle_members_overview_alpha_sort ( bool  p_alphabetic_sort )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EditorSettings : : get_singleton ( ) - > set ( " text_editor/tools/sort_members_outline_alphabetically " ,  p_alphabetic_sort ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_update_members_overview ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-28 15:20:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _update_members_overview ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									members_overview - > clear ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-12 02:36:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ScriptEditorBase  * se  =  _get_current_editor ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-28 15:20:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! se )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < String >  functions  =  se - > get_functions ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-04-30 14:27:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( EditorSettings : : get_singleton ( ) - > get ( " text_editor/tools/sort_members_outline_alphabetically " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										functions . sort ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-28 15:20:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  functions . size ( ) ;  i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										members_overview - > add_item ( functions [ i ] . get_slice ( " : " ,  0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										members_overview - > set_item_metadata ( i ,  functions [ i ] . get_slice ( " : " ,  1 ) . to_int ( )  -  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-06 06:18:11 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  path  =  se - > get_edited_resource ( ) - > get_path ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-06 06:18:11 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									bool  built_in  =  ! path . is_resource_file ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  name  =  built_in  ?  path . get_file ( )  :  se - > get_name ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									filename - > set_text ( name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-28 15:20:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 19:56:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _update_help_overview_visibility ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  selected  =  tab_container - > get_current_tab ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-10-14 18:51:35 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( selected  <  0  | |  selected  > =  tab_container - > get_child_count ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										help_overview - > set_visible ( false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 19:56:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-10-14 18:51:35 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 19:56:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Node  * current  =  tab_container - > get_child ( tab_container - > get_current_tab ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EditorHelp  * se  =  Object : : cast_to < EditorHelp > ( current ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! se )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										help_overview - > set_visible ( false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( help_overview_enabled )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-06 06:18:11 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										members_overview_alphabeta_sort_button - > set_visible ( false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 19:56:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										help_overview - > set_visible ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-01 21:28:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										overview_vbox - > set_visible ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-06 06:18:11 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										filename - > set_text ( se - > get_name ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 19:56:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										help_overview - > set_visible ( false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-01 21:28:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										overview_vbox - > set_visible ( false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 19:56:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : _update_help_overview ( )  {  
						 
					
						
							
								
									
										
										
										
											2017-10-14 18:51:35 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									help_overview - > clear ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 19:56:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  selected  =  tab_container - > get_current_tab ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( selected  <  0  | |  selected  > =  tab_container - > get_child_count ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Node  * current  =  tab_container - > get_child ( tab_container - > get_current_tab ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EditorHelp  * se  =  Object : : cast_to < EditorHelp > ( current ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! se )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < Pair < String ,  int >  >  sections  =  se - > get_sections ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  sections . size ( ) ;  i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										help_overview - > add_item ( sections [ i ] . first ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										help_overview - > set_item_metadata ( i ,  sections [ i ] . second ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _update_script_colors ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-05 19:41:36 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									bool  script_temperature_enabled  =  EditorSettings : : get_singleton ( ) - > get ( " text_editor/open_scripts/script_temperature_enabled " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bool  highlight_current  =  EditorSettings : : get_singleton ( ) - > get ( " text_editor/open_scripts/highlight_current_script " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-05 19:41:36 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									int  hist_size  =  EditorSettings : : get_singleton ( ) - > get ( " text_editor/open_scripts/script_temperature_history_size " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 14:07:05 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Color  hot_color  =  get_color ( " accent_color " ,  " Editor " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Color  cold_color  =  get_color ( " font_color " ,  " Editor " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  script_list - > get_item_count ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										int  c  =  script_list - > get_item_metadata ( i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Node  * n  =  tab_container - > get_child ( c ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! n ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										script_list - > set_item_custom_bg_color ( i ,  Color ( 0 ,  0 ,  0 ,  0 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-09-07 17:54:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										bool  current  =  tab_container - > get_current_tab ( )  = =  c ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( current  & &  highlight_current )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-12 11:45:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											script_list - > set_item_custom_bg_color ( i ,  EditorSettings : : get_singleton ( ) - > get ( " text_editor/open_scripts/current_script_background_color " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-15 15:35:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  if  ( script_temperature_enabled )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ! n - > has_meta ( " __editor_pass " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											int  pass  =  n - > get_meta ( " __editor_pass " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-15 15:35:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											int  h  =  edit_pass  -  pass ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( h  >  hist_size )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-15 15:35:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											int  non_zero_hist_size  =  ( hist_size  = =  0 )  ?  1  :  hist_size ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											float  v  =  Math : : ease ( ( edit_pass  -  pass )  /  float ( non_zero_hist_size ) ,  0.4 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-15 15:35:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-09-03 02:44:59 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											script_list - > set_item_custom_fg_color ( i ,  hot_color . linear_interpolate ( cold_color ,  v ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-07 17:54:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : _update_script_names ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-18 12:30:43 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( restoring_layout ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									waiting_update_names  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Set < Ref < Script >  >  used ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Node  * edited  =  EditorNode : : get_singleton ( ) - > get_edited_scene ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( edited )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_find_scripts ( edited ,  edited ,  used ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									script_list - > clear ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-05 19:41:36 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									bool  split_script_help  =  EditorSettings : : get_singleton ( ) - > get ( " text_editor/open_scripts/group_help_pages " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ScriptSortBy  sort_by  =  ( ScriptSortBy ) ( int ) EditorSettings : : get_singleton ( ) - > get ( " text_editor/open_scripts/sort_scripts_by " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ScriptListName  display_as  =  ( ScriptListName ) ( int ) EditorSettings : : get_singleton ( ) - > get ( " text_editor/open_scripts/list_script_names_as " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < _ScriptEditorItemData >  sedata ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  tab_container - > get_child_count ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ScriptEditorBase  * se  =  Object : : cast_to < ScriptEditorBase > ( tab_container - > get_child ( i ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( se )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Ref < Texture >  icon  =  se - > get_icon ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											String  path  =  se - > get_edited_resource ( ) - > get_path ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-16 15:04:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											bool  built_in  =  ! path . is_resource_file ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											String  name  =  built_in  ?  path . get_file ( )  :  se - > get_name ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_ScriptEditorItemData  sd ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											sd . icon  =  icon ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											sd . name  =  name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											sd . tooltip  =  path ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											sd . index  =  i ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											sd . used  =  used . has ( se - > get_edited_resource ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											sd . category  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 21:42:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											sd . ref  =  se ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-02-02 14:31:01 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											switch  ( sort_by )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  SORT_BY_NAME :  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													sd . sort_key  =  name . to_lower ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-02 14:31:01 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  SORT_BY_PATH :  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													sd . sort_key  =  path ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-02 14:31:01 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-14 11:32:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												case  SORT_BY_NONE :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													sd . sort_key  =  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-02 14:31:01 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-02-02 14:31:01 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											switch  ( display_as )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  DISPLAY_NAME :  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													sd . name  =  name ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-02 14:31:01 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  DISPLAY_DIR_AND_NAME :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( ! path . get_base_dir ( ) . get_file ( ) . empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														sd . name  =  path . get_base_dir ( ) . get_file ( )  +  " / "  +  name ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-02 14:31:01 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														sd . name  =  name ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-02 14:31:01 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												case  DISPLAY_FULL_PATH :  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													sd . name  =  path ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-02 14:31:01 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											sedata . push_back ( sd ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										EditorHelp  * eh  =  Object : : cast_to < EditorHelp > ( tab_container - > get_child ( i ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( eh )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-02 23:03:46 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											String  name  =  eh - > get_class ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Ref < Texture >  icon  =  get_icon ( " Help " ,  " EditorIcons " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-23 22:25:14 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											String  tooltip  =  name  +  TTR ( "  Class Reference " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_ScriptEditorItemData  sd ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											sd . icon  =  icon ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											sd . name  =  name ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 21:42:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											sd . sort_key  =  name . to_lower ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											sd . tooltip  =  tooltip ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											sd . index  =  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											sd . used  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											sd . category  =  split_script_help  ?  1  :  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 21:42:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											sd . ref  =  eh ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											sedata . push_back ( sd ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-19 10:39:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( _sort_list_on_update  & &  ! sedata . empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 21:42:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										sedata . sort ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// change actual order of tab_container so that the order can be rearranged by user
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										int  cur_tab  =  tab_container - > get_current_tab ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										int  prev_tab  =  tab_container - > get_previous_tab ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										int  new_cur_tab  =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										int  new_prev_tab  =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for  ( int  i  =  0 ;  i  <  sedata . size ( ) ;  i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											tab_container - > move_child ( sedata [ i ] . ref ,  i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( new_prev_tab  = =  - 1  & &  sedata [ i ] . index  = =  prev_tab )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												new_prev_tab  =  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( new_cur_tab  = =  - 1  & &  sedata [ i ] . index  = =  cur_tab )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												new_cur_tab  =  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										tab_container - > call_deferred ( " set_current_tab " ,  new_prev_tab ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										tab_container - > call_deferred ( " set_current_tab " ,  new_cur_tab ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_sort_list_on_update  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  sedata . size ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										script_list - > add_item ( sedata [ i ] . name ,  sedata [ i ] . icon ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										int  index  =  script_list - > get_item_count ( )  -  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										script_list - > set_item_tooltip ( index ,  sedata [ i ] . tooltip ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										script_list - > set_item_metadata ( index ,  sedata [ i ] . index ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( sedata [ i ] . used )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											script_list - > set_item_custom_bg_color ( index ,  Color ( 88  /  255.0 ,  88  /  255.0 ,  60  /  255.0 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( tab_container - > get_current_tab ( )  = =  sedata [ i ] . index )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											script_list - > select ( index ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											script_name_label - > set_text ( sedata [ i ] . name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											script_icon - > set_texture ( sedata [ i ] . icon ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-28 15:20:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_members_overview ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 19:56:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_help_overview ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-10-14 18:51:35 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_members_overview_visibility ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_update_help_overview_visibility ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_script_colors ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Ref < TextFile >  ScriptEditor : : _load_text_file ( const  String  & p_path ,  Error  * r_error )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( r_error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										* r_error  =  ERR_FILE_CANT_OPEN ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  local_path  =  ProjectSettings : : get_singleton ( ) - > localize_path ( p_path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  path  =  ResourceLoader : : path_remap ( local_path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									TextFile  * text_file  =  memnew ( TextFile ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Ref < TextFile >  text_res ( text_file ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Error  err  =  text_file - > load_text ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( err  ! =  OK )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ERR_FAIL_COND_V ( err  ! =  OK ,  RES ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									text_file - > set_file_path ( local_path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									text_file - > set_path ( local_path ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( r_error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										* r_error  =  OK ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  text_res ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Error  ScriptEditor : : _save_text_file ( Ref < TextFile >  p_text_file ,  const  String  & p_path )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Ref < TextFile >  sqscr  =  p_text_file ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_COND_V ( sqscr . is_null ( ) ,  ERR_INVALID_PARAMETER ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  source  =  sqscr - > get_text ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Error  err ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									FileAccess  * file  =  FileAccess : : open ( p_path ,  FileAccess : : WRITE ,  & err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ERR_FAIL_COND_V ( err ,  err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									file - > store_string ( source ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( file - > get_error ( )  ! =  OK  & &  file - > get_error ( )  ! =  ERR_FILE_EOF )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										memdelete ( file ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  ERR_CANT_CREATE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									file - > close ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									memdelete ( file ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_res_saved_callback ( sqscr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  OK ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								bool  ScriptEditor : : edit ( const  RES  & p_resource ,  int  p_line ,  int  p_col ,  bool  p_grab_focus )  {  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_resource . is_null ( ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-15 19:48:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Ref < Script >  script  =  p_resource ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-06 20:35:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// refuse to open built-in if scene is not loaded
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// see if already has it
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-05 19:41:36 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									bool  open_dominant  =  EditorSettings : : get_singleton ( ) - > get ( " text_editor/files/open_dominant_script_on_scene_change " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-14 12:34:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									const  bool  should_open  =  open_dominant  | |  ! EditorNode : : get_singleton ( ) - > is_changing_scene ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( script  ! =  NULL  & &  script - > get_language ( ) - > overrides_external_editor ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-14 12:34:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( should_open )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Error  err  =  script - > get_language ( ) - > open_in_external_editor ( script ,  p_line  > =  0  ?  p_line  :  0 ,  p_col ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-14 12:34:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( err  ! =  OK ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												ERR_PRINT ( " Couldn't open script in the overridden external text editor " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-03 21:23:36 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ( debugger - > get_dump_stack_script ( )  ! =  p_resource  | |  debugger - > get_debug_with_external_editor ( ) )  & & 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_resource - > get_path ( ) . is_resource_file ( )  & & 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-30 07:37:03 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_resource - > get_class_name ( )  ! =  StringName ( " VisualScript " )  & & 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-25 17:20:01 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											bool ( EditorSettings : : get_singleton ( ) - > get ( " text_editor/external/use_external_editor " ) ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-05 19:41:36 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										String  path  =  EditorSettings : : get_singleton ( ) - > get ( " text_editor/external/exec_path " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										String  flags  =  EditorSettings : : get_singleton ( ) - > get ( " text_editor/external/exec_flags " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-15 19:48:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										List < String >  args ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-15 19:48:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( flags . size ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-04 11:18:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											String  project_path  =  ProjectSettings : : get_singleton ( ) - > get_resource_path ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											String  script_path  =  ProjectSettings : : get_singleton ( ) - > globalize_path ( p_resource - > get_path ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-04 11:18:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											flags  =  flags . replacen ( " {line} " ,  itos ( p_line  >  0  ?  p_line  :  0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											flags  =  flags . replacen ( " {col} " ,  itos ( p_col ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											flags  =  flags . strip_edges ( ) . replace ( " \\ \\ " ,  " \\ " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											int  from  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											int  num_chars  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-15 19:48:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											bool  inside_quotes  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-04 11:18:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-15 19:48:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											for  ( int  i  =  0 ;  i  <  flags . size ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-04 11:18:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-15 19:48:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( flags [ i ]  = =  ' " '  & &  ( ! i  | |  flags [ i  -  1 ]  ! =  ' \\ ' ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-04 11:18:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( ! inside_quotes )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														from + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-15 19:48:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													inside_quotes  =  ! inside_quotes ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-04 11:18:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-15 19:48:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												}  else  if  ( flags [ i ]  = =  ' \0 '  | |  ( ! inside_quotes  & &  flags [ i ]  = =  '   ' ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-04 11:18:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													String  arg  =  flags . substr ( from ,  num_chars ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													// do path replacement here, else there will be issues with spaces and quotes
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													arg  =  arg . replacen ( " {project} " ,  project_path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													arg  =  arg . replacen ( " {file} " ,  script_path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													args . push_back ( arg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-15 19:48:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													from  =  i  +  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-04 11:18:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													num_chars  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-15 19:48:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-04 11:18:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													num_chars + + ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-15 19:48:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Error  err  =  OS : : get_singleton ( ) - > execute ( path ,  args ,  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( err  = =  OK ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-15 19:48:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										WARN_PRINT ( " Couldn't open external text editor, using internal " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  tab_container - > get_child_count ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ScriptEditorBase  * se  =  Object : : cast_to < ScriptEditorBase > ( tab_container - > get_child ( i ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! se ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-08-14 23:44:55 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ( script  ! =  NULL  & &  se - > get_edited_resource ( )  = =  p_resource )  | |  se - > get_edited_resource ( ) - > get_path ( )  = =  p_resource - > get_path ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-14 12:34:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( should_open )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( tab_container - > get_current_tab ( )  ! =  i )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													_go_to_tab ( i ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													script_list - > select ( script_list - > find_metadata ( i ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-13 10:45:50 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( is_visible_in_tree ( ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													se - > ensure_focus ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-15 19:48:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( p_line  > =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													se - > goto_line ( p_line  -  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-15 19:48:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											return  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// doesn't have it, make a new one
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ScriptEditorBase  * se ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  script_editor_func_count  -  1 ;  i  > =  0 ;  i - - )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										se  =  script_editor_funcs [ i ] ( p_resource ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( se ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-15 19:48:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_COND_V ( ! se ,  false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-11 10:01:52 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-04-02 12:41:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									bool  highlighter_set  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  syntax_highlighters_func_count ;  i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										SyntaxHighlighter  * highlighter  =  syntax_highlighters_funcs [ i ] ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										se - > add_syntax_highlighter ( highlighter ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( script  ! =  NULL  & &  ! highlighter_set )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-04-02 12:41:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											List < String >  languages  =  highlighter - > get_supported_languages ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( languages . find ( script - > get_language ( ) - > get_name ( ) ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-04-02 12:41:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												se - > set_syntax_highlighter ( highlighter ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												highlighter_set  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-09-17 13:19:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									tab_container - > add_child ( se ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									se - > set_edited_resource ( p_resource ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									se - > set_tooltip_request_func ( " _get_debug_tooltip " ,  this ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( se - > get_edit_menu ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										se - > get_edit_menu ( ) - > hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										menu_hb - > add_child ( se - > get_edit_menu ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										menu_hb - > move_child ( se - > get_edit_menu ( ) ,  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-25 17:45:20 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_grab_focus )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_go_to_tab ( tab_container - > get_tab_count ( )  -  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-25 17:45:20 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_script_names ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-18 12:30:43 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_save_layout ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									se - > connect ( " name_changed " ,  this ,  " _update_script_names " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-29 06:00:37 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									se - > connect ( " edited_script_changed " ,  this ,  " _script_changed " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									se - > connect ( " request_help_search " ,  this ,  " _help_search " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									se - > connect ( " request_open_script_at_line " ,  this ,  " _goto_script_line " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									se - > connect ( " go_to_help " ,  this ,  " _help_class_goto " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									se - > connect ( " request_save_history " ,  this ,  " _save_history " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-12 02:36:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									se - > connect ( " search_in_files_requested " ,  this ,  " _on_find_in_files_requested " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-19 22:07:07 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									//test for modification, maybe the script was not edited but was loaded
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_test_script_times_on_disk ( p_resource ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_update_modified_scripts_for_external_editor ( p_resource ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-15 19:48:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_line  > =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										se - > goto_line ( p_line  -  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									notify_script_changed ( p_resource ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_add_recent_script ( p_resource - > get_path ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-15 19:48:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 21:10:52 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : save_all_scripts ( )  {  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  tab_container - > get_child_count ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ScriptEditorBase  * se  =  Object : : cast_to < ScriptEditorBase > ( tab_container - > get_child ( i ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! se ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-17 14:46:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( convert_indent_on_save )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( use_space_indentation )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												se - > convert_indent_to_spaces ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												se - > convert_indent_to_tabs ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-23 19:19:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( trim_trailing_whitespace_on_save )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											se - > trim_trailing_whitespace ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! se - > is_unsaved ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										RES  edited_res  =  se - > get_edited_resource ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( edited_res . is_valid ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											se - > apply_code ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-11 21:59:35 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( edited_res - > get_path ( )  ! =  " "  & &  edited_res - > get_path ( ) . find ( " local:// " )  = =  - 1  & &  edited_res - > get_path ( ) . find ( " :: " )  = =  - 1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Ref < TextFile >  text_file  =  edited_res ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( text_file  ! =  NULL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												_save_text_file ( text_file ,  text_file - > get_path ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											editor - > save_resource ( edited_res ) ;  //external script, save it
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-06 19:00:54 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_script_names ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-15 19:29:00 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									EditorFileSystem : : get_singleton ( ) - > update_script_classes ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : apply_scripts ( )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  tab_container - > get_child_count ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ScriptEditorBase  * se  =  Object : : cast_to < ScriptEditorBase > ( tab_container - > get_child ( i ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! se ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											continue ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										se - > apply_code ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-12-13 11:41:28 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : open_script_create_dialog ( const  String  & p_base_name ,  const  String  & p_base_path )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_menu_option ( FILE_NEW ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									script_create_dialog - > config ( p_base_name ,  p_base_path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : _editor_play ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									debugger - > start ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-22 08:54:38 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > grab_focus ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > set_item_disabled ( debug_menu - > get_popup ( ) - > get_item_index ( DEBUG_NEXT ) ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > set_item_disabled ( debug_menu - > get_popup ( ) - > get_item_index ( DEBUG_STEP ) ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > set_item_disabled ( debug_menu - > get_popup ( ) - > get_item_index ( DEBUG_BREAK ) ,  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > set_item_disabled ( debug_menu - > get_popup ( ) - > get_item_index ( DEBUG_CONTINUE ) ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									//debugger_gui->start_listening(Globals::get_singleton()->get("debug/debug_port"));
 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : _editor_pause ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : _editor_stop ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									debugger - > stop ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > set_item_disabled ( debug_menu - > get_popup ( ) - > get_item_index ( DEBUG_NEXT ) ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > set_item_disabled ( debug_menu - > get_popup ( ) - > get_item_index ( DEBUG_STEP ) ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > set_item_disabled ( debug_menu - > get_popup ( ) - > get_item_index ( DEBUG_BREAK ) ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > set_item_disabled ( debug_menu - > get_popup ( ) - > get_item_index ( DEBUG_CONTINUE ) ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-06 19:00:54 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  tab_container - > get_child_count ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-06 19:00:54 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ScriptEditorBase  * se  =  Object : : cast_to < ScriptEditorBase > ( tab_container - > get_child ( i ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-06 19:00:54 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! se )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										se - > set_debugger_active ( false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _add_callback ( Object  * p_obj ,  const  String  & p_function ,  const  PoolStringArray  & p_args )  {  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_COND ( ! p_obj ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Ref < Script >  script  =  p_obj - > get_script ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_COND ( ! script . is_valid ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									editor - > push_item ( script . ptr ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  tab_container - > get_child_count ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ScriptEditorBase  * se  =  Object : : cast_to < ScriptEditorBase > ( tab_container - > get_child ( i ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! se ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											continue ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( se - > get_edited_resource ( )  ! =  script ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										se - > add_callback ( p_function ,  p_args ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_go_to_tab ( i ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										script_list - > select ( script_list - > find_metadata ( i ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-18 12:30:43 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _save_layout ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( restoring_layout )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									editor - > save_layout ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-05-04 23:32:40 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _editor_settings_changed ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-05 19:41:36 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									trim_trailing_whitespace_on_save  =  EditorSettings : : get_singleton ( ) - > get ( " text_editor/files/trim_trailing_whitespace_on_save " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-17 14:24:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									convert_indent_on_save  =  EditorSettings : : get_singleton ( ) - > get ( " text_editor/indent/convert_indent_on_save " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-26 12:14:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									use_space_indentation  =  EditorSettings : : get_singleton ( ) - > get ( " text_editor/indent/type " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-17 14:24:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-28 15:20:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									members_overview_enabled  =  EditorSettings : : get_singleton ( ) - > get ( " text_editor/open_scripts/show_members_overview " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 19:56:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									help_overview_enabled  =  EditorSettings : : get_singleton ( ) - > get ( " text_editor/help/show_help_index " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-28 15:20:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_members_overview_visibility ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 19:56:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_help_overview_visibility ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-28 15:20:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-05 19:41:36 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									float  autosave_time  =  EditorSettings : : get_singleton ( ) - > get ( " text_editor/files/autosave_interval_secs " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( autosave_time  >  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-04 23:32:40 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										autosave_timer - > set_wait_time ( autosave_time ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										autosave_timer - > start ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										autosave_timer - > stop ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-12 15:45:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( current_theme  = =  " " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-05 19:41:36 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										current_theme  =  EditorSettings : : get_singleton ( ) - > get ( " text_editor/theme/color_theme " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if  ( current_theme  ! =  EditorSettings : : get_singleton ( ) - > get ( " text_editor/theme/color_theme " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										current_theme  =  EditorSettings : : get_singleton ( ) - > get ( " text_editor/theme/color_theme " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-12 15:45:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										EditorSettings : : get_singleton ( ) - > load_text_editor_theme ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  tab_container - > get_child_count ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-01 09:52:01 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ScriptEditorBase  * se  =  Object : : cast_to < ScriptEditorBase > ( tab_container - > get_child ( i ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! se ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-01 09:52:01 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										se - > update_settings ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-01 09:52:01 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-12 15:19:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_script_colors ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-02 14:31:01 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_script_names ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-01 09:52:01 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ScriptServer : : set_reload_scripts_on_save ( EDITOR_DEF ( " text_editor/files/auto_reload_and_parse_scripts_on_save " ,  true ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-04 23:32:40 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : _autosave_scripts ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 21:10:52 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									save_all_scripts ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-04 23:32:40 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _tree_changed ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( waiting_update_names ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									waiting_update_names  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									call_deferred ( " _update_script_names " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : _script_split_dragged ( float )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-18 12:30:43 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_save_layout ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-12 14:21:09 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Variant  ScriptEditor : : get_drag_data_fw ( const  Point2  & p_point ,  Control  * p_from )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Node  * cur_node  =  tab_container - > get_child ( tab_container - > get_current_tab ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 21:42:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-12 14:21:09 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									HBoxContainer  * drag_preview  =  memnew ( HBoxContainer ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  preview_name  =  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Ref < Texture >  preview_icon ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ScriptEditorBase  * se  =  Object : : cast_to < ScriptEditorBase > ( cur_node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( se )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										preview_name  =  se - > get_name ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										preview_icon  =  se - > get_icon ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EditorHelp  * eh  =  Object : : cast_to < EditorHelp > ( cur_node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( eh )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										preview_name  =  eh - > get_class ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										preview_icon  =  get_icon ( " Help " ,  " EditorIcons " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! preview_icon . is_null ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										TextureRect  * tf  =  memnew ( TextureRect ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										tf - > set_texture ( preview_icon ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										drag_preview - > add_child ( tf ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Label  * label  =  memnew ( Label ( preview_name ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									drag_preview - > add_child ( label ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_drag_preview ( drag_preview ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Dictionary  drag_data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									drag_data [ " type " ]  =  " script_list_element " ;  // using a custom type because node caused problems when dragging to scene tree
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									drag_data [ " script_list_element " ]  =  cur_node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  drag_data ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 21:42:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2017-11-12 14:21:09 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 21:42:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  ScriptEditor : : can_drop_data_fw ( const  Point2  & p_point ,  const  Variant  & p_data ,  Control  * p_from )  const  {  
						 
					
						
							
								
									
										
										
										
											2017-11-12 14:21:09 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Dictionary  d  =  p_data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! d . has ( " type " ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( String ( d [ " type " ] )  = =  " script_list_element " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Node  * node  =  d [ " script_list_element " ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ScriptEditorBase  * se  =  Object : : cast_to < ScriptEditorBase > ( node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( se )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										EditorHelp  * eh  =  Object : : cast_to < EditorHelp > ( node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( eh )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( String ( d [ " type " ] )  = =  " nodes " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Array  nodes  =  d [ " nodes " ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( nodes . size ( )  = =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Node  * node  =  get_node ( ( nodes [ 0 ] ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ScriptEditorBase  * se  =  Object : : cast_to < ScriptEditorBase > ( node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( se )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										EditorHelp  * eh  =  Object : : cast_to < EditorHelp > ( node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( eh )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( String ( d [ " type " ] )  = =  " files " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Vector < String >  files  =  d [ " files " ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( files . size ( )  = =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  false ;  //weird
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for  ( int  i  =  0 ;  i  <  files . size ( ) ;  i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											String  file  =  files [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( file  = =  " "  | |  ! FileAccess : : exists ( file ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Ref < Script >  scr  =  ResourceLoader : : load ( file ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( scr . is_valid ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 21:42:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2017-11-12 14:21:09 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 21:42:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : drop_data_fw ( const  Point2  & p_point ,  const  Variant  & p_data ,  Control  * p_from )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-12 14:21:09 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! can_drop_data_fw ( p_point ,  p_data ,  p_from ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Dictionary  d  =  p_data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! d . has ( " type " ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( String ( d [ " type " ] )  = =  " script_list_element " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Node  * node  =  d [ " script_list_element " ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ScriptEditorBase  * se  =  Object : : cast_to < ScriptEditorBase > ( node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										EditorHelp  * eh  =  Object : : cast_to < EditorHelp > ( node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( se  | |  eh )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											int  new_index  =  script_list - > get_item_at_position ( p_point ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											tab_container - > move_child ( node ,  new_index ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											tab_container - > set_current_tab ( new_index ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_update_script_names ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( String ( d [ " type " ] )  = =  " nodes " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Array  nodes  =  d [ " nodes " ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( nodes . size ( )  = =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Node  * node  =  get_node ( nodes [ 0 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ScriptEditorBase  * se  =  Object : : cast_to < ScriptEditorBase > ( node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										EditorHelp  * eh  =  Object : : cast_to < EditorHelp > ( node ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( se  | |  eh )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											int  new_index  =  script_list - > get_item_at_position ( p_point ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											tab_container - > move_child ( node ,  new_index ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											tab_container - > set_current_tab ( new_index ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_update_script_names ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( String ( d [ " type " ] )  = =  " files " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Vector < String >  files  =  d [ " files " ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										int  new_index  =  script_list - > get_item_at_position ( p_point ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										int  num_tabs_before  =  tab_container - > get_child_count ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for  ( int  i  =  0 ;  i  <  files . size ( ) ;  i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											String  file  =  files [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( file  = =  " "  | |  ! FileAccess : : exists ( file ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Ref < Script >  scr  =  ResourceLoader : : load ( file ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( scr . is_valid ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												edit ( scr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( tab_container - > get_child_count ( )  >  num_tabs_before )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													tab_container - > move_child ( tab_container - > get_child ( tab_container - > get_child_count ( )  -  1 ) ,  new_index ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													num_tabs_before  =  tab_container - > get_child_count ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													tab_container - > move_child ( tab_container - > get_child ( tab_container - > get_current_tab ( ) ) ,  new_index ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										tab_container - > set_current_tab ( new_index ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_update_script_names ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 21:42:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-20 12:38:03 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _unhandled_input ( const  Ref < InputEvent >  & p_event )  {  
						 
					
						
							
								
									
										
										
										
											2017-11-12 14:21:09 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! is_visible_in_tree ( )  | |  ! p_event - > is_pressed ( )  | |  p_event - > is_echo ( ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 21:42:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-25 19:02:17 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ED_IS_SHORTCUT ( " script_editor/next_script " ,  p_event ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										int  next_tab  =  script_list - > get_current ( )  +  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										next_tab  % =  script_list - > get_item_count ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_go_to_tab ( script_list - > get_item_metadata ( next_tab ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_update_script_names ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ED_IS_SHORTCUT ( " script_editor/prev_script " ,  p_event ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										int  next_tab  =  script_list - > get_current ( )  -  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										next_tab  =  next_tab  > =  0  ?  next_tab  :  script_list - > get_item_count ( )  -  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_go_to_tab ( script_list - > get_item_metadata ( next_tab ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_update_script_names ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 21:42:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ED_IS_SHORTCUT ( " script_editor/window_move_up " ,  p_event ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_menu_option ( WINDOW_MOVE_UP ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ED_IS_SHORTCUT ( " script_editor/window_move_down " ,  p_event ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_menu_option ( WINDOW_MOVE_DOWN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-25 19:02:17 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 16:36:46 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _script_list_gui_input ( const  Ref < InputEvent >  & ev )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-12 14:21:09 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Ref < InputEventMouseButton >  mb  =  ev ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-08-10 10:37:04 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( mb . is_valid ( )  & &  mb - > is_pressed ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										switch  ( mb - > get_button_index ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											case  BUTTON_MIDDLE :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// Right-click selects automatically; middle-click does not.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												int  idx  =  script_list - > get_item_at_position ( mb - > get_position ( ) ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( idx  > =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													script_list - > select ( idx ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													_script_selected ( idx ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													_menu_option ( FILE_CLOSE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 16:36:46 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-08-10 10:37:04 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											case  BUTTON_RIGHT :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												_make_script_list_context_menu ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 16:36:46 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : _make_script_list_context_menu ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									context_menu - > clear ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  selected  =  tab_container - > get_current_tab ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( selected  <  0  | |  selected  > =  tab_container - > get_child_count ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ScriptEditorBase  * se  =  Object : : cast_to < ScriptEditorBase > ( tab_container - > get_child ( selected ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( se )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										context_menu - > add_shortcut ( ED_GET_SHORTCUT ( " script_editor/save " ) ,  FILE_SAVE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										context_menu - > add_shortcut ( ED_GET_SHORTCUT ( " script_editor/save_as " ) ,  FILE_SAVE_AS ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-02 02:10:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									context_menu - > add_shortcut ( ED_GET_SHORTCUT ( " script_editor/close_file " ) ,  FILE_CLOSE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									context_menu - > add_shortcut ( ED_GET_SHORTCUT ( " script_editor/close_all " ) ,  CLOSE_ALL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									context_menu - > add_shortcut ( ED_GET_SHORTCUT ( " script_editor/close_other_tabs " ) ,  CLOSE_OTHER_TABS ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									context_menu - > add_separator ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( se )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-25 19:20:11 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Ref < Script >  scr  =  se - > get_edited_resource ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( scr  ! =  NULL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											context_menu - > add_shortcut ( ED_GET_SHORTCUT ( " script_editor/reload_script_soft " ) ,  FILE_TOOL_RELOAD_SOFT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ! scr . is_null ( )  & &  scr - > is_tool ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												context_menu - > add_shortcut ( ED_GET_SHORTCUT ( " script_editor/run_file " ) ,  FILE_RUN ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-02 02:10:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												context_menu - > add_separator ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-07-25 19:20:11 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 16:36:46 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-02 02:10:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										context_menu - > add_shortcut ( ED_GET_SHORTCUT ( " script_editor/copy_path " ) ,  FILE_COPY_PATH ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										context_menu - > add_shortcut ( ED_GET_SHORTCUT ( " script_editor/show_in_file_system " ) ,  SHOW_IN_FILE_SYSTEM ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										context_menu - > add_separator ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 16:36:46 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 21:42:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									context_menu - > add_shortcut ( ED_GET_SHORTCUT ( " script_editor/window_move_up " ) ,  WINDOW_MOVE_UP ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									context_menu - > add_shortcut ( ED_GET_SHORTCUT ( " script_editor/window_move_down " ) ,  WINDOW_MOVE_DOWN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									context_menu - > add_shortcut ( ED_GET_SHORTCUT ( " script_editor/window_sort " ) ,  WINDOW_SORT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 16:36:46 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									context_menu - > add_shortcut ( ED_GET_SHORTCUT ( " script_editor/toggle_scripts_panel " ) ,  TOGGLE_SCRIPTS_PANEL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									context_menu - > set_position ( get_global_transform ( ) . xform ( get_local_mouse_position ( ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									context_menu - > set_size ( Vector2 ( 1 ,  1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									context_menu - > popup ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : set_window_layout ( Ref < ConfigFile >  p_layout )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! bool ( EDITOR_DEF ( " text_editor/files/restore_scripts_on_load " ,  true ) ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! p_layout - > has_section_key ( " ScriptEditor " ,  " open_scripts " )  & &  ! p_layout - > has_section_key ( " ScriptEditor " ,  " open_help " ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Array  scripts  =  p_layout - > get_value ( " ScriptEditor " ,  " open_scripts " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Array  helps ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_layout - > has_section_key ( " ScriptEditor " ,  " open_help " ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										helps  =  p_layout - > get_value ( " ScriptEditor " ,  " open_help " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									restoring_layout  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									List < String >  extensions ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ResourceLoader : : get_recognized_extensions_for_type ( " Script " ,  & extensions ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  scripts . size ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										String  path  =  scripts [ i ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-07 21:27:20 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! FileAccess : : exists ( path ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											continue ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( extensions . find ( path . get_extension ( ) ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Ref < Script >  scr  =  ResourceLoader : : load ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( scr . is_valid ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												edit ( scr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Error  error ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Ref < TextFile >  text_file  =  _load_text_file ( path ,  & error ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( error  = =  OK  & &  text_file . is_valid ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											edit ( text_file ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											continue ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  helps . size ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										String  path  =  helps [ i ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-07-02 12:31:08 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( path  = =  " " )  {  // invalid, skip
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_help_class_open ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  tab_container - > get_child_count ( ) ;  i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										tab_container - > get_child ( i ) - > set_meta ( " __editor_pass " ,  Variant ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_layout - > has_section_key ( " ScriptEditor " ,  " split_offset " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										script_split - > set_split_offset ( p_layout - > get_value ( " ScriptEditor " ,  " split_offset " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									restoring_layout  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-18 12:30:43 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_script_names ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : get_window_layout ( Ref < ConfigFile >  p_layout )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Array  scripts ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Array  helps ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  tab_container - > get_child_count ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ScriptEditorBase  * se  =  Object : : cast_to < ScriptEditorBase > ( tab_container - > get_child ( i ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( se )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											String  path  =  se - > get_edited_resource ( ) - > get_path ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ! path . is_resource_file ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											scripts . push_back ( path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										EditorHelp  * eh  =  Object : : cast_to < EditorHelp > ( tab_container - > get_child ( i ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( eh )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-02 23:03:46 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											helps . push_back ( eh - > get_class ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									p_layout - > set_value ( " ScriptEditor " ,  " open_scripts " ,  scripts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									p_layout - > set_value ( " ScriptEditor " ,  " open_help " ,  helps ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									p_layout - > set_value ( " ScriptEditor " ,  " split_offset " ,  script_split - > get_split_offset ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _help_class_open ( const  String  & p_class )  {  
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_class  = =  " " ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-11-24 20:46:55 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  tab_container - > get_child_count ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										EditorHelp  * eh  =  Object : : cast_to < EditorHelp > ( tab_container - > get_child ( i ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( eh  & &  eh - > get_class ( )  = =  p_class )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_go_to_tab ( i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_update_script_names ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									EditorHelp  * eh  =  memnew ( EditorHelp ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									eh - > set_name ( p_class ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									tab_container - > add_child ( eh ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_go_to_tab ( tab_container - > get_tab_count ( )  -  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									eh - > go_to_class ( p_class ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									eh - > connect ( " go_to_help " ,  this ,  " _help_class_goto " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 22:31:36 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_add_recent_script ( p_class ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_script_names ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-18 12:30:43 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_save_layout ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _help_class_goto ( const  String  & p_desc )  {  
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  cname  =  p_desc . get_slice ( " : " ,  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  tab_container - > get_child_count ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										EditorHelp  * eh  =  Object : : cast_to < EditorHelp > ( tab_container - > get_child ( i ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( eh  & &  eh - > get_class ( )  = =  cname )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_go_to_tab ( i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											eh - > go_to_help ( p_desc ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_update_script_names ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									EditorHelp  * eh  =  memnew ( EditorHelp ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									eh - > set_name ( cname ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									tab_container - > add_child ( eh ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_go_to_tab ( tab_container - > get_tab_count ( )  -  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									eh - > go_to_help ( p_desc ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									eh - > connect ( " go_to_help " ,  this ,  " _help_class_goto " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 22:31:36 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_add_recent_script ( eh - > get_class ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_script_names ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-18 12:30:43 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_save_layout ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _update_selected_editor_menu ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  tab_container - > get_child_count ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										bool  current  =  tab_container - > get_current_tab ( )  = =  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ScriptEditorBase  * se  =  Object : : cast_to < ScriptEditorBase > ( tab_container - > get_child ( i ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( se  & &  se - > get_edit_menu ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( current ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												se - > get_edit_menu ( ) - > show ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												se - > get_edit_menu ( ) - > hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									EditorHelp  * eh  =  Object : : cast_to < EditorHelp > ( tab_container - > get_current_tab_control ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-10-31 00:07:16 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( eh )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										script_search_menu - > show ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										script_search_menu - > hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _update_history_pos ( int  p_new_pos )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Node  * n  =  tab_container - > get_current_tab_control ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( Object : : cast_to < ScriptEditorBase > ( n ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-25 03:11:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										history . write [ history_pos ] . state  =  Object : : cast_to < ScriptEditorBase > ( n ) - > get_edit_state ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( Object : : cast_to < EditorHelp > ( n ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-25 03:11:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										history . write [ history_pos ] . state  =  Object : : cast_to < EditorHelp > ( n ) - > get_scroll ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									history_pos  =  p_new_pos ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									tab_container - > set_current_tab ( history [ history_pos ] . control - > get_index ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									n  =  history [ history_pos ] . control ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( Object : : cast_to < ScriptEditorBase > ( n ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Object : : cast_to < ScriptEditorBase > ( n ) - > set_edit_state ( history [ history_pos ] . state ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Object : : cast_to < ScriptEditorBase > ( n ) - > ensure_focus ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-07-06 09:18:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Ref < Script >  script  =  Object : : cast_to < ScriptEditorBase > ( n ) - > get_edited_resource ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( script  ! =  NULL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											notify_script_changed ( script ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( Object : : cast_to < EditorHelp > ( n ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Object : : cast_to < EditorHelp > ( n ) - > set_scroll ( history [ history_pos ] . state ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Object : : cast_to < EditorHelp > ( n ) - > set_focused ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									n - > set_meta ( " __editor_pass " ,  + + edit_pass ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_script_names ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_update_history_arrows ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_selected_editor_menu ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : _history_forward ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( history_pos  <  history . size ( )  -  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_update_history_pos ( history_pos  +  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _history_back ( )  {  
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( history_pos  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_update_history_pos ( history_pos  -  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2017-07-06 09:18:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-07-19 19:47:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector < Ref < Script >  >  ScriptEditor : : get_open_scripts ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2017-07-06 09:18:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Vector < Ref < Script >  >  out_scripts  =  Vector < Ref < Script >  > ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  tab_container - > get_child_count ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ScriptEditorBase  * se  =  Object : : cast_to < ScriptEditorBase > ( tab_container - > get_child ( i ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-07-06 09:18:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! se ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											continue ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Ref < Script >  script  =  se - > get_edited_resource ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( script  ! =  NULL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											out_scripts . push_back ( script ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2017-07-06 09:18:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  out_scripts ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : set_scene_root_script ( Ref < Script >  p_script )  {  
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-05 19:41:36 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									bool  open_dominant  =  EditorSettings : : get_singleton ( ) - > get ( " text_editor/files/open_dominant_script_on_scene_change " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-14 08:28:01 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-05 19:41:36 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( bool ( EditorSettings : : get_singleton ( ) - > get ( " text_editor/external/use_external_editor " ) ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-14 08:21:18 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-06 20:35:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( open_dominant  & &  p_script . is_valid ( )  & &  _can_open_in_editor ( p_script . ptr ( ) ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										edit ( p_script ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-15 19:48:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								bool  ScriptEditor : : script_goto_method ( Ref < Script >  p_script ,  const  String  & p_method )  {  
						 
					
						
							
								
									
										
										
										
											2016-06-12 01:01:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-15 19:48:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									int  line  =  p_script - > get_member_line ( p_method ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-12 01:01:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-15 19:48:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( line  = =  - 1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  edit ( p_script ,  line ,  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2016-06-12 01:01:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : set_live_auto_reload_running_scripts ( bool  p_enabled )  {  
						 
					
						
							
								
									
										
										
										
											2016-06-12 01:01:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									auto_reload_running_scripts  =  p_enabled ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2016-06-12 01:01:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-26 15:34:41 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _help_index ( String  p_text )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									help_index - > popup ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _help_search ( String  p_text )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									help_search_dialog - > popup ( p_text ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2016-06-12 01:01:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _open_script_request ( const  String  & p_path )  {  
						 
					
						
							
								
									
										
										
										
											2016-08-25 17:45:20 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Ref < Script >  script  =  ResourceLoader : : load ( p_path ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( script . is_valid ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										script_editor - > edit ( script ,  false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Error  err ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Ref < TextFile >  text_file  =  script_editor - > _load_text_file ( p_path ,  & err ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( text_file . is_valid ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										script_editor - > edit ( text_file ,  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-25 17:45:20 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2016-06-12 01:01:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-04-02 12:41:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  ScriptEditor : : syntax_highlighters_func_count  =  0 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CreateSyntaxHighlighterFunc  ScriptEditor : : syntax_highlighters_funcs [ ScriptEditor : : SYNTAX_HIGHLIGHTER_FUNC_MAX ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : register_create_syntax_highlighter_function ( CreateSyntaxHighlighterFunc  p_func )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_COND ( syntax_highlighters_func_count  = =  SYNTAX_HIGHLIGHTER_FUNC_MAX ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									syntax_highlighters_funcs [ syntax_highlighters_func_count + + ]  =  p_func ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  ScriptEditor : : script_editor_func_count  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CreateScriptEditorFunc  ScriptEditor : : script_editor_funcs [ ScriptEditor : : SCRIPT_EDITOR_FUNC_MAX ] ;  
						 
					
						
							
								
									
										
										
										
											2016-06-12 01:01:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : register_create_script_editor_function ( CreateScriptEditorFunc  p_func )  {  
						 
					
						
							
								
									
										
										
										
											2016-06-03 12:34:11 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_COND ( script_editor_func_count  = =  SCRIPT_EDITOR_FUNC_MAX ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									script_editor_funcs [ script_editor_func_count + + ]  =  p_func ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-03 12:34:11 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-18 16:43:23 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _script_changed ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NodeDock : : singleton - > update_lists ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-12 02:36:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _on_find_in_files_requested ( String  text )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									find_in_files_dialog - > set_search_text ( text ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									find_in_files_dialog - > popup_centered_minsize ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : _on_find_in_files_result_selected ( String  fpath ,  int  line_number ,  int  begin ,  int  end )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									RES  res  =  ResourceLoader : : load ( fpath ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-12 02:36:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									edit ( res ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ScriptEditorBase  * seb  =  _get_current_editor ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ScriptTextEditor  * ste  =  Object : : cast_to < ScriptTextEditor > ( seb ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ste )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ste - > goto_line_selection ( line_number  -  1 ,  begin ,  end ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : _start_find_in_files ( bool  with_replace )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									FindInFiles  * f  =  find_in_files - > get_finder ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									f - > set_search_text ( find_in_files_dialog - > get_search_text ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									f - > set_match_case ( find_in_files_dialog - > is_match_case ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									f - > set_whole_words ( find_in_files_dialog - > is_match_case ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									f - > set_folder ( find_in_files_dialog - > get_folder ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									f - > set_filter ( find_in_files_dialog - > get_filter ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									find_in_files - > set_with_replace ( with_replace ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									find_in_files - > start_search ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									find_in_files_button - > set_pressed ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									find_in_files - > show ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditor : : _on_find_in_files_modified_files ( PoolStringArray  paths )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_test_script_times_on_disk ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_update_modified_scripts_for_external_editor ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditor : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _file_dialog_action " ,  & ScriptEditor : : _file_dialog_action ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _tab_changed " ,  & ScriptEditor : : _tab_changed ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _menu_option " ,  & ScriptEditor : : _menu_option ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _close_current_tab " ,  & ScriptEditor : : _close_current_tab ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-02 19:45:59 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _close_discard_current_tab " ,  & ScriptEditor : : _close_discard_current_tab ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-02 23:03:46 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _close_docs_tab " ,  & ScriptEditor : : _close_docs_tab ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _close_all_tabs " ,  & ScriptEditor : : _close_all_tabs ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-20 13:15:40 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _close_other_tabs " ,  & ScriptEditor : : _close_other_tabs ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-27 16:07:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _open_recent_script " ,  & ScriptEditor : : _open_recent_script ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-21 12:10:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _theme_option " ,  & ScriptEditor : : _theme_option ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _editor_play " ,  & ScriptEditor : : _editor_play ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _editor_pause " ,  & ScriptEditor : : _editor_pause ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _editor_stop " ,  & ScriptEditor : : _editor_stop ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _add_callback " ,  & ScriptEditor : : _add_callback ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _reload_scripts " ,  & ScriptEditor : : _reload_scripts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _resave_scripts " ,  & ScriptEditor : : _resave_scripts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _res_saved_callback " ,  & ScriptEditor : : _res_saved_callback ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _goto_script_line " ,  & ScriptEditor : : _goto_script_line ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _goto_script_line2 " ,  & ScriptEditor : : _goto_script_line2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _help_search " ,  & ScriptEditor : : _help_search ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-26 15:34:41 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _help_index " ,  & ScriptEditor : : _help_index ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _save_history " ,  & ScriptEditor : : _save_history ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-07 11:57:41 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _copy_script_path " ,  & ScriptEditor : : _copy_script_path ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _breaked " ,  & ScriptEditor : : _breaked ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _show_debugger " ,  & ScriptEditor : : _show_debugger ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _get_debug_tooltip " ,  & ScriptEditor : : _get_debug_tooltip ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _autosave_scripts " ,  & ScriptEditor : : _autosave_scripts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _editor_settings_changed " ,  & ScriptEditor : : _editor_settings_changed ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _update_script_names " ,  & ScriptEditor : : _update_script_names ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _tree_changed " ,  & ScriptEditor : : _tree_changed ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-28 15:20:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _members_overview_selected " ,  & ScriptEditor : : _members_overview_selected ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 19:56:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _help_overview_selected " ,  & ScriptEditor : : _help_overview_selected ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _script_selected " ,  & ScriptEditor : : _script_selected ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _script_created " ,  & ScriptEditor : : _script_created ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _script_split_dragged " ,  & ScriptEditor : : _script_split_dragged ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _help_class_open " ,  & ScriptEditor : : _help_class_open ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _help_class_goto " ,  & ScriptEditor : : _help_class_goto ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _request_help " ,  & ScriptEditor : : _help_class_open ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _history_forward " ,  & ScriptEditor : : _history_forward ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _history_back " ,  & ScriptEditor : : _history_back ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _live_auto_reload_running_scripts " ,  & ScriptEditor : : _live_auto_reload_running_scripts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _unhandled_input " ,  & ScriptEditor : : _unhandled_input ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 16:36:46 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _script_list_gui_input " ,  & ScriptEditor : : _script_list_gui_input ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-04-30 14:27:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _toggle_members_overview_alpha_sort " ,  & ScriptEditor : : _toggle_members_overview_alpha_sort ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _update_members_overview " ,  & ScriptEditor : : _update_members_overview ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-18 16:43:23 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _script_changed " ,  & ScriptEditor : : _script_changed ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-10-11 16:24:57 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _update_recent_scripts " ,  & ScriptEditor : : _update_recent_scripts ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-12 02:36:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _on_find_in_files_requested " ,  & ScriptEditor : : _on_find_in_files_requested ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _start_find_in_files " ,  & ScriptEditor : : _start_find_in_files ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _on_find_in_files_result_selected " ,  & ScriptEditor : : _on_find_in_files_result_selected ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _on_find_in_files_modified_files " ,  & ScriptEditor : : _on_find_in_files_modified_files ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-07-06 09:18:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-12-25 21:19:56 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_drag_data_fw " ,  " point " ,  " from " ) ,  & ScriptEditor : : get_drag_data_fw ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " can_drop_data_fw " ,  " point " ,  " data " ,  " from " ) ,  & ScriptEditor : : can_drop_data_fw ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " drop_data_fw " ,  " point " ,  " data " ,  " from " ) ,  & ScriptEditor : : drop_data_fw ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-12 14:21:09 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-07-06 09:18:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_current_script " ) ,  & ScriptEditor : : _get_current_script ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-07-19 19:47:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " get_open_scripts " ) ,  & ScriptEditor : : _get_open_scripts ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-13 11:41:28 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( D_METHOD ( " open_script_create_dialog " ,  " base_name " ,  " base_path " ) ,  & ScriptEditor : : open_script_create_dialog ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-07-06 09:18:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-29 07:15:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_SIGNAL ( MethodInfo ( " editor_script_changed " ,  PropertyInfo ( Variant : : OBJECT ,  " script " ,  PROPERTY_HINT_RESOURCE_TYPE ,  " Script " ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_SIGNAL ( MethodInfo ( " script_close " ,  PropertyInfo ( Variant : : OBJECT ,  " script " ,  PROPERTY_HINT_RESOURCE_TYPE ,  " Script " ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								ScriptEditor : : ScriptEditor ( EditorNode  * p_editor )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-12 15:45:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									current_theme  =  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									completion_cache  =  memnew ( EditorScriptCodeCompletionCache ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									restoring_layout  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									waiting_update_names  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									pending_auto_reload  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									auto_reload_running_scripts  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-01 21:45:04 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									members_overview_enabled  =  EditorSettings : : get_singleton ( ) - > get ( " text_editor/open_scripts/show_members_overview " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									help_overview_enabled  =  EditorSettings : : get_singleton ( ) - > get ( " text_editor/help/show_help_index " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									editor  =  p_editor ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-07-14 23:40:17 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									VBoxContainer  * main_container  =  memnew ( VBoxContainer ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									add_child ( main_container ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									menu_hb  =  memnew ( HBoxContainer ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-07-14 23:40:17 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									main_container - > add_child ( menu_hb ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_split  =  memnew ( HSplitContainer ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-07-14 23:40:17 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									main_container - > add_child ( script_split ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_split - > set_v_size_flags ( SIZE_EXPAND_FILL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-28 15:20:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									list_split  =  memnew ( VSplitContainer ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									script_split - > add_child ( list_split ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									list_split - > set_v_size_flags ( SIZE_EXPAND_FILL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_list  =  memnew ( ItemList ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-28 15:20:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									list_split - > add_child ( script_list ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-18 15:46:17 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_list - > set_custom_minimum_size ( Size2 ( 150  *  EDSCALE ,  90 ) ) ;  //need to give a bit of limit to avoid it from disappearing
 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-30 21:30:17 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_list - > set_v_size_flags ( SIZE_EXPAND_FILL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-20 13:01:27 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_split - > set_split_offset ( 140 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-12 14:21:09 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_sort_list_on_update  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-08-05 04:53:36 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_list - > connect ( " gui_input " ,  this ,  " _script_list_gui_input " ,  varray ( ) ,  CONNECT_DEFERRED ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 16:36:46 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_list - > set_allow_rmb_select ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 21:42:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_list - > set_drag_forwarding ( this ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 16:36:46 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									context_menu  =  memnew ( PopupMenu ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									add_child ( context_menu ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									context_menu - > connect ( " id_pressed " ,  this ,  " _menu_option " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-02 02:10:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									context_menu - > set_hide_on_window_lose_focus ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 16:36:46 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-06-01 21:28:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									overview_vbox  =  memnew ( VBoxContainer ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									overview_vbox - > set_custom_minimum_size ( Size2 ( 0 ,  90 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									overview_vbox - > set_v_size_flags ( SIZE_EXPAND_FILL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-04-30 14:27:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-06-01 21:28:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									list_split - > add_child ( overview_vbox ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									buttons_hbox  =  memnew ( HBoxContainer ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									overview_vbox - > add_child ( buttons_hbox ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-04-30 14:27:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-06-06 06:18:11 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									filename  =  memnew ( Label ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									filename - > set_clip_text ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									filename - > set_h_size_flags ( SIZE_EXPAND_FILL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									filename - > add_style_override ( " normal " ,  EditorNode : : get_singleton ( ) - > get_gui_base ( ) - > get_stylebox ( " normal " ,  " LineEdit " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-01 21:28:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									buttons_hbox - > add_child ( filename ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-06 06:18:11 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-04-30 14:27:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									members_overview_alphabeta_sort_button  =  memnew ( ToolButton ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-16 20:44:39 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									members_overview_alphabeta_sort_button - > set_tooltip ( TTR ( " Toggle alphabetical sorting of the method list. " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-04-30 14:27:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									members_overview_alphabeta_sort_button - > set_toggle_mode ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									members_overview_alphabeta_sort_button - > set_pressed ( EditorSettings : : get_singleton ( ) - > get ( " text_editor/tools/sort_members_outline_alphabetically " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									members_overview_alphabeta_sort_button - > connect ( " toggled " ,  this ,  " _toggle_members_overview_alpha_sort " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-06-01 21:28:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									buttons_hbox - > add_child ( members_overview_alphabeta_sort_button ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-04-30 14:27:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-28 15:20:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									members_overview  =  memnew ( ItemList ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-01 21:28:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									overview_vbox - > add_child ( members_overview ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-04-30 14:27:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-14 01:24:57 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									members_overview - > set_allow_reselect ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-18 15:46:17 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									members_overview - > set_custom_minimum_size ( Size2 ( 0 ,  90 ) ) ;  //need to give a bit of limit to avoid it from disappearing
 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-30 21:30:17 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									members_overview - > set_v_size_flags ( SIZE_EXPAND_FILL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-04-30 14:27:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									members_overview - > set_allow_rmb_select ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									members_overview - > set_drag_forwarding ( this ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 19:56:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									help_overview  =  memnew ( ItemList ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-01 21:28:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									overview_vbox - > add_child ( help_overview ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-14 01:24:57 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									help_overview - > set_allow_reselect ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-18 15:46:17 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									help_overview - > set_custom_minimum_size ( Size2 ( 0 ,  90 ) ) ;  //need to give a bit of limit to avoid it from disappearing
 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 19:56:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									help_overview - > set_v_size_flags ( SIZE_EXPAND_FILL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									tab_container  =  memnew ( TabContainer ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									tab_container - > set_tabs_visible ( false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-19 16:07:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									tab_container - > set_custom_minimum_size ( Size2 ( 200  *  EDSCALE ,  0 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_split - > add_child ( tab_container ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									tab_container - > set_h_size_flags ( SIZE_EXPAND_FILL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-12 14:21:09 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 21:42:56 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ED_SHORTCUT ( " script_editor/window_sort " ,  TTR ( " Sort " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ED_SHORTCUT ( " script_editor/window_move_up " ,  TTR ( " Move Up " ) ,  KEY_MASK_SHIFT  |  KEY_MASK_ALT  |  KEY_UP ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ED_SHORTCUT ( " script_editor/window_move_down " ,  TTR ( " Move Down " ) ,  KEY_MASK_SHIFT  |  KEY_MASK_ALT  |  KEY_DOWN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ED_SHORTCUT ( " script_editor/next_script " ,  TTR ( " Next script " ) ,  KEY_MASK_CMD  |  KEY_MASK_SHIFT  |  KEY_PERIOD ) ;  // these should be KEY_GREATER and KEY_LESS but those don't work
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ED_SHORTCUT ( " script_editor/prev_script " ,  TTR ( " Previous script " ) ,  KEY_MASK_CMD  |  KEY_MASK_SHIFT  |  KEY_COLON ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-25 19:02:17 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									set_process_unhandled_input ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_menu  =  memnew ( MenuButton ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									menu_hb - > add_child ( file_menu ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-03 22:25:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_menu - > set_text ( TTR ( " File " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-02 02:10:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > set_hide_on_window_lose_focus ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-08-14 23:41:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_shortcut ( ED_SHORTCUT ( " script_editor/new " ,  TTR ( " New Script " ) ) ,  FILE_NEW ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_shortcut ( ED_SHORTCUT ( " script_editor/new_textfile " ,  TTR ( " New TextFile " ) ) ,  FILE_NEW_TEXTFILE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-11 22:18:55 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_shortcut ( ED_SHORTCUT ( " script_editor/open " ,  TTR ( " Open " ) ) ,  FILE_OPEN ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-27 16:07:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_submenu_item ( TTR ( " Open Recent " ) ,  " RecentScripts " ,  FILE_OPEN_RECENT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									recent_scripts  =  memnew ( PopupMenu ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									recent_scripts - > set_name ( " RecentScripts " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_child ( recent_scripts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									recent_scripts - > connect ( " id_pressed " ,  this ,  " _open_recent_script " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_update_recent_scripts ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_separator ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_shortcut ( ED_SHORTCUT ( " script_editor/save " ,  TTR ( " Save " ) ,  KEY_MASK_ALT  |  KEY_MASK_CMD  |  KEY_S ) ,  FILE_SAVE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-04-22 19:36:01 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_shortcut ( ED_SHORTCUT ( " script_editor/save_as " ,  TTR ( " Save As... " ) ) ,  FILE_SAVE_AS ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_shortcut ( ED_SHORTCUT ( " script_editor/save_all " ,  TTR ( " Save All " ) ,  KEY_MASK_CMD  |  KEY_MASK_SHIFT  |  KEY_MASK_ALT  |  KEY_S ) ,  FILE_SAVE_ALL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_separator ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_shortcut ( ED_SHORTCUT ( " script_editor/reload_script_soft " ,  TTR ( " Soft Reload Script " ) ,  KEY_MASK_CMD  |  KEY_MASK_SHIFT  |  KEY_R ) ,  FILE_TOOL_RELOAD_SOFT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-07 11:57:41 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_shortcut ( ED_SHORTCUT ( " script_editor/copy_path " ,  TTR ( " Copy Script Path " ) ) ,  FILE_COPY_PATH ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-02 10:11:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_shortcut ( ED_SHORTCUT ( " script_editor/show_in_file_system " ,  TTR ( " Show In File System " ) ) ,  SHOW_IN_FILE_SYSTEM ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_separator ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_shortcut ( ED_SHORTCUT ( " script_editor/history_previous " ,  TTR ( " History Prev " ) ,  KEY_MASK_ALT  |  KEY_LEFT ) ,  WINDOW_PREV ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_shortcut ( ED_SHORTCUT ( " script_editor/history_next " ,  TTR ( " History Next " ) ,  KEY_MASK_ALT  |  KEY_RIGHT ) ,  WINDOW_NEXT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_separator ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-06-21 12:10:43 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_submenu_item ( TTR ( " Theme " ) ,  " Theme " ,  FILE_THEME ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									theme_submenu  =  memnew ( PopupMenu ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									theme_submenu - > set_name ( " Theme " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_child ( theme_submenu ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									theme_submenu - > connect ( " id_pressed " ,  this ,  " _theme_option " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									theme_submenu - > add_shortcut ( ED_SHORTCUT ( " script_editor/import_theme " ,  TTR ( " Import Theme " ) ) ,  THEME_IMPORT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									theme_submenu - > add_shortcut ( ED_SHORTCUT ( " script_editor/reload_theme " ,  TTR ( " Reload Theme " ) ) ,  THEME_RELOAD ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									theme_submenu - > add_shortcut ( ED_SHORTCUT ( " script_editor/save_theme " ,  TTR ( " Save Theme " ) ) ,  THEME_SAVE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									theme_submenu - > add_shortcut ( ED_SHORTCUT ( " script_editor/save_theme_as " ,  TTR ( " Save Theme As " ) ) ,  THEME_SAVE_AS ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-12 15:45:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_separator ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-17 15:18:48 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_shortcut ( ED_SHORTCUT ( " script_editor/close_docs " ,  TTR ( " Close Docs " ) ) ,  CLOSE_DOCS ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_shortcut ( ED_SHORTCUT ( " script_editor/close_file " ,  TTR ( " Close " ) ,  KEY_MASK_CMD  |  KEY_W ) ,  FILE_CLOSE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-13 02:56:38 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_shortcut ( ED_SHORTCUT ( " script_editor/close_all " ,  TTR ( " Close All " ) ) ,  CLOSE_ALL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-20 13:15:40 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_shortcut ( ED_SHORTCUT ( " script_editor/close_other_tabs " ,  TTR ( " Close Other Tabs " ) ) ,  CLOSE_OTHER_TABS ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-07-10 14:11:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_separator ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-27 19:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_shortcut ( ED_SHORTCUT ( " script_editor/run_file " ,  TTR ( " Run " ) ,  KEY_MASK_CMD  |  KEY_MASK_SHIFT  |  KEY_X ) ,  FILE_RUN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_separator ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-07-10 14:11:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > add_shortcut ( ED_SHORTCUT ( " script_editor/toggle_scripts_panel " ,  TTR ( " Toggle Scripts Panel " ) ,  KEY_MASK_CMD  |  KEY_BACKSLASH ) ,  TOGGLE_SCRIPTS_PANEL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_menu - > get_popup ( ) - > connect ( " id_pressed " ,  this ,  " _menu_option " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_search_menu  =  memnew ( MenuButton ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									menu_hb - > add_child ( script_search_menu ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-03 22:25:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_search_menu - > set_text ( TTR ( " Search " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-02 02:10:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_search_menu - > get_popup ( ) - > set_hide_on_window_lose_focus ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-04-22 19:36:01 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_search_menu - > get_popup ( ) - > add_shortcut ( ED_SHORTCUT ( " script_editor/find " ,  TTR ( " Find... " ) ,  KEY_MASK_CMD  |  KEY_F ) ,  HELP_SEARCH_FIND ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-02 19:11:05 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_search_menu - > get_popup ( ) - > add_shortcut ( ED_SHORTCUT ( " script_editor/find_next " ,  TTR ( " Find Next " ) ,  KEY_F3 ) ,  HELP_SEARCH_FIND_NEXT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_search_menu - > get_popup ( ) - > connect ( " id_pressed " ,  this ,  " _menu_option " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_search_menu - > hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									debug_menu  =  memnew ( MenuButton ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									menu_hb - > add_child ( debug_menu ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-03 22:25:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									debug_menu - > set_text ( TTR ( " Debug " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-02 02:10:49 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > set_hide_on_window_lose_focus ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-11 22:18:55 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > add_shortcut ( ED_SHORTCUT ( " debugger/step_over " ,  TTR ( " Step Over " ) ,  KEY_F10 ) ,  DEBUG_NEXT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > add_shortcut ( ED_SHORTCUT ( " debugger/step_into " ,  TTR ( " Step Into " ) ,  KEY_F11 ) ,  DEBUG_STEP ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > add_separator ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-11 22:18:55 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > add_shortcut ( ED_SHORTCUT ( " debugger/break " ,  TTR ( " Break " ) ) ,  DEBUG_BREAK ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-10-25 00:01:18 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > add_shortcut ( ED_SHORTCUT ( " debugger/continue " ,  TTR ( " Continue " ) ,  KEY_F12 ) ,  DEBUG_CONTINUE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > add_separator ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-21 01:18:35 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									//debug_menu->get_popup()->add_check_item("Show Debugger",DEBUG_SHOW);
 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-11 22:18:55 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > add_check_shortcut ( ED_SHORTCUT ( " debugger/keep_debugger_open " ,  TTR ( " Keep Debugger Open " ) ) ,  DEBUG_SHOW_KEEP_OPEN ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-25 17:20:01 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > add_check_shortcut ( ED_SHORTCUT ( " debugger/debug_with_exteral_editor " ,  TTR ( " Debug with external editor " ) ) ,  DEBUG_WITH_EXTERNAL_EDITOR ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > connect ( " id_pressed " ,  this ,  " _menu_option " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > set_item_disabled ( debug_menu - > get_popup ( ) - > get_item_index ( DEBUG_NEXT ) ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > set_item_disabled ( debug_menu - > get_popup ( ) - > get_item_index ( DEBUG_STEP ) ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > set_item_disabled ( debug_menu - > get_popup ( ) - > get_item_index ( DEBUG_BREAK ) ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									debug_menu - > get_popup ( ) - > set_item_disabled ( debug_menu - > get_popup ( ) - > get_item_index ( DEBUG_CONTINUE ) ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									menu_hb - > add_spacer ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_icon  =  memnew ( TextureRect ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									menu_hb - > add_child ( script_icon ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_name_label  =  memnew ( Label ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									menu_hb - > add_child ( script_name_label ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									script_icon - > hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									script_name_label - > hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									menu_hb - > add_spacer ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									site_search  =  memnew ( ToolButton ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-26 15:34:41 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									site_search - > set_text ( TTR ( " Online Docs " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									site_search - > connect ( " pressed " ,  this ,  " _menu_option " ,  varray ( SEARCH_WEBSITE ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									menu_hb - > add_child ( site_search ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-26 15:34:41 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									site_search - > set_tooltip ( TTR ( " Open Godot online documentation " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_search  =  memnew ( ToolButton ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-03 22:25:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_search - > set_text ( TTR ( " Classes " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_search - > connect ( " pressed " ,  this ,  " _menu_option " ,  varray ( SEARCH_CLASSES ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									menu_hb - > add_child ( class_search ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-03 22:25:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_search - > set_tooltip ( TTR ( " Search the class hierarchy. " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									help_search  =  memnew ( ToolButton ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-03 22:25:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									help_search - > set_text ( TTR ( " Search Help " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									help_search - > connect ( " pressed " ,  this ,  " _menu_option " ,  varray ( SEARCH_HELP ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									menu_hb - > add_child ( help_search ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-03 22:25:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									help_search - > set_tooltip ( TTR ( " Search the reference documentation. " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									menu_hb - > add_child ( memnew ( VSeparator ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_back  =  memnew ( ToolButton ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									script_back - > connect ( " pressed " ,  this ,  " _history_back " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									menu_hb - > add_child ( script_back ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									script_back - > set_disabled ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-03 22:25:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_back - > set_tooltip ( TTR ( " Go to previous edited document. " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_forward  =  memnew ( ToolButton ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									script_forward - > connect ( " pressed " ,  this ,  " _history_forward " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									menu_hb - > add_child ( script_forward ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									script_forward - > set_disabled ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-03 22:25:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_forward - > set_tooltip ( TTR ( " Go to next edited document. " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									tab_container - > connect ( " tab_changed " ,  this ,  " _tab_changed " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									erase_tab_confirm  =  memnew ( ConfirmationDialog ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-02 19:45:59 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									erase_tab_confirm - > get_ok ( ) - > set_text ( TTR ( " Save " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									erase_tab_confirm - > add_button ( TTR ( " Discard " ) ,  OS : : get_singleton ( ) - > get_swap_ok_cancel ( ) ,  " discard " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									erase_tab_confirm - > connect ( " confirmed " ,  this ,  " _close_current_tab " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-02 19:45:59 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									erase_tab_confirm - > connect ( " custom_action " ,  this ,  " _close_discard_current_tab " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									add_child ( erase_tab_confirm ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-08-09 16:39:59 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_create_dialog  =  memnew ( ScriptCreateDialog ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-03 22:25:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_create_dialog - > set_title ( TTR ( " Create Script " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-09 16:39:59 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									add_child ( script_create_dialog ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									script_create_dialog - > connect ( " script_created " ,  this ,  " _script_created " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-04-12 15:45:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_dialog_option  =  - 1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_dialog  =  memnew ( EditorFileDialog ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-04-12 15:45:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									add_child ( file_dialog ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									file_dialog - > connect ( " file_selected " ,  this ,  " _file_dialog_action " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 22:31:36 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									error_dialog  =  memnew ( AcceptDialog ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									add_child ( error_dialog ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-08-05 16:47:41 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									error_dialog - > get_ok ( ) - > set_text ( TTR ( " OK " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 22:31:36 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									debugger  =  memnew ( ScriptEditorDebugger ( editor ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									debugger - > connect ( " goto_script_line " ,  this ,  " _goto_script_line " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									debugger - > connect ( " show_debugger " ,  this ,  " _show_debugger " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									disk_changed  =  memnew ( ConfirmationDialog ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										VBoxContainer  * vbc  =  memnew ( VBoxContainer ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										disk_changed - > add_child ( vbc ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Label  * dl  =  memnew ( Label ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-21 01:18:35 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										dl - > set_text ( TTR ( " The following files are newer on disk. \n What action should be taken?: " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										vbc - > add_child ( dl ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										disk_changed_list  =  memnew ( Tree ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										vbc - > add_child ( disk_changed_list ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										disk_changed_list - > set_v_size_flags ( SIZE_EXPAND_FILL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										disk_changed - > connect ( " confirmed " ,  this ,  " _reload_scripts " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-03 22:25:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										disk_changed - > get_ok ( ) - > set_text ( TTR ( " Reload " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										disk_changed - > add_button ( TTR ( " Resave " ) ,  ! OS : : get_singleton ( ) - > get_swap_ok_cancel ( ) ,  " resave " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										disk_changed - > connect ( " custom_action " ,  this ,  " _resave_scripts " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									add_child ( disk_changed ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_editor  =  this ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Button  * db  =  EditorNode : : get_singleton ( ) - > add_bottom_panel_item ( TTR ( " Debugger " ) ,  debugger ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-17 20:03:57 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									debugger - > set_tool_button ( db ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									debugger - > connect ( " breaked " ,  this ,  " _breaked " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-17 20:03:57 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									autosave_timer  =  memnew ( Timer ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-05-04 23:32:40 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									autosave_timer - > set_one_shot ( false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									add_child ( autosave_timer ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									grab_focus_block  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									help_search_dialog  =  memnew ( EditorHelpSearch ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									add_child ( help_search_dialog ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									help_search_dialog - > connect ( " go_to_help " ,  this ,  " _help_class_goto " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									help_index  =  memnew ( EditorHelpIndex ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									add_child ( help_index ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									help_index - > connect ( " open_class " ,  this ,  " _help_class_open " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-12 02:36:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									find_in_files_dialog  =  memnew ( FindInFilesDialog ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									find_in_files_dialog - > connect ( FindInFilesDialog : : SIGNAL_FIND_REQUESTED ,  this ,  " _start_find_in_files " ,  varray ( false ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									find_in_files_dialog - > connect ( FindInFilesDialog : : SIGNAL_REPLACE_REQUESTED ,  this ,  " _start_find_in_files " ,  varray ( true ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									add_child ( find_in_files_dialog ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									find_in_files  =  memnew ( FindInFilesPanel ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									find_in_files_button  =  editor - > add_bottom_panel_item ( TTR ( " Search results " ) ,  find_in_files ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									find_in_files_button - > set_tooltip ( TTR ( " Search in files " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									find_in_files - > set_custom_minimum_size ( Size2 ( 0 ,  200 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									find_in_files - > connect ( FindInFilesPanel : : SIGNAL_RESULT_SELECTED ,  this ,  " _on_find_in_files_result_selected " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									find_in_files - > connect ( FindInFilesPanel : : SIGNAL_FILES_MODIFIED ,  this ,  " _on_find_in_files_modified_files " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									find_in_files - > hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									find_in_files_button - > hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									history_pos  =  - 1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-14 12:26:56 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									//debugger_gui->hide();
 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-06 17:43:14 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									edit_pass  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-01 21:45:04 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									trim_trailing_whitespace_on_save  =  EditorSettings : : get_singleton ( ) - > get ( " text_editor/files/trim_trailing_whitespace_on_save " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									convert_indent_on_save  =  EditorSettings : : get_singleton ( ) - > get ( " text_editor/indent/convert_indent_on_save " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									use_space_indentation  =  EditorSettings : : get_singleton ( ) - > get ( " text_editor/indent/type " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-25 17:45:20 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ScriptServer : : edit_request_func  =  _open_script_request ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-07 06:25:57 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									add_style_override ( " panel " ,  editor - > get_gui_base ( ) - > get_stylebox ( " ScriptEditorPanel " ,  " EditorStyles " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									tab_container - > add_style_override ( " panel " ,  editor - > get_gui_base ( ) - > get_stylebox ( " ScriptEditor " ,  " EditorStyles " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-06-26 01:14:31 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								ScriptEditor : : ~ ScriptEditor ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									memdelete ( completion_cache ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								void  ScriptEditorPlugin : : edit ( Object  * p_object )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( Object : : cast_to < Script > ( p_object ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										script_editor - > edit ( Object : : cast_to < Script > ( p_object ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( Object : : cast_to < TextFile > ( p_object ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										script_editor - > edit ( Object : : cast_to < TextFile > ( p_object ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								bool  ScriptEditorPlugin : : handles ( Object  * p_object )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-05-28 16:52:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( Object : : cast_to < TextFile > ( p_object ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( Object : : cast_to < Script > ( p_object ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-06 20:35:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-08-24 22:58:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										bool  valid  =  _can_open_in_editor ( Object : : cast_to < Script > ( p_object ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-06 20:35:49 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! valid )  {  //user tried to open it by clicking
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											EditorNode : : get_singleton ( ) - > show_warning ( TTR ( " Built-in scripts can only be edited when the scene they belong to is loaded " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  valid ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-02 23:03:46 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  p_object - > is_class ( " Script " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditorPlugin : : make_visible ( bool  p_visible )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_visible )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										script_editor - > show ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										script_editor - > set_process ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										script_editor - > ensure_select_current ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										script_editor - > hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										script_editor - > set_process ( false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditorPlugin : : selected_notify ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									script_editor - > ensure_select_current ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditorPlugin : : save_external_data ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-02-02 21:10:52 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_editor - > save_all_scripts ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditorPlugin : : apply_changes ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									script_editor - > apply_scripts ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditorPlugin : : restore_global_state ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  ScriptEditorPlugin : : save_global_state ( )  {  
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditorPlugin : : set_window_layout ( Ref < ConfigFile >  p_layout )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									script_editor - > set_window_layout ( p_layout ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditorPlugin : : get_window_layout ( Ref < ConfigFile >  p_layout )  {  
						 
					
						
							
								
									
										
										
										
											2015-06-22 00:03:19 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									script_editor - > get_window_layout ( p_layout ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								void  ScriptEditorPlugin : : get_breakpoints ( List < String >  * p_breakpoints )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  script_editor - > get_breakpoints ( p_breakpoints ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-12-09 09:08:41 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  ScriptEditorPlugin : : edited_scene_changed ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									script_editor - > edited_scene_changed ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								ScriptEditorPlugin : : ScriptEditorPlugin ( EditorNode  * p_node )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									editor  =  p_node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									script_editor  =  memnew ( ScriptEditor ( p_node ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									editor - > get_viewport ( ) - > add_child ( script_editor ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-08 13:01:54 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									script_editor - > set_v_size_flags ( Control : : SIZE_EXPAND_FILL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									script_editor - > hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									EDITOR_DEF ( " text_editor/files/auto_reload_scripts_on_external_change " ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ScriptServer : : set_reload_scripts_on_save ( EDITOR_DEF ( " text_editor/files/auto_reload_and_parse_scripts_on_save " ,  true ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EDITOR_DEF ( " text_editor/files/open_dominant_script_on_scene_change " ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EDITOR_DEF ( " text_editor/external/use_external_editor " ,  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EDITOR_DEF ( " text_editor/external/exec_path " ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EDITOR_DEF ( " text_editor/open_scripts/script_temperature_enabled " ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-05 19:41:36 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									EDITOR_DEF ( " text_editor/open_scripts/highlight_current_script " ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									EDITOR_DEF ( " text_editor/open_scripts/script_temperature_history_size " ,  15 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-20 13:03:22 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									EDITOR_DEF ( " text_editor/open_scripts/current_script_background_color " ,  Color ( 1 ,  1 ,  1 ,  0.3 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									EDITOR_DEF ( " text_editor/open_scripts/group_help_pages " ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-14 11:32:33 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									EditorSettings : : get_singleton ( ) - > add_property_hint ( PropertyInfo ( Variant : : INT ,  " text_editor/open_scripts/sort_scripts_by " ,  PROPERTY_HINT_ENUM ,  " Name,Path,None " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									EDITOR_DEF ( " text_editor/open_scripts/sort_scripts_by " ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EditorSettings : : get_singleton ( ) - > add_property_hint ( PropertyInfo ( Variant : : INT ,  " text_editor/open_scripts/list_script_names_as " ,  PROPERTY_HINT_ENUM ,  " Name,Parent Directory And Name,Full Path " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EDITOR_DEF ( " text_editor/open_scripts/list_script_names_as " ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EditorSettings : : get_singleton ( ) - > add_property_hint ( PropertyInfo ( Variant : : STRING ,  " text_editor/external/exec_path " ,  PROPERTY_HINT_GLOBAL_FILE ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EDITOR_DEF ( " text_editor/external/exec_flags " ,  " " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-27 16:07:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ED_SHORTCUT ( " script_editor/open_recent " ,  TTR ( " Open Recent " ) ,  KEY_MASK_CMD  |  KEY_MASK_SHIFT  |  KEY_T ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ED_SHORTCUT ( " script_editor/clear_recent " ,  TTR ( " Clear Recent Files " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								ScriptEditorPlugin : : ~ ScriptEditorPlugin ( )  {  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}