store locales, .Blanguage, and .bfont.ttf inside of Resources folder of
authorStefan Gartner <stefang@aon.at>
Mon, 12 May 2003 18:12:25 +0000 (18:12 +0000)
committerStefan Gartner <stefang@aon.at>
Mon, 12 May 2003 18:12:25 +0000 (18:12 +0000)
application bundle on OS X

source/blender/ftfont/intern/FTF_TTFont.cpp
source/blender/src/language.c
source/darwin/Makefile

index 819d5e8ef66e7ee48e391c2903bf84cca7f8ff09..d930ed3d6542eabe8d4bb067f9c0a20a393cace4 100644 (file)
 #include "libintl.h"
 #include "BLI_blenlib.h"
 
-#ifdef __APPLE__
-#include <libgen.h>
-#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);
        }
index bb1ca0b8705edf14b10fbd5fe5fe6c6e9d22a596..416b87f8a289fff2d7d4824ff56b986a95a80492 100644 (file)
@@ -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) {
index 9ffc42d6beb8002decb877771bca70029788bd1b..13ce607509a2027d5af30d04e07fca23a8e83d81 100644 (file)
@@ -1,5 +1,5 @@
 #
-# $Id: Makefile,v 1.5 2003/02/09 18:32:55 sgefant Exp $
+# $Id: Makefile,v 1.6 2003/05/09 20:20:40 sgefant Exp $
 #
 # ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
 #
@@ -46,7 +46,10 @@ all::
        @chmod +x $(DIR)/bin/$(APPLICATION).app/Contents/MacOS/$(APPLICATION)
 ifeq ($(APPLICATION), blender)
        @echo "---> copying message files"
-       @cp -R ../../bin/message $(DIR)/bin/$(APPLICATION).app/Contents/Resources
+       @cp -R ../../bin/.blender/locale $(DIR)/bin/$(APPLICATION).app/Contents/Resources
+       @echo "---> copying .Blanguages and .bfont.ttf"
+       @cp ../../bin/.blender/.Blanguages $(DIR)/bin/$(APPLICATION).app/Contents/Resources
+       @cp ../../bin/.blender/.bfont.ttf $(DIR)/bin/$(APPLICATION).app/Contents/Resources
 endif
        @echo "---> removing CVS directories and Mac hidden files from distribution"
        @find $(DIR)/bin/$(APPLICATION).app -name CVS -prune -exec rm -rf {} \;