aboutsummaryrefslogtreecommitdiff
path: root/editor/io_plugins/editor_translation_import_plugin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'editor/io_plugins/editor_translation_import_plugin.cpp')
-rw-r--r--editor/io_plugins/editor_translation_import_plugin.cpp299
1 files changed, 130 insertions, 169 deletions
diff --git a/editor/io_plugins/editor_translation_import_plugin.cpp b/editor/io_plugins/editor_translation_import_plugin.cpp
index 4594eeb9c..4b6ba8555 100644
--- a/editor/io_plugins/editor_translation_import_plugin.cpp
+++ b/editor/io_plugins/editor_translation_import_plugin.cpp
@@ -27,21 +27,20 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
#include "editor_translation_import_plugin.h"
-#include "scene/gui/file_dialog.h"
+#include "compressed_translation.h"
#include "editor/editor_dir_dialog.h"
#include "editor/editor_node.h"
+#include "editor/project_settings.h"
#include "editor/property_editor.h"
-#include "scene/resources/sample.h"
#include "io/resource_saver.h"
#include "os/file_access.h"
+#include "scene/gui/file_dialog.h"
+#include "scene/resources/sample.h"
#include "translation.h"
-#include "compressed_translation.h"
-#include "editor/project_settings.h"
-
class EditorTranslationImportDialog : public ConfirmationDialog {
- OBJ_TYPE(EditorTranslationImportDialog,ConfirmationDialog);
+ OBJ_TYPE(EditorTranslationImportDialog, ConfirmationDialog);
EditorTranslationImportPlugin *plugin;
@@ -53,32 +52,29 @@ class EditorTranslationImportDialog : public ConfirmationDialog {
CheckButton *add_to_project;
EditorDirDialog *save_select;
ConfirmationDialog *error_dialog;
- Vector<TreeItem*> items;
+ Vector<TreeItem *> items;
Tree *columns;
public:
-
- void _choose_file(const String& p_path) {
+ void _choose_file(const String &p_path) {
import_path->set_text(p_path);
- FileAccess *f = FileAccess::open(p_path,FileAccess::READ);
+ FileAccess *f = FileAccess::open(p_path, FileAccess::READ);
if (!f) {
error_dialog->set_text(TTR("Invalid source!"));
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
+ error_dialog->popup_centered(Size2(200, 100) * EDSCALE);
return;
-
}
Vector<String> csvh = f->get_csv_line();
memdelete(f);
- if (csvh.size()<2) {
+ if (csvh.size() < 2) {
error_dialog->set_text(TTR("Invalid translation source!"));
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
+ error_dialog->popup_centered(Size2(200, 100) * EDSCALE);
return;
-
}
columns->clear();
@@ -86,73 +82,68 @@ public:
TreeItem *root = columns->create_item();
columns->set_hide_root(true);
columns->set_column_titles_visible(true);
- columns->set_column_title(0,TTR("Column"));
- columns->set_column_title(1,TTR("Language"));
+ columns->set_column_title(0, TTR("Column"));
+ columns->set_column_title(1, TTR("Language"));
Vector<String> langs = TranslationServer::get_all_locales();
Vector<String> names = TranslationServer::get_all_locale_names();
- if (csvh[0]=="")
+ if (csvh[0] == "")
ignore_first->set_pressed(true);
-
items.clear();
- for(int i=1;i<csvh.size();i++) {
+ for (int i = 1; i < csvh.size(); i++) {
TreeItem *ti = columns->create_item(root);
- ti->set_editable(0,true);
- ti->set_selectable(0,false);
- ti->set_cell_mode(0,TreeItem::CELL_MODE_CHECK);
- ti->set_checked(0,true);
- ti->set_text(0,itos(i));
+ ti->set_editable(0, true);
+ ti->set_selectable(0, false);
+ ti->set_cell_mode(0, TreeItem::CELL_MODE_CHECK);
+ ti->set_checked(0, true);
+ ti->set_text(0, itos(i));
items.push_back(ti);
String lname = csvh[i].to_lower().strip_edges();
- int idx=-1;
+ int idx = -1;
String hint;
- for(int j=0;j<langs.size();j++) {
+ for (int j = 0; j < langs.size(); j++) {
- if (langs[j]==lname.substr(0,langs[j].length()).to_lower()) {
- idx=j;
+ if (langs[j] == lname.substr(0, langs[j].length()).to_lower()) {
+ idx = j;
}
- if (j>0) {
- hint+=",";
+ if (j > 0) {
+ hint += ",";
}
- hint+=names[j].replace(","," ");
+ hint += names[j].replace(",", " ");
}
- ti->set_cell_mode(1,TreeItem::CELL_MODE_RANGE);
- ti->set_text(1,hint);
- ti->set_editable(1,true);
-
+ ti->set_cell_mode(1, TreeItem::CELL_MODE_RANGE);
+ ti->set_text(1, hint);
+ ti->set_editable(1, true);
- if (idx!=-1) {
+ if (idx != -1) {
ignore_first->set_pressed(true);
- ti->set_range(1,idx);
+ ti->set_range(1, idx);
} else {
//not found, maybe used stupid name
if (lname.begins_with("br")) //brazilian
- ti->set_range(1,langs.find("pt"));
+ ti->set_range(1, langs.find("pt"));
else if (lname.begins_with("ch")) //chinese
- ti->set_range(1,langs.find("zh"));
+ ti->set_range(1, langs.find("zh"));
else if (lname.begins_with("sp")) //spanish
- ti->set_range(1,langs.find("es"));
- else if (lname.begins_with("kr"))// kprean
- ti->set_range(1,langs.find("ko"));
- else if (i==0)
- ti->set_range(1,langs.find("en"));
+ ti->set_range(1, langs.find("es"));
+ else if (lname.begins_with("kr")) // kprean
+ ti->set_range(1, langs.find("ko"));
+ else if (i == 0)
+ ti->set_range(1, langs.find("en"));
else
- ti->set_range(1,langs.find("es"));
+ ti->set_range(1, langs.find("es"));
}
- ti->set_metadata(1,names[ti->get_range(1)]);
+ ti->set_metadata(1, names[ti->get_range(1)]);
}
-
-
-
}
- void _choose_save_dir(const String& p_path) {
+ void _choose_save_dir(const String &p_path) {
save_path->set_text(p_path);
}
@@ -165,184 +156,165 @@ public:
void _browse_target() {
save_select->popup_centered_ratio();
-
}
+ void popup_import(const String &p_from) {
- void popup_import(const String& p_from) {
+ popup_centered(Size2(400, 400) * EDSCALE);
- popup_centered(Size2(400,400)*EDSCALE);
-
- if (p_from!="") {
+ if (p_from != "") {
Ref<ResourceImportMetadata> rimd = ResourceLoader::load_import_metadata(p_from);
ERR_FAIL_COND(!rimd.is_valid());
- ERR_FAIL_COND(rimd->get_source_count()!=1);
+ ERR_FAIL_COND(rimd->get_source_count() != 1);
_choose_file(EditorImportPlugin::expand_source_path(rimd->get_source_path(0)));
_choose_save_dir(p_from.get_base_dir());
String locale = rimd->get_option("locale");
- bool skip_first=rimd->get_option("skip_first");
+ bool skip_first = rimd->get_option("skip_first");
bool compressed = rimd->get_option("compress");
- int idx=-1;
+ int idx = -1;
- for(int i=0;i<items.size();i++) {
+ for (int i = 0; i < items.size(); i++) {
String il = TranslationServer::get_all_locales()[items[i]->get_range(1)];
- if (il==locale) {
- idx=i;
+ if (il == locale) {
+ idx = i;
break;
}
}
- if (idx!=-1) {
- idx=rimd->get_option("index");
+ if (idx != -1) {
+ idx = rimd->get_option("index");
}
- for(int i=0;i<items.size();i++) {
+ for (int i = 0; i < items.size(); i++) {
- if (i==idx) {
+ if (i == idx) {
Vector<String> locs = TranslationServer::get_all_locales();
- for(int j=0;j<locs.size();j++) {
- if (locs[j]==locale) {
- items[i]->set_range(1,j);
+ for (int j = 0; j < locs.size(); j++) {
+ if (locs[j] == locale) {
+ items[i]->set_range(1, j);
}
-
}
- items[i]->set_checked(0,true);
+ items[i]->set_checked(0, true);
} else {
- items[i]->set_checked(0,false);
-
+ items[i]->set_checked(0, false);
}
}
ignore_first->set_pressed(skip_first);
compress->set_pressed(compressed);
-
-
-
}
-
}
-
void _import() {
-
- if (items.size()==0) {
+ if (items.size() == 0) {
error_dialog->set_text(TTR("No items to import!"));
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
+ error_dialog->popup_centered(Size2(200, 100) * EDSCALE);
}
if (!save_path->get_text().begins_with("res://")) {
error_dialog->set_text(TTR("No target path!"));
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
+ error_dialog->popup_centered(Size2(200, 100) * EDSCALE);
}
- EditorProgress progress("import_xl",TTR("Import Translations"),items.size());
- for(int i=0;i<items.size();i++) {
+ EditorProgress progress("import_xl", TTR("Import Translations"), items.size());
+ for (int i = 0; i < items.size(); i++) {
- progress.step(items[i]->get_metadata(1),i);
+ progress.step(items[i]->get_metadata(1), i);
if (!items[i]->is_checked(0))
continue;
String locale = TranslationServer::get_all_locales()[items[i]->get_range(1)];
- Ref<ResourceImportMetadata> imd = memnew( ResourceImportMetadata );
+ Ref<ResourceImportMetadata> imd = memnew(ResourceImportMetadata);
imd->add_source(EditorImportPlugin::validate_source_path(import_path->get_text()));
- imd->set_option("locale",locale);
- imd->set_option("index",i);
- imd->set_option("skip_first",ignore_first->is_pressed());
- imd->set_option("compress",compress->is_pressed());
+ imd->set_option("locale", locale);
+ imd->set_option("index", i);
+ imd->set_option("skip_first", ignore_first->is_pressed());
+ imd->set_option("compress", compress->is_pressed());
- String savefile = save_path->get_text().plus_file(import_path->get_text().get_file().basename()+"."+locale+".xl");
- Error err = plugin->import(savefile,imd);
- if (err!=OK) {
+ String savefile = save_path->get_text().plus_file(import_path->get_text().get_file().basename() + "." + locale + ".xl");
+ Error err = plugin->import(savefile, imd);
+ if (err != OK) {
error_dialog->set_text(TTR("Couldn't import!"));
- error_dialog->popup_centered(Size2(200,100)*EDSCALE);
+ error_dialog->popup_centered(Size2(200, 100) * EDSCALE);
} else if (add_to_project->is_pressed()) {
ProjectSettings::get_singleton()->add_translation(savefile);
}
}
hide();
-
}
-
void _notification(int p_what) {
-
- if (p_what==NOTIFICATION_ENTER_TREE) {
-
-
+ if (p_what == NOTIFICATION_ENTER_TREE) {
}
}
static void _bind_methods() {
-
- ObjectTypeDB::bind_method("_choose_file",&EditorTranslationImportDialog::_choose_file);
- ObjectTypeDB::bind_method("_choose_save_dir",&EditorTranslationImportDialog::_choose_save_dir);
- ObjectTypeDB::bind_method("_import",&EditorTranslationImportDialog::_import);
- ObjectTypeDB::bind_method("_browse",&EditorTranslationImportDialog::_browse);
- ObjectTypeDB::bind_method("_browse_target",&EditorTranslationImportDialog::_browse_target);
- // ADD_SIGNAL( MethodInfo("imported",PropertyInfo(Variant::OBJECT,"scene")) );
+ ObjectTypeDB::bind_method("_choose_file", &EditorTranslationImportDialog::_choose_file);
+ ObjectTypeDB::bind_method("_choose_save_dir", &EditorTranslationImportDialog::_choose_save_dir);
+ ObjectTypeDB::bind_method("_import", &EditorTranslationImportDialog::_import);
+ ObjectTypeDB::bind_method("_browse", &EditorTranslationImportDialog::_browse);
+ ObjectTypeDB::bind_method("_browse_target", &EditorTranslationImportDialog::_browse_target);
+ // ADD_SIGNAL( MethodInfo("imported",PropertyInfo(Variant::OBJECT,"scene")) );
}
EditorTranslationImportDialog(EditorTranslationImportPlugin *p_plugin) {
- plugin=p_plugin;
-
+ plugin = p_plugin;
set_title(TTR("Import Translation"));
- VBoxContainer *vbc = memnew( VBoxContainer );
+ VBoxContainer *vbc = memnew(VBoxContainer);
add_child(vbc);
set_child_rect(vbc);
+ VBoxContainer *csvb = memnew(VBoxContainer);
-
- VBoxContainer *csvb = memnew( VBoxContainer );
-
- HBoxContainer *hbc = memnew( HBoxContainer );
+ HBoxContainer *hbc = memnew(HBoxContainer);
csvb->add_child(hbc);
- vbc->add_margin_child(TTR("Source CSV:"),csvb);
+ vbc->add_margin_child(TTR("Source CSV:"), csvb);
- import_path = memnew( LineEdit );
+ import_path = memnew(LineEdit);
import_path->set_h_size_flags(SIZE_EXPAND_FILL);
hbc->add_child(import_path);
- ignore_first = memnew( CheckButton );
+ ignore_first = memnew(CheckButton);
ignore_first->set_text(TTR("Ignore First Row"));
csvb->add_child(ignore_first);
- Button * import_choose = memnew( Button );
+ Button *import_choose = memnew(Button);
import_choose->set_text(" .. ");
hbc->add_child(import_choose);
- import_choose->connect("pressed", this,"_browse");
+ import_choose->connect("pressed", this, "_browse");
- VBoxContainer *tcomp = memnew( VBoxContainer);
- hbc = memnew( HBoxContainer );
+ VBoxContainer *tcomp = memnew(VBoxContainer);
+ hbc = memnew(HBoxContainer);
tcomp->add_child(hbc);
- vbc->add_margin_child(TTR("Target Path:"),tcomp);
+ vbc->add_margin_child(TTR("Target Path:"), tcomp);
- save_path = memnew( LineEdit );
+ save_path = memnew(LineEdit);
save_path->set_h_size_flags(SIZE_EXPAND_FILL);
hbc->add_child(save_path);
- Button * save_choose = memnew( Button );
+ Button *save_choose = memnew(Button);
save_choose->set_text(" .. ");
hbc->add_child(save_choose);
- save_choose->connect("pressed", this,"_browse_target");
+ save_choose->connect("pressed", this, "_browse_target");
- compress = memnew( CheckButton);
+ compress = memnew(CheckButton);
compress->set_pressed(true);
compress->set_text(TTR("Compress"));
tcomp->add_child(compress);
- add_to_project = memnew( CheckButton);
+ add_to_project = memnew(CheckButton);
add_to_project->set_pressed(true);
add_to_project->set_text(TTR("Add to Project (engine.cfg)"));
tcomp->add_child(add_to_project);
@@ -351,36 +323,32 @@ public:
file_select->set_access(EditorFileDialog::ACCESS_FILESYSTEM);
add_child(file_select);
file_select->set_mode(EditorFileDialog::MODE_OPEN_FILE);
- file_select->connect("file_selected", this,"_choose_file");
+ file_select->connect("file_selected", this, "_choose_file");
file_select->add_filter("*.csv ; Translation CSV");
- save_select = memnew( EditorDirDialog );
+ save_select = memnew(EditorDirDialog);
add_child(save_select);
- // save_select->set_mode(EditorFileDialog::MODE_OPEN_DIR);
- save_select->connect("dir_selected", this,"_choose_save_dir");
+ // save_select->set_mode(EditorFileDialog::MODE_OPEN_DIR);
+ save_select->connect("dir_selected", this, "_choose_save_dir");
- get_ok()->connect("pressed", this,"_import");
+ get_ok()->connect("pressed", this, "_import");
get_ok()->set_text(TTR("Import"));
-
- error_dialog = memnew ( ConfirmationDialog );
+ error_dialog = memnew(ConfirmationDialog);
add_child(error_dialog);
error_dialog->get_ok()->set_text(TTR("Accept"));
- // error_dialog->get_cancel()->hide();
+ // error_dialog->get_cancel()->hide();
set_hide_on_ok(false);
- columns = memnew( Tree );
- vbc->add_margin_child(TTR("Import Languages:"),columns,true);
+ columns = memnew(Tree);
+ vbc->add_margin_child(TTR("Import Languages:"), columns, true);
}
~EditorTranslationImportDialog() {
-
}
-
};
-
String EditorTranslationImportPlugin::get_name() const {
return "translation";
@@ -389,20 +357,17 @@ String EditorTranslationImportPlugin::get_visible_name() const {
return TTR("Translation");
}
-void EditorTranslationImportPlugin::import_dialog(const String& p_from) {
+void EditorTranslationImportPlugin::import_dialog(const String &p_from) {
dialog->popup_import(p_from);
}
+void EditorTranslationImportPlugin::import_from_drop(const Vector<String> &p_drop, const String &p_dest_path) {
-
-void EditorTranslationImportPlugin::import_from_drop(const Vector<String>& p_drop, const String &p_dest_path) {
-
-
- for(int i=0;i<p_drop.size();i++) {
+ for (int i = 0; i < p_drop.size(); i++) {
String ext = p_drop[i].extension().to_lower();
- if (ext=="csv") {
+ if (ext == "csv") {
import_dialog();
dialog->_choose_file(p_drop[i]);
@@ -410,65 +375,61 @@ void EditorTranslationImportPlugin::import_from_drop(const Vector<String>& p_dro
break;
}
}
-
-
}
-Error EditorTranslationImportPlugin::import(const String& p_path, const Ref<ResourceImportMetadata>& p_from) {
+Error EditorTranslationImportPlugin::import(const String &p_path, const Ref<ResourceImportMetadata> &p_from) {
Ref<ResourceImportMetadata> from = p_from;
- ERR_FAIL_COND_V( from->get_source_count()!=1, ERR_INVALID_PARAMETER);
+ ERR_FAIL_COND_V(from->get_source_count() != 1, ERR_INVALID_PARAMETER);
- String source = EditorImportPlugin::expand_source_path( from->get_source_path(0) );
+ String source = EditorImportPlugin::expand_source_path(from->get_source_path(0));
- FileAccessRef f = FileAccess::open(source,FileAccess::READ);
+ FileAccessRef f = FileAccess::open(source, FileAccess::READ);
- ERR_FAIL_COND_V( !f, ERR_INVALID_PARAMETER );
+ ERR_FAIL_COND_V(!f, ERR_INVALID_PARAMETER);
bool skip_first = from->get_option("skip_first");
int index = from->get_option("index");
- index+=1;
+ index += 1;
String locale = from->get_option("locale");
- Ref<Translation> translation = memnew( Translation );
+ Ref<Translation> translation = memnew(Translation);
- translation->set_locale( locale );
+ translation->set_locale(locale);
Vector<String> line = f->get_csv_line();
- while(line.size()>1) {
+ while (line.size() > 1) {
if (!skip_first) {
- ERR_FAIL_INDEX_V(index,line.size(),ERR_INVALID_DATA );
- translation->add_message(line[0].strip_edges(),line[index]);
+ ERR_FAIL_INDEX_V(index, line.size(), ERR_INVALID_DATA);
+ translation->add_message(line[0].strip_edges(), line[index]);
} else {
- skip_first=false;
+ skip_first = false;
}
line = f->get_csv_line();
}
- from->set_source_md5(0,FileAccess::get_md5(source));
+ from->set_source_md5(0, FileAccess::get_md5(source));
from->set_editor(get_name());
String dst_path = p_path;
if (from->get_option("compress")) {
- Ref<PHashTranslation> cxl = memnew( PHashTranslation );
- cxl->generate( translation );
- translation=cxl;
+ Ref<PHashTranslation> cxl = memnew(PHashTranslation);
+ cxl->generate(translation);
+ translation = cxl;
}
translation->set_import_metadata(from);
- return ResourceSaver::save(dst_path,translation);
-
+ return ResourceSaver::save(dst_path, translation);
}
-
-EditorTranslationImportPlugin::EditorTranslationImportPlugin(EditorNode* p_editor) {
+EditorTranslationImportPlugin::EditorTranslationImportPlugin(EditorNode *p_editor) {
dialog = memnew(EditorTranslationImportDialog(this));
p_editor->get_gui_base()->add_child(dialog);