diff options
Diffstat (limited to 'editor')
117 files changed, 1965 insertions, 1536 deletions
diff --git a/editor/action_map_editor.cpp b/editor/action_map_editor.cpp index 7ed603410d..1c3ba89cd3 100644 --- a/editor/action_map_editor.cpp +++ b/editor/action_map_editor.cpp @@ -631,6 +631,7 @@ InputEventConfigurationDialog::InputEventConfigurationDialog() { additional_options_container->hide(); Label *opts_label = memnew(Label); + opts_label->set_theme_type_variation("HeaderSmall"); opts_label->set_text("Additional Options"); additional_options_container->add_child(opts_label); @@ -639,6 +640,7 @@ InputEventConfigurationDialog::InputEventConfigurationDialog() { device_container->set_h_size_flags(Control::SIZE_EXPAND_FILL); Label *device_label = memnew(Label); + device_label->set_theme_type_variation("HeaderSmall"); device_label->set_text("Device:"); device_container->add_child(device_label); @@ -858,6 +860,7 @@ Variant ActionMapEditor::get_drag_data_fw(const Point2 &p_point, Control *p_from String name = selected->get_text(0); Label *label = memnew(Label(name)); + label->set_theme_type_variation("HeaderSmall"); label->set_modulate(Color(1, 1, 1, 1.0f)); action_tree->set_drag_preview(label); diff --git a/editor/animation_track_editor.cpp b/editor/animation_track_editor.cpp index f61fb6bab3..05945a8ae2 100644 --- a/editor/animation_track_editor.cpp +++ b/editor/animation_track_editor.cpp @@ -4450,7 +4450,7 @@ void AnimationTrackEditor::_new_track_node_selected(NodePath p_path) { } if (node == AnimationPlayerEditor::singleton->get_player()) { - EditorNode::get_singleton()->show_warning(TTR("An animation player can't animate itself, only other players.")); + EditorNode::get_singleton()->show_warning(TTR("AnimationPlayer can't animate itself, only other players.")); return; } @@ -5334,7 +5334,7 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) { } break; case EDIT_PASTE_TRACKS: { if (track_clipboard.size() == 0) { - EditorNode::get_singleton()->show_warning(TTR("Clipboard is empty")); + EditorNode::get_singleton()->show_warning(TTR("Clipboard is empty!")); break; } @@ -5784,7 +5784,7 @@ AnimationTrackEditor::AnimationTrackEditor() { info_message->set_text(TTR("Select an AnimationPlayer node to create and edit animations.")); info_message->set_valign(Label::VALIGN_CENTER); info_message->set_align(Label::ALIGN_CENTER); - info_message->set_autowrap(true); + info_message->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART); info_message->set_custom_minimum_size(Size2(100 * EDSCALE, 0)); info_message->set_anchors_and_offsets_preset(PRESET_WIDE, PRESET_MODE_KEEP_SIZE, 8 * EDSCALE); main_panel->add_child(info_message); diff --git a/editor/connections_dialog.cpp b/editor/connections_dialog.cpp index de6407da73..c79a8d9a0e 100644 --- a/editor/connections_dialog.cpp +++ b/editor/connections_dialog.cpp @@ -1121,7 +1121,7 @@ ConnectionsDock::ConnectionsDock(EditorNode *p_editor) { add_child(slot_menu); slot_menu->connect("id_pressed", callable_mp(this, &ConnectionsDock::_handle_slot_menu_option)); slot_menu->add_item(TTR("Edit..."), EDIT); - slot_menu->add_item(TTR("Go To Method"), GO_TO_SCRIPT); + slot_menu->add_item(TTR("Go to Method"), GO_TO_SCRIPT); slot_menu->add_item(TTR("Disconnect"), DISCONNECT); connect_dialog->connect("connected", callable_mp(this, &ConnectionsDock::_make_or_edit_connection)); diff --git a/editor/debugger/editor_performance_profiler.cpp b/editor/debugger/editor_performance_profiler.cpp index fc0104c07a..08609080c5 100644 --- a/editor/debugger/editor_performance_profiler.cpp +++ b/editor/debugger/editor_performance_profiler.cpp @@ -380,7 +380,7 @@ EditorPerformanceProfiler::EditorPerformanceProfiler() { info_message->set_text(TTR("Pick one or more items from the list to display the graph.")); info_message->set_valign(Label::VALIGN_CENTER); info_message->set_align(Label::ALIGN_CENTER); - info_message->set_autowrap(true); + info_message->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART); info_message->set_custom_minimum_size(Size2(100 * EDSCALE, 0)); info_message->set_anchors_and_offsets_preset(PRESET_WIDE, PRESET_MODE_KEEP_SIZE, 8 * EDSCALE); monitor_draw->add_child(info_message); diff --git a/editor/debugger/script_editor_debugger.cpp b/editor/debugger/script_editor_debugger.cpp index b877ab030f..09bbf846fe 100644 --- a/editor/debugger/script_editor_debugger.cpp +++ b/editor/debugger/script_editor_debugger.cpp @@ -1535,7 +1535,7 @@ ScriptEditorDebugger::ScriptEditorDebugger(EditorNode *p_editor) { reason->set_text(""); hbc->add_child(reason); reason->set_h_size_flags(SIZE_EXPAND_FILL); - reason->set_autowrap(true); + reason->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART); reason->set_max_lines_visible(3); reason->set_mouse_filter(Control::MOUSE_FILTER_PASS); @@ -1700,6 +1700,8 @@ ScriptEditorDebugger::ScriptEditorDebugger(EditorNode *p_editor) { VBoxContainer *vmem_vb = memnew(VBoxContainer); HBoxContainer *vmem_hb = memnew(HBoxContainer); Label *vmlb = memnew(Label(TTR("List of Video Memory Usage by Resource:") + " ")); + vmlb->set_theme_type_variation("HeaderSmall"); + vmlb->set_h_size_flags(SIZE_EXPAND_FILL); vmem_hb->add_child(vmlb); vmem_hb->add_child(memnew(Label(TTR("Total:") + " "))); diff --git a/editor/dependency_editor.cpp b/editor/dependency_editor.cpp index ef571e5c7a..e26344f3ec 100644 --- a/editor/dependency_editor.cpp +++ b/editor/dependency_editor.cpp @@ -236,6 +236,8 @@ DependencyEditor::DependencyEditor() { HBoxContainer *hbc = memnew(HBoxContainer); Label *label = memnew(Label(TTR("Dependencies:"))); + label->set_theme_type_variation("HeaderSmall"); + hbc->add_child(label); hbc->add_spacer(); fixdeps = memnew(Button(TTR("Fix Broken"))); diff --git a/editor/editor_about.cpp b/editor/editor_about.cpp index b8504ad02a..1f1446a8a8 100644 --- a/editor/editor_about.cpp +++ b/editor/editor_about.cpp @@ -92,6 +92,7 @@ ScrollContainer *EditorAbout::_populate_list(const String &p_name, const List<St const char *const *names_ptr = p_src[i]; if (*names_ptr) { Label *lbl = memnew(Label); + lbl->set_theme_type_variation("HeaderSmall"); lbl->set_text(p_sections[i]); vbc->add_child(lbl); @@ -212,7 +213,7 @@ EditorAbout::EditorAbout() { Label *tpl_label = memnew(Label); tpl_label->set_h_size_flags(Control::SIZE_EXPAND_FILL); - tpl_label->set_autowrap(true); + tpl_label->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART); tpl_label->set_text(TTR("Godot Engine relies on a number of third-party free and open source libraries, all compatible with the terms of its MIT license. The following is an exhaustive list of all such third-party components with their respective copyright statements and license terms.")); tpl_label->set_size(Size2(630, 1) * EDSCALE); license_thirdparty->add_child(tpl_label); diff --git a/editor/editor_asset_installer.cpp b/editor/editor_asset_installer.cpp index 83319ee5a5..dc90f26d48 100644 --- a/editor/editor_asset_installer.cpp +++ b/editor/editor_asset_installer.cpp @@ -112,7 +112,7 @@ void EditorAssetInstaller::open(const String &p_path, int p_depth) { unzFile pkg = unzOpen2(p_path.utf8().get_data(), &io); if (!pkg) { - error->set_text(TTR("Error opening package file, not in ZIP format.")); + error->set_text(vformat(TTR("Error opening asset file for \"%s\" (not in ZIP format)."), asset_name)); return; } @@ -196,6 +196,8 @@ void EditorAssetInstaller::open(const String &p_path, int p_depth) { root->set_editable(0, true); Map<String, TreeItem *> dir_map; + int num_file_conflicts = 0; + for (Set<String>::Element *E = files_sorted.front(); E; E = E->next()) { String path = E->get(); int depth = p_depth; @@ -254,8 +256,9 @@ void EditorAssetInstaller::open(const String &p_path, int p_depth) { String res_path = "res://" + path; if (FileAccess::exists(res_path)) { + num_file_conflicts += 1; ti->set_custom_color(0, tree->get_theme_color("error_color", "Editor")); - ti->set_tooltip(0, vformat(TTR("%s (Already Exists)"), res_path)); + ti->set_tooltip(0, vformat(TTR("%s (already exists)"), res_path)); ti->set_checked(0, false); } else { ti->set_tooltip(0, res_path); @@ -266,6 +269,13 @@ void EditorAssetInstaller::open(const String &p_path, int p_depth) { status_map[E->get()] = ti; } + + if (num_file_conflicts >= 1) { + asset_contents->set_text(vformat(TTR("Contents of asset \"%s\" - %d file(s) conflict with your project:"), asset_name, num_file_conflicts)); + } else { + asset_contents->set_text(vformat(TTR("Contents of asset \"%s\" - No files conflict with your project:"), asset_name)); + } + popup_centered_ratio(); updating = false; } @@ -276,7 +286,7 @@ void EditorAssetInstaller::ok_pressed() { unzFile pkg = unzOpen2(package_path.utf8().get_data(), &io); if (!pkg) { - error->set_text(TTR("Error opening package file, not in ZIP format.")); + error->set_text(vformat(TTR("Error opening asset file for \"%s\" (not in ZIP format)."), asset_name)); return; } @@ -343,10 +353,10 @@ void EditorAssetInstaller::ok_pressed() { unzClose(pkg); if (failed_files.size()) { - String msg = TTR("The following files failed extraction from package:") + "\n\n"; + String msg = vformat(TTR("The following files failed extraction from asset \"%s\":"), asset_name) + "\n\n"; for (int i = 0; i < failed_files.size(); i++) { if (i > 15) { - msg += "\n" + vformat(TTR("And %s more files."), itos(failed_files.size() - i)); + msg += "\n" + vformat(TTR("(and %s more files)"), itos(failed_files.size() - i)); break; } msg += failed_files[i]; @@ -356,12 +366,20 @@ void EditorAssetInstaller::ok_pressed() { } } else { if (EditorNode::get_singleton() != nullptr) { - EditorNode::get_singleton()->show_warning(TTR("Package installed successfully!"), TTR("Success!")); + EditorNode::get_singleton()->show_warning(vformat(TTR("Asset \"%s\" installed successfully!"), asset_name), TTR("Success!")); } } EditorFileSystem::get_singleton()->scan_changes(); } +void EditorAssetInstaller::set_asset_name(const String &p_asset_name) { + asset_name = p_asset_name; +} + +String EditorAssetInstaller::get_asset_name() const { + return asset_name; +} + void EditorAssetInstaller::_bind_methods() { } @@ -369,14 +387,18 @@ EditorAssetInstaller::EditorAssetInstaller() { VBoxContainer *vb = memnew(VBoxContainer); add_child(vb); + asset_contents = memnew(Label); + vb->add_child(asset_contents); + tree = memnew(Tree); - vb->add_margin_child(TTR("Package Contents:"), tree, true); + tree->set_v_size_flags(Control::SIZE_EXPAND_FILL); tree->connect("item_edited", callable_mp(this, &EditorAssetInstaller::_item_edited)); + vb->add_child(tree); error = memnew(AcceptDialog); add_child(error); get_ok_button()->set_text(TTR("Install")); - set_title(TTR("Package Installer")); + set_title(TTR("Asset Installer")); updating = false; diff --git a/editor/editor_asset_installer.h b/editor/editor_asset_installer.h index d9233a5ce8..9fafe2792a 100644 --- a/editor/editor_asset_installer.h +++ b/editor/editor_asset_installer.h @@ -37,7 +37,9 @@ class EditorAssetInstaller : public ConfirmationDialog { GDCLASS(EditorAssetInstaller, ConfirmationDialog); Tree *tree; + Label *asset_contents; String package_path; + String asset_name; AcceptDialog *error; Map<String, TreeItem *> status_map; bool updating; @@ -51,6 +53,10 @@ protected: public: void open(const String &p_path, int p_depth = 0); + + void set_asset_name(const String &p_asset_name); + String get_asset_name() const; + EditorAssetInstaller(); }; diff --git a/editor/editor_file_dialog.cpp b/editor/editor_file_dialog.cpp index fe4c6f490d..a07b3a7c19 100644 --- a/editor/editor_file_dialog.cpp +++ b/editor/editor_file_dialog.cpp @@ -1510,7 +1510,9 @@ EditorFileDialog::EditorFileDialog() { dir_next->connect("pressed", callable_mp(this, &EditorFileDialog::_go_forward)); dir_up->connect("pressed", callable_mp(this, &EditorFileDialog::_go_up)); - pathhb->add_child(memnew(Label(TTR("Path:")))); + Label *l = memnew(Label(TTR("Path:"))); + l->set_theme_type_variation("HeaderSmall"); + pathhb->add_child(l); drives_container = memnew(HBoxContainer); pathhb->add_child(drives_container); @@ -1591,7 +1593,11 @@ EditorFileDialog::EditorFileDialog() { fav_vb->set_v_size_flags(Control::SIZE_EXPAND_FILL); HBoxContainer *fav_hb = memnew(HBoxContainer); fav_vb->add_child(fav_hb); - fav_hb->add_child(memnew(Label(TTR("Favorites:")))); + + l = memnew(Label(TTR("Favorites:"))); + l->set_theme_type_variation("HeaderSmall"); + fav_hb->add_child(l); + fav_hb->add_spacer(); fav_up = memnew(Button); fav_up->set_flat(true); @@ -1626,7 +1632,10 @@ EditorFileDialog::EditorFileDialog() { VBoxContainer *list_vb = memnew(VBoxContainer); list_vb->set_h_size_flags(Control::SIZE_EXPAND_FILL); - list_vb->add_child(memnew(Label(TTR("Directories & Files:")))); + + l = memnew(Label(TTR("Directories & Files:"))); + l->set_theme_type_variation("HeaderSmall"); + list_vb->add_child(l); preview_hb->add_child(list_vb); // Item (files and folders) list with context menu. @@ -1653,7 +1662,11 @@ EditorFileDialog::EditorFileDialog() { preview_vb->hide(); file_box = memnew(HBoxContainer); - file_box->add_child(memnew(Label(TTR("File:")))); + + l = memnew(Label(TTR("File:"))); + l->set_theme_type_variation("HeaderSmall"); + file_box->add_child(l); + file = memnew(LineEdit); file->set_structured_text_bidi_override(Control::STRUCTURED_TEXT_FILE); file->set_stretch_ratio(4); diff --git a/editor/editor_fonts.cpp b/editor/editor_fonts.cpp index d548196a2d..8968e562c1 100644 --- a/editor/editor_fonts.cpp +++ b/editor/editor_fonts.cpp @@ -319,7 +319,19 @@ void editor_register_fonts(Ref<Theme> p_theme) { p_theme->set_font_size("main_button_font_size", "EditorFonts", default_font_size + 1 * EDSCALE); p_theme->set_font("main_button_font", "EditorFonts", df_bold); - p_theme->set_font("font", "Label", df_bold); + p_theme->set_font("font", "Label", df); + + p_theme->set_type_variation("HeaderSmall", "Label"); + p_theme->set_font("font", "HeaderSmall", df_bold); + p_theme->set_font_size("font_size", "HeaderSmall", default_font_size); + + p_theme->set_type_variation("HeaderMedium", "Label"); + p_theme->set_font("font", "HeaderMedium", df_bold); + p_theme->set_font_size("font_size", "HeaderMedium", default_font_size + 1 * EDSCALE); + + p_theme->set_type_variation("HeaderLarge", "Label"); + p_theme->set_font("font", "HeaderLarge", df_bold); + p_theme->set_font_size("font_size", "HeaderLarge", default_font_size + 3 * EDSCALE); // Documentation fonts MAKE_SOURCE_FONT(df_code); diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index e7c0b02ae2..f09a6f678a 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -31,7 +31,6 @@ #include "editor_node.h" #include "core/config/project_settings.h" -#include "core/core_bind.h" #include "core/extension/native_extension_manager.h" #include "core/input/input.h" #include "core/io/config_file.h" @@ -168,6 +167,7 @@ #include "editor/plugins/sprite_2d_editor_plugin.h" #include "editor/plugins/sprite_frames_editor_plugin.h" #include "editor/plugins/style_box_editor_plugin.h" +#include "editor/plugins/sub_viewport_preview_editor_plugin.h" #include "editor/plugins/text_editor.h" #include "editor/plugins/texture_3d_editor_plugin.h" #include "editor/plugins/texture_editor_plugin.h" @@ -2713,7 +2713,7 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) { } save_confirmation->get_ok_button()->set_text(TTR("Save & Quit")); - save_confirmation->set_text((p_option == FILE_QUIT ? TTR("Save changes to the following scene(s) before quitting?") : TTR("Save changes the following scene(s) before opening Project Manager?")) + unsaved_scenes); + save_confirmation->set_text((p_option == FILE_QUIT ? TTR("Save changes to the following scene(s) before quitting?") : TTR("Save changes to the following scene(s) before opening Project Manager?")) + unsaved_scenes); save_confirmation->popup_centered(); } } @@ -3736,46 +3736,46 @@ void EditorNode::register_editor_types() { ResourceLoader::set_timestamp_on_load(true); ResourceSaver::set_timestamp_on_save(true); - ClassDB::register_class<EditorPaths>(); - ClassDB::register_class<EditorPlugin>(); - ClassDB::register_class<EditorTranslationParserPlugin>(); - ClassDB::register_class<EditorImportPlugin>(); - ClassDB::register_class<EditorScript>(); - ClassDB::register_class<EditorSelection>(); - ClassDB::register_class<EditorFileDialog>(); - ClassDB::register_virtual_class<EditorSettings>(); - ClassDB::register_class<EditorNode3DGizmo>(); - ClassDB::register_class<EditorNode3DGizmoPlugin>(); - ClassDB::register_virtual_class<EditorResourcePreview>(); - ClassDB::register_class<EditorResourcePreviewGenerator>(); - ClassDB::register_virtual_class<EditorFileSystem>(); - ClassDB::register_class<EditorFileSystemDirectory>(); - ClassDB::register_class<EditorVCSInterface>(); - ClassDB::register_virtual_class<ScriptEditor>(); - ClassDB::register_virtual_class<ScriptEditorBase>(); - ClassDB::register_class<EditorSyntaxHighlighter>(); - ClassDB::register_virtual_class<EditorInterface>(); - ClassDB::register_class<EditorExportPlugin>(); - ClassDB::register_class<EditorResourceConversionPlugin>(); - ClassDB::register_class<EditorSceneImporter>(); - ClassDB::register_class<EditorInspector>(); - ClassDB::register_class<EditorInspectorPlugin>(); - ClassDB::register_class<EditorProperty>(); - ClassDB::register_class<AnimationTrackEditPlugin>(); - ClassDB::register_class<ScriptCreateDialog>(); - ClassDB::register_class<EditorFeatureProfile>(); - ClassDB::register_class<EditorSpinSlider>(); - ClassDB::register_class<EditorResourcePicker>(); - ClassDB::register_class<EditorScriptPicker>(); - ClassDB::register_class<EditorSceneImporterMesh>(); - ClassDB::register_class<EditorSceneImporterMeshNode3D>(); - - ClassDB::register_virtual_class<FileSystemDock>(); + GDREGISTER_CLASS(EditorPaths); + GDREGISTER_CLASS(EditorPlugin); + GDREGISTER_CLASS(EditorTranslationParserPlugin); + GDREGISTER_CLASS(EditorImportPlugin); + GDREGISTER_CLASS(EditorScript); + GDREGISTER_CLASS(EditorSelection); + GDREGISTER_CLASS(EditorFileDialog); + GDREGISTER_VIRTUAL_CLASS(EditorSettings); + GDREGISTER_CLASS(EditorNode3DGizmo); + GDREGISTER_CLASS(EditorNode3DGizmoPlugin); + GDREGISTER_VIRTUAL_CLASS(EditorResourcePreview); + GDREGISTER_CLASS(EditorResourcePreviewGenerator); + GDREGISTER_VIRTUAL_CLASS(EditorFileSystem); + GDREGISTER_CLASS(EditorFileSystemDirectory); + GDREGISTER_CLASS(EditorVCSInterface); + GDREGISTER_VIRTUAL_CLASS(ScriptEditor); + GDREGISTER_VIRTUAL_CLASS(ScriptEditorBase); + GDREGISTER_CLASS(EditorSyntaxHighlighter); + GDREGISTER_VIRTUAL_CLASS(EditorInterface); + GDREGISTER_CLASS(EditorExportPlugin); + GDREGISTER_CLASS(EditorResourceConversionPlugin); + GDREGISTER_CLASS(EditorSceneImporter); + GDREGISTER_CLASS(EditorInspector); + GDREGISTER_CLASS(EditorInspectorPlugin); + GDREGISTER_CLASS(EditorProperty); + GDREGISTER_CLASS(AnimationTrackEditPlugin); + GDREGISTER_CLASS(ScriptCreateDialog); + GDREGISTER_CLASS(EditorFeatureProfile); + GDREGISTER_CLASS(EditorSpinSlider); + GDREGISTER_CLASS(EditorResourcePicker); + GDREGISTER_CLASS(EditorScriptPicker); + GDREGISTER_CLASS(EditorSceneImporterMesh); + GDREGISTER_CLASS(EditorSceneImporterMeshNode3D); + + GDREGISTER_VIRTUAL_CLASS(FileSystemDock); // FIXME: Is this stuff obsolete, or should it be ported to new APIs? - ClassDB::register_class<EditorScenePostImport>(); + GDREGISTER_CLASS(EditorScenePostImport); //ClassDB::register_type<EditorImportExport>(); - ClassDB::register_class<EditorDebuggerPlugin>(); + GDREGISTER_CLASS(EditorDebuggerPlugin); NativeExtensionManager::get_singleton()->initialize_extensions(NativeExtension::INITIALIZATION_LEVEL_EDITOR); } @@ -6841,6 +6841,7 @@ EditorNode::EditorNode() { add_editor_plugin(memnew(MaterialEditorPlugin(this))); add_editor_plugin(memnew(GPUParticlesCollisionSDFEditorPlugin(this))); add_editor_plugin(memnew(InputEventEditorPlugin(this))); + add_editor_plugin(memnew(SubViewportPreviewEditorPlugin(this))); for (int i = 0; i < EditorPlugins::get_plugin_count(); i++) { add_editor_plugin(EditorPlugins::create(i, this)); diff --git a/editor/editor_plugin_settings.cpp b/editor/editor_plugin_settings.cpp index b4e5a58c21..a16a2f327e 100644 --- a/editor/editor_plugin_settings.cpp +++ b/editor/editor_plugin_settings.cpp @@ -192,7 +192,9 @@ EditorPluginSettings::EditorPluginSettings() { add_child(plugin_config_dialog); HBoxContainer *title_hb = memnew(HBoxContainer); - title_hb->add_child(memnew(Label(TTR("Installed Plugins:")))); + Label *l = memnew(Label(TTR("Installed Plugins:"))); + l->set_theme_type_variation("HeaderSmall"); + title_hb->add_child(l); title_hb->add_spacer(); create_plugin = memnew(Button(TTR("Create"))); create_plugin->connect("pressed", callable_mp(this, &EditorPluginSettings::_create_clicked)); diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp index 84105f0cb7..ebd8d6427b 100644 --- a/editor/editor_properties.cpp +++ b/editor/editor_properties.cpp @@ -180,44 +180,150 @@ EditorPropertyMultilineText::EditorPropertyMultilineText() { ///////////////////// TEXT ENUM ///////////////////////// -void EditorPropertyTextEnum::_option_selected(int p_which) { +void EditorPropertyTextEnum::_emit_changed_value(String p_string) { if (string_name) { - emit_changed(get_edited_property(), StringName(options->get_item_text(p_which))); + emit_changed(get_edited_property(), StringName(p_string)); } else { - emit_changed(get_edited_property(), options->get_item_text(p_which)); + emit_changed(get_edited_property(), p_string); } } +void EditorPropertyTextEnum::_option_selected(int p_which) { + _emit_changed_value(option_button->get_item_text(p_which)); +} + +void EditorPropertyTextEnum::_edit_custom_value() { + default_layout->hide(); + edit_custom_layout->show(); + custom_value_edit->grab_focus(); +} + +void EditorPropertyTextEnum::_custom_value_submitted(String p_value) { + edit_custom_layout->hide(); + default_layout->show(); + + _emit_changed_value(p_value.strip_edges()); +} + +void EditorPropertyTextEnum::_custom_value_accepted() { + String new_value = custom_value_edit->get_text().strip_edges(); + _custom_value_submitted(new_value); +} + +void EditorPropertyTextEnum::_custom_value_cancelled() { + custom_value_edit->set_text(get_edited_object()->get(get_edited_property())); + + edit_custom_layout->hide(); + default_layout->show(); +} + void EditorPropertyTextEnum::update_property() { - String which = get_edited_object()->get(get_edited_property()); - for (int i = 0; i < options->get_item_count(); i++) { - String t = options->get_item_text(i); - if (t == which) { - options->select(i); - return; + String current_value = get_edited_object()->get(get_edited_property()); + int default_option = options.find(current_value); + + // The list can change in the loose mode. + if (loose_mode) { + custom_value_edit->set_text(current_value); + option_button->clear(); + + // Manually entered value. + if (default_option < 0 && !current_value.is_empty()) { + option_button->add_item(current_value, options.size() + 1001); + option_button->select(0); + + option_button->add_separator(); } + + // Add an explicit empty value for clearing the property. + option_button->add_item("", options.size() + 1000); + + for (int i = 0; i < options.size(); i++) { + option_button->add_item(options[i], i); + if (options[i] == current_value) { + option_button->select(option_button->get_item_count() - 1); + } + } + } else { + option_button->select(default_option); } } -void EditorPropertyTextEnum::setup(const Vector<String> &p_options, bool p_string_name) { +void EditorPropertyTextEnum::setup(const Vector<String> &p_options, bool p_string_name, bool p_loose_mode) { + string_name = p_string_name; + loose_mode = p_loose_mode; + + options.clear(); + + if (loose_mode) { + // Add an explicit empty value for clearing the property in the loose mode. + option_button->add_item("", options.size() + 1000); + } + for (int i = 0; i < p_options.size(); i++) { - options->add_item(p_options[i], i); + options.append(p_options[i]); + option_button->add_item(p_options[i], i); + } + + if (loose_mode) { + edit_button->show(); } - string_name = p_string_name; } void EditorPropertyTextEnum::_bind_methods() { } -EditorPropertyTextEnum::EditorPropertyTextEnum() { - options = memnew(OptionButton); - options->set_clip_text(true); - options->set_flat(true); - string_name = false; +void EditorPropertyTextEnum::_notification(int p_what) { + switch (p_what) { + case NOTIFICATION_ENTER_TREE: + case NOTIFICATION_THEME_CHANGED: + edit_button->set_icon(get_theme_icon("Edit", "EditorIcons")); + accept_button->set_icon(get_theme_icon("ImportCheck", "EditorIcons")); + cancel_button->set_icon(get_theme_icon("ImportFail", "EditorIcons")); + break; + } +} - add_child(options); - add_focusable(options); - options->connect("item_selected", callable_mp(this, &EditorPropertyTextEnum::_option_selected)); +EditorPropertyTextEnum::EditorPropertyTextEnum() { + default_layout = memnew(HBoxContainer); + add_child(default_layout); + + edit_custom_layout = memnew(HBoxContainer); + edit_custom_layout->hide(); + add_child(edit_custom_layout); + + option_button = memnew(OptionButton); + option_button->set_h_size_flags(SIZE_EXPAND_FILL); + option_button->set_clip_text(true); + option_button->set_flat(true); + default_layout->add_child(option_button); + option_button->connect("item_selected", callable_mp(this, &EditorPropertyTextEnum::_option_selected)); + + edit_button = memnew(Button); + edit_button->set_flat(true); + edit_button->hide(); + default_layout->add_child(edit_button); + edit_button->connect("pressed", callable_mp(this, &EditorPropertyTextEnum::_edit_custom_value)); + + custom_value_edit = memnew(LineEdit); + custom_value_edit->set_h_size_flags(SIZE_EXPAND_FILL); + edit_custom_layout->add_child(custom_value_edit); + custom_value_edit->connect("text_submitted", callable_mp(this, &EditorPropertyTextEnum::_custom_value_submitted)); + + accept_button = memnew(Button); + accept_button->set_flat(true); + edit_custom_layout->add_child(accept_button); + accept_button->connect("pressed", callable_mp(this, &EditorPropertyTextEnum::_custom_value_accepted)); + + cancel_button = memnew(Button); + cancel_button->set_flat(true); + edit_custom_layout->add_child(cancel_button); + cancel_button->connect("pressed", callable_mp(this, &EditorPropertyTextEnum::_custom_value_cancelled)); + + add_focusable(option_button); + add_focusable(edit_button); + add_focusable(custom_value_edit); + add_focusable(accept_button); + add_focusable(cancel_button); } ///////////////////// PATH ///////////////////////// @@ -2902,10 +3008,10 @@ EditorProperty *EditorInspectorDefaultPlugin::get_editor_for_property(Object *p_ } } break; case Variant::STRING: { - if (p_hint == PROPERTY_HINT_ENUM) { + if (p_hint == PROPERTY_HINT_ENUM || p_hint == PROPERTY_HINT_ENUM_SUGGESTION) { EditorPropertyTextEnum *editor = memnew(EditorPropertyTextEnum); - Vector<String> options = p_hint_text.split(","); - editor->setup(options); + Vector<String> options = p_hint_text.split(",", false); + editor->setup(options, false, (p_hint == PROPERTY_HINT_ENUM_SUGGESTION)); return editor; } else if (p_hint == PROPERTY_HINT_MULTILINE_TEXT) { EditorPropertyMultilineText *editor = memnew(EditorPropertyMultilineText); @@ -3063,10 +3169,10 @@ EditorProperty *EditorInspectorDefaultPlugin::get_editor_for_property(Object *p_ return editor; } break; case Variant::STRING_NAME: { - if (p_hint == PROPERTY_HINT_ENUM) { + if (p_hint == PROPERTY_HINT_ENUM || p_hint == PROPERTY_HINT_ENUM_SUGGESTION) { EditorPropertyTextEnum *editor = memnew(EditorPropertyTextEnum); - Vector<String> options = p_hint_text.split(","); - editor->setup(options, true); + Vector<String> options = p_hint_text.split(",", false); + editor->setup(options, true, (p_hint == PROPERTY_HINT_ENUM_SUGGESTION)); return editor; } else { EditorPropertyText *editor = memnew(EditorPropertyText); diff --git a/editor/editor_properties.h b/editor/editor_properties.h index d880017cc1..0cb21bb391 100644 --- a/editor/editor_properties.h +++ b/editor/editor_properties.h @@ -91,16 +91,35 @@ public: class EditorPropertyTextEnum : public EditorProperty { GDCLASS(EditorPropertyTextEnum, EditorProperty); - OptionButton *options; + HBoxContainer *default_layout; + HBoxContainer *edit_custom_layout; + + OptionButton *option_button; + Button *edit_button; + + LineEdit *custom_value_edit; + Button *accept_button; + Button *cancel_button; + + Vector<String> options; + bool string_name = false; + bool loose_mode = false; + + void _emit_changed_value(String p_string); void _option_selected(int p_which); - bool string_name; + + void _edit_custom_value(); + void _custom_value_submitted(String p_value); + void _custom_value_accepted(); + void _custom_value_cancelled(); protected: static void _bind_methods(); + void _notification(int p_what); public: - void setup(const Vector<String> &p_options, bool p_string_name = false); + void setup(const Vector<String> &p_options, bool p_string_name = false, bool p_loose_mode = false); virtual void update_property() override; EditorPropertyTextEnum(); }; diff --git a/editor/editor_properties_array_dict.cpp b/editor/editor_properties_array_dict.cpp index 3216728be1..8b67b67571 100644 --- a/editor/editor_properties_array_dict.cpp +++ b/editor/editor_properties_array_dict.cpp @@ -30,16 +30,18 @@ #include "editor_properties_array_dict.h" +#include "core/input/input.h" #include "core/io/marshalls.h" +#include "editor/editor_node.h" #include "editor/editor_scale.h" #include "editor_properties.h" bool EditorPropertyArrayObject::_set(const StringName &p_name, const Variant &p_value) { - String pn = p_name; + String name = p_name; - if (pn.begins_with("indices")) { - int idx = pn.get_slicec('/', 1).to_int(); - array.set(idx, p_value); + if (name.begins_with("indices")) { + int index = name.get_slicec('/', 1).to_int(); + array.set(index, p_value); return true; } @@ -47,12 +49,12 @@ bool EditorPropertyArrayObject::_set(const StringName &p_name, const Variant &p_ } bool EditorPropertyArrayObject::_get(const StringName &p_name, Variant &r_ret) const { - String pn = p_name; + String name = p_name; - if (pn.begins_with("indices")) { - int idx = pn.get_slicec('/', 1).to_int(); + if (name.begins_with("indices")) { + int index = name.get_slicec('/', 1).to_int(); bool valid; - r_ret = array.get(idx, &valid); + r_ret = array.get(index, &valid); if (r_ret.get_type() == Variant::OBJECT && Object::cast_to<EncodedObjectAsID>(r_ret)) { r_ret = Object::cast_to<EncodedObjectAsID>(r_ret)->get_object_id(); } @@ -77,21 +79,21 @@ EditorPropertyArrayObject::EditorPropertyArrayObject() { /////////////////// bool EditorPropertyDictionaryObject::_set(const StringName &p_name, const Variant &p_value) { - String pn = p_name; + String name = p_name; - if (pn == "new_item_key") { + if (name == "new_item_key") { new_item_key = p_value; return true; } - if (pn == "new_item_value") { + if (name == "new_item_value") { new_item_value = p_value; return true; } - if (pn.begins_with("indices")) { - int idx = pn.get_slicec('/', 1).to_int(); - Variant key = dict.get_key_at_index(idx); + if (name.begins_with("indices")) { + int index = name.get_slicec('/', 1).to_int(); + Variant key = dict.get_key_at_index(index); dict[key] = p_value; return true; } @@ -100,21 +102,21 @@ bool EditorPropertyDictionaryObject::_set(const StringName &p_name, const Varian } bool EditorPropertyDictionaryObject::_get(const StringName &p_name, Variant &r_ret) const { - String pn = p_name; + String name = p_name; - if (pn == "new_item_key") { + if (name == "new_item_key") { r_ret = new_item_key; return true; } - if (pn == "new_item_value") { + if (name == "new_item_value") { r_ret = new_item_value; return true; } - if (pn.begins_with("indices")) { - int idx = pn.get_slicec('/', 1).to_int(); - Variant key = dict.get_key_at_index(idx); + if (name.begins_with("indices")) { + int index = name.get_slicec('/', 1).to_int(); + Variant key = dict.get_key_at_index(index); r_ret = dict[key]; if (r_ret.get_type() == Variant::OBJECT && Object::cast_to<EncodedObjectAsID>(r_ret)) { r_ret = Object::cast_to<EncodedObjectAsID>(r_ret)->get_object_id(); @@ -157,13 +159,13 @@ EditorPropertyDictionaryObject::EditorPropertyDictionaryObject() { void EditorPropertyArray::_property_changed(const String &p_property, Variant p_value, const String &p_name, bool p_changing) { if (p_property.begins_with("indices")) { - int idx = p_property.get_slice("/", 1).to_int(); + int index = p_property.get_slice("/", 1).to_int(); Variant array = object->get_array(); - array.set(idx, p_value); + array.set(index, p_value); emit_changed(get_edited_property(), array, "", true); if (array.get_type() == Variant::ARRAY) { - array = array.call("duplicate"); //dupe, so undo/redo works better + array = array.call("duplicate"); // Duplicate, so undo/redo works better. } object->set_array(array); } @@ -171,7 +173,7 @@ void EditorPropertyArray::_property_changed(const String &p_property, Variant p_ void EditorPropertyArray::_change_type(Object *p_button, int p_index) { Button *button = Object::cast_to<Button>(p_button); - changing_type_idx = p_index; + changing_type_index = p_index; Rect2 rect = button->get_screen_rect(); change_type->set_as_minsize(); change_type->set_position(rect.position + rect.size - Vector2(change_type->get_contents_minimum_size().x, 0)); @@ -180,7 +182,7 @@ void EditorPropertyArray::_change_type(Object *p_button, int p_index) { void EditorPropertyArray::_change_type_menu(int p_index) { if (p_index == Variant::VARIANT_MAX) { - _remove_pressed(changing_type_idx); + _remove_pressed(changing_type_index); return; } @@ -188,12 +190,12 @@ void EditorPropertyArray::_change_type_menu(int p_index) { Callable::CallError ce; Variant::construct(Variant::Type(p_index), value, nullptr, 0, ce); Variant array = object->get_array(); - array.set(changing_type_idx, value); + array.set(changing_type_index, value); emit_changed(get_edited_property(), array, "", true); if (array.get_type() == Variant::ARRAY) { - array = array.call("duplicate"); //dupe, so undo/redo works better + array = array.call("duplicate"); // Duplicate, so undo/redo works better. } object->set_array(array); @@ -213,7 +215,7 @@ void EditorPropertyArray::update_property() { arrtype = "Array"; } break; - // arrays + // Arrays. case Variant::PACKED_BYTE_ARRAY: { arrtype = "PackedByteArray"; } break; @@ -256,7 +258,12 @@ void EditorPropertyArray::update_property() { return; } - edit->set_text(arrtype + " (size " + itos(array.call("size")) + ")"); + int size = array.call("size"); + int pages = MAX(0, size - 1) / page_length + 1; + page_index = MIN(page_index, pages - 1); + int offset = page_index * page_length; + + edit->set_text(arrtype + " (size " + itos(size) + ")"); bool unfolded = get_edited_object()->editor_is_section_unfolded(get_edited_property()); if (edit->is_pressed() != unfolded) { @@ -270,50 +277,50 @@ void EditorPropertyArray::update_property() { vbox = memnew(VBoxContainer); add_child(vbox); set_bottom_editor(vbox); - HBoxContainer *hbc = memnew(HBoxContainer); - vbox->add_child(hbc); + + HBoxContainer *hbox = memnew(HBoxContainer); + vbox->add_child(hbox); + Label *label = memnew(Label(TTR("Size: "))); label->set_h_size_flags(SIZE_EXPAND_FILL); - hbc->add_child(label); - length = memnew(EditorSpinSlider); - length->set_step(1); - length->set_max(1000000); - length->set_h_size_flags(SIZE_EXPAND_FILL); - hbc->add_child(length); - length->connect("value_changed", callable_mp(this, &EditorPropertyArray::_length_changed)); - - page_hb = memnew(HBoxContainer); - vbox->add_child(page_hb); - label = memnew(Label(TTR("Page: "))); - label->set_h_size_flags(SIZE_EXPAND_FILL); - page_hb->add_child(label); - page = memnew(EditorSpinSlider); - page->set_step(1); - page_hb->add_child(page); - page->set_h_size_flags(SIZE_EXPAND_FILL); - page->connect("value_changed", callable_mp(this, &EditorPropertyArray::_page_changed)); - } else { - //bye bye children of the box - while (vbox->get_child_count() > 2) { - vbox->get_child(2)->queue_delete(); // button still needed after pressed is called - vbox->remove_child(vbox->get_child(2)); - } - } + hbox->add_child(label); - int len = array.call("size"); + size_slider = memnew(EditorSpinSlider); + size_slider->set_step(1); + size_slider->set_max(1000000); + size_slider->set_h_size_flags(SIZE_EXPAND_FILL); + size_slider->connect("value_changed", callable_mp(this, &EditorPropertyArray::_length_changed)); + hbox->add_child(size_slider); - length->set_value(len); + page_hbox = memnew(HBoxContainer); + vbox->add_child(page_hbox); - int pages = MAX(0, len - 1) / page_len + 1; + label = memnew(Label(TTR("Page: "))); + label->set_h_size_flags(SIZE_EXPAND_FILL); + page_hbox->add_child(label); - page->set_max(pages); - page_idx = MIN(page_idx, pages - 1); - page->set_value(page_idx); - page_hb->set_visible(pages > 1); + page_slider = memnew(EditorSpinSlider); + page_slider->set_step(1); + page_slider->set_h_size_flags(SIZE_EXPAND_FILL); + page_slider->connect("value_changed", callable_mp(this, &EditorPropertyArray::_page_changed)); + page_hbox->add_child(page_slider); + } else { + // Bye bye children of the box. + for (int i = vbox->get_child_count() - 1; i >= 2; i--) { + Node *child = vbox->get_child(i); + if (child == reorder_selected_element_hbox) { + continue; // Don't remove the property that the user is moving. + } - int offset = page_idx * page_len; + child->queue_delete(); // Button still needed after pressed is called. + vbox->remove_child(child); + } + } - int amount = MIN(len - offset, page_len); + size_slider->set_value(size); + page_slider->set_max(pages); + page_slider->set_value(page_index); + page_hbox->set_visible(pages > 1); if (array.get_type() == Variant::ARRAY) { array = array.call("duplicate"); @@ -321,7 +328,31 @@ void EditorPropertyArray::update_property() { object->set_array(array); + int amount = MIN(size - offset, page_length); for (int i = 0; i < amount; i++) { + bool reorder_is_from_current_page = reorder_from_index / page_length == page_index; + if (reorder_is_from_current_page && i == reorder_from_index % page_length) { + // Don't duplicate the property that the user is moving. + continue; + } + if (!reorder_is_from_current_page && i == reorder_to_index % page_length) { + // Don't create the property the moving property will take the place of, + // e.g. (if page_length == 20) don't create element 20 if dragging an item from + // the first page to the second page because element 20 would become element 19. + continue; + } + + HBoxContainer *hbox = memnew(HBoxContainer); + vbox->add_child(hbox); + + Button *reorder_button = memnew(Button); + reorder_button->set_icon(get_theme_icon("TripleBar", "EditorIcons")); + reorder_button->set_default_cursor_shape(Control::CURSOR_MOVE); + reorder_button->connect("gui_input", callable_mp(this, &EditorPropertyArray::_reorder_button_gui_input)); + reorder_button->connect("button_down", callable_mp(this, &EditorPropertyArray::_reorder_button_down), varray(i + offset)); + reorder_button->connect("button_up", callable_mp(this, &EditorPropertyArray::_reorder_button_up)); + hbox->add_child(reorder_button); + String prop_name = "indices/" + itos(i + offset); EditorProperty *prop = nullptr; @@ -346,29 +377,29 @@ void EditorPropertyArray::update_property() { prop->connect("property_changed", callable_mp(this, &EditorPropertyArray::_property_changed)); prop->connect("object_id_selected", callable_mp(this, &EditorPropertyArray::_object_id_selected)); prop->set_h_size_flags(SIZE_EXPAND_FILL); - - HBoxContainer *hb = memnew(HBoxContainer); - - vbox->add_child(hb); - hb->add_child(prop); + hbox->add_child(prop); bool is_untyped_array = array.get_type() == Variant::ARRAY && subtype == Variant::NIL; if (is_untyped_array) { Button *edit = memnew(Button); edit->set_icon(get_theme_icon("Edit", "EditorIcons")); - hb->add_child(edit); + hbox->add_child(edit); edit->connect("pressed", callable_mp(this, &EditorPropertyArray::_change_type), varray(edit, i + offset)); } else { Button *remove = memnew(Button); remove->set_icon(get_theme_icon("Remove", "EditorIcons")); remove->connect("pressed", callable_mp(this, &EditorPropertyArray::_remove_pressed), varray(i + offset)); - hb->add_child(remove); + hbox->add_child(remove); } prop->update_property(); } + if (reorder_to_index % page_length > 0) { + vbox->move_child(vbox->get_child(2), reorder_to_index % page_length + 2); + } + updating = false; } else { @@ -384,12 +415,7 @@ void EditorPropertyArray::_remove_pressed(int p_index) { Variant array = object->get_array(); array.call("remove", p_index); - if (array.get_type() == Variant::ARRAY) { - array = array.call("duplicate"); - } - emit_changed(get_edited_property(), array, "", false); - object->set_array(array); update_property(); } @@ -414,14 +440,14 @@ bool EditorPropertyArray::_is_drop_valid(const Dictionary &p_drag_data) const { for (int j = 0; j < allowed_type.get_slice_count(","); j++) { String at = allowed_type.get_slice(",", j).strip_edges(); - // Fail if one of the files is not of allowed type + // Fail if one of the files is not of allowed type. if (!ClassDB::is_parent_class(ftype, at)) { return false; } } } - // If no files fail, drop is valid + // If no files fail, drop is valid. return true; } @@ -442,13 +468,13 @@ void EditorPropertyArray::drop_data_fw(const Point2 &p_point, const Variant &p_d Variant array = object->get_array(); - // Handle the case where array is not initialised yet + // Handle the case where array is not initialised yet. if (!array.is_array()) { Callable::CallError ce; Variant::construct(array_type, array, nullptr, 0, ce); } - // Loop the file array and add to existing array + // Loop the file array and add to existing array. for (int i = 0; i < files.size(); i++) { String file = files[i]; @@ -504,7 +530,7 @@ void EditorPropertyArray::_page_changed(double p_page) { if (updating) { return; } - page_idx = p_page; + page_index = p_page; update_property(); } @@ -530,10 +556,10 @@ void EditorPropertyArray::_length_changed(double p_page) { } } } - array = array.call("duplicate"); //dupe, so undo/redo works better + array = array.call("duplicate"); // Duplicate, so undo/redo works better. } else { int size = array.call("size"); - // Pool*Array don't initialize their elements, have to do it manually + // Pool*Array don't initialize their elements, have to do it manually. for (int i = previous_size; i < size; i++) { Callable::CallError ce; Variant r; @@ -551,7 +577,7 @@ void EditorPropertyArray::setup(Variant::Type p_array_type, const String &p_hint array_type = p_array_type; // The format of p_hint_string is: - // subType/subTypeHint:nextSubtype ... etc + // subType/subTypeHint:nextSubtype ... etc. if (array_type == Variant::ARRAY && !p_hint_string.is_empty()) { int hint_subtype_separator = p_hint_string.find(":"); if (hint_subtype_separator >= 0) { @@ -568,6 +594,73 @@ void EditorPropertyArray::setup(Variant::Type p_array_type, const String &p_hint } } +void EditorPropertyArray::_reorder_button_gui_input(const Ref<InputEvent> &p_event) { + if (reorder_from_index < 0) { + return; + } + + Ref<InputEventMouseMotion> mm = p_event; + if (mm.is_valid()) { + Variant array = object->get_array(); + int size = array.call("size"); + + if ((reorder_to_index == 0 && mm->get_relative().y < 0.0f) || (reorder_to_index == size - 1 && mm->get_relative().y > 0.0f)) { + return; + } + + reorder_mouse_y_delta += mm->get_relative().y; + float required_y_distance = 20.0f * EDSCALE; + if (ABS(reorder_mouse_y_delta) > required_y_distance) { + int direction = reorder_mouse_y_delta > 0.0f ? 1 : -1; + reorder_mouse_y_delta -= required_y_distance * direction; + + reorder_to_index += direction; + if ((direction < 0 && reorder_to_index % page_length == page_length - 1) || (direction > 0 && reorder_to_index % page_length == 0)) { + // Automatically move to the next/previous page. + page_slider->set_value(page_index + direction); + } + vbox->move_child(reorder_selected_element_hbox, reorder_to_index % page_length + 2); + // Ensure the moving element is visible. + EditorNode::get_singleton()->get_inspector()->ensure_control_visible(reorder_selected_element_hbox); + } + } +} + +void EditorPropertyArray::_reorder_button_down(int p_index) { + reorder_from_index = p_index; + reorder_to_index = p_index; + reorder_selected_element_hbox = Object::cast_to<HBoxContainer>(vbox->get_child(p_index % page_length + 2)); + reorder_selected_button = Object::cast_to<Button>(reorder_selected_element_hbox->get_child(0)); + // Ideally it'd to be able to show the mouse but I had issues with + // Control's `mouse_exit()`/`mouse_entered()` signals not getting called. + Input::get_singleton()->set_mouse_mode(Input::MOUSE_MODE_CAPTURED); +} + +void EditorPropertyArray::_reorder_button_up() { + if (reorder_from_index != reorder_to_index) { + // Move the element. + Variant array = object->get_array(); + + Variant value_to_move = array.get(reorder_from_index); + array.call("remove", reorder_from_index); + array.call("insert", reorder_to_index, value_to_move); + + emit_changed(get_edited_property(), array, "", false); + object->set_array(array); + update_property(); + } + + reorder_from_index = -1; + reorder_to_index = -1; + reorder_mouse_y_delta = 0.0f; + + Input::get_singleton()->set_mouse_mode(Input::MOUSE_MODE_VISIBLE); + reorder_selected_button->warp_mouse(reorder_selected_button->get_size() / 2.0f); + + reorder_selected_element_hbox = nullptr; + reorder_selected_button = nullptr; +} + void EditorPropertyArray::_bind_methods() { ClassDB::bind_method(D_METHOD("_can_drop_data_fw"), &EditorPropertyArray::can_drop_data_fw); ClassDB::bind_method(D_METHOD("_drop_data_fw"), &EditorPropertyArray::drop_data_fw); @@ -575,7 +668,7 @@ void EditorPropertyArray::_bind_methods() { EditorPropertyArray::EditorPropertyArray() { object.instantiate(); - page_len = int(EDITOR_GET("interface/inspector/max_array_dictionary_items_per_page")); + page_length = int(EDITOR_GET("interface/inspector/max_array_dictionary_items_per_page")); edit = memnew(Button); edit->set_h_size_flags(SIZE_EXPAND_FILL); edit->set_clip_text(true); @@ -586,8 +679,8 @@ EditorPropertyArray::EditorPropertyArray() { add_child(edit); add_focusable(edit); vbox = nullptr; - page = nullptr; - length = nullptr; + page_slider = nullptr; + size_slider = nullptr; updating = false; change_type = memnew(PopupMenu); add_child(change_type); @@ -599,7 +692,7 @@ EditorPropertyArray::EditorPropertyArray() { } change_type->add_separator(); change_type->add_item(TTR("Remove Item"), Variant::VARIANT_MAX); - changing_type_idx = -1; + changing_type_index = -1; subtype = Variant::NIL; subtype_hint = PROPERTY_HINT_NONE; @@ -616,14 +709,14 @@ void EditorPropertyDictionary::_property_changed(const String &p_property, Varia } else if (p_property == "new_item_value") { object->set_new_item_value(p_value); } else if (p_property.begins_with("indices")) { - int idx = p_property.get_slice("/", 1).to_int(); + int index = p_property.get_slice("/", 1).to_int(); Dictionary dict = object->get_dict(); - Variant key = dict.get_key_at_index(idx); + Variant key = dict.get_key_at_index(index); dict[key] = p_value; emit_changed(get_edited_property(), dict, "", true); - dict = dict.duplicate(); //dupe, so undo/redo works better + dict = dict.duplicate(); // Duplicate, so undo/redo works better\. object->set_dict(dict); } } @@ -635,7 +728,7 @@ void EditorPropertyDictionary::_change_type(Object *p_button, int p_index) { change_type->set_as_minsize(); change_type->set_position(rect.position + rect.size - Vector2(change_type->get_contents_minimum_size().x, 0)); change_type->popup(); - changing_type_idx = p_index; + changing_type_index = p_index; } void EditorPropertyDictionary::_add_key_value() { @@ -652,17 +745,17 @@ void EditorPropertyDictionary::_add_key_value() { emit_changed(get_edited_property(), dict, "", false); - dict = dict.duplicate(); //dupe, so undo/redo works better + dict = dict.duplicate(); // Duplicate, so undo/redo works better. object->set_dict(dict); update_property(); } void EditorPropertyDictionary::_change_type_menu(int p_index) { - if (changing_type_idx < 0) { + if (changing_type_index < 0) { Variant value; Callable::CallError ce; Variant::construct(Variant::Type(p_index), value, nullptr, 0, ce); - if (changing_type_idx == -1) { + if (changing_type_index == -1) { object->set_new_item_key(value); } else { object->set_new_item_value(value); @@ -677,16 +770,16 @@ void EditorPropertyDictionary::_change_type_menu(int p_index) { Variant value; Callable::CallError ce; Variant::construct(Variant::Type(p_index), value, nullptr, 0, ce); - Variant key = dict.get_key_at_index(changing_type_idx); + Variant key = dict.get_key_at_index(changing_type_index); dict[key] = value; } else { - Variant key = dict.get_key_at_index(changing_type_idx); + Variant key = dict.get_key_at_index(changing_type_index); dict.erase(key); } emit_changed(get_edited_property(), dict, "", false); - dict = dict.duplicate(); //dupe, so undo/redo works better + dict = dict.duplicate(); // Duplicate, so undo/redo works better\. object->set_dict(dict); update_property(); } @@ -695,7 +788,7 @@ void EditorPropertyDictionary::update_property() { Variant updated_val = get_edited_object()->get(get_edited_property()); if (updated_val.get_type() == Variant::NIL) { - edit->set_text("Dictionary (Nil)"); //This provides symmetry with the array property. + edit->set_text("Dictionary (Nil)"); // This provides symmetry with the array property. edit->set_pressed(false); if (vbox) { set_bottom_editor(nullptr); @@ -722,16 +815,16 @@ void EditorPropertyDictionary::update_property() { add_child(vbox); set_bottom_editor(vbox); - page_hb = memnew(HBoxContainer); - vbox->add_child(page_hb); + page_hbox = memnew(HBoxContainer); + vbox->add_child(page_hbox); Label *label = memnew(Label(TTR("Page: "))); label->set_h_size_flags(SIZE_EXPAND_FILL); - page_hb->add_child(label); - page = memnew(EditorSpinSlider); - page->set_step(1); - page_hb->add_child(page); - page->set_h_size_flags(SIZE_EXPAND_FILL); - page->connect("value_changed", callable_mp(this, &EditorPropertyDictionary::_page_changed)); + page_hbox->add_child(label); + page_slider = memnew(EditorSpinSlider); + page_slider->set_step(1); + page_hbox->add_child(page_slider); + page_slider->set_h_size_flags(SIZE_EXPAND_FILL); + page_slider->connect("value_changed", callable_mp(this, &EditorPropertyDictionary::_page_changed)); } else { // Queue children for deletion, deleting immediately might cause errors. for (int i = 1; i < vbox->get_child_count(); i++) { @@ -739,18 +832,18 @@ void EditorPropertyDictionary::update_property() { } } - int len = dict.size(); + int size = dict.size(); - int pages = MAX(0, len - 1) / page_len + 1; + int pages = MAX(0, size - 1) / page_length + 1; - page->set_max(pages); - page_idx = MIN(page_idx, pages - 1); - page->set_value(page_idx); - page_hb->set_visible(pages > 1); + page_slider->set_max(pages); + page_index = MIN(page_index, pages - 1); + page_slider->set_value(page_index); + page_hbox->set_visible(pages > 1); - int offset = page_idx * page_len; + int offset = page_index * page_length; - int amount = MIN(len - offset, page_len); + int amount = MIN(size - offset, page_length); dict = dict.duplicate(); @@ -782,7 +875,7 @@ void EditorPropertyDictionary::update_property() { } break; - // atomic types + // Atomic types. case Variant::BOOL: { prop = memnew(EditorPropertyCheck); @@ -803,7 +896,7 @@ void EditorPropertyDictionary::update_property() { } break; - // math types + // Math types. case Variant::VECTOR2: { EditorPropertyVector2 *editor = memnew(EditorPropertyVector2); editor->setup(-100000, 100000, 0.001, true); @@ -877,7 +970,7 @@ void EditorPropertyDictionary::update_property() { } break; - // misc types + // Miscellaneous types. case Variant::COLOR: { prop = memnew(EditorPropertyColor); @@ -919,7 +1012,7 @@ void EditorPropertyDictionary::update_property() { prop = editor; } break; - // arrays + // Arrays. case Variant::PACKED_BYTE_ARRAY: { EditorPropertyArray *editor = memnew(EditorPropertyArray); editor->setup(Variant::PACKED_BYTE_ARRAY); @@ -1003,17 +1096,17 @@ void EditorPropertyDictionary::update_property() { prop->connect("property_changed", callable_mp(this, &EditorPropertyDictionary::_property_changed)); prop->connect("object_id_selected", callable_mp(this, &EditorPropertyDictionary::_object_id_selected)); - HBoxContainer *hb = memnew(HBoxContainer); + HBoxContainer *hbox = memnew(HBoxContainer); if (add_vbox) { - add_vbox->add_child(hb); + add_vbox->add_child(hbox); } else { - vbox->add_child(hb); + vbox->add_child(hbox); } - hb->add_child(prop); + hbox->add_child(prop); prop->set_h_size_flags(SIZE_EXPAND_FILL); Button *edit = memnew(Button); edit->set_icon(get_theme_icon("Edit", "EditorIcons")); - hb->add_child(edit); + hbox->add_child(edit); edit->connect("pressed", callable_mp(this, &EditorPropertyDictionary::_change_type), varray(edit, change_index)); prop->update_property(); @@ -1060,7 +1153,7 @@ void EditorPropertyDictionary::_page_changed(double p_page) { if (updating) { return; } - page_idx = p_page; + page_index = p_page; update_property(); } @@ -1069,7 +1162,7 @@ void EditorPropertyDictionary::_bind_methods() { EditorPropertyDictionary::EditorPropertyDictionary() { object.instantiate(); - page_len = int(EDITOR_GET("interface/inspector/max_array_dictionary_items_per_page")); + page_length = int(EDITOR_GET("interface/inspector/max_array_dictionary_items_per_page")); edit = memnew(Button); edit->set_h_size_flags(SIZE_EXPAND_FILL); edit->set_clip_text(true); @@ -1078,7 +1171,7 @@ EditorPropertyDictionary::EditorPropertyDictionary() { add_child(edit); add_focusable(edit); vbox = nullptr; - page = nullptr; + page_slider = nullptr; updating = false; change_type = memnew(PopupMenu); add_child(change_type); @@ -1090,5 +1183,5 @@ EditorPropertyDictionary::EditorPropertyDictionary() { } change_type->add_separator(); change_type->add_item(TTR("Remove Item"), Variant::VARIANT_MAX); - changing_type_idx = -1; + changing_type_index = -1; } diff --git a/editor/editor_properties_array_dict.h b/editor/editor_properties_array_dict.h index aa2d8744b1..7547d57346 100644 --- a/editor/editor_properties_array_dict.h +++ b/editor/editor_properties_array_dict.h @@ -84,19 +84,25 @@ class EditorPropertyArray : public EditorProperty { bool dropping; Ref<EditorPropertyArrayObject> object; - int page_len = 20; - int page_idx = 0; - int changing_type_idx; + int page_length = 20; + int page_index = 0; + int changing_type_index; Button *edit; VBoxContainer *vbox; - EditorSpinSlider *length; - EditorSpinSlider *page; - HBoxContainer *page_hb; + EditorSpinSlider *size_slider; + EditorSpinSlider *page_slider; + HBoxContainer *page_hbox; Variant::Type array_type; Variant::Type subtype; PropertyHint subtype_hint; String subtype_hint_string; + int reorder_from_index = -1; + int reorder_to_index = -1; + float reorder_mouse_y_delta = 0.0f; + HBoxContainer *reorder_selected_element_hbox = nullptr; + Button *reorder_selected_button = nullptr; + void _page_changed(double p_page); void _length_changed(double p_page); void _edit_pressed(); @@ -112,6 +118,10 @@ class EditorPropertyArray : public EditorProperty { bool can_drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from) const; void drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from); + void _reorder_button_gui_input(const Ref<InputEvent> &p_event); + void _reorder_button_down(int p_index); + void _reorder_button_up(); + protected: static void _bind_methods(); void _notification(int p_what); @@ -129,14 +139,14 @@ class EditorPropertyDictionary : public EditorProperty { bool updating; Ref<EditorPropertyDictionaryObject> object; - int page_len = 20; - int page_idx = 0; - int changing_type_idx; + int page_length = 20; + int page_index = 0; + int changing_type_index; Button *edit; VBoxContainer *vbox; - EditorSpinSlider *length; - EditorSpinSlider *page; - HBoxContainer *page_hb; + EditorSpinSlider *size_slider; + EditorSpinSlider *page_slider; + HBoxContainer *page_hbox; void _page_changed(double p_page); void _edit_pressed(); diff --git a/editor/editor_resource_picker.cpp b/editor/editor_resource_picker.cpp index 350fc5eccb..4d9865622c 100644 --- a/editor/editor_resource_picker.cpp +++ b/editor/editor_resource_picker.cpp @@ -205,7 +205,7 @@ void EditorResourcePicker::_update_menu_items() { icon = get_theme_icon(what, "Resource"); } - edit_menu->add_icon_item(icon, vformat(TTR("Convert To %s"), what), CONVERT_BASE_ID + i); + edit_menu->add_icon_item(icon, vformat(TTR("Convert to %s"), what), CONVERT_BASE_ID + i); } } } diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp index 080563f375..b6f889268f 100644 --- a/editor/editor_settings.cpp +++ b/editor/editor_settings.cpp @@ -884,7 +884,7 @@ void EditorSettings::create() { return; } - ClassDB::register_class<EditorSettings>(); // Otherwise it can't be unserialized. + GDREGISTER_CLASS(EditorSettings); // Otherwise it can't be unserialized. String config_file_path; Ref<ConfigFile> extra_config = memnew(ConfigFile); diff --git a/editor/editor_themes.cpp b/editor/editor_themes.cpp index 131a77e52f..986fc147f9 100644 --- a/editor/editor_themes.cpp +++ b/editor/editor_themes.cpp @@ -1004,6 +1004,9 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { // LineEdit Ref<StyleBoxFlat> style_line_edit = style_widget->duplicate(); + // The original style_widget style has an extra 1 pixel offset that makes LineEdits not align with Buttons, + // so this compensates for that. + style_line_edit->set_default_margin(SIDE_TOP, style_line_edit->get_default_margin(SIDE_TOP) - 1 * EDSCALE); // Add a bottom line to make LineEdits more visible, especially in sectioned inspectors // such as the Project Settings. style_line_edit->set_border_width(SIDE_BOTTOM, Math::round(2 * EDSCALE)); diff --git a/editor/editor_zoom_widget.cpp b/editor/editor_zoom_widget.cpp index f9be829493..44751a480a 100644 --- a/editor/editor_zoom_widget.cpp +++ b/editor/editor_zoom_widget.cpp @@ -51,17 +51,17 @@ void EditorZoomWidget::_update_zoom_label() { } void EditorZoomWidget::_button_zoom_minus() { - set_zoom_by_increments(-6); + set_zoom_by_increments(-6, Input::get_singleton()->is_key_pressed(KEY_ALT)); emit_signal("zoom_changed", zoom); } void EditorZoomWidget::_button_zoom_reset() { - set_zoom(1.0); + set_zoom(1.0 * MAX(1, EDSCALE)); emit_signal("zoom_changed", zoom); } void EditorZoomWidget::_button_zoom_plus() { - set_zoom_by_increments(6); + set_zoom_by_increments(6, Input::get_singleton()->is_key_pressed(KEY_ALT)); emit_signal("zoom_changed", zoom); } @@ -76,31 +76,69 @@ void EditorZoomWidget::set_zoom(float p_zoom) { } } -void EditorZoomWidget::set_zoom_by_increments(int p_increment_count) { - // Base increment factor defined as the twelveth root of two. - // This allow a smooth geometric evolution of the zoom, with the advantage of - // visiting all integer power of two scale factors. - // note: this is analogous to the 'semitones' interval in the music world - // In order to avoid numerical imprecisions, we compute and edit a zoom index - // with the following relation: zoom = 2 ^ (index / 12) - - if (zoom < CMP_EPSILON || p_increment_count == 0) { - return; - } +void EditorZoomWidget::set_zoom_by_increments(int p_increment_count, bool p_integer_only) { + // Remove editor scale from the index computation. + const float zoom_noscale = zoom / MAX(1, EDSCALE); + + if (p_integer_only) { + // Only visit integer scaling factors above 100%, and fractions with an integer denominator below 100% + // (1/2 = 50%, 1/3 = 33.33%, 1/4 = 25%, …). + // This is useful when working on pixel art projects to avoid distortion. + // This algorithm is designed to handle fractional start zoom values correctly + // (e.g. 190% will zoom up to 200% and down to 100%). + if (zoom_noscale + p_increment_count * 0.001 >= 1.0 - CMP_EPSILON) { + // New zoom is certain to be above 100%. + if (p_increment_count >= 1) { + // Zooming. + set_zoom(Math::floor(zoom_noscale + p_increment_count) * MAX(1, EDSCALE)); + } else { + // Dezooming. + set_zoom(Math::ceil(zoom_noscale + p_increment_count) * MAX(1, EDSCALE)); + } + } else { + if (p_increment_count >= 1) { + // Zooming. Convert the current zoom into a denominator. + float new_zoom = 1.0 / Math::ceil(1.0 / zoom_noscale - p_increment_count); + if (Math::is_equal_approx(zoom_noscale, new_zoom)) { + // New zoom is identical to the old zoom, so try again. + // This can happen due to floating-point precision issues. + new_zoom = 1.0 / Math::ceil(1.0 / zoom_noscale - p_increment_count - 1); + } + set_zoom(new_zoom * MAX(1, EDSCALE)); + } else { + // Dezooming. Convert the current zoom into a denominator. + float new_zoom = 1.0 / Math::floor(1.0 / zoom_noscale - p_increment_count); + if (Math::is_equal_approx(zoom_noscale, new_zoom)) { + // New zoom is identical to the old zoom, so try again. + // This can happen due to floating-point precision issues. + new_zoom = 1.0 / Math::floor(1.0 / zoom_noscale - p_increment_count + 1); + } + set_zoom(new_zoom * MAX(1, EDSCALE)); + } + } + } else { + // Base increment factor defined as the twelveth root of two. + // This allow a smooth geometric evolution of the zoom, with the advantage of + // visiting all integer power of two scale factors. + // note: this is analogous to the 'semitones' interval in the music world + // In order to avoid numerical imprecisions, we compute and edit a zoom index + // with the following relation: zoom = 2 ^ (index / 12) - // Remove Editor scale from the index computation - float zoom_noscale = zoom / MAX(1, EDSCALE); + if (zoom < CMP_EPSILON || p_increment_count == 0) { + return; + } - // zoom = 2**(index/12) => log2(zoom) = index/12 - float closest_zoom_index = Math::round(Math::log(zoom_noscale) * 12.f / Math::log(2.f)); + // zoom = 2**(index/12) => log2(zoom) = index/12 + float closest_zoom_index = Math::round(Math::log(zoom_noscale) * 12.f / Math::log(2.f)); - float new_zoom_index = closest_zoom_index + p_increment_count; - float new_zoom = Math::pow(2.f, new_zoom_index / 12.f); + float new_zoom_index = closest_zoom_index + p_increment_count; + float new_zoom = Math::pow(2.f, new_zoom_index / 12.f); - // Restore Editor scale transformation - new_zoom *= MAX(1, EDSCALE); + // Restore Editor scale transformation + new_zoom *= MAX(1, EDSCALE); - set_zoom(new_zoom); + set_zoom(new_zoom); + } } void EditorZoomWidget::_notification(int p_what) { @@ -118,7 +156,7 @@ void EditorZoomWidget::_notification(int p_what) { void EditorZoomWidget::_bind_methods() { ClassDB::bind_method(D_METHOD("set_zoom", "zoom"), &EditorZoomWidget::set_zoom); ClassDB::bind_method(D_METHOD("get_zoom"), &EditorZoomWidget::get_zoom); - ClassDB::bind_method(D_METHOD("set_zoom_by_increments", "increment"), &EditorZoomWidget::set_zoom_by_increments); + ClassDB::bind_method(D_METHOD("set_zoom_by_increments", "increment", "integer_only"), &EditorZoomWidget::set_zoom_by_increments); ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "zoom"), "set_zoom", "get_zoom"); diff --git a/editor/editor_zoom_widget.h b/editor/editor_zoom_widget.h index 4e95018e52..c35faeefe7 100644 --- a/editor/editor_zoom_widget.h +++ b/editor/editor_zoom_widget.h @@ -56,7 +56,7 @@ public: float get_zoom(); void set_zoom(float p_zoom); - void set_zoom_by_increments(int p_increment_count); + void set_zoom_by_increments(int p_increment_count, bool p_integer_only = false); }; #endif // EDITOR_ZOOM_WIDGET_H diff --git a/editor/export_template_manager.cpp b/editor/export_template_manager.cpp index dd4ce74406..112a9e92a8 100644 --- a/editor/export_template_manager.cpp +++ b/editor/export_template_manager.cpp @@ -812,6 +812,7 @@ ExportTemplateManager::ExportTemplateManager() { main_vb->add_child(current_hb); Label *current_label = memnew(Label); + current_label->set_theme_type_variation("HeaderSmall"); current_label->set_text(TTR("Current Version:")); current_hb->add_child(current_label); @@ -821,6 +822,8 @@ ExportTemplateManager::ExportTemplateManager() { // Current version statuses. // Status: Current version is missing. current_missing_label = memnew(Label); + current_missing_label->set_theme_type_variation("HeaderSmall"); + current_missing_label->set_h_size_flags(Control::SIZE_EXPAND_FILL); current_missing_label->set_align(Label::ALIGN_RIGHT); current_missing_label->set_text(TTR("Export templates are missing. Download them or install from a file.")); @@ -828,6 +831,7 @@ ExportTemplateManager::ExportTemplateManager() { // Status: Current version is installed. current_installed_label = memnew(Label); + current_installed_label->set_theme_type_variation("HeaderSmall"); current_installed_label->set_h_size_flags(Control::SIZE_EXPAND_FILL); current_installed_label->set_align(Label::ALIGN_RIGHT); current_installed_label->set_text(TTR("Export templates are installed and ready to be used.")); @@ -947,6 +951,7 @@ ExportTemplateManager::ExportTemplateManager() { HBoxContainer *installed_versions_hb = memnew(HBoxContainer); main_vb->add_child(installed_versions_hb); Label *installed_label = memnew(Label); + installed_label->set_theme_type_variation("HeaderSmall"); installed_label->set_text(TTR("Other Installed Versions:")); installed_versions_hb->add_child(installed_label); diff --git a/editor/groups_editor.cpp b/editor/groups_editor.cpp index 1b11ec4451..76fbee7490 100644 --- a/editor/groups_editor.cpp +++ b/editor/groups_editor.cpp @@ -424,6 +424,8 @@ GroupDialog::GroupDialog() { vbc_left->set_h_size_flags(Control::SIZE_EXPAND_FILL); Label *group_title = memnew(Label); + group_title->set_theme_type_variation("HeaderSmall"); + group_title->set_text(TTR("Groups")); vbc_left->add_child(group_title); @@ -458,6 +460,8 @@ GroupDialog::GroupDialog() { vbc_add->set_h_size_flags(Control::SIZE_EXPAND_FILL); Label *out_of_group_title = memnew(Label); + out_of_group_title->set_theme_type_variation("HeaderSmall"); + out_of_group_title->set_text(TTR("Nodes Not in Group")); vbc_add->add_child(out_of_group_title); @@ -506,6 +510,8 @@ GroupDialog::GroupDialog() { vbc_remove->set_h_size_flags(Control::SIZE_EXPAND_FILL); Label *in_group_title = memnew(Label); + in_group_title->set_theme_type_variation("HeaderSmall"); + in_group_title->set_text(TTR("Nodes in Group")); vbc_remove->add_child(in_group_title); @@ -528,10 +534,12 @@ GroupDialog::GroupDialog() { remove_filter->connect("text_changed", callable_mp(this, &GroupDialog::_remove_filter_changed)); group_empty = memnew(Label()); + group_empty->set_theme_type_variation("HeaderSmall"); + group_empty->set_text(TTR("Empty groups will be automatically removed.")); group_empty->set_valign(Label::VALIGN_CENTER); group_empty->set_align(Label::ALIGN_CENTER); - group_empty->set_autowrap(true); + group_empty->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART); group_empty->set_custom_minimum_size(Size2(100 * EDSCALE, 0)); nodes_to_remove->add_child(group_empty); group_empty->set_anchors_and_offsets_preset(Control::PRESET_WIDE, Control::PRESET_MODE_KEEP_SIZE, 8 * EDSCALE); diff --git a/editor/icons/TripleBar.svg b/editor/icons/TripleBar.svg new file mode 100644 index 0000000000..2b521e6c15 --- /dev/null +++ b/editor/icons/TripleBar.svg @@ -0,0 +1 @@ +<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m1.9375 4h12.062zm0 4h12.062zm0 4h12.062z" fill="none" stroke="#e0e0e0" stroke-opacity=".99608" stroke-width=".92823"/></svg> diff --git a/editor/localization_editor.cpp b/editor/localization_editor.cpp index 208d4437d3..977ca83671 100644 --- a/editor/localization_editor.cpp +++ b/editor/localization_editor.cpp @@ -656,7 +656,9 @@ LocalizationEditor::LocalizationEditor() { translations->add_child(tvb); HBoxContainer *thb = memnew(HBoxContainer); - thb->add_child(memnew(Label(TTR("Translations:")))); + Label *l = memnew(Label(TTR("Translations:"))); + l->set_theme_type_variation("HeaderSmall"); + thb->add_child(l); thb->add_spacer(); tvb->add_child(thb); @@ -684,7 +686,9 @@ LocalizationEditor::LocalizationEditor() { translations->add_child(tvb); HBoxContainer *thb = memnew(HBoxContainer); - thb->add_child(memnew(Label(TTR("Resources:")))); + Label *l = memnew(Label(TTR("Resources:"))); + l->set_theme_type_variation("HeaderSmall"); + thb->add_child(l); thb->add_spacer(); tvb->add_child(thb); @@ -708,7 +712,9 @@ LocalizationEditor::LocalizationEditor() { add_child(translation_res_file_open_dialog); thb = memnew(HBoxContainer); - thb->add_child(memnew(Label(TTR("Remaps by Locale:")))); + l = memnew(Label(TTR("Remaps by Locale:"))); + l->set_theme_type_variation("HeaderSmall"); + thb->add_child(l); thb->add_spacer(); tvb->add_child(thb); @@ -758,7 +764,9 @@ LocalizationEditor::LocalizationEditor() { translation_locale_filter_mode->connect("item_selected", callable_mp(this, &LocalizationEditor::_translation_filter_mode_changed)); tmc->add_margin_child(TTR("Filter mode:"), translation_locale_filter_mode); - tmc->add_child(memnew(Label(TTR("Locales:")))); + Label *l = memnew(Label(TTR("Locales:"))); + l->set_theme_type_variation("HeaderSmall"); + tmc->add_child(l); translation_filter = memnew(Tree); translation_filter->set_v_size_flags(Control::SIZE_EXPAND_FILL); translation_filter->set_columns(1); @@ -772,7 +780,9 @@ LocalizationEditor::LocalizationEditor() { translations->add_child(tvb); HBoxContainer *thb = memnew(HBoxContainer); - thb->add_child(memnew(Label(TTR("Files with translation strings:")))); + Label *l = memnew(Label(TTR("Files with translation strings:"))); + l->set_theme_type_variation("HeaderSmall"); + thb->add_child(l); thb->add_spacer(); tvb->add_child(thb); diff --git a/editor/node_dock.cpp b/editor/node_dock.cpp index 43c9cabe01..95a2d81e00 100644 --- a/editor/node_dock.cpp +++ b/editor/node_dock.cpp @@ -130,6 +130,6 @@ NodeDock::NodeDock() { select_a_node->set_v_size_flags(SIZE_EXPAND_FILL); select_a_node->set_valign(Label::VALIGN_CENTER); select_a_node->set_align(Label::ALIGN_CENTER); - select_a_node->set_autowrap(true); + select_a_node->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART); add_child(select_a_node); } diff --git a/editor/plugin_config_dialog.cpp b/editor/plugin_config_dialog.cpp index f55d77d782..cbcc3c9880 100644 --- a/editor/plugin_config_dialog.cpp +++ b/editor/plugin_config_dialog.cpp @@ -29,6 +29,7 @@ /*************************************************************************/ #include "plugin_config_dialog.h" + #include "core/io/config_file.h" #include "core/io/dir_access.h" #include "editor/editor_node.h" diff --git a/editor/plugins/asset_library_editor_plugin.cpp b/editor/plugins/asset_library_editor_plugin.cpp index cd61ebd418..596b2a6527 100644 --- a/editor/plugins/asset_library_editor_plugin.cpp +++ b/editor/plugins/asset_library_editor_plugin.cpp @@ -369,6 +369,9 @@ void EditorAssetLibraryItemDownload::_http_download_completed(int p_status, int progress->set_modulate(Color(0, 0, 0, 0)); set_process(false); + + // Automatically prompt for installation once the download is completed. + _install(); } void EditorAssetLibraryItemDownload::configure(const String &p_title, int p_asset_id, const Ref<Texture2D> &p_preview, const String &p_download_url, const String &p_sha256_hash) { @@ -456,6 +459,7 @@ void EditorAssetLibraryItemDownload::_install() { return; } + asset_installer->set_asset_name(title->get_text()); asset_installer->open(file, 1); } @@ -1296,6 +1300,7 @@ void EditorAssetLibrary::_asset_file_selected(const String &p_file) { } asset_installer = memnew(EditorAssetInstaller); + asset_installer->set_asset_name(p_file.get_basename()); add_child(asset_installer); asset_installer->open(p_file); } diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp index 7282475ddf..240e28a3c5 100644 --- a/editor/plugins/canvas_item_editor_plugin.cpp +++ b/editor/plugins/canvas_item_editor_plugin.cpp @@ -1149,8 +1149,9 @@ bool CanvasItemEditor::_gui_input_zoom_or_pan(const Ref<InputEvent> &p_event, bo view_offset.y += int(EditorSettings::get_singleton()->get("editors/2d/pan_speed")) / zoom * b->get_factor(); update_viewport(); } else { - zoom_widget->set_zoom_by_increments(-1); - if (b->get_factor() != 1.f) { + zoom_widget->set_zoom_by_increments(-1, Input::get_singleton()->is_key_pressed(KEY_ALT)); + if (!Math::is_equal_approx(b->get_factor(), 1.0f)) { + // Handle high-precision (analog) scrolling. zoom_widget->set_zoom(zoom * ((zoom_widget->get_zoom() / zoom - 1.f) * b->get_factor() + 1.f)); } _zoom_on_position(zoom_widget->get_zoom(), b->get_position()); @@ -1164,8 +1165,9 @@ bool CanvasItemEditor::_gui_input_zoom_or_pan(const Ref<InputEvent> &p_event, bo view_offset.y -= int(EditorSettings::get_singleton()->get("editors/2d/pan_speed")) / zoom * b->get_factor(); update_viewport(); } else { - zoom_widget->set_zoom_by_increments(1); - if (b->get_factor() != 1.f) { + zoom_widget->set_zoom_by_increments(1, Input::get_singleton()->is_key_pressed(KEY_ALT)); + if (!Math::is_equal_approx(b->get_factor(), 1.0f)) { + // Handle high-precision (analog) scrolling. zoom_widget->set_zoom(zoom * ((zoom_widget->get_zoom() / zoom - 1.f) * b->get_factor() + 1.f)); } _zoom_on_position(zoom_widget->get_zoom(), b->get_position()); @@ -1194,6 +1196,20 @@ bool CanvasItemEditor::_gui_input_zoom_or_pan(const Ref<InputEvent> &p_event, bo Ref<InputEventKey> k = p_event; if (k.is_valid()) { + if (k->is_pressed()) { + if (ED_GET_SHORTCUT("canvas_item_editor/zoom_100_percent")->is_shortcut(p_event)) { + _update_zoom(1.0 * MAX(1, EDSCALE)); + } else if (ED_GET_SHORTCUT("canvas_item_editor/zoom_200_percent")->is_shortcut(p_event)) { + _update_zoom(2.0 * MAX(1, EDSCALE)); + } else if (ED_GET_SHORTCUT("canvas_item_editor/zoom_400_percent")->is_shortcut(p_event)) { + _update_zoom(4.0 * MAX(1, EDSCALE)); + } else if (ED_GET_SHORTCUT("canvas_item_editor/zoom_800_percent")->is_shortcut(p_event)) { + _update_zoom(8.0 * MAX(1, EDSCALE)); + } else if (ED_GET_SHORTCUT("canvas_item_editor/zoom_1600_percent")->is_shortcut(p_event)) { + _update_zoom(16.0 * MAX(1, EDSCALE)); + } + } + bool is_pan_key = pan_view_shortcut.is_valid() && pan_view_shortcut->is_shortcut(p_event); if (is_pan_key && (EditorSettings::get_singleton()->get("editors/2d/simple_panning") || drag_type != DRAG_NONE)) { @@ -2189,7 +2205,7 @@ bool CanvasItemEditor::_gui_input_select(const Ref<InputEvent> &p_event) { // Popup the selection menu list Point2 click = transform.affine_inverse().xform(b->get_position()); - _get_canvas_items_at_pos(click, selection_results, b->is_alt_pressed() && tool != TOOL_LIST_SELECT); + _get_canvas_items_at_pos(click, selection_results, b->is_alt_pressed() && tool == TOOL_SELECT); if (selection_results.size() == 1) { CanvasItem *item = selection_results[0].item; @@ -5299,7 +5315,7 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) { select_button->set_pressed(true); select_button->set_shortcut(ED_SHORTCUT("canvas_item_editor/select_mode", TTR("Select Mode"), KEY_Q)); select_button->set_shortcut_context(this); - select_button->set_tooltip(keycode_get_string(KEY_MASK_CMD) + TTR("Drag: Rotate") + "\n" + TTR("Alt+Drag: Move") + "\n" + TTR("Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving).") + "\n" + TTR("Alt+RMB: Depth list selection")); + select_button->set_tooltip(keycode_get_string(KEY_MASK_CMD) + TTR("Drag: Rotate") + "\n" + TTR("Alt+Drag: Move") + "\n" + TTR("Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving).") + "\n" + TTR("Alt+RMB: Show list of all nodes at position clicked, including locked.")); hb->add_child(memnew(VSeparator)); @@ -5337,7 +5353,7 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) { hb->add_child(list_select_button); list_select_button->set_toggle_mode(true); list_select_button->connect("pressed", callable_mp(this, &CanvasItemEditor::_button_tool_select), make_binds(TOOL_LIST_SELECT)); - list_select_button->set_tooltip(TTR("Show a list of all objects at the position clicked\n(same as Alt+RMB in select mode).")); + list_select_button->set_tooltip(TTR("Show list of selectable nodes at position clicked.")); pivot_button = memnew(Button); pivot_button->set_flat(true); @@ -5422,7 +5438,7 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) { hb->add_child(lock_button); lock_button->connect("pressed", callable_mp(this, &CanvasItemEditor::_popup_callback), varray(LOCK_SELECTED)); - lock_button->set_tooltip(TTR("Lock the selected object in place (can't be moved).")); + lock_button->set_tooltip(TTR("Lock selected node, preventing selection and movement.")); // Define the shortcut globally (without a context) so that it works if the Scene tree dock is currently focused. lock_button->set_shortcut(ED_SHORTCUT("editor/lock_selected_nodes", TTR("Lock Selected Node(s)"), KEY_MASK_CMD | KEY_L)); @@ -5430,7 +5446,7 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) { unlock_button->set_flat(true); hb->add_child(unlock_button); unlock_button->connect("pressed", callable_mp(this, &CanvasItemEditor::_popup_callback), varray(UNLOCK_SELECTED)); - unlock_button->set_tooltip(TTR("Unlock the selected object (can be moved).")); + unlock_button->set_tooltip(TTR("Unlock selected node, allowing selection and movement.")); // Define the shortcut globally (without a context) so that it works if the Scene tree dock is currently focused. unlock_button->set_shortcut(ED_SHORTCUT("editor/unlock_selected_nodes", TTR("Unlock Selected Node(s)"), KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_L)); @@ -5610,6 +5626,16 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) { skeleton_menu->get_popup()->set_item_checked(skeleton_menu->get_popup()->get_item_index(SKELETON_SHOW_BONES), true); singleton = this; + // To ensure that scripts can parse the list of shortcuts correctly, we have to define + // those shortcuts one by one. + // Resetting zoom to 100% is a duplicate shortcut of `canvas_item_editor/reset_zoom`, + // but it ensures both 1 and Ctrl + 0 can be used to reset zoom. + ED_SHORTCUT("canvas_item_editor/zoom_100_percent", TTR("Zoom to 100%"), KEY_1); + ED_SHORTCUT("canvas_item_editor/zoom_200_percent", TTR("Zoom to 200%"), KEY_2); + ED_SHORTCUT("canvas_item_editor/zoom_400_percent", TTR("Zoom to 400%"), KEY_3); + ED_SHORTCUT("canvas_item_editor/zoom_800_percent", TTR("Zoom to 800%"), KEY_4); + ED_SHORTCUT("canvas_item_editor/zoom_1600_percent", TTR("Zoom to 1600%"), KEY_5); + set_process_unhandled_key_input(true); // Update the menus' checkboxes diff --git a/editor/plugins/node_3d_editor_plugin.cpp b/editor/plugins/node_3d_editor_plugin.cpp index 72a63539b3..52f1178d06 100644 --- a/editor/plugins/node_3d_editor_plugin.cpp +++ b/editor/plugins/node_3d_editor_plugin.cpp @@ -571,7 +571,7 @@ ObjectID Node3DEditorViewport::_select_ray(const Point2 &p_pos, bool p_append, b return closest; } -void Node3DEditorViewport::_find_items_at_pos(const Point2 &p_pos, bool &r_includes_current, Vector<_RayResult> &results, bool p_alt_select) { +void Node3DEditorViewport::_find_items_at_pos(const Point2 &p_pos, bool &r_includes_current, Vector<_RayResult> &results, bool p_alt_select, bool p_include_locked_nodes) { Vector3 ray = _get_ray(p_pos); Vector3 pos = _get_ray_pos(p_pos); @@ -614,6 +614,10 @@ void Node3DEditorViewport::_find_items_at_pos(const Point2 &p_pos, bool &r_inclu continue; } + if (!p_include_locked_nodes && _is_node_locked(spat)) { + continue; + } + if (editor_selection->is_selected(spat)) { r_includes_current = true; } @@ -1034,7 +1038,7 @@ bool Node3DEditorViewport ::_is_node_locked(const Node *p_node) { } void Node3DEditorViewport::_list_select(Ref<InputEventMouseButton> b) { - _find_items_at_pos(b->get_position(), clicked_includes_current, selection_results, b->is_shift_pressed()); + _find_items_at_pos(b->get_position(), clicked_includes_current, selection_results, b->is_shift_pressed(), spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT); Node *scene = editor->get_edited_scene(); @@ -1054,7 +1058,7 @@ void Node3DEditorViewport::_list_select(Ref<InputEventMouseButton> b) { selection_results.clear(); if (clicked.is_valid()) { - _select_clicked(clicked_wants_append, true, spatial_editor->get_tool_mode() != Node3DEditor::TOOL_MODE_LIST_SELECT); + _select_clicked(clicked_wants_append, true, spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT); clicked = ObjectID(); } @@ -3306,7 +3310,7 @@ void Node3DEditorViewport::_selection_result_pressed(int p_result) { clicked = selection_results[p_result].item->get_instance_id(); if (clicked.is_valid()) { - _select_clicked(clicked_wants_append, true, spatial_editor->get_tool_mode() != Node3DEditor::TOOL_MODE_LIST_SELECT); + _select_clicked(clicked_wants_append, true, spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT); clicked = ObjectID(); } } @@ -6181,7 +6185,7 @@ void Node3DEditor::snap_selected_nodes_to_floor() { } if (snapped_to_floor) { - undo_redo->create_action(TTR("Snap Nodes To Floor")); + undo_redo->create_action(TTR("Snap Nodes to Floor")); // Perform snapping if at least one node can be snapped for (int i = 0; i < keys.size(); i++) { @@ -6759,7 +6763,7 @@ Node3DEditor::Node3DEditor(EditorNode *p_editor) { tool_button[TOOL_MODE_SELECT]->connect("pressed", callable_mp(this, &Node3DEditor::_menu_item_pressed), button_binds); tool_button[TOOL_MODE_SELECT]->set_shortcut(ED_SHORTCUT("spatial_editor/tool_select", TTR("Select Mode"), KEY_Q)); tool_button[TOOL_MODE_SELECT]->set_shortcut_context(this); - tool_button[TOOL_MODE_SELECT]->set_tooltip(keycode_get_string(KEY_MASK_CMD) + TTR("Drag: Rotate\nAlt+Drag: Move\nAlt+RMB: Depth list selection")); + tool_button[TOOL_MODE_SELECT]->set_tooltip(keycode_get_string(KEY_MASK_CMD) + TTR("Drag: Rotate\nAlt+Drag: Move\nAlt+RMB: Show list of all nodes at position clicked, including locked.")); hbc_menu->add_child(memnew(VSeparator)); @@ -6798,14 +6802,14 @@ Node3DEditor::Node3DEditor(EditorNode *p_editor) { tool_button[TOOL_MODE_LIST_SELECT]->set_flat(true); button_binds.write[0] = MENU_TOOL_LIST_SELECT; tool_button[TOOL_MODE_LIST_SELECT]->connect("pressed", callable_mp(this, &Node3DEditor::_menu_item_pressed), button_binds); - tool_button[TOOL_MODE_LIST_SELECT]->set_tooltip(TTR("Show a list of all objects at the position clicked\n(same as Alt+RMB in select mode).")); + tool_button[TOOL_MODE_LIST_SELECT]->set_tooltip(TTR("Show list of selectable nodes at position clicked.")); tool_button[TOOL_LOCK_SELECTED] = memnew(Button); hbc_menu->add_child(tool_button[TOOL_LOCK_SELECTED]); tool_button[TOOL_LOCK_SELECTED]->set_flat(true); button_binds.write[0] = MENU_LOCK_SELECTED; tool_button[TOOL_LOCK_SELECTED]->connect("pressed", callable_mp(this, &Node3DEditor::_menu_item_pressed), button_binds); - tool_button[TOOL_LOCK_SELECTED]->set_tooltip(TTR("Lock the selected object in place (can't be moved).")); + tool_button[TOOL_LOCK_SELECTED]->set_tooltip(TTR("Lock selected node, preventing selection and movement.")); // Define the shortcut globally (without a context) so that it works if the Scene tree dock is currently focused. tool_button[TOOL_LOCK_SELECTED]->set_shortcut(ED_SHORTCUT("editor/lock_selected_nodes", TTR("Lock Selected Node(s)"), KEY_MASK_CMD | KEY_L)); @@ -6814,7 +6818,7 @@ Node3DEditor::Node3DEditor(EditorNode *p_editor) { tool_button[TOOL_UNLOCK_SELECTED]->set_flat(true); button_binds.write[0] = MENU_UNLOCK_SELECTED; tool_button[TOOL_UNLOCK_SELECTED]->connect("pressed", callable_mp(this, &Node3DEditor::_menu_item_pressed), button_binds); - tool_button[TOOL_UNLOCK_SELECTED]->set_tooltip(TTR("Unlock the selected object (can be moved).")); + tool_button[TOOL_UNLOCK_SELECTED]->set_tooltip(TTR("Unlock selected node, allowing selection and movement.")); // Define the shortcut globally (without a context) so that it works if the Scene tree dock is currently focused. tool_button[TOOL_UNLOCK_SELECTED]->set_shortcut(ED_SHORTCUT("editor/unlock_selected_nodes", TTR("Unlock Selected Node(s)"), KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_L)); @@ -7137,6 +7141,7 @@ Node3DEditor::Node3DEditor(EditorNode *p_editor) { sun_vb->hide(); sun_title = memnew(Label); + sun_title->set_theme_type_variation("HeaderSmall"); sun_vb->add_child(sun_title); sun_title->set_text(TTR("Preview Sun")); sun_title->set_align(Label::ALIGN_CENTER); @@ -7228,6 +7233,8 @@ Node3DEditor::Node3DEditor(EditorNode *p_editor) { environ_vb->hide(); environ_title = memnew(Label); + environ_title->set_theme_type_variation("HeaderSmall"); + environ_vb->add_child(environ_title); environ_title->set_text(TTR("Preview Environment")); environ_title->set_align(Label::ALIGN_CENTER); diff --git a/editor/plugins/node_3d_editor_plugin.h b/editor/plugins/node_3d_editor_plugin.h index a195a0eee0..fa0f4e950f 100644 --- a/editor/plugins/node_3d_editor_plugin.h +++ b/editor/plugins/node_3d_editor_plugin.h @@ -317,7 +317,7 @@ private: void _select_clicked(bool p_append, bool p_single, bool p_allow_locked = false); void _select(Node *p_node, bool p_append, bool p_single); ObjectID _select_ray(const Point2 &p_pos, bool p_append, bool &r_includes_current, int *r_gizmo_handle = nullptr, bool p_alt_select = false); - void _find_items_at_pos(const Point2 &p_pos, bool &r_includes_current, Vector<_RayResult> &results, bool p_alt_select = false); + void _find_items_at_pos(const Point2 &p_pos, bool &r_includes_current, Vector<_RayResult> &results, bool p_alt_select = false, bool p_include_locked_nodes = false); Vector3 _get_ray_pos(const Vector2 &p_pos) const; Vector3 _get_ray(const Vector2 &p_pos) const; Point2 _point_to_screen(const Vector3 &p_point); diff --git a/editor/plugins/sub_viewport_preview_editor_plugin.cpp b/editor/plugins/sub_viewport_preview_editor_plugin.cpp new file mode 100644 index 0000000000..5fd173cae3 --- /dev/null +++ b/editor/plugins/sub_viewport_preview_editor_plugin.cpp @@ -0,0 +1,49 @@ +/*************************************************************************/ +/* sub_viewport_preview_editor_plugin.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2021 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 "sub_viewport_preview_editor_plugin.h" + +bool EditorInspectorPluginSubViewportPreview::can_handle(Object *p_object) { + return Object::cast_to<SubViewport>(p_object) != nullptr; +} + +void EditorInspectorPluginSubViewportPreview::parse_begin(Object *p_object) { + SubViewport *sub_viewport = Object::cast_to<SubViewport>(p_object); + + TexturePreview *sub_viewport_preview = memnew(TexturePreview(sub_viewport->get_texture(), false)); + sub_viewport->connect("size_changed", callable_mp((CanvasItem *)sub_viewport_preview->get_texture_display(), &CanvasItem::update)); + add_custom_control(sub_viewport_preview); +} + +SubViewportPreviewEditorPlugin::SubViewportPreviewEditorPlugin(EditorNode *p_node) { + Ref<EditorInspectorPluginSubViewportPreview> plugin; + plugin.instantiate(); + add_inspector_plugin(plugin); +} diff --git a/editor/plugins/sub_viewport_preview_editor_plugin.h b/editor/plugins/sub_viewport_preview_editor_plugin.h new file mode 100644 index 0000000000..03b8b678d1 --- /dev/null +++ b/editor/plugins/sub_viewport_preview_editor_plugin.h @@ -0,0 +1,56 @@ +/*************************************************************************/ +/* sub_viewport_preview_editor_plugin.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2021 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. */ +/*************************************************************************/ + +#ifndef SUB_VIEWPORT_PREVIEW_EDITOR_PLUGIN_H +#define SUB_VIEWPORT_PREVIEW_EDITOR_PLUGIN_H + +#include "editor/editor_node.h" +#include "editor/editor_plugin.h" +#include "editor/plugins/texture_editor_plugin.h" +#include "scene/main/viewport.h" + +class EditorInspectorPluginSubViewportPreview : public EditorInspectorPluginTexture { + GDCLASS(EditorInspectorPluginSubViewportPreview, EditorInspectorPluginTexture); + +public: + virtual bool can_handle(Object *p_object) override; + virtual void parse_begin(Object *p_object) override; +}; + +class SubViewportPreviewEditorPlugin : public EditorPlugin { + GDCLASS(SubViewportPreviewEditorPlugin, EditorPlugin); + +public: + virtual String get_name() const override { return "SubViewportPreview"; } + + SubViewportPreviewEditorPlugin(EditorNode *p_node); +}; + +#endif // SUB_VIEWPORT_PREVIEW_EDITOR_PLUGIN_H diff --git a/editor/plugins/texture_editor_plugin.cpp b/editor/plugins/texture_editor_plugin.cpp index 10b942d9ee..6ee652098d 100644 --- a/editor/plugins/texture_editor_plugin.cpp +++ b/editor/plugins/texture_editor_plugin.cpp @@ -30,132 +30,69 @@ #include "texture_editor_plugin.h" -#include "core/config/project_settings.h" -#include "core/io/resource_loader.h" -#include "editor/editor_settings.h" +#include "editor/editor_scale.h" -void TextureEditor::_gui_input(Ref<InputEvent> p_event) { +TextureRect *TexturePreview::get_texture_display() { + return texture_display; } -void TextureEditor::_notification(int p_what) { - if (p_what == NOTIFICATION_READY) { - //get_scene()->connect("node_removed",this,"_node_removed"); - } - - if (p_what == NOTIFICATION_DRAW) { - Ref<Texture2D> checkerboard = get_theme_icon("Checkerboard", "EditorIcons"); - Size2 size = get_size(); - - draw_texture_rect(checkerboard, Rect2(Point2(), size), true); - - int tex_width = texture->get_width() * size.height / texture->get_height(); - int tex_height = size.height; - - if (tex_width > size.width) { - tex_width = size.width; - tex_height = texture->get_height() * tex_width / texture->get_width(); - } - - // Prevent the texture from being unpreviewable after the rescale, so that we can still see something - if (tex_height <= 0) { - tex_height = 1; - } - if (tex_width <= 0) { - tex_width = 1; - } +TexturePreview::TexturePreview(Ref<Texture2D> p_texture, bool p_show_metadata) { + Ref<Theme> theme = EditorNode::get_singleton()->get_editor_theme(); - int ofs_x = (size.width - tex_width) / 2; - int ofs_y = (size.height - tex_height) / 2; - - if (Object::cast_to<CurveTexture>(*texture)) { - // In the case of CurveTextures we know they are 1 in height, so fill the preview to see the gradient - ofs_y = 0; - tex_height = size.height; - } else if (Object::cast_to<GradientTexture>(*texture)) { - ofs_y = size.height / 4.0; - tex_height = size.height / 2.0; - } + TextureRect *checkerboard = memnew(TextureRect); + checkerboard->set_texture(theme->get_icon("Checkerboard", "EditorIcons")); + checkerboard->set_stretch_mode(TextureRect::STRETCH_TILE); + checkerboard->set_texture_repeat(CanvasItem::TEXTURE_REPEAT_ENABLED); + checkerboard->set_custom_minimum_size(Size2(0.0, 256.0) * EDSCALE); + add_child(checkerboard); - draw_texture_rect(texture, Rect2(ofs_x, ofs_y, tex_width, tex_height)); + texture_display = memnew(TextureRect); + texture_display->set_texture(p_texture); + texture_display->set_anchors_preset(TextureRect::PRESET_WIDE); + texture_display->set_stretch_mode(TextureRect::STRETCH_KEEP_ASPECT_CENTERED); + texture_display->set_expand(true); + add_child(texture_display); - Ref<Font> font = get_theme_font("font", "Label"); - int font_size = get_theme_font_size("font_size", "Label"); + if (p_show_metadata) { + Label *metadata_label = memnew(Label); String format; - if (Object::cast_to<ImageTexture>(*texture)) { - format = Image::get_format_name(Object::cast_to<ImageTexture>(*texture)->get_format()); - } else if (Object::cast_to<StreamTexture2D>(*texture)) { - format = Image::get_format_name(Object::cast_to<StreamTexture2D>(*texture)->get_format()); + if (Object::cast_to<ImageTexture>(*p_texture)) { + format = Image::get_format_name(Object::cast_to<ImageTexture>(*p_texture)->get_format()); + } else if (Object::cast_to<StreamTexture2D>(*p_texture)) { + format = Image::get_format_name(Object::cast_to<StreamTexture2D>(*p_texture)->get_format()); } else { - format = texture->get_class(); + format = p_texture->get_class(); } - String text = itos(texture->get_width()) + "x" + itos(texture->get_height()) + " " + format; - Size2 rect = font->get_string_size(text, font_size); + metadata_label->set_text(itos(p_texture->get_width()) + "x" + itos(p_texture->get_height()) + " " + format); - Vector2 draw_from = size - rect + Size2(-2, font->get_ascent(font_size) - 2); - if (draw_from.x < 0) { - draw_from.x = 0; - } + metadata_label->add_theme_font_size_override("font_size", 16 * EDSCALE); + metadata_label->add_theme_color_override("font_outline_color", Color::named("black")); + metadata_label->add_theme_constant_override("outline_size", 2 * EDSCALE); + Ref<Font> metadata_label_font = theme->get_font("expression", "EditorFonts"); + metadata_label->add_theme_font_override("font", metadata_label_font); - draw_string(font, draw_from + Vector2(2, 2), text, HALIGN_LEFT, size.width, font_size, Color(0, 0, 0, 0.5)); - draw_string(font, draw_from - Vector2(2, 2), text, HALIGN_LEFT, size.width, font_size, Color(0, 0, 0, 0.5)); - draw_string(font, draw_from, text, HALIGN_LEFT, size.width, font_size, Color(1, 1, 1, 1)); - } -} + // it's okay that these colors are static since the grid color is static too + metadata_label->add_theme_color_override("font_color", Color::named("white")); + metadata_label->add_theme_color_override("font_color_shadow", Color::named("black")); -void TextureEditor::_texture_changed() { - if (!is_visible()) { - return; - } - update(); -} + metadata_label->add_theme_constant_override("shadow_as_outline", 1); + metadata_label->set_h_size_flags(Control::SIZE_SHRINK_END); + metadata_label->set_v_size_flags(Control::SIZE_SHRINK_END); -void TextureEditor::edit(Ref<Texture2D> p_texture) { - if (!texture.is_null()) { - texture->disconnect("changed", callable_mp(this, &TextureEditor::_texture_changed)); + add_child(metadata_label); } - - texture = p_texture; - - if (!texture.is_null()) { - texture->connect("changed", callable_mp(this, &TextureEditor::_texture_changed)); - update(); - } else { - hide(); - } -} - -void TextureEditor::_bind_methods() { - ClassDB::bind_method(D_METHOD("_gui_input"), &TextureEditor::_gui_input); } -TextureEditor::TextureEditor() { - set_texture_repeat(TextureRepeat::TEXTURE_REPEAT_ENABLED); - set_custom_minimum_size(Size2(1, 150)); -} - -TextureEditor::~TextureEditor() { - if (!texture.is_null()) { - texture->disconnect("changed", callable_mp(this, &TextureEditor::_texture_changed)); - } -} - -// bool EditorInspectorPluginTexture::can_handle(Object *p_object) { return Object::cast_to<ImageTexture>(p_object) != nullptr || Object::cast_to<AtlasTexture>(p_object) != nullptr || Object::cast_to<StreamTexture2D>(p_object) != nullptr || Object::cast_to<AnimatedTexture>(p_object) != nullptr; } void EditorInspectorPluginTexture::parse_begin(Object *p_object) { - Texture2D *texture = Object::cast_to<Texture2D>(p_object); - if (!texture) { - return; - } - Ref<Texture2D> m(texture); + Ref<Texture> texture(Object::cast_to<Texture>(p_object)); - TextureEditor *editor = memnew(TextureEditor); - editor->edit(m); - add_custom_control(editor); + add_custom_control(memnew(TexturePreview(texture, true))); } TextureEditorPlugin::TextureEditorPlugin(EditorNode *p_node) { diff --git a/editor/plugins/texture_editor_plugin.h b/editor/plugins/texture_editor_plugin.h index ebe8882194..165090be93 100644 --- a/editor/plugins/texture_editor_plugin.h +++ b/editor/plugins/texture_editor_plugin.h @@ -35,21 +35,15 @@ #include "editor/editor_plugin.h" #include "scene/resources/texture.h" -class TextureEditor : public Control { - GDCLASS(TextureEditor, Control); +class TexturePreview : public MarginContainer { + GDCLASS(TexturePreview, MarginContainer); - Ref<Texture2D> texture; - -protected: - void _notification(int p_what); - void _gui_input(Ref<InputEvent> p_event); - void _texture_changed(); - static void _bind_methods(); +private: + TextureRect *texture_display; public: - void edit(Ref<Texture2D> p_texture); - TextureEditor(); - ~TextureEditor(); + TextureRect *get_texture_display(); + TexturePreview(Ref<Texture2D> p_texture, bool p_show_metadata); }; class EditorInspectorPluginTexture : public EditorInspectorPlugin { diff --git a/editor/plugins/theme_editor_plugin.cpp b/editor/plugins/theme_editor_plugin.cpp index be1aeb309f..0a8a0dcdce 100644 --- a/editor/plugins/theme_editor_plugin.cpp +++ b/editor/plugins/theme_editor_plugin.cpp @@ -1144,7 +1144,7 @@ ThemeItemImportTree::ThemeItemImportTree() { select_icons_warning = memnew(Label); select_icons_warning->set_text(TTR("Caution: Adding icon data may considerably increase the size of your Theme resource.")); - select_icons_warning->set_autowrap(true); + select_icons_warning->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART); select_icons_warning->set_h_size_flags(Control::SIZE_EXPAND_FILL); select_icons_warning_hb->add_child(select_icons_warning); } @@ -1943,6 +1943,117 @@ ThemeItemEditorDialog::ThemeItemEditorDialog() { confirm_closing_dialog->connect("confirmed", callable_mp(this, &ThemeItemEditorDialog::_close_dialog)); } +void ThemeTypeDialog::_dialog_about_to_show() { + add_type_filter->set_text(""); + add_type_filter->grab_focus(); + + _update_add_type_options(); +} + +void ThemeTypeDialog::ok_pressed() { + emit_signal("type_selected", add_type_filter->get_text().strip_edges()); +} + +void ThemeTypeDialog::_update_add_type_options(const String &p_filter) { + add_type_options->clear(); + + List<StringName> names; + Theme::get_default()->get_type_list(&names); + if (include_own_types) { + edited_theme->get_type_list(&names); + } + names.sort_custom<StringName::AlphCompare>(); + + Vector<StringName> unique_names; + for (List<StringName>::Element *E = names.front(); E; E = E->next()) { + // Filter out undesired values. + if (!p_filter.is_subsequence_ofi(String(E->get()))) { + continue; + } + + // Skip duplicate values. + if (unique_names.has(E->get())) { + continue; + } + unique_names.append(E->get()); + + Ref<Texture2D> item_icon; + if (E->get() == "") { + item_icon = get_theme_icon("NodeDisabled", "EditorIcons"); + } else { + item_icon = EditorNode::get_singleton()->get_class_icon(E->get(), "NodeDisabled"); + } + + add_type_options->add_item(E->get(), item_icon); + } +} + +void ThemeTypeDialog::_add_type_filter_cbk(const String &p_value) { + _update_add_type_options(p_value); +} + +void ThemeTypeDialog::_add_type_options_cbk(int p_index) { + add_type_filter->set_text(add_type_options->get_item_text(p_index)); +} + +void ThemeTypeDialog::_add_type_dialog_entered(const String &p_value) { + emit_signal("type_selected", p_value.strip_edges()); + hide(); +} + +void ThemeTypeDialog::_add_type_dialog_activated(int p_index) { + emit_signal("type_selected", add_type_options->get_item_text(p_index)); + hide(); +} + +void ThemeTypeDialog::_notification(int p_what) { + switch (p_what) { + case NOTIFICATION_ENTER_TREE: { + connect("about_to_popup", callable_mp(this, &ThemeTypeDialog::_dialog_about_to_show)); + [[fallthrough]]; + } + case NOTIFICATION_THEME_CHANGED: { + _update_add_type_options(); + } break; + } +} + +void ThemeTypeDialog::_bind_methods() { + ADD_SIGNAL(MethodInfo("type_selected", PropertyInfo(Variant::STRING, "type_name"))); +} + +void ThemeTypeDialog::set_edited_theme(const Ref<Theme> &p_theme) { + edited_theme = p_theme; +} + +void ThemeTypeDialog::set_include_own_types(bool p_enable) { + include_own_types = p_enable; +} + +ThemeTypeDialog::ThemeTypeDialog() { + VBoxContainer *add_type_vb = memnew(VBoxContainer); + add_child(add_type_vb); + + Label *add_type_filter_label = memnew(Label); + add_type_filter_label->set_text(TTR("Name:")); + add_type_vb->add_child(add_type_filter_label); + + add_type_filter = memnew(LineEdit); + add_type_vb->add_child(add_type_filter); + add_type_filter->connect("text_changed", callable_mp(this, &ThemeTypeDialog::_add_type_filter_cbk)); + add_type_filter->connect("text_submitted", callable_mp(this, &ThemeTypeDialog::_add_type_dialog_entered)); + + Label *add_type_options_label = memnew(Label); + add_type_options_label->set_text(TTR("Node Types:")); + add_type_vb->add_child(add_type_options_label); + + add_type_options = memnew(ItemList); + add_type_options->set_v_size_flags(Control::SIZE_EXPAND_FILL); + add_type_vb->add_child(add_type_options); + add_type_options->connect("item_selected", callable_mp(this, &ThemeTypeDialog::_add_type_options_cbk)); + add_type_options->connect("item_activated", callable_mp(this, &ThemeTypeDialog::_add_type_dialog_activated)); +} + VBoxContainer *ThemeTypeEditor::_create_item_list(Theme::DataType p_data_type) { VBoxContainer *items_tab = memnew(VBoxContainer); items_tab->set_custom_minimum_size(Size2(0, 160) * EDSCALE); @@ -2048,36 +2159,18 @@ void ThemeTypeEditor::_update_type_list_debounced() { update_debounce_timer->start(); } -void ThemeTypeEditor::_update_add_type_options(const String &p_filter) { - add_type_options->clear(); - - List<StringName> names; - Theme::get_default()->get_type_list(&names); - names.sort_custom<StringName::AlphCompare>(); - - for (List<StringName>::Element *E = names.front(); E; E = E->next()) { - if (!p_filter.is_subsequence_ofi(String(E->get()))) { - continue; - } - - Ref<Texture2D> item_icon; - if (E->get() == "") { - item_icon = get_theme_icon("NodeDisabled", "EditorIcons"); - } else { - item_icon = EditorNode::get_singleton()->get_class_icon(E->get(), "NodeDisabled"); - } - - add_type_options->add_item(E->get(), item_icon); - } -} - OrderedHashMap<StringName, bool> ThemeTypeEditor::_get_type_items(String p_type_name, void (Theme::*get_list_func)(StringName, List<StringName> *) const, bool include_default) { OrderedHashMap<StringName, bool> items; List<StringName> names; if (include_default) { names.clear(); - (Theme::get_default().operator->()->*get_list_func)(p_type_name, &names); + String default_type = p_type_name; + if (edited_theme->get_type_variation_base(p_type_name) != StringName()) { + default_type = edited_theme->get_type_variation_base(p_type_name); + } + + (Theme::get_default().operator->()->*get_list_func)(default_type, &names); names.sort_custom<StringName::AlphCompare>(); for (List<StringName>::Element *E = names.front(); E; E = E->next()) { items[E->get()] = false; @@ -2435,6 +2528,20 @@ void ThemeTypeEditor::_update_type_items() { stylebox_items_list->add_child(item_control); } } + + // Various type settings. + if (ClassDB::class_exists(edited_type)) { + type_variation_edit->set_editable(false); + type_variation_edit->set_tooltip(TTR("A type associated with a built-in class cannot be marked as a variation of another type.")); + type_variation_edit->set_text(""); + type_variation_button->hide(); + } else { + type_variation_edit->set_editable(true); + type_variation_edit->set_tooltip(""); + type_variation_edit->set_text(edited_theme->get_type_variation_base(edited_type)); + _add_focusable(type_variation_edit); + type_variation_button->show(); + } } void ThemeTypeEditor::_list_type_selected(int p_index) { @@ -2443,34 +2550,18 @@ void ThemeTypeEditor::_list_type_selected(int p_index) { } void ThemeTypeEditor::_add_type_button_cbk() { + add_type_mode = ADD_THEME_TYPE; + add_type_dialog->set_title(TTR("Add Item Type")); + add_type_dialog->set_include_own_types(false); add_type_dialog->popup_centered(Size2(560, 420) * EDSCALE); - add_type_filter->grab_focus(); -} - -void ThemeTypeEditor::_add_type_filter_cbk(const String &p_value) { - _update_add_type_options(p_value); -} - -void ThemeTypeEditor::_add_type_options_cbk(int p_index) { - add_type_filter->set_text(add_type_options->get_item_text(p_index)); -} - -void ThemeTypeEditor::_add_type_dialog_confirmed() { - select_type(add_type_filter->get_text().strip_edges()); -} - -void ThemeTypeEditor::_add_type_dialog_entered(const String &p_value) { - select_type(p_value.strip_edges()); - add_type_dialog->hide(); -} - -void ThemeTypeEditor::_add_type_dialog_activated(int p_index) { - select_type(add_type_options->get_item_text(p_index)); - add_type_dialog->hide(); } void ThemeTypeEditor::_add_default_type_items() { List<StringName> names; + String default_type = edited_type; + if (edited_theme->get_type_variation_base(edited_type) != StringName()) { + default_type = edited_theme->get_type_variation_base(edited_type); + } updating = true; // Prevent changes from immediatelly being reported while the operation is still ongoing. @@ -2478,7 +2569,7 @@ void ThemeTypeEditor::_add_default_type_items() { { names.clear(); - Theme::get_default()->get_icon_list(edited_type, &names); + Theme::get_default()->get_icon_list(default_type, &names); for (List<StringName>::Element *E = names.front(); E; E = E->next()) { if (!edited_theme->has_icon(E->get(), edited_type)) { edited_theme->set_icon(E->get(), edited_type, Ref<Texture2D>()); @@ -2487,7 +2578,7 @@ void ThemeTypeEditor::_add_default_type_items() { } { names.clear(); - Theme::get_default()->get_stylebox_list(edited_type, &names); + Theme::get_default()->get_stylebox_list(default_type, &names); for (List<StringName>::Element *E = names.front(); E; E = E->next()) { if (!edited_theme->has_stylebox(E->get(), edited_type)) { edited_theme->set_stylebox(E->get(), edited_type, Ref<StyleBox>()); @@ -2496,7 +2587,7 @@ void ThemeTypeEditor::_add_default_type_items() { } { names.clear(); - Theme::get_default()->get_font_list(edited_type, &names); + Theme::get_default()->get_font_list(default_type, &names); for (List<StringName>::Element *E = names.front(); E; E = E->next()) { if (!edited_theme->has_font(E->get(), edited_type)) { edited_theme->set_font(E->get(), edited_type, Ref<Font>()); @@ -2505,28 +2596,28 @@ void ThemeTypeEditor::_add_default_type_items() { } { names.clear(); - Theme::get_default()->get_font_size_list(edited_type, &names); + Theme::get_default()->get_font_size_list(default_type, &names); for (List<StringName>::Element *E = names.front(); E; E = E->next()) { if (!edited_theme->has_font_size(E->get(), edited_type)) { - edited_theme->set_font_size(E->get(), edited_type, Theme::get_default()->get_font_size(E->get(), edited_type)); + edited_theme->set_font_size(E->get(), edited_type, Theme::get_default()->get_font_size(E->get(), default_type)); } } } { names.clear(); - Theme::get_default()->get_color_list(edited_type, &names); + Theme::get_default()->get_color_list(default_type, &names); for (List<StringName>::Element *E = names.front(); E; E = E->next()) { if (!edited_theme->has_color(E->get(), edited_type)) { - edited_theme->set_color(E->get(), edited_type, Theme::get_default()->get_color(E->get(), edited_type)); + edited_theme->set_color(E->get(), edited_type, Theme::get_default()->get_color(E->get(), default_type)); } } } { names.clear(); - Theme::get_default()->get_constant_list(edited_type, &names); + Theme::get_default()->get_constant_list(default_type, &names); for (List<StringName>::Element *E = names.front(); E; E = E->next()) { if (!edited_theme->has_constant(E->get(), edited_type)) { - edited_theme->set_constant(E->get(), edited_type, Theme::get_default()->get_constant(E->get(), edited_type)); + edited_theme->set_constant(E->get(), edited_type, Theme::get_default()->get_constant(E->get(), default_type)); } } } @@ -2817,6 +2908,30 @@ void ThemeTypeEditor::_update_stylebox_from_leading() { edited_theme->_unfreeze_and_propagate_changes(); } +void ThemeTypeEditor::_type_variation_changed(const String p_value) { + if (p_value.is_empty()) { + edited_theme->clear_type_variation(edited_type); + } else { + edited_theme->set_type_variation(edited_type, StringName(p_value)); + } +} + +void ThemeTypeEditor::_add_type_variation_cbk() { + add_type_mode = ADD_VARIATION_BASE; + add_type_dialog->set_title(TTR("Add Variation Base Type")); + add_type_dialog->set_include_own_types(true); + add_type_dialog->popup_centered(Size2(560, 420) * EDSCALE); +} + +void ThemeTypeEditor::_add_type_dialog_selected(const String p_type_name) { + if (add_type_mode == ADD_THEME_TYPE) { + select_type(p_type_name); + } else if (add_type_mode == ADD_VARIATION_BASE) { + _type_variation_changed(p_type_name); + _update_type_items(); + } +} + void ThemeTypeEditor::_notification(int p_what) { switch (p_what) { case NOTIFICATION_ENTER_TREE: @@ -2829,11 +2944,12 @@ void ThemeTypeEditor::_notification(int p_what) { data_type_tabs->set_tab_icon(3, get_theme_icon("FontSize", "EditorIcons")); data_type_tabs->set_tab_icon(4, get_theme_icon("ImageTexture", "EditorIcons")); data_type_tabs->set_tab_icon(5, get_theme_icon("StyleBoxFlat", "EditorIcons")); + data_type_tabs->set_tab_icon(6, get_theme_icon("Tools", "EditorIcons")); data_type_tabs->add_theme_style_override("tab_selected", get_theme_stylebox("tab_selected_odd", "TabContainer")); data_type_tabs->add_theme_style_override("panel", get_theme_stylebox("panel_odd", "TabContainer")); - _update_add_type_options(); + type_variation_button->set_icon(get_theme_icon("Add", "EditorIcons")); } break; } } @@ -2846,6 +2962,8 @@ void ThemeTypeEditor::set_edited_theme(const Ref<Theme> &p_theme) { edited_theme = p_theme; edited_theme->connect("changed", callable_mp(this, &ThemeTypeEditor::_update_type_list_debounced)); _update_type_list(); + + add_type_dialog->set_edited_theme(edited_theme); } void ThemeTypeEditor::select_type(String p_type_name) { @@ -2892,34 +3010,10 @@ ThemeTypeEditor::ThemeTypeEditor() { theme_type_list->connect("item_selected", callable_mp(this, &ThemeTypeEditor::_list_type_selected)); add_type_button = memnew(Button); - add_type_button->set_tooltip(TTR("Add Type")); + add_type_button->set_tooltip(TTR("Add a type from a list of available types or create a new one.")); type_list_hb->add_child(add_type_button); add_type_button->connect("pressed", callable_mp(this, &ThemeTypeEditor::_add_type_button_cbk)); - add_type_dialog = memnew(ConfirmationDialog); - add_type_dialog->set_title(TTR("Add Item Type")); - type_list_hb->add_child(add_type_dialog); - add_type_dialog->connect("confirmed", callable_mp(this, &ThemeTypeEditor::_add_type_dialog_confirmed)); - - VBoxContainer *add_type_vb = memnew(VBoxContainer); - add_type_dialog->add_child(add_type_vb); - - Label *add_type_filter_label = memnew(Label); - add_type_filter_label->set_text(TTR("Name:")); - add_type_vb->add_child(add_type_filter_label); - add_type_filter = memnew(LineEdit); - add_type_vb->add_child(add_type_filter); - add_type_filter->connect("text_changed", callable_mp(this, &ThemeTypeEditor::_add_type_filter_cbk)); - add_type_filter->connect("text_submitted", callable_mp(this, &ThemeTypeEditor::_add_type_dialog_entered)); - Label *add_type_options_label = memnew(Label); - add_type_options_label->set_text(TTR("Node Types:")); - add_type_vb->add_child(add_type_options_label); - add_type_options = memnew(ItemList); - add_type_options->set_v_size_flags(SIZE_EXPAND_FILL); - add_type_vb->add_child(add_type_options); - add_type_options->connect("item_selected", callable_mp(this, &ThemeTypeEditor::_add_type_options_cbk)); - add_type_options->connect("item_activated", callable_mp(this, &ThemeTypeEditor::_add_type_dialog_activated)); - HBoxContainer *type_controls = memnew(HBoxContainer); main_vb->add_child(type_controls); @@ -2950,6 +3044,39 @@ ThemeTypeEditor::ThemeTypeEditor() { icon_items_list = _create_item_list(Theme::DATA_TYPE_ICON); stylebox_items_list = _create_item_list(Theme::DATA_TYPE_STYLEBOX); + VBoxContainer *type_settings_tab = memnew(VBoxContainer); + type_settings_tab->set_custom_minimum_size(Size2(0, 160) * EDSCALE); + data_type_tabs->add_child(type_settings_tab); + data_type_tabs->set_tab_title(data_type_tabs->get_tab_count() - 1, ""); + + ScrollContainer *type_settings_sc = memnew(ScrollContainer); + type_settings_sc->set_v_size_flags(SIZE_EXPAND_FILL); + type_settings_sc->set_enable_h_scroll(false); + type_settings_tab->add_child(type_settings_sc); + VBoxContainer *type_settings_list = memnew(VBoxContainer); + type_settings_list->set_h_size_flags(SIZE_EXPAND_FILL); + type_settings_sc->add_child(type_settings_list); + + HBoxContainer *type_variation_hb = memnew(HBoxContainer); + type_settings_list->add_child(type_variation_hb); + Label *type_variation_label = memnew(Label); + type_variation_hb->add_child(type_variation_label); + type_variation_label->set_text(TTR("Base Type")); + type_variation_label->set_h_size_flags(Control::SIZE_EXPAND_FILL); + type_variation_edit = memnew(LineEdit); + type_variation_hb->add_child(type_variation_edit); + type_variation_edit->set_h_size_flags(Control::SIZE_EXPAND_FILL); + type_variation_edit->connect("text_changed", callable_mp(this, &ThemeTypeEditor::_type_variation_changed)); + type_variation_edit->connect("focus_exited", callable_mp(this, &ThemeTypeEditor::_update_type_items)); + type_variation_button = memnew(Button); + type_variation_hb->add_child(type_variation_button); + type_variation_button->set_tooltip(TTR("Select the variation base type from a list of available types.")); + type_variation_button->connect("pressed", callable_mp(this, &ThemeTypeEditor::_add_type_variation_cbk)); + + add_type_dialog = memnew(ThemeTypeDialog); + add_child(add_type_dialog); + add_type_dialog->connect("type_selected", callable_mp(this, &ThemeTypeEditor::_add_type_dialog_selected)); + update_debounce_timer = memnew(Timer); update_debounce_timer->set_one_shot(true); update_debounce_timer->set_wait_time(0.5); @@ -3094,6 +3221,7 @@ ThemeEditor::ThemeEditor() { theme_name = memnew(Label); theme_name->set_text(TTR("Theme") + ": "); + theme_name->set_theme_type_variation("HeaderSmall"); top_menu->add_child(theme_name); top_menu->add_spacer(false); diff --git a/editor/plugins/theme_editor_plugin.h b/editor/plugins/theme_editor_plugin.h index cdedbbec8d..3c114a375a 100644 --- a/editor/plugins/theme_editor_plugin.h +++ b/editor/plugins/theme_editor_plugin.h @@ -263,6 +263,36 @@ public: ThemeItemEditorDialog(); }; +class ThemeTypeDialog : public ConfirmationDialog { + GDCLASS(ThemeTypeDialog, ConfirmationDialog); + + Ref<Theme> edited_theme; + bool include_own_types = false; + + LineEdit *add_type_filter; + ItemList *add_type_options; + + void _dialog_about_to_show(); + void ok_pressed() override; + + void _update_add_type_options(const String &p_filter = ""); + + void _add_type_filter_cbk(const String &p_value); + void _add_type_options_cbk(int p_index); + void _add_type_dialog_entered(const String &p_value); + void _add_type_dialog_activated(int p_index); + +protected: + void _notification(int p_what); + static void _bind_methods(); + +public: + void set_edited_theme(const Ref<Theme> &p_theme); + void set_include_own_types(bool p_enable); + + ThemeTypeDialog(); +}; + class ThemeTypeEditor : public MarginContainer { GDCLASS(ThemeTypeEditor, MarginContainer); @@ -281,9 +311,6 @@ class ThemeTypeEditor : public MarginContainer { OptionButton *theme_type_list; Button *add_type_button; - ConfirmationDialog *add_type_dialog; - LineEdit *add_type_filter; - ItemList *add_type_options; CheckButton *show_default_items_button; @@ -295,13 +322,23 @@ class ThemeTypeEditor : public MarginContainer { VBoxContainer *icon_items_list; VBoxContainer *stylebox_items_list; + LineEdit *type_variation_edit; + Button *type_variation_button; + + enum TypeDialogMode { + ADD_THEME_TYPE, + ADD_VARIATION_BASE, + }; + + TypeDialogMode add_type_mode = ADD_THEME_TYPE; + ThemeTypeDialog *add_type_dialog; + Vector<Control *> focusables; Timer *update_debounce_timer; VBoxContainer *_create_item_list(Theme::DataType p_data_type); void _update_type_list(); void _update_type_list_debounced(); - void _update_add_type_options(const String &p_filter = ""); OrderedHashMap<StringName, bool> _get_type_items(String p_type_name, void (Theme::*get_list_func)(StringName, List<StringName> *) const, bool include_default); HBoxContainer *_create_property_control(Theme::DataType p_data_type, String p_item_name, bool p_editable); void _add_focusable(Control *p_control); @@ -310,11 +347,6 @@ class ThemeTypeEditor : public MarginContainer { void _list_type_selected(int p_index); void _select_type(String p_type_name); void _add_type_button_cbk(); - void _add_type_filter_cbk(const String &p_value); - void _add_type_options_cbk(int p_index); - void _add_type_dialog_confirmed(); - void _add_type_dialog_entered(const String &p_value); - void _add_type_dialog_activated(int p_index); void _add_default_type_items(); void _item_add_cbk(int p_data_type, Control *p_control); @@ -337,6 +369,11 @@ class ThemeTypeEditor : public MarginContainer { void _unpin_leading_stylebox(); void _update_stylebox_from_leading(); + void _type_variation_changed(const String p_value); + void _add_type_variation_cbk(); + + void _add_type_dialog_selected(const String p_type_name); + protected: void _notification(int p_what); diff --git a/editor/plugins/theme_editor_preview.cpp b/editor/plugins/theme_editor_preview.cpp index 0b02150444..5ea46771ba 100644 --- a/editor/plugins/theme_editor_preview.cpp +++ b/editor/plugins/theme_editor_preview.cpp @@ -123,7 +123,7 @@ void ThemeEditorPreview::_gui_input_picker_overlay(const Ref<InputEvent> &p_even if (mb.is_valid() && mb->is_pressed() && mb->get_button_index() == MOUSE_BUTTON_LEFT) { if (hovered_control) { - StringName theme_type = hovered_control->get_theme_custom_type(); + StringName theme_type = hovered_control->get_theme_type_variation(); if (theme_type == StringName()) { theme_type = hovered_control->get_class_name(); } diff --git a/editor/plugins/version_control_editor_plugin.cpp b/editor/plugins/version_control_editor_plugin.cpp index 75a944e910..10679ad6f2 100644 --- a/editor/plugins/version_control_editor_plugin.cpp +++ b/editor/plugins/version_control_editor_plugin.cpp @@ -476,6 +476,7 @@ VersionControlEditorPlugin::VersionControlEditorPlugin() { version_control_dock = memnew(PanelContainer); version_control_dock->set_v_size_flags(Control::SIZE_EXPAND_FILL); + version_control_dock->set_custom_minimum_size(Size2(0, 300) * EDSCALE); version_control_dock->hide(); diff_vbc = memnew(VBoxContainer); diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp index fb91cbb866..85ad03c9bc 100644 --- a/editor/plugins/visual_shader_editor_plugin.cpp +++ b/editor/plugins/visual_shader_editor_plugin.cpp @@ -110,7 +110,7 @@ void VisualShaderGraphPlugin::_bind_methods() { ClassDB::bind_method("set_uniform_name", &VisualShaderGraphPlugin::set_uniform_name); ClassDB::bind_method("set_expression", &VisualShaderGraphPlugin::set_expression); ClassDB::bind_method("update_curve", &VisualShaderGraphPlugin::update_curve); - ClassDB::bind_method("update_curve3", &VisualShaderGraphPlugin::update_curve3); + ClassDB::bind_method("update_curve_xyz", &VisualShaderGraphPlugin::update_curve_xyz); ClassDB::bind_method("update_constant", &VisualShaderGraphPlugin::update_constant); } @@ -219,12 +219,12 @@ void VisualShaderGraphPlugin::update_curve(int p_node_id) { } } -void VisualShaderGraphPlugin::update_curve3(int p_node_id) { +void VisualShaderGraphPlugin::update_curve_xyz(int p_node_id) { if (links.has(p_node_id) && links[p_node_id].curve_editors[0] && links[p_node_id].curve_editors[1] && links[p_node_id].curve_editors[2]) { - if (((VisualShaderNodeCurve3Texture *)links[p_node_id].visual_node)->get_texture().is_valid()) { - links[p_node_id].curve_editors[0]->set_curve(((VisualShaderNodeCurve3Texture *)links[p_node_id].visual_node)->get_texture()->get_curve_x()); - links[p_node_id].curve_editors[1]->set_curve(((VisualShaderNodeCurve3Texture *)links[p_node_id].visual_node)->get_texture()->get_curve_y()); - links[p_node_id].curve_editors[2]->set_curve(((VisualShaderNodeCurve3Texture *)links[p_node_id].visual_node)->get_texture()->get_curve_z()); + if (((VisualShaderNodeCurveXYZTexture *)links[p_node_id].visual_node)->get_texture().is_valid()) { + links[p_node_id].curve_editors[0]->set_curve(((VisualShaderNodeCurveXYZTexture *)links[p_node_id].visual_node)->get_texture()->get_curve_x()); + links[p_node_id].curve_editors[1]->set_curve(((VisualShaderNodeCurveXYZTexture *)links[p_node_id].visual_node)->get_texture()->get_curve_y()); + links[p_node_id].curve_editors[2]->set_curve(((VisualShaderNodeCurveXYZTexture *)links[p_node_id].visual_node)->get_texture()->get_curve_z()); } } } @@ -483,10 +483,10 @@ void VisualShaderGraphPlugin::add_node(VisualShader::Type p_type, int p_id) { custom_editor = hbox; } - Ref<VisualShaderNodeCurve3Texture> curve3 = vsnode; - if (curve3.is_valid()) { - if (curve3->get_texture().is_valid() && !curve3->get_texture()->is_connected("changed", callable_mp(VisualShaderEditor::get_singleton()->get_graph_plugin(), &VisualShaderGraphPlugin::update_curve3))) { - curve3->get_texture()->connect("changed", callable_mp(VisualShaderEditor::get_singleton()->get_graph_plugin(), &VisualShaderGraphPlugin::update_curve3), varray(p_id)); + Ref<VisualShaderNodeCurveXYZTexture> curve_xyz = vsnode; + if (curve_xyz.is_valid()) { + if (curve_xyz->get_texture().is_valid() && !curve_xyz->get_texture()->is_connected("changed", callable_mp(VisualShaderEditor::get_singleton()->get_graph_plugin(), &VisualShaderGraphPlugin::update_curve_xyz))) { + curve_xyz->get_texture()->connect("changed", callable_mp(VisualShaderEditor::get_singleton()->get_graph_plugin(), &VisualShaderGraphPlugin::update_curve_xyz), varray(p_id)); } HBoxContainer *hbox = memnew(HBoxContainer); @@ -518,7 +518,7 @@ void VisualShaderGraphPlugin::add_node(VisualShader::Type p_type, int p_id) { port_offset++; node->add_child(custom_editor); - bool is_curve = curve.is_valid() || curve3.is_valid(); + bool is_curve = curve.is_valid() || curve_xyz.is_valid(); if (is_curve) { VisualShaderEditor::get_singleton()->graph->add_child(node); @@ -551,14 +551,14 @@ void VisualShaderGraphPlugin::add_node(VisualShader::Type p_type, int p_id) { } } - if (curve3.is_valid()) { + if (curve_xyz.is_valid()) { CurveEditor *curve_editor_x = memnew(CurveEditor); node->add_child(curve_editor_x); register_curve_editor(p_id, 0, curve_editor_x); curve_editor_x->set_custom_minimum_size(Size2(300, 0)); curve_editor_x->set_h_size_flags(Control::SIZE_EXPAND_FILL); - if (curve3->get_texture().is_valid()) { - curve_editor_x->set_curve(curve3->get_texture()->get_curve_x()); + if (curve_xyz->get_texture().is_valid()) { + curve_editor_x->set_curve(curve_xyz->get_texture()->get_curve_x()); } CurveEditor *curve_editor_y = memnew(CurveEditor); @@ -566,8 +566,8 @@ void VisualShaderGraphPlugin::add_node(VisualShader::Type p_type, int p_id) { register_curve_editor(p_id, 1, curve_editor_y); curve_editor_y->set_custom_minimum_size(Size2(300, 0)); curve_editor_y->set_h_size_flags(Control::SIZE_EXPAND_FILL); - if (curve3->get_texture().is_valid()) { - curve_editor_y->set_curve(curve3->get_texture()->get_curve_y()); + if (curve_xyz->get_texture().is_valid()) { + curve_editor_y->set_curve(curve_xyz->get_texture()->get_curve_y()); } CurveEditor *curve_editor_z = memnew(CurveEditor); @@ -575,8 +575,8 @@ void VisualShaderGraphPlugin::add_node(VisualShader::Type p_type, int p_id) { register_curve_editor(p_id, 2, curve_editor_z); curve_editor_z->set_custom_minimum_size(Size2(300, 0)); curve_editor_z->set_h_size_flags(Control::SIZE_EXPAND_FILL); - if (curve3->get_texture().is_valid()) { - curve_editor_z->set_curve(curve3->get_texture()->get_curve_z()); + if (curve_xyz->get_texture().is_valid()) { + curve_editor_z->set_curve(curve_xyz->get_texture()->get_curve_z()); } } @@ -2473,9 +2473,9 @@ void VisualShaderEditor::_add_node(int p_idx, int p_op_idx, String p_resource_pa graph_plugin->call_deferred("update_curve", id_to_use); } - VisualShaderNodeCurve3Texture *curve3 = Object::cast_to<VisualShaderNodeCurve3Texture>(vsnode.ptr()); - if (curve3) { - graph_plugin->call_deferred("update_curve3", id_to_use); + VisualShaderNodeCurveXYZTexture *curve_xyz = Object::cast_to<VisualShaderNodeCurveXYZTexture>(vsnode.ptr()); + if (curve_xyz) { + graph_plugin->call_deferred("update_curve_xyz", id_to_use); } if (p_resource_path.is_empty()) { @@ -2486,7 +2486,7 @@ void VisualShaderEditor::_add_node(int p_idx, int p_op_idx, String p_resource_pa VisualShaderNodeTexture *texture2d = Object::cast_to<VisualShaderNodeTexture>(vsnode.ptr()); VisualShaderNodeTexture3D *texture3d = Object::cast_to<VisualShaderNodeTexture3D>(vsnode.ptr()); - if (texture2d || texture3d || curve || curve3) { + if (texture2d || texture3d || curve || curve_xyz) { undo_redo->add_do_method(vsnode.ptr(), "set_texture", ResourceLoader::load(p_resource_path)); return; } @@ -3681,10 +3681,10 @@ void VisualShaderEditor::drop_data_fw(const Point2 &p_point, const Variant &p_da saved_node_pos = p_point + Vector2(0, i * 250 * EDSCALE); saved_node_pos_dirty = true; _add_node(curve_node_option_idx, -1, arr[i], i); - } else if (type == "Curve3Texture") { + } else if (type == "CurveXYZTexture") { saved_node_pos = p_point + Vector2(0, i * 250 * EDSCALE); saved_node_pos_dirty = true; - _add_node(curve3_node_option_idx, -1, arr[i], i); + _add_node(curve_xyz_node_option_idx, -1, arr[i], i); } else if (ClassDB::get_parent_class(type) == "Texture2D") { saved_node_pos = p_point + Vector2(0, i * 250 * EDSCALE); saved_node_pos_dirty = true; @@ -3957,7 +3957,7 @@ VisualShaderEditor::VisualShaderEditor() { error_label = memnew(Label); error_panel->add_child(error_label); - error_label->set_autowrap(true); + error_label->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART); /////////////////////////////////////// // POPUP MENU @@ -4043,7 +4043,7 @@ VisualShaderEditor::VisualShaderEditor() { add_child(members_dialog); alert = memnew(AcceptDialog); - alert->get_label()->set_autowrap(true); + alert->get_label()->set_autowrap_mode(Label::AUTOWRAP_WORD); alert->get_label()->set_align(Label::ALIGN_CENTER); alert->get_label()->set_valign(Label::VALIGN_CENTER); alert->get_label()->set_custom_minimum_size(Size2(400, 60) * EDSCALE); @@ -4406,8 +4406,8 @@ VisualShaderEditor::VisualShaderEditor() { add_options.push_back(AddOption("CubeMap", "Textures", "Functions", "VisualShaderNodeCubemap", TTR("Perform the cubic texture lookup."), -1, -1)); curve_node_option_idx = add_options.size(); add_options.push_back(AddOption("CurveTexture", "Textures", "Functions", "VisualShaderNodeCurveTexture", TTR("Perform the curve texture lookup."), -1, -1)); - curve3_node_option_idx = add_options.size(); - add_options.push_back(AddOption("CurveTexture3", "Textures", "Functions", "VisualShaderNodeCurve3Texture", TTR("Perform the ternary curve texture lookup."), -1, -1)); + curve_xyz_node_option_idx = add_options.size(); + add_options.push_back(AddOption("CurveXYZTexture", "Textures", "Functions", "VisualShaderNodeCurveXYZTexture", TTR("Perform the three components curve texture lookup."), -1, -1)); texture2d_node_option_idx = add_options.size(); add_options.push_back(AddOption("Texture2D", "Textures", "Functions", "VisualShaderNodeTexture", TTR("Perform the 2D texture lookup."), -1, -1)); texture2d_array_node_option_idx = add_options.size(); diff --git a/editor/plugins/visual_shader_editor_plugin.h b/editor/plugins/visual_shader_editor_plugin.h index 2b354db7b3..f53726edb9 100644 --- a/editor/plugins/visual_shader_editor_plugin.h +++ b/editor/plugins/visual_shader_editor_plugin.h @@ -117,7 +117,7 @@ public: void update_uniform_refs(); void set_uniform_name(VisualShader::Type p_type, int p_node_id, const String &p_name); void update_curve(int p_node_id); - void update_curve3(int p_node_id); + void update_curve_xyz(int p_node_id); void update_constant(VisualShader::Type p_type, int p_node_id); void set_expression(VisualShader::Type p_type, int p_node_id, const String &p_expression); int get_constant_index(float p_constant) const; @@ -290,7 +290,7 @@ class VisualShaderEditor : public VBoxContainer { int texture3d_node_option_idx; int custom_node_option_idx; int curve_node_option_idx; - int curve3_node_option_idx; + int curve_xyz_node_option_idx; List<String> keyword_list; List<VisualShaderNodeUniformRef> uniform_refs; diff --git a/editor/project_export.cpp b/editor/project_export.cpp index ad88e1b45b..b639a74132 100644 --- a/editor/project_export.cpp +++ b/editor/project_export.cpp @@ -1013,8 +1013,11 @@ ProjectExportDialog::ProjectExportDialog() { preset_vb->set_h_size_flags(Control::SIZE_EXPAND_FILL); hbox->add_child(preset_vb); + Label *l = memnew(Label(TTR("Presets"))); + l->set_theme_type_variation("HeaderSmall"); + HBoxContainer *preset_hb = memnew(HBoxContainer); - preset_hb->add_child(memnew(Label(TTR("Presets")))); + preset_hb->add_child(l); preset_hb->add_spacer(); preset_vb->add_child(preset_hb); diff --git a/editor/property_editor.cpp b/editor/property_editor.cpp index 7414c2d8e6..ab710a1c21 100644 --- a/editor/property_editor.cpp +++ b/editor/property_editor.cpp @@ -975,7 +975,7 @@ bool CustomPropertyEditor::edit(Object *p_owner, const String &p_name, Variant:: } for (int i = 0; i < conversions.size(); i++) { String what = conversions[i]->converts_to(); - menu->add_item(vformat(TTR("Convert To %s"), what), CONVERT_BASE_ID + i); + menu->add_item(vformat(TTR("Convert to %s"), what), CONVERT_BASE_ID + i); } } diff --git a/editor/rename_dialog.cpp b/editor/rename_dialog.cpp index 0f15d4b119..87fbbbcfb8 100644 --- a/editor/rename_dialog.cpp +++ b/editor/rename_dialog.cpp @@ -35,12 +35,18 @@ #include "editor_scale.h" #include "editor_settings.h" #include "editor_themes.h" -#include "modules/regex/regex.h" #include "plugins/script_editor_plugin.h" #include "scene/gui/control.h" #include "scene/gui/label.h" #include "scene/gui/tab_container.h" +#include "modules/modules_enabled.gen.h" +#ifdef MODULE_REGEX_ENABLED +#include "modules/regex/regex.h" +#else +#error "Can't build editor rename dialog without RegEx module." +#endif + RenameDialog::RenameDialog(SceneTreeEditor *p_scene_tree_editor, UndoRedo *p_undo_redo) { scene_tree_editor = p_scene_tree_editor; undo_redo = p_undo_redo; diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp index a9dcbc9f09..166b82d744 100644 --- a/editor/scene_tree_dock.cpp +++ b/editor/scene_tree_dock.cpp @@ -1210,7 +1210,9 @@ void SceneTreeDock::_notification(int p_what) { HBoxContainer *top_row = memnew(HBoxContainer); top_row->set_name("NodeShortcutsTopRow"); top_row->set_h_size_flags(SIZE_EXPAND_FILL); - top_row->add_child(memnew(Label(TTR("Create Root Node:")))); + Label *l = memnew(Label(TTR("Create Root Node:"))); + l->set_theme_type_variation("HeaderSmall"); + top_row->add_child(l); top_row->add_spacer(); Button *node_shortcuts_toggle = memnew(Button); diff --git a/editor/scene_tree_editor.cpp b/editor/scene_tree_editor.cpp index ee66f28045..5958a09169 100644 --- a/editor/scene_tree_editor.cpp +++ b/editor/scene_tree_editor.cpp @@ -526,6 +526,10 @@ void SceneTreeEditor::_node_removed(Node *p_node) { } void SceneTreeEditor::_node_renamed(Node *p_node) { + if (!get_scene_node()->is_ancestor_of(p_node)) { + return; + } + emit_signal("node_renamed"); if (!tree_dirty) { @@ -1172,6 +1176,7 @@ SceneTreeEditor::SceneTreeEditor(bool p_label, bool p_can_rename, bool p_can_ope if (p_label) { Label *label = memnew(Label); + label->set_theme_type_variation("HeaderSmall"); label->set_position(Point2(10, 0)); label->set_text(TTR("Scene Tree (Nodes):")); diff --git a/editor/script_create_dialog.cpp b/editor/script_create_dialog.cpp index 97edf84488..b5028096e0 100644 --- a/editor/script_create_dialog.cpp +++ b/editor/script_create_dialog.cpp @@ -764,7 +764,7 @@ ScriptCreateDialog::ScriptCreateDialog() { builtin_warning_label->set_text( TTR("Note: Built-in scripts have some limitations and can't be edited using an external editor.")); vb->add_child(builtin_warning_label); - builtin_warning_label->set_autowrap(true); + builtin_warning_label->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART); builtin_warning_label->hide(); script_name_warning_label = memnew(Label); @@ -772,7 +772,7 @@ ScriptCreateDialog::ScriptCreateDialog() { TTR("Warning: Having the script name be the same as a built-in type is usually not desired.")); vb->add_child(script_name_warning_label); script_name_warning_label->add_theme_color_override("font_color", Color(1, 0.85, 0.4)); - script_name_warning_label->set_autowrap(true); + script_name_warning_label->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART); script_name_warning_label->hide(); status_panel = memnew(PanelContainer); @@ -884,7 +884,7 @@ ScriptCreateDialog::ScriptCreateDialog() { add_child(file_browse); get_ok_button()->set_text(TTR("Create")); alert = memnew(AcceptDialog); - alert->get_label()->set_autowrap(true); + alert->get_label()->set_autowrap_mode(Label::AUTOWRAP_WORD_SMART); alert->get_label()->set_align(Label::ALIGN_CENTER); alert->get_label()->set_valign(Label::VALIGN_CENTER); alert->get_label()->set_custom_minimum_size(Size2(325, 60) * EDSCALE); diff --git a/editor/translations/af.po b/editor/translations/af.po index 40669c01fb..bb7e7ca553 100644 --- a/editor/translations/af.po +++ b/editor/translations/af.po @@ -420,10 +420,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "" @@ -472,7 +468,8 @@ msgid "Anim Move Keys" msgstr "Anim Skuif Sleutels" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" msgstr "" #: editor/animation_track_editor.cpp @@ -2557,7 +2554,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11989,10 +11986,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" diff --git a/editor/translations/ar.po b/editor/translations/ar.po index ceeda7a037..6d8db6f47b 100644 --- a/editor/translations/ar.po +++ b/editor/translations/ar.po @@ -51,12 +51,13 @@ # Kareem Abduljaleel <karemjaleel34@gmail.com>, 2021. # ILG - Game <moegypt277@gmail.com>, 2021. # Hatim Jamal <hatimjamal8@gmail.com>, 2021. +# HASSAN GAMER - حسن جيمر <gamerhassan55@gmail.com>, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-05-07 02:12+0000\n" -"Last-Translator: ILG - Game <moegypt277@gmail.com>\n" +"PO-Revision-Date: 2021-07-09 14:32+0000\n" +"Last-Translator: HASSAN GAMER - حسن جيمر <gamerhassan55@gmail.com>\n" "Language-Team: Arabic <https://hosted.weblate.org/projects/godot-engine/" "godot/ar/>\n" "Language: ar\n" @@ -65,7 +66,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" -"X-Generator: Weblate 4.7-dev\n" +"X-Generator: Weblate 4.8-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -88,7 +89,7 @@ msgstr "مدخلات خاطئة %i (لم يتم تمريره) في التعبي #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" -msgstr "لا يمكن إستخدامه نفسه لأن الحالة فارغة (لم يُمرر)" +msgstr "لا يمكن استخدام self لأن النموذج فارغ (لم يتم ادخاله)" #: core/math/expression.cpp msgid "Invalid operands to operator %s, %s and %s." @@ -455,10 +456,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "مسارات الحركة يمكنها فقط أن تشير إلى عُقد مشغّل الحركة." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "مشغل الحركة لا يمكنه أن يحرك نفسه, فقط الاعبين الأخرين." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "لا يمكن إضافة مقطع جديد بدون جذر" @@ -503,8 +500,9 @@ msgid "Anim Move Keys" msgstr "مفتاح حركة التحريك" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "الحافظة (Clipboard) فارغة" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "الحافظة فارغة!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -1156,7 +1154,7 @@ msgstr "شكراً من مجتمع غودوت!" #: editor/editor_about.cpp editor/editor_node.cpp editor/project_manager.cpp msgid "Click to copy." -msgstr "" +msgstr "انقر للنسخ" #: editor/editor_about.cpp msgid "Godot Engine contributors" @@ -2531,7 +2529,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "هل تريد حفظ التغييرات للمشاهد التالية قبل الخروج؟" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" "هل تود حفظ التغييرات التي اجريت على المشاهد الحالية قبل فتح نافذة ادارة " "المشروع؟" @@ -11996,10 +11994,6 @@ msgid "Can't copy the function node." msgstr "لا يمكن نسخ الوظيفة البرمجية للعُقدة." #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "الحافظة فارغة!" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "لصق عُقد البرمجة البصرية VisualScript" @@ -13198,6 +13192,12 @@ msgstr "يمكن تعيين المتغيرات فقط في الذروة ." msgid "Constants cannot be modified." msgstr "لا يمكن تعديل الثوابت." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "مشغل الحركة لا يمكنه أن يحرك نفسه, فقط الاعبين الأخرين." + +#~ msgid "Clipboard is empty" +#~ msgstr "الحافظة (Clipboard) فارغة" + #~ msgid "No" #~ msgstr "لا" diff --git a/editor/translations/az.po b/editor/translations/az.po index 32efc852f8..054bc9263d 100644 --- a/editor/translations/az.po +++ b/editor/translations/az.po @@ -433,11 +433,6 @@ msgstr "" "Animasiya parçaları yalnız AnimationPlayer düyünlərini işarə edə bilər." #: editor/animation_track_editor.cpp -#, fuzzy -msgid "An animation player can't animate itself, only other players." -msgstr "Animasiya pleyeri özünü canlandıra bilməz, yalnız digər pleyerlər." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Kök olmadan yeni iz əlavə etmək mümkün deyil" @@ -483,8 +478,9 @@ msgid "Anim Move Keys" msgstr "Animasya Köçürmə Açarları" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Panel(Clipboard) boşdur" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "" #: editor/animation_track_editor.cpp #, fuzzy @@ -2480,7 +2476,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11552,10 +11548,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" @@ -12576,3 +12568,10 @@ msgstr "" #: servers/visual/shader_language.cpp msgid "Constants cannot be modified." msgstr "" + +#, fuzzy +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "Animasiya pleyeri özünü canlandıra bilməz, yalnız digər pleyerlər." + +#~ msgid "Clipboard is empty" +#~ msgstr "Panel(Clipboard) boşdur" diff --git a/editor/translations/bg.po b/editor/translations/bg.po index 65a77ffd74..7bf3d40805 100644 --- a/editor/translations/bg.po +++ b/editor/translations/bg.po @@ -415,10 +415,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "" @@ -463,7 +459,8 @@ msgid "Anim Move Keys" msgstr "" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" msgstr "" #: editor/animation_track_editor.cpp @@ -2424,7 +2421,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11603,10 +11600,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "Поставяне на възлите с VisualScript" diff --git a/editor/translations/bn.po b/editor/translations/bn.po index 999d6f59d5..70a66820fb 100644 --- a/editor/translations/bn.po +++ b/editor/translations/bn.po @@ -415,10 +415,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "অ্যানিমেশন ট্র্যাকগুলি কেবল অ্যানিমেশনপ্লেয়ার নোডগুলিতে নির্দেশ করতে পারে।" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "একটি অ্যানিমেশন প্লেয়ার নিজেই অ্যানিমেট করতে পারে না, কেবল অন্য প্লেয়ার।" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "মূল ছাড়া নতুন ট্র্যাক যুক্ত করা সম্ভব নয়" @@ -463,8 +459,10 @@ msgid "Anim Move Keys" msgstr "অ্যানিমেশনে (Anim) চাবি/কী-সমুহ সরান" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "ক্লীপবোর্ড খালি" +#: modules/visual_script/visual_script_editor.cpp +#, fuzzy +msgid "Clipboard is empty!" +msgstr "রিসোর্সের ক্লীপবোর্ড খালি!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2609,7 +2607,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "বন্ধ করার পূর্বে পরিবর্তনসমূহ (সিন) সংরক্ষণ করবেন?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "প্রজেক্ট ম্যানেজার ওপেন করার পূর্বে পরিবর্তনসমূহ (সিন) সংরক্ষণ করবেন?" #: editor/editor_node.cpp @@ -12737,11 +12735,6 @@ msgstr "'..' তে পরিচালনা করা সম্ভব নয়" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Clipboard is empty!" -msgstr "রিসোর্সের ক্লীপবোর্ড খালি!" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Paste VisualScript Nodes" msgstr "নোড-সমূহ প্রতিলেপন/পেস্ট করুন" @@ -13863,6 +13856,12 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "একটি অ্যানিমেশন প্লেয়ার নিজেই অ্যানিমেট করতে পারে না, কেবল অন্য প্লেয়ার।" + +#~ msgid "Clipboard is empty" +#~ msgstr "ক্লীপবোর্ড খালি" + #, fuzzy #~ msgid "No" #~ msgstr "নোড" diff --git a/editor/translations/br.po b/editor/translations/br.po index 21e33b7372..9d1e52e009 100644 --- a/editor/translations/br.po +++ b/editor/translations/br.po @@ -414,12 +414,6 @@ msgstr "" "Roudennoù Fiñvskeudenn a c'hell poentañ nemetken da skoulmoù AnimationPlayer." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" -"Ul lennerezh fiñvskeudenn ne c'hell ket em lakaat da fiñval, nemet " -"lennerezhioù all." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Dibosupl ouzhpenn ur roudenn nevez hep ur gwrizienn" @@ -464,8 +458,9 @@ msgid "Anim Move Keys" msgstr "Fiñval Alc'hwezioù Fiñvskeudenn" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Goullo ar gwask-paper" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2425,7 +2420,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11497,10 +11492,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" @@ -12521,3 +12512,11 @@ msgstr "" #: servers/visual/shader_language.cpp msgid "Constants cannot be modified." msgstr "" + +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "Ul lennerezh fiñvskeudenn ne c'hell ket em lakaat da fiñval, nemet " +#~ "lennerezhioù all." + +#~ msgid "Clipboard is empty" +#~ msgstr "Goullo ar gwask-paper" diff --git a/editor/translations/ca.po b/editor/translations/ca.po index e9dc4400fc..1032b7cdeb 100644 --- a/editor/translations/ca.po +++ b/editor/translations/ca.po @@ -421,12 +421,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Les pistes d'Animació només poden apuntar a nodes AnimationPlayer." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" -"Un reproductor d'Animacions no pot animar-se a si mateix, només altres " -"reproductors." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "No es pot afegir una nova pista sense cap arrel" @@ -472,8 +466,9 @@ msgid "Anim Move Keys" msgstr "Mou les Claus" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "El porta-retalls és buit" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "El porta-retalls és buit!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2525,7 +2520,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "Voleu Desar els canvis en les escenes següents abans de Sortir?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" "Desar els canvis a la(les) següent(s) escenes abans d'obrir el Gestor de " "Projectes?" @@ -12354,10 +12349,6 @@ msgid "Can't copy the function node." msgstr "No es pot copiar el node de funció." #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "El porta-retalls és buit!" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "Enganxa els Nodes de VisualScript" @@ -13567,6 +13558,14 @@ msgstr "" msgid "Constants cannot be modified." msgstr "Les constants no es poden modificar." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "Un reproductor d'Animacions no pot animar-se a si mateix, només altres " +#~ "reproductors." + +#~ msgid "Clipboard is empty" +#~ msgstr "El porta-retalls és buit" + #~ msgid "No" #~ msgstr "No" diff --git a/editor/translations/cs.po b/editor/translations/cs.po index 2557308828..3aaf91d758 100644 --- a/editor/translations/cs.po +++ b/editor/translations/cs.po @@ -431,10 +431,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Stopa animace může odkazovat pouze na uzly AnimationPlayer." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "Přehrávač animace nemůže animovat sám sebe, pouze ostatní přehrávače." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Není možné přidat novou stopu bez kořenového uzlu" @@ -479,8 +475,9 @@ msgid "Anim Move Keys" msgstr "Animace: přesunout klíče" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Schránka je prázdná" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "Schránka je prázdná!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2515,7 +2512,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "Uložit změny následujících scén před ukončením?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "Uložit změny následujících scén před otevřením Správce projektu?" #: editor/editor_node.cpp @@ -11945,10 +11942,6 @@ msgid "Can't copy the function node." msgstr "Nelze zkopírovat uzel funkce." #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "Schránka je prázdná!" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "Vložit VisualScript uzly" @@ -13119,6 +13112,13 @@ msgstr "Odlišnosti mohou být přiřazeny pouze ve vertex funkci." msgid "Constants cannot be modified." msgstr "Konstanty není možné upravovat." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "Přehrávač animace nemůže animovat sám sebe, pouze ostatní přehrávače." + +#~ msgid "Clipboard is empty" +#~ msgstr "Schránka je prázdná" + #~ msgid "" #~ "InterpolatedCamera has been deprecated and will be removed in Godot 4.0." #~ msgstr "Uzel InterpolatedCamera je zastaralý a bude odstraněn v Godot 4.0." diff --git a/editor/translations/da.po b/editor/translations/da.po index 77cd37e20b..9e09250fbc 100644 --- a/editor/translations/da.po +++ b/editor/translations/da.po @@ -434,11 +434,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Animationsspor kan kun pege på AnimationPlayer noder." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" -"En animationsafspiller kan ikke animerer sig selv, kun andre afspillere." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Det er ikke muligt at tilføje et nyt spor uden en rod" @@ -487,8 +482,9 @@ msgid "Anim Move Keys" msgstr "Anim Flyt Nøgle" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Udklipsholder er tom" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2600,7 +2596,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "Gem ændringer i følgende scene(r) før du afslutter?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "Gem ændringer i følgende scene(r), før du åbner Projekt Manager?" #: editor/editor_node.cpp @@ -12267,10 +12263,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "Indsæt VisualScript Nodes" @@ -13392,6 +13384,13 @@ msgstr "" msgid "Constants cannot be modified." msgstr "Konstanter kan ikke ændres." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "En animationsafspiller kan ikke animerer sig selv, kun andre afspillere." + +#~ msgid "Clipboard is empty" +#~ msgstr "Udklipsholder er tom" + #~ msgid "No" #~ msgstr "Nej" diff --git a/editor/translations/de.po b/editor/translations/de.po index fcf5522011..bbf72f815b 100644 --- a/editor/translations/de.po +++ b/editor/translations/de.po @@ -75,7 +75,7 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-06-28 22:34+0000\n" +"PO-Revision-Date: 2021-07-13 06:13+0000\n" "Last-Translator: jmih03 <joerni@mail.de>\n" "Language-Team: German <https://hosted.weblate.org/projects/godot-engine/" "godot/de/>\n" @@ -84,7 +84,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.7.1-dev\n" +"X-Generator: Weblate 4.7.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -475,11 +475,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Animationsspuren können nur auf AnimationPlayer-Nodes zeigen." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" -"Ein AnimationPlayer kann sich nicht selbst animieren, nur andere Objekte." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Ohne eine Wurzel kann keine neue Spur hinzugefügt werden" @@ -526,8 +521,9 @@ msgid "Anim Move Keys" msgstr "Schlüsselbilder bewegen" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Zwischenablage ist leer" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "Zwischenablage ist leer!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2581,7 +2577,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "Änderungen in den folgenden Szenen vor dem Schließen speichern?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" "Änderungen in den folgenden Szenen vor dem Öffnen der Projektverwaltung " "speichern?" @@ -7418,9 +7414,8 @@ msgid "Play IK" msgstr "IK abspielen" #: editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Orthogonal" -msgstr "Orthogonal" +msgstr "Senkrecht" #: editor/plugins/spatial_editor_plugin.cpp msgid "Perspective" @@ -12111,10 +12106,6 @@ msgid "Can't copy the function node." msgstr "Das Function-Node kann nicht kopiert werden." #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "Zwischenablage ist leer!" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "VisualScript-Nodes einfügen" @@ -13349,6 +13340,13 @@ msgstr "Varyings können nur in Vertex-Funktion zugewiesen werden." msgid "Constants cannot be modified." msgstr "Konstanten können nicht verändert werden." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "Ein AnimationPlayer kann sich nicht selbst animieren, nur andere Objekte." + +#~ msgid "Clipboard is empty" +#~ msgstr "Zwischenablage ist leer" + #~ msgid "" #~ "Godot editor was built without ray tracing support; lightmaps can't be " #~ "baked.\n" diff --git a/editor/translations/editor.pot b/editor/translations/editor.pot index 603b07a6d5..a0f4654639 100644 --- a/editor/translations/editor.pot +++ b/editor/translations/editor.pot @@ -396,10 +396,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "" @@ -444,7 +440,8 @@ msgid "Anim Move Keys" msgstr "" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" msgstr "" #: editor/animation_track_editor.cpp @@ -2403,7 +2400,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11475,10 +11472,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" diff --git a/editor/translations/el.po b/editor/translations/el.po index d85918f2b2..035a82f99f 100644 --- a/editor/translations/el.po +++ b/editor/translations/el.po @@ -12,12 +12,13 @@ # lawfulRobot <czavantias@gmail.com>, 2020, 2021. # Michalis <michalisntovas@yahoo.gr>, 2021. # leriaz <leriaz@live.com>, 2021. +# Shadofer <shadowrlrs@gmail.com>, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-05-30 04:15+0000\n" -"Last-Translator: lawfulRobot <czavantias@gmail.com>\n" +"PO-Revision-Date: 2021-07-09 14:32+0000\n" +"Last-Translator: Shadofer <shadowrlrs@gmail.com>\n" "Language-Team: Greek <https://hosted.weblate.org/projects/godot-engine/godot/" "el/>\n" "Language: el\n" @@ -25,7 +26,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.7-dev\n" +"X-Generator: Weblate 4.8-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -50,8 +51,8 @@ msgstr "Άκυρη είσοδος %i (δεν πέρασε) στην έκφρασ #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" msgstr "" -"Το self δεν μπορεί να χρησιμοποιηθεί επειδή το στιγμιότυπο είναι null (δεν " -"πέρασε)" +"το self δεν μπορεί να χρησιμοποιηθεί επειδή το αντικείμενο είναι null (δέν " +"έχει περαστεί)" #: core/math/expression.cpp msgid "Invalid operands to operator %s, %s and %s." @@ -421,10 +422,6 @@ msgstr "" "Τα κομμάτια κίνησης μπορούν να δείχνουν μόνο σε κόμβους AnimationPlayer." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "Ένα AnimationPlayer δεν μπορεί να κινήσει τον εαυτό του." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Αδύνατη η προσθήκη κομματιού χωρίς ρίζα" @@ -469,8 +466,9 @@ msgid "Anim Move Keys" msgstr "Μετακίνηση Κλειδιών Κίνησης" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Το πρόχειρο είναι άδειο" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "Το πρόχειρο είναι άδειο!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -1131,7 +1129,7 @@ msgstr "Ευχαριστίες από την κοινότητα της Godot!" #: editor/editor_about.cpp editor/editor_node.cpp editor/project_manager.cpp msgid "Click to copy." -msgstr "" +msgstr "Πατήστε για αντιγραφή." #: editor/editor_about.cpp msgid "Godot Engine contributors" @@ -1634,17 +1632,16 @@ msgstr "" "Ενεργοποιήστε το 'Εισαγωγή ETC2' ή 'Εισαγωγή PVRTC' στις Ρυθμίσεις Έργου." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'PVRTC' texture compression for the driver fallback " "to GLES2.\n" "Enable 'Import Pvrtc' in Project Settings, or disable 'Driver Fallback " "Enabled'." msgstr "" -"Η πλατφόρμα προορισμού απαιτεί «ETC» συμπίεση υφών για εναλλαγή οδηγού στο " +"Η πλατφόρμα προορισμού απαιτεί συμπίεση υφών 'PVRTC' για εναλλαγή οδηγού στο " "GLES2.\n" -"Ενεργοποιήστε το «Import Etc» στις Ρυθμίσεις Έργου, ή απενεργοποιήστε το " -"«Driver Fallback Enabled»." +"Ενεργοποιήστε το 'Εισαγωγή PVRTC' στις Ρυθμίσεις Έργου, ή απενεργοποιήστε το " +"'Ενεργοποίηση εναλλαγής οδηγού'." #: editor/editor_export.cpp platform/android/export/export.cpp #: platform/iphone/export/export.cpp platform/javascript/export/export.cpp @@ -2523,7 +2520,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "Αποθήκευση αλλαγών στις ακόλουθες σκηνές πριν την έξοδο;" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" "Αποθήκευση αλλαγών στις ακόλουθες σκηνές πριν το άνοιγμα του Διαχειριστή " "Έργων;" @@ -5101,9 +5098,8 @@ msgid "Got:" msgstr "Δοσμένο:" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Failed SHA-256 hash check" -msgstr "Η δοκιμή κατακερματισμού sha256 απέτυχε" +msgstr "Ο έλεγχος κατακερματισμού sha256 απέτυχε" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Asset Download Error:" @@ -5259,26 +5255,31 @@ msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Failed determining lightmap size. Maximum lightmap size too small?" msgstr "" +"Αποτυχία προσδιορισμού του μεγέθους lighτmap. Το μέγιστο μέγεθος lightmap " +"ίσως είναι πολύ μικρό." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Some mesh is invalid. Make sure the UV2 channel values are contained within " "the [0.0,1.0] square region." msgstr "" +"Μέρος του πλέγματος δεν είναι έγκυρο. Σιγουρευτείτε πως οι τιμές του " +"καναλιού UV2 περιλαμβάνονται στην τετραγωνική περιοχή [0.0,1.0]." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "" "Godot editor was built without ray tracing support, lightmaps can't be baked." msgstr "" +"Ο Godot Editor φτιάχτηκε χωρίς υποστήριξη ray-tracing, τα lightmaps δέν " +"μπορούν να δημιουργηθούν." #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" msgstr "Προετοιμασία Lightmaps" #: editor/plugins/baked_lightmap_editor_plugin.cpp -#, fuzzy msgid "Select lightmap bake file:" -msgstr "Επιλογή Αρχείου Προτύπων" +msgstr "Επιλογή Αρχείου Προτύπων:" #: editor/plugins/camera_editor_plugin.cpp #: editor/plugins/spatial_editor_plugin.cpp @@ -5347,26 +5348,23 @@ msgstr "Δημιουργία Οριζοντίων και Καθέτων Οδηγ #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)" -msgstr "" +msgstr "Θέσε τον άξονα περιστροφής του CanvasItem \"%s\" σε (%d, %d)" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate %d CanvasItems" -msgstr "Περιστροφή CanvasItem" +msgstr "Περιστροφή %d CanvasItems" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Rotate CanvasItem \"%s\" to %d degrees" -msgstr "Περιστροφή CanvasItem" +msgstr "Περιστροφή του CanvasItem \"%s\" %d μοίρες" #: editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Move CanvasItem \"%s\" Anchor" -msgstr "Μετακίνηση CanvasItem" +msgstr "Μετακίνηση άγκυρας του CanvasItem \"%s\"" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Scale Node2D \"%s\" to (%s, %s)" -msgstr "" +msgstr "Αλλαγή μεγέθους scaling Node2D \"%s\" σε (%s, %s)" #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Resize Control \"%s\" to (%d, %d)" @@ -12080,10 +12078,6 @@ msgid "Can't copy the function node." msgstr "Αδύνατη η αντιγραφή του κόμβου συνάρτησης." #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "Το πρόχειρο είναι άδειο!" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "Επικόλληση κόμβων VisualScript" @@ -13294,6 +13288,12 @@ msgstr "Τα «varying» μπορούν να ανατεθούν μόνο στη msgid "Constants cannot be modified." msgstr "Οι σταθερές δεν μπορούν να τροποποιηθούν." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "Ένα AnimationPlayer δεν μπορεί να κινήσει τον εαυτό του." + +#~ msgid "Clipboard is empty" +#~ msgstr "Το πρόχειρο είναι άδειο" + #~ msgid "" #~ "InterpolatedCamera has been deprecated and will be removed in Godot 4.0." #~ msgstr "" diff --git a/editor/translations/eo.po b/editor/translations/eo.po index 21d94bda5e..0523742303 100644 --- a/editor/translations/eo.po +++ b/editor/translations/eo.po @@ -13,18 +13,19 @@ # Jakub Fabijan <animatorzPolski@gmail.com>, 2021. # mourning20s <mourning20s@protonmail.com>, 2021. # Manuel González <mgoopazo@gmail.com>, 2021. +# Wang Tseryui <2251439097@qq.com>, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" -"PO-Revision-Date: 2021-06-02 09:04+0000\n" -"Last-Translator: mourning20s <mourning20s@protonmail.com>\n" +"PO-Revision-Date: 2021-07-13 06:13+0000\n" +"Last-Translator: Wang Tseryui <2251439097@qq.com>\n" "Language-Team: Esperanto <https://hosted.weblate.org/projects/godot-engine/" "godot/eo/>\n" "Language: eo\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.7-dev\n" +"X-Generator: Weblate 4.7.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -394,9 +395,8 @@ msgid "Rearrange Tracks" msgstr "Rearanĝi trakojn" #: editor/animation_track_editor.cpp -#, fuzzy msgid "Transform tracks only apply to Spatial-based nodes." -msgstr "Transformaj trakoj nur aplikas al Spatial-ajn nodojn." +msgstr "Transformaj trakoj validas nur aplikas al Spatial-bazitaj nodoj." #: editor/animation_track_editor.cpp msgid "" @@ -415,10 +415,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Animaciaj trakoj nur eblas indiki al AnimationPlayer-aj nodoj." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "Animado legilo ne volas animi si mem, nur aliajn ludantojn." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Ne eblas aldoni novan trakon sen radiko" @@ -463,8 +459,9 @@ msgid "Anim Move Keys" msgstr "Animado Movi Ŝlosilojn" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Tondujo estas malplena" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -1121,7 +1118,7 @@ msgstr "Dankon de la komunumo de Godot!" #: editor/editor_about.cpp editor/editor_node.cpp editor/project_manager.cpp msgid "Click to copy." -msgstr "" +msgstr "Alklaku por kopii." #: editor/editor_about.cpp msgid "Godot Engine contributors" @@ -2510,7 +2507,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "Konservi ŝanĝojn al la jena(j) sceno(j) antaŭ foriri?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" "Konservi ŝanĝojn al la jena(j) sceno(j) antaŭ malfermi projektan mastrumilon?" @@ -11803,10 +11800,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" @@ -12837,6 +12830,12 @@ msgstr "" msgid "Constants cannot be modified." msgstr "Konstantoj ne povas esti modifitaj." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "Animado legilo ne volas animi si mem, nur aliajn ludantojn." + +#~ msgid "Clipboard is empty" +#~ msgstr "Tondujo estas malplena" + #~ msgid "No" #~ msgstr "Ne" diff --git a/editor/translations/es.po b/editor/translations/es.po index 7d3288527c..5953536c60 100644 --- a/editor/translations/es.po +++ b/editor/translations/es.po @@ -67,12 +67,13 @@ # Ib Quezada <ib@ibquezada.com>, 2021. # hiking <joaquinfc@protonmail.com>, 2021. # pabloggomez <pgg2733@gmail.com>, 2021. +# Erick Figueroa <querecuto@hotmail.com>, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-06-23 21:56+0000\n" -"Last-Translator: pabloggomez <pgg2733@gmail.com>\n" +"PO-Revision-Date: 2021-07-05 21:41+0000\n" +"Last-Translator: Erick Figueroa <querecuto@hotmail.com>\n" "Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/" "godot/es/>\n" "Language: es\n" @@ -80,7 +81,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.7.1-dev\n" +"X-Generator: Weblate 4.8-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -106,8 +107,7 @@ msgstr "Entrada inválida %i (no aprobada) en la expresión" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" -msgstr "" -"No se puede utilizar «self» porque la instancia es nula (no transmitida)" +msgstr "\"self\" no puede ser usado porque la instancia es nula (detenido)" #: core/math/expression.cpp msgid "Invalid operands to operator %s, %s and %s." @@ -167,7 +167,7 @@ msgstr "Balanceado" #: editor/animation_bezier_editor.cpp msgid "Mirror" -msgstr "Mirror" +msgstr "Reflejar" #: editor/animation_bezier_editor.cpp editor/editor_profiler.cpp msgid "Time:" @@ -475,12 +475,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Las pistas de Animación solo pueden apuntar a nodos AnimationPlayer." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" -"Un reproductor de animación no puede animarse a sí mismo, solo a otros " -"reproductores." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "No es posible agregar una nueva pista sin una raíz" @@ -528,8 +522,9 @@ msgid "Anim Move Keys" msgstr "Mover Claves de Animación" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "El portapapeles está vacío" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "¡El portapapeles está vacío!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -872,7 +867,7 @@ msgstr "Eliminar" #: editor/connections_dialog.cpp msgid "Add Extra Call Argument:" -msgstr "Añadir argumento extra de llamada:" +msgstr "Añadir argumento de llamada extra:" #: editor/connections_dialog.cpp msgid "Extra Call Arguments:" @@ -1387,7 +1382,7 @@ msgstr "Silenciar" #: editor/editor_audio_buses.cpp msgid "Bypass" -msgstr "Bypass" +msgstr "Omitir" #: editor/editor_audio_buses.cpp msgid "Bus options" @@ -2089,7 +2084,7 @@ msgstr "Propiedades de Temas" #: editor/editor_help.cpp msgid "Enumerations" -msgstr "Enumerados" +msgstr "Enumeraciones" #: editor/editor_help.cpp msgid "Constants" @@ -2581,7 +2576,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "¿Guardar los cambios en las siguientes escenas antes de salir?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" "¿Guardar los cambios en las siguientes escenas antes de abrir el " "Administrador de Proyectos?" @@ -4203,7 +4198,7 @@ msgstr "Importar como:" #: editor/import_dock.cpp msgid "Preset" -msgstr "Preset" +msgstr "Preajuste" #: editor/import_dock.cpp msgid "Reimport" @@ -4933,7 +4928,7 @@ msgstr "Eliminar el nodo o transición seleccionado/a." msgid "Toggle autoplay this animation on start, restart or seek to zero." msgstr "" "Alternar reproducción automática de esta animación al comenzar, reiniciar o " -"hacer puesta a cero." +"poner a cero." #: editor/plugins/animation_state_machine_editor.cpp msgid "Set the end animation. This is useful for sub-transitions." @@ -5334,7 +5329,7 @@ msgstr "" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Bake Lightmaps" -msgstr "Bake Lightmaps" +msgstr "Calcular Lightmaps" #: editor/plugins/baked_lightmap_editor_plugin.cpp msgid "Select lightmap bake file:" @@ -6024,15 +6019,15 @@ msgstr "Flat 1" #: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp msgid "Ease In" -msgstr "Ease In" +msgstr "Entrada Suave" #: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp msgid "Ease Out" -msgstr "Ease Out" +msgstr "Salida Suave" #: editor/plugins/curve_editor_plugin.cpp msgid "Smoothstep" -msgstr "Smoothstep" +msgstr "Suavizado" #: editor/plugins/curve_editor_plugin.cpp msgid "Modify Curve Point" @@ -6084,7 +6079,7 @@ msgstr "Clic derecho para añadir punto" #: editor/plugins/gi_probe_editor_plugin.cpp msgid "Bake GI Probe" -msgstr "Bake GI Probe" +msgstr "Calcular GI Probe" #: editor/plugins/gradient_editor_plugin.cpp msgid "Gradient Edited" @@ -7115,7 +7110,7 @@ msgstr "Salir de Aquí" #: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp msgid "Break" -msgstr "Break" +msgstr "Detener" #: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp #: editor/script_editor_debugger.cpp @@ -7246,7 +7241,7 @@ msgstr "Marcadores" #: editor/plugins/script_text_editor.cpp msgid "Breakpoints" -msgstr "Breakpoints" +msgstr "Puntos de interrupción" #: editor/plugins/script_text_editor.cpp #: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp @@ -8037,7 +8032,7 @@ msgstr "Velocidad:" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Loop" -msgstr "Loop" +msgstr "Bucle" #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Animation Frames:" @@ -10549,7 +10544,7 @@ msgstr "Idiomas:" #: editor/project_settings_editor.cpp msgid "AutoLoad" -msgstr "AutoLoad" +msgstr "AutoCarga" #: editor/project_settings_editor.cpp msgid "Plugins" @@ -10561,7 +10556,7 @@ msgstr "Valores de Importación por Defecto" #: editor/property_editor.cpp msgid "Preset..." -msgstr "Preset..." +msgstr "Preajuste..." #: editor/property_editor.cpp msgid "Zero" @@ -10569,11 +10564,11 @@ msgstr "Cero" #: editor/property_editor.cpp msgid "Easing In-Out" -msgstr "Easing In-Out" +msgstr "Entrada-Salida Suave" #: editor/property_editor.cpp msgid "Easing Out-In" -msgstr "Easing Out-In" +msgstr "Salida-Entrada Suave" #: editor/property_editor.cpp msgid "File..." @@ -11338,7 +11333,7 @@ msgstr "Fuente C++:" #: editor/script_editor_debugger.cpp msgid "Stack Trace" -msgstr "Stack Trace" +msgstr "Rastreo de Pila" #: editor/script_editor_debugger.cpp msgid "Errors" @@ -11374,7 +11369,7 @@ msgstr "Fotogramas Apilados" #: editor/script_editor_debugger.cpp msgid "Profiler" -msgstr "Profiler" +msgstr "Perfilador" #: editor/script_editor_debugger.cpp msgid "Network Profiler" @@ -11470,7 +11465,7 @@ msgstr "Atajos" #: editor/settings_config_dialog.cpp msgid "Binding" -msgstr "Binding" +msgstr "Vinculación" #: editor/spatial_editor_gizmos.cpp msgid "Change Light Radius" @@ -11807,7 +11802,7 @@ msgstr "Fin del reporte de la pila de excepciones" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Bake NavMesh" -msgstr "Bake NavMesh" +msgstr "Calcular NavMesh" #: modules/recast/navigation_mesh_editor_plugin.cpp msgid "Clear the navigation mesh." @@ -12109,10 +12104,6 @@ msgid "Can't copy the function node." msgstr "No se puede copiar el nodo de función." #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "¡El portapapeles está vacío!" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "Pegar nodos de VisualScript" @@ -13341,6 +13332,14 @@ msgstr "Solo se pueden asignar variaciones en funciones de vértice." msgid "Constants cannot be modified." msgstr "Las constantes no pueden modificarse." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "Un reproductor de animación no puede animarse a sí mismo, solo a otros " +#~ "reproductores." + +#~ msgid "Clipboard is empty" +#~ msgstr "El portapapeles está vacío" + #~ msgid "" #~ "InterpolatedCamera has been deprecated and will be removed in Godot 4.0." #~ msgstr "" diff --git a/editor/translations/es_AR.po b/editor/translations/es_AR.po index 4bac2d84e9..d1fe06a565 100644 --- a/editor/translations/es_AR.po +++ b/editor/translations/es_AR.po @@ -424,12 +424,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Las pistas de Animación solo pueden apuntar a nodos AnimationPlayer." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" -"Un reproductor de animación no puede animarse a sí mismo, solo a otros " -"reproductores." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "No es posible agregar una nueva pista sin una raíz" @@ -476,8 +470,9 @@ msgid "Anim Move Keys" msgstr "Mover Claves de Anim" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "El portapapeles está vacío" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "El portapapeles está vacío!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2528,7 +2523,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "Guardar cambios a la(s) siguiente(s) escena(s) antes de salir?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" "Guardar cambios a la(s) siguiente(s) escena(s) antes de abrir el Gestor de " "Proyectos?" @@ -12043,10 +12038,6 @@ msgid "Can't copy the function node." msgstr "No se puede copiar el nodo de función." #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "El portapapeles está vacío!" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "Pegar Nodos de VisualScript" @@ -13263,6 +13254,14 @@ msgstr "Solo se pueden asignar variaciones en funciones de vértice." msgid "Constants cannot be modified." msgstr "Las constantes no pueden modificarse." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "Un reproductor de animación no puede animarse a sí mismo, solo a otros " +#~ "reproductores." + +#~ msgid "Clipboard is empty" +#~ msgstr "El portapapeles está vacío" + #~ msgid "" #~ "InterpolatedCamera has been deprecated and will be removed in Godot 4.0." #~ msgstr "InterpolatedCamera ha sido deprecado y será eliminado en Godot 4.0." diff --git a/editor/translations/et.po b/editor/translations/et.po index d81e10e9d7..05a414f5a9 100644 --- a/editor/translations/et.po +++ b/editor/translations/et.po @@ -409,10 +409,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Animatsiooni rajad võivad osutada ainult AnimationPlayer sõlmedele." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "AnimationPlayer ei saa animeerida iseennast, ainult teisi mängijaid." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Ei saa lisada uut rada ilma tüveta" @@ -457,8 +453,9 @@ msgid "Anim Move Keys" msgstr "" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Lõikelaud on tühi" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2450,7 +2447,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11548,10 +11545,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" @@ -12574,6 +12567,13 @@ msgstr "" msgid "Constants cannot be modified." msgstr "Konstante ei saa muuta." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "AnimationPlayer ei saa animeerida iseennast, ainult teisi mängijaid." + +#~ msgid "Clipboard is empty" +#~ msgstr "Lõikelaud on tühi" + #~ msgid "Error trying to save layout!" #~ msgstr "Viga paigutuse salvestamisel!" diff --git a/editor/translations/eu.po b/editor/translations/eu.po index 0f8ef2de33..87c91de10e 100644 --- a/editor/translations/eu.po +++ b/editor/translations/eu.po @@ -410,10 +410,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Animazio pistek AnimationPlayer nodoak bakarrik apunta ditzakete." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "Animazio irakurgailua ezin da norbera animatu, bakarrik beste batzuk." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Ez da posiblea pista berri bat gehitzea sustrairik gabe" @@ -458,7 +454,8 @@ msgid "Anim Move Keys" msgstr "" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" msgstr "" #: editor/animation_track_editor.cpp @@ -2427,7 +2424,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11522,10 +11519,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" @@ -12547,3 +12540,7 @@ msgstr "" #: servers/visual/shader_language.cpp msgid "Constants cannot be modified." msgstr "" + +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "Animazio irakurgailua ezin da norbera animatu, bakarrik beste batzuk." diff --git a/editor/translations/fa.po b/editor/translations/fa.po index ba8c4f9302..ddccfeaebe 100644 --- a/editor/translations/fa.po +++ b/editor/translations/fa.po @@ -20,12 +20,13 @@ # Ahmad Maftoun <CarCedo.Pro@gmail.com>, 2020. # ItzMiad44909858f5774b6d <maidggg@gmail.com>, 2020. # YASAN <yasandev@gmail.com>, 2021. +# duniyal ras <duniyalr@gmail.com>, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-03-16 10:40+0000\n" -"Last-Translator: YASAN <yasandev@gmail.com>\n" +"PO-Revision-Date: 2021-07-13 06:13+0000\n" +"Last-Translator: duniyal ras <duniyalr@gmail.com>\n" "Language-Team: Persian <https://hosted.weblate.org/projects/godot-engine/" "godot/fa/>\n" "Language: fa\n" @@ -33,7 +34,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.5.2-dev\n" +"X-Generator: Weblate 4.7.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -425,10 +426,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "آهنگ های انیمیشن فقط می توانند به گره های انیمش پلیر اشاره کنند." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "یک مجری انیمیشن نمی تواند خود را محرک کند، فقط سایر مجریان." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "بدون ریشه اضافه کردن مسیر امکان پذیر نیست" @@ -473,8 +470,9 @@ msgid "Anim Move Keys" msgstr "کلیدها را در انیمیشن جابجا کن" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "حافظه پنهان خالی است" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "حافظه پنهان خالی است!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -1047,7 +1045,6 @@ msgid "" msgstr "آیا پروندههای انتخاب شده از طرح حذف شوند؟ (غیر قابل بازیابی)" #: editor/dependency_editor.cpp -#, fuzzy msgid "" "The files being removed are required by other resources in order for them to " "work.\n" @@ -1056,7 +1053,8 @@ msgid "" msgstr "" "پروندههایی که میخواهید حذف شوند برای منابع دیگر مورد نیاز هستند تا کار " "کنند.\n" -"آیا در هر صورت حذف شوند؟(بدون برگشت)" +"آیا در هر صورت حذف شوند؟(بدون برگشت)\n" +"شما میتوانید فایل های حذف شده را در سطل زباله سیستم عامل خود بیابید ." #: editor/dependency_editor.cpp msgid "Cannot remove:" @@ -1128,7 +1126,7 @@ msgstr "با تشکر از سوی جامعهی Godot!" #: editor/editor_about.cpp editor/editor_node.cpp editor/project_manager.cpp msgid "Click to copy." -msgstr "" +msgstr "برای کپی کردن کلیک کنید." #: editor/editor_about.cpp msgid "Godot Engine contributors" @@ -1351,9 +1349,8 @@ msgid "Add Audio Bus" msgstr "افزودن کانل صوتی" #: editor/editor_audio_buses.cpp -#, fuzzy msgid "Master bus can't be deleted!" -msgstr "استاد اتوبوس قابل حذف نیست!" +msgstr "گذرگاه اصلی قابل حذف نیست!" #: editor/editor_audio_buses.cpp msgid "Delete Audio Bus" @@ -1470,9 +1467,8 @@ msgid "Rename Autoload" msgstr "بارگذاری خودکار را تغییر نام بده" #: editor/editor_autoload_settings.cpp -#, fuzzy msgid "Toggle AutoLoad Globals" -msgstr "تغییر حالت اتماتیک لود عمومی" +msgstr "تغییر متغیر های عمومی مربوط به لود خودکار" #: editor/editor_autoload_settings.cpp msgid "Move Autoload" @@ -2459,7 +2455,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -12111,10 +12107,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "حافظه پنهان خالی است!" - -#: modules/visual_script/visual_script_editor.cpp #, fuzzy msgid "Paste VisualScript Nodes" msgstr "مسیر به سمت گره:" @@ -13242,6 +13234,12 @@ msgstr "" msgid "Constants cannot be modified." msgstr "ثوابت قابل تغییر نیستند." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "یک مجری انیمیشن نمی تواند خود را محرک کند، فقط سایر مجریان." + +#~ msgid "Clipboard is empty" +#~ msgstr "حافظه پنهان خالی است" + #~ msgid "No" #~ msgstr "نه" diff --git a/editor/translations/fi.po b/editor/translations/fi.po index 9b0cb63c86..834d1894e3 100644 --- a/editor/translations/fi.po +++ b/editor/translations/fi.po @@ -416,10 +416,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Animaatioraidat voivat osoittaa vain AnimationPlayer solmuihin." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "Animaatiotoistin ei voi animoida itseään, ainoastaan muita toistimia." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Uutta raitaa ei voida lisätä ilman juurta" @@ -464,8 +460,9 @@ msgid "Anim Move Keys" msgstr "Animaatio: siirrä avaimia" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Leikepöytä on tyhjä" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "Leikepöytä on tyhjä!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2505,7 +2502,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "Tallenetaanko muutokset seuraaviin skeneihin ennen sulkemista?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" "Tallennetaanko muutokset seuraaviin skeneihin ennen Projektienhallinnan " "avaamista?" @@ -11987,10 +11984,6 @@ msgid "Can't copy the function node." msgstr "Ei voida kopioida funktiosolmua." #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "Leikepöytä on tyhjä!" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "Liitä VisualScript solmut" @@ -13187,6 +13180,13 @@ msgstr "Varying tyypin voi sijoittaa vain vertex-funktiossa." msgid "Constants cannot be modified." msgstr "Vakioita ei voi muokata." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "Animaatiotoistin ei voi animoida itseään, ainoastaan muita toistimia." + +#~ msgid "Clipboard is empty" +#~ msgstr "Leikepöytä on tyhjä" + #~ msgid "" #~ "Godot editor was built without ray tracing support; lightmaps can't be " #~ "baked.\n" diff --git a/editor/translations/fil.po b/editor/translations/fil.po index 54df144dd9..892968821b 100644 --- a/editor/translations/fil.po +++ b/editor/translations/fil.po @@ -410,10 +410,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "" @@ -458,8 +454,9 @@ msgid "Anim Move Keys" msgstr "" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Walang laman ang Clipboard" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2418,7 +2415,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11508,10 +11505,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" @@ -12533,5 +12526,8 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Clipboard is empty" +#~ msgstr "Walang laman ang Clipboard" + #~ msgid "No" #~ msgstr "Hindi" diff --git a/editor/translations/fr.po b/editor/translations/fr.po index 129ab4f687..6fad70a7c2 100644 --- a/editor/translations/fr.po +++ b/editor/translations/fr.po @@ -80,12 +80,13 @@ # TechnoPorg <jonah.janzen@gmail.com>, 2021. # ASTRALE <jules.cercy@etu.univ-lyon1.fr>, 2021. # Julien Vanelian <julienvanelian@hotmail.com>, 2021. +# Clément Topy <topy72.mine@gmail.com>, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-06-20 13:35+0000\n" -"Last-Translator: Nathan <bonnemainsnathan@gmail.com>\n" +"PO-Revision-Date: 2021-07-01 14:33+0000\n" +"Last-Translator: Clément Topy <topy72.mine@gmail.com>\n" "Language-Team: French <https://hosted.weblate.org/projects/godot-engine/" "godot/fr/>\n" "Language: fr\n" @@ -93,7 +94,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.7\n" +"X-Generator: Weblate 4.8-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -487,12 +488,6 @@ msgstr "" "Les pistes d’animation ne peuvent pointer que sur des nœuds AnimationPlayer." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" -"Un lecteur d’animation ne peut s’animer lui-même, seulement les autres " -"lecteurs." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Impossible d’ajouter une nouvelle piste sans racine" @@ -539,8 +534,9 @@ msgid "Anim Move Keys" msgstr "Déplacer les clés d’animation" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Le presse-papiers est vide" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "Le presse-papiers est vide !" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -1403,7 +1399,7 @@ msgstr "Contourner" #: editor/editor_audio_buses.cpp msgid "Bus options" -msgstr "Options de tranport" +msgstr "Options de bus" #: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp #: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp @@ -2596,7 +2592,7 @@ msgstr "" "quitter ?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" "Enregistrer les modifications sur la (les) scène(s) suivante(s) avant " "d'ouvrir le gestionnaire de projet ?" @@ -3260,7 +3256,7 @@ msgstr "Ré-enregistrer" #: editor/editor_node.cpp msgid "New Inherited" -msgstr "Nouveau hérité" +msgstr "Nouvelle scène héritée" #: editor/editor_node.cpp msgid "Load Errors" @@ -12145,10 +12141,6 @@ msgid "Can't copy the function node." msgstr "Impossible de copier le nœud de fonction." #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "Le presse-papiers est vide !" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "Coller les nœuds VisualScript" @@ -13391,6 +13383,14 @@ msgstr "Les variations ne peuvent être affectées que dans la fonction vertex." msgid "Constants cannot be modified." msgstr "Les constantes ne peuvent être modifiées." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "Un lecteur d’animation ne peut s’animer lui-même, seulement les autres " +#~ "lecteurs." + +#~ msgid "Clipboard is empty" +#~ msgstr "Le presse-papiers est vide" + #~ msgid "" #~ "InterpolatedCamera has been deprecated and will be removed in Godot 4.0." #~ msgstr "InterpolatedCamera a été déprécié et sera supprimé dans Godot 4.0." diff --git a/editor/translations/ga.po b/editor/translations/ga.po index e3b1137cee..8168c1a440 100644 --- a/editor/translations/ga.po +++ b/editor/translations/ga.po @@ -402,10 +402,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "" @@ -450,7 +446,8 @@ msgid "Anim Move Keys" msgstr "" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" msgstr "" #: editor/animation_track_editor.cpp @@ -2413,7 +2410,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11501,10 +11498,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" diff --git a/editor/translations/gl.po b/editor/translations/gl.po index f6905f4bef..016a3ab589 100644 --- a/editor/translations/gl.po +++ b/editor/translations/gl.po @@ -408,12 +408,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "As pistas de animación só poden apuntar a nodos AnimationPlayer." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" -"Un reproductor de animacións non pode animarse a si mesmo, só a outros " -"reproductores." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Non é posible engadir unha nova pista sen unha raíz" @@ -459,8 +453,9 @@ msgid "Anim Move Keys" msgstr "Mover Claves de Animación" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "O portapapeis está baleiro" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "O portapapeis está baleiro!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2502,7 +2497,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "Gardar os cambios nas seguintes escenas antes de saír?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" "Gardar os cambios nas seguintes escenas antes de abrir o Administrador de " "Proxectos?" @@ -11796,10 +11791,6 @@ msgid "Can't copy the function node." msgstr "Non se pode copiar o nodo función." #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "O portapapeis está baleiro!" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "Pegar Nodos VisualScript" @@ -12896,3 +12887,11 @@ msgstr "" #: servers/visual/shader_language.cpp msgid "Constants cannot be modified." msgstr "" + +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "Un reproductor de animacións non pode animarse a si mesmo, só a outros " +#~ "reproductores." + +#~ msgid "Clipboard is empty" +#~ msgstr "O portapapeis está baleiro" diff --git a/editor/translations/he.po b/editor/translations/he.po index f0e3fa4383..5dc30a6cc2 100644 --- a/editor/translations/he.po +++ b/editor/translations/he.po @@ -426,10 +426,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "רצועות הנפשה יכולות להצביע רק על איברי AnimationPlayer." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "נגן הנפשה אינו יכול להנפיש את עצמו, רק שחקנים אחרים." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "אי אפשר להוסיף רצועה חדשה בלי שורש" @@ -478,8 +474,9 @@ msgid "Anim Move Keys" msgstr "מפתחות הזזת אנימצייה" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "לוח העתקה ריק" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "לוח העתקה ריק!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2508,7 +2505,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "לשמור את השינויים לסצנות הבאות לפני היציאה?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "לשמור את הסצנות הבאות לפני פתיחת מנהל המיזמים?" #: editor/editor_node.cpp @@ -12023,10 +12020,6 @@ msgid "Can't copy the function node." msgstr "לא ניתן להעתיק את פונקצית המפרק." #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "לוח העתקה ריק!" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "הדבקת מפרקי VisualScript" @@ -13165,6 +13158,12 @@ msgstr "ניתן להקצות שינויים רק בפונקצית vertex." msgid "Constants cannot be modified." msgstr "אי אפשר לשנות קבועים." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "נגן הנפשה אינו יכול להנפיש את עצמו, רק שחקנים אחרים." + +#~ msgid "Clipboard is empty" +#~ msgstr "לוח העתקה ריק" + #~ msgid "No" #~ msgstr "לא" diff --git a/editor/translations/hi.po b/editor/translations/hi.po index a70f058a65..db1dcd67e6 100644 --- a/editor/translations/hi.po +++ b/editor/translations/hi.po @@ -417,10 +417,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "एनिमेशन ट्रैक केवल एनिमेशनप्लेयर नोड्स को इंगित कर सकते हैं।" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "एक एनीमेशन खिलाड़ी खुद को चेतन नहीं कर सकता, केवल अन्य खिलाड़ी।" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "रूट के बिना नया ट्रैक जोड़ना संभव नहीं" @@ -465,8 +461,9 @@ msgid "Anim Move Keys" msgstr "ऐनिमेटेड मूव कीज़" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "क्लिपबोर्ड खाली है" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2487,7 +2484,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "छोड़ने से पहले निम्नलिखित दृश्य (ओं) में परिवर्तन सहेजें?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "परियोजना प्रबंधक खोलने से पहले निम्नलिखित दृश्य (ओं) में परिवर्तन सहेजें?" #: editor/editor_node.cpp @@ -11775,10 +11772,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" @@ -12819,6 +12812,12 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "एक एनीमेशन खिलाड़ी खुद को चेतन नहीं कर सकता, केवल अन्य खिलाड़ी।" + +#~ msgid "Clipboard is empty" +#~ msgstr "क्लिपबोर्ड खाली है" + #~ msgid "No" #~ msgstr "नहीं" diff --git a/editor/translations/hr.po b/editor/translations/hr.po index f49ba47c29..d737bb04b7 100644 --- a/editor/translations/hr.po +++ b/editor/translations/hr.po @@ -405,10 +405,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "Animator ne može animirati sebe, samo druge objekte." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Nije moguće dodati novu stazu bez korijena" @@ -453,8 +449,9 @@ msgid "Anim Move Keys" msgstr "" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Međuspremnik je prazan" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2425,7 +2422,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11527,10 +11524,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" @@ -12553,6 +12546,12 @@ msgstr "Varijacije se mogu dodijeliti samo u vertex funkciji." msgid "Constants cannot be modified." msgstr "Konstante se ne mogu mijenjati." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "Animator ne može animirati sebe, samo druge objekte." + +#~ msgid "Clipboard is empty" +#~ msgstr "Međuspremnik je prazan" + #, fuzzy #~ msgid "Pack File" #~ msgstr "Otvori datoteku" diff --git a/editor/translations/hu.po b/editor/translations/hu.po index eda808eef4..85933dc05d 100644 --- a/editor/translations/hu.po +++ b/editor/translations/hu.po @@ -424,12 +424,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Animáció sávok csak AnimationPlayer node-ra mutathatnak." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" -"Egy AnimationPlayer nem tudja önmagát animálni, csak más AnimationPlayer " -"node-okat." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Új sáv hozzáadása nem lehetséges gyökér nélkül" @@ -474,8 +468,9 @@ msgid "Anim Move Keys" msgstr "Animáció - Kulcsok Mozgatása" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "A vágólap üres" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2523,7 +2518,7 @@ msgstr "" "Elmenti a következő jelenet(ek)en végzett változtatásokat kilépés előtt?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" "Elmenti a következő Scene(ek)en végzett változtatásokat a Projektkezelő " "megnyitása előtt?" @@ -11713,10 +11708,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" @@ -12744,6 +12735,14 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "Egy AnimationPlayer nem tudja önmagát animálni, csak más AnimationPlayer " +#~ "node-okat." + +#~ msgid "Clipboard is empty" +#~ msgstr "A vágólap üres" + #~ msgid "No" #~ msgstr "Nem" diff --git a/editor/translations/id.po b/editor/translations/id.po index 08bfa5969d..e1029fc231 100644 --- a/editor/translations/id.po +++ b/editor/translations/id.po @@ -31,12 +31,13 @@ # Hanz <hanzhaxors@gmail.com>, 2021. # Reza Almanda <rezaalmanda27@gmail.com>, 2021. # Naufal Adriansyah <naufaladrn90@gmail.com>, 2021. +# undisputedgoose <diablodvorak@gmail.com>, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-04-05 14:28+0000\n" -"Last-Translator: Naufal Adriansyah <naufaladrn90@gmail.com>\n" +"PO-Revision-Date: 2021-07-05 14:32+0000\n" +"Last-Translator: undisputedgoose <diablodvorak@gmail.com>\n" "Language-Team: Indonesian <https://hosted.weblate.org/projects/godot-engine/" "godot/id/>\n" "Language: id\n" @@ -44,7 +45,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.6-dev\n" +"X-Generator: Weblate 4.8-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -69,7 +70,7 @@ msgstr "Masukkan tidak sah %i (tidak diberikan) dalam ekspresi" #: core/math/expression.cpp msgid "self can't be used because instance is null (not passed)" -msgstr "self tidak dapat digunakan karena instance adalah null" +msgstr "self tidak dapat digunakan karena instansi adalah null" #: core/math/expression.cpp msgid "Invalid operands to operator %s, %s and %s." @@ -77,7 +78,7 @@ msgstr "operan salah untuk operator %s, %s dan %s." #: core/math/expression.cpp msgid "Invalid index of type %s for base type %s" -msgstr "Tipe indeks %s tidak valid untuk tipe dasar %s" +msgstr "Index tidak valid dari tipe %s untuk tipe dasar %s" #: core/math/expression.cpp msgid "Invalid named index '%s' for base type %s" @@ -149,7 +150,7 @@ msgstr "Duplikat Key Terpilih" #: editor/animation_bezier_editor.cpp msgid "Delete Selected Key(s)" -msgstr "Hapus Key Terpilih" +msgstr "Hapus Kunci Terpilih" #: editor/animation_bezier_editor.cpp msgid "Add Bezier Point" @@ -161,7 +162,7 @@ msgstr "Pindah Titik-titik Bezier" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Duplicate Keys" -msgstr "Tombol Duplikat Anim" +msgstr "Kunci Duplikat Anim" #: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp msgid "Anim Delete Keys" @@ -341,7 +342,7 @@ msgstr "Interpolasi perulangan warp" #: editor/animation_track_editor.cpp #: editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key" -msgstr "Masukkan Key" +msgstr "Masukkan Kunci" #: editor/animation_track_editor.cpp msgid "Duplicate Key(s)" @@ -437,11 +438,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Track animasi hanya bisa menunjuk ke node AnimationPlayer." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" -"Pemutar animasi tidak bisa menganimasikan diri sendiri, hanya pemutar lain." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Tidak memungkinkan untuk menambah track baru tanpa akar" @@ -487,8 +483,9 @@ msgid "Anim Move Keys" msgstr "Pindahkan Kunci Anim" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Papan klip kosong" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "Papan klip kosong!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -544,7 +541,7 @@ msgstr "Susun Track-track dengan node atau tampilkan sebagai daftar biasa." #: editor/animation_track_editor.cpp msgid "Snap:" -msgstr "Pengancingan:" +msgstr "Snap:" #: editor/animation_track_editor.cpp msgid "Animation step value." @@ -676,7 +673,7 @@ msgstr "Pilih Trek untuk Disalin" #: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp #: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp msgid "Copy" -msgstr "Kopy" +msgstr "Salin" #: editor/animation_track_editor.cpp msgid "Select All/None" @@ -769,7 +766,7 @@ msgstr "Perkecil Pandangan" #: editor/code_editor.cpp msgid "Reset Zoom" -msgstr "Kebalikan Semula Pandangan" +msgstr "Kembalikan Semula Pandangan" #: editor/code_editor.cpp msgid "Warnings" @@ -1128,7 +1125,7 @@ msgstr "Memiliki" #: editor/dependency_editor.cpp msgid "Resources Without Explicit Ownership:" -msgstr "Resource Tanpa Kepemilikan yang Jelas:" +msgstr "Sumber Tanpa Kepemilikan yang Jelas:" #: editor/dictionary_property_edit.cpp msgid "Change Dictionary Key" @@ -1144,7 +1141,7 @@ msgstr "Terimakasih dari komunitas Godot!" #: editor/editor_about.cpp editor/editor_node.cpp editor/project_manager.cpp msgid "Click to copy." -msgstr "" +msgstr "Klik untuk salin." #: editor/editor_about.cpp msgid "Godot Engine contributors" @@ -1373,7 +1370,7 @@ msgstr "Master Bus tidak dapat dihapus!" #: editor/editor_audio_buses.cpp msgid "Delete Audio Bus" -msgstr "Hapus Bus Audio" +msgstr "Hapus Audio Bus" #: editor/editor_audio_buses.cpp msgid "Duplicate Audio Bus" @@ -1507,7 +1504,7 @@ msgstr "Mengatur kembali Autoload-autoload" #: editor/editor_autoload_settings.cpp msgid "Can't add autoload:" -msgstr "Tidak dapat menambahkan autoload:" +msgstr "Tidak dapat menambahkan autoload" #: editor/editor_autoload_settings.cpp msgid "Add AutoLoad" @@ -2526,7 +2523,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "Simpan perubahan skena saat ini sebelum keluar?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "Simpan perubahan skena saat ini sebelum membuka Manajer Proyek?" #: editor/editor_node.cpp @@ -2565,7 +2562,6 @@ msgid "Unable to load addon script from path: '%s'." msgstr "Tidak bisa memuat script addon dari lokasi: '%s'." #: editor/editor_node.cpp -#, fuzzy msgid "" "Unable to load addon script from path: '%s'. This might be due to a code " "error in that script.\n" @@ -3016,7 +3012,7 @@ msgstr "Tentang" #: editor/editor_node.cpp msgid "Support Godot Development" -msgstr "" +msgstr "Dukung pengembangan Godot" #: editor/editor_node.cpp msgid "Play the project." @@ -7534,31 +7530,31 @@ msgstr "Tidak tersedia ketika menggunakan perender GLES2." #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Left" -msgstr "TampilanBebas Kiri" +msgstr "Tampilan Bebas Kiri" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Right" -msgstr "TampilanBebas Kanan" +msgstr "Tampilan Bebas Kanan" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Forward" -msgstr "TampilanBebas Maju" +msgstr "Tampilan Bebas Maju" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Backwards" -msgstr "TampilanBebas Mundur" +msgstr "Tampilan Bebas Mundur" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Up" -msgstr "TampilanBebas Atas" +msgstr "Tampilan Bebas Atas" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Down" -msgstr "TampilanBebas Bawah" +msgstr "Tampilan Bebas Bawah" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Speed Modifier" -msgstr "Pengubah Kecepatan TampilanBebas" +msgstr "Pengubah Kecepatan Tampilan Bebas" #: editor/plugins/spatial_editor_plugin.cpp msgid "Freelook Slow Modifier" @@ -7569,9 +7565,12 @@ msgid "View Rotation Locked" msgstr "Rotasi Tampilan Terkunci" #: editor/plugins/spatial_editor_plugin.cpp +#, fuzzy msgid "" "To zoom further, change the camera's clipping planes (View -> Settings...)" msgstr "" +"Untuk memperbesar lebih jauh, ganti kamera clipping planes (Tinjau -> " +"Setelan...)" #: editor/plugins/spatial_editor_plugin.cpp msgid "" @@ -7657,11 +7656,11 @@ msgstr "Beralih Tampilan Ortogonal/Perspektif" #: editor/plugins/spatial_editor_plugin.cpp msgid "Insert Animation Key" -msgstr "Sisipkan Kunci Animasi" +msgstr "Masukkan Kunci Animasi" #: editor/plugins/spatial_editor_plugin.cpp msgid "Focus Origin" -msgstr "Asal Fokus" +msgstr "Fokus asal" #: editor/plugins/spatial_editor_plugin.cpp msgid "Focus Selection" @@ -7669,7 +7668,7 @@ msgstr "Pemilihan Fokus" #: editor/plugins/spatial_editor_plugin.cpp msgid "Toggle Freelook" -msgstr "Jungkitkan Mode Tampilan Bebas" +msgstr "Aktifkan Mode Tampilan Bebas" #: editor/plugins/spatial_editor_plugin.cpp #: editor/plugins/visual_shader_editor_plugin.cpp @@ -7678,7 +7677,7 @@ msgstr "Transformasi" #: editor/plugins/spatial_editor_plugin.cpp msgid "Snap Object to Floor" -msgstr "Kancingkan Objek ke Lantai" +msgstr "Tempelkan Objek ke Lantai" #: editor/plugins/spatial_editor_plugin.cpp msgid "Transform Dialog..." @@ -12008,10 +12007,6 @@ msgid "Can't copy the function node." msgstr "Tidak dapat menyalin node fungsi." #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "Papan klip kosong!" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "Rekatkan Node VisualScript" @@ -13210,6 +13205,14 @@ msgstr "Variasi hanya bisa ditetapkan dalam fungsi vertex." msgid "Constants cannot be modified." msgstr "Konstanta tidak dapat dimodifikasi." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "Pemutar animasi tidak bisa menganimasikan diri sendiri, hanya pemutar " +#~ "lain." + +#~ msgid "Clipboard is empty" +#~ msgstr "Papan klip kosong" + #~ msgid "No" #~ msgstr "Tidak" diff --git a/editor/translations/is.po b/editor/translations/is.po index 72472c2215..fc1423d841 100644 --- a/editor/translations/is.po +++ b/editor/translations/is.po @@ -426,10 +426,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "" @@ -478,7 +474,8 @@ msgid "Anim Move Keys" msgstr "Færa lykla af Anim" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" msgstr "" #: editor/animation_track_editor.cpp @@ -2449,7 +2446,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" "Vista breytingar á neðangreindum senu(m) áður en Verkefna Stjóri er opnaður?" @@ -11628,10 +11625,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" diff --git a/editor/translations/it.po b/editor/translations/it.po index 3d0509ba15..60c362c63a 100644 --- a/editor/translations/it.po +++ b/editor/translations/it.po @@ -464,10 +464,6 @@ msgstr "" "Le tracce di animazioni possono puntare solo a nodi di tipo AnimationPlayer." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "Un AnimationPlayer non può animare se stesso, solo altri riproduttori." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Non è possibile aggiungere una nuova traccia senza un nodo radice" @@ -515,8 +511,9 @@ msgid "Anim Move Keys" msgstr "Sposta delle chiavi d'animazione" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Gli appunti sono vuoti" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "Gli appunti sono vuoti!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2578,7 +2575,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "Salvare le modifiche alle scene seguenti prima di uscire?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" "Salvare le modifiche alle scene seguenti prima di aprire il gestore di " "progetti?" @@ -12146,10 +12143,6 @@ msgid "Can't copy the function node." msgstr "Non è possibile copiare il nodo della funzione." #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "Gli appunti sono vuoti!" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "Incolla Nodi VisualScript" @@ -13371,6 +13364,13 @@ msgstr "" msgid "Constants cannot be modified." msgstr "Le constanti non possono essere modificate." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "Un AnimationPlayer non può animare se stesso, solo altri riproduttori." + +#~ msgid "Clipboard is empty" +#~ msgstr "Gli appunti sono vuoti" + #~ msgid "" #~ "InterpolatedCamera has been deprecated and will be removed in Godot 4.0." #~ msgstr "" diff --git a/editor/translations/ja.po b/editor/translations/ja.po index 85768d721a..1fd770fe13 100644 --- a/editor/translations/ja.po +++ b/editor/translations/ja.po @@ -439,12 +439,6 @@ msgstr "" "アニメーショントラックはアニメーションプレイヤーノードのみ指定できます。" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" -"アニメーションプレーヤーは他のプレーヤーだけにアニメーションを適用することは" -"できません。" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "root が無ければ新規トラックは追加できません" @@ -489,8 +483,9 @@ msgid "Anim Move Keys" msgstr "アニメーションキーの移動" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "クリップボードが空です" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "クリップボードは空です!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2530,7 +2525,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "終了する前に、以下のシーンへの変更を保存しますか?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" "プロジェクトマネージャーを開く前に、以下のシーンへの変更を保存しますか?" @@ -11994,10 +11989,6 @@ msgid "Can't copy the function node." msgstr "ファンクションノードをコピーできません。" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "クリップボードは空です!" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "VisualScriptノードを貼り付け" @@ -13182,6 +13173,14 @@ msgstr "Varying変数は頂点関数にのみ割り当てることができま msgid "Constants cannot be modified." msgstr "定数は変更できません。" +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "アニメーションプレーヤーは他のプレーヤーだけにアニメーションを適用すること" +#~ "はできません。" + +#~ msgid "Clipboard is empty" +#~ msgstr "クリップボードが空です" + #~ msgid "" #~ "InterpolatedCamera has been deprecated and will be removed in Godot 4.0." #~ msgstr "InterpolatedCamera は廃止予定であり、Godot 4.0で除去されます。" diff --git a/editor/translations/ka.po b/editor/translations/ka.po index ce5c6dc032..587624651a 100644 --- a/editor/translations/ka.po +++ b/editor/translations/ka.po @@ -436,10 +436,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "შეუძლებელია დაამატო ახალი ჩანაწერი ფესვის გარეშე" @@ -491,9 +487,9 @@ msgid "Anim Move Keys" msgstr "ანიმაციის გასაღებების გადაადგილება" #: editor/animation_track_editor.cpp -#, fuzzy -msgid "Clipboard is empty" -msgstr "ბუფერი ცარიელია" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2529,7 +2525,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11863,10 +11859,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" @@ -12909,6 +12901,10 @@ msgid "Constants cannot be modified." msgstr "" #, fuzzy +#~ msgid "Clipboard is empty" +#~ msgstr "ბუფერი ცარიელია" + +#, fuzzy #~ msgid "Add initial export..." #~ msgstr "საყვარლები:" diff --git a/editor/translations/km.po b/editor/translations/km.po index ee77bab308..fe396cf590 100644 --- a/editor/translations/km.po +++ b/editor/translations/km.po @@ -402,10 +402,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "" @@ -450,7 +446,8 @@ msgid "Anim Move Keys" msgstr "" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" msgstr "" #: editor/animation_track_editor.cpp @@ -2409,7 +2406,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11481,10 +11478,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" diff --git a/editor/translations/ko.po b/editor/translations/ko.po index 9224ef5e65..ec9fed24ca 100644 --- a/editor/translations/ko.po +++ b/editor/translations/ko.po @@ -429,12 +429,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "애니메이션 트랙은 오직 AnimationPlayer 노드만 가리킬 수 있습니다." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" -"애니메이션 플레이어는 자신이 아닌 다른 플레이어에만 애니메이션을 부여할 수 있" -"습니다." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "루트 없이 새 트랙을 추가할 수 없음" @@ -479,8 +473,9 @@ msgid "Anim Move Keys" msgstr "애니메이션 키 이동" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "클립보드가 비었음" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "클립보드가 비었습니다!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2510,7 +2505,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "끄기 전에 해당 씬의 변경 사항을 저장할까요?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "프로젝트 매니저를 열기 전에 해당 씬의 변경 사항을 저장할까요?" #: editor/editor_node.cpp @@ -11908,10 +11903,6 @@ msgid "Can't copy the function node." msgstr "함수 노드를 복사할 수 없습니다." #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "클립보드가 비었습니다!" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "비주얼 스크립트 노드 붙여넣기" @@ -13071,6 +13062,14 @@ msgstr "Varying은 꼭짓점 함수에만 지정할 수 있습니다." msgid "Constants cannot be modified." msgstr "상수는 수정할 수 없습니다." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "애니메이션 플레이어는 자신이 아닌 다른 플레이어에만 애니메이션을 부여할 " +#~ "수 있습니다." + +#~ msgid "Clipboard is empty" +#~ msgstr "클립보드가 비었음" + #~ msgid "" #~ "Godot editor was built without ray tracing support; lightmaps can't be " #~ "baked.\n" diff --git a/editor/translations/lt.po b/editor/translations/lt.po index d4520d2d76..6df1f44cfb 100644 --- a/editor/translations/lt.po +++ b/editor/translations/lt.po @@ -418,10 +418,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Animacijos įrašai gali nurodyti į AnimacijosGrotuvo mazgus." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "Animacijos grotuvas negali animuoti savęs, tik kitus grotuvus." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Nėra galimybės pridėti naują įrašą be root" @@ -467,7 +463,8 @@ msgid "Anim Move Keys" msgstr "" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" msgstr "" #: editor/animation_track_editor.cpp @@ -2481,7 +2478,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11833,10 +11830,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" @@ -12880,6 +12873,9 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "Animacijos grotuvas negali animuoti savęs, tik kitus grotuvus." + #, fuzzy #~ msgid "Add initial export..." #~ msgstr "Mėgstamiausi:" diff --git a/editor/translations/lv.po b/editor/translations/lv.po index 360b8bcb8f..8c8a0011c7 100644 --- a/editor/translations/lv.po +++ b/editor/translations/lv.po @@ -413,10 +413,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Animācijas celiņi var norādīt tikai uz AnimationPlayer mezgliem." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "Animācijas atskaņotājs nevar animēt pats sevi, tikai citi spēlētāji." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Nevar izveidot jaunu celiņu bez saknes" @@ -461,8 +457,9 @@ msgid "Anim Move Keys" msgstr "Anim Pārvietot Atslēgas" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Starpliktuve ir tukša" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2455,7 +2452,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11641,10 +11638,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" @@ -12677,6 +12670,13 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "Animācijas atskaņotājs nevar animēt pats sevi, tikai citi spēlētāji." + +#~ msgid "Clipboard is empty" +#~ msgstr "Starpliktuve ir tukša" + #~ msgid "Add initial export..." #~ msgstr "Pievienot sākuma eksportu..." diff --git a/editor/translations/mi.po b/editor/translations/mi.po index 17b666c0e6..36a93be0ee 100644 --- a/editor/translations/mi.po +++ b/editor/translations/mi.po @@ -394,10 +394,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "" @@ -442,7 +438,8 @@ msgid "Anim Move Keys" msgstr "" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" msgstr "" #: editor/animation_track_editor.cpp @@ -2401,7 +2398,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11473,10 +11470,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" diff --git a/editor/translations/mk.po b/editor/translations/mk.po index 0443bd589e..7e5aa06f3c 100644 --- a/editor/translations/mk.po +++ b/editor/translations/mk.po @@ -401,10 +401,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "" @@ -449,7 +445,8 @@ msgid "Anim Move Keys" msgstr "" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" msgstr "" #: editor/animation_track_editor.cpp @@ -2408,7 +2405,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11480,10 +11477,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" diff --git a/editor/translations/ml.po b/editor/translations/ml.po index a25540d2cd..3919011ade 100644 --- a/editor/translations/ml.po +++ b/editor/translations/ml.po @@ -404,10 +404,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "" @@ -452,7 +448,8 @@ msgid "Anim Move Keys" msgstr "" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" msgstr "" #: editor/animation_track_editor.cpp @@ -2413,7 +2410,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11490,10 +11487,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" diff --git a/editor/translations/mr.po b/editor/translations/mr.po index 7e6f8f5cc5..4d81595cb1 100644 --- a/editor/translations/mr.po +++ b/editor/translations/mr.po @@ -401,10 +401,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "" @@ -449,7 +445,8 @@ msgid "Anim Move Keys" msgstr "" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" msgstr "" #: editor/animation_track_editor.cpp @@ -2408,7 +2405,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11481,10 +11478,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" diff --git a/editor/translations/ms.po b/editor/translations/ms.po index 82a4443b24..6226d644a3 100644 --- a/editor/translations/ms.po +++ b/editor/translations/ms.po @@ -413,11 +413,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Trek animasi hanya dapat ditujukan kepada nod AnimationPlayer." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" -"Pemain animasi tidak boleh animasikan dirinya sendiri, hanya pemain lain." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Tidak boleh menambah trek baru tanpa satu akar" @@ -462,8 +457,9 @@ msgid "Anim Move Keys" msgstr "Kunci Gerak Anim" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Papan klip kosong" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2514,7 +2510,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "Simpan perubahan pada adegan berikut sebelum keluar?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "Simpan perubahan adegan berikut sebelum membuka Pengurus Projek?" #: editor/editor_node.cpp @@ -11864,10 +11860,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" @@ -12889,6 +12881,13 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "Pemain animasi tidak boleh animasikan dirinya sendiri, hanya pemain lain." + +#~ msgid "Clipboard is empty" +#~ msgstr "Papan klip kosong" + #~ msgid "No" #~ msgstr "Tidak" diff --git a/editor/translations/nb.po b/editor/translations/nb.po index f040c4ca0e..042ee8d26f 100644 --- a/editor/translations/nb.po +++ b/editor/translations/nb.po @@ -422,11 +422,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Animasjonsspor kan kun peke på AnimationPlayer-noder." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" -"En animansjonsavspiller kan ikke animere seg selv, kun andre avspillere." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Ikke mulig å legge til et nytt spor uten en rot" @@ -471,8 +466,9 @@ msgid "Anim Move Keys" msgstr "Anim Flytt Nøkler" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Utklippstavlen er tom" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "Utklippsbordet er tomt!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2600,7 +2596,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "Lagre endring til følgende scene(r) før avslutting?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "Lagre endringer til følgende scene(r) før åpning av Prosjekt-Manager?" #: editor/editor_node.cpp @@ -12364,10 +12360,6 @@ msgid "Can't copy the function node." msgstr "Kan ikke kopiere funksjonsnoden." #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "Utklippsbordet er tomt!" - -#: modules/visual_script/visual_script_editor.cpp #, fuzzy msgid "Paste VisualScript Nodes" msgstr "Lim inn Noder" @@ -13420,6 +13412,13 @@ msgstr "" msgid "Constants cannot be modified." msgstr "Konstanter kan ikke endres." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "En animansjonsavspiller kan ikke animere seg selv, kun andre avspillere." + +#~ msgid "Clipboard is empty" +#~ msgstr "Utklippstavlen er tom" + #~ msgid "No" #~ msgstr "Nei" diff --git a/editor/translations/nl.po b/editor/translations/nl.po index 616c3ae69a..2410cd5ad0 100644 --- a/editor/translations/nl.po +++ b/editor/translations/nl.po @@ -451,10 +451,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Animatiesporen kunnen alleen verwijzen naar AnimatiePlayer-knopen." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "Een animatiespeler kan zichzelf niet animeren, alleen andere spelers." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Niet mogelijk om een nieuwe track toe te voegen zonder een root" @@ -499,8 +495,9 @@ msgid "Anim Move Keys" msgstr "Anim Verplaats Keys" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Klembord is leeg" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "Plakbord is leeg!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2550,7 +2547,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "Wijzigen aan de volgende scène(s) opslaan voor het afsluiten?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" "Wijzigen aan de volgende scène(s) opslaan voor het openen van Projectbeheer?" @@ -12047,10 +12044,6 @@ msgid "Can't copy the function node." msgstr "Kan het functieknoop niet kopiëren." #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "Plakbord is leeg!" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "Plak VisualScipt knoopen" @@ -13237,6 +13230,13 @@ msgstr "Varyings kunnen alleen worden toegewezenin vertex functies." msgid "Constants cannot be modified." msgstr "Constanten kunnen niet worden aangepast." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "Een animatiespeler kan zichzelf niet animeren, alleen andere spelers." + +#~ msgid "Clipboard is empty" +#~ msgstr "Klembord is leeg" + #~ msgid "No" #~ msgstr "Nee" diff --git a/editor/translations/or.po b/editor/translations/or.po index 58214daf10..87528cdac5 100644 --- a/editor/translations/or.po +++ b/editor/translations/or.po @@ -400,10 +400,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "" @@ -448,7 +444,8 @@ msgid "Anim Move Keys" msgstr "" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" msgstr "" #: editor/animation_track_editor.cpp @@ -2407,7 +2404,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11479,10 +11476,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" diff --git a/editor/translations/pl.po b/editor/translations/pl.po index 83d36da5bb..3c51593e02 100644 --- a/editor/translations/pl.po +++ b/editor/translations/pl.po @@ -17,7 +17,7 @@ # Maksymilian Świąć <maksymilian.swiac@gmail.com>, 2017-2018. # Mietek Szcześniak <ravaging@go2.pl>, 2016. # NeverK <neverkoxu@gmail.com>, 2018, 2019, 2020. -# Rafal Brozio <rafal.brozio@gmail.com>, 2016, 2019, 2020. +# Rafal Brozio <rafal.brozio@gmail.com>, 2016, 2019, 2020, 2021. # Rafał Ziemniak <synaptykq@gmail.com>, 2017. # RM <synaptykq@gmail.com>, 2018, 2020. # Sebastian Krzyszkowiak <dos@dosowisko.net>, 2017. @@ -52,8 +52,8 @@ msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-06-20 13:35+0000\n" -"Last-Translator: Tomek <kobewi4e@gmail.com>\n" +"PO-Revision-Date: 2021-07-05 14:32+0000\n" +"Last-Translator: Rafal Brozio <rafal.brozio@gmail.com>\n" "Language-Team: Polish <https://hosted.weblate.org/projects/godot-engine/" "godot/pl/>\n" "Language: pl\n" @@ -62,7 +62,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.7\n" +"X-Generator: Weblate 4.8-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -454,11 +454,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Ścieżki animacji mogą wskazywać tylko na węzły AnimationPlayer." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" -"AnimationPlayer nie może animować sam siebie, tylko inne węzły tego typu." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Nie da się dodać nowej ścieżki bez korzenia" @@ -503,8 +498,9 @@ msgid "Anim Move Keys" msgstr "Przemieść klucze animacji" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Schowek jest pusty" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "Schowek jest pusty!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2538,7 +2534,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "Czy zapisać zmiany w aktualnej scenie/scenach przed wyjściem?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" "Zapisać zmiany w następujących scenach przed otwarciem menedżera projektów?" @@ -4700,7 +4696,7 @@ msgstr "Otwórz w inspektorze" #: editor/plugins/animation_player_editor_plugin.cpp msgid "Display list of animations in player." -msgstr "Wyświetl listę animacji w odtwarzaczu." +msgstr "Pokaż listę animacji w odtwarzaczu." #: editor/plugins/animation_player_editor_plugin.cpp msgid "Autoplay on Load" @@ -12019,10 +12015,6 @@ msgid "Can't copy the function node." msgstr "Nie można skopiować węzła funkcji." #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "Schowek jest pusty!" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "Wklej węzeł VisualScript" @@ -13223,6 +13215,13 @@ msgstr "Varying może być przypisane tylko w funkcji wierzchołków." msgid "Constants cannot be modified." msgstr "Stałe nie mogą być modyfikowane." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "AnimationPlayer nie może animować sam siebie, tylko inne węzły tego typu." + +#~ msgid "Clipboard is empty" +#~ msgstr "Schowek jest pusty" + #~ msgid "" #~ "InterpolatedCamera has been deprecated and will be removed in Godot 4.0." #~ msgstr "" diff --git a/editor/translations/pr.po b/editor/translations/pr.po index e308deb01b..675c9cf506 100644 --- a/editor/translations/pr.po +++ b/editor/translations/pr.po @@ -427,10 +427,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "" @@ -476,7 +472,8 @@ msgid "Anim Move Keys" msgstr "" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" msgstr "" #: editor/animation_track_editor.cpp @@ -2487,7 +2484,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11907,10 +11904,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp #, fuzzy msgid "Paste VisualScript Nodes" msgstr "Paste yer Node" diff --git a/editor/translations/pt.po b/editor/translations/pt.po index d2db134026..17b1861821 100644 --- a/editor/translations/pt.po +++ b/editor/translations/pt.po @@ -18,12 +18,13 @@ # Manuela Silva <mmsrs@sky.com>, 2020. # Murilo Gama <murilovsky2030@gmail.com>, 2020. # Ricardo Subtil <ricasubtil@gmail.com>, 2020. +# André Silva <andre.olivais@gmail.com>, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-05-18 14:51+0000\n" -"Last-Translator: João Lopes <linux-man@hotmail.com>\n" +"PO-Revision-Date: 2021-07-03 10:33+0000\n" +"Last-Translator: André Silva <andre.olivais@gmail.com>\n" "Language-Team: Portuguese <https://hosted.weblate.org/projects/godot-engine/" "godot/pt/>\n" "Language: pt\n" @@ -31,7 +32,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.7-dev\n" +"X-Generator: Weblate 4.8-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -424,12 +425,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Pistas de Animação só podem apontar a nós AnimationPlayer." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" -"Um reprodutor de animação não se pode animar a ele próprio, apenas a outros " -"reprodutores." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Não é possível adicionar nova pista sem uma raiz" @@ -474,8 +469,9 @@ msgid "Anim Move Keys" msgstr "Anim Mover Chaves" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Área de Transferência está vazia" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "Área de Transferência está vazia!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -1132,7 +1128,7 @@ msgstr "Agradecimentos da Comunidade Godot!" #: editor/editor_about.cpp editor/editor_node.cpp editor/project_manager.cpp msgid "Click to copy." -msgstr "" +msgstr "Clique para copiar." #: editor/editor_about.cpp msgid "Godot Engine contributors" @@ -2516,7 +2512,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "Guardar alterações da(s) seguinte(s) cena(s) antes de sair?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" "Guardar alterações da(s) seguinte(s) cena(s) antes de abrir o Gestor de " "Projeto?" @@ -11985,10 +11981,6 @@ msgid "Can't copy the function node." msgstr "Não consigo copiar o nó função." #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "Área de Transferência está vazia!" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "Colar Nós VisualScript" @@ -13181,6 +13173,14 @@ msgstr "Variações só podem ser atribuídas na função vértice." msgid "Constants cannot be modified." msgstr "Constantes não podem ser modificadas." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "Um reprodutor de animação não se pode animar a ele próprio, apenas a " +#~ "outros reprodutores." + +#~ msgid "Clipboard is empty" +#~ msgstr "Área de Transferência está vazia" + #~ msgid "" #~ "InterpolatedCamera has been deprecated and will be removed in Godot 4.0." #~ msgstr "InterpolatedCamerda foi descontinuada e será removida no Godot 4.0." diff --git a/editor/translations/pt_BR.po b/editor/translations/pt_BR.po index 49a7b43571..e79dd0fa19 100644 --- a/editor/translations/pt_BR.po +++ b/editor/translations/pt_BR.po @@ -522,11 +522,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Faixas de animação só podem apontar para nós AnimationPlayer." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" -"Um tocador de animação não pode animar a si mesmo, apenas outros tocadores." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Não é possível adicionar uma nova trilha sem uma raiz" @@ -572,8 +567,9 @@ msgid "Anim Move Keys" msgstr "Mover Chaves da Anim" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Área de transferência vazia" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "Área de transferência vazia!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2613,7 +2609,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "Salvar alterações na(s) seguinte(s) cena(s) antes de sair?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" "Salvar alterações na(s) seguinte(s) cena(s) antes de abrir o Gerenciador de " "Projetos?" @@ -12107,10 +12103,6 @@ msgid "Can't copy the function node." msgstr "Não é possível copiar o nó de função." #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "Área de transferência vazia!" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "Colar Nodes VisualScript" @@ -13315,6 +13307,14 @@ msgstr "Variáveis só podem ser atribuídas na função de vértice." msgid "Constants cannot be modified." msgstr "Constantes não podem serem modificadas." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "Um tocador de animação não pode animar a si mesmo, apenas outros " +#~ "tocadores." + +#~ msgid "Clipboard is empty" +#~ msgstr "Área de transferência vazia" + #~ msgid "" #~ "InterpolatedCamera has been deprecated and will be removed in Godot 4.0." #~ msgstr "IntepolatedCamera foi depreciada e será removida no Godot 4.0." diff --git a/editor/translations/ro.po b/editor/translations/ro.po index ec89b47e96..7ac06fc1b1 100644 --- a/editor/translations/ro.po +++ b/editor/translations/ro.po @@ -420,12 +420,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Pistele de animație pot direcționa numai nodurilor AnimațieJucător." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" -"Un player de animatie nu se poate anima insusi, doar alti playeri de " -"animatie." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Nu este posibil să fie adăugată o nouă pistă fără a avea o rădăcină" @@ -470,8 +464,9 @@ msgid "Anim Move Keys" msgstr "Anim Mutați Cheie" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Clip-board de resurse gol" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2520,7 +2515,7 @@ msgstr "" "Salvezi modificările făcute în urmatoarea(le) scenă(e) înainte să închizi?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" "Salvezi modificările făcute în urmatoarea(le) scenă(e) înainte să deschizi " "Managerul de Proiect?" @@ -12046,10 +12041,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" @@ -13088,6 +13079,14 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "Un player de animatie nu se poate anima insusi, doar alti playeri de " +#~ "animatie." + +#~ msgid "Clipboard is empty" +#~ msgstr "Clip-board de resurse gol" + #~ msgid "No" #~ msgstr "Nu" diff --git a/editor/translations/ru.po b/editor/translations/ru.po index 0da9285077..4b56d21383 100644 --- a/editor/translations/ru.po +++ b/editor/translations/ru.po @@ -96,11 +96,12 @@ # IindinAndEdresia <kapitan_pol@inbox.ru>, 2021. # Bualma Show <appleaidar6@gmail.com>, 2021. # enderlorde <madel.laboratories@gmail.com>, 2021. +# Олег Довгер <oleg.a.dovger@gmail.com>, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-06-27 07:10+0000\n" +"PO-Revision-Date: 2021-07-13 06:13+0000\n" "Last-Translator: Danil Alexeev <danil@alexeev.xyz>\n" "Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/" "godot/ru/>\n" @@ -110,12 +111,13 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.7.1-dev\n" +"X-Generator: Weblate 4.7.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp msgid "Invalid type argument to convert(), use TYPE_* constants." -msgstr "Неверный параметр типа для convert(), используйте константы TYPE_*." +msgstr "" +"Недопустимый аргумент type для convert(), используйте константы TYPE_*." #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp msgid "Expected a string of length 1 (a character)." @@ -502,10 +504,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Дорожки анимации могут указывать только на узлы типа AnimationPlayer." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "Проигрыватель анимации не может анимировать сам себя, только других." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Нельзя добавить новую дорожку без корневого узла" @@ -550,8 +548,9 @@ msgid "Anim Move Keys" msgstr "Переместить ключи" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Буфер обмена пуст" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "Буфер обмена пуст!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2592,7 +2591,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "Сохранить изменения в следующей сцене(ы) перед выходом?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" "Сохранить изменения в следующей сцене(ы) перед открытием менеджера проектов?" @@ -12071,10 +12070,6 @@ msgid "Can't copy the function node." msgstr "Не удаётся копировать узел функции." #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "Буфер обмена пуст!" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "Вставить узлы VisualScript" @@ -13267,6 +13262,13 @@ msgstr "Изменения могут быть назначены только msgid "Constants cannot be modified." msgstr "Константы не могут быть изменены." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "Проигрыватель анимации не может анимировать сам себя, только других." + +#~ msgid "Clipboard is empty" +#~ msgstr "Буфер обмена пуст" + #~ msgid "" #~ "InterpolatedCamera has been deprecated and will be removed in Godot 4.0." #~ msgstr "InterpolatedCamera устарела и будет удалена в Godot 4.0." diff --git a/editor/translations/si.po b/editor/translations/si.po index 89c1b2ffc8..a5586af274 100644 --- a/editor/translations/si.po +++ b/editor/translations/si.po @@ -418,10 +418,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "AnimationPlayer පුරුක් සදහා පමණක් සජීවීකරණ ලුහුබදින්නන් එක් කළ හැක." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "" @@ -470,7 +466,8 @@ msgid "Anim Move Keys" msgstr "" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" msgstr "" #: editor/animation_track_editor.cpp @@ -2433,7 +2430,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11573,10 +11570,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" diff --git a/editor/translations/sk.po b/editor/translations/sk.po index 5d5b9cba9b..d97e1321ef 100644 --- a/editor/translations/sk.po +++ b/editor/translations/sk.po @@ -11,12 +11,13 @@ # Richard Urban <redasuio1@gmail.com>, 2020. # Anonymous <noreply@weblate.org>, 2020. # Mario-projects-dev <m.vitek.mv@gmail.com>, 2021. +# Eliška Fichnová <eliska@fichna.sk>, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-04-11 22:02+0000\n" -"Last-Translator: Mario-projects-dev <m.vitek.mv@gmail.com>\n" +"PO-Revision-Date: 2021-07-07 15:34+0000\n" +"Last-Translator: Eliška Fichnová <eliska@fichna.sk>\n" "Language-Team: Slovak <https://hosted.weblate.org/projects/godot-engine/" "godot/sk/>\n" "Language: sk\n" @@ -24,7 +25,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 4.6-dev\n" +"X-Generator: Weblate 4.8-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -414,10 +415,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Track-y Animácií môžu ukazovať iba na node-y AnimationPlayer." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "Animation player sa nemôže naanimovať sám, iba ostatné player-y." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Není možné pridať nový track bez root-u" @@ -462,8 +459,9 @@ msgid "Anim Move Keys" msgstr "Pohybové kľúče Animácie" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Schránka je prázdna" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -1116,7 +1114,7 @@ msgstr "Vďaka z Godot komunity!" #: editor/editor_about.cpp editor/editor_node.cpp editor/project_manager.cpp msgid "Click to copy." -msgstr "" +msgstr "Klikni na skopírovanie." #: editor/editor_about.cpp msgid "Godot Engine contributors" @@ -1610,13 +1608,12 @@ msgstr "" "Etc' v Nastaveniach Projektu." #: editor/editor_export.cpp -#, fuzzy msgid "" "Target platform requires 'ETC2' or 'PVRTC' texture compression for GLES3. " "Enable 'Import Etc 2' or 'Import Pvrtc' in Project Settings." msgstr "" -"Target platforma potrebuje 'ETC2' kompresor textúr pre GLES3. Povoliť'Import " -"Etc 2' v Nastaveniach Projektu." +"Cieľová platforma potrebuje 'ETC2' alebo 'PVRTC' kompresor textúr pre GLES3. " +"Povoľte 'Import Etc 2' alebo 'Import Pvrtc' v Nastaveniach Projektu." #: editor/editor_export.cpp #, fuzzy @@ -2309,6 +2306,8 @@ msgid "" "An error occurred while trying to save the editor layout.\n" "Make sure the editor's user data path is writable." msgstr "" +"Nastala chyba pri pokuse o uloženie rozloženia editoru.\n" +"Uistite sa, že cesta uživateľských dát editoru je zapisovateľná." #: editor/editor_node.cpp msgid "" @@ -2316,15 +2315,17 @@ msgid "" "To restore the Default layout to its base settings, use the Delete Layout " "option and delete the Default layout." msgstr "" +"Prednastavené rozloženie editoru prepísané.\n" +"Na obnovenie Prednastaveného rozloženia na základné nastavenia, použite " +"možnosť Vymazať Rozloženie a vymažte Prednastavené rozloženie." #: editor/editor_node.cpp msgid "Layout name not found!" msgstr "Meno Layout-u sa nenašlo!" #: editor/editor_node.cpp -#, fuzzy msgid "Restored the Default layout to its base settings." -msgstr "Obnovené predvolené rozloženie na základné nastavenia." +msgstr "Predvolené rozloženie bolo obnovené na základné nastavenia." #: editor/editor_node.cpp msgid "" @@ -2381,7 +2382,7 @@ msgstr "Nieje definovaná žiadna scéna na spustenie." #: editor/editor_node.cpp msgid "Save scene before running..." -msgstr "" +msgstr "Uložiť scénu pred spustením..." #: editor/editor_node.cpp msgid "Could not start subprocess!" @@ -2496,7 +2497,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "Uložiť zmeny do nasledujúcich scén pred ukončením?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "Uložiť zmeny nasledujúcich scén pred otvorením Manažéra Projektov?" #: editor/editor_node.cpp @@ -2525,24 +2526,22 @@ msgstr "" "Addon plugin nie je možné povoliť pri: '% s' analýze konfigurácie zlyhalo." #: editor/editor_node.cpp -#, fuzzy msgid "Unable to find script field for addon plugin at: '%s'." -msgstr "" -"Nepodarilo sa nájsť script field pre addon plugin v: 'res://addons/%s'." +msgstr "Nepodarilo sa nájsť pole skriptu pre addon plugin v: '%s'." #: editor/editor_node.cpp msgid "Unable to load addon script from path: '%s'." msgstr "Nepodarilo sa načítať addon script z cesty: '%s'." #: editor/editor_node.cpp -#, fuzzy msgid "" "Unable to load addon script from path: '%s'. This might be due to a code " "error in that script.\n" "Disabling the addon at '%s' to prevent further errors." msgstr "" -"Nepodarilo sa nájsť addon script z cesty: '%s' Vyzerá to tak že by mohol byť " -"problém v kóde, prosím skontrolujte syntax." +"Nebolo možné načítať addon skript z cesty: '%s'. Toto môže byť spôsobené " +"chybou kódu v skripte.\n" +"Deaktivujem addon z '%s', aby sa predišlo ďalším chybám." #: editor/editor_node.cpp msgid "" @@ -2985,7 +2984,7 @@ msgstr "O nás" #: editor/editor_node.cpp msgid "Support Godot Development" -msgstr "" +msgstr "Podporte vývoj Godot" #: editor/editor_node.cpp msgid "Play the project." @@ -3127,21 +3126,22 @@ msgid "Open & Run a Script" msgstr "Otvoriť a vykonať skript" #: editor/editor_node.cpp -#, fuzzy msgid "" "The following files are newer on disk.\n" "What action should be taken?" -msgstr "Nasledovné súbory sa nepodarilo extrahovať z balíka:" +msgstr "" +"Nasledujúce súbory majú novšiu verziu na disku.\n" +"Aká akcia sa má vykonať?" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp #: editor/plugins/shader_editor_plugin.cpp msgid "Reload" -msgstr "" +msgstr "Znovu načítať" #: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp #: editor/plugins/shader_editor_plugin.cpp msgid "Resave" -msgstr "" +msgstr "Znovu uložiť" #: editor/editor_node.cpp msgid "New Inherited" @@ -3670,6 +3670,8 @@ msgstr "" msgid "" "Importing has been disabled for this file, so it can't be opened for editing." msgstr "" +"Importovanie bolo zablokované pre tento súbor, čiže nemôže byť otvorený pre " +"úpravy." #: editor/filesystem_dock.cpp msgid "Cannot move/rename resources root." @@ -3716,6 +3718,12 @@ msgid "" "\n" "Do you wish to overwrite them?" msgstr "" +"Nasledujúce súbory alebo zložky sú v konflikte s položkami v cieľovom " +"umiestnení '%s':\n" +"\n" +"%s\n" +"\n" +"Prajete si ich prepísať?" #: editor/filesystem_dock.cpp msgid "Renaming file:" @@ -3796,9 +3804,8 @@ msgid "Duplicate..." msgstr "Duplikovať..." #: editor/filesystem_dock.cpp -#, fuzzy msgid "Move to Trash" -msgstr "Presunúť AutoLoad-y" +msgstr "Presunúť do odpadkov" #: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp msgid "Rename..." @@ -3909,19 +3916,16 @@ msgid "Searching..." msgstr "Vyhľadávam..." #: editor/find_in_files.cpp -#, fuzzy msgid "%d match in %d file." -msgstr "%d zhody." +msgstr "%d zhoda v %d súbore." #: editor/find_in_files.cpp -#, fuzzy msgid "%d matches in %d file." -msgstr "%d zhody." +msgstr "%d zhôd v % súbore." #: editor/find_in_files.cpp -#, fuzzy msgid "%d matches in %d files." -msgstr "%d zhody." +msgstr "%d zhôd v %d súboroch." #: editor/groups_editor.cpp msgid "Add to Group" @@ -4058,23 +4062,20 @@ msgid "Saving..." msgstr "Ukladám..." #: editor/import_defaults_editor.cpp -#, fuzzy msgid "Select Importer" -msgstr "Vybrať Režim" +msgstr "Vybrať Importér" #: editor/import_defaults_editor.cpp -#, fuzzy msgid "Importer:" -msgstr "Import" +msgstr "Importér:" #: editor/import_defaults_editor.cpp -#, fuzzy msgid "Reset to Defaults" -msgstr "Načítať predvolené" +msgstr "Obnoviť na východzie" #: editor/import_dock.cpp msgid "Keep File (No Import)" -msgstr "" +msgstr "Ponechať súbor (bez importu)" #: editor/import_dock.cpp msgid "%d Files" @@ -5040,9 +5041,8 @@ msgid "Got:" msgstr "Má:" #: editor/plugins/asset_library_editor_plugin.cpp -#, fuzzy msgid "Failed SHA-256 hash check" -msgstr "Zlyhalo sha256 hash check" +msgstr "Zlyhalo overenie SHA-256 hashu" #: editor/plugins/asset_library_editor_plugin.cpp msgid "Asset Download Error:" @@ -11938,10 +11938,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp #, fuzzy msgid "Paste VisualScript Nodes" msgstr "Vložiť" @@ -13001,6 +12997,12 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "Animation player sa nemôže naanimovať sám, iba ostatné player-y." + +#~ msgid "Clipboard is empty" +#~ msgstr "Schránka je prázdna" + #~ msgid "No" #~ msgstr "Nie" diff --git a/editor/translations/sl.po b/editor/translations/sl.po index 2ac453123c..07bd33c389 100644 --- a/editor/translations/sl.po +++ b/editor/translations/sl.po @@ -440,10 +440,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "" @@ -493,7 +489,8 @@ msgid "Anim Move Keys" msgstr "Animacija Premakni ključ" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" msgstr "" #: editor/animation_track_editor.cpp @@ -2606,7 +2603,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "Shranim spremembe na sledečih scenah pred zaprtjem?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" "Shranim spremembe na sledečih scenah pred odpiranjem Upravljalnika Projekta?" @@ -12321,10 +12318,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" diff --git a/editor/translations/sq.po b/editor/translations/sq.po index 4409a6f48a..49a42b5553 100644 --- a/editor/translations/sq.po +++ b/editor/translations/sq.po @@ -407,10 +407,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "" @@ -455,8 +451,9 @@ msgid "Anim Move Keys" msgstr "" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Clipboard-i është bosh" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2548,7 +2545,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "Ruaj ndryshimet nga skenat e mëposhtme përpara se të dalësh?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" "Ruaj ndryshimet ne skenat e mëposhtme para se të hapësh Menaxherin e " "Projekteve?" @@ -11927,10 +11924,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" @@ -12962,6 +12955,9 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "Clipboard is empty" +#~ msgstr "Clipboard-i është bosh" + #~ msgid "No" #~ msgstr "Jo" diff --git a/editor/translations/sr_Cyrl.po b/editor/translations/sr_Cyrl.po index 3ba1c674a3..53fb04b3e4 100644 --- a/editor/translations/sr_Cyrl.po +++ b/editor/translations/sr_Cyrl.po @@ -457,11 +457,6 @@ msgstr "Анимационе траке могу само усмеравати #: editor/animation_track_editor.cpp #, fuzzy -msgid "An animation player can't animate itself, only other players." -msgstr "Анимациони плејер не може анимирати самог себе, само друге плејере." - -#: editor/animation_track_editor.cpp -#, fuzzy msgid "Not possible to add a new track without a root" msgstr "Није могуже додати нову траку без корена" @@ -515,9 +510,9 @@ msgid "Anim Move Keys" msgstr "Помери кључеве" #: editor/animation_track_editor.cpp -#, fuzzy -msgid "Clipboard is empty" -msgstr "Нема ресурса за копирање!" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "" #: editor/animation_track_editor.cpp #, fuzzy @@ -2727,7 +2722,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "Сачувај промене тренутне сцене/а пре излазка?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "Сачувај промене тренутне сцене/а пре отварање менаџера пројекта?" #: editor/editor_node.cpp @@ -13503,10 +13498,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" @@ -14817,6 +14808,14 @@ msgstr "Варијације могу само бити одређене у фу msgid "Constants cannot be modified." msgstr "Константе није могуће мењати." +#, fuzzy +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "Анимациони плејер не може анимирати самог себе, само друге плејере." + +#, fuzzy +#~ msgid "Clipboard is empty" +#~ msgstr "Нема ресурса за копирање!" + #~ msgid "No" #~ msgstr "Не" diff --git a/editor/translations/sr_Latn.po b/editor/translations/sr_Latn.po index fcab84a2bf..0a90379b41 100644 --- a/editor/translations/sr_Latn.po +++ b/editor/translations/sr_Latn.po @@ -422,10 +422,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "" @@ -473,7 +469,8 @@ msgid "Anim Move Keys" msgstr "Animacija Pomjeri Ključeve" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" msgstr "" #: editor/animation_track_editor.cpp @@ -2446,7 +2443,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11665,10 +11662,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" diff --git a/editor/translations/sv.po b/editor/translations/sv.po index c5cad10f66..0c5db25a9a 100644 --- a/editor/translations/sv.po +++ b/editor/translations/sv.po @@ -22,12 +22,13 @@ # Shaggy <anton_christoffersson@hotmail.com>, 2020. # Marcus Toftedahl <marcus.toftedahl@his.se>, 2020. # Alex25820 <Alexander_sjogren@hotmail.se>, 2021. +# Leon <joel.lundborg@gmail.com>, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-05-03 21:29+0000\n" -"Last-Translator: Alex25820 <Alexander_sjogren@hotmail.se>\n" +"PO-Revision-Date: 2021-07-13 06:13+0000\n" +"Last-Translator: Leon <joel.lundborg@gmail.com>\n" "Language-Team: Swedish <https://hosted.weblate.org/projects/godot-engine/" "godot/sv/>\n" "Language: sv\n" @@ -35,7 +36,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.7-dev\n" +"X-Generator: Weblate 4.7.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -426,11 +427,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Animationsspår kan bara peka på AnimationsSpelar noder." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" -"En animationsspelare kan inte animera sig själv, utan bara andra spelare." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Det är inte möjligt att lägga till ett nytt spår utan en rot-nod" @@ -475,8 +471,9 @@ msgid "Anim Move Keys" msgstr "Anim Flytta Nycklar" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Urklipp är tomt" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -1134,7 +1131,7 @@ msgstr "Tack från Godot-gemenskapen!" #: editor/editor_about.cpp editor/editor_node.cpp editor/project_manager.cpp msgid "Click to copy." -msgstr "" +msgstr "Klicka för att kopiera." #: editor/editor_about.cpp msgid "Godot Engine contributors" @@ -1667,14 +1664,12 @@ msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB." msgstr "Den inbäddade PCK får inte vara större än 4 GiB på 32 bitars exporter." #: editor/editor_feature_profile.cpp -#, fuzzy msgid "3D Editor" -msgstr "Öppna Skript-Redigerare" +msgstr "Öppna 3D-redigeraren" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Script Editor" -msgstr "Öppna Skript-Redigerare" +msgstr "Öppna Skript-Redigeraren" #: editor/editor_feature_profile.cpp msgid "Asset Library" @@ -1699,18 +1694,16 @@ msgid "Import Dock" msgstr "Importera" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Erase profile '%s'? (no undo)" -msgstr "Ersätt Alla" +msgstr "Rensa profil ‘%s’? (Du kan inte ångra den här åtgärden )" #: editor/editor_feature_profile.cpp msgid "Profile must be a valid filename and must not contain '.'" msgstr "Profilen måste ha ett giltigt filnamn och får inte innehålla '.'" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Profile with this name already exists." -msgstr "En fil eller mapp med detta namn finns redan." +msgstr "En profil med detta namn finns redan." #: editor/editor_feature_profile.cpp msgid "(Editor Disabled, Properties Disabled)" @@ -1768,9 +1761,8 @@ msgid "Unset" msgstr "" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Current Profile:" -msgstr "Nuvarande Version:" +msgstr "Nuvarande Profil:" #: editor/editor_feature_profile.cpp msgid "Make Current" @@ -1792,9 +1784,8 @@ msgid "Export" msgstr "Exportera" #: editor/editor_feature_profile.cpp -#, fuzzy msgid "Available Profiles:" -msgstr "Tillgängliga Noder:" +msgstr "Tillgängliga Profiler:" #: editor/editor_feature_profile.cpp #, fuzzy @@ -2561,7 +2552,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "Spara ändringar av följande scen(er) innan du avslutar?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" "Spara ändringar av följande scen(er) innan du öppnar Projekthanteraren?" @@ -12074,10 +12065,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" @@ -13142,6 +13129,13 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "En animationsspelare kan inte animera sig själv, utan bara andra spelare." + +#~ msgid "Clipboard is empty" +#~ msgstr "Urklipp är tomt" + #~ msgid "No" #~ msgstr "Nej" diff --git a/editor/translations/ta.po b/editor/translations/ta.po index c630966603..0c9022b097 100644 --- a/editor/translations/ta.po +++ b/editor/translations/ta.po @@ -421,10 +421,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "" @@ -472,7 +468,8 @@ msgid "Anim Move Keys" msgstr "" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" msgstr "" #: editor/animation_track_editor.cpp @@ -2437,7 +2434,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11576,10 +11573,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" diff --git a/editor/translations/te.po b/editor/translations/te.po index f1d857b911..8274d5520f 100644 --- a/editor/translations/te.po +++ b/editor/translations/te.po @@ -403,10 +403,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "" @@ -451,7 +447,8 @@ msgid "Anim Move Keys" msgstr "" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" msgstr "" #: editor/animation_track_editor.cpp @@ -2410,7 +2407,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11483,10 +11480,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" diff --git a/editor/translations/th.po b/editor/translations/th.po index 0edcf900b9..e9c2a80a49 100644 --- a/editor/translations/th.po +++ b/editor/translations/th.po @@ -427,10 +427,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "แทร็กอนิเมชั่นสามารถติดไว้บนโหนด AnimationPlayer เท่านั้น" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "แทร็กอนิเมชั่นไม่สามารถเล่นตัวมันเองได้ แต่สามารถเล่นตัวเล่นอื่นได้" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "ไม่สามารถที่จะเพิ่มแทร็กใหม่โดยที่ไม่มีรูท" @@ -475,8 +471,9 @@ msgid "Anim Move Keys" msgstr "ย้ายคีย์แอนิเมชัน" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "คลิปบอร์ดว่างเปล่า" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "คลิปบอร์ดว่างเปล่า!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2483,7 +2480,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "บันทึกฉากต่อไปนี้ก่อนปิดโปรแกรมหรือไม่?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "บันทึกฉากต่อไปนี้ก่อนกลับสู่ตัวจัดการโปรเจกต์หรือไม่?" #: editor/editor_node.cpp @@ -11801,10 +11798,6 @@ msgid "Can't copy the function node." msgstr "คัดลอกโหนดฟังก์ชันไม่ได้" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "คลิปบอร์ดว่างเปล่า!" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "วางโหนด VisualScript" @@ -12913,6 +12906,12 @@ msgstr "Varyings สามารถกำหนดในังก์ชันเ msgid "Constants cannot be modified." msgstr "ค่าคงที่ไม่สามารถแก้ไขได้" +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "แทร็กอนิเมชั่นไม่สามารถเล่นตัวมันเองได้ แต่สามารถเล่นตัวเล่นอื่นได้" + +#~ msgid "Clipboard is empty" +#~ msgstr "คลิปบอร์ดว่างเปล่า" + #~ msgid "" #~ "InterpolatedCamera has been deprecated and will be removed in Godot 4.0." #~ msgstr "InterpolatedCamera เลิกใช้งานแล้วและจะถูกลบออกใน Godot 4.0" diff --git a/editor/translations/tr.po b/editor/translations/tr.po index 5892850caf..578d7b48d0 100644 --- a/editor/translations/tr.po +++ b/editor/translations/tr.po @@ -60,12 +60,13 @@ # Jafar Tarverdiyev <cefertarverdiyevv@gmail.com>, 2021. # ali aydın <alimxaydin@gmail.com>, 2021. # Cannur Daşkıran <canndask@gmail.com>, 2021. +# kahveciderin <kahveciderin@gmail.com>, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-05-29 13:49+0000\n" -"Last-Translator: ali aydın <alimxaydin@gmail.com>\n" +"PO-Revision-Date: 2021-07-13 06:13+0000\n" +"Last-Translator: kahveciderin <kahveciderin@gmail.com>\n" "Language-Team: Turkish <https://hosted.weblate.org/projects/godot-engine/" "godot/tr/>\n" "Language: tr\n" @@ -73,7 +74,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.7-dev\n" +"X-Generator: Weblate 4.7.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -464,12 +465,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Animasyon izleri sadece AnimasyonOynatıcı düğümlerini işaret edebilir." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" -"Bir animasyon oynatıcı kendisini oynamataz, sadece diğer oynatıcılar " -"yapaibilir." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Bir kök olmadan yeni bir iz eklemek mümkün değildir" @@ -514,8 +509,9 @@ msgid "Anim Move Keys" msgstr "Animasyon Anahtarları Taşı" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Pano boş" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "Pano boş!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -1173,7 +1169,7 @@ msgstr "Godot topluluğundan teşekkürler!" #: editor/editor_about.cpp editor/editor_node.cpp editor/project_manager.cpp msgid "Click to copy." -msgstr "" +msgstr "Kopyalamak için tıklayın." #: editor/editor_about.cpp msgid "Godot Engine contributors" @@ -2554,7 +2550,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "Çıkmadan önce değişiklikler aşağıdaki sahne(ler)e kaydedilsin mi?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" "Proje Yöneticisi açılmadan önce değişiklikler aşağıdaki sahneye(lere) " "kaydedilsin mi?" @@ -12023,10 +12019,6 @@ msgid "Can't copy the function node." msgstr "Fonksiyon düğümü kopyalanamıyor." #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "Pano boş!" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "GörselBetik Düğümleri Yapıştır" @@ -12238,6 +12230,8 @@ msgid "" "Either Debug Keystore, Debug User AND Debug Password settings must be " "configured OR none of them." msgstr "" +"Hata Ayıklama Anahtar Deposu, Hata Ayıklama Kullanıcısı VE Hata Ayıklama " +"Şifresi konfigüre edilmelidir VEYA hiçbiri konfigüre edilmemelidir." #: platform/android/export/export.cpp msgid "Debug keystore not configured in the Editor Settings nor in the preset." @@ -12250,6 +12244,8 @@ msgid "" "Either Release Keystore, Release User AND Release Password settings must be " "configured OR none of them." msgstr "" +"Yayınlama Anahtar Deposu, Yayınlama Kullanıcısı be Yayınlama Şifresi " +"ayarları konfigüre edilmeli VEYA hiçbiri konfigüre edilmemelidir." #: platform/android/export/export.cpp msgid "Release keystore incorrectly configured in the export preset." @@ -13215,6 +13211,14 @@ msgstr "varyings yalnızca vertex işlevinde atanabilir." msgid "Constants cannot be modified." msgstr "Sabit değerler değiştirilemez." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "Bir animasyon oynatıcı kendisini oynamataz, sadece diğer oynatıcılar " +#~ "yapaibilir." + +#~ msgid "Clipboard is empty" +#~ msgstr "Pano boş" + #~ msgid "" #~ "InterpolatedCamera has been deprecated and will be removed in Godot 4.0." #~ msgstr "" diff --git a/editor/translations/tt.po b/editor/translations/tt.po index c0d7e79447..3e63f2369d 100644 --- a/editor/translations/tt.po +++ b/editor/translations/tt.po @@ -403,10 +403,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "" @@ -451,7 +447,8 @@ msgid "Anim Move Keys" msgstr "" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" msgstr "" #: editor/animation_track_editor.cpp @@ -2410,7 +2407,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11482,10 +11479,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" diff --git a/editor/translations/tzm.po b/editor/translations/tzm.po index 629220c426..0b0ce7d01e 100644 --- a/editor/translations/tzm.po +++ b/editor/translations/tzm.po @@ -401,10 +401,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "" @@ -449,7 +445,8 @@ msgid "Anim Move Keys" msgstr "" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" msgstr "" #: editor/animation_track_editor.cpp @@ -2408,7 +2405,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11480,10 +11477,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" diff --git a/editor/translations/uk.po b/editor/translations/uk.po index 5f0fe3d721..50508c5df3 100644 --- a/editor/translations/uk.po +++ b/editor/translations/uk.po @@ -424,12 +424,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Доріжки анімації можуть вказувати лише на взули AnimationPlayer." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" -"Відтворювач анімації не може відтворювати сам себе, лише інші відтворювачі " -"анімації." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Не можна додавати нові доріжки без кореневого запису" @@ -476,8 +470,9 @@ msgid "Anim Move Keys" msgstr "Перемістити ключі анімації" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Буфер обміну порожній" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "Буфер обміну порожній!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2521,7 +2516,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "Зберегти зміни в наступній(их) сцені(ах) перед тим, як вийти?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" "Зберегти зміни в наступній(их) сцені(ах) перед відкриттям менеджера проєктів?" @@ -12025,10 +12020,6 @@ msgid "Can't copy the function node." msgstr "Неможливо скопіювати вузол функції." #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "Буфер обміну порожній!" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "Вставити вузли (Візуального скриптингу) VisualScript" @@ -13248,6 +13239,14 @@ msgstr "Змінні величини можна пов'язувати лише msgid "Constants cannot be modified." msgstr "Сталі не можна змінювати." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "Відтворювач анімації не може відтворювати сам себе, лише інші " +#~ "відтворювачі анімації." + +#~ msgid "Clipboard is empty" +#~ msgstr "Буфер обміну порожній" + #~ msgid "" #~ "Godot editor was built without ray tracing support; lightmaps can't be " #~ "baked.\n" diff --git a/editor/translations/ur_PK.po b/editor/translations/ur_PK.po index 3af1eac2ef..0a213a2bdf 100644 --- a/editor/translations/ur_PK.po +++ b/editor/translations/ur_PK.po @@ -410,10 +410,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "" @@ -458,7 +454,8 @@ msgid "Anim Move Keys" msgstr "" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" msgstr "" #: editor/animation_track_editor.cpp @@ -2456,7 +2453,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "" #: editor/editor_node.cpp @@ -11780,10 +11777,6 @@ msgid "Can't copy the function node." msgstr "" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "" diff --git a/editor/translations/vi.po b/editor/translations/vi.po index 8a34f898b8..0104d05502 100644 --- a/editor/translations/vi.po +++ b/editor/translations/vi.po @@ -424,11 +424,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "Các bản hoạt ảnh chỉ có thể trỏ tới các nút AnimationPlayer." #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" -"Animation player không tự tạo hoạt ảnh được, phải thông qua các player khác." - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "Không thể thêm track mới mà không có root" @@ -473,8 +468,9 @@ msgid "Anim Move Keys" msgstr "Di chuyển các khoá hoạt cảnh" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "Clipboard rỗng" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "Clipboard trống!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2499,7 +2495,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "Lưu thay đổi trong các scene sau trước khi thoát?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "Lưu thay đổi trong các cảnh sau trước khi mở Quản lí Dự án?" #: editor/editor_node.cpp @@ -11888,10 +11884,6 @@ msgid "Can't copy the function node." msgstr "Không thể sao chép nút chức năng." #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "Clipboard trống!" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "Dán các nút VisualScript" @@ -13004,6 +12996,14 @@ msgstr "" msgid "Constants cannot be modified." msgstr "Không thể chỉnh sửa hằng số." +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "" +#~ "Animation player không tự tạo hoạt ảnh được, phải thông qua các player " +#~ "khác." + +#~ msgid "Clipboard is empty" +#~ msgstr "Clipboard rỗng" + #~ msgid "No" #~ msgstr "Không" diff --git a/editor/translations/zh_CN.po b/editor/translations/zh_CN.po index 6994841e78..4393cb4e08 100644 --- a/editor/translations/zh_CN.po +++ b/editor/translations/zh_CN.po @@ -83,7 +83,7 @@ msgid "" msgstr "" "Project-Id-Version: Chinese (Simplified) (Godot Engine)\n" "POT-Creation-Date: 2018-01-20 12:15+0200\n" -"PO-Revision-Date: 2021-06-20 13:35+0000\n" +"PO-Revision-Date: 2021-07-13 06:13+0000\n" "Last-Translator: Haoyu Qiu <timothyqiu32@gmail.com>\n" "Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/" "godot-engine/godot/zh_Hans/>\n" @@ -92,7 +92,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.7\n" +"X-Generator: Weblate 4.7.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -260,7 +260,7 @@ msgstr "修改动画长度" #: editor/animation_track_editor.cpp #: editor/plugins/sprite_frames_editor_plugin.cpp msgid "Change Animation Loop" -msgstr "修改循环" +msgstr "修改动画循环" #: editor/animation_track_editor.cpp msgid "Property Track" @@ -288,11 +288,11 @@ msgstr "动画播放轨道" #: editor/animation_track_editor.cpp msgid "Animation length (frames)" -msgstr "动画时长(帧)" +msgstr "动画长度(帧)" #: editor/animation_track_editor.cpp msgid "Animation length (seconds)" -msgstr "动画时长(秒)" +msgstr "动画长度(秒)" #: editor/animation_track_editor.cpp msgid "Add Track" @@ -317,15 +317,15 @@ msgstr "动画剪辑:" #: editor/animation_track_editor.cpp msgid "Change Track Path" -msgstr "改变轨道路径" +msgstr "修改轨道路径" #: editor/animation_track_editor.cpp msgid "Toggle this track on/off." -msgstr "切换当前轨道开关。" +msgstr "切换该轨道的开关。" #: editor/animation_track_editor.cpp msgid "Update Mode (How this property is set)" -msgstr "更新模式(属性设置方法)" +msgstr "更新模式(设置属性的方式)" #: editor/animation_track_editor.cpp msgid "Interpolation Mode" @@ -337,7 +337,7 @@ msgstr "无缝循环模式(使用循环开始插值循环结束)" #: editor/animation_track_editor.cpp msgid "Remove this track." -msgstr "移除当前轨道。" +msgstr "移除该轨道。" #: editor/animation_track_editor.cpp msgid "Time (s): " @@ -378,11 +378,11 @@ msgstr "三次方" #: editor/animation_track_editor.cpp msgid "Clamp Loop Interp" -msgstr "切断循环插值器" +msgstr "切断循环插值" #: editor/animation_track_editor.cpp msgid "Wrap Loop Interp" -msgstr "环绕间隔" +msgstr "环绕循环插值" #: editor/animation_track_editor.cpp #: editor/plugins/canvas_item_editor_plugin.cpp @@ -391,11 +391,11 @@ msgstr "插入关键帧" #: editor/animation_track_editor.cpp msgid "Duplicate Key(s)" -msgstr "复制帧" +msgstr "复制关键帧" #: editor/animation_track_editor.cpp msgid "Delete Key(s)" -msgstr "删除帧" +msgstr "删除关键帧" #: editor/animation_track_editor.cpp msgid "Change Animation Update Mode" @@ -411,7 +411,7 @@ msgstr "更改动画循环模式" #: editor/animation_track_editor.cpp msgid "Remove Anim Track" -msgstr "移除轨道" +msgstr "移除动画轨道" #: editor/animation_track_editor.cpp msgid "Create NEW track for %s and insert key?" @@ -447,11 +447,11 @@ msgstr "创建并插入动画" #: editor/animation_track_editor.cpp msgid "Anim Insert Track & Key" -msgstr "插入轨道和关键帧" +msgstr "插入动画轨道和关键帧" #: editor/animation_track_editor.cpp msgid "Anim Insert Key" -msgstr "插入关键帧" +msgstr "插入动画关键帧" #: editor/animation_track_editor.cpp msgid "Change Animation Step" @@ -463,7 +463,7 @@ msgstr "重新排列轨道" #: editor/animation_track_editor.cpp msgid "Transform tracks only apply to Spatial-based nodes." -msgstr "变换轨迹仅应用到基于 Spatial 节点。" +msgstr "变换轨道仅应用于基于 Spatial 的节点。" #: editor/animation_track_editor.cpp msgid "" @@ -472,18 +472,14 @@ msgid "" "-AudioStreamPlayer2D\n" "-AudioStreamPlayer3D" msgstr "" -"音轨只能指向以下类型的节点:\n" +"音频轨道只能指向以下类型的节点:\n" "-AudioStreamPlayer\n" "-AudioStreamPlayer2D\n" "-AudioStreamPlayer3D" #: editor/animation_track_editor.cpp msgid "Animation tracks can only point to AnimationPlayer nodes." -msgstr "动画轨迹只能指向 AnimationPlayer 节点。" - -#: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "动画播放器不能动画化自己,只能动画化其他播放器。" +msgstr "动画轨道只能指向 AnimationPlayer 节点。" #: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" @@ -530,8 +526,9 @@ msgid "Anim Move Keys" msgstr "移动动画关键帧" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "剪贴板是空的" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "剪贴板是空的!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -2535,7 +2532,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "退出前要保存以下场景更改吗?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "打开项目管理器前要保存下列场景更改吗?" #: editor/editor_node.cpp @@ -9783,10 +9780,10 @@ msgid "" "Incompatible with older hardware\n" "Not recommended for web games" msgstr "" -"视觉质量更高\n" +"视觉质量较高\n" "所有功能可用\n" -"与旧硬件不兼容\n" -"不推荐用于网络游戏" +"不兼容较老的硬件\n" +"不推荐用于网页游戏" #: editor/project_manager.cpp msgid "OpenGL ES 2.0" @@ -9802,7 +9799,7 @@ msgstr "" "视觉质量较低\n" "某些功能不可用\n" "可用于大多数硬件\n" -"推荐用于网络游戏" +"推荐用于网页游戏" #: editor/project_manager.cpp msgid "Renderer can be changed later, but scenes may need to be adjusted." @@ -9878,7 +9875,7 @@ msgid "" "the \"Application\" category." msgstr "" "无法运行项目:未定义主场景。 \n" -"请编辑项目并在 “项目设置” 中 “Application” 类别下设置主场景。" +"请编辑项目并在 “项目设置” 的 “Application” 类别下设置主场景。" #: editor/project_manager.cpp msgid "" @@ -9943,7 +9940,7 @@ msgstr "项目" #: editor/project_manager.cpp msgid "Loading, please wait..." -msgstr "正在加载,请稍候..." +msgstr "正在加载,请稍候……" #: editor/project_manager.cpp msgid "Last Modified" @@ -9971,7 +9968,7 @@ msgstr "模板" #: editor/project_manager.cpp msgid "Restart Now" -msgstr "立即重新启动" +msgstr "立即重启" #: editor/project_manager.cpp msgid "Can't run project" @@ -9982,7 +9979,7 @@ msgid "" "You currently don't have any projects.\n" "Would you like to explore official example projects in the Asset Library?" msgstr "" -"目前没有任何项目。 \n" +"目前没有任何项目。\n" "是否查看素材库中的官方示例项目?" #: editor/project_manager.cpp @@ -9996,11 +9993,11 @@ msgstr "" #: editor/project_settings_editor.cpp msgid "Key " -msgstr "键 " +msgstr "按键 " #: editor/project_settings_editor.cpp msgid "Joy Button" -msgstr "手柄按钮" +msgstr "手柄按键" #: editor/project_settings_editor.cpp msgid "Joy Axis" @@ -10014,11 +10011,11 @@ msgstr "鼠标按键" msgid "" "Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or " "'\"'" -msgstr "无效的操作名称。操作名不能为空,也不能包含 “/”, “:”, “=”, “\\” 或 “\"”" +msgstr "无效的动作名称。动作名不能为空,也不能包含 “/”, “:”, “=”, “\\” 或 “\"”" #: editor/project_settings_editor.cpp msgid "An action with the name '%s' already exists." -msgstr "名为 “%s” 的操作已存在。" +msgstr "名为“%s”的动作已存在。" #: editor/project_settings_editor.cpp msgid "Rename Input Action Event" @@ -10042,11 +10039,11 @@ msgstr "设备" #: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp msgid "Press a Key..." -msgstr "按下一个键..." +msgstr "请按键……" #: editor/project_settings_editor.cpp msgid "Mouse Button Index:" -msgstr "鼠标按键:" +msgstr "鼠标按键索引:" #: editor/project_settings_editor.cpp msgid "Left Button" @@ -10070,11 +10067,11 @@ msgstr "滚轮向下" #: editor/project_settings_editor.cpp msgid "Wheel Left Button" -msgstr "滚轮左键" +msgstr "滚轮向左" #: editor/project_settings_editor.cpp msgid "Wheel Right Button" -msgstr "滚轮右键" +msgstr "滚轮向右" #: editor/project_settings_editor.cpp msgid "X Button 1" @@ -10086,7 +10083,7 @@ msgstr "X 按键 2" #: editor/project_settings_editor.cpp msgid "Joypad Axis Index:" -msgstr "手柄摇杆序号:" +msgstr "手柄摇杆索引:" #: editor/project_settings_editor.cpp msgid "Axis" @@ -10094,15 +10091,15 @@ msgstr "轴" #: editor/project_settings_editor.cpp msgid "Joypad Button Index:" -msgstr "手柄按钮:" +msgstr "手柄按钮索引:" #: editor/project_settings_editor.cpp msgid "Erase Input Action" -msgstr "移除输入事件" +msgstr "移除输入动作" #: editor/project_settings_editor.cpp msgid "Erase Input Action Event" -msgstr "移除输入事件" +msgstr "移除输入动作事件" #: editor/project_settings_editor.cpp msgid "Add Event" @@ -10122,7 +10119,7 @@ msgstr "右键。" #: editor/project_settings_editor.cpp msgid "Middle Button." -msgstr "中键(滚轮)。" +msgstr "中键。" #: editor/project_settings_editor.cpp msgid "Wheel Up." @@ -10138,15 +10135,15 @@ msgstr "添加全局属性" #: editor/project_settings_editor.cpp msgid "Select a setting item first!" -msgstr "请先选择一个设置项目 !" +msgstr "请先选择一个设置项!" #: editor/project_settings_editor.cpp msgid "No property '%s' exists." -msgstr "不存在属性 “%s”。" +msgstr "不存在属性“%s”。" #: editor/project_settings_editor.cpp msgid "Setting '%s' is internal, and it can't be deleted." -msgstr "“%s” 是内部设定,无法删除。" +msgstr "“%s”是内部设定,无法删除。" #: editor/project_settings_editor.cpp msgid "Delete Item" @@ -10157,7 +10154,7 @@ msgid "" "Invalid action name. It cannot be empty nor contain '/', ':', '=', '\\' or " "'\"'." msgstr "" -"无效的操作名称。名称不能为空,也不能包含 “/”, “:”, “=”, “\\” 或者 “\"”。" +"无效的动作名称。动作不能为空,也不能包含 “/”, “:”, “=”, “\\” 或者 “\"”。" #: editor/project_settings_editor.cpp msgid "Add Input Action" @@ -10173,7 +10170,7 @@ msgstr "保存设置成功。" #: editor/project_settings_editor.cpp msgid "Moved Input Action Event" -msgstr "输入动作事件" +msgstr "移动输入动作事件" #: editor/project_settings_editor.cpp msgid "Override for Feature" @@ -10209,11 +10206,11 @@ msgstr "移除资源重定向选项" #: editor/project_settings_editor.cpp msgid "Changed Locale Filter" -msgstr "修改区域设置筛选模式" +msgstr "修改区域设置筛选" #: editor/project_settings_editor.cpp msgid "Changed Locale Filter Mode" -msgstr "更改了区域设置筛选模式" +msgstr "修改区域设置筛选模式" #: editor/project_settings_editor.cpp msgid "Project Settings (project.godot)" @@ -10237,7 +10234,7 @@ msgstr "键位映射" #: editor/project_settings_editor.cpp msgid "Action:" -msgstr "动作:" +msgstr "动作:" #: editor/project_settings_editor.cpp msgid "Action" @@ -10253,7 +10250,7 @@ msgstr "设备:" #: editor/project_settings_editor.cpp msgid "Index:" -msgstr "序号:" +msgstr "索引:" #: editor/project_settings_editor.cpp msgid "Localization" @@ -10277,7 +10274,7 @@ msgstr "资源:" #: editor/project_settings_editor.cpp msgid "Remaps by Locale:" -msgstr "依照区域重定向:" +msgstr "按区域重定向:" #: editor/project_settings_editor.cpp msgid "Locale" @@ -10329,7 +10326,7 @@ msgstr "缓入缓出" #: editor/property_editor.cpp msgid "Easing Out-In" -msgstr "反缓入缓出" +msgstr "缓出缓入" #: editor/property_editor.cpp msgid "File..." @@ -11832,10 +11829,6 @@ msgid "Can't copy the function node." msgstr "无法复制函数节点。" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "剪贴板是空的!" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "粘贴 VisualScript 节点" @@ -12947,6 +12940,12 @@ msgstr "变量只能在顶点函数中指定。" msgid "Constants cannot be modified." msgstr "不允许修改常量。" +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "动画播放器不能动画化自己,只能动画化其他播放器。" + +#~ msgid "Clipboard is empty" +#~ msgstr "剪贴板是空的" + #~ msgid "" #~ "Godot editor was built without ray tracing support; lightmaps can't be " #~ "baked.\n" diff --git a/editor/translations/zh_HK.po b/editor/translations/zh_HK.po index eee6eb62b7..28a69ee289 100644 --- a/editor/translations/zh_HK.po +++ b/editor/translations/zh_HK.po @@ -435,10 +435,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "沒有ROOT以新增新動畫軌跡" @@ -486,8 +482,9 @@ msgid "Anim Move Keys" msgstr "移動動畫幀" #: editor/animation_track_editor.cpp +#: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Clipboard is empty" +msgid "Clipboard is empty!" msgstr "路徑為空" #: editor/animation_track_editor.cpp @@ -2575,7 +2572,7 @@ msgstr "離開前要先儲存以下 scene 的任何更改嗎?" #: editor/editor_node.cpp #, fuzzy -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "開啟 Project Manager 前要先儲存以下 scene 的任何更改嗎?" #: editor/editor_node.cpp @@ -12291,11 +12288,6 @@ msgstr "" #: modules/visual_script/visual_script_editor.cpp #, fuzzy -msgid "Clipboard is empty!" -msgstr "路徑為空" - -#: modules/visual_script/visual_script_editor.cpp -#, fuzzy msgid "Paste VisualScript Nodes" msgstr "貼上" @@ -13352,6 +13344,10 @@ msgstr "" msgid "Constants cannot be modified." msgstr "" +#, fuzzy +#~ msgid "Clipboard is empty" +#~ msgstr "路徑為空" + #~ msgid "No" #~ msgstr "否" diff --git a/editor/translations/zh_TW.po b/editor/translations/zh_TW.po index 7aee72ee43..f65d628d63 100644 --- a/editor/translations/zh_TW.po +++ b/editor/translations/zh_TW.po @@ -25,12 +25,13 @@ # BinotaLIU <binota@protonmail.ch>, 2020. # BinotaLIU <me@binota.org>, 2020, 2021. # MintSoda <lionlxh@qq.com>, 2020. +# meowmeowmeowcat <meowmeowcat1211@gmail.com>, 2021. msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2021-05-24 21:36+0000\n" -"Last-Translator: Kisaragi Hiu <mail@kisaragi-hiu.com>\n" +"PO-Revision-Date: 2021-07-13 06:13+0000\n" +"Last-Translator: meowmeowmeowcat <meowmeowcat1211@gmail.com>\n" "Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/" "godot-engine/godot/zh_Hant/>\n" "Language: zh_TW\n" @@ -38,7 +39,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.7-dev\n" +"X-Generator: Weblate 4.7.2-dev\n" #: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp #: modules/visual_script/visual_script_builtin_funcs.cpp @@ -428,10 +429,6 @@ msgid "Animation tracks can only point to AnimationPlayer nodes." msgstr "動畫軌僅可指向 AnimationPlayer 節點。" #: editor/animation_track_editor.cpp -msgid "An animation player can't animate itself, only other players." -msgstr "動畫 Player 無法播放自己,僅可播放其他 Player。" - -#: editor/animation_track_editor.cpp msgid "Not possible to add a new track without a root" msgstr "沒有根節點時無法新增軌道" @@ -476,8 +473,9 @@ msgid "Anim Move Keys" msgstr "移動動畫關鍵畫格" #: editor/animation_track_editor.cpp -msgid "Clipboard is empty" -msgstr "剪貼板為空" +#: modules/visual_script/visual_script_editor.cpp +msgid "Clipboard is empty!" +msgstr "剪貼簿為空!" #: editor/animation_track_editor.cpp msgid "Paste Tracks" @@ -1125,7 +1123,7 @@ msgstr "Godot 社群感謝你!" #: editor/editor_about.cpp editor/editor_node.cpp editor/project_manager.cpp msgid "Click to copy." -msgstr "" +msgstr "按一下以複製。" #: editor/editor_about.cpp msgid "Godot Engine contributors" @@ -2483,7 +2481,7 @@ msgid "Save changes to the following scene(s) before quitting?" msgstr "退出前要先保存下列場景嗎?" #: editor/editor_node.cpp -msgid "Save changes the following scene(s) before opening Project Manager?" +msgid "Save changes to the following scene(s) before opening Project Manager?" msgstr "開啟專案管理員前要先保存以下場景嗎?" #: editor/editor_node.cpp @@ -11778,10 +11776,6 @@ msgid "Can't copy the function node." msgstr "無法複製函式節點。" #: modules/visual_script/visual_script_editor.cpp -msgid "Clipboard is empty!" -msgstr "剪貼簿為空!" - -#: modules/visual_script/visual_script_editor.cpp msgid "Paste VisualScript Nodes" msgstr "貼上視覺腳本 (VisualScript) 節點" @@ -12897,6 +12891,12 @@ msgstr "Varying 變數只可在頂點函式中指派。" msgid "Constants cannot be modified." msgstr "不可修改常數。" +#~ msgid "An animation player can't animate itself, only other players." +#~ msgstr "動畫 Player 無法播放自己,僅可播放其他 Player。" + +#~ msgid "Clipboard is empty" +#~ msgstr "剪貼板為空" + #~ msgid "" #~ "InterpolatedCamera has been deprecated and will be removed in Godot 4.0." #~ msgstr "InterpolatedCamera 已停止維護,且將於 Godot 4.0 中移除。" |