Small cleanup, all this options are now in the User Preferences, RNA.
This commit is contained in:
parent
466628778c
commit
4861ddf350
|
@ -197,20 +197,6 @@ typedef struct DirBLF {
|
|||
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
|
||||
|
|
|
@ -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)
|
||||
/* locale options. */
|
||||
char global_messagepath[1024];
|
||||
char global_language[32];
|
||||
char global_encoding_name[32];
|
||||
|
||||
|
||||
void BLF_lang_init(void)
|
||||
{
|
||||
return(global_err_lang);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
LangBLF *p;
|
||||
|
||||
p= global_lang.first;
|
||||
while (p) {
|
||||
if (p->id == langid)
|
||||
return(p);
|
||||
p= p->next;
|
||||
}
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
char *BLF_lang_find_code(short langid)
|
||||
{
|
||||
LangBLF *p;
|
||||
|
||||
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");
|
||||
#endif
|
||||
}
|
||||
|
||||
static void blf_lang_split(char *line, LangBLF* lme)
|
||||
{
|
||||
char *dpointchar= strchr(line, ':');
|
||||
|
||||
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.
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
LangBLF *blf_lang_find(char *s, int find_by)
|
||||
{
|
||||
LangBLF *p;
|
||||
|
||||
p= global_lang.first;
|
||||
while (p) {
|
||||
if (find_by == BLF_LANG_FIND_BY_LINE) {
|
||||
if (BLI_streq(s, p->line))
|
||||
return(p);
|
||||
}
|
||||
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)
|
||||
{
|
||||
LangBLF *lme;
|
||||
|
||||
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");
|
||||
#else
|
||||
BLI_make_file_string("/", name, BLI_gethome(), ".blender/.Blanguages");
|
||||
#ifdef __APPLE__
|
||||
char *bundlepath;
|
||||
#endif
|
||||
|
||||
lines= BLI_read_file_as_lines(name);
|
||||
strcpy(global_encoding_name, SYSTEM_ENCODING_DEFAULT);
|
||||
|
||||
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");
|
||||
/* set messagepath directory */
|
||||
|
||||
#ifndef LOCALEDIR
|
||||
#define LOCALEDIR "/usr/share/locale"
|
||||
#endif
|
||||
lines= BLI_read_file_as_lines(name);
|
||||
|
||||
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);
|
||||
strcpy(global_messagepath, ".blender/locale");
|
||||
|
||||
if (!BLI_exist(global_messagepath)) { /* locale not in current dir */
|
||||
BLI_make_file_string("/", global_messagepath, BLI_gethome(), ".blender/locale");
|
||||
|
||||
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);
|
||||
|
||||
if (!BLI_exist(global_messagepath)) { /* locale not in LOCALEDIR */
|
||||
strcpy(global_messagepath, "message"); /* old compatibility as last */
|
||||
}
|
||||
#ifdef WIN32
|
||||
}
|
||||
#endif
|
||||
#ifdef __APPLE__
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
for (l= lines; l; l= l->next) {
|
||||
char *line= l->link;
|
||||
|
||||
if (!BLI_streq(line, "")) {
|
||||
blf_lang_new(line);
|
||||
}
|
||||
}
|
||||
|
||||
BLI_free_file_lines(lines);
|
||||
return(1);
|
||||
}
|
||||
|
||||
void BLF_lang_exit(void)
|
||||
void BLF_lang_set(char *str)
|
||||
{
|
||||
LangBLF *p;
|
||||
#if defined (_WIN32) || defined(__APPLE__)
|
||||
char envstr[12];
|
||||
|
||||
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);
|
||||
sprintf(envstr, "LANG=%s", str);
|
||||
envstr[strlen(envstr)]= '\0';
|
||||
#ifdef _WIN32
|
||||
gettext_putenv(envstr);
|
||||
#else
|
||||
putenv(envstr);
|
||||
#endif
|
||||
#else
|
||||
char *locreturn= setlocale(LC_ALL, str);
|
||||
if (locreturn == NULL) {
|
||||
char *lang;
|
||||
|
||||
lang= (char*)malloc(sizeof(char)*(strlen(str)+7));
|
||||
|
||||
lang[0]= '\0';
|
||||
strcat(lang, str);
|
||||
strcat(lang, ".UTF-8");
|
||||
|
||||
locreturn= setlocale(LC_ALL, lang);
|
||||
if (locreturn == NULL) {
|
||||
printf("could not change language to %s nor %s\n", str, lang);
|
||||
}
|
||||
|
||||
free(lang);
|
||||
}
|
||||
|
||||
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_encoding(char *str)
|
||||
{
|
||||
strcpy(global_encoding_name, str);
|
||||
/* bind_textdomain_codeset(DOMAIN_NAME, encoding_name); */
|
||||
}
|
||||
|
||||
#else /* ! INTERNATIONAL */
|
||||
|
||||
void BLF_lang_init(void)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
void BLF_lang_encoding(char *str)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
void BLF_lang_set(char *str)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
#endif /* INTERNATIONAL */
|
||||
|
|
|
@ -234,7 +234,6 @@ void WM_exit(bContext *C)
|
|||
// fsmenu_free();
|
||||
|
||||
BLF_exit();
|
||||
BLF_lang_exit();
|
||||
|
||||
RE_FreeAllRender();
|
||||
|
||||
|
|
Loading…
Reference in New Issue