| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | /*************************************************************************/ | 
					
						
							|  |  |  | /*  project_manager.h                                                    */ | 
					
						
							|  |  |  | /*************************************************************************/ | 
					
						
							|  |  |  | /*                       This file is part of:                           */ | 
					
						
							|  |  |  | /*                           GODOT ENGINE                                */ | 
					
						
							| 
									
										
										
										
											2017-08-27 14:16:55 +02:00
										 |  |  | /*                      https://godotengine.org                          */ | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | /*************************************************************************/ | 
					
						
							| 
									
										
										
										
											2021-01-01 20:13:46 +01:00
										 |  |  | /* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur.                 */ | 
					
						
							|  |  |  | /* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md).   */ | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | /*                                                                       */ | 
					
						
							|  |  |  | /* Permission is hereby granted, free of charge, to any person obtaining */ | 
					
						
							|  |  |  | /* a copy of this software and associated documentation files (the       */ | 
					
						
							|  |  |  | /* "Software"), to deal in the Software without restriction, including   */ | 
					
						
							|  |  |  | /* without limitation the rights to use, copy, modify, merge, publish,   */ | 
					
						
							|  |  |  | /* distribute, sublicense, and/or sell copies of the Software, and to    */ | 
					
						
							|  |  |  | /* permit persons to whom the Software is furnished to do so, subject to */ | 
					
						
							|  |  |  | /* the following conditions:                                             */ | 
					
						
							|  |  |  | /*                                                                       */ | 
					
						
							|  |  |  | /* The above copyright notice and this permission notice shall be        */ | 
					
						
							|  |  |  | /* included in all copies or substantial portions of the Software.       */ | 
					
						
							|  |  |  | /*                                                                       */ | 
					
						
							|  |  |  | /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       */ | 
					
						
							|  |  |  | /* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    */ | 
					
						
							|  |  |  | /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ | 
					
						
							|  |  |  | /* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  */ | 
					
						
							|  |  |  | /* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  */ | 
					
						
							|  |  |  | /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     */ | 
					
						
							|  |  |  | /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */ | 
					
						
							|  |  |  | /*************************************************************************/ | 
					
						
							| 
									
										
										
										
											2018-01-05 00:50:27 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | #ifndef PROJECT_MANAGER_H
 | 
					
						
							|  |  |  | #define PROJECT_MANAGER_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-01 23:36:15 +02:00
										 |  |  | #include "editor/editor_about.h"
 | 
					
						
							| 
									
										
										
										
											2017-08-26 17:46:49 +02:00
										 |  |  | #include "editor/plugins/asset_library_editor_plugin.h"
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | #include "scene/gui/dialogs.h"
 | 
					
						
							|  |  |  | #include "scene/gui/file_dialog.h"
 | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | #include "scene/gui/scroll_container.h"
 | 
					
						
							| 
									
										
										
										
											2014-06-17 13:38:27 +08:00
										 |  |  | #include "scene/gui/tool_button.h"
 | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | #include "scene/gui/tree.h"
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-30 20:08:17 -05:00
										 |  |  | class ProjectDialog; | 
					
						
							| 
									
										
										
										
											2019-07-19 22:37:45 +01:00
										 |  |  | class ProjectList; | 
					
						
							| 
									
										
										
										
											2014-06-11 17:57:13 +08:00
										 |  |  | class ProjectListFilter; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | class ProjectManager : public Control { | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 	GDCLASS(ProjectManager, Control); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	Button *erase_btn; | 
					
						
							| 
									
										
										
										
											2019-02-11 17:44:23 +01:00
										 |  |  | 	Button *erase_missing_btn; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	Button *open_btn; | 
					
						
							| 
									
										
										
										
											2017-09-06 21:04:41 -03:00
										 |  |  | 	Button *rename_btn; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	Button *run_btn; | 
					
						
							| 
									
										
										
										
											2021-05-01 23:36:15 +02:00
										 |  |  | 	Button *about_btn; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-08 09:25:47 -03:00
										 |  |  | 	EditorAssetLibrary *asset_library; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-11 17:57:13 +08:00
										 |  |  | 	ProjectListFilter *project_filter; | 
					
						
							| 
									
										
										
										
											2018-11-23 19:15:33 +00:00
										 |  |  | 	ProjectListFilter *project_order_filter; | 
					
						
							| 
									
										
										
										
											2021-02-14 17:02:08 +01:00
										 |  |  | 	Label *loading_label; | 
					
						
							| 
									
										
										
										
											2014-06-11 17:57:13 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-21 12:20:48 +01:00
										 |  |  | 	FileDialog *scan_dir; | 
					
						
							| 
									
										
										
										
											2017-10-25 17:02:32 -05:00
										 |  |  | 	ConfirmationDialog *language_restart_ask; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	ConfirmationDialog *erase_ask; | 
					
						
							| 
									
										
										
										
											2019-02-11 17:44:23 +01:00
										 |  |  | 	ConfirmationDialog *erase_missing_ask; | 
					
						
							| 
									
										
										
										
											2014-05-11 09:45:52 +08:00
										 |  |  | 	ConfirmationDialog *multi_open_ask; | 
					
						
							|  |  |  | 	ConfirmationDialog *multi_run_ask; | 
					
						
							| 
									
										
										
										
											2016-08-01 01:59:31 +03:00
										 |  |  | 	ConfirmationDialog *multi_scan_ask; | 
					
						
							| 
									
										
										
										
											2018-12-21 12:20:48 +01:00
										 |  |  | 	ConfirmationDialog *ask_update_settings; | 
					
						
							|  |  |  | 	ConfirmationDialog *open_templates; | 
					
						
							| 
									
										
										
										
											2021-05-01 23:36:15 +02:00
										 |  |  | 	EditorAbout *about; | 
					
						
							| 
									
										
										
										
											2017-08-07 21:41:04 +02:00
										 |  |  | 	AcceptDialog *run_error_diag; | 
					
						
							| 
									
										
										
										
											2017-09-11 02:01:20 -03:00
										 |  |  | 	AcceptDialog *dialog_error; | 
					
						
							| 
									
										
										
										
											2017-08-30 20:08:17 -05:00
										 |  |  | 	ProjectDialog *npdialog; | 
					
						
							| 
									
										
										
										
											2018-12-21 12:20:48 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-08 09:25:47 -03:00
										 |  |  | 	HBoxContainer *projects_hb; | 
					
						
							|  |  |  | 	TabContainer *tabs; | 
					
						
							| 
									
										
										
										
											2019-07-19 22:37:45 +01:00
										 |  |  | 	ProjectList *_project_list; | 
					
						
							| 
									
										
										
										
											2016-06-08 09:25:47 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-24 01:20:54 +01:00
										 |  |  | 	LinkButton *version_btn; | 
					
						
							| 
									
										
										
										
											2017-10-25 17:02:32 -05:00
										 |  |  | 	OptionButton *language_btn; | 
					
						
							| 
									
										
										
										
											2016-06-18 13:32:03 +08:00
										 |  |  | 	Control *gui_base; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-21 12:20:48 +01:00
										 |  |  | 	bool importing; | 
					
						
							| 
									
										
										
										
											2017-11-26 15:31:08 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void _open_asset_library(); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	void _scan_projects(); | 
					
						
							|  |  |  | 	void _run_project(); | 
					
						
							| 
									
										
										
										
											2014-05-11 09:45:52 +08:00
										 |  |  | 	void _run_project_confirm(); | 
					
						
							| 
									
										
										
										
											2018-12-21 12:20:48 +01:00
										 |  |  | 	void _open_selected_projects(); | 
					
						
							|  |  |  | 	void _open_selected_projects_ask(); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	void _import_project(); | 
					
						
							|  |  |  | 	void _new_project(); | 
					
						
							| 
									
										
										
										
											2017-09-06 21:04:41 -03:00
										 |  |  | 	void _rename_project(); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	void _erase_project(); | 
					
						
							| 
									
										
										
										
											2019-02-11 17:44:23 +01:00
										 |  |  | 	void _erase_missing_projects(); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	void _erase_project_confirm(); | 
					
						
							| 
									
										
										
										
											2019-02-11 17:44:23 +01:00
										 |  |  | 	void _erase_missing_projects_confirm(); | 
					
						
							| 
									
										
										
										
											2021-05-01 23:36:15 +02:00
										 |  |  | 	void _show_about(); | 
					
						
							| 
									
										
										
										
											2016-07-29 03:33:59 +03:00
										 |  |  | 	void _update_project_buttons(); | 
					
						
							| 
									
										
										
										
											2017-10-25 17:02:32 -05:00
										 |  |  | 	void _language_selected(int p_id); | 
					
						
							|  |  |  | 	void _restart_confirm(); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	void _exit_dialog(); | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 	void _scan_begin(const String &p_base); | 
					
						
							| 
									
										
										
										
											2019-02-06 15:57:06 +02:00
										 |  |  | 	void _global_menu_action(const Variant &p_id, const Variant &p_meta); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-21 12:20:48 +01:00
										 |  |  | 	void _confirm_update_settings(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	void _load_recent_projects(); | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 	void _on_project_created(const String &dir); | 
					
						
							| 
									
										
										
										
											2018-12-21 12:20:48 +01:00
										 |  |  | 	void _on_projects_updated(); | 
					
						
							| 
									
										
										
										
											2017-09-10 15:37:49 +02:00
										 |  |  | 	void _update_scroll_position(const String &dir); | 
					
						
							| 
									
										
										
										
											2019-05-26 16:33:51 +01:00
										 |  |  | 	void _scan_dir(const String &path, List<String> *r_projects); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 	void _install_project(const String &p_zip_path, const String &p_title); | 
					
						
							| 
									
										
										
										
											2016-07-11 21:34:02 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-09 22:33:50 +02:00
										 |  |  | 	void _dim_window(); | 
					
						
							| 
									
										
										
										
											2017-05-20 12:38:03 -03:00
										 |  |  | 	void _unhandled_input(const Ref<InputEvent> &p_ev); | 
					
						
							| 
									
										
										
										
											2017-01-11 00:52:51 -03:00
										 |  |  | 	void _files_dropped(PoolStringArray p_files, int p_screen); | 
					
						
							|  |  |  | 	void _scan_multiple_folders(PoolStringArray p_files); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-24 01:20:54 +01:00
										 |  |  | 	void _version_button_pressed(); | 
					
						
							| 
									
										
										
										
											2019-07-19 22:37:45 +01:00
										 |  |  | 	void _on_order_option_changed(); | 
					
						
							|  |  |  | 	void _on_filter_option_changed(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | protected: | 
					
						
							| 
									
										
										
										
											2015-12-14 16:31:37 -03:00
										 |  |  | 	void _notification(int p_what); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	static void _bind_methods(); | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | public: | 
					
						
							|  |  |  | 	ProjectManager(); | 
					
						
							|  |  |  | 	~ProjectManager(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-11 17:57:13 +08:00
										 |  |  | class ProjectListFilter : public HBoxContainer { | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 	GDCLASS(ProjectListFilter, HBoxContainer); | 
					
						
							| 
									
										
										
										
											2014-06-11 17:57:13 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-18 01:37:06 +02:00
										 |  |  | public: | 
					
						
							|  |  |  | 	enum FilterOption { | 
					
						
							|  |  |  | 		FILTER_NAME, | 
					
						
							|  |  |  | 		FILTER_PATH, | 
					
						
							|  |  |  | 		FILTER_MODIFIED, | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-15 12:15:33 +08:00
										 |  |  | private: | 
					
						
							|  |  |  | 	friend class ProjectManager; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-11 17:57:13 +08:00
										 |  |  | 	OptionButton *filter_option; | 
					
						
							|  |  |  | 	LineEdit *search_box; | 
					
						
							| 
									
										
										
										
											2018-11-23 19:15:33 +00:00
										 |  |  | 	bool has_search_box; | 
					
						
							| 
									
										
										
										
											2014-06-11 17:57:13 +08:00
										 |  |  | 	FilterOption _current_filter; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 	void _search_text_changed(const String &p_newtext); | 
					
						
							| 
									
										
										
										
											2014-06-11 17:57:13 +08:00
										 |  |  | 	void _filter_option_selected(int p_idx); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							| 
									
										
										
										
											2014-06-17 13:38:27 +08:00
										 |  |  | 	void _notification(int p_what); | 
					
						
							| 
									
										
										
										
											2014-06-11 17:57:13 +08:00
										 |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2018-11-23 19:15:33 +00:00
										 |  |  | 	void _setup_filters(Vector<String> options); | 
					
						
							| 
									
										
										
										
											2019-08-13 19:16:17 +02:00
										 |  |  | 	void add_filter_option(); | 
					
						
							| 
									
										
										
										
											2018-11-23 19:15:33 +00:00
										 |  |  | 	void add_search_box(); | 
					
						
							|  |  |  | 	void set_filter_size(int h_size); | 
					
						
							| 
									
										
										
										
											2014-06-11 17:57:13 +08:00
										 |  |  | 	String get_search_term(); | 
					
						
							|  |  |  | 	FilterOption get_filter_option(); | 
					
						
							| 
									
										
										
										
											2018-12-12 21:12:41 +01:00
										 |  |  | 	void set_filter_option(FilterOption); | 
					
						
							| 
									
										
										
										
											2014-06-11 17:57:13 +08:00
										 |  |  | 	ProjectListFilter(); | 
					
						
							| 
									
										
										
										
											2019-02-19 00:03:54 +02:00
										 |  |  | 	void clear(); | 
					
						
							| 
									
										
										
										
											2014-06-11 17:57:13 +08:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | #endif // PROJECT_MANAGER_H
 |