From eca049b177e08a0b8a182cc373e2ae225f7f8a11 Mon Sep 17 00:00:00 2001 From: Stefan Gartner Date: Mon, 12 May 2003 18:12:25 +0000 Subject: store locales, .Blanguage, and .bfont.ttf inside of Resources folder of application bundle on OS X --- source/blender/ftfont/intern/FTF_TTFont.cpp | 51 +++++++++++------------------ source/blender/src/language.c | 35 ++++++++++++++++---- 2 files changed, 47 insertions(+), 39 deletions(-) (limited to 'source/blender') diff --git a/source/blender/ftfont/intern/FTF_TTFont.cpp b/source/blender/ftfont/intern/FTF_TTFont.cpp index 819d5e8ef66..d930ed3d654 100644 --- a/source/blender/ftfont/intern/FTF_TTFont.cpp +++ b/source/blender/ftfont/intern/FTF_TTFont.cpp @@ -41,14 +41,13 @@ #include "libintl.h" #include "BLI_blenlib.h" -#ifdef __APPLE__ -#include -#endif - #include "../FTF_Settings.h" #include "FTF_TTFont.h" +#include "BKE_utildefines.h" +#include "BLI_blenlib.h" + #define DOMAIN_NAME "blender" #define SYSTEM_ENCODING_DEFAULT "UTF-8" @@ -57,8 +56,6 @@ #define FTF_MAX_STR_SIZE 256 -extern char bprogname[]; - int utf8towchar(wchar_t *w, char *c) { int len=0; @@ -104,7 +101,7 @@ int utf8towchar(wchar_t *w, char *c) FTF_TTFont::FTF_TTFont(void) { #ifdef __APPLE__ - char tmp[1024]; + char *bundlepath; #endif font=NULL; @@ -117,33 +114,26 @@ FTF_TTFont::FTF_TTFont(void) #define LOCALEDIR "/usr/share/locale" #endif - BLI_make_file_string("/", messagepath, BLI_gethome(), ".blender/locale"); -printf("1. %s\n", messagepath); - if (BLI_exist(messagepath) == NULL) { // locale not in home dir - - strcpy(messagepath, ".blender/locale"); -printf("2. %s\n", messagepath); - if(BLI_exist(messagepath) == NULL) { // locale not in current dir - - strcpy(messagepath, LOCALEDIR); -printf("3. %s\n", messagepath); - if(BLI_exist(messagepath) == NULL) { // locale not in LOCALEDIR - + strcpy(messagepath, ".blender/locale"); + if (BLI_exist(messagepath) == NULL) { // locale not in current dir + BLI_make_file_string("/", messagepath, BLI_gethome(), ".blender/locale"); + + if(BLI_exist(messagepath) == NULL) { // locale not in home dir #ifdef __APPLE__ - /* message catalogs are stored inside the application bundle */ - strcpy(tmp, dirname(bprogname)); - strcat(tmp, "/../Resources/message"); - realpath(tmp, messagepath); -printf("4. %s\n", messagepath); - if(BLI_exist(messagepath) == NULL) { // locale not in bundle dir + /* message catalogs are stored inside the application bundle */ + bundlepath = BLI_getbundle(); + strcpy(messagepath, bundlepath); + strcat(messagepath, "/Contents/Resources/locale"); + if(BLI_exist(messagepath) == NULL) { // locale not in bundle (now that's odd..) #endif - + strcpy(messagepath, LOCALEDIR); + + if(BLI_exist(messagepath) == NULL) { // locale not in LOCALEDIR strcpy(messagepath, "message"); // old compatibility as last -printf("5. %s\n", messagepath); } #ifdef __APPLE__ - } // heh + } #endif } } @@ -193,12 +183,9 @@ void FTF_TTFont::SetLanguage(char* str) gettext_putenv(envstr); #else putenv(envstr); - setlocale(LC_ALL, str); #endif #else - char *locreturn; - - locreturn = setlocale(LC_ALL, str); + char *locreturn = setlocale(LC_ALL, str); if (locreturn == NULL) { printf("could not change language to %s\n", str); } diff --git a/source/blender/src/language.c b/source/blender/src/language.c index bb1ca0b8705..416b87f8a28 100644 --- a/source/blender/src/language.c +++ b/source/blender/src/language.c @@ -128,7 +128,7 @@ void lang_setlanguage(void) { LANGMenuEntry *lme; lme = find_language(U.language); - if(lme) FTF_SetLanguage(lme->code); + if(lme) FTF_SetLanguage(lme->code); else FTF_SetLanguage("en_US"); } @@ -154,11 +154,14 @@ void set_interface_font(char *str) { void start_interface_font(void) { char tstr[FILE_MAXDIR+FILE_MAXFILE]; int result = 0; - +#ifdef __APPLE__ + char *bundlepath; +#endif + /* hack to find out if we have saved language/font settings. if not, set defaults and try .bfont.tff --phase */ - if(U.fontsize != 0) { // we have saved user settings + if(U.fontsize != 0) { // we have saved user settings // try load the font from the font dir BLI_make_file_string("/", tstr, U.fontdir, U.fontname); result = FTF_SetFont(tstr, U.fontsize); @@ -170,9 +173,20 @@ void start_interface_font(void) { U.language= 0; U.fontsize= 11; U.encoding= 0; + +#ifdef __APPLE__ + bundlepath = BLI_getbundle(); + strcpy(tstr, bundlepath); + strcat(tstr, "/Contents/Resources/"); + strcat(tstr, ".bfont.ttf"); + result = FTF_SetFont(tstr, U.fontsize); + + sprintf(U.fontname, ".blender/.bfont.ttf\0"); +#else sprintf(U.fontname, ".blender/.bfont.ttf\0"); result = FTF_SetFont(U.fontname, U.fontsize); +#endif } if(result) { @@ -250,15 +264,22 @@ void puplang_insert_entry(char *line) int read_languagefile(void) { char name[FILE_MAXDIR+FILE_MAXFILE]; LinkNode *l, *lines; - + /* .Blanguages */ - BLI_make_file_string("/", name, BLI_gethome(), ".Blanguages"); + lines= BLI_read_file_as_lines(name); if(lines == NULL) { - /* If not found in home, try .blender dir */ - strcpy(name, ".blender\\.Blanguages"); + /* If not found in home, try current dir + * (Resources folder of app bundle on OS X) */ +#ifdef __APPLE__ + char *bundlePath = BLI_getbundle(); + strcpy(name, bundlePath); + strcat(name, "/Contents/Resources/.Blanguages"); +#else + strcpy(name, ".blender/.Blanguages"); +#endif lines= BLI_read_file_as_lines(name); if(lines == NULL) { -- cgit v1.2.3