Small cleanup, all this options are now in the User Preferences, RNA.

This commit is contained in:
Diego Borghetti 2009-03-31 21:19:23 +00:00
parent 466628778c
commit 4861ddf350
3 changed files with 109 additions and 207 deletions

View File

@ -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

View File

@ -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 */

View File

@ -234,7 +234,6 @@ void WM_exit(bContext *C)
// fsmenu_free();
BLF_exit();
BLF_lang_exit();
RE_FreeAllRender();