[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19484] branches/blender2.5/blender/source /blender: Small cleanup, all this options are now in the User Preferences, RNA.

Diego Borghetti bdiego at gmail.com
Tue Mar 31 23:19:23 CEST 2009


Revision: 19484
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19484
Author:   bdiego
Date:     2009-03-31 23:19:23 +0200 (Tue, 31 Mar 2009)

Log Message:
-----------
Small cleanup, all this options are now in the User Preferences, RNA.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenfont/intern/blf_internal_types.h
    branches/blender2.5/blender/source/blender/blenfont/intern/blf_lang.c
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_init_exit.c

Modified: branches/blender2.5/blender/source/blender/blenfont/intern/blf_internal_types.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenfont/intern/blf_internal_types.h	2009-03-31 21:03:15 UTC (rev 19483)
+++ branches/blender2.5/blender/source/blender/blenfont/intern/blf_internal_types.h	2009-03-31 21:19:23 UTC (rev 19484)
@@ -197,20 +197,6 @@
 	char *path;
 } DirBLF;
 
-typedef struct LangBLF {
-	struct LangBLF *next;
-	struct LangBLF *prev;
-
-	char *line;
-	char *language;
-	char *code;
-	int id;
-} LangBLF;
-
-#define BLF_LANG_FIND_BY_LINE 0
-#define BLF_LANG_FIND_BY_LANGUAGE 1
-#define BLF_LANG_FIND_BY_CODE 2
-
 /* font->clip_mode */
 #define BLF_CLIP_DISABLE 0
 #define BLF_CLIP_OUT 1

Modified: branches/blender2.5/blender/source/blender/blenfont/intern/blf_lang.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenfont/intern/blf_lang.c	2009-03-31 21:03:15 UTC (rev 19483)
+++ branches/blender2.5/blender/source/blender/blenfont/intern/blf_lang.c	2009-03-31 21:19:23 UTC (rev 19484)
@@ -29,12 +29,10 @@
 #include <stdlib.h>
 #include <string.h>
 
-#ifdef WITH_FREETYPE2
-#include <ft2build.h>
+#ifdef INTERNATIONAL
 
-#include FT_FREETYPE_H
-#include FT_GLYPH_H
-#endif
+#include <locale.h>
+#include "libintl.h"
 
 #include "MEM_guardedalloc.h"
 
@@ -49,208 +47,127 @@
 
 #include "BIF_gl.h"
 
-#include "blf_internal_types.h"
-
-// XXX 2.50 Remove this later.
-#ifdef WITH_FREETYPE2
-#include "FTF_Api.h"
+#ifdef __APPLE__
+#include "BKE_utildefines.h"
 #endif
 
-static ListBase global_lang= { NULL, NULL };
-static int global_tot_lang= 0;
-static int global_err_lang= 0;
+#define DOMAIN_NAME "blender"
+#define SYSTEM_ENCODING_DEFAULT "UTF-8"
+#define FONT_SIZE_DEFAULT 12
 
-int BLF_lang_error(void)
-{
-	return(global_err_lang);
-}
+/* locale options. */
+char global_messagepath[1024];
+char global_language[32];
+char global_encoding_name[32];
 
-char *BLF_lang_pup(void)
-{
-	LangBLF *lme;
-	static char string[1024];
-	static char tmp[1024];
 
-	if(global_tot_lang == 0)
-		sprintf(string, "Choose Language: %%t|Language:  English %%x0");
-	else {
-		lme= global_lang.first;
-		sprintf(string, "Choose Language: %%t");
-		while (lme) {
-			sprintf(tmp, "|Language:  %s %%x%d", lme->language, lme->id);
-			strcat(string, tmp);
-			lme= lme->next;
-		}
-	}
-
-	return(string);
-}
-
-LangBLF *blf_lang_find_by_id(short langid)
+void BLF_lang_init(void)
 {
-	LangBLF *p;
+#ifdef __APPLE__
+	char *bundlepath;
+#endif
 
-	p= global_lang.first;
-	while (p) {
-		if (p->id == langid)
-			return(p);
-		p= p->next;
-	}
-	return(NULL);
-}
+	strcpy(global_encoding_name, SYSTEM_ENCODING_DEFAULT);
 
