2023-01-05 13:25:55 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*  editor_help.cpp                                                       */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*                         This file is part of:                          */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*                             GODOT ENGINE                               */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*                        https://godotengine.org                         */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**************************************************************************/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur.                  */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/*                                                                        */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* 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  "editor_help.h" 
  
						 
					
						
							
								
									
										
										
										
											2017-01-16 08:04:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "core/config/project_settings.h" 
  
						 
					
						
							
								
									
										
										
										
											2021-08-24 15:16:25 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "core/core_constants.h" 
  
						 
					
						
							
								
									
										
										
										
											2023-10-19 00:50:30 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "core/extension/gdextension.h" 
  
						 
					
						
							
								
									
										
										
										
											2020-04-28 15:19:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "core/input/input.h" 
  
						 
					
						
							
								
									
										
										
										
											2023-04-21 09:32:26 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "core/object/script_language.h" 
  
						 
					
						
							
								
									
										
										
										
											2018-09-11 18:13:45 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "core/os/keyboard.h" 
  
						 
					
						
							
								
									
										
										
										
											2024-01-17 15:22:43 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "core/string/string_builder.h" 
  
						 
					
						
							
								
									
										
										
										
											2024-05-28 02:33:27 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "core/version_generated.gen.h" 
  
						 
					
						
							
								
									
										
										
										
											2024-01-15 13:14:55 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "editor/doc_data_compressed.gen.h" 
  
						 
					
						
							
								
									
										
										
										
											2024-08-19 18:08:31 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "editor/editor_main_screen.h" 
  
						 
					
						
							
								
									
										
										
										
											2022-02-12 02:46:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "editor/editor_node.h" 
  
						 
					
						
							
								
									
										
										
										
											2023-02-07 21:14:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "editor/editor_paths.h" 
  
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "editor/editor_property_name_processor.h" 
  
						 
					
						
							
								
									
										
										
										
											2022-02-12 02:46:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "editor/editor_settings.h" 
  
						 
					
						
							
								
									
										
										
										
											2023-08-13 02:33:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "editor/editor_string_names.h" 
  
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "editor/plugins/script_editor_plugin.h" 
  
						 
					
						
							
								
									
										
										
										
											2024-01-15 13:14:55 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "editor/themes/editor_scale.h" 
  
						 
					
						
							
								
									
										
										
										
											2022-11-19 12:45:49 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "scene/gui/line_edit.h" 
  
						 
					
						
							
								
									
										
										
										
											2014-02-20 23:01:44 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "modules/modules_enabled.gen.h"   // For gdscript, mono.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// For syntax highlighting.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef MODULE_GDSCRIPT_ENABLED 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "modules/gdscript/editor/gdscript_highlighter.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "modules/gdscript/gdscript.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// For syntax highlighting.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef MODULE_MONO_ENABLED 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "editor/plugins/script_editor_plugin.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "modules/mono/csharp_script.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-01-14 19:38:00 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define CONTRIBUTE_URL vformat("%s / contributing / documentation / updating_the_class_reference.html", VERSION_DOCS_URL) 
  
						 
					
						
							
								
									
										
										
										
											2017-09-12 19:16:18 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-07-08 13:17:41 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifdef MODULE_MONO_ENABLED 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Sync with the types mentioned in https://docs.godotengine.org/en/stable/tutorials/scripting/c_sharp/c_sharp_differences.html
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  Vector < String >  classes_with_csharp_differences  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" @GlobalScope " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" String " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" NodePath " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" Signal " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" Callable " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" RID " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" Basis " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" Transform2D " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" Transform3D " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" Rect2 " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" Rect2i " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" AABB " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" Quaternion " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" Projection " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" Color " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" Array " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" Dictionary " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" PackedByteArray " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" PackedColorArray " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" PackedFloat32Array " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" PackedFloat64Array " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" PackedInt32Array " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" PackedInt64Array " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" PackedStringArray " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" PackedVector2Array " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" PackedVector3Array " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-08 07:51:34 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									" PackedVector4Array " , 
							 
						 
					
						
							
								
									
										
										
										
											2023-07-08 13:17:41 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									" Variant " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-01-23 16:39:26 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								const  Vector < String >  packed_array_types  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" PackedByteArray " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" PackedColorArray " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" PackedFloat32Array " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" PackedFloat64Array " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" PackedInt32Array " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" PackedInt64Array " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" PackedStringArray " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" PackedVector2Array " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" PackedVector3Array " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-08 07:51:34 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									" PackedVector4Array " , 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-23 16:39:26 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-04-21 09:32:26 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// TODO: this is sometimes used directly as doc->something, other times as EditorHelp::get_doc_data(), which is thread-safe.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Might this be a problem?
  
						 
					
						
							
								
									
										
										
										
											2020-11-29 09:12:06 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								DocTools  * EditorHelp : : doc  =  nullptr ;  
						 
					
						
							
								
									
										
										
										
											2023-10-19 00:50:30 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								DocTools  * EditorHelp : : ext_doc  =  nullptr ;  
						 
					
						
							
								
									
										
										
										
											2014-02-15 21:16:33 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-04-21 09:32:26 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  bool  _attempt_doc_load ( const  String  & p_class )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Docgen always happens in the outer-most class: it also generates docs for inner classes.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  outer_class  =  p_class . get_slice ( " . " ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! ScriptServer : : is_global_class ( outer_class ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ResourceLoader is used in order to have a script-agnostic way to load scripts.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// This forces GDScript to compile the code, which is unnecessary for docgen, but it's a good compromise right now.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Ref < Script >  script  =  ResourceLoader : : load ( ScriptServer : : get_global_class_path ( outer_class ) ,  outer_class ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( script . is_valid ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Vector < DocData : : ClassDoc >  docs  =  script - > get_documentation ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for  ( int  j  =  0 ;  j  <  docs . size ( ) ;  j + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											const  DocData : : ClassDoc  & doc  =  docs . get ( j ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											EditorHelp : : get_doc_data ( ) - > add_doc ( doc ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Removes unnecessary prefix from p_class_specifier when within the p_edited_class context
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  String  _contextualize_class_specifier ( const  String  & p_class_specifier ,  const  String  & p_edited_class )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// If this is a completely different context than the current class, then keep full path
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! p_class_specifier . begins_with ( p_edited_class ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  p_class_specifier ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Here equal length + begins_with from above implies p_class_specifier == p_edited_class :)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_class_specifier . length ( )  = =  p_edited_class . length ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										int  rfind  =  p_class_specifier . rfind ( " . " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( rfind  = =  - 1 )  {  // Single identifier
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  p_class_specifier ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Multiple specifiers: keep last one only
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  p_class_specifier . substr ( rfind  +  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-04-28 06:49:24 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// They share a _name_ prefix but not a _class specifier_ prefix, e.g. Tree & TreeItem
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// begins_with + lengths being different implies p_class_specifier.length() > p_edited_class.length() so this is safe
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_class_specifier [ p_edited_class . length ( ) ]  ! =  ' . ' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  p_class_specifier ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Remove class specifier prefix
 
							 
						 
					
						
							
								
									
										
										
										
											2023-04-21 09:32:26 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  p_class_specifier . substr ( p_edited_class . length ( )  +  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : _update_theme_item_cache ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									VBoxContainer : : _update_theme_item_cache ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									theme_cache . text_color  =  get_theme_color ( SNAME ( " text_color " ) ,  SNAME ( " EditorHelp " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									theme_cache . title_color  =  get_theme_color ( SNAME ( " title_color " ) ,  SNAME ( " EditorHelp " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									theme_cache . headline_color  =  get_theme_color ( SNAME ( " headline_color " ) ,  SNAME ( " EditorHelp " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									theme_cache . comment_color  =  get_theme_color ( SNAME ( " comment_color " ) ,  SNAME ( " EditorHelp " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									theme_cache . symbol_color  =  get_theme_color ( SNAME ( " symbol_color " ) ,  SNAME ( " EditorHelp " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									theme_cache . value_color  =  get_theme_color ( SNAME ( " value_color " ) ,  SNAME ( " EditorHelp " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									theme_cache . qualifier_color  =  get_theme_color ( SNAME ( " qualifier_color " ) ,  SNAME ( " EditorHelp " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									theme_cache . type_color  =  get_theme_color ( SNAME ( " type_color " ) ,  SNAME ( " EditorHelp " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-16 16:54:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									theme_cache . override_color  =  get_theme_color ( SNAME ( " override_color " ) ,  SNAME ( " EditorHelp " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-08-13 02:33:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									theme_cache . doc_font  =  get_theme_font ( SNAME ( " doc " ) ,  EditorStringName ( EditorFonts ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									theme_cache . doc_bold_font  =  get_theme_font ( SNAME ( " doc_bold " ) ,  EditorStringName ( EditorFonts ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									theme_cache . doc_italic_font  =  get_theme_font ( SNAME ( " doc_italic " ) ,  EditorStringName ( EditorFonts ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									theme_cache . doc_title_font  =  get_theme_font ( SNAME ( " doc_title " ) ,  EditorStringName ( EditorFonts ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									theme_cache . doc_code_font  =  get_theme_font ( SNAME ( " doc_source " ) ,  EditorStringName ( EditorFonts ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									theme_cache . doc_kbd_font  =  get_theme_font ( SNAME ( " doc_keyboard " ) ,  EditorStringName ( EditorFonts ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-08-13 02:33:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									theme_cache . doc_font_size  =  get_theme_font_size ( SNAME ( " doc_size " ) ,  EditorStringName ( EditorFonts ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									theme_cache . doc_title_font_size  =  get_theme_font_size ( SNAME ( " doc_title_size " ) ,  EditorStringName ( EditorFonts ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									theme_cache . doc_code_font_size  =  get_theme_font_size ( SNAME ( " doc_source_size " ) ,  EditorStringName ( EditorFonts ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									theme_cache . doc_kbd_font_size  =  get_theme_font_size ( SNAME ( " doc_keyboard_size " ) ,  EditorStringName ( EditorFonts ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									theme_cache . background_style  =  get_theme_stylebox ( SNAME ( " background " ) ,  SNAME ( " EditorHelp " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-29 11:04:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-19 18:05:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > begin_bulk_theme_override ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > add_theme_font_override ( " normal_font " ,  theme_cache . doc_font ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > add_theme_font_size_override ( " normal_font_size " ,  theme_cache . doc_font_size ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-13 16:56:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > add_theme_constant_override ( SceneStringName ( line_separation ) ,  get_theme_constant ( SceneStringName ( line_separation ) ,  SNAME ( " EditorHelp " ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-29 11:04:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > add_theme_constant_override ( " table_h_separation " ,  get_theme_constant ( SNAME ( " table_h_separation " ) ,  SNAME ( " EditorHelp " ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > add_theme_constant_override ( " table_v_separation " ,  get_theme_constant ( SNAME ( " table_v_separation " ) ,  SNAME ( " EditorHelp " ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-31 19:51:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > add_theme_constant_override ( " text_highlight_h_padding " ,  get_theme_constant ( SNAME ( " text_highlight_h_padding " ) ,  SNAME ( " EditorHelp " ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > add_theme_constant_override ( " text_highlight_v_padding " ,  get_theme_constant ( SNAME ( " text_highlight_v_padding " ) ,  SNAME ( " EditorHelp " ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-19 18:05:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > end_bulk_theme_override ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-29 11:04:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-09 17:41:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : _search ( bool  p_search_previous )  {  
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_search_previous )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-09 17:41:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										find_bar - > search_prev ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-09 17:41:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										find_bar - > search_next ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-05-30 10:04:07 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : _class_desc_finished ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( scroll_to  > =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > scroll_to_paragraph ( scroll_to ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									scroll_to  =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : _class_list_select ( const  String  & p_select )  {  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									_goto_desc ( p_select ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : _class_desc_select ( const  String  & p_select )  {  
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_select . begins_with ( " $ " ) )  {  // Enum.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										const  String  link  =  p_select . substr ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										String  enum_class_name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										String  enum_name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( CoreConstants : : is_global_enum ( link ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											enum_class_name  =  " @GlobalScope " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											enum_name  =  link ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-23 19:10:32 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											const  int  dot_pos  =  link . rfind ( " . " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( dot_pos  > =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												enum_class_name  =  link . left ( dot_pos ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												enum_name  =  link . substr ( dot_pos  +  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												enum_class_name  =  edited_class ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												enum_name  =  link ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-23 19:10:32 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-27 21:15:07 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										emit_signal ( SNAME ( " go_to_help " ) ,  " class_enum: "  +  enum_class_name  +  " : "  +  enum_name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if  ( p_select . begins_with ( " # " ) )  {  // Class.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										emit_signal ( SNAME ( " go_to_help " ) ,  " class_name: "  +  p_select . substr ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if  ( p_select . begins_with ( " @ " ) )  {  // Member.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										const  int  tag_end  =  p_select . find_char ( '   ' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										const  String  tag  =  p_select . substr ( 1 ,  tag_end  -  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										const  String  link  =  p_select . substr ( tag_end  +  1 ) . lstrip ( "   " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-20 21:30:46 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										String  topic ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										const  HashMap < String ,  int >  * table  =  nullptr ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-20 21:30:46 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( tag  = =  " method " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											topic  =  " class_method " ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-28 21:51:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											table  =  & method_line ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-02 20:11:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " constructor " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											topic  =  " class_method " ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-28 21:51:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											table  =  & method_line ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-02 20:11:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " operator " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											topic  =  " class_method " ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-28 21:51:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											table  =  & method_line ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-20 21:30:46 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " member " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											topic  =  " class_property " ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-28 21:51:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											table  =  & property_line ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-27 20:01:16 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " enum " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-20 21:30:46 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											topic  =  " class_enum " ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-28 21:51:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											table  =  & enum_line ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-20 21:30:46 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " signal " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											topic  =  " class_signal " ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-28 21:51:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											table  =  & signal_line ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-27 20:01:16 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " constant " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											topic  =  " class_constant " ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-28 21:51:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											table  =  & constant_line ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " annotation " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											topic  =  " class_annotation " ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-28 21:51:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											table  =  & annotation_line ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-18 15:03:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " theme_item " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											topic  =  " class_theme_item " ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-28 21:51:39 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											table  =  & theme_property_line ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-20 21:30:46 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-26 17:57:36 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// Case order is important here to correctly handle edge cases like Variant.Type in @GlobalScope.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( table - > has ( link ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// Found in the current page.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-04 16:55:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( class_desc - > is_finished ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 23:54:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												emit_signal ( SNAME ( " request_save_history " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-30 10:04:07 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > scroll_to_paragraph ( ( * table ) [ link ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												scroll_to  =  ( * table ) [ link ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-20 23:11:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// Look for link in @GlobalScope.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// Note that a link like @GlobalScope.enum_name will not be found in this section, only enum_name will be.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( topic  = =  " class_enum " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												const  DocData : : ClassDoc  & cd  =  doc - > class_list [ " @GlobalScope " ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												for  ( const  DocData : : ConstantDoc  & constant  :  cd . constants )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( constant . enumeration  = =  link )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-20 23:11:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														// Found in @GlobalScope.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														emit_signal ( SNAME ( " go_to_help " ) ,  topic  +  " :@GlobalScope: "  +  link ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-27 20:01:16 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-20 23:11:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  if  ( topic  = =  " class_constant " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												const  DocData : : ClassDoc  & cd  =  doc - > class_list [ " @GlobalScope " ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												for  ( const  DocData : : ConstantDoc  & constant  :  cd . constants )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( constant . name  = =  link )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-20 23:11:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														// Found in @GlobalScope.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														emit_signal ( SNAME ( " go_to_help " ) ,  topic  +  " :@GlobalScope: "  +  link ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-26 17:57:36 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-20 23:11:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( link . contains ( " . " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												const  int  class_end  =  link . find_char ( ' . ' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												emit_signal ( SNAME ( " go_to_help " ) ,  topic  +  " : "  +  link . left ( class_end )  +  " : "  +  link . substr ( class_end  +  1 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-20 23:11:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  if  ( p_select . begins_with ( " http: " )  | |  p_select . begins_with ( " https: " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-12 19:16:18 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										OS : : get_singleton ( ) - > shell_open ( p_select ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  if  ( p_select . begins_with ( " ^ " ) )  {  // Copy button.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										DisplayServer : : get_singleton ( ) - > clipboard_set ( p_select . substr ( 1 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-20 12:38:03 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : _class_desc_input ( const  Ref < InputEvent >  & p_input )  {  
						 
					
						
							
								
									
										
										
										
											2016-06-04 03:11:34 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-29 20:48:30 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : _class_desc_resized ( bool  p_force_update_theme )  {  
						 
					
						
							
								
									
										
										
										
											2019-06-05 20:47:34 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Add extra horizontal margins for better readability.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// The margins increase as the width of the editor help container increases.
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									real_t  char_width  =  theme_cache . doc_code_font - > get_char_size ( ' x ' ,  theme_cache . doc_code_font_size ) . width ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-24 09:51:35 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									const  int  new_display_margin  =  MAX ( 30  *  EDSCALE ,  get_parent_anchorable_rect ( ) . size . width  -  char_width  *  120  *  EDSCALE )  *  0.5 ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-29 20:48:30 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( display_margin  ! =  new_display_margin  | |  p_force_update_theme )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-24 09:51:35 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										display_margin  =  new_display_margin ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Ref < StyleBox >  class_desc_stylebox  =  theme_cache . background_style - > duplicate ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-19 19:14:09 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc_stylebox - > set_content_margin ( SIDE_LEFT ,  display_margin ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc_stylebox - > set_content_margin ( SIDE_RIGHT ,  display_margin ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 14:41:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_theme_style_override ( CoreStringName ( normal ) ,  class_desc_stylebox ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-09 18:54:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_theme_style_override ( " focused " ,  class_desc_stylebox ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-24 09:51:35 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-05 20:47:34 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  _add_type_to_rt ( const  String  & p_type ,  const  String  & p_enum ,  bool  p_is_bitfield ,  RichTextLabel  * p_rt ,  const  Control  * p_owner_node ,  const  String  & p_class )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  Color  type_color  =  p_owner_node - > get_theme_color ( SNAME ( " type_color " ) ,  SNAME ( " EditorHelp " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-11-01 23:45:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_type . is_empty ( )  | |  p_type  = =  " void " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										p_rt - > push_color ( Color ( type_color ,  0.5 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										p_rt - > push_hint ( TTR ( " No return value. " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										p_rt - > add_text ( " void " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										p_rt - > pop ( ) ;  // hint
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										p_rt - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-01 23:45:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-11-01 23:45:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									bool  is_enum_type  =  ! p_enum . is_empty ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 17:06:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									bool  is_bitfield  =  p_is_bitfield  & &  is_enum_type ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-01 23:45:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									bool  can_ref  =  ! p_type . contains ( " * " )  | |  is_enum_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-04-21 09:32:26 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  link_t  =  p_type ;  // For links in metadata
 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-09 17:00:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  display_t ;  // For display purposes.
 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-01 23:45:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( is_enum_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-04-21 09:32:26 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										link_t  =  p_enum ;  // The link for enums is always the full enum description
 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										display_t  =  _contextualize_class_specifier ( p_enum ,  p_class ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-04-21 09:32:26 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										display_t  =  _contextualize_class_specifier ( p_type ,  p_class ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-23 19:10:32 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-18 23:01:30 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									p_rt - > push_color ( type_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-24 13:03:28 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									bool  add_typed_container  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-23 19:10:32 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( can_ref )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-04-21 09:32:26 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( link_t . ends_with ( " [] " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-24 13:03:28 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											add_typed_container  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-13 16:09:35 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											link_t  =  link_t . trim_suffix ( " [] " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											display_t  =  display_t . trim_suffix ( " [] " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-01 23:45:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_meta ( " #Array " ,  RichTextLabel : : META_UNDERLINE_ON_HOVER ) ;  // class
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > add_text ( " Array " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // meta
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > add_text ( " [ " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-24 13:03:28 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( link_t . begins_with ( " Dictionary[ " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											add_typed_container  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											link_t  =  link_t . trim_prefix ( " Dictionary[ " ) . trim_suffix ( " ] " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											display_t  =  display_t . trim_prefix ( " Dictionary[ " ) . trim_suffix ( " ] " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > push_meta ( " #Dictionary " ,  RichTextLabel : : META_UNDERLINE_ON_HOVER ) ;  // class
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > add_text ( " Dictionary " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // meta
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > add_text ( " [ " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > push_meta ( " # "  +  link_t . get_slice ( " ,  " ,  0 ) ,  RichTextLabel : : META_UNDERLINE_ON_HOVER ) ;  // class
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > add_text ( _contextualize_class_specifier ( display_t . get_slice ( " ,  " ,  0 ) ,  p_class ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // meta
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > add_text ( " ,  " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											link_t  =  link_t . get_slice ( " ,  " ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											display_t  =  _contextualize_class_specifier ( display_t . get_slice ( " ,  " ,  1 ) ,  p_class ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 17:06:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( is_bitfield )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_color ( Color ( type_color ,  0.5 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > push_hint ( TTR ( " This value is an integer composed as a bitmask of the following flags. " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > add_text ( " BitField " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // hint
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > add_text ( " [ " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-20 19:06:00 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-01 23:45:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( is_enum_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_meta ( " $ "  +  link_t ,  RichTextLabel : : META_UNDERLINE_ON_HOVER ) ;  // enum
 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-01 23:45:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_meta ( " # "  +  link_t ,  RichTextLabel : : META_UNDERLINE_ON_HOVER ) ;  // class
 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-23 19:10:32 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									p_rt - > add_text ( display_t ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-20 19:06:00 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( can_ref )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										p_rt - > pop ( ) ;  // meta
 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-24 13:03:28 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( add_typed_container )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > add_text ( " ] " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 17:06:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( is_bitfield )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_color ( Color ( type_color ,  0.5 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > add_text ( " ] " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-20 19:06:00 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									p_rt - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  EditorHelp : : _add_type ( const  String  & p_type ,  const  String  & p_enum ,  bool  p_is_bitfield )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_add_type_to_rt ( p_type ,  p_enum ,  p_is_bitfield ,  class_desc ,  this ,  edited_class ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-03-31 21:17:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : _add_type_icon ( const  String  & p_type ,  int  p_size ,  const  String  & p_fallback )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Ref < Texture2D >  icon  =  EditorNode : : get_singleton ( ) - > get_class_icon ( p_type ,  p_fallback ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-24 20:41:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Vector2i  size  =  Vector2i ( icon - > get_width ( ) ,  icon - > get_height ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_size  >  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-08-01 20:04:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// Ensures icon scales proportionally on both axes, based on icon height.
 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-24 20:41:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										float  ratio  =  p_size  /  float ( size . height ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										size . width  * =  ratio ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										size . height  * =  ratio ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > add_image ( icon ,  size . width ,  size . height ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-08-21 17:12:55 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  EditorHelp : : _fix_constant ( const  String  & p_constant )  const  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_constant . strip_edges ( )  = =  " 4294967295 " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  " 0xFFFFFFFF " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_constant . strip_edges ( )  = =  " 2147483647 " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  " 0x7FFFFFFF " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-05 16:44:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-08-21 17:12:55 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_constant . strip_edges ( )  = =  " 1048575 " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-05 16:44:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  " 0xFFFFF " ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-08-21 17:12:55 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  p_constant ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Macros for assigning the deprecated/experimental marks to class members in overview.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-08-13 02:33:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define DEPRECATED_DOC_TAG                                                                   \ 
  
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > push_font ( theme_cache . doc_bold_font ) ;                                         \
							 
						 
					
						
							
								
									
										
										
										
											2023-08-13 02:33:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > push_color ( get_theme_color ( SNAME ( " error_color " ) ,  EditorStringName ( Editor ) ) ) ;  \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Ref < Texture2D >  error_icon  =  get_editor_theme_icon ( SNAME ( " StatusError " ) ) ;                  \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > add_image ( error_icon ,  error_icon - > get_width ( ) ,  error_icon - > get_height ( ) ) ;     \
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > add_text ( String : : chr ( 160 )  +  TTR ( " Deprecated " ) ) ;                               \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > pop ( ) ;                                                                        \
							 
						 
					
						
							
								
									
										
										
										
											2022-08-28 07:17:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > pop ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define EXPERIMENTAL_DOC_TAG                                                                    \ 
  
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > push_font ( theme_cache . doc_bold_font ) ;                                            \
							 
						 
					
						
							
								
									
										
										
										
											2023-08-13 02:33:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > push_color ( get_theme_color ( SNAME ( " warning_color " ) ,  EditorStringName ( Editor ) ) ) ;   \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Ref < Texture2D >  warning_icon  =  get_editor_theme_icon ( SNAME ( " NodeWarning " ) ) ;                   \
							 
						 
					
						
							
								
									
										
										
										
											2022-08-28 07:17:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > add_image ( warning_icon ,  warning_icon - > get_width ( ) ,  warning_icon - > get_height ( ) ) ;  \
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > add_text ( String : : chr ( 160 )  +  TTR ( " Experimental " ) ) ;                                \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > pop ( ) ;                                                                           \
							 
						 
					
						
							
								
									
										
										
										
											2022-08-28 07:17:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > pop ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Macros for displaying the deprecated/experimental info in class member descriptions.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define DEPRECATED_DOC_MSG(m_message, m_default_message)                                     \ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Ref < Texture2D >  error_icon  =  get_editor_theme_icon ( SNAME ( " StatusError " ) ) ;                  \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > add_image ( error_icon ,  error_icon - > get_width ( ) ,  error_icon - > get_height ( ) ) ;     \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > add_text ( "   " ) ;                                                                \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > push_color ( get_theme_color ( SNAME ( " error_color " ) ,  EditorStringName ( Editor ) ) ) ;  \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > push_font ( theme_cache . doc_bold_font ) ;                                         \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > add_text ( TTR ( " Deprecated: " ) ) ;                                                 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > pop ( ) ;                                                                        \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > pop ( ) ;                                                                        \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > add_text ( "   " ) ;                                                                \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ( m_message ) . is_empty ( ) )  {                                                             \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > add_text ( m_default_message ) ;                                              \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  {                                                                                  \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_add_text ( m_message ) ;                                                                 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define EXPERIMENTAL_DOC_MSG(m_message, m_default_message)                                      \ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Ref < Texture2D >  warning_icon  =  get_editor_theme_icon ( SNAME ( " NodeWarning " ) ) ;                   \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > add_image ( warning_icon ,  warning_icon - > get_width ( ) ,  warning_icon - > get_height ( ) ) ;  \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > add_text ( "   " ) ;                                                                   \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > push_color ( get_theme_color ( SNAME ( " warning_color " ) ,  EditorStringName ( Editor ) ) ) ;   \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > push_font ( theme_cache . doc_bold_font ) ;                                            \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > add_text ( TTR ( " Experimental: " ) ) ;                                                  \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > pop ( ) ;                                                                           \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > pop ( ) ;                                                                           \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > add_text ( "   " ) ;                                                                   \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ( m_message ) . is_empty ( ) )  {                                                                \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > add_text ( m_default_message ) ;                                                 \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  {                                                                                     \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_add_text ( m_message ) ;                                                                    \
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-02 20:11:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : _add_method ( const  DocData : : MethodDoc  & p_method ,  bool  p_overview ,  bool  p_override )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_override )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										method_line [ p_method . name ]  =  class_desc - > get_paragraph_count ( )  -  2 ;  // Gets overridden if description.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-15 09:45:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-03 21:48:38 +05:45 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									const  bool  is_vararg  =  p_method . qualifiers . contains ( " vararg " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-15 09:45:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_overview )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > push_cell ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-24 20:58:47 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > push_paragraph ( HORIZONTAL_ALIGNMENT_RIGHT ,  Control : : TEXT_DIRECTION_AUTO ,  " " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-21 12:01:31 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-01 21:02:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_add_bulletpoint ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-15 09:45:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-06-15 17:06:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_add_type ( p_method . return_type ,  p_method . return_enum ,  p_method . return_is_bitfield ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-15 09:45:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_overview )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > pop ( ) ;  // paragraph
 
							 
						 
					
						
							
								
									
										
										
										
											2023-04-21 09:32:26 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > pop ( ) ;  // cell
 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-15 09:45:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > push_cell ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > add_text ( "   " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									const  bool  is_documented  =  p_method . is_deprecated  | |  p_method . is_experimental  | |  ! p_method . description . strip_edges ( ) . is_empty ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_overview  & &  is_documented )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-01 16:40:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > push_meta ( " @method  "  +  p_method . name ,  RichTextLabel : : META_UNDERLINE_ON_HOVER ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-15 09:45:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > push_color ( theme_cache . headline_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > add_text ( p_method . name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-15 09:45:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_overview  & &  is_documented )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-04-21 09:32:26 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > pop ( ) ;  // meta
 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-15 09:45:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-20 22:40:22 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > add_text ( " ( " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-15 09:45:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( int  j  =  0 ;  j  <  p_method . arguments . size ( ) ;  j + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										const  DocData : : ArgumentDoc  & argument  =  p_method . arguments [ j ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > push_color ( theme_cache . text_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( j  >  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-15 09:45:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > add_text ( " ,  " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-20 22:40:22 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_text ( argument . name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-20 22:40:22 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_text ( " :  " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_add_type ( argument . type ,  argument . enumeration ,  argument . is_bitfield ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! argument . default_value . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-01 16:42:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > add_text ( "  =  " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > push_color ( theme_cache . value_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > add_text ( _fix_constant ( argument . default_value ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-15 09:45:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-15 09:45:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( is_vararg )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > push_color ( theme_cache . text_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! p_method . arguments . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-15 09:45:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > add_text ( " ,  " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-15 09:45:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_text ( " ... " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-15 09:45:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-20 22:40:22 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > add_text ( " ) " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-09 03:42:46 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! p_method . qualifiers . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > push_color ( theme_cache . qualifier_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-31 11:27:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										PackedStringArray  qualifiers  =  p_method . qualifiers . split_spaces ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for  ( const  String  & qualifier  :  qualifiers )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											String  hint ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( qualifier  = =  " vararg " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												hint  =  TTR ( " This method supports a variable number of arguments. " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  else  if  ( qualifier  = =  " virtual " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-01 15:29:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												hint  =  TTR ( " This method is called by the engine. \n It can be overridden to customize built-in behavior. " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-31 11:27:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  if  ( qualifier  = =  " const " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												hint  =  TTR ( " This method has no side effects. \n It does not modify the object in any way. " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  else  if  ( qualifier  = =  " static " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												hint  =  TTR ( " This method does not need an instance to be called. \n It can be called directly using the class name. " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > add_text ( "   " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ! hint . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												class_desc - > push_hint ( hint ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												class_desc - > add_text ( qualifier ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // hint
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-31 11:27:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												class_desc - > add_text ( qualifier ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-15 09:45:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-28 07:17:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_overview )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( p_method . is_deprecated )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > add_text ( "   " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											DEPRECATED_DOC_TAG ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( p_method . is_experimental )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > add_text ( "   " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											EXPERIMENTAL_DOC_TAG ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-04-21 09:32:26 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > pop ( ) ;  // cell
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-15 09:45:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-01 21:02:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : _add_bulletpoint ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									static  const  char32_t  prefix [ 3 ]  =  {  0x25CF  /* filled circle */ ,  '   ' ,  0  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > add_text ( String ( prefix ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : _push_normal_font ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > push_font ( theme_cache . doc_font ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > push_font_size ( theme_cache . doc_font_size ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  EditorHelp : : _pop_normal_font ( )  {  
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > pop ( ) ;  // font_size
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > pop ( ) ;  // font
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  EditorHelp : : _push_title_font ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > push_font ( theme_cache . doc_title_font ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > push_font_size ( theme_cache . doc_title_font_size ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > push_color ( theme_cache . title_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  EditorHelp : : _pop_title_font ( )  {  
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > pop ( ) ;  // font_size
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > pop ( ) ;  // font
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  EditorHelp : : _push_code_font ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > push_font ( theme_cache . doc_code_font ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > push_font_size ( theme_cache . doc_code_font_size ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  EditorHelp : : _pop_code_font ( )  {  
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > pop ( ) ;  // font_size
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > pop ( ) ;  // font
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-04-21 09:32:26 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Error  EditorHelp : : _goto_desc ( const  String  & p_class )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// If class doesn't have docs listed, attempt on-demand docgen
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! doc - > class_list . has ( p_class )  & &  ! _attempt_doc_load ( p_class ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-06 17:41:19 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  ERR_DOES_NOT_EXIST ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									select_locked  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-23 23:43:37 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									class_desc - > show ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-18 15:46:17 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									description_line  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_class  = =  edited_class )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-26 17:57:36 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  OK ;  // Already there.
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-08-13 09:40:06 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									edited_class  =  p_class ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_update_doc ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  OK ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : _update_method_list ( MethodType  p_method_type ,  const  Vector < DocData : : MethodDoc >  & p_methods )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									static  const  char  * titles_by_type [ METHOD_TYPE_MAX ]  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										TTRC ( " Methods " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										TTRC ( " Constructors " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										TTRC ( " Operators " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  String  title  =  TTRGET ( titles_by_type [ p_method_type ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									section_line . push_back ( Pair < String ,  int > ( title ,  class_desc - > get_paragraph_count ( )  -  2 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_push_title_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > add_text ( title ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_pop_title_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > push_indent ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_push_code_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > push_table ( 2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > set_table_column_expand ( 1 ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bool  any_previous  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( int  pass  =  0 ;  pass  <  2 ;  pass + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Vector < DocData : : MethodDoc >  m ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										for  ( const  DocData : : MethodDoc  & method  :  p_methods )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											const  String  & q  =  method . qualifiers ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-03 21:48:38 +05:45 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ( pass  = =  0  & &  q . contains ( " virtual " ) )  | |  ( pass  = =  1  & &  ! q . contains ( " virtual " ) ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												m . push_back ( method ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( any_previous  & &  ! m . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > push_cell ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-04-21 09:32:26 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // cell
 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > push_cell ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-04-21 09:32:26 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // cell
 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										String  group_prefix ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for  ( int  i  =  0 ;  i  <  m . size ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											const  String  new_prefix  =  m [ i ] . name . left ( 3 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											bool  is_new_group  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( i  <  m . size ( )  -  1  & &  new_prefix  = =  m [ i  +  1 ] . name . left ( 3 )  & &  new_prefix  ! =  group_prefix )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												is_new_group  =  i  >  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												group_prefix  =  new_prefix ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-09 03:42:46 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  if  ( ! group_prefix . is_empty ( )  & &  new_prefix  ! =  group_prefix )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												is_new_group  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												group_prefix  =  " " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( is_new_group  & &  pass  = =  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												class_desc - > push_cell ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-04-21 09:32:26 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // cell
 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_cell ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-04-21 09:32:26 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // cell
 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-02 20:11:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// For constructors always point to the first one.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_add_method ( m [ i ] ,  true ,  ( p_method_type  ! =  METHOD_TYPE_CONSTRUCTOR  | |  i  = =  0 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										any_previous  =  ! m . is_empty ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-04-21 09:32:26 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > pop ( ) ;  // table
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_pop_code_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > pop ( ) ;  // indent
 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : _update_method_descriptions ( const  DocData : : ClassDoc  & p_classdoc ,  MethodType  p_method_type ,  const  Vector < DocData : : MethodDoc >  & p_methods )  {  
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define HANDLE_DOC(m_string) ((p_classdoc.is_script_doc ? (m_string) : DTR(m_string)).strip_edges()) 
  
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									static  const  char  * titles_by_type [ METHOD_TYPE_MAX ]  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										TTRC ( " Method Descriptions " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										TTRC ( " Constructor Descriptions " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										TTRC ( " Operator Descriptions " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  String  title  =  TTRGET ( titles_by_type [ p_method_type ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									section_line . push_back ( Pair < String ,  int > ( title ,  class_desc - > get_paragraph_count ( )  -  2 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_push_title_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > add_text ( title ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_pop_title_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  link_color_text  =  theme_cache . title_color . to_html ( false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( int  pass  =  0 ;  pass  <  2 ;  pass + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Vector < DocData : : MethodDoc >  methods_filtered ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for  ( int  i  =  0 ;  i  <  p_methods . size ( ) ;  i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											const  String  & q  =  p_methods [ i ] . qualifiers ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-03 21:48:38 +05:45 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ( pass  = =  0  & &  q . contains ( " virtual " ) )  | |  ( pass  = =  1  & &  ! q . contains ( " virtual " ) ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												methods_filtered . push_back ( p_methods [ i ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for  ( int  i  =  0 ;  i  <  methods_filtered . size ( ) ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											const  DocData : : MethodDoc  & method  =  methods_filtered [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_push_code_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-02 20:11:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// For constructors always point to the first one.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_add_method ( method ,  false ,  ( p_method_type  ! =  METHOD_TYPE_CONSTRUCTOR  | |  i  = =  0 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_pop_code_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > push_indent ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_push_normal_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > push_color ( theme_cache . text_color ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											bool  has_prev_text  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( method . is_deprecated )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												has_prev_text  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												static  const  char  * messages_by_type [ METHOD_TYPE_MAX ]  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													TTRC ( " This method may be changed or removed in future versions. " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													TTRC ( " This constructor may be changed or removed in future versions. " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													TTRC ( " This operator may be changed or removed in future versions. " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												DEPRECATED_DOC_MSG ( HANDLE_DOC ( method . deprecated_message ) ,  TTRGET ( messages_by_type [ p_method_type ] ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( method . is_experimental )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( has_prev_text )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												has_prev_text  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												static  const  char  * messages_by_type [ METHOD_TYPE_MAX ]  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													TTRC ( " This method may be changed or removed in future versions. " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													TTRC ( " This constructor may be changed or removed in future versions. " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													TTRC ( " This operator may be changed or removed in future versions. " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												EXPERIMENTAL_DOC_MSG ( HANDLE_DOC ( method . experimental_message ) ,  TTRGET ( messages_by_type [ p_method_type ] ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ! method . errors_returned . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( has_prev_text )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												has_prev_text  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_text ( TTR ( " Error codes returned: " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												class_desc - > push_list ( 0 ,  RichTextLabel : : LIST_DOTS ,  false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												for  ( int  j  =  0 ;  j  <  method . errors_returned . size ( ) ;  j + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													if  ( j  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													int  val  =  method . errors_returned [ j ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													String  text  =  itos ( val ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													for  ( int  k  =  0 ;  k  <  CoreConstants : : get_global_constant_count ( ) ;  k + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														if  ( CoreConstants : : get_global_constant_value ( k )  = =  val  & &  CoreConstants : : get_global_constant_enum ( k )  = =  SNAME ( " Error " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															text  =  CoreConstants : : get_global_constant_name ( k ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_font ( theme_cache . doc_bold_font ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > add_text ( text ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // font
 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // list
 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-05 23:15:34 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											const  String  descr  =  HANDLE_DOC ( method . description ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											const  bool  is_documented  =  method . is_deprecated  | |  method . is_experimental  | |  ! descr . is_empty ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ! descr . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( has_prev_text )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												has_prev_text  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												_add_text ( descr ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  if  ( ! is_documented )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( has_prev_text )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												has_prev_text  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-05 23:15:34 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												String  message ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( p_classdoc . is_script_doc )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-05 23:15:34 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													static  const  char  * messages_by_type [ METHOD_TYPE_MAX ]  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														TTRC ( " There is currently no description for this method. " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														TTRC ( " There is currently no description for this constructor. " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														TTRC ( " There is currently no description for this operator. " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													message  =  TTRGET ( messages_by_type [ p_method_type ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-05 23:15:34 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													static  const  char  * messages_by_type [ METHOD_TYPE_MAX ]  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														TTRC ( " There is currently no description for this method. Please help us by [color=$color][url=$url]contributing one[/url][/color]! " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														TTRC ( " There is currently no description for this constructor. Please help us by [color=$color][url=$url]contributing one[/url][/color]! " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														TTRC ( " There is currently no description for this operator. Please help us by [color=$color][url=$url]contributing one[/url][/color]! " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													message  =  TTRGET ( messages_by_type [ p_method_type ] ) . replace ( " $url " ,  CONTRIBUTE_URL ) . replace ( " $color " ,  link_color_text ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												class_desc - > add_image ( get_editor_theme_icon ( SNAME ( " Error " ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												class_desc - > add_text ( "   " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												class_desc - > push_color ( theme_cache . comment_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-05 23:15:34 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > append_text ( message ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_pop_normal_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // indent
 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# undef HANDLE_DOC 
  
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-08-13 09:40:06 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : _update_doc ( )  {  
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! doc - > class_list . has ( edited_class ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-09-17 00:17:07 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2018-08-13 09:40:06 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									scroll_locked  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > clear ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									method_line . clear ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 19:56:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									section_line . clear ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									section_line . push_back ( Pair < String ,  int > ( TTR ( " Top " ) ,  0 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  link_color_text  =  theme_cache . title_color . to_html ( false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-01-18 23:01:30 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									DocData : : ClassDoc  cd  =  doc - > class_list [ edited_class ] ;  // Make a copy, so we can sort without worrying.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define HANDLE_DOC(m_string) ((cd.is_script_doc ? (m_string) : DTR(m_string)).strip_edges()) 
  
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-09-12 17:12:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Class name
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_push_title_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > add_text ( TTR ( " Class: " )  +  "   " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-31 21:17:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_add_type_icon ( edited_class ,  theme_cache . doc_title_font_size ,  " Object " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-24 11:55:51 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > add_text ( "   " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > push_color ( theme_cache . headline_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > add_text ( edited_class ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-29 07:57:16 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_pop_title_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-28 07:17:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( cd . is_deprecated )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										DEPRECATED_DOC_MSG ( HANDLE_DOC ( cd . deprecated_message ) ,  TTR ( " This class may be changed or removed in future versions. " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-28 07:17:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-28 07:17:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( cd . is_experimental )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										EXPERIMENTAL_DOC_MSG ( HANDLE_DOC ( cd . experimental_message ) ,  TTR ( " This class may be changed or removed in future versions. " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-28 07:17:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-02 15:56:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-09-12 17:12:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Inheritance tree
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									const  String  non_breaking_space  =  String : : chr ( 160 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-09-12 17:12:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Ascendents
 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-09 03:42:46 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! cd . inherits . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_push_normal_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > push_color ( theme_cache . title_color ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_text ( TTR ( " Inherits: " )  +  "   " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 12:28:25 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										String  inherits  =  cd . inherits ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-09 03:42:46 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										while  ( ! inherits . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-03-31 21:17:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_add_type_icon ( inherits ,  theme_cache . doc_font_size ,  " ArrowRight " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-02 15:56:28 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > add_text ( non_breaking_space ) ;  // Otherwise icon borrows hyperlink from _add_type().
 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 12:28:25 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_add_type ( inherits ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											inherits  =  doc - > class_list [ inherits ] . inherits ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-09 03:42:46 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ! inherits . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-10-09 23:59:53 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_text ( "  <  " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 12:28:25 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_pop_normal_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 12:28:25 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-08-16 14:00:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Descendants
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ( cd . is_script_doc  | |  ClassDB : : class_exists ( cd . name ) )  & &  doc - > inheriting . has ( cd . name ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_push_normal_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-08-16 14:00:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > push_color ( theme_cache . title_color ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > add_text ( TTR ( " Inherited by: " )  +  "   " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 12:28:25 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-08-16 14:00:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										for  ( RBSet < String ,  NaturalNoCaseComparator > : : Element  * itr  =  doc - > inheriting [ cd . name ] . front ( ) ;  itr ;  itr  =  itr - > next ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( itr - > prev ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												class_desc - > add_text ( "  ,  " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 12:28:25 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2023-08-16 14:00:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_add_type_icon ( itr - > get ( ) ,  theme_cache . doc_font_size ,  " ArrowRight " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > add_text ( non_breaking_space ) ;  // Otherwise icon borrows hyperlink from _add_type().
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_add_type ( itr - > get ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-05 12:28:25 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_pop_normal_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-28 07:17:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-19 18:17:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									bool  has_description  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-09-12 17:12:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Brief description
 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									const  String  brief_class_descr  =  HANDLE_DOC ( cd . brief_description ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! brief_class_descr . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-19 18:17:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										has_description  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-01-14 21:38:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > push_indent ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > push_font ( theme_cache . doc_bold_font ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > push_color ( theme_cache . text_color ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_add_text ( brief_class_descr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > pop ( ) ;  // font
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > pop ( ) ;  // indent
 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-14 21:38:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Class description
 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									const  String  class_descr  =  HANDLE_DOC ( cd . description ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! class_descr . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-19 18:17:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										has_description  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-05-18 10:17:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										section_line . push_back ( Pair < String ,  int > ( TTR ( " Description " ) ,  class_desc - > get_paragraph_count ( )  -  2 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										description_line  =  class_desc - > get_paragraph_count ( )  -  2 ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_push_title_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-14 21:38:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_text ( TTR ( " Description " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_pop_title_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-20 11:42:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-10-20 17:41:27 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > push_indent ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_push_normal_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > push_color ( theme_cache . text_color ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_add_text ( class_descr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_pop_normal_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > pop ( ) ;  // indent
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! has_description )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-14 21:38:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > push_indent ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_push_normal_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-08-13 02:33:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_image ( get_editor_theme_icon ( SNAME ( " Error " ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-19 18:17:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_text ( "   " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > push_color ( theme_cache . comment_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-19 18:17:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( cd . is_script_doc )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > add_text ( TTR ( " There is currently no description for this class. " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-19 18:17:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > append_text ( TTR ( " There is currently no description for this class. Please help us by [color=$color][url=$url]contributing one[/url][/color]! " ) . replace ( " $url " ,  CONTRIBUTE_URL ) . replace ( " $color " ,  link_color_text ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-19 18:17:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_pop_normal_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > pop ( ) ;  // indent
 
							 
						 
					
						
							
								
									
										
										
										
											2023-07-08 13:17:41 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef MODULE_MONO_ENABLED 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( classes_with_csharp_differences . has ( cd . name ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-07-08 13:17:41 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										const  String  & csharp_differences_url  =  vformat ( " %s/tutorials/scripting/c_sharp/c_sharp_differences.html " ,  VERSION_DOCS_URL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > push_indent ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_push_normal_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > push_color ( theme_cache . text_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-07-08 13:17:41 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > append_text ( " [b] "  +  TTR ( " Note: " )  +  " [/b]  "  +  vformat ( TTR ( " There are notable differences when using this API with C#. See [url=%s]C# API differences to GDScript[/url] for more information. " ) ,  csharp_differences_url ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_pop_normal_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > pop ( ) ;  // indent
 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-19 18:17:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2023-07-08 13:17:41 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2022-07-19 18:17:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-01-14 21:38:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Online tutorials
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! cd . tutorials . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_push_title_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-14 21:38:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_text ( TTR ( " Online Tutorials " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_pop_title_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-14 21:38:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-14 21:38:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > push_indent ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_push_code_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										for  ( const  DocData : : TutorialDoc  & tutorial  :  cd . tutorials )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											const  String  link  =  HANDLE_DOC ( tutorial . link ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											String  link_text  =  HANDLE_DOC ( tutorial . title ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( link_text . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												const  int  sep_pos  =  link . find ( " // " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( sep_pos  > =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													link_text  =  link . substr ( sep_pos  +  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													link_text  =  link ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-14 21:38:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-27 00:58:53 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_add_bulletpoint ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > append_text ( " [url= "  +  link  +  " ] "  +  link_text  +  " [/url] " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-14 21:38:54 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-27 00:58:53 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_pop_code_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > pop ( ) ;  // indent
 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-09-12 17:12:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Properties overview
 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-19 17:00:06 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									HashSet < String >  skip_methods ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-13 11:57:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									bool  has_properties  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bool  has_property_descriptions  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( const  DocData : : PropertyDoc  & prop  :  cd . properties )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										const  bool  is_documented  =  prop . is_deprecated  | |  prop . is_experimental  | |  ! prop . description . strip_edges ( ) . is_empty ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_documented  & &  prop . name . begins_with ( " _ " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-13 11:57:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										has_properties  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! prop . overridden )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											has_property_descriptions  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( has_properties )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-05-18 10:17:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										section_line . push_back ( Pair < String ,  int > ( TTR ( " Properties " ) ,  class_desc - > get_paragraph_count ( )  -  2 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_push_title_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-20 22:40:22 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_text ( TTR ( " Properties " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_pop_title_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-20 11:42:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > push_indent ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_push_code_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-02 22:38:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > push_table ( 4 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 11:00:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > set_table_column_expand ( 1 ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-01-16 16:54:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										cd . properties . sort_custom < PropertyCompare > ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										bool  is_generating_overridden_properties  =  true ;  // Set to false as soon as we encounter a non-overridden property.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										bool  overridden_property_exists  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										for  ( const  DocData : : PropertyDoc  & prop  :  cd . properties )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// Ignore undocumented private.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											const  bool  is_documented  =  prop . is_deprecated  | |  prop . is_experimental  | |  ! prop . description . strip_edges ( ) . is_empty ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ! is_documented  & &  prop . name . begins_with ( " _ " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( is_generating_overridden_properties  & &  ! prop . overridden )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-16 16:54:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												is_generating_overridden_properties  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// No need for the extra spacing when there's no overridden property.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( overridden_property_exists )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > push_cell ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // cell
 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-16 16:54:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_cell ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // cell
 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-16 16:54:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_cell ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // cell
 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-16 16:54:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_cell ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // cell
 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-16 16:54:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											property_line [ prop . name ]  =  class_desc - > get_paragraph_count ( )  -  2 ;  // Gets overridden if description.
 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-02 22:38:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// Property type.
 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > push_cell ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-24 20:58:47 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > push_paragraph ( HORIZONTAL_ALIGNMENT_RIGHT ,  Control : : TEXT_DIRECTION_AUTO ,  " " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_add_type ( prop . type ,  prop . enumeration ,  prop . is_bitfield ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // paragraph
 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-02 22:38:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // cell
 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											bool  describe  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ! prop . setter . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												skip_methods . insert ( prop . setter ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												describe  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ! prop . getter . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												skip_methods . insert ( prop . getter ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												describe  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( is_documented )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												describe  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-01 16:42:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( prop . overridden )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-03 13:42:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												describe  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-02 22:38:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// Property name.
 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > push_cell ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > push_color ( theme_cache . headline_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-01 16:42:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( describe )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-01 16:40:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_meta ( " @member  "  +  prop . name ,  RichTextLabel : : META_UNDERLINE_ON_HOVER ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > add_text ( prop . name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( describe )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // meta
 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-02 22:38:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // cell
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// Property value.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > push_cell ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ! prop . default_value . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( prop . overridden )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-16 16:54:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_color ( theme_cache . override_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > add_text ( " [ " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													const  String  link  =  vformat ( " [url=@member %s.%s]%s[/url] " ,  prop . overrides ,  prop . name ,  prop . overrides ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > append_text ( vformat ( TTR ( " overrides %s: " ) ,  link ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > add_text ( "   "  +  _fix_constant ( prop . default_value )  +  " ] " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-16 16:54:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													overridden_property_exists  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-02 22:38:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-16 16:54:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > add_text ( " [ "  +  TTR ( " default: " )  +  "   " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-02 22:38:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-01-16 16:54:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_color ( theme_cache . value_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > add_text ( _fix_constant ( prop . default_value ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-02 22:38:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-01-16 16:54:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > add_text ( " ] " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-16 16:54:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-28 07:17:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2023-07-02 13:13:38 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-02 22:38:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // cell
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// Property setter/getter and deprecated/experimental marks.
 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-02 22:38:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > push_cell ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											bool  has_prev_text  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-02 22:38:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( cd . is_script_doc  & &  ( ! prop . setter . is_empty ( )  | |  ! prop . getter . is_empty ( ) ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												has_prev_text  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_text ( " [ "  +  TTR ( " property: " )  +  "   " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( ! prop . setter . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_color ( theme_cache . value_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > add_text ( " setter " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( ! prop . getter . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( ! prop . setter . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														class_desc - > add_text ( " ,  " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_color ( theme_cache . value_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > add_text ( " getter " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_text ( " ] " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( prop . is_deprecated )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( has_prev_text )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > add_text ( "   " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												has_prev_text  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												DEPRECATED_DOC_TAG ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( prop . is_experimental )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( has_prev_text )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > add_text ( "   " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												has_prev_text  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												EXPERIMENTAL_DOC_TAG ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-02 22:38:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // cell
 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-02 22:38:49 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > pop ( ) ;  // table
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_pop_code_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > pop ( ) ;  // indent
 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-09-12 17:12:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Methods overview
 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-18 16:43:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									bool  sort_methods  =  EDITOR_GET ( " text_editor/help/sort_functions_alphabetically " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-29 11:37:26 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Vector < DocData : : MethodDoc >  methods ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									for  ( const  DocData : : MethodDoc  & method  :  cd . methods )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( skip_methods . has ( method . name ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( method . arguments . is_empty ( )  /* getter */  | |  ( method . arguments . size ( )  = =  1  & &  method . return_type  = =  " void "  /* setter */ ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-17 15:10:59 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-23 14:53:27 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// Ignore undocumented non virtual private.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										const  bool  is_documented  =  method . is_deprecated  | |  method . is_experimental  | |  ! method . description . strip_edges ( ) . is_empty ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! is_documented  & &  method . name . begins_with ( " _ " )  & &  ! method . qualifiers . contains ( " virtual " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										methods . push_back ( method ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! cd . constructors . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( sort_methods )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											cd . constructors . sort ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_update_method_list ( METHOD_TYPE_CONSTRUCTOR ,  cd . constructors ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! methods . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( sort_methods )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											methods . sort ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_update_method_list ( METHOD_TYPE_METHOD ,  methods ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-07 19:39:02 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! cd . operators . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( sort_methods )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											cd . operators . sort ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_update_method_list ( METHOD_TYPE_OPERATOR ,  cd . operators ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-09-12 17:12:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Theme properties
 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! cd . theme_properties . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-05-18 10:17:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										section_line . push_back ( Pair < String ,  int > ( TTR ( " Theme Properties " ) ,  class_desc - > get_paragraph_count ( )  -  2 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_push_title_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-20 22:40:22 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_text ( TTR ( " Theme Properties " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_pop_title_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-29 22:41:02 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-01 21:02:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										String  theme_data_type ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-13 15:04:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										HashMap < String ,  String >  data_type_names ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-01 21:02:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										data_type_names [ " color " ]  =  TTR ( " Colors " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										data_type_names [ " constant " ]  =  TTR ( " Constants " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										data_type_names [ " font " ]  =  TTR ( " Fonts " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										data_type_names [ " font_size " ]  =  TTR ( " Font Sizes " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										data_type_names [ " icon " ]  =  TTR ( " Icons " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										data_type_names [ " style " ]  =  TTR ( " Styles " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-29 22:41:02 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										for  ( const  DocData : : ThemeItemDoc  & theme_item  :  cd . theme_properties )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( theme_data_type  ! =  theme_item . data_type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												theme_data_type  =  theme_item . data_type ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-01 21:02:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												class_desc - > push_indent ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												_push_title_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-01 21:02:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( data_type_names . has ( theme_data_type ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > add_text ( data_type_names [ theme_data_type ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > add_text ( theme_data_type ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-01 21:02:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												_pop_title_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // indent
 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-01 21:02:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											theme_property_line [ theme_item . name ]  =  class_desc - > get_paragraph_count ( )  -  2 ;  // Gets overridden if description.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > push_indent ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-01 21:02:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// Theme item header.
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_push_code_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-01 21:02:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_add_bulletpoint ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// Theme item object type.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_add_type ( theme_item . type ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 19:56:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-01 21:02:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// Theme item name.
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > push_color ( theme_cache . headline_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-01 21:02:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > add_text ( "   " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > add_text ( theme_item . name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-01 16:42:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-01 21:02:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// Theme item default value.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ! theme_item . default_value . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-16 23:47:18 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_text ( "  [ "  +  TTR ( " default: " )  +  "   " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_color ( theme_cache . value_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_text ( _fix_constant ( theme_item . default_value ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-01 16:42:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_text ( " ] " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-01 16:42:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_pop_code_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-12-01 21:02:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// Theme item description.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > push_indent ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_push_normal_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > push_color ( theme_cache . comment_color ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-09-04 10:54:50 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											bool  has_prev_text  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( theme_item . is_deprecated )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												has_prev_text  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												DEPRECATED_DOC_MSG ( HANDLE_DOC ( theme_item . deprecated_message ) ,  TTR ( " This theme property may be changed or removed in future versions. " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( theme_item . is_experimental )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( has_prev_text )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												has_prev_text  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												EXPERIMENTAL_DOC_MSG ( HANDLE_DOC ( theme_item . experimental_message ) ,  TTR ( " This theme property may be changed or removed in future versions. " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											const  String  descr  =  HANDLE_DOC ( theme_item . description ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ! descr . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-04 10:54:50 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( has_prev_text )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												has_prev_text  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												_add_text ( descr ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-04 10:54:50 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  if  ( ! has_prev_text )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_image ( get_editor_theme_icon ( SNAME ( " Error " ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												class_desc - > add_text ( "   " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_color ( theme_cache . comment_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( cd . is_script_doc )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > add_text ( TTR ( " There is currently no description for this theme property. " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > append_text ( TTR ( " There is currently no description for this theme property. Please help us by [color=$color][url=$url]contributing one[/url][/color]! " ) . replace ( " $url " ,  CONTRIBUTE_URL ) . replace ( " $color " ,  link_color_text ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-01 21:02:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-29 22:41:02 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-01 21:02:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_pop_normal_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // indent
 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-29 22:41:02 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // indent
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-29 22:41:02 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-01 16:30:09 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-09-12 17:12:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Signals
 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! cd . signals . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-29 11:37:26 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( sort_methods )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											cd . signals . sort ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 19:56:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-05-18 10:17:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										section_line . push_back ( Pair < String ,  int > ( TTR ( " Signals " ) ,  class_desc - > get_paragraph_count ( )  -  2 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_push_title_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-20 22:40:22 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_text ( TTR ( " Signals " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_pop_title_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										for  ( const  DocData : : MethodDoc  & signal  :  cd . signals )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											signal_line [ signal . name ]  =  class_desc - > get_paragraph_count ( )  -  2 ;  // Gets overridden if description.
 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-01 21:02:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > push_indent ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// Signal header.
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_push_code_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-01 21:02:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_add_bulletpoint ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > push_color ( theme_cache . headline_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > add_text ( signal . name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-20 22:40:22 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > add_text ( " ( " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											for  ( int  j  =  0 ;  j  <  signal . arguments . size ( ) ;  j + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												const  DocData : : ArgumentDoc  & argument  =  signal . arguments [ j ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_color ( theme_cache . text_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( j  >  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
													class_desc - > add_text ( " ,  " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-20 22:40:22 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_text ( argument . name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-20 22:40:22 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_text ( " :  " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												_add_type ( argument . type ,  argument . enumeration ,  argument . is_bitfield ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// Signals currently do not support default argument values, neither the core nor GDScript.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// This code is just for completeness.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( ! argument . default_value . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-01 16:42:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > add_text ( "  =  " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > push_color ( theme_cache . value_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > add_text ( _fix_constant ( argument . default_value ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-20 22:40:22 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > add_text ( " ) " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_pop_code_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// Signal description.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > push_indent ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_push_normal_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > push_color ( theme_cache . comment_color ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											const  String  descr  =  HANDLE_DOC ( signal . description ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											const  bool  is_multiline  =  descr . find_char ( ' \n ' )  >  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											bool  has_prev_text  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-28 07:17:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( signal . is_deprecated )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												has_prev_text  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												DEPRECATED_DOC_MSG ( HANDLE_DOC ( signal . deprecated_message ) ,  TTR ( " This signal may be changed or removed in future versions. " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-28 07:17:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2023-07-02 13:13:38 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( signal . is_experimental )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( has_prev_text )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													if  ( is_multiline )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												has_prev_text  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												EXPERIMENTAL_DOC_MSG ( HANDLE_DOC ( signal . experimental_message ) ,  TTR ( " This signal may be changed or removed in future versions. " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-28 07:17:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ! descr . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( has_prev_text )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( is_multiline )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												has_prev_text  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												_add_text ( descr ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  if  ( ! has_prev_text )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_image ( get_editor_theme_icon ( SNAME ( " Error " ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												class_desc - > add_text ( "   " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_color ( theme_cache . comment_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( cd . is_script_doc )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > add_text ( TTR ( " There is currently no description for this signal. " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > append_text ( TTR ( " There is currently no description for this signal. Please help us by [color=$color][url=$url]contributing one[/url][/color]! " ) . replace ( " $url " ,  CONTRIBUTE_URL ) . replace ( " $color " ,  link_color_text ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_pop_normal_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // indent
 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // indent
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-09-12 17:12:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Constants and enums
 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! cd . constants . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-13 15:04:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										HashMap < String ,  Vector < DocData : : ConstantDoc > >  enums ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-23 19:10:32 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Vector < DocData : : ConstantDoc >  constants ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										for  ( const  DocData : : ConstantDoc  & constant  :  cd . constants )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ! constant . enumeration . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( ! enums . has ( constant . enumeration ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													enums [ constant . enumeration ]  =  Vector < DocData : : ConstantDoc > ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-23 19:10:32 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												enums [ constant . enumeration ] . push_back ( constant ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-23 19:10:32 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// Ignore undocumented private.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												const  bool  is_documented  =  constant . is_deprecated  | |  constant . is_experimental  | |  ! constant . description . strip_edges ( ) . is_empty ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( ! is_documented  & &  constant . name . begins_with ( " _ " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												constants . push_back ( constant ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-23 19:10:32 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-09-12 17:12:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// Enums
 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-02 22:36:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										bool  has_enums  =  enums . size ( )  & &  ! cd . is_script_doc ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( enums . size ( )  & &  ! has_enums )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  ( KeyValue < String ,  DocData : : EnumDoc >  & E  :  cd . enums )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												const  bool  is_documented  =  E . value . is_deprecated  | |  E . value . is_experimental  | |  ! E . value . description . strip_edges ( ) . is_empty ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( ! is_documented  & &  E . key . begins_with ( " _ " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-02 22:36:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												has_enums  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( has_enums )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-05-18 10:17:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											section_line . push_back ( Pair < String ,  int > ( TTR ( " Enumerations " ) ,  class_desc - > get_paragraph_count ( )  -  2 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_push_title_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-20 22:40:22 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > add_text ( TTR ( " Enumerations " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_pop_title_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-23 19:10:32 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-09 14:13:42 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											for  ( KeyValue < String ,  Vector < DocData : : ConstantDoc > >  & E  :  enums )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-02 22:36:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												String  key  =  E . key ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( ( key . get_slice_count ( " . " )  >  1 )  & &  ( key . get_slice ( " . " ,  0 )  = =  edited_class ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													key  =  key . get_slice ( " . " ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( cd . enums . has ( key ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													const  bool  is_documented  =  cd . enums [ key ] . is_deprecated  | |  cd . enums [ key ] . is_experimental  | |  ! cd . enums [ key ] . description . strip_edges ( ) . is_empty ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( ! is_documented  & &  cd . is_script_doc  & &  E . key . begins_with ( " _ " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-02 22:36:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-23 19:10:32 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// Enum header.
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												_push_code_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-07-02 13:13:38 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												enum_line [ E . key ]  =  class_desc - > get_paragraph_count ( )  -  2 ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_color ( theme_cache . title_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-24 11:16:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( E . value . size ( )  & &  E . value [ 0 ] . is_bitfield )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-27 17:09:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > add_text ( " flags  " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-24 11:16:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-27 17:09:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > add_text ( " enum  " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-06-24 11:16:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_color ( theme_cache . headline_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-02 22:36:04 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_text ( key ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-23 19:10:32 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_text ( " : " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2023-07-02 13:13:38 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												_pop_code_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// Enum description.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( key  ! =  " @unnamed_enums "  & &  cd . enums . has ( key ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													const  String  descr  =  HANDLE_DOC ( cd . enums [ key ] . description ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													const  bool  is_multiline  =  descr . find_char ( ' \n ' )  >  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( cd . enums [ key ] . is_deprecated  | |  cd . enums [ key ] . is_experimental  | |  ! descr . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														class_desc - > push_indent ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														_push_normal_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														class_desc - > push_color ( theme_cache . text_color ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														bool  has_prev_text  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														if  ( cd . enums [ key ] . is_deprecated )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															has_prev_text  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
															DEPRECATED_DOC_MSG ( HANDLE_DOC ( cd . enums [ key ] . deprecated_message ) ,  TTR ( " This enumeration may be changed or removed in future versions. " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														if  ( cd . enums [ key ] . is_experimental )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															if  ( has_prev_text )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																if  ( is_multiline )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															has_prev_text  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
															EXPERIMENTAL_DOC_MSG ( HANDLE_DOC ( cd . enums [ key ] . experimental_message ) ,  TTR ( " This enumeration may be changed or removed in future versions. " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														if  ( ! descr . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															if  ( has_prev_text )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																if  ( is_multiline )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															has_prev_text  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															_add_text ( descr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														_pop_normal_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														class_desc - > pop ( ) ;  // indent
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												HashMap < String ,  int >  enum_values ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												const  int  enum_start_line  =  enum_line [ E . key ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-23 19:10:32 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												bool  prev_is_multiline  =  true ;  // Use a large margin for the first item.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												for  ( const  DocData : : ConstantDoc  & enum_value  :  E . value )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													const  String  descr  =  HANDLE_DOC ( enum_value . description ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													const  bool  is_multiline  =  descr . find_char ( ' \n ' )  >  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( prev_is_multiline  | |  is_multiline )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													prev_is_multiline  =  is_multiline ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													if  ( cd . name  = =  " @GlobalScope " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														enum_values [ enum_value . name ]  =  enum_start_line ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-23 19:10:32 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-26 17:57:36 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													// Add the enum constant line to the constant_line map so we can locate it as a constant.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													constant_line [ enum_value . name ]  =  class_desc - > get_paragraph_count ( )  -  2 ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-27 20:01:16 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_indent ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-07-02 13:13:38 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													// Enum value header.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													_push_code_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-01 21:02:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													_add_bulletpoint ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_color ( theme_cache . headline_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > add_text ( enum_value . name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-23 19:10:32 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > add_text ( "  =  " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_color ( theme_cache . value_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > add_text ( _fix_constant ( enum_value . value ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-28 07:17:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-07-02 13:13:38 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													_pop_code_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													// Enum value description.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													if  ( enum_value . is_deprecated  | |  enum_value . is_experimental  | |  ! descr . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-01 21:02:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														class_desc - > push_indent ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														_push_normal_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														class_desc - > push_color ( theme_cache . comment_color ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														bool  has_prev_text  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														if  ( enum_value . is_deprecated )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
															has_prev_text  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
															DEPRECATED_DOC_MSG ( HANDLE_DOC ( enum_value . deprecated_message ) ,  TTR ( " This constant may be changed or removed in future versions. " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														if  ( enum_value . is_experimental )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
															if  ( has_prev_text )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																if  ( is_multiline )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															has_prev_text  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
															EXPERIMENTAL_DOC_MSG ( HANDLE_DOC ( enum_value . experimental_message ) ,  TTR ( " This constant may be changed or removed in future versions. " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														if  ( ! descr . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															if  ( has_prev_text )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																if  ( is_multiline )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															has_prev_text  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															_add_text ( descr ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-21 12:01:31 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														_pop_normal_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														class_desc - > pop ( ) ;  // indent
 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-23 19:10:32 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // indent
 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-23 19:10:32 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( cd . name  = =  " @GlobalScope " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													enum_values_line [ E . key ]  =  enum_values ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-23 19:10:32 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-09-12 17:12:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// Constants
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ! constants . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-05-18 10:17:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											section_line . push_back ( Pair < String ,  int > ( TTR ( " Constants " ) ,  class_desc - > get_paragraph_count ( )  -  2 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_push_title_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-20 22:40:22 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > add_text ( TTR ( " Constants " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_pop_title_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-23 19:10:32 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											bool  prev_is_multiline  =  true ;  // Use a large margin for the first item.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											for  ( const  DocData : : ConstantDoc  & constant  :  constants )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												const  String  descr  =  HANDLE_DOC ( constant . description ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												const  bool  is_multiline  =  descr . find_char ( ' \n ' )  >  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( prev_is_multiline  | |  is_multiline )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												prev_is_multiline  =  is_multiline ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												constant_line [ constant . name ]  =  class_desc - > get_paragraph_count ( )  -  2 ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_indent ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// Constant header.
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												_push_code_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-15 16:43:27 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( constant . value . begins_with ( " Color( " )  & &  constant . value . ends_with ( " ) " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													String  stripped  =  constant . value . replace ( "   " ,  " " ) . replace ( " Color( " ,  " " ) . replace ( " ) " ,  " " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-20 12:29:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													PackedFloat64Array  color  =  stripped . split_floats ( " , " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-15 16:43:27 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													if  ( color . size ( )  > =  3 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														class_desc - > push_color ( Color ( color [ 0 ] ,  color [ 1 ] ,  color [ 2 ] ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-01 21:02:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														_add_bulletpoint ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-15 16:43:27 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-21 12:01:31 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-01 21:02:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													_add_bulletpoint ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-15 16:43:27 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_color ( theme_cache . headline_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_text ( constant . name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-23 19:10:32 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_text ( "  =  " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_color ( theme_cache . value_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_text ( _fix_constant ( constant . value ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-28 07:17:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-07-02 13:13:38 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												_pop_code_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// Constant description.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( constant . is_deprecated  | |  constant . is_experimental  | |  ! descr . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-01 21:02:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_indent ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													_push_normal_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_color ( theme_cache . comment_color ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													bool  has_prev_text  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													if  ( constant . is_deprecated )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														has_prev_text  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														DEPRECATED_DOC_MSG ( HANDLE_DOC ( constant . deprecated_message ) ,  TTR ( " This constant may be changed or removed in future versions. " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													if  ( constant . is_experimental )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														if  ( has_prev_text )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															if  ( is_multiline )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														has_prev_text  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														EXPERIMENTAL_DOC_MSG ( HANDLE_DOC ( constant . experimental_message ) ,  TTR ( " This constant may be changed or removed in future versions. " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( ! descr . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														if  ( has_prev_text )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															if  ( is_multiline )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														has_prev_text  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														_add_text ( descr ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-21 12:01:31 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													_pop_normal_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // indent
 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-23 19:10:32 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // indent
 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Annotations
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! cd . annotations . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( sort_methods )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											cd . annotations . sort ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										section_line . push_back ( Pair < String ,  int > ( TTR ( " Annotations " ) ,  class_desc - > get_paragraph_count ( )  -  2 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_push_title_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_text ( TTR ( " Annotations " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_pop_title_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										for  ( const  DocData : : MethodDoc  & annotation  :  cd . annotations )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											annotation_line [ annotation . name ]  =  class_desc - > get_paragraph_count ( )  -  2 ;  // Gets overridden if description.
 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > push_indent ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// Annotation header.
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_push_code_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_add_bulletpoint ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > push_color ( theme_cache . headline_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > add_text ( annotation . name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ! annotation . arguments . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_text ( " ( " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												for  ( int  j  =  0 ;  j  <  annotation . arguments . size ( ) ;  j + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													const  DocData : : ArgumentDoc  & argument  =  annotation . arguments [ j ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_color ( theme_cache . text_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													if  ( j  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														class_desc - > add_text ( " ,  " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > add_text ( argument . name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > add_text ( " :  " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-15 22:10:47 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													_add_type ( argument . type ,  argument . enumeration ,  argument . is_bitfield ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													if  ( ! argument . default_value . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														class_desc - > add_text ( "  =  " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														class_desc - > push_color ( theme_cache . value_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														class_desc - > add_text ( _fix_constant ( argument . default_value ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( annotation . qualifiers . contains ( " vararg " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_color ( theme_cache . text_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													if  ( ! annotation . arguments . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														class_desc - > add_text ( " ,  " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > add_text ( " ... " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_text ( " ) " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ! annotation . qualifiers . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_color ( theme_cache . qualifier_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_text ( "   " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_text ( annotation . qualifiers ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_pop_code_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// Annotation description.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > push_indent ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_push_normal_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > push_color ( theme_cache . comment_color ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											const  String  descr  =  HANDLE_DOC ( annotation . description ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ! descr . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												_add_text ( descr ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-08-13 02:33:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_image ( get_editor_theme_icon ( SNAME ( " Error " ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_text ( "   " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_color ( theme_cache . comment_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( cd . is_script_doc )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > add_text ( TTR ( " There is currently no description for this annotation. " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > append_text ( TTR ( " There is currently no description for this annotation. Please help us by [color=$color][url=$url]contributing one[/url][/color]! " ) . replace ( " $url " ,  CONTRIBUTE_URL ) . replace ( " $color " ,  link_color_text ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_pop_normal_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // indent
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // indent
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-09-12 17:12:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Property descriptions
 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-13 11:57:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( has_property_descriptions )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-05-18 10:17:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										section_line . push_back ( Pair < String ,  int > ( TTR ( " Property Descriptions " ) ,  class_desc - > get_paragraph_count ( )  -  2 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_push_title_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-20 22:40:22 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > add_text ( TTR ( " Property Descriptions " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_pop_title_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										for  ( const  DocData : : PropertyDoc  & prop  :  cd . properties )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( prop . overridden )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-03 13:42:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												continue ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-21 13:06:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// Ignore undocumented private.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											const  bool  is_documented  =  prop . is_deprecated  | |  prop . is_experimental  | |  ! prop . description . strip_edges ( ) . is_empty ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ! is_documented  & &  prop . name . begins_with ( " _ " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-21 13:06:53 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-03 13:42:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											property_line [ prop . name ]  =  class_desc - > get_paragraph_count ( )  -  2 ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-04 14:09:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > push_table ( 2 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 11:00:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > set_table_column_expand ( 1 ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-04 14:09:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > push_cell ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_push_code_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-12-01 21:02:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_add_bulletpoint ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_add_type ( prop . type ,  prop . enumeration ,  prop . is_bitfield ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_pop_code_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-04 14:09:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // cell
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > push_cell ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_push_code_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > push_color ( theme_cache . headline_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > add_text ( prop . name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-04 14:09:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-01 16:42:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ! prop . default_value . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-01-16 23:47:18 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_text ( "  [ "  +  TTR ( " default: " )  +  "   " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-01 16:42:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_color ( theme_cache . value_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_text ( _fix_constant ( prop . default_value ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-01 16:42:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-01 16:42:22 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_text ( " ] " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-28 07:17:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( cd . is_script_doc  & &  ( ! prop . setter . is_empty ( )  | |  ! prop . getter . is_empty ( ) ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_text ( "  [ "  +  TTR ( " property: " )  +  "   " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( ! prop . setter . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_color ( theme_cache . value_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > add_text ( " setter " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( ! prop . getter . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( ! prop . setter . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														class_desc - > add_text ( " ,  " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_color ( theme_cache . value_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > add_text ( " getter " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_color ( theme_cache . symbol_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_text ( " ] " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_pop_code_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-04 14:09:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // cell
 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// Script doc doesn't have setter, getter.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ! cd . is_script_doc )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-13 15:04:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												HashMap < String ,  DocData : : MethodDoc >  method_map ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												for  ( int  j  =  0 ;  j  <  methods . size ( ) ;  j + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													method_map [ methods [ j ] . name ]  =  methods [ j ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-21 21:07:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( ! prop . setter . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_cell ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // cell
 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_cell ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													_push_code_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_color ( theme_cache . text_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													if  ( method_map [ prop . setter ] . arguments . size ( )  >  1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														// Setters with additional arguments are exposed in the method list, so we link them here for quick access.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														class_desc - > push_meta ( " @method  "  +  prop . setter ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														class_desc - > add_text ( prop . setter  +  TTR ( " (value) " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														class_desc - > pop ( ) ;  // meta
 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														class_desc - > add_text ( prop . setter  +  TTR ( " (value) " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_color ( theme_cache . comment_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > add_text ( "  setter " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													_pop_code_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // cell
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													method_line [ prop . setter ]  =  property_line [ prop . name ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-21 21:07:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( ! prop . getter . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_cell ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // cell
 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_cell ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													_push_code_font ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_color ( theme_cache . text_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													if  ( ! method_map [ prop . getter ] . arguments . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														// Getters with additional arguments are exposed in the method list, so we link them here for quick access.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														class_desc - > push_meta ( " @method  "  +  prop . getter ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														class_desc - > add_text ( prop . getter  +  " () " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														class_desc - > pop ( ) ;  // meta
 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														class_desc - > add_text ( prop . getter  +  " () " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > push_color ( theme_cache . comment_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > add_text ( "  getter " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													_pop_code_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > pop ( ) ;  // cell
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													method_line [ prop . getter ]  =  property_line [ prop . name ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-21 21:07:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-04 14:09:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // table
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-06-20 11:42:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > push_indent ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_push_normal_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > push_color ( theme_cache . text_color ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											bool  has_prev_text  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( prop . is_deprecated )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												has_prev_text  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												DEPRECATED_DOC_MSG ( HANDLE_DOC ( prop . deprecated_message ) ,  TTR ( " This property may be changed or removed in future versions. " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( prop . is_experimental )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( has_prev_text )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												has_prev_text  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												EXPERIMENTAL_DOC_MSG ( HANDLE_DOC ( prop . experimental_message ) ,  TTR ( " This property may be changed or removed in future versions. " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											const  String  descr  =  HANDLE_DOC ( prop . description ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ! descr . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( has_prev_text )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												has_prev_text  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												_add_text ( descr ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  if  ( ! has_prev_text )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-08-13 02:33:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_image ( get_editor_theme_icon ( SNAME ( " Error " ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-12 19:16:18 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > add_text ( "   " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > push_color ( theme_cache . comment_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( cd . is_script_doc )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > add_text ( TTR ( " There is currently no description for this property. " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-29 16:25:12 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													class_desc - > append_text ( TTR ( " There is currently no description for this property. Please help us by [color=$color][url=$url]contributing one[/url][/color]! " ) . replace ( " $url " ,  CONTRIBUTE_URL ) . replace ( " $color " ,  link_color_text ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-12 19:16:18 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-09-04 10:54:50 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// Add copy note to built-in properties returning `Packed*Array`.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ! cd . is_script_doc  & &  packed_array_types . has ( prop . type ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												_add_text ( vformat ( TTR ( " [b]Note:[/b] The returned array is [i]copied[/i] and any changes to it will not update the original property value. See [%s] for more details. " ) ,  prop . type ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_pop_normal_font ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > pop ( ) ;  // indent
 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-04 01:16:14 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Constructor descriptions
 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-19 18:17:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! cd . constructors . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_update_method_descriptions ( cd ,  METHOD_TYPE_CONSTRUCTOR ,  cd . constructors ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-09-12 17:12:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Method descriptions
 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-19 18:17:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! methods . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_update_method_descriptions ( cd ,  METHOD_TYPE_METHOD ,  methods ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-03 12:31:41 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-20 21:49:02 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Operator descriptions
 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-19 18:17:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! cd . operators . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_update_method_descriptions ( cd ,  METHOD_TYPE_OPERATOR ,  cd . operators ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-19 18:17:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Allow the document to be scrolled slightly below the end.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-19 18:17:04 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Free the scroll.
 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									scroll_locked  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# undef HANDLE_DOC 
  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : _request_help ( const  String  & p_string )  {  
						 
					
						
							
								
									
										
										
										
											2014-05-06 17:41:19 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Error  err  =  _goto_desc ( p_string ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( err  = =  OK )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-19 18:08:31 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										EditorNode : : get_singleton ( ) - > get_editor_main_screen ( ) - > select ( EditorMainScreen : : EDITOR_SCRIPT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-06 17:41:19 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : _help_callback ( const  String  & p_topic )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  what  =  p_topic . get_slice ( " : " ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  clss  =  p_topic . get_slice ( " : " ,  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-20 23:01:44 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  name ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_topic . get_slice_count ( " : " )  = =  3 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										name  =  p_topic . get_slice ( " : " ,  2 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-20 23:01:44 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-26 17:57:36 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_request_help ( clss ) ;  // First go to class.
 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-20 23:01:44 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									int  line  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-20 23:01:44 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( what  = =  " class_desc " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										line  =  description_line ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if  ( what  = =  " class_signal " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( signal_line . has ( name ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											line  =  signal_line [ name ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  if  ( what  = =  " class_method "  | |  what  = =  " class_method_desc " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( method_line . has ( name ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											line  =  method_line [ name ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  if  ( what  = =  " class_property " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( property_line . has ( name ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											line  =  property_line [ name ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-23 19:10:32 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  if  ( what  = =  " class_enum " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( enum_line . has ( name ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-23 19:10:32 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											line  =  enum_line [ name ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  if  ( what  = =  " class_theme_item " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( theme_property_line . has ( name ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											line  =  theme_property_line [ name ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  if  ( what  = =  " class_constant " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( constant_line . has ( name ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											line  =  constant_line [ name ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 18:56:34 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  if  ( what  = =  " class_annotation " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( annotation_line . has ( name ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											line  =  annotation_line [ name ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-30 16:20:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  if  ( what  = =  " class_global " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( constant_line . has ( name ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-30 16:20:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											line  =  constant_line [ name ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-08-30 21:51:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( method_line . has ( name ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											line  =  method_line [ name ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-13 15:04:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											HashMap < String ,  HashMap < String ,  int > > : : Iterator  iter  =  enum_values_line . begin ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-30 16:20:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											while  ( true )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-13 15:04:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( iter - > value . has ( name ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													line  =  iter - > value [ name ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-30 16:20:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-13 15:04:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												}  else  if  ( iter  = =  enum_values_line . last ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-30 16:20:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													break ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-13 15:04:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													+ + iter ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-30 16:20:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-20 23:01:44 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-04 16:55:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( class_desc - > is_finished ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-30 09:37:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// call_deferred() is not enough.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-28 10:11:02 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( class_desc - > is_connected ( SceneStringName ( draw ) ,  callable_mp ( class_desc ,  & RichTextLabel : : scroll_to_paragraph ) ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											class_desc - > disconnect ( SceneStringName ( draw ) ,  callable_mp ( class_desc ,  & RichTextLabel : : scroll_to_paragraph ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-13 16:56:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > connect ( SceneStringName ( draw ) ,  callable_mp ( class_desc ,  & RichTextLabel : : scroll_to_paragraph ) . bind ( line ) ,  CONNECT_ONE_SHOT  |  CONNECT_DEFERRED ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-30 10:04:07 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										scroll_to  =  line ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-20 23:01:44 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  _add_text_to_rt ( const  String  & p_bbcode ,  RichTextLabel  * p_rt ,  const  Control  * p_owner_node ,  const  String  & p_class )  {  
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									const  DocTools  * doc  =  EditorHelp : : get_doc_data ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bool  is_native  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										const  HashMap < String ,  DocData : : ClassDoc > : : ConstIterator  E  =  doc - > class_list . find ( p_class ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( E  & &  ! E - > value . is_script_doc )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											is_native  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  bool  using_tab_indent  =  int ( EDITOR_GET ( " text_editor/behavior/indent/type " ) )  = =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-23 23:15:16 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									const  Ref < Font >  doc_font  =  p_owner_node - > get_theme_font ( SNAME ( " doc " ) ,  EditorStringName ( EditorFonts ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  Ref < Font >  doc_bold_font  =  p_owner_node - > get_theme_font ( SNAME ( " doc_bold " ) ,  EditorStringName ( EditorFonts ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  Ref < Font >  doc_italic_font  =  p_owner_node - > get_theme_font ( SNAME ( " doc_italic " ) ,  EditorStringName ( EditorFonts ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  Ref < Font >  doc_code_font  =  p_owner_node - > get_theme_font ( SNAME ( " doc_source " ) ,  EditorStringName ( EditorFonts ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  Ref < Font >  doc_kbd_font  =  p_owner_node - > get_theme_font ( SNAME ( " doc_keyboard " ) ,  EditorStringName ( EditorFonts ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 18:47:12 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									const  int  doc_code_font_size  =  p_owner_node - > get_theme_font_size ( SNAME ( " doc_source_size " ) ,  EditorStringName ( EditorFonts ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  int  doc_kbd_font_size  =  p_owner_node - > get_theme_font_size ( SNAME ( " doc_keyboard_size " ) ,  EditorStringName ( EditorFonts ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-31 19:51:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									const  Color  type_color  =  p_owner_node - > get_theme_color ( SNAME ( " type_color " ) ,  SNAME ( " EditorHelp " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  Color  code_color  =  p_owner_node - > get_theme_color ( SNAME ( " code_color " ) ,  SNAME ( " EditorHelp " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  Color  kbd_color  =  p_owner_node - > get_theme_color ( SNAME ( " kbd_color " ) ,  SNAME ( " EditorHelp " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  Color  code_dark_color  =  Color ( code_color ,  0.8 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  Color  link_color  =  p_owner_node - > get_theme_color ( SNAME ( " link_color " ) ,  SNAME ( " EditorHelp " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-08-13 02:33:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									const  Color  link_method_color  =  p_owner_node - > get_theme_color ( SNAME ( " accent_color " ) ,  EditorStringName ( Editor ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  Color  link_property_color  =  link_color . lerp ( p_owner_node - > get_theme_color ( SNAME ( " accent_color " ) ,  EditorStringName ( Editor ) ) ,  0.25 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  Color  link_annotation_color  =  link_color . lerp ( p_owner_node - > get_theme_color ( SNAME ( " accent_color " ) ,  EditorStringName ( Editor ) ) ,  0.5 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-31 19:51:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  Color  code_bg_color  =  p_owner_node - > get_theme_color ( SNAME ( " code_bg_color " ) ,  SNAME ( " EditorHelp " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  Color  kbd_bg_color  =  p_owner_node - > get_theme_color ( SNAME ( " kbd_bg_color " ) ,  SNAME ( " EditorHelp " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  Color  param_bg_color  =  p_owner_node - > get_theme_color ( SNAME ( " param_bg_color " ) ,  SNAME ( " EditorHelp " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-05-29 11:37:26 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 09:11:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  bbcode  =  p_bbcode . dedent ( ) . replace ( " \t " ,  " " ) . replace ( " \r " ,  " " ) . strip_edges ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-27 23:10:44 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-26 17:57:36 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Select the correct code examples.
 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-22 22:41:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( ( int ) EDITOR_GET ( " text_editor/help/class_reference_examples " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  0 :  // GDScript
 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											bbcode  =  bbcode . replace ( " [gdscript " ,  " [codeblock lang=gdscript " ) ;  // Tag can have extra arguments.
 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-22 22:41:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											bbcode  =  bbcode . replace ( " [/gdscript] " ,  " [/codeblock] " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-02 20:11:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											for  ( int  pos  =  bbcode . find ( " [csharp " ) ;  pos  ! =  - 1 ;  pos  =  bbcode . find ( " [csharp " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-11 09:08:08 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												int  end_pos  =  bbcode . find ( " [/csharp] " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( end_pos  = =  - 1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-22 22:41:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													WARN_PRINT ( " Unclosed [csharp] block or parse fail in code (search for tag errors) " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-11-11 09:08:08 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												bbcode  =  bbcode . left ( pos )  +  bbcode . substr ( end_pos  +  9 ) ;  // 9 is length of "[/csharp]".
 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-22 22:41:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												while  ( bbcode [ pos ]  = =  ' \n ' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-11 09:08:08 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													bbcode  =  bbcode . left ( pos )  +  bbcode . substr ( pos  +  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-22 22:41:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  1 :  // C#
 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											bbcode  =  bbcode . replace ( " [csharp " ,  " [codeblock lang=csharp " ) ;  // Tag can have extra arguments.
 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-22 22:41:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											bbcode  =  bbcode . replace ( " [/csharp] " ,  " [/codeblock] " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-02 20:11:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											for  ( int  pos  =  bbcode . find ( " [gdscript " ) ;  pos  ! =  - 1 ;  pos  =  bbcode . find ( " [gdscript " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-11 09:08:08 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												int  end_pos  =  bbcode . find ( " [/gdscript] " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( end_pos  = =  - 1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-22 22:41:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													WARN_PRINT ( " Unclosed [gdscript] block or parse fail in code (search for tag errors) " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-11-11 09:08:08 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												bbcode  =  bbcode . left ( pos )  +  bbcode . substr ( end_pos  +  11 ) ;  // 11 is length of "[/gdscript]".
 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-22 22:41:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												while  ( bbcode [ pos ]  = =  ' \n ' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-11 09:08:08 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													bbcode  =  bbcode . left ( pos )  +  bbcode . substr ( pos  +  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-22 22:41:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  2 :  // GDScript and C#
 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											bbcode  =  bbcode . replace ( " [csharp " ,  " [b]C#:[/b] \n [codeblock lang=csharp " ) ;  // Tag can have extra arguments.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											bbcode  =  bbcode . replace ( " [gdscript " ,  " [b]GDScript:[/b] \n [codeblock lang=gdscript " ) ;  // Tag can have extra arguments.
 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-22 22:41:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											bbcode  =  bbcode . replace ( " [/csharp] " ,  " [/codeblock] " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											bbcode  =  bbcode . replace ( " [/gdscript] " ,  " [/codeblock] " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-26 17:57:36 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Remove codeblocks (they would be printed otherwise).
 
							 
						 
					
						
							
								
									
										
										
										
											2020-07-22 22:41:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									bbcode  =  bbcode . replace ( " [codeblocks] \n " ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bbcode  =  bbcode . replace ( " \n [/codeblocks] " ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bbcode  =  bbcode . replace ( " [codeblocks] " ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bbcode  =  bbcode . replace ( " [/codeblocks] " ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Remove `\n` here because `\n` is replaced by `\n\n` later.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Will be compensated when parsing `[/codeblock]`.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									bbcode  =  bbcode . replace ( " [/codeblock] \n " ,  " [/codeblock] " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 18:47:12 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									List < String >  tag_stack ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 19:56:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									int  pos  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									while  ( pos  <  bbcode . length ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										int  brk_pos  =  bbcode . find_char ( ' [ ' ,  pos ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( brk_pos  <  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											brk_pos  =  bbcode . length ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( brk_pos  >  pos )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > add_text ( bbcode . substr ( pos ,  brk_pos  -  pos ) . replace ( " \n " ,  " \n \n " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( brk_pos  = =  bbcode . length ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-26 17:57:36 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ;  // Nothing else to add.
 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										int  brk_end  =  bbcode . find_char ( ' ] ' ,  brk_pos  +  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( brk_end  = =  - 1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > add_text ( bbcode . substr ( brk_pos ,  bbcode . length ( )  -  brk_pos ) . replace ( " \n " ,  " \n \n " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										const  String  tag  =  bbcode . substr ( brk_pos  +  1 ,  brk_end  -  brk_pos  -  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( tag . begins_with ( " / " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											bool  tag_ok  =  tag_stack . size ( )  & &  tag_stack . front ( ) - > get ( )  = =  tag . substr ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 19:56:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											if  ( ! tag_ok )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-23 23:15:16 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												p_rt - > add_text ( " [ " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-11 09:11:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												pos  =  brk_pos  +  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											tag_stack . pop_front ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											pos  =  brk_end  +  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-31 18:47:12 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( tag  ! =  " /img " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												p_rt - > pop ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-19 09:56:42 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-02 20:11:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( tag . begins_with ( " method  " )  | |  tag . begins_with ( " constructor  " )  | |  tag . begins_with ( " operator  " )  | |  tag . begins_with ( " member  " )  | |  tag . begins_with ( " signal  " )  | |  tag . begins_with ( " enum  " )  | |  tag . begins_with ( " constant  " )  | |  tag . begins_with ( " annotation  " )  | |  tag . begins_with ( " theme_item  " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											const  int  tag_end  =  tag . find_char ( '   ' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											const  String  link_tag  =  tag . left ( tag_end ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											const  String  link_target  =  tag . substr ( tag_end  +  1 ) . lstrip ( "   " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-27 21:15:07 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-31 19:51:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Color  target_color  =  link_color ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-01 16:40:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											RichTextLabel : : MetaUnderline  underline_mode  =  RichTextLabel : : META_UNDERLINE_ON_HOVER ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-02 20:11:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( link_tag  = =  " method "  | |  link_tag  = =  " constructor "  | |  link_tag  = =  " operator " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-31 19:51:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												target_color  =  link_method_color ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  if  ( link_tag  = =  " member "  | |  link_tag  = =  " signal "  | |  link_tag  = =  " theme_item " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-31 19:51:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												target_color  =  link_property_color ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  else  if  ( link_tag  = =  " annotation " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												target_color  =  link_annotation_color ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-01 16:40:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// Better visibility for constants, enums, etc.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												underline_mode  =  RichTextLabel : : META_UNDERLINE_ALWAYS ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-31 19:51:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-01 23:53:33 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// Use monospace font to make clickable references
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// easier to distinguish from inline code and other text.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > push_font ( doc_code_font ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > push_font_size ( doc_code_font_size ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-31 19:51:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_color ( target_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-01 16:40:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_meta ( " @ "  +  link_tag  +  "   "  +  link_target ,  underline_mode ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-01 23:53:33 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( link_tag  = =  " member "  & & 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													( ( ! link_target . contains ( " . " )  & &  ( p_class  = =  " ProjectSettings "  | |  p_class  = =  " EditorSettings " ) )  | | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															link_target . begins_with ( " ProjectSettings. " )  | |  link_target . begins_with ( " EditorSettings. " ) ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// Special formatting for both ProjectSettings and EditorSettings.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												String  prefix ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( link_target . begins_with ( " EditorSettings. " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													prefix  =  " ( "  +  TTR ( " Editor " )  +  " )  " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												const  String  setting_name  =  link_target . trim_prefix ( " ProjectSettings. " ) . trim_prefix ( " EditorSettings. " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PackedStringArray  setting_sections ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												for  ( const  String  & section  :  setting_name . split ( " / " ,  false ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													setting_sections . append ( EditorPropertyNameProcessor : : get_singleton ( ) - > process_name ( section ,  EditorPropertyNameProcessor : : get_settings_style ( ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												p_rt - > push_bold ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												p_rt - > add_text ( prefix  +  String ( "  >  " ) . join ( setting_sections ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												p_rt - > pop ( ) ;  // bold
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												p_rt - > add_text ( link_target  +  ( link_tag  = =  " method "  ?  " () "  :  " " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // meta
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // font_size
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // font
 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											pos  =  brk_end  +  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-06 20:48:54 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( tag . begins_with ( " param  " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											const  int  tag_end  =  tag . find_char ( '   ' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											const  String  param_name  =  tag . substr ( tag_end  +  1 ) . lstrip ( "   " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-06 20:48:54 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// Use monospace font with translucent background color to make code easier to distinguish from other text.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > push_font ( doc_code_font ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_font_size ( doc_code_font_size ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-31 19:51:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_bgcolor ( param_bg_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-06 20:48:54 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_color ( code_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-08-06 20:48:54 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > add_text ( param_name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // bgcolor
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // font_size
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // font
 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-06 20:48:54 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											pos  =  brk_end  +  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-24 18:09:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  p_class )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// Use a bold font when class reference tags are in their own page.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > push_font ( doc_bold_font ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > add_text ( tag ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // font
 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-24 18:09:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											pos  =  brk_end  +  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-15 21:16:33 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( doc - > class_list . has ( tag ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-24 18:09:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// Use a monospace font for class reference tags such as [Node2D] or [SceneTree].
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-01-24 13:29:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_font ( doc_code_font ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_font_size ( doc_code_font_size ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-31 19:51:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_color ( type_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-01 16:40:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_meta ( " # "  +  tag ,  RichTextLabel : : META_UNDERLINE_ON_HOVER ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-23 23:15:16 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > add_text ( tag ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-24 18:09:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // meta
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // font_size
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // font
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											pos  =  brk_end  +  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " b " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-26 17:57:36 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// Use bold font.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-15 18:18:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_font ( doc_bold_font ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											pos  =  brk_end  +  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											tag_stack . push_front ( tag ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " i " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-26 17:57:36 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// Use italics font.
 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-11 16:22:04 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_font ( doc_italic_font ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											pos  =  brk_end  +  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											tag_stack . push_front ( tag ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-02 20:11:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " code "  | |  tag . begins_with ( " code  " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											int  end_pos  =  bbcode . find ( " [/code] " ,  brk_end  +  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( end_pos  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												end_pos  =  bbcode . length ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-31 19:51:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// Use monospace font with darkened background color to make code easier to distinguish from other text.
 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-23 23:15:16 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_font ( doc_code_font ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_font_size ( doc_code_font_size ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-31 19:51:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_bgcolor ( code_bg_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-08-13 02:33:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_color ( code_color . lerp ( p_owner_node - > get_theme_color ( SNAME ( " error_color " ) ,  EditorStringName ( Editor ) ) ,  0.6 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > add_text ( bbcode . substr ( brk_end  +  1 ,  end_pos  -  ( brk_end  +  1 ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // bgcolor
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // font_size
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // font
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											pos  =  end_pos  +  7 ;  // `len("[/code]")`.
 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-02 20:11:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " codeblock "  | |  tag . begins_with ( " codeblock  " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											int  end_pos  =  bbcode . find ( " [/codeblock] " ,  brk_end  +  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( end_pos  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												end_pos  =  bbcode . length ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											const  String  codeblock_text  =  bbcode . substr ( brk_end  +  1 ,  end_pos  -  ( brk_end  +  1 ) ) . strip_edges ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											String  codeblock_copy_text  =  codeblock_text ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( using_tab_indent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// Replace the code block's space indentation with tabs.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												StringBuilder  builder ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PackedStringArray  text_lines  =  codeblock_copy_text . split ( " \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												for  ( const  String  & line  :  text_lines )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													const  String  stripped_line  =  line . dedent ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													const  int  space_count  =  line . length ( )  -  stripped_line . length ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( builder . num_strings_appended ( )  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														builder . append ( " \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( space_count  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														builder . append ( String ( " \t " ) . repeat ( MAX ( space_count  /  4 ,  1 ) )  +  stripped_line ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														builder . append ( line ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												codeblock_copy_text  =  builder . as_string ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											String  lang ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											const  PackedStringArray  args  =  tag . trim_prefix ( " codeblock " ) . split ( "   " ,  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  ( int  i  =  args . size ( )  -  1 ;  i  > =  0 ;  i - - )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( args [ i ] . begins_with ( " lang= " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													lang  =  args [ i ] . trim_prefix ( " lang= " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-31 19:51:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// Use monospace font with darkened background color to make code easier to distinguish from other text.
 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 17:14:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// Use a single-column table with cell row background color instead of `[bgcolor]`.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// This makes the background color highlight cover the entire block, rather than individual lines.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > push_font ( doc_code_font ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_font_size ( doc_code_font_size ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-19 09:56:42 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_table ( 2 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 17:14:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_cell ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-31 19:51:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > set_cell_row_background_color ( code_bg_color ,  Color ( code_bg_color ,  0.99 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-17 22:55:20 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > set_cell_padding ( Rect2 ( 10  *  EDSCALE ,  10  *  EDSCALE ,  10  *  EDSCALE ,  10  *  EDSCALE ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-31 19:51:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_color ( code_dark_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-09 20:51:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											bool  codeblock_printed  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifdef MODULE_GDSCRIPT_ENABLED 
  
						 
					
						
							
								
									
										
										
										
											2024-03-09 20:51:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ! codeblock_printed  & &  ( lang . is_empty ( )  | |  lang  = =  " gdscript " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												EditorHelpHighlighter : : get_singleton ( ) - > highlight ( p_rt ,  EditorHelpHighlighter : : LANGUAGE_GDSCRIPT ,  codeblock_text ,  is_native ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-09 20:51:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												codeblock_printed  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2024-03-09 20:51:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifdef MODULE_MONO_ENABLED 
  
						 
					
						
							
								
									
										
										
										
											2024-03-09 20:51:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( ! codeblock_printed  & &  lang  = =  " csharp " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												EditorHelpHighlighter : : get_singleton ( ) - > highlight ( p_rt ,  EditorHelpHighlighter : : LANGUAGE_CSHARP ,  codeblock_text ,  is_native ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-09 20:51:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												codeblock_printed  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2024-03-09 20:51:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ! codeblock_printed )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												p_rt - > add_text ( codeblock_text ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-09 20:51:30 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												codeblock_printed  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // cell
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// Copy codeblock button.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > push_cell ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > set_cell_row_background_color ( code_bg_color ,  Color ( code_bg_color ,  0.99 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > set_cell_padding ( Rect2 ( 0 ,  10  *  EDSCALE ,  0 ,  10  *  EDSCALE ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > set_cell_size_override ( Vector2 ( 1 ,  1 ) ,  Vector2 ( 10 ,  10 )  *  EDSCALE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > push_meta ( " ^ "  +  codeblock_copy_text ,  RichTextLabel : : META_UNDERLINE_ON_HOVER ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > add_image ( p_owner_node - > get_editor_theme_icon ( SNAME ( " ActionCopy " ) ) ,  24  *  EDSCALE ,  24  *  EDSCALE ,  Color ( link_property_color ,  0.3 ) ,  INLINE_ALIGNMENT_BOTTOM_TO ,  Rect2 ( ) ,  Variant ( ) ,  false ,  TTR ( " Click to copy. " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // meta
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // cell
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // table
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // font_size
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // font
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											pos  =  end_pos  +  12 ;  // `len("[/codeblock]")`.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// Compensate for `\n` removed before the loop.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( pos  <  bbcode . length ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												p_rt - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2020-03-10 13:41:36 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " kbd " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											int  end_pos  =  bbcode . find ( " [/kbd] " ,  brk_end  +  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( end_pos  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												end_pos  =  bbcode . length ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-04 17:14:50 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// Use keyboard font with custom color and background color.
 
							 
						 
					
						
							
								
									
										
										
										
											2020-03-10 13:41:36 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_font ( doc_kbd_font ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_font_size ( doc_kbd_font_size ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-31 19:51:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_bgcolor ( kbd_bg_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-03-10 13:41:36 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_color ( kbd_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > add_text ( bbcode . substr ( brk_end  +  1 ,  end_pos  -  ( brk_end  +  1 ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // bgcolor
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // font_size
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ;  // font
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											pos  =  end_pos  +  6 ;  // `len("[/kbd]")`.
 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " center " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-26 17:57:36 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// Align to center.
 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-24 20:58:47 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_paragraph ( HORIZONTAL_ALIGNMENT_CENTER ,  Control : : TEXT_DIRECTION_AUTO ,  " " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											pos  =  brk_end  +  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											tag_stack . push_front ( tag ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " br " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-26 17:57:36 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// Force a line break.
 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-23 23:15:16 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > add_newline ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											pos  =  brk_end  +  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " u " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-26 17:57:36 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// Use underline.
 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-23 23:15:16 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_underline ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											pos  =  brk_end  +  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											tag_stack . push_front ( tag ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " s " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-26 17:57:36 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// Use strikethrough.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-15 18:18:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_strikethrough ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											pos  =  brk_end  +  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											tag_stack . push_front ( tag ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-10 11:30:36 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " lb " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > add_text ( " [ " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											pos  =  brk_end  +  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " rb " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > add_text ( " ] " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											pos  =  brk_end  +  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " url " )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											int  end  =  bbcode . find_char ( ' [ ' ,  brk_end ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( end  = =  - 1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												end  =  bbcode . length ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											String  url  =  bbcode . substr ( brk_end  +  1 ,  end  -  brk_end  -  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-23 23:15:16 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_meta ( url ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											pos  =  brk_end  +  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											tag_stack . push_front ( tag ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  if  ( tag . begins_with ( " url= " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											String  url  =  tag . substr ( 4 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-23 23:15:16 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_meta ( url ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											pos  =  brk_end  +  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											tag_stack . push_front ( " url " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-07 22:40:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  if  ( tag . begins_with ( " img " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											int  width  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											int  height  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											bool  size_in_percent  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( tag . length ( )  >  4 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												Vector < String >  subtags  =  tag . substr ( 4 ) . split ( "   " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-07 22:40:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												HashMap < String ,  String >  bbcode_options ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												for  ( int  i  =  0 ;  i  <  subtags . size ( ) ;  i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													const  String  & expr  =  subtags [ i ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													int  value_pos  =  expr . find_char ( ' = ' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-07 22:40:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													if  ( value_pos  >  - 1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														bbcode_options [ expr . left ( value_pos ) ]  =  expr . substr ( value_pos  +  1 ) . unquote ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-07 22:40:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												HashMap < String ,  String > : : Iterator  width_option  =  bbcode_options . find ( " width " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( width_option )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													width  =  width_option - > value . to_int ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( width_option - > value . ends_with ( " % " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														size_in_percent  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												HashMap < String ,  String > : : Iterator  height_option  =  bbcode_options . find ( " height " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( height_option )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													height  =  height_option - > value . to_int ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  ( height_option - > value . ends_with ( " % " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														size_in_percent  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2024-02-12 16:55:02 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											int  end  =  bbcode . find_char ( ' [ ' ,  brk_end ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( end  = =  - 1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												end  =  bbcode . length ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											String  image_path  =  bbcode . substr ( brk_end  +  1 ,  end  -  brk_end  -  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > add_image ( ResourceLoader : : load ( image_path ,  " Texture2D " ) ,  width ,  height ,  Color ( 1 ,  1 ,  1 ) ,  INLINE_ALIGNMENT_CENTER ,  Rect2 ( ) ,  Variant ( ) ,  false ,  String ( ) ,  size_in_percent ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											pos  =  end ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-07 22:40:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											tag_stack . push_front ( " img " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										}  else  if  ( tag . begins_with ( " color= " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											String  col  =  tag . substr ( 6 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-16 16:31:58 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Color  color  =  Color : : from_string ( col ,  Color ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-23 23:15:16 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > push_color ( color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 17:33:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											pos  =  brk_end  +  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											tag_stack . push_front ( " color " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  if  ( tag . begins_with ( " font= " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											String  font_path  =  tag . substr ( 5 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											Ref < Font >  font  =  ResourceLoader : : load ( font_path ,  " Font " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( font . is_valid ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-23 23:15:16 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												p_rt - > push_font ( font ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-23 23:15:16 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												p_rt - > push_font ( doc_font ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											pos  =  brk_end  +  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											tag_stack . push_front ( " font " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											p_rt - > add_text ( " [ " ) ;  // Ignore.
 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											pos  =  brk_pos  +  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Close unclosed tags.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( const  String  & tag  :  tag_stack )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( tag  ! =  " img " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rt - > pop ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-23 23:15:16 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : _add_text ( const  String  & p_bbcode )  {  
						 
					
						
							
								
									
										
										
										
											2023-06-24 18:09:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_add_text_to_rt ( p_bbcode ,  class_desc ,  this ,  edited_class ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-12-08 12:52:49 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  EditorHelp : : doc_generation_count  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2023-10-20 22:14:04 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  EditorHelp : : doc_version_hash ;  
						 
					
						
							
								
									
										
										
										
											2023-10-31 18:27:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Thread  EditorHelp : : worker_thread ;  
						 
					
						
							
								
									
										
										
										
											2021-07-25 14:44:03 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  EditorHelp : : _wait_for_thread ( )  {  
						 
					
						
							
								
									
										
										
										
											2023-10-31 18:27:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( worker_thread . is_started ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										worker_thread . wait_to_finish ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-25 14:44:03 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-20 22:14:04 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : _compute_doc_version_hash ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uint32_t  version_hash  =  Engine : : get_singleton ( ) - > get_version_info ( ) . hash ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									doc_version_hash  =  vformat ( " %d/%d/%d/%s " ,  version_hash ,  ClassDB : : get_api_hash ( ClassDB : : API_CORE ) ,  ClassDB : : get_api_hash ( ClassDB : : API_EDITOR ) ,  _doc_data_hash ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-07 21:14:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-20 22:14:04 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  EditorHelp : : get_cache_full_path ( )  {  
						 
					
						
							
								
									
										
										
										
											2024-07-31 17:17:45 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  EditorPaths : : get_singleton ( ) - > get_cache_dir ( ) . path_join ( vformat ( " editor_doc_cache-%d.%d.res " ,  VERSION_MAJOR ,  VERSION_MINOR ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-04-25 11:40:56 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2023-02-07 21:14:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-19 00:50:30 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : load_xml_buffer ( const  uint8_t  * p_buffer ,  int  p_size )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! ext_doc )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ext_doc  =  memnew ( DocTools ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ext_doc - > load_xml ( p_buffer ,  p_size ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( doc )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										doc - > load_xml ( p_buffer ,  p_size ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  EditorHelp : : remove_class ( const  String  & p_class )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ext_doc  & &  ext_doc - > has_doc ( p_class ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ext_doc - > remove_doc ( p_class ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( doc  & &  doc - > has_doc ( p_class ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										doc - > remove_doc ( p_class ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-02-07 21:14:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : _load_doc_thread ( void  * p_udata )  {  
						 
					
						
							
								
									
										
										
										
											2023-06-23 16:39:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Ref < Resource >  cache_res  =  ResourceLoader : : load ( get_cache_full_path ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-20 22:14:04 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( cache_res . is_valid ( )  & &  cache_res - > get_meta ( " version_hash " ,  " " )  = =  doc_version_hash )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-23 16:39:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Array  classes  =  cache_res - > get_meta ( " classes " ,  Array ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for  ( int  i  =  0 ;  i  <  classes . size ( ) ;  i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											doc - > add_doc ( DocData : : ClassDoc : : from_dict ( classes [ i ] ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-07 21:14:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-31 18:27:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Extensions' docs are not cached. Generate them now (on the main thread).
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										callable_mp_static ( & EditorHelp : : _gen_extensions_docs ) . call_deferred ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-07 21:14:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-31 18:27:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// We have to go back to the main thread to start from scratch, bypassing any possibly existing cache.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-27 13:29:57 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										callable_mp_static ( & EditorHelp : : generate_doc ) . call_deferred ( false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-07 21:14:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-08 12:52:49 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									OS : : get_singleton ( ) - > benchmark_end_measure ( " EditorHelp " ,  vformat ( " Generate Documentation (Run %d) " ,  doc_generation_count ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-07 21:14:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-25 14:44:03 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : _gen_doc_thread ( void  * p_udata )  {  
						 
					
						
							
								
									
										
										
										
											2020-11-29 09:12:06 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									DocTools  compdoc ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									compdoc . load_compressed ( _doc_data_compressed ,  _doc_data_compressed_size ,  _doc_data_uncompressed_size ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-26 17:57:36 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									doc - > merge_from ( compdoc ) ;  // Ensure all is up to date.
 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-07 21:14:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-06-23 16:39:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Ref < Resource >  cache_res ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-07 21:14:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									cache_res . instantiate ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-20 22:14:04 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									cache_res - > set_meta ( " version_hash " ,  doc_version_hash ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-07 21:14:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Array  classes ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( const  KeyValue < String ,  DocData : : ClassDoc >  & E  :  doc - > class_list )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-31 18:27:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( ClassDB : : class_exists ( E . value . name ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ClassDB : : APIType  api  =  ClassDB : : get_api_type ( E . value . name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( api  = =  ClassDB : : API_EXTENSION  | |  api  = =  ClassDB : : API_EDITOR_EXTENSION )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-07 21:14:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										classes . push_back ( DocData : : ClassDoc : : to_dict ( E . value ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-23 16:39:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									cache_res - > set_meta ( " classes " ,  classes ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-07 21:14:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Error  err  =  ResourceSaver : : save ( cache_res ,  get_cache_full_path ( ) ,  ResourceSaver : : FLAG_COMPRESS ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( err )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ERR_PRINT ( " Cannot save editor help cache ( "  +  get_cache_full_path ( )  +  " ). " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2023-12-08 12:52:49 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									OS : : get_singleton ( ) - > benchmark_end_measure ( " EditorHelp " ,  vformat ( " Generate Documentation (Run %d) " ,  doc_generation_count ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-31 18:27:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : _gen_extensions_docs ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									doc - > generate ( ( DocTools : : GENERATE_FLAG_SKIP_BASIC_TYPES  |  DocTools : : GENERATE_FLAG_EXTENSION_CLASSES_ONLY ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-19 00:50:30 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// Append extra doc data, as it gets overridden by the generation step.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ext_doc )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										doc - > merge_from ( * ext_doc ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-31 18:27:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-04-20 14:02:47 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : generate_doc ( bool  p_use_cache )  {  
						 
					
						
							
								
									
										
										
										
											2023-12-08 12:52:49 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									doc_generation_count + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									OS : : get_singleton ( ) - > benchmark_begin_measure ( " EditorHelp " ,  vformat ( " Generate Documentation (Run %d) " ,  doc_generation_count ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-07 21:14:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-31 18:27:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// In case not the first attempt.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_wait_for_thread ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-07 21:14:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! doc )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										doc  =  memnew ( DocTools ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-20 22:14:04 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( doc_version_hash . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_compute_doc_version_hash ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-31 18:27:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( p_use_cache  & &  FileAccess : : exists ( get_cache_full_path ( ) ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										worker_thread . start ( _load_doc_thread ,  nullptr ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-25 14:44:03 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-07 21:14:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										print_verbose ( " Regenerating editor help cache " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-31 18:27:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										doc - > generate ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										worker_thread . start ( _gen_doc_thread ,  nullptr ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-25 14:44:03 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-14 12:17:47 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : _toggle_scripts_pressed ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ScriptEditor : : get_singleton ( ) - > toggle_scripts_panel ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									update_toggle_scripts_button ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : _notification ( int  p_what )  {  
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( p_what )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-11 16:29:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  NOTIFICATION_POSTINITIALIZE :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// Requires theme to be up to date.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_class_desc_resized ( false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-09-02 19:16:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  EditorSettings : : NOTIFICATION_EDITOR_SETTINGS_CHANGED :  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											bool  need_update  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( EditorSettings : : get_singleton ( ) - > check_changed_settings_in_group ( " text_editor/help " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												need_update  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# if defined(MODULE_GDSCRIPT_ENABLED) || defined(MODULE_MONO_ENABLED) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ! need_update  & &  EditorSettings : : get_singleton ( ) - > check_changed_settings_in_group ( " text_editor/theme/highlighting " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												need_update  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ! need_update )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-23 00:14:08 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[[fallthrough]] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  NOTIFICATION_READY :  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-25 14:44:03 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_wait_for_thread ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-09 01:00:44 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_update_doc ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-02 19:16:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-16 00:52:32 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-15 09:54:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  NOTIFICATION_THEME_CHANGED :  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-29 11:04:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( is_inside_tree ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												_class_desc_resized ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-14 12:17:47 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											update_toggle_scripts_button ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-15 09:54:28 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-16 00:52:32 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  NOTIFICATION_VISIBILITY_CHANGED :  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-14 12:17:47 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											update_toggle_scripts_button ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-16 00:52:32 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : go_to_help ( const  String  & p_help )  {  
						 
					
						
							
								
									
										
										
										
											2021-07-25 14:44:03 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_wait_for_thread ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_help_callback ( p_help ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-04-21 09:32:26 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : go_to_class ( const  String  & p_class )  {  
						 
					
						
							
								
									
										
										
										
											2021-07-25 14:44:03 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_wait_for_thread ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-04-21 09:32:26 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_goto_desc ( p_class ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2014-02-15 21:16:33 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : update_doc ( )  {  
						 
					
						
							
								
									
										
										
										
											2021-07-25 14:44:03 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_wait_for_thread ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-29 08:07:57 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_COND ( ! doc - > class_list . has ( edited_class ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_COND ( ! doc - > class_list [ edited_class ] . is_script_doc ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_update_doc ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-25 14:44:03 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : cleanup_doc ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_wait_for_thread ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									memdelete ( doc ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-09 02:42:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									doc  =  nullptr ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-07-25 14:44:03 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-03-17 07:33:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Vector < Pair < String ,  int > >  EditorHelp : : get_sections ( )  {  
						 
					
						
							
								
									
										
										
										
											2021-07-25 14:44:03 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_wait_for_thread ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-03-17 07:33:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Vector < Pair < String ,  int > >  sections ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 19:56:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  section_line . size ( ) ;  i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										sections . push_back ( Pair < String ,  int > ( section_line [ i ] . first ,  i ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  sections ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  EditorHelp : : scroll_to_section ( int  p_section_index )  {  
						 
					
						
							
								
									
										
										
										
											2021-07-25 14:44:03 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_wait_for_thread ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 19:56:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									int  line  =  section_line [ p_section_index ] . second ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-04 16:55:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( class_desc - > is_finished ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-30 10:04:07 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										class_desc - > scroll_to_paragraph ( line ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										scroll_to  =  line ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 19:56:37 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : popup_search ( )  {  
						 
					
						
							
								
									
										
										
										
											2021-07-25 14:44:03 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_wait_for_thread ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-22 16:09:31 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									find_bar - > popup_search ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-02 23:03:46 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								String  EditorHelp : : get_class ( )  {  
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  edited_class ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-09 17:41:49 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : search_again ( bool  p_search_previous )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_search ( p_search_previous ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  EditorHelp : : get_scroll ( )  const  {  
						 
					
						
							
								
									
										
										
										
											2021-11-30 13:46:36 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  class_desc - > get_v_scroll_bar ( ) - > get_value ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2020-05-14 14:29:06 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : set_scroll ( int  p_scroll )  {  
						 
					
						
							
								
									
										
										
										
											2021-11-30 13:46:36 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > get_v_scroll_bar ( ) - > set_value ( p_scroll ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-14 12:17:47 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : update_toggle_scripts_button ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( is_layout_rtl ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-08-13 02:33:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										toggle_scripts_button - > set_icon ( get_editor_theme_icon ( ScriptEditor : : get_singleton ( ) - > is_scripts_panel_toggled ( )  ?  SNAME ( " Forward " )  :  SNAME ( " Back " ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-14 12:17:47 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-08-13 02:33:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										toggle_scripts_button - > set_icon ( get_editor_theme_icon ( ScriptEditor : : get_singleton ( ) - > is_scripts_panel_toggled ( )  ?  SNAME ( " Back " )  :  SNAME ( " Forward " ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-14 12:17:47 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2022-08-25 12:42:17 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									toggle_scripts_button - > set_tooltip_text ( vformat ( " %s (%s) " ,  TTR ( " Toggle Scripts Panel " ) ,  ED_GET_SHORTCUT ( " script_editor/toggle_scripts_panel " ) - > get_as_text ( ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-14 12:17:47 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								void  EditorHelp : : _bind_methods ( )  {  
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _class_list_select " ,  & EditorHelp : : _class_list_select ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _request_help " ,  & EditorHelp : : _request_help ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _search " ,  & EditorHelp : : _search ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ClassDB : : bind_method ( " _help_callback " ,  & EditorHelp : : _help_callback ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_SIGNAL ( MethodInfo ( " go_to_help " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-22 23:54:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ADD_SIGNAL ( MethodInfo ( " request_save_history " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-10-19 00:50:30 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelp : : init_gdext_pointers ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									GDExtensionEditorHelp : : editor_help_load_xml_buffer  =  & EditorHelp : : load_xml_buffer ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									GDExtensionEditorHelp : : editor_help_remove_class  =  & EditorHelp : : remove_class ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								EditorHelp : : EditorHelp ( )  {  
						 
					
						
							
								
									
										
										
										
											2017-12-18 15:46:17 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									set_custom_minimum_size ( Size2 ( 150  *  EDSCALE ,  0 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-12-18 15:46:17 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc  =  memnew ( RichTextLabel ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-17 15:22:43 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > set_tab_size ( 8 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-18 15:46:17 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									add_child ( class_desc ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-18 10:17:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > set_threaded ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-18 15:46:17 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > set_v_size_flags ( SIZE_EXPAND_FILL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-06-05 20:47:34 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-13 16:56:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > connect ( SceneStringName ( finished ) ,  callable_mp ( this ,  & EditorHelp : : _class_desc_finished ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-02-21 18:28:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > connect ( " meta_clicked " ,  callable_mp ( this ,  & EditorHelp : : _class_desc_select ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-13 16:56:03 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > connect ( SceneStringName ( gui_input ) ,  callable_mp ( this ,  & EditorHelp : : _class_desc_input ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									class_desc - > connect ( SceneStringName ( resized ) ,  callable_mp ( this ,  & EditorHelp : : _class_desc_resized ) . bind ( false ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-02-10 14:17:29 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// Added second so it opens at the bottom so it won't offset the entire widget.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-31 15:24:33 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									find_bar  =  memnew ( FindBar ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									add_child ( find_bar ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									find_bar - > hide ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-22 16:09:31 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									find_bar - > set_rich_text_label ( class_desc ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-09-14 12:17:47 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									status_bar  =  memnew ( HBoxContainer ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									add_child ( status_bar ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									status_bar - > set_h_size_flags ( SIZE_EXPAND_FILL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									status_bar - > set_custom_minimum_size ( Size2 ( 0 ,  24  *  EDSCALE ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									toggle_scripts_button  =  memnew ( Button ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									toggle_scripts_button - > set_flat ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 09:40:21 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									toggle_scripts_button - > connect ( SceneStringName ( pressed ) ,  callable_mp ( this ,  & EditorHelp : : _toggle_scripts_pressed ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-14 12:17:47 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									status_bar - > add_child ( toggle_scripts_button ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									class_desc - > set_selection_enabled ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-02-28 16:19:48 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									class_desc - > set_context_menu_enabled ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									class_desc - > hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-11-17 09:46:08 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								EditorHelp : : ~ EditorHelp ( )  {  
						 
					
						
							
								
									
										
										
										
											2014-02-09 22:10:30 -03:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-07-25 14:44:03 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								DocTools  * EditorHelp : : get_doc_data ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_wait_for_thread ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  doc ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/// EditorHelpBit ///
  
						 
					
						
							
								
									
										
										
										
											2022-02-02 14:10:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define HANDLE_DOC(m_string) ((is_native ? DTR(m_string) : (m_string)).strip_edges()) 
  
						 
					
						
							
								
									
										
										
										
											2016-08-23 23:15:16 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								EditorHelpBit : : HelpData  EditorHelpBit : : _get_class_help_data ( const  StringName  & p_class_name )  {  
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( doc_class_cache . has ( p_class_name ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  doc_class_cache [ p_class_name ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									HelpData  result ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  HashMap < String ,  DocData : : ClassDoc > : : ConstIterator  E  =  EditorHelp : : get_doc_data ( ) - > class_list . find ( p_class_name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( E )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Non-native class shouldn't be cached, nor translated.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										const  bool  is_native  =  ! E - > value . is_script_doc ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										result . description  =  HANDLE_DOC ( E - > value . brief_description ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( E - > value . is_deprecated )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( E - > value . deprecated_message . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												result . deprecated_message  =  TTR ( " This class may be changed or removed in future versions. " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												result . deprecated_message  =  HANDLE_DOC ( E - > value . deprecated_message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( E - > value . is_experimental )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( E - > value . experimental_message . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												result . experimental_message  =  TTR ( " This class may be changed or removed in future versions. " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												result . experimental_message  =  HANDLE_DOC ( E - > value . experimental_message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( is_native )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											doc_class_cache [ p_class_name ]  =  result ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  result ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								EditorHelpBit : : HelpData  EditorHelpBit : : _get_property_help_data ( const  StringName  & p_class_name ,  const  StringName  & p_property_name )  {  
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( doc_property_cache . has ( p_class_name )  & &  doc_property_cache [ p_class_name ] . has ( p_property_name ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  doc_property_cache [ p_class_name ] [ p_property_name ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									HelpData  result ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  DocTools  * dd  =  EditorHelp : : get_doc_data ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  HashMap < String ,  DocData : : ClassDoc > : : ConstIterator  E  =  dd - > class_list . find ( p_class_name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( E )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// Non-native properties shouldn't be cached, nor translated.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										const  bool  is_native  =  ! E - > value . is_script_doc ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										for  ( const  DocData : : PropertyDoc  & property  :  E - > value . properties )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											HelpData  current ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											current . description  =  HANDLE_DOC ( property . description ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( property . is_deprecated )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( property . deprecated_message . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													current . deprecated_message  =  TTR ( " This property may be changed or removed in future versions. " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													current . deprecated_message  =  HANDLE_DOC ( property . deprecated_message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( property . is_experimental )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( property . experimental_message . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													current . experimental_message  =  TTR ( " This property may be changed or removed in future versions. " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													current . experimental_message  =  HANDLE_DOC ( property . experimental_message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-10 15:35:48 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											String  enum_class_name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											String  enum_name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( CoreConstants : : is_global_enum ( property . enumeration ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												enum_class_name  =  " @GlobalScope " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												enum_name  =  property . enumeration ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												const  int  dot_pos  =  property . enumeration . rfind ( " . " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( dot_pos  > =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													enum_class_name  =  property . enumeration . left ( dot_pos ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													enum_name  =  property . enumeration . substr ( dot_pos  +  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ! enum_class_name . is_empty ( )  & &  ! enum_name . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												// Classes can use enums from other classes, so check from which it came.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-10 15:35:48 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												const  HashMap < String ,  DocData : : ClassDoc > : : ConstIterator  enum_class  =  dd - > class_list . find ( enum_class_name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( enum_class )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-10 15:35:48 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													const  String  enum_prefix  =  EditorPropertyNameProcessor : : get_singleton ( ) - > process_name ( enum_name ,  EditorPropertyNameProcessor : : STYLE_CAPITALIZED )  +  "   " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													for  ( DocData : : ConstantDoc  constant  :  enum_class - > value . constants )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														// Don't display `_MAX` enum value descriptions, as these are never exposed in the inspector.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-10 15:35:48 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														if  ( constant . enumeration  = =  enum_name  & &  ! constant . name . ends_with ( " _MAX " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															// Prettify the enum value display, so that "<ENUM_NAME>_<ITEM>" becomes "Item".
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															const  String  item_name  =  EditorPropertyNameProcessor : : get_singleton ( ) - > process_name ( constant . name ,  EditorPropertyNameProcessor : : STYLE_CAPITALIZED ) . trim_prefix ( enum_prefix ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
															String  item_descr  =  HANDLE_DOC ( constant . description ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-10 15:35:48 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
															if  ( item_descr . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
																item_descr  =  " [color=<EditorHelpBitCommentColor>][i] "  +  TTR ( " No description available. " )  +  " [/i][/color] " ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-10 15:35:48 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
															} 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
															current . description  + =  vformat ( " \n [b]%s:[/b] %s " ,  item_name ,  item_descr ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													current . description  =  current . description . lstrip ( " \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( property . name  = =  p_property_name )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												result  =  current ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( ! is_native )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( is_native )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												doc_property_cache [ p_class_name ] [ property . name ]  =  current ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  result ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								EditorHelpBit : : HelpData  EditorHelpBit : : _get_method_help_data ( const  StringName  & p_class_name ,  const  StringName  & p_method_name )  {  
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( doc_method_cache . has ( p_class_name )  & &  doc_method_cache [ p_class_name ] . has ( p_method_name ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  doc_method_cache [ p_class_name ] [ p_method_name ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									HelpData  result ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  HashMap < String ,  DocData : : ClassDoc > : : ConstIterator  E  =  EditorHelp : : get_doc_data ( ) - > class_list . find ( p_class_name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( E )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Non-native methods shouldn't be cached, nor translated.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										const  bool  is_native  =  ! E - > value . is_script_doc ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										for  ( const  DocData : : MethodDoc  & method  :  E - > value . methods )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											HelpData  current ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											current . description  =  HANDLE_DOC ( method . description ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( method . is_deprecated )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( method . deprecated_message . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													current . deprecated_message  =  TTR ( " This method may be changed or removed in future versions. " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													current . deprecated_message  =  HANDLE_DOC ( method . deprecated_message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( method . is_experimental )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( method . experimental_message . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													current . experimental_message  =  TTR ( " This method may be changed or removed in future versions. " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													current . experimental_message  =  HANDLE_DOC ( method . experimental_message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											current . doc_type  =  {  method . return_type ,  method . return_enum ,  method . return_is_bitfield  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  ( const  DocData : : ArgumentDoc  & argument  :  method . arguments )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												const  DocType  argument_type  =  {  argument . type ,  argument . enumeration ,  argument . is_bitfield  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												current . arguments . push_back ( {  argument . name ,  argument_type ,  argument . default_value  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( method . name  = =  p_method_name )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												result  =  current ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( ! is_native )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( is_native )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												doc_method_cache [ p_class_name ] [ method . name ]  =  current ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  result ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								EditorHelpBit : : HelpData  EditorHelpBit : : _get_signal_help_data ( const  StringName  & p_class_name ,  const  StringName  & p_signal_name )  {  
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( doc_signal_cache . has ( p_class_name )  & &  doc_signal_cache [ p_class_name ] . has ( p_signal_name ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  doc_signal_cache [ p_class_name ] [ p_signal_name ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									HelpData  result ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  HashMap < String ,  DocData : : ClassDoc > : : ConstIterator  E  =  EditorHelp : : get_doc_data ( ) - > class_list . find ( p_class_name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( E )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Non-native signals shouldn't be cached, nor translated.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										const  bool  is_native  =  ! E - > value . is_script_doc ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										for  ( const  DocData : : MethodDoc  & signal  :  E - > value . signals )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											HelpData  current ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											current . description  =  HANDLE_DOC ( signal . description ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( signal . is_deprecated )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( signal . deprecated_message . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													current . deprecated_message  =  TTR ( " This signal may be changed or removed in future versions. " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													current . deprecated_message  =  HANDLE_DOC ( signal . deprecated_message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( signal . is_experimental )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( signal . experimental_message . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													current . experimental_message  =  TTR ( " This signal may be changed or removed in future versions. " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													current . experimental_message  =  HANDLE_DOC ( signal . experimental_message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  ( const  DocData : : ArgumentDoc  & argument  :  signal . arguments )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												const  DocType  argument_type  =  {  argument . type ,  argument . enumeration ,  argument . is_bitfield  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												current . arguments . push_back ( {  argument . name ,  argument_type ,  argument . default_value  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( signal . name  = =  p_signal_name )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												result  =  current ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( ! is_native )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( is_native )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												doc_signal_cache [ p_class_name ] [ signal . name ]  =  current ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  result ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								EditorHelpBit : : HelpData  EditorHelpBit : : _get_theme_item_help_data ( const  StringName  & p_class_name ,  const  StringName  & p_theme_item_name )  {  
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( doc_theme_item_cache . has ( p_class_name )  & &  doc_theme_item_cache [ p_class_name ] . has ( p_theme_item_name ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  doc_theme_item_cache [ p_class_name ] [ p_theme_item_name ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									HelpData  result ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									bool  found  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									const  DocTools  * dd  =  EditorHelp : : get_doc_data ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									HashMap < String ,  DocData : : ClassDoc > : : ConstIterator  E  =  dd - > class_list . find ( p_class_name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									while  ( E )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Non-native theme items shouldn't be cached, nor translated.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										const  bool  is_native  =  ! E - > value . is_script_doc ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										for  ( const  DocData : : ThemeItemDoc  & theme_item  :  E - > value . theme_properties )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											HelpData  current ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											current . description  =  HANDLE_DOC ( theme_item . description ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-04 10:54:50 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( theme_item . is_deprecated )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( theme_item . deprecated_message . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													current . deprecated_message  =  TTR ( " This theme property may be changed or removed in future versions. " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													current . deprecated_message  =  HANDLE_DOC ( theme_item . deprecated_message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( theme_item . is_experimental )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( theme_item . experimental_message . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													current . experimental_message  =  TTR ( " This theme property may be changed or removed in future versions. " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													current . experimental_message  =  HANDLE_DOC ( theme_item . experimental_message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-02-16 16:28:05 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  ( theme_item . name  = =  p_theme_item_name )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												result  =  current ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												found  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-28 02:33:27 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  ( ! is_native )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( is_native )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												doc_theme_item_cache [ p_class_name ] [ theme_item . name ]  =  current ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( found  | |  E - > value . inherits . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										// Check for inherited theme items.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										E  =  dd - > class_list . find ( E - > value . inherits ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# undef HANDLE_DOC 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  EditorHelpBit : : _add_type_to_title ( const  DocType  & p_doc_type )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									_add_type_to_rt ( p_doc_type . type ,  p_doc_type . enumeration ,  p_doc_type . is_bitfield ,  title ,  this ,  symbol_class_name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  EditorHelpBit : : _update_labels ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  Ref < Font >  doc_bold_font  =  get_theme_font ( SNAME ( " doc_bold " ) ,  EditorStringName ( EditorFonts ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! symbol_visible_type . is_empty ( )  | |  ! symbol_name . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										title - > clear ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										title - > push_font ( doc_bold_font ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! symbol_visible_type . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											title - > push_color ( get_theme_color ( SNAME ( " title_color " ) ,  SNAME ( " EditorHelp " ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											title - > add_text ( symbol_visible_type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											title - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! symbol_visible_type . is_empty ( )  & &  ! symbol_name . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											title - > add_text ( "   " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( ! symbol_name . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											title - > push_underline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											title - > add_text ( symbol_name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											title - > pop ( ) ;  // underline
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										title - > pop ( ) ;  // font
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( symbol_type  = =  " method "  | |  symbol_type  = =  " signal " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											const  Color  symbol_color  =  get_theme_color ( SNAME ( " symbol_color " ) ,  SNAME ( " EditorHelp " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											const  Color  value_color  =  get_theme_color ( SNAME ( " value_color " ) ,  SNAME ( " EditorHelp " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											title - > push_font ( get_theme_font ( SNAME ( " doc_source " ) ,  EditorStringName ( EditorFonts ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											title - > push_font_size ( get_theme_font_size ( SNAME ( " doc_source_size " ) ,  EditorStringName ( EditorFonts ) )  *  0.9 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											title - > push_color ( symbol_color ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											title - > add_text ( " ( " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											title - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  ( int  i  =  0 ;  i  <  help_data . arguments . size ( ) ;  i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												const  ArgumentData  & argument  =  help_data . arguments [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( i  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													title - > push_color ( symbol_color ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													title - > add_text ( " ,  " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													title - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												title - > add_text ( argument . name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												title - > push_color ( symbol_color ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												title - > add_text ( " :  " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												title - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												_add_type_to_title ( argument . doc_type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  ( ! argument . default_value . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													title - > push_color ( symbol_color ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													title - > add_text ( "  =  " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													title - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													title - > push_color ( value_color ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													title - > add_text ( argument . default_value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													title - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											title - > push_color ( symbol_color ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											title - > add_text ( " ) " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											title - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( symbol_type  = =  " method " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												title - > push_color ( symbol_color ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												title - > add_text ( "  ->  " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												title - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												_add_type_to_title ( help_data . doc_type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											title - > pop ( ) ;  // font_size
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											title - > pop ( ) ;  // font
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										title - > show ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										title - > hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									content - > clear ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bool  has_prev_text  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! help_data . deprecated_message . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										has_prev_text  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Ref < Texture2D >  error_icon  =  get_editor_theme_icon ( SNAME ( " StatusError " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										content - > add_image ( error_icon ,  error_icon - > get_width ( ) ,  error_icon - > get_height ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										content - > add_text ( "   " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										content - > push_color ( get_theme_color ( SNAME ( " error_color " ) ,  EditorStringName ( Editor ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										content - > push_font ( doc_bold_font ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										content - > add_text ( TTR ( " Deprecated: " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										content - > pop ( ) ;  // font
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										content - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										content - > add_text ( "   " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_add_text_to_rt ( help_data . deprecated_message ,  content ,  this ,  symbol_class_name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! help_data . experimental_message . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( has_prev_text )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											content - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											content - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										has_prev_text  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Ref < Texture2D >  warning_icon  =  get_editor_theme_icon ( SNAME ( " NodeWarning " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										content - > add_image ( warning_icon ,  warning_icon - > get_width ( ) ,  warning_icon - > get_height ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										content - > add_text ( "   " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										content - > push_color ( get_theme_color ( SNAME ( " warning_color " ) ,  EditorStringName ( Editor ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										content - > push_font ( doc_bold_font ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										content - > add_text ( TTR ( " Experimental: " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										content - > pop ( ) ;  // font
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										content - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										content - > add_text ( "   " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_add_text_to_rt ( help_data . experimental_message ,  content ,  this ,  symbol_class_name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! help_data . description . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( has_prev_text )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											content - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											content - > add_newline ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										has_prev_text  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										const  Color  comment_color  =  get_theme_color ( SNAME ( " comment_color " ) ,  SNAME ( " EditorHelp " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_add_text_to_rt ( help_data . description . replace ( " <EditorHelpBitCommentColor> " ,  comment_color . to_html ( ) ) ,  content ,  this ,  symbol_class_name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( is_inside_tree ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										update_content_height ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  EditorHelpBit : : _go_to_help ( const  String  & p_what )  {  
						 
					
						
							
								
									
										
										
										
											2024-08-19 18:08:31 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									EditorNode : : get_singleton ( ) - > get_editor_main_screen ( ) - > select ( EditorMainScreen : : EDITOR_SCRIPT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ScriptEditor : : get_singleton ( ) - > goto_help ( p_what ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									emit_signal ( SNAME ( " request_hide " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  EditorHelpBit : : _meta_clicked ( const  String  & p_select )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_select . begins_with ( " $ " ) )  {  // Enum.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										const  String  link  =  p_select . substr ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										String  enum_class_name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										String  enum_name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( CoreConstants : : is_global_enum ( link ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											enum_class_name  =  " @GlobalScope " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											enum_name  =  link ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											const  int  dot_pos  =  link . rfind ( " . " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( dot_pos  > =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												enum_class_name  =  link . left ( dot_pos ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												enum_name  =  link . substr ( dot_pos  +  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												enum_class_name  =  symbol_class_name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												enum_name  =  link ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_go_to_help ( " class_enum: "  +  enum_class_name  +  " : "  +  enum_name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if  ( p_select . begins_with ( " # " ) )  {  // Class.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_go_to_help ( " class_name: "  +  p_select . substr ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if  ( p_select . begins_with ( " @ " ) )  {  // Member.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										const  int  tag_end  =  p_select . find_char ( '   ' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										const  String  tag  =  p_select . substr ( 1 ,  tag_end  -  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										const  String  link  =  p_select . substr ( tag_end  +  1 ) . lstrip ( "   " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										String  topic ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( tag  = =  " method " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											topic  =  " class_method " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " constructor " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											topic  =  " class_method " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " operator " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											topic  =  " class_method " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " member " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											topic  =  " class_property " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " enum " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											topic  =  " class_enum " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " signal " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											topic  =  " class_signal " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " constant " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											topic  =  " class_constant " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " annotation " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											topic  =  " class_annotation " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  if  ( tag  = =  " theme_item " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											topic  =  " class_theme_item " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( link . contains ( " . " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											const  int  class_end  =  link . find_char ( ' . ' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_go_to_help ( topic  +  " : "  +  link . left ( class_end )  +  " : "  +  link . substr ( class_end  +  1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_go_to_help ( topic  +  " : "  +  symbol_class_name  +  " : "  +  link ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if  ( p_select . begins_with ( " http: " )  | |  p_select . begins_with ( " https: " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										OS : : get_singleton ( ) - > shell_open ( p_select ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if  ( p_select . begins_with ( " ^ " ) )  {  // Copy button.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										DisplayServer : : get_singleton ( ) - > clipboard_set ( p_select . substr ( 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-23 23:15:16 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelpBit : : _bind_methods ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_SIGNAL ( MethodInfo ( " request_hide " ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-05 16:44:50 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelpBit : : _notification ( int  p_what )  {  
						 
					
						
							
								
									
										
										
										
											2017-09-02 19:16:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( p_what )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  NOTIFICATION_THEME_CHANGED : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_update_labels ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-02 19:16:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-23 23:15:16 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelpBit : : parse_symbol ( const  String  & p_symbol )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  PackedStringArray  slices  =  p_symbol . split ( " | " ,  true ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_COND_MSG ( slices . size ( )  <  3 ,  " Invalid doc id. The expected format is 'item_type|class_name|item_name'. " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  String  & item_type  =  slices [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  String  & class_name  =  slices [ 1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  String  & item_name  =  slices [ 2 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  visible_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  name  =  item_name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( item_type  = =  " class " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										visible_type  =  TTR ( " Class: " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										name  =  class_name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										help_data  =  _get_class_help_data ( class_name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if  ( item_type  = =  " property " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( name . begins_with ( " metadata/ " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											visible_type  =  TTR ( " Metadata: " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											name  =  name . trim_prefix ( " metadata/ " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  if  ( class_name  = =  " ProjectSettings "  | |  class_name  = =  " EditorSettings " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											visible_type  =  TTR ( " Setting: " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											visible_type  =  TTR ( " Property: " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										help_data  =  _get_property_help_data ( class_name ,  item_name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if  ( item_type  = =  " internal_property " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										visible_type  =  TTR ( " Internal Property: " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										help_data  =  HelpData ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										help_data . description  =  " [color=<EditorHelpBitCommentColor>][i] "  +  TTR ( " This property can only be set in the Inspector. " )  +  " [/i][/color] " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if  ( item_type  = =  " method " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										visible_type  =  TTR ( " Method: " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										help_data  =  _get_method_help_data ( class_name ,  item_name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if  ( item_type  = =  " signal " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										visible_type  =  TTR ( " Signal: " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										help_data  =  _get_signal_help_data ( class_name ,  item_name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if  ( item_type  = =  " theme_item " )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										visible_type  =  TTR ( " Theme Property: " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										help_data  =  _get_theme_item_help_data ( class_name ,  item_name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ERR_FAIL_MSG ( " Invalid tooltip type ' "  +  item_type  +  " '. Valid types are 'class', 'property', 'internal_property', 'method', 'signal', and 'theme_item'. " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									symbol_class_name  =  class_name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									symbol_type  =  item_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									symbol_visible_type  =  visible_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									symbol_name  =  name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( help_data . description . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										help_data . description  =  " [color=<EditorHelpBitCommentColor>][i] "  +  TTR ( " No description available. " )  +  " [/i][/color] " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( is_inside_tree ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_update_labels ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-23 23:15:16 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelpBit : : set_custom_text ( const  String  & p_type ,  const  String  & p_name ,  const  String  & p_description )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									symbol_class_name  =  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									symbol_type  =  String ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									symbol_visible_type  =  p_type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									symbol_name  =  p_name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									help_data  =  HelpData ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									help_data . description  =  p_description ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( is_inside_tree ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_update_labels ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-23 23:15:16 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2017-12-22 16:09:31 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 10:23:14 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelpBit : : set_description ( const  String  & p_text )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									help_data . description  =  p_text ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( is_inside_tree ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_update_labels ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelpBit : : set_content_height_limits ( float  p_min ,  float  p_max )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_COND ( p_min  >  p_max ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									content_min_height  =  p_min ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									content_max_height  =  p_max ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( is_inside_tree ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										update_content_height ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelpBit : : update_content_height ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									float  content_height  =  content - > get_content_height ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 14:41:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									const  Ref < StyleBox >  style  =  content - > get_theme_stylebox ( CoreStringName ( normal ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( style . is_valid ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										content_height  + =  style - > get_content_margin ( SIDE_TOP )  +  style - > get_content_margin ( SIDE_BOTTOM ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									content - > set_custom_minimum_size ( Size2 ( content - > get_custom_minimum_size ( ) . x ,  CLAMP ( content_height ,  content_min_height ,  content_max_height ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								EditorHelpBit : : EditorHelpBit ( const  String  & p_symbol )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									add_theme_constant_override ( " separation " ,  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									title  =  memnew ( RichTextLabel ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									title - > set_theme_type_variation ( " EditorHelpBitTitle " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-06-11 18:55:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									title - > set_custom_minimum_size ( Size2 ( 512  *  EDSCALE ,  0 ) ) ;  // GH-93031. Set the minimum width even if `fit_content` is true.
 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									title - > set_fit_content ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									title - > set_selection_enabled ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									//title->set_context_menu_enabled(true); // TODO: Fix opening context menu hides tooltip.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									title - > connect ( " meta_clicked " ,  callable_mp ( this ,  & EditorHelpBit : : _meta_clicked ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									title - > hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									add_child ( title ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-26 20:42:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									content_min_height  =  48  *  EDSCALE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									content_max_height  =  360  *  EDSCALE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									content  =  memnew ( RichTextLabel ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									content - > set_theme_type_variation ( " EditorHelpBitContent " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									content - > set_custom_minimum_size ( Size2 ( 512  *  EDSCALE ,  content_min_height ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									content - > set_selection_enabled ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									//content->set_context_menu_enabled(true); // TODO: Fix opening context menu hides tooltip.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									content - > connect ( " meta_clicked " ,  callable_mp ( this ,  & EditorHelpBit : : _meta_clicked ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									add_child ( content ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! p_symbol . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										parse_symbol ( p_symbol ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-26 20:42:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2024-01-26 20:42:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/// EditorHelpBitTooltip ///
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-05 12:23:13 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelpBitTooltip : : _start_timer ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( timer - > is_inside_tree ( )  & &  timer - > is_stopped ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										timer - > start ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-08 17:39:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelpBitTooltip : : _safe_queue_free ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( _pushing_input  >  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_need_free  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										queue_free ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-05 12:23:13 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelpBitTooltip : : _target_gui_input ( const  Ref < InputEvent >  & p_event )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  Ref < InputEventMouse >  mouse_event  =  p_event ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( mouse_event . is_valid ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										_start_timer ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelpBitTooltip : : _notification ( int  p_what )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_what )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  NOTIFICATION_WM_MOUSE_ENTER : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											timer - > stop ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  NOTIFICATION_WM_MOUSE_EXIT : 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-05 12:23:13 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_start_timer ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Forwards non-mouse input to the parent viewport.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  EditorHelpBitTooltip : : _input_from_window ( const  Ref < InputEvent >  & p_event )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_event - > is_action_pressed ( SNAME ( " ui_cancel " ) ,  false ,  true ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-05 12:23:13 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_safe_queue_free ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										const  Ref < InputEventMouse >  mouse_event  =  p_event ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( mouse_event . is_null ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-08 17:39:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// GH-91652. Prevents use-after-free since `ProgressDialog` calls `Main::iteration()`.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_pushing_input + + ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											get_parent_viewport ( ) - > push_input ( p_event ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-08 17:39:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											_pushing_input - - ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( _pushing_input  < =  0  & &  _need_free )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												queue_free ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  EditorHelpBitTooltip : : show_tooltip ( EditorHelpBit  * p_help_bit ,  Control  * p_target )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_NULL ( p_help_bit ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									EditorHelpBitTooltip  * tooltip  =  memnew ( EditorHelpBitTooltip ( p_target ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-05 12:23:13 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									p_help_bit - > connect ( " request_hide " ,  callable_mp ( tooltip ,  & EditorHelpBitTooltip : : _safe_queue_free ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									tooltip - > add_child ( p_help_bit ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									p_target - > get_viewport ( ) - > add_child ( tooltip ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									p_help_bit - > update_content_height ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									tooltip - > popup_under_cursor ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Copy-paste from `Viewport::_gui_show_tooltip()`.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  EditorHelpBitTooltip : : popup_under_cursor ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Point2  mouse_pos  =  get_mouse_position ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Point2  tooltip_offset  =  GLOBAL_GET ( " display/mouse_cursor/tooltip_position_offset " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Rect2  r ( mouse_pos  +  tooltip_offset ,  get_contents_minimum_size ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									r . size  =  r . size . min ( get_max_size ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Window  * window  =  get_parent_visible_window ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Rect2i  vr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( is_embedded ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										vr  =  get_embedder ( ) - > get_visible_rect ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										vr  =  window - > get_usable_parent_rect ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( r . size . x  +  r . position . x  >  vr . size . x  +  vr . position . x )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Place it in the opposite direction. If it fails, just hug the border.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										r . position . x  =  mouse_pos . x  -  r . size . x  -  tooltip_offset . x ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( r . position . x  <  vr . position . x )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											r . position . x  =  vr . position . x  +  vr . size . x  -  r . size . x ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if  ( r . position . x  <  vr . position . x )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										r . position . x  =  vr . position . x ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( r . size . y  +  r . position . y  >  vr . size . y  +  vr . position . y )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Same as above.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										r . position . y  =  mouse_pos . y  -  r . size . y  -  tooltip_offset . y ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( r . position . y  <  vr . position . y )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											r . position . y  =  vr . position . y  +  vr . size . y  -  r . size . y ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  if  ( r . position . y  <  vr . position . y )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										r . position . y  =  vr . position . y ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									set_flag ( Window : : FLAG_NO_FOCUS ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									popup ( r ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								EditorHelpBitTooltip : : EditorHelpBitTooltip ( Control  * p_target )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_theme_type_variation ( " TooltipPanel " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									timer  =  memnew ( Timer ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									timer - > set_wait_time ( 0.2 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-08 17:39:33 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									timer - > connect ( " timeout " ,  callable_mp ( this ,  & EditorHelpBitTooltip : : _safe_queue_free ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									add_child ( timer ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-11 11:21:44 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_NULL ( p_target ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-05 12:23:13 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									p_target - > connect ( SceneStringName ( mouse_exited ) ,  callable_mp ( this ,  & EditorHelpBitTooltip : : _start_timer ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									p_target - > connect ( SceneStringName ( gui_input ) ,  callable_mp ( this ,  & EditorHelpBitTooltip : : _target_gui_input ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if defined(MODULE_GDSCRIPT_ENABLED) || defined(MODULE_MONO_ENABLED) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/// EditorHelpHighlighter ///
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								EditorHelpHighlighter  * EditorHelpHighlighter : : singleton  =  nullptr ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  EditorHelpHighlighter : : create_singleton ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_COND ( singleton  ! =  nullptr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									singleton  =  memnew ( EditorHelpHighlighter ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  EditorHelpHighlighter : : free_singleton ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_NULL ( singleton ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									memdelete ( singleton ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									singleton  =  nullptr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								EditorHelpHighlighter  * EditorHelpHighlighter : : get_singleton ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  singleton ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								EditorHelpHighlighter : : HighlightData  EditorHelpHighlighter : : _get_highlight_data ( Language  p_language ,  const  String  & p_source ,  bool  p_use_cache )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch  ( p_language )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  LANGUAGE_GDSCRIPT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifndef MODULE_GDSCRIPT_ENABLED 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ERR_FAIL_V_MSG ( HighlightData ( ) ,  " GDScript module is disabled. " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  LANGUAGE_CSHARP : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifndef MODULE_MONO_ENABLED 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ERR_FAIL_V_MSG ( HighlightData ( ) ,  " Mono module is disabled. " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ERR_FAIL_V_MSG ( HighlightData ( ) ,  " Invalid parameter  \" p_language \" . " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_use_cache )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										const  HashMap < String ,  HighlightData > : : ConstIterator  E  =  highlight_data_caches [ p_language ] . find ( p_source ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( E )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  E - > value ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									text_edits [ p_language ] - > set_text ( p_source ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-24 20:09:07 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( scripts [ p_language ] . is_valid ( ) )  {  // See GH-89610.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										scripts [ p_language ] - > set_source_code ( p_source ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									highlighters [ p_language ] - > _update_cache ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									HighlightData  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  source_offset  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  result_index  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  ( int  i  =  0 ;  i  <  text_edits [ p_language ] - > get_line_count ( ) ;  i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										const  Dictionary  dict  =  highlighters [ p_language ] - > _get_line_syntax_highlighting_impl ( i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										result . resize ( result . size ( )  +  dict . size ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										const  Variant  * key  =  nullptr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										int  prev_column  =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										while  ( ( key  =  dict . next ( key ) )  ! =  nullptr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											const  int  column  =  * key ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ERR_FAIL_COND_V ( column  < =  prev_column ,  HighlightData ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											prev_column  =  column ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											const  Color  color  =  dict [ * key ] . operator  Dictionary ( ) . get ( " color " ,  Color ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											result . write [ result_index ]  =  {  source_offset  +  column ,  color  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											result_index + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										source_offset  + =  text_edits [ p_language ] - > get_line ( i ) . length ( )  +  1 ;  // Plus newline.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( p_use_cache )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										highlight_data_caches [ p_language ] [ p_source ]  =  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  EditorHelpHighlighter : : highlight ( RichTextLabel  * p_rich_text_label ,  Language  p_language ,  const  String  & p_source ,  bool  p_use_cache )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ERR_FAIL_NULL ( p_rich_text_label ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  HighlightData  highlight_data  =  _get_highlight_data ( p_language ,  p_source ,  p_use_cache ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! highlight_data . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for  ( int  i  =  1 ;  i  <  highlight_data . size ( ) ;  i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											const  Pair < int ,  Color >  & prev  =  highlight_data [ i  -  1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											const  Pair < int ,  Color >  & curr  =  highlight_data [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rich_text_label - > push_color ( prev . second ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rich_text_label - > add_text ( p_source . substr ( prev . first ,  curr . first  -  prev . first ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											p_rich_text_label - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										const  Pair < int ,  Color >  & last  =  highlight_data [ highlight_data . size ( )  -  1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										p_rich_text_label - > push_color ( last . second ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										p_rich_text_label - > add_text ( p_source . substr ( last . first ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										p_rich_text_label - > pop ( ) ;  // color
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  EditorHelpHighlighter : : reset_cache ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									const  Color  text_color  =  EDITOR_GET ( " text_editor/theme/highlighting/text_color " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef MODULE_GDSCRIPT_ENABLED 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									highlight_data_caches [ LANGUAGE_GDSCRIPT ] . clear ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 15:57:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									text_edits [ LANGUAGE_GDSCRIPT ] - > add_theme_color_override ( SceneStringName ( font_color ) ,  text_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef MODULE_MONO_ENABLED 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									highlight_data_caches [ LANGUAGE_CSHARP ] . clear ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 15:57:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									text_edits [ LANGUAGE_CSHARP ] - > add_theme_color_override ( SceneStringName ( font_color ) ,  text_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								EditorHelpHighlighter : : EditorHelpHighlighter ( )  {  
						 
					
						
							
								
									
										
										
										
											2024-03-20 09:40:45 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									const  Color  text_color  =  EDITOR_GET ( " text_editor/theme/highlighting/text_color " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifdef MODULE_GDSCRIPT_ENABLED 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									TextEdit  * gdscript_text_edit  =  memnew ( TextEdit ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 15:57:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									gdscript_text_edit - > add_theme_color_override ( SceneStringName ( font_color ) ,  text_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Ref < GDScript >  gdscript ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									gdscript . instantiate ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Ref < GDScriptSyntaxHighlighter >  gdscript_highlighter ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									gdscript_highlighter . instantiate ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									gdscript_highlighter - > set_text_edit ( gdscript_text_edit ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									gdscript_highlighter - > _set_edited_resource ( gdscript ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									text_edits [ LANGUAGE_GDSCRIPT ]  =  gdscript_text_edit ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									scripts [ LANGUAGE_GDSCRIPT ]  =  gdscript ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									highlighters [ LANGUAGE_GDSCRIPT ]  =  gdscript_highlighter ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef MODULE_MONO_ENABLED 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									TextEdit  * csharp_text_edit  =  memnew ( TextEdit ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 15:57:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									csharp_text_edit - > add_theme_color_override ( SceneStringName ( font_color ) ,  text_color ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-03-24 20:09:07 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// See GH-89610.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									//Ref<CSharpScript> csharp;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									//csharp.instantiate();
 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Ref < EditorStandardSyntaxHighlighter >  csharp_highlighter ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									csharp_highlighter . instantiate ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									csharp_highlighter - > set_text_edit ( csharp_text_edit ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-24 20:09:07 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									//csharp_highlighter->_set_edited_resource(csharp);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									csharp_highlighter - > _set_script_language ( CSharpLanguage : : get_singleton ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									text_edits [ LANGUAGE_CSHARP ]  =  csharp_text_edit ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-24 20:09:07 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									//scripts[LANGUAGE_CSHARP] = csharp;
 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-08 22:16:55 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									highlighters [ LANGUAGE_CSHARP ]  =  csharp_highlighter ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								EditorHelpHighlighter : : ~ EditorHelpHighlighter ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef MODULE_GDSCRIPT_ENABLED 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									memdelete ( text_edits [ LANGUAGE_GDSCRIPT ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef MODULE_MONO_ENABLED 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									memdelete ( text_edits [ LANGUAGE_CSHARP ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  // defined(MODULE_GDSCRIPT_ENABLED) || defined(MODULE_MONO_ENABLED)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 23:54:51 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/// FindBar ///
  
						 
					
						
							
								
									
										
										
										
											2022-02-02 14:10:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-12-22 16:09:31 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								FindBar : : FindBar ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									search_text  =  memnew ( LineEdit ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-10 14:17:29 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									add_child ( search_text ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-22 16:09:31 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									search_text - > set_custom_minimum_size ( Size2 ( 100  *  EDSCALE ,  0 ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-10 14:17:29 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									search_text - > set_h_size_flags ( SIZE_EXPAND_FILL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 11:42:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									search_text - > connect ( SceneStringName ( text_changed ) ,  callable_mp ( this ,  & FindBar : : _search_text_changed ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-16 09:43:34 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									search_text - > connect ( " text_submitted " ,  callable_mp ( this ,  & FindBar : : _search_text_submitted ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-22 16:09:31 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-08-09 01:00:44 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									matches_label  =  memnew ( Label ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									add_child ( matches_label ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									matches_label - > hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-06-19 20:49:04 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									find_prev  =  memnew ( Button ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									find_prev - > set_flat ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-10 14:17:29 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									add_child ( find_prev ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-22 16:09:31 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									find_prev - > set_focus_mode ( FOCUS_NONE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 09:40:21 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									find_prev - > connect ( SceneStringName ( pressed ) ,  callable_mp ( this ,  & FindBar : : search_prev ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-22 16:09:31 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-06-19 20:49:04 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									find_next  =  memnew ( Button ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									find_next - > set_flat ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-10 14:17:29 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									add_child ( find_next ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-22 16:09:31 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									find_next - > set_focus_mode ( FOCUS_NONE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 09:40:21 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									find_next - > connect ( SceneStringName ( pressed ) ,  callable_mp ( this ,  & FindBar : : search_next ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-22 16:09:31 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-08-09 01:00:44 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Control  * space  =  memnew ( Control ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									add_child ( space ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									space - > set_custom_minimum_size ( Size2 ( 4 ,  0 )  *  EDSCALE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-22 16:09:31 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									hide_button  =  memnew ( TextureButton ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									add_child ( hide_button ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									hide_button - > set_focus_mode ( FOCUS_NONE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-05 02:11:32 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									hide_button - > set_ignore_texture_size ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-22 16:09:31 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									hide_button - > set_stretch_mode ( TextureButton : : STRETCH_KEEP_CENTERED ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 09:40:21 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									hide_button - > connect ( SceneStringName ( pressed ) ,  callable_mp ( this ,  & FindBar : : _hide_bar ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-22 16:09:31 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  FindBar : : popup_search ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									show ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-16 11:43:00 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									bool  grabbed_focus  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ! search_text - > has_focus ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										search_text - > grab_focus ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										grabbed_focus  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-12-15 12:04:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! search_text - > get_text ( ) . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-16 11:43:00 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										search_text - > select_all ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2021-03-28 19:31:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										search_text - > set_caret_column ( search_text - > get_text ( ) . length ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-05-16 11:43:00 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( grabbed_focus )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_search ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-22 16:09:31 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  FindBar : : _notification ( int  p_what )  {  
						 
					
						
							
								
									
										
										
										
											2019-08-09 01:00:44 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  ( p_what )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  NOTIFICATION_THEME_CHANGED :  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-08-13 02:33:39 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											find_prev - > set_icon ( get_editor_theme_icon ( SNAME ( " MoveUp " ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											find_next - > set_icon ( get_editor_theme_icon ( SNAME ( " MoveDown " ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											hide_button - > set_texture_normal ( get_editor_theme_icon ( SNAME ( " Close " ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											hide_button - > set_texture_hover ( get_editor_theme_icon ( SNAME ( " Close " ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											hide_button - > set_texture_pressed ( get_editor_theme_icon ( SNAME ( " Close " ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-07 02:09:13 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											hide_button - > set_custom_minimum_size ( hide_button - > get_texture_normal ( ) - > get_size ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 15:57:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											matches_label - > add_theme_color_override ( SceneStringName ( font_color ) ,  results_count  >  0  ?  get_theme_color ( SceneStringName ( font_color ) ,  SNAME ( " Label " ) )  :  get_theme_color ( SNAME ( " error_color " ) ,  EditorStringName ( Editor ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-09 01:00:44 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-16 00:52:32 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-08-09 01:00:44 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  NOTIFICATION_VISIBILITY_CHANGED :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_process_unhandled_input ( is_visible_in_tree ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-22 16:09:31 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  FindBar : : set_rich_text_label ( RichTextLabel  * p_rich_text_label )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									rich_text_label  =  p_rich_text_label ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								bool  FindBar : : search_next ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  _search ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								bool  FindBar : : search_prev ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  _search ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								bool  FindBar : : _search ( bool  p_search_previous )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  stext  =  search_text - > get_text ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bool  keep  =  prev_search  = =  stext ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bool  ret  =  rich_text_label - > search ( stext ,  keep ,  p_search_previous ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									prev_search  =  stext ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ret )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-09 01:00:44 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										_update_results_count ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-22 16:09:31 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-09 01:00:44 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										results_count  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-22 16:09:31 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-09 01:00:44 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									_update_matches_label ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-22 16:09:31 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-08-09 01:00:44 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  FindBar : : _update_results_count ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									results_count  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									String  searched  =  search_text - > get_text ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-12-15 12:04:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( searched . is_empty ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-10 12:56:01 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-09 01:00:44 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-01 12:36:37 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									String  full_text  =  rich_text_label - > get_parsed_text ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-09 01:00:44 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  from_pos  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									while  ( true )  { 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-16 09:43:34 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										int  pos  =  full_text . findn ( searched ,  from_pos ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( pos  = =  - 1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-09 01:00:44 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-09 01:00:44 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										results_count + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										from_pos  =  pos  +  searched . length ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  FindBar : : _update_matches_label ( )  {  
						 
					
						
							
								
									
										
										
										
											2020-12-15 12:04:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( search_text - > get_text ( ) . is_empty ( )  | |  results_count  = =  - 1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-09 01:00:44 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										matches_label - > hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										matches_label - > show ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-05-14 15:57:29 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										matches_label - > add_theme_color_override ( SceneStringName ( font_color ) ,  results_count  >  0  ?  get_theme_color ( SceneStringName ( font_color ) ,  SNAME ( " Label " ) )  :  get_theme_color ( SNAME ( " error_color " ) ,  EditorStringName ( Editor ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-09 03:47:09 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										matches_label - > set_text ( vformat ( results_count  = =  1  ?  TTR ( " %d match. " )  :  TTR ( " %d matches. " ) ,  results_count ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-08-09 01:00:44 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-22 16:09:31 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  FindBar : : _hide_bar ( )  {  
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( search_text - > has_focus ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-22 16:09:31 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										rich_text_label - > grab_focus ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 16:41:43 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-22 16:09:31 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									hide ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-08-22 12:37:22 -03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  FindBar : : unhandled_input ( const  Ref < InputEvent >  & p_event )  {  
						 
					
						
							
								
									
										
										
										
											2021-04-05 08:52:21 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ERR_FAIL_COND ( p_event . is_null ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-12-22 16:09:31 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									Ref < InputEventKey >  k  =  p_event ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-20 17:26:13 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( k . is_valid ( )  & &  k - > is_action_pressed ( SNAME ( " ui_cancel " ) ,  false ,  true ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ( rich_text_label - > has_focus ( )  | |  is_ancestor_of ( get_viewport ( ) - > gui_get_focus_owner ( ) ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											_hide_bar ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											accept_event ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-22 16:09:31 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  FindBar : : _search_text_changed ( const  String  & p_text )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									search_next ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-06-16 09:43:34 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  FindBar : : _search_text_submitted ( const  String  & p_text )  {  
						 
					
						
							
								
									
										
										
										
											2021-08-13 16:31:57 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( Input : : get_singleton ( ) - > is_key_pressed ( Key : : SHIFT ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-09-08 15:09:52 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										search_prev ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										search_next ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-22 16:09:31 -02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}