[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53119] trunk/blender/source/blender: some speedup by avoiding translation on entire enum arrays, and just translate the single name that ends up being used.
Campbell Barton
ideasman42 at gmail.com
Tue Dec 18 14:46:47 CET 2012
Revision: 53119
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53119
Author: campbellbarton
Date: 2012-12-18 13:46:37 +0000 (Tue, 18 Dec 2012)
Log Message:
-----------
some speedup by avoiding translation on entire enum arrays, and just translate the single name that ends up being used.
Modified Paths:
--------------
trunk/blender/source/blender/editors/interface/interface.c
trunk/blender/source/blender/editors/interface/interface_layout.c
trunk/blender/source/blender/makesrna/intern/rna_access.c
Modified: trunk/blender/source/blender/editors/interface/interface.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface.c 2012-12-18 13:25:23 UTC (rev 53118)
+++ trunk/blender/source/blender/editors/interface/interface.c 2012-12-18 13:46:37 UTC (rev 53119)
@@ -2827,12 +2827,17 @@
EnumPropertyItem *item;
int i, totitem, free;
- /* TODO, translate after getting the item, saves many lookups */
- RNA_property_enum_items_gettexted(block->evil_C, ptr, prop, &item, &totitem, &free);
+ /* get untranslated, then translate the single string we get */
+ RNA_property_enum_items(block->evil_C, ptr, prop, &item, &totitem, &free);
for (i = 0; i < totitem; i++) {
if (item[i].identifier[0] && item[i].value == (int)max) {
+#ifdef WITH_INTERNATIONAL
+ str = BLF_pgettext(RNA_property_translation_context(prop), item[i].name);
+#else
str = item[i].name;
+#endif
icon = item[i].icon;
+ break;
}
}
Modified: trunk/blender/source/blender/editors/interface/interface_layout.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_layout.c 2012-12-18 13:25:23 UTC (rev 53118)
+++ trunk/blender/source/blender/editors/interface/interface_layout.c 2012-12-18 13:46:37 UTC (rev 53119)
@@ -718,8 +718,13 @@
int totitem, free;
const char *name;
- RNA_property_enum_items_gettexted(layout->root->block->evil_C, ptr, prop, &item, &totitem, &free);
- if (RNA_enum_name(item, retval, &name) == 0) {
+ RNA_property_enum_items(layout->root->block->evil_C, ptr, prop, &item, &totitem, &free);
+ if (RNA_enum_name(item, retval, &name)) {
+#ifdef WITH_INTERNATIONAL
+ name = BLF_pgettext(RNA_property_translation_context(prop), name);
+#endif
+ }
+ else {
name = "";
}
@@ -907,7 +912,8 @@
/* enum lookup */
if ((prop = RNA_struct_find_property(&ptr, propname))) {
- RNA_property_enum_items_gettexted(layout->root->block->evil_C, &ptr, prop, &item, NULL, &free);
+ /* no need for translations here */
+ RNA_property_enum_items(layout->root->block->evil_C, &ptr, prop, &item, NULL, &free);
if (item == NULL || RNA_enum_value_from_id(item, value_str, &value) == 0) {
if (free) {
MEM_freeN(item);
@@ -1172,7 +1178,7 @@
return;
}
- RNA_property_enum_items_gettexted(layout->root->block->evil_C, ptr, prop, &item, NULL, &free);
+ RNA_property_enum_items(layout->root->block->evil_C, ptr, prop, &item, NULL, &free);
if (!RNA_enum_value_from_id(item, value, &ivalue)) {
if (free) {
@@ -1185,7 +1191,12 @@
for (a = 0; item[a].identifier; a++) {
if (item[a].value == ivalue) {
- uiItemFullR(layout, ptr, prop, RNA_ENUM_VALUE, ivalue, 0, name ? name : item[a].name, icon ? icon : item[a].icon);
+ const char *item_name = item[a].name;
+
+#ifdef WITH_INTERNATIONAL
+ item_name = BLF_pgettext(RNA_property_translation_context(prop), item_name);
+#endif
+ uiItemFullR(layout, ptr, prop, RNA_ENUM_VALUE, ivalue, 0, item_name ? item_name : name, icon ? icon : item[a].icon);
break;
}
}
Modified: trunk/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_access.c 2012-12-18 13:25:23 UTC (rev 53118)
+++ trunk/blender/source/blender/makesrna/intern/rna_access.c 2012-12-18 13:46:37 UTC (rev 53119)
@@ -1222,10 +1222,8 @@
for (i = 0; nitem[i].identifier; i++) {
if (nitem[i].name) {
- if (prop->translation_context)
- nitem[i].name = BLF_pgettext(prop->translation_context, nitem[i].name);
- else
- nitem[i].name = BLF_pgettext(NULL, nitem[i].name);
+ /* note: prop->translation_context may be NULL, this just means we dont use a context */
+ nitem[i].name = BLF_pgettext(prop->translation_context, nitem[i].name);
}
if (nitem[i].description)
nitem[i].description = BLF_pgettext(NULL, nitem[i].description);
More information about the Bf-blender-cvs
mailing list