mirror of https://github.com/mpv-player/mpv
Automaticall convert message to console charset, use utf8 for GTK2 Gui
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@17773 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
1b8e9839b0
commit
1519205f24
|
@ -61,7 +61,6 @@ Pixmap guiIconMask;
|
||||||
void gtkInit( void )
|
void gtkInit( void )
|
||||||
{
|
{
|
||||||
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[widget] init GTK ...\n" );
|
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[widget] init GTK ...\n" );
|
||||||
gtk_set_locale();
|
|
||||||
gtk_init( 0,NULL );
|
gtk_init( 0,NULL );
|
||||||
// gdk_set_use_xshm( TRUE );
|
// gdk_set_use_xshm( TRUE );
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,9 @@
|
||||||
{"really-quiet", &verbose, CONF_TYPE_FLAG, CONF_GLOBAL, 0, -10, NULL},
|
{"really-quiet", &verbose, CONF_TYPE_FLAG, CONF_GLOBAL, 0, -10, NULL},
|
||||||
{"v", cfg_inc_verbose, CONF_TYPE_FUNC, CONF_GLOBAL|CONF_NOSAVE, 0, 0, NULL},
|
{"v", cfg_inc_verbose, CONF_TYPE_FUNC, CONF_GLOBAL|CONF_NOSAVE, 0, 0, NULL},
|
||||||
{"msglevel", msgl_config, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
{"msglevel", msgl_config, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
|
||||||
|
#ifdef USE_ICONV
|
||||||
|
{"msgcharset", &mp_msg_charset, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL},
|
||||||
|
#endif
|
||||||
{"include", cfg_include, CONF_TYPE_FUNC_PARAM, CONF_NOSAVE, 0, 0, NULL},
|
{"include", cfg_include, CONF_TYPE_FUNC_PARAM, CONF_NOSAVE, 0, 0, NULL},
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
{"priority", &proc_priority, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
{"priority", &proc_priority, CONF_TYPE_STRING, 0, 0, 0, NULL},
|
||||||
|
@ -302,6 +305,7 @@
|
||||||
|
|
||||||
extern int quiet;
|
extern int quiet;
|
||||||
extern int verbose;
|
extern int verbose;
|
||||||
|
extern char *mp_msg_charset;
|
||||||
|
|
||||||
// codec/filter opts: (defined at libmpcodecs/vd.c)
|
// codec/filter opts: (defined at libmpcodecs/vd.c)
|
||||||
extern float screen_size_xy;
|
extern float screen_size_xy;
|
||||||
|
|
|
@ -6958,6 +6958,20 @@ else
|
||||||
fi
|
fi
|
||||||
# --------------- GUI specific tests end -------------------
|
# --------------- GUI specific tests end -------------------
|
||||||
|
|
||||||
|
if test "$_charset" = "noconv" ; then
|
||||||
|
_charset=""
|
||||||
|
elif test -z "$_charset" ; then
|
||||||
|
if test "$_gtk1" = yes ; then
|
||||||
|
_charset=`cat ${_mp_help}.charset`
|
||||||
|
else
|
||||||
|
_charset=utf8
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test "$_charset" ; then
|
||||||
|
_def_charset="#define MSG_CHARSET \"$_charset\""
|
||||||
|
else
|
||||||
|
_def_charset="#undef MSG_CHARSET"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
#############################################################################
|
#############################################################################
|
||||||
|
@ -7404,6 +7418,9 @@ cat > config.h << EOF
|
||||||
/* use GNU internationalization */
|
/* use GNU internationalization */
|
||||||
$_def_i18n
|
$_def_i18n
|
||||||
|
|
||||||
|
/* name of messages charset */
|
||||||
|
$_def_charset
|
||||||
|
|
||||||
/* Runtime CPU detection */
|
/* Runtime CPU detection */
|
||||||
$_def_runtime_cpudetection
|
$_def_runtime_cpudetection
|
||||||
|
|
||||||
|
|
49
mp_msg.c
49
mp_msg.c
|
@ -7,6 +7,14 @@
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
|
#ifdef USE_LANGINFO
|
||||||
|
#include <locale.h>
|
||||||
|
#include <langinfo.h>
|
||||||
|
#endif
|
||||||
|
#ifdef USE_ICONV
|
||||||
|
#include <iconv.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(FOR_MENCODER) || defined(CODECS2HTML)
|
#if defined(FOR_MENCODER) || defined(CODECS2HTML)
|
||||||
#undef HAVE_NEW_GUI
|
#undef HAVE_NEW_GUI
|
||||||
#endif
|
#endif
|
||||||
|
@ -23,6 +31,11 @@ extern int use_gui;
|
||||||
int mp_msg_levels[MSGT_MAX]; // verbose level of this module. inited to -2
|
int mp_msg_levels[MSGT_MAX]; // verbose level of this module. inited to -2
|
||||||
int mp_msg_level_all = MSGL_STATUS;
|
int mp_msg_level_all = MSGL_STATUS;
|
||||||
int verbose = 0;
|
int verbose = 0;
|
||||||
|
#ifdef USE_ICONV
|
||||||
|
char *mp_msg_charset = NULL;
|
||||||
|
static char *old_charset = NULL;
|
||||||
|
static iconv_t msgiconv;
|
||||||
|
#endif
|
||||||
|
|
||||||
void mp_msg_init(void){
|
void mp_msg_init(void){
|
||||||
int i;
|
int i;
|
||||||
|
@ -43,6 +56,16 @@ void mp_msg_init(void){
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
for(i=0;i<MSGT_MAX;i++) mp_msg_levels[i] = -2;
|
for(i=0;i<MSGT_MAX;i++) mp_msg_levels[i] = -2;
|
||||||
|
#ifdef USE_ICONV
|
||||||
|
mp_msg_charset = getenv("MPLAYER_CHARSET");
|
||||||
|
#ifdef USE_LANGINFO
|
||||||
|
if (!mp_msg_charset) {
|
||||||
|
setlocale(LC_CTYPE, "");
|
||||||
|
mp_msg_charset = nl_langinfo(CODESET);
|
||||||
|
setlocale(LC_CTYPE, "C");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
int mp_msg_test(int mod, int lev)
|
int mp_msg_test(int mod, int lev)
|
||||||
|
@ -66,6 +89,32 @@ void mp_msg(int mod, int lev, const char *format, ... ){
|
||||||
guiMessageBox(lev, tmp);
|
guiMessageBox(lev, tmp);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(USE_ICONV) && defined(MSG_CHARSET)
|
||||||
|
if (mp_msg_charset && strcasecmp(mp_msg_charset, "noconv")) {
|
||||||
|
char tmp2[MSGSIZE_MAX];
|
||||||
|
size_t inlen = strlen(tmp), outlen = MSGSIZE_MAX;
|
||||||
|
char *in = tmp, *out = tmp2;
|
||||||
|
if (!old_charset || strcmp(old_charset, mp_msg_charset)) {
|
||||||
|
if (old_charset) {
|
||||||
|
free(old_charset);
|
||||||
|
iconv_close(msgiconv);
|
||||||
|
}
|
||||||
|
msgiconv = iconv_open(mp_msg_charset, MSG_CHARSET);
|
||||||
|
old_charset = strdup(mp_msg_charset);
|
||||||
|
}
|
||||||
|
memset(tmp2, 0, MSGSIZE_MAX);
|
||||||
|
while (iconv(msgiconv, &in, &inlen, &out, &outlen) == -1) {
|
||||||
|
if (!inlen || !outlen)
|
||||||
|
break;
|
||||||
|
*out++ = *in++;
|
||||||
|
outlen--; inlen--;
|
||||||
|
}
|
||||||
|
strncpy(tmp, tmp2, MSGSIZE_MAX);
|
||||||
|
tmp[MSGSIZE_MAX-1] = 0;
|
||||||
|
tmp[MSGSIZE_MAX-2] = '\n';
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef MSG_USE_COLORS
|
#ifdef MSG_USE_COLORS
|
||||||
/* that's only a silly color test */
|
/* that's only a silly color test */
|
||||||
#ifdef MP_ANNOY_ME
|
#ifdef MP_ANNOY_ME
|
||||||
|
|
Loading…
Reference in New Issue