From 004dd1231f4243c9de0de932f5431a9940f12586 Mon Sep 17 00:00:00 2001 From: Relintai Date: Sat, 18 Feb 2023 12:58:37 +0100 Subject: [PATCH] Moved ScriptEditorBase to it's own file. --- modules/code_editor/SCsub | 1 + modules/code_editor/register_types.cpp | 2 + modules/code_editor/script_editor_base.cpp | 43 ++++++++++ modules/code_editor/script_editor_base.h | 87 ++++++++++++++++++++ modules/code_editor/script_editor_plugin.cpp | 14 ---- modules/code_editor/script_editor_plugin.h | 50 +---------- 6 files changed, 135 insertions(+), 62 deletions(-) create mode 100644 modules/code_editor/script_editor_base.cpp create mode 100644 modules/code_editor/script_editor_base.h diff --git a/modules/code_editor/SCsub b/modules/code_editor/SCsub index 4f3abc2a2..e89403978 100644 --- a/modules/code_editor/SCsub +++ b/modules/code_editor/SCsub @@ -11,6 +11,7 @@ sources = [ "script_text_editor.cpp", "text_editor.cpp", "script_editor_quick_open.cpp", + "script_editor_base.cpp", ] env_mlp.add_source_files(env.modules_sources, sources) diff --git a/modules/code_editor/register_types.cpp b/modules/code_editor/register_types.cpp index abef97d8b..86992976f 100644 --- a/modules/code_editor/register_types.cpp +++ b/modules/code_editor/register_types.cpp @@ -5,11 +5,13 @@ #include "script_text_editor.h" #include "text_editor.h" +#include "script_editor_base.h" void register_code_editor_types(ModuleRegistrationLevel p_level) { if (p_level == MODULE_REGISTRATION_LEVEL_SCENE) { //ClassDB::register_class<>(); ClassDB::register_virtual_class(); + ClassDB::register_virtual_class(); } #ifdef TOOLS_ENABLED diff --git a/modules/code_editor/script_editor_base.cpp b/modules/code_editor/script_editor_base.cpp new file mode 100644 index 000000000..be1608ce8 --- /dev/null +++ b/modules/code_editor/script_editor_base.cpp @@ -0,0 +1,43 @@ +/*************************************************************************/ +/* script_editor_plugin.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ +/* */ +/* 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. */ +/*************************************************************************/ + +#include "script_editor_base.h" + +void ScriptEditorBase::_bind_methods() { + ADD_SIGNAL(MethodInfo("name_changed")); + ADD_SIGNAL(MethodInfo("edited_script_changed")); + ADD_SIGNAL(MethodInfo("request_help", PropertyInfo(Variant::STRING, "topic"))); + ADD_SIGNAL(MethodInfo("request_open_script_at_line", PropertyInfo(Variant::OBJECT, "script"), PropertyInfo(Variant::INT, "line"))); + ADD_SIGNAL(MethodInfo("request_save_history")); + ADD_SIGNAL(MethodInfo("go_to_help", PropertyInfo(Variant::STRING, "what"))); + // TODO: This signal is no use for VisualScript. + ADD_SIGNAL(MethodInfo("search_in_files_requested", PropertyInfo(Variant::STRING, "text"))); + ADD_SIGNAL(MethodInfo("replace_in_files_requested", PropertyInfo(Variant::STRING, "text"))); +} diff --git a/modules/code_editor/script_editor_base.h b/modules/code_editor/script_editor_base.h new file mode 100644 index 000000000..69cd34d92 --- /dev/null +++ b/modules/code_editor/script_editor_base.h @@ -0,0 +1,87 @@ +#ifndef SCRIPT_EDITOR_BASE_H +#define SCRIPT_EDITOR_BASE_H + +/*************************************************************************/ +/* script_editor_plugin.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ +/* */ +/* 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. */ +/*************************************************************************/ + +#include "scene/gui/box_container.h" + +class SyntaxHighlighter; +class Texture; + +class ScriptEditorBase : public VBoxContainer { + GDCLASS(ScriptEditorBase, VBoxContainer); + +protected: + static void _bind_methods(); + +public: + virtual void add_syntax_highlighter(SyntaxHighlighter *p_highlighter) = 0; + virtual void set_syntax_highlighter(SyntaxHighlighter *p_highlighter) = 0; + + virtual void apply_code() = 0; + virtual RES get_edited_resource() const = 0; + virtual Vector get_functions() = 0; + virtual void set_edited_resource(const RES &p_res) = 0; + virtual void enable_editor() = 0; + virtual void reload_text() = 0; + virtual String get_name() = 0; + virtual Ref get_icon() = 0; + virtual bool is_unsaved() = 0; + virtual Variant get_edit_state() = 0; + virtual void set_edit_state(const Variant &p_state) = 0; + virtual void goto_line(int p_line, bool p_with_error = false) = 0; + virtual void set_executing_line(int p_line) = 0; + virtual void clear_executing_line() = 0; + virtual void trim_trailing_whitespace() = 0; + virtual void insert_final_newline() = 0; + virtual void convert_indent_to_spaces() = 0; + virtual void convert_indent_to_tabs() = 0; + virtual void ensure_focus() = 0; + virtual void tag_saved_version() = 0; + virtual void reload(bool p_soft) {} + virtual void get_breakpoints(List *p_breakpoints) = 0; + virtual void add_callback(const String &p_function, PoolStringArray p_args) = 0; + virtual void update_settings() = 0; + virtual void set_debugger_active(bool p_active) = 0; + virtual bool can_lose_focus_on_node_selection() { return true; } + + virtual bool show_members_overview() = 0; + + virtual void set_tooltip_request_func(String p_method, Object *p_obj) = 0; + virtual Control *get_edit_menu() = 0; + virtual void clear_edit_menu() = 0; + + virtual void validate() = 0; + + ScriptEditorBase() {} +}; + +#endif // SCRIPT_EDITOR_PLUGIN_H diff --git a/modules/code_editor/script_editor_plugin.cpp b/modules/code_editor/script_editor_plugin.cpp index 19ff623a6..5bc7b7ed6 100644 --- a/modules/code_editor/script_editor_plugin.cpp +++ b/modules/code_editor/script_editor_plugin.cpp @@ -99,20 +99,6 @@ #include "shader_editor/shader_editor_plugin.h" #endif -/*** SCRIPT EDITOR ****/ - -void ScriptEditorBase::_bind_methods() { - ADD_SIGNAL(MethodInfo("name_changed")); - ADD_SIGNAL(MethodInfo("edited_script_changed")); - ADD_SIGNAL(MethodInfo("request_help", PropertyInfo(Variant::STRING, "topic"))); - ADD_SIGNAL(MethodInfo("request_open_script_at_line", PropertyInfo(Variant::OBJECT, "script"), PropertyInfo(Variant::INT, "line"))); - ADD_SIGNAL(MethodInfo("request_save_history")); - ADD_SIGNAL(MethodInfo("go_to_help", PropertyInfo(Variant::STRING, "what"))); - // TODO: This signal is no use for VisualScript. - ADD_SIGNAL(MethodInfo("search_in_files_requested", PropertyInfo(Variant::STRING, "text"))); - ADD_SIGNAL(MethodInfo("replace_in_files_requested", PropertyInfo(Variant::STRING, "text"))); -} - static bool _is_built_in_script(Script *p_script) { String path = p_script->get_path(); diff --git a/modules/code_editor/script_editor_plugin.h b/modules/code_editor/script_editor_plugin.h index d58d40cf5..a08f2e82f 100644 --- a/modules/code_editor/script_editor_plugin.h +++ b/modules/code_editor/script_editor_plugin.h @@ -51,6 +51,8 @@ #include "core/variant/variant.h" #include "core/containers/vector.h" +#include "script_editor_base.h" + class Button; class ConfigFile; class Control; @@ -78,54 +80,6 @@ class VSplitContainer; class ScriptEditorQuickOpen; class ScriptEditorDebugger; -class ScriptEditorBase : public VBoxContainer { - GDCLASS(ScriptEditorBase, VBoxContainer); - -protected: - static void _bind_methods(); - -public: - virtual void add_syntax_highlighter(SyntaxHighlighter *p_highlighter) = 0; - virtual void set_syntax_highlighter(SyntaxHighlighter *p_highlighter) = 0; - - virtual void apply_code() = 0; - virtual RES get_edited_resource() const = 0; - virtual Vector get_functions() = 0; - virtual void set_edited_resource(const RES &p_res) = 0; - virtual void enable_editor() = 0; - virtual void reload_text() = 0; - virtual String get_name() = 0; - virtual Ref get_icon() = 0; - virtual bool is_unsaved() = 0; - virtual Variant get_edit_state() = 0; - virtual void set_edit_state(const Variant &p_state) = 0; - virtual void goto_line(int p_line, bool p_with_error = false) = 0; - virtual void set_executing_line(int p_line) = 0; - virtual void clear_executing_line() = 0; - virtual void trim_trailing_whitespace() = 0; - virtual void insert_final_newline() = 0; - virtual void convert_indent_to_spaces() = 0; - virtual void convert_indent_to_tabs() = 0; - virtual void ensure_focus() = 0; - virtual void tag_saved_version() = 0; - virtual void reload(bool p_soft) {} - virtual void get_breakpoints(List *p_breakpoints) = 0; - virtual void add_callback(const String &p_function, PoolStringArray p_args) = 0; - virtual void update_settings() = 0; - virtual void set_debugger_active(bool p_active) = 0; - virtual bool can_lose_focus_on_node_selection() { return true; } - - virtual bool show_members_overview() = 0; - - virtual void set_tooltip_request_func(String p_method, Object *p_obj) = 0; - virtual Control *get_edit_menu() = 0; - virtual void clear_edit_menu() = 0; - - virtual void validate() = 0; - - ScriptEditorBase() {} -}; - typedef SyntaxHighlighter *(*CreateSyntaxHighlighterFunc)(); typedef ScriptEditorBase *(*CreateScriptEditorFunc)(const RES &p_resource);