summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rwxr-xr-xtools/Godot.app/Contents/Info.plist2
-rw-r--r--tools/editor/asset_library_editor_plugin.cpp6
-rw-r--r--tools/editor/code_editor.cpp17
-rw-r--r--tools/editor/connections_dialog.cpp49
-rw-r--r--tools/editor/connections_dialog.h1
-rw-r--r--tools/editor/create_dialog.cpp6
-rw-r--r--tools/editor/editor_help.cpp2
-rw-r--r--tools/editor/plugins/script_editor_plugin.cpp45
-rw-r--r--tools/editor/plugins/script_editor_plugin.h2
-rw-r--r--tools/editor/plugins/spatial_editor_plugin.cpp8
-rw-r--r--tools/editor/plugins/texture_region_editor_plugin.cpp44
-rw-r--r--tools/editor/plugins/texture_region_editor_plugin.h2
-rw-r--r--tools/editor/property_editor.cpp2
-rw-r--r--tools/editor/quick_open.cpp4
-rw-r--r--tools/editor/scene_tree_editor.cpp2
-rw-r--r--tools/translations/ru.po177
16 files changed, 254 insertions, 115 deletions
diff --git a/tools/Godot.app/Contents/Info.plist b/tools/Godot.app/Contents/Info.plist
index 2b58162ae8..37c80fc8a3 100755
--- a/tools/Godot.app/Contents/Info.plist
+++ b/tools/Godot.app/Contents/Info.plist
@@ -34,7 +34,7 @@
<string>10.6.0</string>
</dict>
<key>NSHighResolutionCapable</key>
- <false/>
+ <true/>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
diff --git a/tools/editor/asset_library_editor_plugin.cpp b/tools/editor/asset_library_editor_plugin.cpp
index 928acdbcbb..c571310ded 100644
--- a/tools/editor/asset_library_editor_plugin.cpp
+++ b/tools/editor/asset_library_editor_plugin.cpp
@@ -541,8 +541,12 @@ void EditorAssetLibrary::_notification(int p_what) {
error_hb->add_child(tf);
error_label->raise();
+ }
- _repository_changed(0);
+ if (p_what==NOTIFICATION_VISIBILITY_CHANGED) {
+ if(!is_hidden()) {
+ _repository_changed(0); // Update when shown for the first time
+ }
}
if (p_what==NOTIFICATION_PROCESS) {
diff --git a/tools/editor/code_editor.cpp b/tools/editor/code_editor.cpp
index f62209fafa..be5d9c47ff 100644
--- a/tools/editor/code_editor.cpp
+++ b/tools/editor/code_editor.cpp
@@ -247,8 +247,18 @@ void FindReplaceBar::_get_search_from(int& r_line, int& r_col) {
r_col=text_edit->cursor_get_column();
if (text_edit->is_selection_active() && !replace_all_mode) {
- r_line=text_edit->get_selection_from_line();
- r_col=text_edit->get_selection_to_column();
+
+ int selection_line=text_edit->get_selection_from_line();
+
+ if (text_edit->get_selection_text()==get_search_text() && r_line==selection_line) {
+
+ int selection_from_col=text_edit->get_selection_from_column();
+
+ if (r_col>=selection_from_col && r_col<=text_edit->get_selection_to_column()) {
+ r_col=selection_line;
+ r_col=selection_from_col;
+ }
+ }
}
if (r_line==result_line && r_col>=result_col && r_col<=result_col+get_search_text().length()) {
@@ -521,6 +531,9 @@ FindReplaceBar::FindReplaceBar() {
error_label = memnew(Label);
search_options->add_child(error_label);
+ error_label->add_color_override("font_color", Color(1,1,0,1));
+ error_label->add_color_override("font_color_shadow", Color(0,0,0,1));
+ error_label->add_constant_override("shadow_as_outline", 1);
search_options->add_spacer();
diff --git a/tools/editor/connections_dialog.cpp b/tools/editor/connections_dialog.cpp
index 222e42f8a7..8847654ad7 100644
--- a/tools/editor/connections_dialog.cpp
+++ b/tools/editor/connections_dialog.cpp
@@ -35,6 +35,7 @@
#include "print_string.h"
#include "editor_settings.h"
#include "editor_node.h"
+#include "plugins/script_editor_plugin.h"
class ConnectDialogBinds : public Object {
@@ -766,11 +767,58 @@ void ConnectionsDock::_something_selected() {
}
+void ConnectionsDock::_something_activated() {
+
+ TreeItem *item = tree->get_selected();
+
+ if (!item)
+ return;
+
+ if (item->get_parent()==tree->get_root() || item->get_parent()->get_parent()==tree->get_root()) {
+ // a signal - connect
+ String signal=item->get_metadata(0).operator Dictionary()["name"];
+ String midname=node->get_name();
+ for(int i=0;i<midname.length();i++) {
+ CharType c = midname[i];
+ if ((c>='a' && c<='z') || (c>='A' && c<='Z') || (c>='0' && c<='9') || c=='_') {
+ //all good
+ } else if (c==' ') {
+ c='_';
+ } else {
+ midname.remove(i);
+ i--;
+ continue;
+ }
+
+ midname[i]=c;
+ }
+
+ connect_dialog->edit(node);
+ connect_dialog->popup_centered_ratio();
+ connect_dialog->set_dst_method("_on_"+midname+"_"+signal);
+ connect_dialog->set_dst_node(node->get_owner()?node->get_owner():node);
+ } else {
+ // a slot - go to target method
+ Connection c=item->get_metadata(0);
+ ERR_FAIL_COND(c.source!=node); //shouldn't happen but...bugcheck
+
+ if (!c.target)
+ return;
+
+ Ref<Script> script = c.target->get_script();
+
+ if (script.is_valid() && ScriptEditor::get_singleton()->script_go_to_method(script,c.method)) {
+ editor->call("_editor_select",EditorNode::EDITOR_SCRIPT);
+ }
+ }
+}
+
void ConnectionsDock::_bind_methods() {
ObjectTypeDB::bind_method("_connect",&ConnectionsDock::_connect);
ObjectTypeDB::bind_method("_something_selected",&ConnectionsDock::_something_selected);
+ ObjectTypeDB::bind_method("_something_activated",&ConnectionsDock::_something_activated);
ObjectTypeDB::bind_method("_close",&ConnectionsDock::_close);
ObjectTypeDB::bind_method("_connect_pressed",&ConnectionsDock::_connect_pressed);
ObjectTypeDB::bind_method("update_tree",&ConnectionsDock::update_tree);
@@ -823,6 +871,7 @@ ConnectionsDock::ConnectionsDock(EditorNode *p_editor) {
remove_confirm->connect("confirmed", this,"_remove_confirm");
connect_dialog->connect("connected", this,"_connect");
tree->connect("item_selected", this,"_something_selected");
+ tree->connect("item_activated", this,"_something_activated");
add_constant_override("separation",3*EDSCALE);
}
diff --git a/tools/editor/connections_dialog.h b/tools/editor/connections_dialog.h
index 96ebaf85b0..73f52abc9e 100644
--- a/tools/editor/connections_dialog.h
+++ b/tools/editor/connections_dialog.h
@@ -111,6 +111,7 @@ class ConnectionsDock : public VBoxContainer {
void _close();
void _connect();
void _something_selected();
+ void _something_activated();
UndoRedo *undo_redo;
protected:
diff --git a/tools/editor/create_dialog.cpp b/tools/editor/create_dialog.cpp
index b6137ddac0..5275e1beeb 100644
--- a/tools/editor/create_dialog.cpp
+++ b/tools/editor/create_dialog.cpp
@@ -103,7 +103,7 @@ void CreateDialog::add_type(const String& p_type,HashMap<String,TreeItem*>& p_ty
item->set_selectable(0,false);
} else {
- if (!*to_select && (search_box->get_text()=="" || p_type.findn(search_box->get_text())!=-1)) {
+ if (!*to_select && (search_box->get_text().is_subsequence_ofi(p_type))) {
*to_select=item;
}
@@ -172,7 +172,7 @@ void CreateDialog::_update_search() {
bool found=false;
String type=I->get();
while(type!="" && ObjectTypeDB::is_type(type,base_type) && type!=base_type) {
- if (type.findn(search_box->get_text())!=-1) {
+ if (search_box->get_text().is_subsequence_ofi(type)) {
found=true;
break;
@@ -194,7 +194,7 @@ void CreateDialog::_update_search() {
const Vector<EditorData::CustomType> &ct = EditorNode::get_editor_data().get_custom_types()[type];
for(int i=0;i<ct.size();i++) {
- bool show = search_box->get_text()=="" || ct[i].name.findn(search_box->get_text())!=-1;
+ bool show = search_box->get_text().is_subsequence_ofi(ct[i].name);
if (!show)
continue;
diff --git a/tools/editor/editor_help.cpp b/tools/editor/editor_help.cpp
index ac9feacd46..0b60db5ee3 100644
--- a/tools/editor/editor_help.cpp
+++ b/tools/editor/editor_help.cpp
@@ -453,7 +453,7 @@ void EditorHelpIndex::_update_class_list() {
String type = E->key();
while(type != "") {
- if (type.findn(filter)!=-1) {
+ if (filter.is_subsequence_ofi(type)) {
if (to_select.empty()) {
to_select = type;
diff --git a/tools/editor/plugins/script_editor_plugin.cpp b/tools/editor/plugins/script_editor_plugin.cpp
index 8b7323ec08..a313b0053a 100644
--- a/tools/editor/plugins/script_editor_plugin.cpp
+++ b/tools/editor/plugins/script_editor_plugin.cpp
@@ -2503,6 +2503,51 @@ void ScriptEditor::set_scene_root_script( Ref<Script> p_script ) {
}
}
+bool ScriptEditor::script_go_to_method(Ref<Script> p_script, const String& p_method) {
+
+ Vector<String> functions;
+ bool found=false;
+
+ for (int i=0;i<tab_container->get_child_count();i++) {
+ ScriptTextEditor *current = tab_container->get_child(i)->cast_to<ScriptTextEditor>();
+
+ if (current && current->get_edited_script()==p_script) {
+ functions=current->get_functions();
+ found=true;
+ break;
+ }
+ }
+
+ if (!found) {
+ String errortxt;
+ int line=-1,col;
+ String text=p_script->get_source_code();
+ List<String> fnc;
+
+ if (p_script->get_language()->validate(text,line,col,errortxt,p_script->get_path(),&fnc)) {
+
+ for (List<String>::Element *E=fnc.front();E;E=E->next())
+ functions.push_back(E->get());
+ }
+ }
+
+ String method_search = p_method + ":";
+
+ for (int i=0;i<functions.size();i++) {
+ String function=functions[i];
+
+ if (function.begins_with(method_search)) {
+
+ edit(p_script);
+ int line=function.get_slice(":",1).to_int();
+ _goto_script_line2(line-1);
+ return true;
+ }
+ }
+
+ return false;
+}
+
void ScriptEditor::set_live_auto_reload_running_scripts(bool p_enabled) {
auto_reload_running_scripts=p_enabled;
diff --git a/tools/editor/plugins/script_editor_plugin.h b/tools/editor/plugins/script_editor_plugin.h
index 5a9dce759e..3d723adfe9 100644
--- a/tools/editor/plugins/script_editor_plugin.h
+++ b/tools/editor/plugins/script_editor_plugin.h
@@ -325,6 +325,8 @@ public:
void set_scene_root_script( Ref<Script> p_script );
+ bool script_go_to_method(Ref<Script> p_script, const String& p_method);
+
virtual void edited_scene_changed();
ScriptEditorDebugger *get_debugger() { return debugger; }
diff --git a/tools/editor/plugins/spatial_editor_plugin.cpp b/tools/editor/plugins/spatial_editor_plugin.cpp
index e261b48f67..fdb654571a 100644
--- a/tools/editor/plugins/spatial_editor_plugin.cpp
+++ b/tools/editor/plugins/spatial_editor_plugin.cpp
@@ -996,26 +996,26 @@ void SpatialEditorViewport::_sinput(const InputEvent &p_event) {
case TRANSFORM_VIEW: {
_edit.plane=TRANSFORM_X_AXIS;
- set_message(TTR("View Plane Transform."),2);
+ set_message(TTR("X-Axis Transform."),2);
name="";
_update_name();
} break;
case TRANSFORM_X_AXIS: {
_edit.plane=TRANSFORM_Y_AXIS;
- set_message(TTR("X-Axis Transform."),2);
+ set_message(TTR("Y-Axis Transform."),2);
} break;
case TRANSFORM_Y_AXIS: {
_edit.plane=TRANSFORM_Z_AXIS;
- set_message(TTR("Y-Axis Transform."),2);
+ set_message(TTR("Z-Axis Transform."),2);
} break;
case TRANSFORM_Z_AXIS: {
_edit.plane=TRANSFORM_VIEW;
- set_message(TTR("Z-Axis Transform."),2);
+ set_message(TTR("View Plane Transform."),2);
} break;
}
diff --git a/tools/editor/plugins/texture_region_editor_plugin.cpp b/tools/editor/plugins/texture_region_editor_plugin.cpp
index b69b0d7a9b..57db19b736 100644
--- a/tools/editor/plugins/texture_region_editor_plugin.cpp
+++ b/tools/editor/plugins/texture_region_editor_plugin.cpp
@@ -43,6 +43,8 @@ void TextureRegionEditor::_region_draw()
base_tex = node_patch9->get_texture();
else if(node_type == "StyleBoxTexture" && obj_styleBox)
base_tex = obj_styleBox->get_texture();
+ else if(node_type == "AtlasTexture" && atlas_tex)
+ base_tex = atlas_tex->get_atlas();
if (base_tex.is_null())
return;
@@ -164,6 +166,8 @@ void TextureRegionEditor::_region_input(const InputEvent& p_input)
drag=true;
if(node_type == "Sprite" && node_sprite )
rect_prev=node_sprite->get_region_rect();
+ else if(node_type == "AtlasTexture" && atlas_tex)
+ rect_prev=atlas_tex->get_region();
else if(node_type == "Patch9Frame" && node_patch9)
rect_prev=node_patch9->get_region_rect();
else if(node_type == "StyleBoxTexture" && obj_styleBox)
@@ -191,10 +195,18 @@ void TextureRegionEditor::_region_input(const InputEvent& p_input)
undo_redo->add_do_method(node_sprite ,"set_region_rect",node_sprite->get_region_rect());
undo_redo->add_undo_method(node_sprite,"set_region_rect",rect_prev);
}
+ else if(node_type == "AtlasTexture" && atlas_tex ){
+ undo_redo->add_do_method(atlas_tex ,"set_region",atlas_tex->get_region());
+ undo_redo->add_undo_method(atlas_tex,"set_region",rect_prev);
+ }
else if(node_type == "Patch9Frame" && node_patch9){
undo_redo->add_do_method(node_patch9 ,"set_region_rect",node_patch9->get_region_rect());
undo_redo->add_undo_method(node_patch9,"set_region_rect",rect_prev);
}
+ else if(node_type == "StyleBoxTexture" && obj_styleBox){
+ undo_redo->add_do_method(obj_styleBox ,"set_region_rect",obj_styleBox->get_region_rect());
+ undo_redo->add_undo_method(obj_styleBox,"set_region_rect",rect_prev);
+ }
undo_redo->add_do_method(edit_draw,"update");
undo_redo->add_undo_method(edit_draw,"update");
undo_redo->commit_action();
@@ -355,6 +367,8 @@ void TextureRegionEditor::apply_rect(const Rect2& rect){
node_patch9->set_region_rect(rect);
else if(obj_styleBox)
obj_styleBox->set_region_rect(rect);
+ else if(atlas_tex)
+ atlas_tex->set_region(rect);
}
else if(this->editing_region == REGION_PATCH_MARGIN) {
if(node_patch9) {
@@ -387,10 +401,11 @@ void TextureRegionEditor::_notification(int p_what)
void TextureRegionEditor::_node_removed(Object *p_obj)
{
- if(p_obj == node_sprite || p_obj == node_patch9 || p_obj == obj_styleBox) {
- node_patch9 = NULL;
- node_sprite = NULL;
+ if(p_obj == node_sprite || p_obj == node_patch9 || p_obj == obj_styleBox || p_obj == atlas_tex) {
+ node_patch9 = NULL;
+ node_sprite = NULL;
obj_styleBox = NULL;
+ atlas_tex = NULL;
hide();
}
}
@@ -421,30 +436,42 @@ void TextureRegionEditor::edit(Object *p_obj)
node_sprite = p_obj->cast_to<Sprite>();
node_patch9 = NULL;
obj_styleBox = NULL;
+ atlas_tex = NULL;
+ }
+ else if(node_type == "AtlasTexture") {
+ atlas_tex = p_obj->cast_to<AtlasTexture>();
+ node_sprite = NULL;
+ node_patch9 = NULL;
+ obj_styleBox = NULL;
}
else if(node_type == "Patch9Frame") {
node_patch9 = p_obj->cast_to<Patch9Frame>();
node_sprite = NULL;
obj_styleBox = NULL;
+ atlas_tex = NULL;
margin_button->show();
}
else if(node_type == "StyleBoxTexture") {
obj_styleBox = p_obj->cast_to<StyleBoxTexture>();
node_sprite = NULL;
node_patch9 = NULL;
+ atlas_tex = NULL;
margin_button->show();
}
p_obj->connect("exit_tree",this,"_node_removed",varray(p_obj),CONNECT_ONESHOT);
} else {
if(node_sprite)
node_sprite->disconnect("exit_tree",this,"_node_removed");
+ else if(atlas_tex)
+ atlas_tex->disconnect("exit_tree",this,"_node_removed");
else if(node_patch9)
node_patch9->disconnect("exit_tree",this,"_node_removed");
else if(obj_styleBox)
obj_styleBox->disconnect("exit_tree",this,"_node_removed");
- node_sprite = NULL;
- node_patch9 = NULL;
+ node_sprite = NULL;
+ node_patch9 = NULL;
obj_styleBox = NULL;
+ atlas_tex = NULL;
}
}
@@ -469,6 +496,8 @@ void TextureRegionEditor::_edit_node(int region)
texture = node_patch9->get_texture();
else if(node_type == "StyleBoxTexture" && obj_styleBox)
texture = obj_styleBox->get_texture();
+ else if(node_type == "AtlasTexture" && atlas_tex)
+ texture = atlas_tex->get_atlas();
if (texture.is_null()) {
error->set_text(TTR("No texture in this node.\nSet a texture to be able to edit region."));
@@ -482,6 +511,8 @@ void TextureRegionEditor::_edit_node(int region)
tex_region = node_patch9->get_region_rect();
else if(node_type == "StyleBoxTexture" && obj_styleBox)
tex_region = obj_styleBox->get_region_rect();
+ else if(node_type == "AtlasTexture" && atlas_tex)
+ tex_region = atlas_tex->get_region();
rect = tex_region;
if(region == REGION_PATCH_MARGIN) {
@@ -521,6 +552,7 @@ TextureRegionEditor::TextureRegionEditor(EditorNode* p_editor)
{
node_sprite = NULL;
node_patch9 = NULL;
+ atlas_tex = NULL;
editor=p_editor;
undo_redo = editor->get_undo_redo();
@@ -661,7 +693,7 @@ void TextureRegionEditorPlugin::edit(Object *p_node)
bool TextureRegionEditorPlugin::handles(Object *p_obj) const
{
- return p_obj->is_type("Sprite") || p_obj->is_type("Patch9Frame") || p_obj->is_type("StyleBoxTexture");
+ return p_obj->is_type("Sprite") || p_obj->is_type("Patch9Frame") || p_obj->is_type("StyleBoxTexture") || p_obj->is_type("AtlasTexture");
}
void TextureRegionEditorPlugin::make_visible(bool p_visible)
diff --git a/tools/editor/plugins/texture_region_editor_plugin.h b/tools/editor/plugins/texture_region_editor_plugin.h
index 951b11e1e6..1e4888b06d 100644
--- a/tools/editor/plugins/texture_region_editor_plugin.h
+++ b/tools/editor/plugins/texture_region_editor_plugin.h
@@ -38,6 +38,7 @@
#include "scene/2d/sprite.h"
#include "scene/gui/patch_9_frame.h"
#include "scene/resources/style_box.h"
+#include "scene/resources/texture.h"
class TextureRegionEditor : public HBoxContainer {
@@ -82,6 +83,7 @@ class TextureRegionEditor : public HBoxContainer {
Patch9Frame *node_patch9;
Sprite *node_sprite;
StyleBoxTexture *obj_styleBox;
+ AtlasTexture *atlas_tex;
int editing_region;
Rect2 rect;
diff --git a/tools/editor/property_editor.cpp b/tools/editor/property_editor.cpp
index 7dfcf88e2c..763734f035 100644
--- a/tools/editor/property_editor.cpp
+++ b/tools/editor/property_editor.cpp
@@ -2812,7 +2812,7 @@ void PropertyEditor::update_tree() {
if (capitalize_paths)
cat = cat.capitalize();
- if (cat.findn(filter)==-1 && name.findn(filter)==-1)
+ if (!filter.is_subsequence_ofi(cat) && !filter.is_subsequence_ofi(name))
continue;
}
diff --git a/tools/editor/quick_open.cpp b/tools/editor/quick_open.cpp
index 72059c264f..fc2a2241ab 100644
--- a/tools/editor/quick_open.cpp
+++ b/tools/editor/quick_open.cpp
@@ -126,7 +126,7 @@ void EditorQuickOpen::_parse_fs(EditorFileSystemDirectory *efsd) {
path+="/";
if (path!="res://") {
path=path.substr(6,path.length());
- if (path.findn(search_box->get_text())!=-1) {
+ if (search_box->get_text().is_subsequence_ofi(path)) {
TreeItem *ti = search_options->create_item(root);
ti->set_text(0,path);
Ref<Texture> icon = get_icon("folder","FileDialog");
@@ -138,7 +138,7 @@ void EditorQuickOpen::_parse_fs(EditorFileSystemDirectory *efsd) {
String file = efsd->get_file_path(i);
file=file.substr(6,file.length());
- if (ObjectTypeDB::is_type(efsd->get_file_type(i),base_type) && (search_box->get_text()=="" || file.findn(search_box->get_text())!=-1)) {
+ if (ObjectTypeDB::is_type(efsd->get_file_type(i),base_type) && (search_box->get_text().is_subsequence_ofi(file))) {
TreeItem *ti = search_options->create_item(root);
ti->set_text(0,file);
diff --git a/tools/editor/scene_tree_editor.cpp b/tools/editor/scene_tree_editor.cpp
index 65e731dd4d..2de6fc5cf2 100644
--- a/tools/editor/scene_tree_editor.cpp
+++ b/tools/editor/scene_tree_editor.cpp
@@ -428,7 +428,7 @@ bool SceneTreeEditor::_add_nodes(Node *p_node,TreeItem *p_parent) {
item->set_as_cursor(0);
}
- bool keep= ( filter==String() || String(p_node->get_name()).to_lower().find(filter.to_lower())!=-1 );
+ bool keep= (filter.is_subsequence_ofi(String(p_node->get_name())));
for (int i=0;i<p_node->get_child_count();i++) {
diff --git a/tools/translations/ru.po b/tools/translations/ru.po
index aa98be2767..138aa2c858 100644
--- a/tools/translations/ru.po
+++ b/tools/translations/ru.po
@@ -26,7 +26,7 @@ msgid ""
"order for AnimatedSprite to display frames."
msgstr ""
"Чтобы AnimatedSprite отображал кадры, пожалуйста установите или создайте "
-"ресурс SpriteFrames в параметре 'Frames'"
+"ресурс SpriteFrames в параметре 'Frames'."
#: scene/2d/canvas_modulate.cpp
msgid ""
@@ -218,13 +218,12 @@ msgstr ""
"ресурс SampleLibrary в параметре 'samples'."
#: scene/3d/sprite_3d.cpp
-#, fuzzy
msgid ""
"A SpriteFrames resource must be created or set in the 'Frames' property in "
"order for AnimatedSprite3D to display frames."
msgstr ""
-"Чтобы AnimatedSprite отображал кадры, пожалуйста установите или создайте "
-"ресурс SpriteFrames в параметре 'Frames'"
+"Чтобы AnimatedSprite3D отображал кадры, пожалуйста установите или создайте "
+"ресурс SpriteFrames в параметре 'Frames'."
#: scene/gui/dialogs.cpp tools/editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Cancel"
@@ -262,24 +261,20 @@ msgid "Open"
msgstr "Открыть"
#: scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Open a File"
-msgstr "Открыть сэмпл(ы)"
+msgstr "Открыть файл"
#: scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Open File(s)"
-msgstr "Открыть сэмпл(ы)"
+msgstr "Открыть файл(ы)"
#: scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Open a Directory"
-msgstr "Выбрать каталог"
+msgstr "Открыть каталог"
#: scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Open a File or Directory"
-msgstr "Выбрать каталог"
+msgstr "Открыть каталог или файл"
#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp
#: tools/editor/editor_node.cpp
@@ -343,7 +338,7 @@ msgstr "Alt+"
#: scene/gui/input_action.cpp
msgid "Ctrl+"
-msgstr ""
+msgstr "Ctrl+"
#: scene/gui/input_action.cpp tools/editor/project_settings.cpp
#: tools/editor/settings_config_dialog.cpp
@@ -715,7 +710,7 @@ msgstr "Включить индивидуальное редактировани
#: tools/editor/animation_editor.cpp
msgid "Anim. Optimizer"
-msgstr "Оптимизатор анимации."
+msgstr "Оптимизатор анимации"
#: tools/editor/animation_editor.cpp
msgid "Max. Linear Error:"
@@ -810,22 +805,20 @@ msgid "Site:"
msgstr "Сайт:"
#: tools/editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Support.."
-msgstr "Экспортировать.."
+msgstr "Поддержка.."
#: tools/editor/asset_library_editor_plugin.cpp
msgid "Official"
-msgstr ""
+msgstr "Официально"
#: tools/editor/asset_library_editor_plugin.cpp
msgid "Community"
-msgstr ""
+msgstr "Сообщество"
#: tools/editor/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Testing"
-msgstr "Настройки"
+msgstr "Тестируемые"
#: tools/editor/asset_library_editor_plugin.cpp
msgid "Assets ZIP File"
@@ -1018,9 +1011,8 @@ msgid "Disconnect"
msgstr "Отсоединить"
#: tools/editor/connections_dialog.cpp tools/editor/node_dock.cpp
-#, fuzzy
msgid "Signals"
-msgstr "Сигналы:"
+msgstr "Сигналы"
#: tools/editor/create_dialog.cpp
msgid "Create New"
@@ -1245,7 +1237,7 @@ msgstr "Описание методов:"
#: tools/editor/editor_help.cpp
msgid "Search Text"
-msgstr "Искать текст:"
+msgstr "Искать текст"
#: tools/editor/editor_import_export.cpp
msgid "Added:"
@@ -1280,9 +1272,8 @@ msgid "Setting Up.."
msgstr "Настройка.."
#: tools/editor/editor_log.cpp
-#, fuzzy
msgid " Output:"
-msgstr "Вывод"
+msgstr " Вывод:"
#: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp
msgid "Re-Importing"
@@ -1396,9 +1387,8 @@ msgid "Copy Params"
msgstr "Копировать параметры"
#: tools/editor/editor_node.cpp
-#, fuzzy
msgid "Paste Params"
-msgstr "Вставить кадр"
+msgstr "Вставить параметры"
#: tools/editor/editor_node.cpp
#: tools/editor/plugins/resource_preloader_editor_plugin.cpp
@@ -1418,9 +1408,8 @@ msgid "Make Sub-Resources Unique"
msgstr "Сделать вложенные ресурсы уникальными"
#: tools/editor/editor_node.cpp
-#, fuzzy
msgid "Open in Help"
-msgstr "Открыть сцену"
+msgstr "Открыть в справке"
#: tools/editor/editor_node.cpp
msgid "There is no defined scene to run."
@@ -1431,6 +1420,9 @@ msgid ""
"No main scene has ever been defined.\n"
"Select one from \"Project Settings\" under the 'application' category."
msgstr ""
+"Не назначена главная сцена.\n"
+"Укажите её в параметре \"main_scene\" расположенном\n"
+"в \"Настройки проекта - Основное - application\"."
#: tools/editor/editor_node.cpp
msgid "Current scene was never saved, please save it prior to running."
@@ -1550,9 +1542,8 @@ msgid "Save Layout"
msgstr "Сохранить макет"
#: tools/editor/editor_node.cpp
-#, fuzzy
msgid "Load Layout"
-msgstr "Сохранить макет"
+msgstr "Загрузить макет"
#: tools/editor/editor_node.cpp tools/editor/project_export.cpp
msgid "Default"
@@ -1616,9 +1607,8 @@ msgid "Open Recent"
msgstr "Открыть последнее"
#: tools/editor/editor_node.cpp
-#, fuzzy
msgid "Quick Filter Files.."
-msgstr "Быстрый поиск файлов.."
+msgstr "Быстро отсортировать файлы.."
#: tools/editor/editor_node.cpp
msgid "Convert To.."
@@ -1690,9 +1680,8 @@ msgid "Export"
msgstr "Экспорт"
#: tools/editor/editor_node.cpp
-#, fuzzy
msgid "Play the project."
-msgstr "Запустить проект (F5)."
+msgstr "Запустить проект."
#: tools/editor/editor_node.cpp
#: tools/editor/plugins/sample_library_editor_plugin.cpp
@@ -1704,14 +1693,12 @@ msgid "Pause the scene"
msgstr "Приостановить сцену"
#: tools/editor/editor_node.cpp
-#, fuzzy
msgid "Pause Scene"
msgstr "Приостановить сцену"
#: tools/editor/editor_node.cpp
-#, fuzzy
msgid "Stop the scene."
-msgstr "Остановить проект (F8)."
+msgstr "Остановить сцену."
#: tools/editor/editor_node.cpp
#: tools/editor/plugins/sample_library_editor_plugin.cpp
@@ -1719,14 +1706,12 @@ msgid "Stop"
msgstr "Остановить"
#: tools/editor/editor_node.cpp
-#, fuzzy
msgid "Play the edited scene."
-msgstr "Запустить текущую сцену (F6)."
+msgstr "Запустить текущую сцену."
#: tools/editor/editor_node.cpp
-#, fuzzy
msgid "Play Scene"
-msgstr "Сохранить сцену"
+msgstr "Запустить сцену"
#: tools/editor/editor_node.cpp
msgid "Play custom scene"
@@ -1737,19 +1722,20 @@ msgid "Debug options"
msgstr "Параметры отладки"
#: tools/editor/editor_node.cpp
-#, fuzzy
msgid "Deploy with Remote Debug"
-msgstr "Развернуть удалённую отладку"
+msgstr "Развернуть с удалённой отладкой"
#: tools/editor/editor_node.cpp
msgid ""
"When exporting or deploying, the resulting executable will attempt to connect "
"to the IP of this computer in order to be debugged."
msgstr ""
+"При экспорте или развёртывании, полученный исполняемый файл будет пытаться "
+"подключиться к IP этого компьютера с целью отладки."
#: tools/editor/editor_node.cpp
msgid "Small Deploy with Network FS"
-msgstr ""
+msgstr "Небольшое развёртывание через сеть"
#: tools/editor/editor_node.cpp
msgid ""
@@ -1760,6 +1746,11 @@ msgid ""
"On Android, deploy will use the USB cable for faster performance. This option "
"speeds up testing for games with a large footprint."
msgstr ""
+"Когда эта опция включена, экспорт или развёртывание будет создавать "
+"минимальный исполняемый файл.\n"
+"Файловая система проекта будет предоставляться редактором через сеть.\n"
+"На Android развёртывание будет быстрее при подключении через USB.\n"
+"Эта опция ускоряет тестирование больших проектов."
#: tools/editor/editor_node.cpp
msgid "Visible Collision Shapes"
@@ -1770,6 +1761,8 @@ msgid ""
"Collision shapes and raycast nodes (for 2D and 3D) will be visible on the "
"running game if this option is turned on."
msgstr ""
+"Когда эта опция включена, области соприкосновений и ноды Raycast(в 2D и 3D) "
+"будут видимыми в запущенной игре."
#: tools/editor/editor_node.cpp
msgid "Visible Navigation"
@@ -1780,10 +1773,12 @@ msgid ""
"Navigation meshes and polygons will be visible on the running game if this "
"option is turned on."
msgstr ""
+"Когда эта опция включена, навигационные полисетки и полигоны будут видимыми "
+"в запущенной игре."
#: tools/editor/editor_node.cpp
msgid "Sync Scene Changes"
-msgstr ""
+msgstr "Синхронизация изменений на сцене"
#: tools/editor/editor_node.cpp
msgid ""
@@ -1792,11 +1787,14 @@ msgid ""
"When used remotely on a device, this is more efficient with network "
"filesystem."
msgstr ""
+"Когда эта опция включена, все изменения, внесённые на сцену, в редакторе "
+"будут перенесены в запущенную игру.\n"
+"При удалённом использовании на устройстве, это работает более эффективно с "
+"сетевой файловой системой."
#: tools/editor/editor_node.cpp
-#, fuzzy
msgid "Sync Script Changes"
-msgstr "Обновлять при изменениях"
+msgstr "Синхронизация изменений в скриптах"
#: tools/editor/editor_node.cpp
msgid ""
@@ -1805,6 +1803,10 @@ msgid ""
"When used remotely on a device, this is more efficient with network "
"filesystem."
msgstr ""
+"Когда эта опция включена, любой сохранённый скрипт будет перезагружен в "
+"запущенную игру.\n"
+"При удалённом использовании на устройстве, это работает более эффективно с "
+"сетевой файловой системой."
#: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp
msgid "Settings"
@@ -2068,9 +2070,8 @@ msgid "Imported Resources"
msgstr "Импортированные ресурсы"
#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp
-#, fuzzy
msgid "No bit masks to import!"
-msgstr "Нет элементов для импорта!"
+msgstr "Нет битовой маски для импорта!"
#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp
#: tools/editor/io_plugins/editor_sample_import_plugin.cpp
@@ -2100,9 +2101,8 @@ msgid "Save path is empty!"
msgstr "Путь сохранения пуст!"
#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp
-#, fuzzy
msgid "Import BitMasks"
-msgstr "Импорт текстур"
+msgstr "Импорт битовой маски"
#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp
#: tools/editor/io_plugins/editor_texture_import_plugin.cpp
@@ -2129,7 +2129,7 @@ msgstr "Принять"
#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp
msgid "Bit Mask"
-msgstr ""
+msgstr "Битовая маска"
#: tools/editor/io_plugins/editor_font_import_plugin.cpp
msgid "No source font file!"
@@ -2164,7 +2164,7 @@ msgid "The quick brown fox jumps over the lazy dog."
msgstr ""
"Съешь ещё этих мягких французских булок да выпей чаю. \n"
"The quick brown fox jumps over the lazy dog.\n"
-"0123456789`!@#$%^&*()_+-=\\/"
+"0123456789`!@#$%^&*()_+-=\\/."
#: tools/editor/io_plugins/editor_font_import_plugin.cpp
msgid "Test:"
@@ -2646,18 +2646,18 @@ msgid "MultiNode Set"
msgstr "Мульти нодовый набор"
#: tools/editor/node_dock.cpp
-#, fuzzy
msgid "Node"
-msgstr "Mix Node"
+msgstr "Нод"
#: tools/editor/node_dock.cpp
-#, fuzzy
msgid "Groups"
-msgstr "Группы:"
+msgstr "Группы"
#: tools/editor/node_dock.cpp
msgid "Select a Node to edit Signals and Groups."
msgstr ""
+"Выберите нод для редактирования\n"
+"сигналов и групп."
#: tools/editor/plugins/animation_player_editor_plugin.cpp
msgid "Toggle Autoplay"
@@ -2774,7 +2774,7 @@ msgstr "Загрузить анимацию с диска."
#: tools/editor/plugins/animation_player_editor_plugin.cpp
msgid "Save the current animation"
-msgstr "Сохранить текущую анимацию."
+msgstr "Сохранить текущую анимацию"
#: tools/editor/plugins/animation_player_editor_plugin.cpp
msgid "Display list of animations in player."
@@ -2925,39 +2925,39 @@ msgstr "Дерево анимации не действительно."
#: tools/editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation Node"
-msgstr "Animation Node"
+msgstr "Animation нод"
#: tools/editor/plugins/animation_tree_editor_plugin.cpp
msgid "OneShot Node"
-msgstr "OneShot Node"
+msgstr "OneShot нод"
#: tools/editor/plugins/animation_tree_editor_plugin.cpp
msgid "Mix Node"
-msgstr "Mix Node"
+msgstr "Mix нод"
#: tools/editor/plugins/animation_tree_editor_plugin.cpp
msgid "Blend2 Node"
-msgstr "Blend2 Node"
+msgstr "Blend2 нод"
#: tools/editor/plugins/animation_tree_editor_plugin.cpp
msgid "Blend3 Node"
-msgstr "Blend3 Node"
+msgstr "Blend3 нод"
#: tools/editor/plugins/animation_tree_editor_plugin.cpp
msgid "Blend4 Node"
-msgstr "Blend4 Node"
+msgstr "Blend4 нод"
#: tools/editor/plugins/animation_tree_editor_plugin.cpp
msgid "TimeScale Node"
-msgstr "TimeScale Node"
+msgstr "TimeScale нод"
#: tools/editor/plugins/animation_tree_editor_plugin.cpp
msgid "TimeSeek Node"
-msgstr "TimeSeek Node"
+msgstr "TimeSeek нод"
#: tools/editor/plugins/animation_tree_editor_plugin.cpp
msgid "Transition Node"
-msgstr "Transition Node"
+msgstr "Transition нод"
#: tools/editor/plugins/animation_tree_editor_plugin.cpp
msgid "Import Animations.."
@@ -3971,14 +3971,12 @@ msgid "Auto Indent"
msgstr "Автоотступ"
#: tools/editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Reload Tool Script"
-msgstr "Перезагрузить скрипты"
+msgstr "Перезагрузить инструм. скрипт"
#: tools/editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Reload Tool Script (Soft)"
-msgstr "Перезагрузить скрипты"
+msgstr "Перезагрузить инструм. скрипт (мягко)"
#: tools/editor/plugins/script_editor_plugin.cpp
#: tools/editor/plugins/shader_editor_plugin.cpp
@@ -4635,20 +4633,20 @@ msgid "StyleBox Preview:"
msgstr "StyleBox предпросмотр:"
#: tools/editor/plugins/texture_region_editor_plugin.cpp
-#, fuzzy
msgid "Texture Region Editor"
-msgstr "Редактор Области Спрайта"
+msgstr "Редактор области текстуры"
#: tools/editor/plugins/texture_region_editor_plugin.cpp
-#, fuzzy
msgid "Scale Region Editor"
-msgstr "Редактор Области Спрайта"
+msgstr "Редактор масштабируемой области текстуры"
#: tools/editor/plugins/texture_region_editor_plugin.cpp
msgid ""
"No texture in this node.\n"
"Set a texture to be able to edit region."
msgstr ""
+"В этом ноде нет текстуры.\n"
+"Выберите текстуру, чтобы редактировать область."
#: tools/editor/plugins/theme_editor_plugin.cpp
msgid "Can't save theme to file:"
@@ -5171,14 +5169,12 @@ msgid "Remove project from the list? (Folder contents will not be modified)"
msgstr "Удалить проект из списка? (Содержимое папки не будет изменено)"
#: tools/editor/project_manager.cpp
-#, fuzzy
msgid "Project Manager"
-msgstr "Название проекта:"
+msgstr "Менеджер проектов"
#: tools/editor/project_manager.cpp
-#, fuzzy
msgid "Project List"
-msgstr "Выйти в список проектов"
+msgstr "Список проектов"
#: tools/editor/project_manager.cpp
msgid "Run"
@@ -5198,7 +5194,7 @@ msgstr "Выход"
#: tools/editor/project_settings.cpp
msgid "Key "
-msgstr "Кнопка"
+msgstr "Кнопка "
#: tools/editor/project_settings.cpp
msgid "Joy Button"
@@ -5334,14 +5330,12 @@ msgstr ""
"константы."
#: tools/editor/project_settings.cpp
-#, fuzzy
msgid "Autoload '%s' already exists!"
-msgstr "Действие '%s' уже существует!"
+msgstr "Автозагрузка '%s' уже существует!"
#: tools/editor/project_settings.cpp
-#, fuzzy
msgid "Rename Autoload"
-msgstr "Удалена автозагрузка"
+msgstr "Переименовать автозагрузку"
#: tools/editor/project_settings.cpp
msgid "Toggle AutoLoad Globals"
@@ -5691,9 +5685,7 @@ msgstr "Не могу работать с нодами из внешней сц
#: tools/editor/scene_tree_dock.cpp
msgid "Can't operate on nodes the current scene inherits from!"
-msgstr ""
-"Не могу работать с нодами текущей сцены, наследуемой откуда-то!\n"
-"Очистите наследование, чтобы продолжить работу с ними."
+msgstr "Невозможно работать с нодами текущей сцены, наследуемой откуда-то!"
#: tools/editor/scene_tree_dock.cpp
msgid "Remove Node(s)"
@@ -5861,7 +5853,7 @@ msgstr "Файлы не выбраны!"
#: tools/editor/scenes_dock.cpp
msgid "Instance"
-msgstr "Экземпляр"
+msgstr "Добавить экземпляр"
#: tools/editor/scenes_dock.cpp
msgid "Edit Dependencies.."
@@ -5872,9 +5864,8 @@ msgid "View Owners.."
msgstr "Просмотреть владельцев.."
#: tools/editor/scenes_dock.cpp
-#, fuzzy
msgid "Copy Path"
-msgstr "Копировать параметры"
+msgstr "Копировать путь"
#: tools/editor/scenes_dock.cpp
msgid "Rename or Move.."
@@ -6050,7 +6041,7 @@ msgstr "Дерево сцены в реальном времени:"
#: tools/editor/script_editor_debugger.cpp
msgid "Remote Object Properties: "
-msgstr "Параметры объекта:"
+msgstr "Параметры объекта: "
#: tools/editor/script_editor_debugger.cpp
msgid "Profiler"
@@ -6114,7 +6105,7 @@ msgstr "Установить из дерева нодов"
#: tools/editor/settings_config_dialog.cpp
msgid "Shortcuts"
-msgstr ""
+msgstr "Горячие клавиши"
#: tools/editor/spatial_editor_gizmos.cpp
msgid "Change Light Radius"