[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