From ffd498c57d943879e4d417422e473943bd373c40 Mon Sep 17 00:00:00 2001 From: Micky Date: Sun, 14 Jan 2024 21:47:06 +0100 Subject: [PATCH] Add autocompletion for TranslationServer --- core/string/translation.cpp | 23 +++++++++++++++++++++++ core/string/translation.h | 4 ++++ 2 files changed, 27 insertions(+) diff --git a/core/string/translation.cpp b/core/string/translation.cpp index 829c9bf7777..4a0ce279042 100644 --- a/core/string/translation.cpp +++ b/core/string/translation.cpp @@ -983,6 +983,29 @@ bool TranslationServer::is_placeholder(String &p_message, int p_index) const { p_message[p_index + 1] == 'o' || p_message[p_index + 1] == 'x' || p_message[p_index + 1] == 'X' || p_message[p_index + 1] == 'f'); } +#ifdef TOOLS_ENABLED +void TranslationServer::get_argument_options(const StringName &p_function, int p_idx, List *r_options) const { + const String pf = p_function; + if (p_idx == 0) { + HashMap *target_hash_map = nullptr; + if (pf == "get_language_name") { + target_hash_map = &language_map; + } else if (pf == "get_script_name") { + target_hash_map = &script_map; + } else if (pf == "get_country_name") { + target_hash_map = &country_name_map; + } + + if (target_hash_map) { + for (const KeyValue &E : *target_hash_map) { + r_options->push_back(E.key.quote()); + } + } + } + Object::get_argument_options(p_function, p_idx, r_options); +} +#endif // TOOLS_ENABLED + void TranslationServer::_bind_methods() { ClassDB::bind_method(D_METHOD("set_locale", "locale"), &TranslationServer::set_locale); ClassDB::bind_method(D_METHOD("get_locale"), &TranslationServer::get_locale); diff --git a/core/string/translation.h b/core/string/translation.h index 3f9dbcc4766..39101760214 100644 --- a/core/string/translation.h +++ b/core/string/translation.h @@ -185,6 +185,10 @@ public: void load_translations(); +#ifdef TOOLS_ENABLED + virtual void get_argument_options(const StringName &p_function, int p_idx, List *r_options) const override; +#endif // TOOLS_ENABLED + TranslationServer(); };