-char *BLF_lang_find_code(short langid)
-{
-	LangBLF *p;
+	/* set messagepath directory */
 
-	p= blf_lang_find_by_id(langid);
-	if (p)
-		return(p->code);
-	return(NULL);
-}
-
-void BLF_lang_set(int id)
-{
-#ifdef WITH_FREETYPE2
-	LangBLF *lme;
-
-	// XXX 2.50 Remove this later, with ftfont
-	lme= blf_lang_find_by_id(id);
-	if(lme) FTF_SetLanguage(lme->code);
-	else FTF_SetLanguage("en_US");
+#ifndef LOCALEDIR
+#define LOCALEDIR "/usr/share/locale"
 #endif
-}
 
-static void blf_lang_split(char *line, LangBLF* lme)
-{
-	char *dpointchar= strchr(line, ':');
+	strcpy(global_messagepath, ".blender/locale");
 
-	if (dpointchar) {
-		lme->code= BLI_strdup(dpointchar+1);
-		*(dpointchar)=0;
-		lme->language= BLI_strdup(line);
-	} else {
-		lme->code= NULL;
-		lme->language= NULL;
-		/* XXX 2.50 bad call error("Invalid language file");
-		 * If we set this to NULL, the function blf_lang_new
-		 * drop the line and increment the error lang value
-		 * so the init code can call BLF_lang_error to get
-		 * the number of invalid lines and show the error.
-		 */
-	}
-}
+	if (!BLI_exist(global_messagepath)) { /* locale not in current dir */
+		BLI_make_file_string("/", global_messagepath, BLI_gethome(), ".blender/locale");
 
-LangBLF *blf_lang_find(char *s, int find_by)
-{
-	LangBLF *p;
+		if (!BLI_exist(global_messagepath)) { /* locale not in home dir */
+#ifdef WIN32 
+			BLI_make_file_string("/", global_messagepath, BLI_gethome(), "/locale");
+			if (!BLI_exist(global_messagepath)) {
+#endif
+#ifdef __APPLE__
+			/* message catalogs are stored inside the application bundle */
+			bundlepath= BLI_getbundle();
+			strcpy(global_messagepath, bundlepath);
+			strcat(global_messagepath, "/Contents/Resources/locale");
+			if (!BLI_exist(global_messagepath)) { /* locale not in bundle (now that's odd..) */
+#endif
+				strcpy(global_messagepath, LOCALEDIR);
 
-	p= global_lang.first;
-	while (p) {
-		if (find_by == BLF_LANG_FIND_BY_LINE) {
-			if (BLI_streq(s, p->line))
-				return(p);
+				if (!BLI_exist(global_messagepath)) { /* locale not in LOCALEDIR */
+					strcpy(global_messagepath, "message"); /* old compatibility as last */
+				}
+#ifdef WIN32
+			}
+#endif
+#ifdef __APPLE__
+			}
+#endif
 		}
-		else if (find_by == BLF_LANG_FIND_BY_CODE) {
-			if (BLI_streq(s, p->code))
-				return(p);
-		}
-		else if (find_by == BLF_LANG_FIND_BY_LANGUAGE) {
-			if (BLI_streq(s, p->language))
-				return(p);
-		}
-		p= p->next;
 	}
-	return(NULL);
 }
 
-static void blf_lang_new(char *line)
+void BLF_lang_set(char *str)
 {
-	LangBLF *lme;
+#if defined (_WIN32) || defined(__APPLE__)
+	char envstr[12];
 
-	lme= blf_lang_find(line, BLF_LANG_FIND_BY_LINE);
-	if (!lme) {
-		lme= MEM_mallocN(sizeof(LangBLF), "blf_lang_new");
-		lme->next= NULL;
-		lme->prev= NULL;
-		lme->line = BLI_strdup(line);
-		blf_lang_split(line, lme);
-		
-		if (lme->code && lme->language) {
-			lme->id = global_tot_lang;
-			global_tot_lang++;
-			BLI_addhead(&global_lang, lme);
-		}
-		else {
-			global_err_lang++;
-			MEM_freeN(lme->line);
-			MEM_freeN(lme);
-		}
-	}
-}
-
-int BLF_lang_init(void) 
-{
-	char name[FILE_MAXDIR+FILE_MAXFILE];
-	LinkNode *l, *lines;
-	
-	/* .Blanguages, http://www.blender3d.org/cms/Installation_Policy.352.0.html*/
-#if defined (__APPLE__) || (WIN32)
-	BLI_make_file_string("/", name, BLI_gethome(), ".Blanguages");
+	sprintf(envstr, "LANG=%s", str);
+	envstr[strlen(envstr)]= '\0';
+#ifdef _WIN32
+	gettext_putenv(envstr);
 #else
-	BLI_make_file_string("/", name, BLI_gethome(), ".blender/.Blanguages");
+	putenv(envstr);
 #endif
+#else
+	char *locreturn= setlocale(LC_ALL, str);
+	if (locreturn == NULL) {
+		char *lang;
 
-	lines= BLI_read_file_as_lines(name);
+		lang= (char*)malloc(sizeof(char)*(strlen(str)+7));
 
-	if(lines == NULL) {
-		/* If not found in home, try current dir 
-		 * (Resources folder of app bundle on OS X) */
-#if defined (__APPLE__)
-		char *bundlePath = BLI_getbundle();
-		strcpy(name, bundlePath);
-		strcat(name, "/Contents/Resources/.Blanguages");
-#else
-		/* Check the CWD. Takes care of the case where users
-		 * unpack blender tarball; cd blender-dir; ./blender */
-		strcpy(name, ".blender/.Blanguages");
-#endif
-		lines= BLI_read_file_as_lines(name);
+		lang[0]= '\0';
+		strcat(lang, str);
+		strcat(lang, ".UTF-8");
 
-		if(lines == NULL) {
-			/* If not found in .blender, try current dir */
-			strcpy(name, ".Blanguages");
-			lines= BLI_read_file_as_lines(name);
-			if(lines == NULL) {
-// XXX 2.50				if(G.f & G_DEBUG)
-				printf("File .Blanguages not found\n");
-				return(0);
-			}
+		locreturn= setlocale(LC_ALL, lang);
+		if (locreturn == NULL) {
+			printf("could not change language to %s nor %s\n", str, lang);
 		}
-	}
 
-	for (l= lines; l; l= l->next) {
-		char *line= l->link;
-			
-		if (!BLI_streq(line, "")) {
-			blf_lang_new(line);
-		}
+		free(lang);
 	}
 
-	BLI_free_file_lines(lines);
-	return(1);
+	setlocale(LC_NUMERIC, "C");
+#endif
+
+	bindtextdomain(DOMAIN_NAME, global_messagepath);
+	/* bind_textdomain_codeset(DOMAIN_NAME, global_encoding_name); */
+	textdomain(DOMAIN_NAME);
+	strcpy(global_language, str);
 }
 
-void BLF_lang_exit(void)
+void BLF_lang_encoding(char *str)
 {
-	LangBLF *p;
+	strcpy(global_encoding_name, str);
+	/* bind_textdomain_codeset(DOMAIN_NAME, encoding_name); */
+}
 
-	while (global_lang.first) {
-		p= global_lang.first;
-		BLI_remlink(&global_lang, p);
-		MEM_freeN(p->line);
-		MEM_freeN(p->language);
-		MEM_freeN(p->code);
-		MEM_freeN(p);
-	}
+#else /* ! INTERNATIONAL */
+
+void BLF_lang_init(void)
+{
+	return;
 }
+
+void BLF_lang_encoding(char *str)
+{
+	return;
+}
+
+void BLF_lang_set(char *str)
+{
+	return;
+}
+
+#endif /* INTERNATIONAL */

Modified: branches/blender2.5/blender/source/blender/windowmanager/intern/wm_init_exit.c
===================================================================
--- branches/blender2.5/blender/source/blender/windowmanager/intern/wm_init_exit.c	2009-03-31 21:03:15 UTC (rev 19483)
+++ branches/blender2.5/blender/source/blender/windowmanager/intern/wm_init_exit.c	2009-03-31 21:19:23 UTC (rev 19484)
@@ -234,7 +234,6 @@
 //	fsmenu_free();
 
 	BLF_exit();
-	BLF_lang_exit();
 
 	RE_FreeAllRender();
 	





More information about the Bf-blender-cvs mailing list