Improve locale detection.
Use separate language, script and country lists. Add locale selection dialog and property hint.
This commit is contained in:
parent
0a67b46396
commit
40c56ed410
28 changed files with 2430 additions and 1635 deletions
|
|
@ -343,6 +343,64 @@ EditorPropertyTextEnum::EditorPropertyTextEnum() {
|
|||
add_focusable(cancel_button);
|
||||
}
|
||||
|
||||
//////////////////// LOCALE ////////////////////////
|
||||
|
||||
void EditorPropertyLocale::_locale_selected(const String &p_locale) {
|
||||
emit_changed(get_edited_property(), p_locale);
|
||||
update_property();
|
||||
}
|
||||
|
||||
void EditorPropertyLocale::_locale_pressed() {
|
||||
if (!dialog) {
|
||||
dialog = memnew(EditorLocaleDialog);
|
||||
dialog->connect("locale_selected", callable_mp(this, &EditorPropertyLocale::_locale_selected));
|
||||
add_child(dialog);
|
||||
}
|
||||
|
||||
String locale_code = get_edited_object()->get(get_edited_property());
|
||||
dialog->set_locale(locale_code);
|
||||
dialog->popup_locale_dialog();
|
||||
}
|
||||
|
||||
void EditorPropertyLocale::update_property() {
|
||||
String locale_code = get_edited_object()->get(get_edited_property());
|
||||
locale->set_text(locale_code);
|
||||
locale->set_tooltip(locale_code);
|
||||
}
|
||||
|
||||
void EditorPropertyLocale::setup(const String &p_hint_text) {
|
||||
}
|
||||
|
||||
void EditorPropertyLocale::_notification(int p_what) {
|
||||
if (p_what == NOTIFICATION_ENTER_TREE || p_what == NOTIFICATION_THEME_CHANGED) {
|
||||
locale_edit->set_icon(get_theme_icon(SNAME("Translation"), SNAME("EditorIcons")));
|
||||
}
|
||||
}
|
||||
|
||||
void EditorPropertyLocale::_locale_focus_exited() {
|
||||
_locale_selected(locale->get_text());
|
||||
}
|
||||
|
||||
void EditorPropertyLocale::_bind_methods() {
|
||||
}
|
||||
|
||||
EditorPropertyLocale::EditorPropertyLocale() {
|
||||
HBoxContainer *locale_hb = memnew(HBoxContainer);
|
||||
add_child(locale_hb);
|
||||
locale = memnew(LineEdit);
|
||||
locale_hb->add_child(locale);
|
||||
locale->connect("text_submitted", callable_mp(this, &EditorPropertyLocale::_locale_selected));
|
||||
locale->connect("focus_exited", callable_mp(this, &EditorPropertyLocale::_locale_focus_exited));
|
||||
locale->set_h_size_flags(SIZE_EXPAND_FILL);
|
||||
|
||||
locale_edit = memnew(Button);
|
||||
locale_edit->set_clip_text(true);
|
||||
locale_hb->add_child(locale_edit);
|
||||
add_focusable(locale);
|
||||
dialog = nullptr;
|
||||
locale_edit->connect("pressed", callable_mp(this, &EditorPropertyLocale::_locale_pressed));
|
||||
}
|
||||
|
||||
///////////////////// PATH /////////////////////////
|
||||
|
||||
void EditorPropertyPath::_set_read_only(bool p_read_only) {
|
||||
|
|
@ -3379,6 +3437,10 @@ EditorProperty *EditorInspectorDefaultPlugin::get_editor_for_property(Object *p_
|
|||
EditorPropertyClassName *editor = memnew(EditorPropertyClassName);
|
||||
editor->setup("Object", p_hint_text);
|
||||
return editor;
|
||||
} else if (p_hint == PROPERTY_HINT_LOCALE_ID) {
|
||||
EditorPropertyLocale *editor = memnew(EditorPropertyLocale);
|
||||
editor->setup(p_hint_text);
|
||||
return editor;
|
||||
} else if (p_hint == PROPERTY_HINT_DIR || p_hint == PROPERTY_HINT_FILE || p_hint == PROPERTY_HINT_SAVE_FILE || p_hint == PROPERTY_HINT_GLOBAL_DIR || p_hint == PROPERTY_HINT_GLOBAL_FILE) {
|
||||
Vector<String> extensions = p_hint_text.split(",");
|
||||
bool global = p_hint == PROPERTY_HINT_GLOBAL_DIR || p_hint == PROPERTY_HINT_GLOBAL_FILE;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue