summaryrefslogtreecommitdiffstats
path: root/gui/mplayer
diff options
context:
space:
mode:
authordiego <diego@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-04-23 07:42:42 +0000
committerdiego <diego@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-04-23 07:42:42 +0000
commit5c9abf7f9f02a3b675072b2725c2814d1c1ee239 (patch)
tree8e213b4087e2b185725c378bd01c495de587c759 /gui/mplayer
parentc9e2a43f1ae48831b0110abc6d92e51b325cf863 (diff)
downloadmpv-5c9abf7f9f02a3b675072b2725c2814d1c1ee239.tar.bz2
mpv-5c9abf7f9f02a3b675072b2725c2814d1c1ee239.tar.xz
Gui --> gui
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23095 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'gui/mplayer')
-rw-r--r--gui/mplayer/common.c289
-rw-r--r--gui/mplayer/common.h20
-rw-r--r--gui/mplayer/gmplayer.h35
-rw-r--r--gui/mplayer/gtk/about.c329
-rw-r--r--gui/mplayer/gtk/about.h12
-rw-r--r--gui/mplayer/gtk/common.c180
-rw-r--r--gui/mplayer/gtk/common.h24
-rw-r--r--gui/mplayer/gtk/eq.c670
-rw-r--r--gui/mplayer/gtk/eq.h12
-rw-r--r--gui/mplayer/gtk/fs.c684
-rw-r--r--gui/mplayer/gtk/fs.h21
-rw-r--r--gui/mplayer/gtk/mb.c97
-rw-r--r--gui/mplayer/gtk/mb.h13
-rw-r--r--gui/mplayer/gtk/menu.c629
-rw-r--r--gui/mplayer/gtk/menu.h13
-rw-r--r--gui/mplayer/gtk/opts.c1814
-rw-r--r--gui/mplayer/gtk/opts.h16
-rw-r--r--gui/mplayer/gtk/pl.c529
-rw-r--r--gui/mplayer/gtk/pl.h14
-rw-r--r--gui/mplayer/gtk/sb.c195
-rw-r--r--gui/mplayer/gtk/sb.h18
-rw-r--r--gui/mplayer/gtk/url.c153
-rw-r--r--gui/mplayer/gtk/url.h11
-rw-r--r--gui/mplayer/menu.c159
-rw-r--r--gui/mplayer/mw.c624
-rw-r--r--gui/mplayer/pb.c247
-rw-r--r--gui/mplayer/pixmaps/MPlayer_mini.xpm638
-rw-r--r--gui/mplayer/pixmaps/a11.xpm22
-rw-r--r--gui/mplayer/pixmaps/a169.xpm22
-rw-r--r--gui/mplayer/pixmaps/a235.xpm22
-rw-r--r--gui/mplayer/pixmaps/a43.xpm22
-rw-r--r--gui/mplayer/pixmaps/ab.xpm34
-rw-r--r--gui/mplayer/pixmaps/about.xpm427
-rw-r--r--gui/mplayer/pixmaps/aspect.xpm22
-rw-r--r--gui/mplayer/pixmaps/cancel.xpm139
-rw-r--r--gui/mplayer/pixmaps/chapter.xpm23
-rw-r--r--gui/mplayer/pixmaps/delsub.xpm22
-rw-r--r--gui/mplayer/pixmaps/dir.xpm148
-rw-r--r--gui/mplayer/pixmaps/dolby.xpm23
-rw-r--r--gui/mplayer/pixmaps/double.xpm151
-rw-r--r--gui/mplayer/pixmaps/dvd.xpm129
-rw-r--r--gui/mplayer/pixmaps/empty.xpm20
-rw-r--r--gui/mplayer/pixmaps/empty1px.xpm5
-rw-r--r--gui/mplayer/pixmaps/eq.xpm35
-rw-r--r--gui/mplayer/pixmaps/error.xpm544
-rw-r--r--gui/mplayer/pixmaps/exit.xpm82
-rw-r--r--gui/mplayer/pixmaps/file.xpm26
-rw-r--r--gui/mplayer/pixmaps/file2.xpm27
-rw-r--r--gui/mplayer/pixmaps/fs.xpm109
-rw-r--r--gui/mplayer/pixmaps/half.xpm144
-rw-r--r--gui/mplayer/pixmaps/icon.xpm323
-rw-r--r--gui/mplayer/pixmaps/loadeaf.xpm151
-rw-r--r--gui/mplayer/pixmaps/logo.xpm1227
-rw-r--r--gui/mplayer/pixmaps/mplayer-desktop.xpm149
-rw-r--r--gui/mplayer/pixmaps/next.xpm79
-rw-r--r--gui/mplayer/pixmaps/normal.xpm130
-rw-r--r--gui/mplayer/pixmaps/ok.xpm24
-rw-r--r--gui/mplayer/pixmaps/open.xpm83
-rw-r--r--gui/mplayer/pixmaps/pause.xpm48
-rw-r--r--gui/mplayer/pixmaps/pl.xpm26
-rw-r--r--gui/mplayer/pixmaps/play.xpm56
-rw-r--r--gui/mplayer/pixmaps/playdvd.xpm137
-rw-r--r--gui/mplayer/pixmaps/playvcd.xpm201
-rw-r--r--gui/mplayer/pixmaps/prefs.xpm69
-rw-r--r--gui/mplayer/pixmaps/prev.xpm77
-rw-r--r--gui/mplayer/pixmaps/question.xpm335
-rw-r--r--gui/mplayer/pixmaps/skin.xpm181
-rw-r--r--gui/mplayer/pixmaps/sound.xpm140
-rw-r--r--gui/mplayer/pixmaps/stop.xpm254
-rw-r--r--gui/mplayer/pixmaps/stop2.xpm48
-rw-r--r--gui/mplayer/pixmaps/sub.xpm21
-rw-r--r--gui/mplayer/pixmaps/title.xpm23
-rw-r--r--gui/mplayer/pixmaps/tongue.xpm169
-rw-r--r--gui/mplayer/pixmaps/tonguebla.xpm156
-rw-r--r--gui/mplayer/pixmaps/up.xpm112
-rw-r--r--gui/mplayer/pixmaps/url.xpm21
-rw-r--r--gui/mplayer/pixmaps/vcd.xpm179
-rw-r--r--gui/mplayer/pixmaps/warning.xpm314
-rw-r--r--gui/mplayer/play.c372
-rw-r--r--gui/mplayer/play.h34
-rw-r--r--gui/mplayer/sw.c92
-rw-r--r--gui/mplayer/widgets.c238
-rw-r--r--gui/mplayer/widgets.h61
83 files changed, 15174 insertions, 0 deletions
diff --git a/gui/mplayer/common.c b/gui/mplayer/common.c
new file mode 100644
index 0000000000..899389bff7
--- /dev/null
+++ b/gui/mplayer/common.c
@@ -0,0 +1,289 @@
+
+// main window
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <inttypes.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include "app.h"
+#include "skin/font.h"
+#include "skin/skin.h"
+#include "wm/ws.h"
+
+#include "../config.h"
+#include "../help_mp.h"
+#include "../libvo/x11_common.h"
+#include "../libvo/fastmemcpy.h"
+
+#include "../stream/stream.h"
+#include "../mixer.h"
+#include "../libvo/sub.h"
+
+#include "../libmpdemux/demuxer.h"
+#include "../libmpdemux/stheader.h"
+#include "../codec-cfg.h"
+
+
+#include "play.h"
+#include "widgets.h"
+
+extern unsigned int GetTimerMS( void );
+
+inline void TranslateFilename( int c,char * tmp,size_t tmplen )
+{
+ int i;
+ char * p;
+
+ switch ( guiIntfStruct.StreamType )
+ {
+ case STREAMTYPE_STREAM:
+ strlcpy(tmp, guiIntfStruct.Filename, tmplen);
+ break;
+ case STREAMTYPE_FILE:
+ if ( ( guiIntfStruct.Filename )&&( guiIntfStruct.Filename[0] ) )
+ {
+ if ( (p = strrchr(guiIntfStruct.Filename, '/')) )
+ strlcpy(tmp, p + 1, tmplen);
+ else
+ strlcpy(tmp, guiIntfStruct.Filename, tmplen);
+ if ( tmp[strlen( tmp ) - 4] == '.' ) tmp[strlen( tmp ) - 4]=0;
+ if ( tmp[strlen( tmp ) - 5] == '.' ) tmp[strlen( tmp ) - 5]=0;
+ } else strlcpy( tmp,MSGTR_NoFileLoaded,tmplen );
+ break;
+#ifdef USE_DVDREAD
+ case STREAMTYPE_DVD:
+ if ( guiIntfStruct.DVD.current_chapter ) snprintf(tmp,tmplen,MSGTR_Chapter,guiIntfStruct.DVD.current_chapter );
+ else strlcat( tmp,MSGTR_NoChapter,tmplen );
+ break;
+#endif
+#ifdef HAVE_VCD
+ case STREAMTYPE_VCD:
+ snprintf( tmp,tmplen,MSGTR_VCDTrack,guiIntfStruct.Track );
+ break;
+#endif
+ default: strlcpy( tmp,MSGTR_NoMediaOpened,tmplen );
+ }
+ if ( c )
+ {
+ for ( i=0;i < (int)strlen( tmp );i++ )
+ {
+ int t=0;
+ if ( c == 1 ) { if ( ( tmp[i] >= 'A' )&&( tmp[i] <= 'Z' ) ) t=32; }
+ if ( c == 2 ) { if ( ( tmp[i] >= 'a' )&&( tmp[i] <= 'z' ) ) t=-32; }
+ tmp[i]=(char)( tmp[i] + t );
+ }
+ }
+}
+
+/* Unsafe! Pass only null-terminated strings as (char *)str. */
+char * Translate( char * str )
+{
+ mixer_t *mixer = mpctx_get_mixer(guiIntfStruct.mpcontext);
+ static char trbuf[512];
+ char tmp[512];
+ int i,c;
+ int t;
+ int strsize = 0;
+ memset( trbuf,0,512 );
+ memset( tmp,0,128 );
+ strsize = strlen(str);
+ for ( c=0,i=0;i < strsize;i++ )
+ {
+ if ( str[i] != '$' ) { trbuf[c++]=str[i]; trbuf[c]=0; }
+ else
+ {
+ switch ( str[++i] )
+ {
+ case 't': snprintf( tmp,sizeof( tmp ),"%02d",guiIntfStruct.Track );
+ strlcat( trbuf,tmp,sizeof( trbuf ) ); break;
+ case 'o': TranslateFilename( 0,tmp,sizeof( tmp ) );
+ strlcat( trbuf,tmp,sizeof( trbuf ) ); break;
+ case 'f': TranslateFilename( 1,tmp,sizeof( tmp ) );
+ strlcat( trbuf,tmp,sizeof( trbuf ) ); break;
+ case 'F': TranslateFilename( 2,tmp,sizeof( tmp ) );
+ strlcat( trbuf,tmp,sizeof( trbuf ) ); break;
+ case '6': t=guiIntfStruct.LengthInSec; goto calclengthhhmmss;
+ case '1': t=guiIntfStruct.TimeSec;
+calclengthhhmmss:
+ snprintf( tmp,sizeof( tmp ),"%02d:%02d:%02d",t/3600,t/60%60,t%60 );
+ strlcat( trbuf,tmp,sizeof( trbuf ) );
+ break;
+ case '7': t=guiIntfStruct.LengthInSec; goto calclengthmmmmss;
+ case '2': t=guiIntfStruct.TimeSec;
+calclengthmmmmss:
+ snprintf( tmp,sizeof( tmp ),"%04d:%02d",t/60,t%60 );
+ strlcat( trbuf,tmp,sizeof( trbuf ) );
+ break;
+ case '3': snprintf( tmp,sizeof( tmp ),"%02d",guiIntfStruct.TimeSec / 3600 );
+ strlcat( trbuf,tmp,sizeof( trbuf ) ); break;
+ case '4': snprintf( tmp,sizeof( tmp ),"%02d",( ( guiIntfStruct.TimeSec / 60 ) % 60 ) );
+ strlcat( trbuf,tmp,sizeof( trbuf ) ); break;
+ case '5': snprintf( tmp,sizeof( tmp ),"%02d",guiIntfStruct.TimeSec % 60 );
+ strlcat( trbuf,tmp,sizeof( trbuf ) ); break;
+ case '8': snprintf( tmp,sizeof( tmp ),"%01d:%02d:%02d",guiIntfStruct.TimeSec / 3600,( guiIntfStruct.TimeSec / 60 ) % 60,guiIntfStruct.TimeSec % 60 ); strlcat( trbuf,tmp,sizeof( trbuf ) ); break;
+ case 'v': snprintf( tmp,sizeof( tmp ),"%3.2f%%",guiIntfStruct.Volume );
+ strlcat( trbuf,tmp,sizeof( trbuf ) ); break;
+ case 'V': snprintf( tmp,sizeof( tmp ),"%3.1f",guiIntfStruct.Volume );
+ strlcat( trbuf,tmp,sizeof( trbuf ) ); break;
+ case 'b': snprintf( tmp,sizeof( tmp ),"%3.2f%%",guiIntfStruct.Balance );
+ strlcat( trbuf,tmp,sizeof( trbuf ) ); break;
+ case 'B': snprintf( tmp,sizeof( tmp ),"%3.1f",guiIntfStruct.Balance );
+ strlcat( trbuf,tmp,sizeof( trbuf ) ); break;
+ case 'd': snprintf( tmp,sizeof( tmp ),"%d",guiIntfStruct.FrameDrop );
+ strlcat( trbuf,tmp,sizeof( trbuf ) ); break;
+ case 'x': snprintf( tmp,sizeof( tmp ),"%d",guiIntfStruct.MovieWidth );
+ strlcat( trbuf,tmp,sizeof( trbuf ) ); break;
+ case 'y': snprintf( tmp,sizeof( tmp ),"%d",guiIntfStruct.MovieHeight );
+ strlcat( trbuf,tmp,sizeof( trbuf ) ); break;
+ case 'C': snprintf( tmp,sizeof( tmp ),"%s", guiIntfStruct.sh_video? ((sh_video_t *)guiIntfStruct.sh_video)->codec->name : "");
+ strlcat( trbuf,tmp,sizeof( trbuf ) ); break;
+ case 's': if ( guiIntfStruct.Playing == 0 ) strlcat( trbuf,"s",sizeof( trbuf ) ); break;
+ case 'l': if ( guiIntfStruct.Playing == 1 ) strlcat( trbuf,"p",sizeof( trbuf ) ); break;
+ case 'e': if ( guiIntfStruct.Playing == 2 ) strlcat( trbuf,"e",sizeof( trbuf ) ); break;
+ case 'a':
+ if ( mixer->muted ) { strlcat( trbuf,"n",sizeof( trbuf ) ); break; }
+ switch ( guiIntfStruct.AudioType )
+ {
+ case 0: strlcat( trbuf,"n",sizeof( trbuf ) ); break;
+ case 1: strlcat( trbuf,"m",sizeof( trbuf ) ); break;
+ case 2: strlcat( trbuf,"t",sizeof( trbuf ) ); break;
+ }
+ break;
+ case 'T':
+ switch ( guiIntfStruct.StreamType )
+ {
+ case STREAMTYPE_FILE: strlcat( trbuf,"f",sizeof( trbuf ) ); break;
+#ifdef HAVE_VCD
+ case STREAMTYPE_VCD: strlcat( trbuf,"v",sizeof( trbuf ) ); break;
+#endif
+ case STREAMTYPE_STREAM: strlcat( trbuf,"u",sizeof( trbuf ) ); break;
+#ifdef USE_DVDREAD
+ case STREAMTYPE_DVD: strlcat( trbuf,"d",sizeof( trbuf ) ); break;
+#endif
+ default: strlcat( trbuf," ",sizeof( trbuf ) ); break;
+ }
+ break;
+ case '$': strlcat( trbuf,"$",sizeof( trbuf ) ); break;
+ default: continue;
+ }
+ c=strlen( trbuf );
+ }
+ }
+ return trbuf;
+}
+
+static char * image_buffer = NULL;
+static int image_width = 0;
+
+void PutImage( txSample * bf,int x,int y,int max,int ofs )
+{
+ int i=0,ix,iy;
+ uint32_t * buf = NULL;
+ uint32_t * drw = NULL;
+ register uint32_t tmp;
+ register uint32_t yc;
+
+ if ( ( !bf )||( bf->Image == NULL ) ) return;
+
+ i=( bf->Width * ( bf->Height / max ) ) * ofs;
+ buf=(uint32_t *)image_buffer;
+ drw=(uint32_t *)bf->Image;
+
+#if 1
+ for ( iy=y;iy < (int)(y+bf->Height / max);iy++ )
+ for ( ix=x;ix < (int)(x+bf->Width);ix++ )
+ {
+ tmp=drw[i++];
+ if ( tmp != 0x00ff00ff ) buf[iy * image_width + ix]=tmp;
+ }
+#else
+ yc=y * image_width;
+ for ( iy=y;iy < (int)(y+bf->Height / max);iy++ )
+ {
+ for ( ix=x;ix < (int)(x+bf->Width);ix++ )
+ {
+ tmp=drw[i++];
+ if ( tmp != 0x00ff00ff ) buf[yc + ix]=tmp;
+ }
+ yc+=image_width;
+ }
+#endif
+}
+
+void SimplePotmeterPutImage( txSample * bf,int x,int y,float frac )
+{
+ int i=0,w,r,ix,iy;
+ uint32_t * buf = NULL;
+ uint32_t * drw = NULL;
+ register uint32_t tmp;
+
+ if ( ( !bf )||( bf->Image == NULL ) ) return;
+
+ buf=(uint32_t *)image_buffer;
+ drw=(uint32_t *)bf->Image;
+ w=bf->Width*frac;
+ r=bf->Width-w;
+ for ( iy=y;iy < (int)(y+bf->Height);iy++ )
+ {
+ for ( ix=x;ix < (int)(x+w);ix++ )
+ {
+ tmp=drw[i++];
+ if ( tmp != 0x00ff00ff ) buf[iy * image_width + ix]=tmp;
+ }
+ i+=r;
+ }
+}
+
+void Render( wsTWindow * window,wItem * Items,int nrItems,char * db,int size )
+{
+ wItem * item;
+ txSample * image = NULL;
+ int i;
+
+ image_buffer=db;
+ image_width=window->Width;
+
+ for( i=0;i < nrItems + 1;i++ )
+ {
+ item=&Items[i];
+ switch( item->type )
+ {
+ case itButton:
+ PutImage( &item->Bitmap,item->x,item->y,3,item->pressed );
+ break;
+ case itPotmeter:
+ if (item->phases == 1)SimplePotmeterPutImage( &item->Bitmap,item->x,item->y, item->value / 100.0f );
+ else PutImage( &item->Bitmap,item->x,item->y,item->phases,( item->phases - 1 ) * ( item->value / 100.0f ) );
+ break;
+ case itHPotmeter:
+ if (item->phases == 1)SimplePotmeterPutImage( &item->Bitmap,item->x,item->y, item->value / 100.0f );
+ else PutImage( &item->Bitmap,item->x,item->y,item->phases,( item->phases - 1 ) * ( item->value / 100.0f ) );
+ PutImage( &item->Mask,item->x + (int)( ( item->width - item->psx ) * item->value / 100.0f ),item->y,3,item->pressed );
+ break;
+ case itVPotmeter:
+ PutImage( &item->Bitmap,
+ item->x,item->y,
+ item->phases,
+ item->phases * ( 1. - item->value / 100.0f ) );
+ PutImage( &item->Mask,
+ item->x,item->y + (int)( ( item->height - item->psy ) * ( 1. - item->value / 100.0f ) ),
+ 3,item->pressed );
+ break;
+ case itSLabel:
+ image=fntRender( item,0,"%s",item->label );
+ if ( image ) PutImage( image,item->x,item->y,1,0 );
+ case itDLabel:
+ {
+ char * t = Translate( item->label );
+ int l = fntTextWidth( item->fontid,t );
+ l=(l?l:item->width);
+ image=fntRender( item,l-(GetTimerMS() / 20)%l,"%s",t );
+ }
+ if ( image ) PutImage( image,item->x,item->y,1,0 );
+ break;
+ }
+ }
+ wsConvert( window,db,size );
+}
diff --git a/gui/mplayer/common.h b/gui/mplayer/common.h
new file mode 100644
index 0000000000..4cc6c7e152
--- /dev/null
+++ b/gui/mplayer/common.h
@@ -0,0 +1,20 @@
+#ifndef __COMMON_H
+#define __COMMON_H
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <inttypes.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include "app.h"
+#include "bitmap.h"
+#include "wm/ws.h"
+
+extern inline void TranslateFilename( int c,char * tmp );
+extern char * Translate( char * str );
+extern void PutImage( txSample * bf,int x,int y,int max,int ofs );
+extern void SimplePotmeterPutImage( txSample * bf,int x,int y,float frac );
+extern void Render( wsTWindow * window,wItem * Items,int nrItems,char * db,int size );
+
+#endif
diff --git a/gui/mplayer/gmplayer.h b/gui/mplayer/gmplayer.h
new file mode 100644
index 0000000000..d7bd01b1ac
--- /dev/null
+++ b/gui/mplayer/gmplayer.h
@@ -0,0 +1,35 @@
+
+#ifndef __MYMPLAYERHANDLER
+#define __MYMPLAYERHANDLER
+
+extern int mplSubRender;
+extern int mplMainRender;
+
+extern unsigned char * mplDrawBuffer;
+extern unsigned char * mplMenuDrawBuffer;
+extern int mainVisible;
+
+extern int mplMainAutoPlay;
+extern int mplMiddleMenu;
+
+extern void mplInit( void * disp );
+extern void mplEventHandling( int msg,float param );
+
+extern void mplMainDraw( void );
+extern void mplEventHandling( int msg,float param );
+extern void mplMainMouseHandle( int Button,int X,int Y,int RX,int RY );
+extern void mplMainKeyHandle( int KeyCode,int Type,int Key );
+extern void mplDandDHandler(int num,char** files);
+
+extern void mplSubDraw( void );
+extern void mplSubMouseHandle( int Button,int X,int Y,int RX,int RY );
+
+extern void mplMenuInit( void );
+extern void mplHideMenu( int mx,int my,int w );
+extern void mplShowMenu( int mx,int my );
+extern void mplMenuMouseHandle( int X,int Y,int RX,int RY );
+
+extern void mplPBInit( void );
+extern void mplPBShow( int x, int y );
+
+#endif
diff --git a/gui/mplayer/gtk/about.c b/gui/mplayer/gtk/about.c
new file mode 100644
index 0000000000..a19bb55065
--- /dev/null
+++ b/gui/mplayer/gtk/about.c
@@ -0,0 +1,329 @@
+
+#include "app.h"
+#include "config.h"
+#include "help_mp.h"
+
+#include "mplayer/pixmaps/about.xpm"
+#include "../widgets.h"
+#include "about.h"
+#include "common.h"
+
+GtkWidget * About = NULL;
+
+void ShowAboutBox( void )
+{
+ if ( About ) gtkActive( About );
+ else About=create_About();
+ gtk_widget_show( About );
+}
+
+void abWidgetDestroy( GtkWidget * widget,GtkWidget ** widget_pointer )
+{ WidgetDestroy( NULL,&About ); }
+
+GtkWidget * create_About( void )
+{
+ GtkWidget * vbox;
+ GtkWidget * pixmap1;
+ GtkWidget * scrolledwindow1;
+ GtkWidget * AboutText;
+ GtkWidget * Ok;
+
+#ifdef HAVE_GTK2_GUI
+ GtkTextBuffer * AboutTextBuffer;
+ GtkTextIter iter;
+#endif //HAVE_GTK2_GUI
+
+ GtkStyle * pixmapstyle;
+ GdkPixmap * pixmapwid;
+ GdkBitmap * mask;
+
+ GtkAccelGroup * accel_group;
+
+ accel_group=gtk_accel_group_new();
+
+ About=gtk_window_new( GTK_WINDOW_TOPLEVEL );
+ gtk_widget_set_name( About,MSGTR_About );
+ gtk_object_set_data( GTK_OBJECT( About ),MSGTR_About,About );
+ gtk_widget_set_usize( About,340,415 );
+ gtk_window_set_title( GTK_WINDOW( About ),MSGTR_About );
+ gtk_window_set_position( GTK_WINDOW( About ),GTK_WIN_POS_CENTER );
+ gtk_window_set_policy( GTK_WINDOW( About ),TRUE,FALSE,FALSE );
+ gtk_window_set_wmclass( GTK_WINDOW( About ),"About","MPlayer" );
+
+ gtk_widget_realize( About );
+ gtkAddIcon( About );