summaryrefslogtreecommitdiffstats
path: root/gui/mplayer/gtk/opts.c
diff options
context:
space:
mode:
Diffstat (limited to 'gui/mplayer/gtk/opts.c')
-rw-r--r--gui/mplayer/gtk/opts.c1814
1 files changed, 1814 insertions, 0 deletions
diff --git a/gui/mplayer/gtk/opts.c b/gui/mplayer/gtk/opts.c
new file mode 100644
index 0000000000..60e9a1bde8
--- /dev/null
+++ b/gui/mplayer/gtk/opts.c
@@ -0,0 +1,1814 @@
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <string.h>
+
+#include <gdk/gdkkeysyms.h>
+#include <gtk/gtk.h>
+
+#include "config.h"
+#include "help_mp.h"
+#include "mixer.h"
+#include "libao2/audio_out.h"
+#include "libvo/video_out.h"
+
+#include "app.h"
+#include "cfg.h"
+#include "interface.h"
+#include "../widgets.h"
+#include "opts.h"
+#include "fs.h"
+#include "common.h"
+
+typedef struct sh_video_t sh_video_t;
+typedef struct sh_audio_t sh_audio_t;
+
+// for mpcodecs_[av]d_drivers:
+#include "libmpcodecs/vd.h"
+#include "libmpcodecs/ad.h"
+
+ GtkWidget * Preferences = NULL;
+static GtkWidget * AConfig;
+static GtkWidget * VConfig;
+//static GtkWidget * BLoadSubtitle;
+static GtkWidget * BLoadFont;
+static GtkWidget * BOk;
+static GtkWidget * BCancel;
+
+static GtkWidget * CLADrivers;
+static GtkWidget * CLVDrivers;
+
+//static GtkWidget * ESubtitleName;
+ GtkWidget * prEFontName;
+ GtkWidget * prEDVDDevice;
+ GtkWidget * prECDRomDevice;
+static GtkWidget * EVFM;
+static GtkWidget * EAFM;
+
+static GtkWidget * CBVFM;
+static GtkWidget * CBAFM;
+static GtkWidget * CBAudioEqualizer;
+//static GtkWidget * CBSurround;
+static GtkWidget * CBExtraStereo;
+static GtkWidget * CBNormalize;
+static GtkWidget * CBSoftwareMixer;
+static GtkWidget * CBDoubleBuffer;
+static GtkWidget * CBDR;
+static GtkWidget * CBFramedrop;
+static GtkWidget * CBHFramedrop;
+//static GtkWidget * CBFullScreen;
+static GtkWidget * CBShowVideoWindow;
+static GtkWidget * CBNonInterlaved;
+static GtkWidget * CBIndex;
+static GtkWidget * CBFlip;
+static GtkWidget * CBNoAutoSub;
+static GtkWidget * CBSubUnicode;
+static GtkWidget * CBSubOverlap;
+static GtkWidget * CBDumpMPSub;
+static GtkWidget * CBDumpSrt;
+static GtkWidget * CBUseASS;
+static GtkWidget * CBASSUseMargins;
+static GtkWidget * SBASSTopMargin;
+static GtkWidget * SBASSBottomMargin;
+static GtkWidget * CBPostprocess;
+static GtkWidget * CBCache;
+static GtkWidget * CBLoadFullscreen;
+static GtkWidget * CBSaveWinPos;
+static GtkWidget * CBStopXScreenSaver;
+static GtkWidget * CBPlayBar;
+
+static GtkWidget * SBCache;
+static GtkAdjustment * SBCacheadj;
+
+static GtkWidget * CBAutoSync;
+static GtkWidget * SBAutoSync;
+static GtkAdjustment * SBAutoSyncadj;
+
+static GtkWidget * RBOSDNone;
+static GtkWidget * RBOSDTandP;
+static GtkWidget * RBOSDIndicator;
+static GtkWidget * RBOSDTPTT;
+
+static GtkWidget * HSAudioDelay;
+static GtkWidget * HSExtraStereoMul;
+static GtkWidget * HSPanscan;
+static GtkWidget * HSSubDelay;
+static GtkWidget * HSSubPosition;
+static GtkWidget * HSSubFPS;
+static GtkWidget * HSPPQuality;
+static GtkWidget * HSFPS;
+
+static GtkAdjustment * HSExtraStereoMuladj, * HSAudioDelayadj, * HSPanscanadj, * HSSubDelayadj;
+static GtkAdjustment * HSSubPositionadj, * HSSubFPSadj, * HSPPQualityadj, * HSFPSadj;
+
+#ifndef HAVE_FREETYPE
+static GtkWidget * HSFontFactor;
+static GtkAdjustment * HSFontFactoradj;
+#else
+static GtkWidget * HSFontBlur, * HSFontOutLine, * HSFontTextScale, * HSFontOSDScale;
+static GtkAdjustment * HSFontBluradj, * HSFontOutLineadj, * HSFontTextScaleadj, * HSFontOSDScaleadj;
+static GtkWidget * CBFontEncoding, * EFontEncoding;
+static GtkWidget * RBFontNoAutoScale, * RBFontAutoScaleWidth, * RBFontAutoScaleHeight, * RBFontAutoScaleDiagonal;
+//static GtkWidget * AutoScale;
+#endif
+
+#ifdef USE_ICONV
+static GtkWidget * CBSubEncoding, * ESubEncoding;
+#endif
+
+#if defined( HAVE_FREETYPE ) || defined( USE_ICONV )
+static struct
+{
+ char * name;
+ char * comment;
+} lEncoding[] =
+ {
+ { "unicode", MSGTR_PREFERENCES_FontEncoding1 },
+ { "iso-8859-1", MSGTR_PREFERENCES_FontEncoding2 },
+ { "iso-8859-15", MSGTR_PREFERENCES_FontEncoding3 },
+ { "iso-8859-2", MSGTR_PREFERENCES_FontEncoding4 },
+ { "cp1250", MSGTR_PREFERENCES_FontEncoding22},
+ { "iso-8859-3", MSGTR_PREFERENCES_FontEncoding5 },
+ { "iso-8859-4", MSGTR_PREFERENCES_FontEncoding6 },
+ { "iso-8859-5", MSGTR_PREFERENCES_FontEncoding7 },
+ { "cp1251", MSGTR_PREFERENCES_FontEncoding21},
+ { "iso-8859-6", MSGTR_PREFERENCES_FontEncoding8 },
+ { "iso-8859-7", MSGTR_PREFERENCES_FontEncoding9 },
+ { "iso-8859-9", MSGTR_PREFERENCES_FontEncoding10 },
+ { "iso-8859-13", MSGTR_PREFERENCES_FontEncoding11 },
+ { "iso-8859-14", MSGTR_PREFERENCES_FontEncoding12 },
+ { "iso-8859-8", MSGTR_PREFERENCES_FontEncoding13 },
+ { "koi8-r", MSGTR_PREFERENCES_FontEncoding14 },
+ { "koi8-u/ru", MSGTR_PREFERENCES_FontEncoding15 },
+ { "cp936", MSGTR_PREFERENCES_FontEncoding16 },
+ { "big5", MSGTR_PREFERENCES_FontEncoding17 },
+ { "shift-jis", MSGTR_PREFERENCES_FontEncoding18 },
+ { "cp949", MSGTR_PREFERENCES_FontEncoding19 },
+ { "cp874", MSGTR_PREFERENCES_FontEncoding20 },
+ { NULL,NULL }
+ };
+char * lCEncoding = NULL;
+char * lSEncoding = NULL;
+#endif
+
+static int old_audio_driver = 0;
+static char * ao_driver[3];
+static char * vo_driver[3];
+static int old_video_driver = 0;
+
+#ifdef HAVE_DXR3
+ void ShowDXR3Config( void );
+ void HideDXR3Config( void );
+#endif
+ void ShowAudioConfig();
+ void HideAudioConfig();
+
+static gboolean prHScaler( GtkWidget * widget,GdkEventMotion * event,gpointer user_data );
+static void prToggled( GtkToggleButton * togglebutton,gpointer user_data );
+static void prCListRow( GtkCList * clist,gint row,gint column,GdkEvent * event,gpointer user_data );
+#if defined( HAVE_FREETYPE ) || defined( USE_ICONV )
+static void prEntry( GtkContainer * container,gpointer user_data );
+#endif
+
+extern int stop_xscreensaver;
+
+void ShowPreferences( void )
+{
+ if ( Preferences ) gtkActive( Preferences );
+ else Preferences=create_Preferences();
+
+// -- 1. page
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBAudioEqualizer ),gtkEnableAudioEqualizer );
+#if 0
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBSurround ),gtkAOSurround );
+#endif
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBExtraStereo ),gtkAOExtraStereo );
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBNormalize ),gtkAONorm );
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBSoftwareMixer ),soft_vol );
+ gtk_adjustment_set_value( HSExtraStereoMuladj,gtkAOExtraStereoMul );
+ {
+ int i = 0;
+ char * tmp[3]; tmp[2]="";
+ old_audio_driver=-1;
+ if ( CLADrivers ) gtk_clist_clear( GTK_CLIST( CLADrivers ) );
+ while ( audio_out_drivers[i] )
+ {
+ const ao_info_t *info = audio_out_drivers[i++]->info;
+ if ( !strcmp( info->short_name,"plugin" ) ) continue;
+ if ( audio_driver_list )
+ {
+ char * name = gstrdup( audio_driver_list[0] );
+ char * sep = gstrchr( audio_driver_list[0],':' );
+ if ( sep ) *sep=0;
+ if ( !gstrcmp( name,(char *)info->short_name ) ) old_audio_driver=i - 1;
+ free( name );
+ }
+ tmp[0]=(char *)info->short_name; tmp[1]=(char *)info->name; gtk_clist_append( GTK_CLIST( CLADrivers ),tmp );
+ }
+ if ( old_audio_driver > -1 )
+ {
+ gtk_clist_select_row( GTK_CLIST( CLADrivers ),old_audio_driver,0 );
+ gtk_clist_get_text( GTK_CLIST( CLADrivers ),old_audio_driver,0,(char **)&ao_driver );
+ gtk_widget_set_sensitive( AConfig,FALSE );
+ if ( !strncmp( ao_driver[0],"oss",3 ) ||
+ !strncmp( ao_driver[0],"alsa",4 ) ||
+ !strncmp( ao_driver[0],"esd",3 ) ||
+ !strncmp( ao_driver[0],"sdl",3 ) )
+ gtk_widget_set_sensitive( AConfig,TRUE );
+ }
+ }
+
+// -- 2. page
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBDoubleBuffer ),vo_doublebuffering );
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBDR ),vo_directrendering );
+
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBFramedrop ),FALSE );
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBHFramedrop ),FALSE );
+ switch ( frame_dropping )
+ {
+ case 2: gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBHFramedrop ),TRUE );
+ case 1: gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBFramedrop ),TRUE );
+ }
+
+ if (flip != -1)
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBFlip ),flip );
+ gtk_adjustment_set_value( HSPanscanadj,vo_panscan );
+
+ {
+ int i = 0, c = 0;
+ char * tmp[3]; tmp[2]="";
+ old_video_driver=0;
+ if ( CLVDrivers ) gtk_clist_clear( GTK_CLIST( CLVDrivers ) );
+ while ( video_out_drivers[i] )
+ if ( video_out_drivers[i++]->control( VOCTRL_GUISUPPORT,NULL ) == VO_TRUE )
+ {
+ if ( video_driver_list && !gstrcmp( video_driver_list[0],(char *)video_out_drivers[i - 1]->info->short_name ) ) old_video_driver=c; c++;
+ tmp[0]=(char *)video_out_drivers[i - 1]->info->short_name; tmp[1]=(char *)video_out_drivers[i - 1]->info->name;
+ gtk_clist_append( GTK_CLIST( CLVDrivers ),tmp );
+ }
+ gtk_clist_select_row( GTK_CLIST( CLVDrivers ),old_video_driver,0 );
+ gtk_clist_get_text( GTK_CLIST( CLVDrivers ),old_video_driver,0,(char **)&vo_driver );
+ gtk_widget_set_sensitive( VConfig,FALSE );
+#ifdef HAVE_DXR3
+ if ( !gstrcmp( vo_driver[0],"dxr3" ) ) gtk_widget_set_sensitive( VConfig,TRUE );
+#endif
+ }
+
+ gtk_adjustment_set_value( HSFPSadj,force_fps );
+
+// -- 3. page
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBSubOverlap ),suboverlap_enabled );
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBNoAutoSub ),!sub_auto );
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBDumpMPSub ),gtkSubDumpMPSub );
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBDumpSrt ),gtkSubDumpSrt );
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBSubUnicode ),sub_unicode );
+#ifdef USE_ASS
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBUseASS ),gtkASS.enabled );
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBASSUseMargins ),gtkASS.use_margins );
+ gtk_spin_button_set_value( (GtkSpinButton *)SBASSTopMargin,(gdouble)gtkASS.top_margin );
+ gtk_spin_button_set_value( (GtkSpinButton *)SBASSBottomMargin,(gdouble)gtkASS.bottom_margin );
+
+ if ( !gtkASS.enabled )
+ {
+ gtk_widget_set_sensitive( CBASSUseMargins,FALSE );
+ gtk_widget_set_sensitive( SBASSTopMargin,FALSE );
+ gtk_widget_set_sensitive( SBASSBottomMargin,FALSE );
+ }
+#endif
+
+ gtk_adjustment_set_value( HSSubDelayadj,sub_delay );
+ gtk_adjustment_set_value( HSSubFPSadj,sub_fps );
+ gtk_adjustment_set_value( HSSubPositionadj,sub_pos );
+ switch ( osd_level )
+ {
+ case 0: gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( RBOSDNone ),TRUE ); break;
+ case 1: gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( RBOSDIndicator ),TRUE ); break;
+ case 2: gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( RBOSDTandP ),TRUE ); break;
+ case 3: gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( RBOSDTPTT ),TRUE ); break;
+ }
+#if 0
+ if ( guiIntfStruct.Subtitlename ) gtk_entry_set_text( GTK_ENTRY( ESubtitleName ),guiIntfStruct.Subtitlename );
+#endif
+
+#ifdef USE_ICONV
+ if ( sub_cp )
+ {
+ int i;
+ for ( i=0;lEncoding[i].name;i++ )
+ if ( !gstrcmp( sub_cp,lEncoding[i].name ) ) break;
+ if ( lEncoding[i].name ) lSEncoding=lEncoding[i].comment;
+ gtk_entry_set_text( GTK_ENTRY( ESubEncoding ),lSEncoding );
+ }
+#endif
+
+// --- 4. page
+ // font ...
+ if ( font_name ) gtk_entry_set_text( GTK_ENTRY( prEFontName ),font_name );
+#ifndef HAVE_FREETYPE
+ gtk_adjustment_set_value( HSFontFactoradj,font_factor );
+#else
+ gtk_adjustment_set_value( HSFontBluradj,( subtitle_font_radius / 8.0f ) * 100.0f );
+ gtk_adjustment_set_value( HSFontOutLineadj,( subtitle_font_thickness / 8.0f ) * 100.0f );
+ gtk_adjustment_set_value( HSFontTextScaleadj,text_font_scale_factor );
+ gtk_adjustment_set_value( HSFontOSDScaleadj,osd_font_scale_factor );
+ if ( subtitle_font_encoding )
+ {
+ int i;
+ for ( i=0;lEncoding[i].name;i++ )
+ if ( !gstrcmp( subtitle_font_encoding,lEncoding[i].name ) ) break;
+ if ( lEncoding[i].name ) lCEncoding=lEncoding[i].comment;
+ gtk_entry_set_text( GTK_ENTRY( EFontEncoding ),lCEncoding );
+ }
+ switch ( subtitle_autoscale )
+ {
+ case 0: gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( RBFontNoAutoScale ),TRUE ); break;
+ case 1: gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( RBFontAutoScaleHeight ),TRUE ); break;
+ case 2: gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( RBFontAutoScaleWidth ),TRUE ); break;
+ case 3: gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( RBFontAutoScaleDiagonal ),TRUE ); break;
+ }
+#endif
+
+// -- 5. page
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBNonInterlaved ),force_ni );
+ if ( index_mode == 1 ) gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBIndex ),1 );
+ {
+ int i;
+ GList * Items = NULL;
+ char * name = NULL;
+
+ Items=g_list_append( Items,MSGTR_PREFERENCES_None );
+ for( i=0;mpcodecs_vd_drivers[i];i++ )
+ {
+ Items=g_list_append( Items,(char *)mpcodecs_vd_drivers[i]->info->name );
+ if ( video_fm_list && !gstrcmp( video_fm_list[0],(char *)mpcodecs_vd_drivers[i]->info->short_name ) ) name=(char *)mpcodecs_vd_drivers[i]->info->name;
+ }
+ gtk_combo_set_popdown_strings( GTK_COMBO( CBVFM ),Items );
+ g_list_free( Items );
+ if ( name ) gtk_entry_set_text( GTK_ENTRY( EVFM ),name );
+ }
+
+ {
+ int i;
+ GList * Items = NULL;
+ char * name = NULL;
+
+ Items=g_list_append( Items,MSGTR_PREFERENCES_None );
+ for( i=0;mpcodecs_ad_drivers[i];i++ )
+ {
+ Items=g_list_append( Items,(char *)mpcodecs_ad_drivers[i]->info->name );
+ if ( audio_fm_list && !gstrcmp( audio_fm_list[0],(char *)mpcodecs_ad_drivers[i]->info->short_name ) ) name=(char *)mpcodecs_ad_drivers[i]->info->name;
+ }
+ gtk_combo_set_popdown_strings( GTK_COMBO( CBAFM ),Items );
+ g_list_free( Items );
+ if ( name ) gtk_entry_set_text( GTK_ENTRY( EAFM ),name );
+ }
+
+// --- 6. page
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBPostprocess ),gtkVfPP );
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBLoadFullscreen ),gtkLoadFullscreen );
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBSaveWinPos ),gui_save_pos );
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBShowVideoWindow ),gtkShowVideoWindow );
+ if ( !gtkShowVideoWindow )
+ {
+ gtk_widget_set_sensitive( CBLoadFullscreen,FALSE );
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBLoadFullscreen ),0 );
+ }
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBStopXScreenSaver ),stop_xscreensaver );
+ gtk_adjustment_set_value( HSPPQualityadj,auto_quality );
+
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBPlayBar ),gtkEnablePlayBar );
+ if ( !appMPlayer.barIsPresent )
+ {
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBPlayBar ),0 );
+ gtk_widget_set_sensitive( CBPlayBar,FALSE );
+ }
+
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBCache ),0 );
+ gtk_adjustment_set_value( SBCacheadj,(float)gtkCacheSize );
+ if ( !gtkCacheOn ) gtk_widget_set_sensitive( SBCache,FALSE );
+ else gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBCache ),TRUE );
+
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBAutoSync ),0 );
+ gtk_adjustment_set_value( SBAutoSyncadj,(float)gtkAutoSync );
+ if ( !gtkAutoSyncOn ) gtk_widget_set_sensitive( SBAutoSync,FALSE );
+ else gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBAutoSync ),TRUE );
+
+ if ( dvd_device ) gtk_entry_set_text( GTK_ENTRY( prEDVDDevice ),dvd_device );
+ else gtk_entry_set_text( GTK_ENTRY( prEDVDDevice ),DEFAULT_DVD_DEVICE );
+ if ( cdrom_device ) gtk_entry_set_text( GTK_ENTRY( prECDRomDevice ),cdrom_device );
+ else gtk_entry_set_text( GTK_ENTRY( prECDRomDevice ),DEFAULT_CDROM_DEVICE );
+
+// -- disables
+#ifndef USE_ASS
+ gtk_widget_set_sensitive( CBUseASS,FALSE );
+ gtk_widget_set_sensitive( CBASSUseMargins,FALSE );
+ gtk_widget_set_sensitive( SBASSTopMargin,FALSE );
+ gtk_widget_set_sensitive( SBASSBottomMargin,FALSE );
+#endif
+
+// -- signals
+ gtk_signal_connect( GTK_OBJECT( CBExtraStereo ),"toggled",GTK_SIGNAL_FUNC( prToggled ),(void*)0 );
+ gtk_signal_connect( GTK_OBJECT( CBNormalize ),"toggled",GTK_SIGNAL_FUNC( prToggled ),(void*)1 );
+ gtk_signal_connect( GTK_OBJECT( CBSoftwareMixer ),"toggled",GTK_SIGNAL_FUNC( prToggled ),(void*)1 );
+ gtk_signal_connect( GTK_OBJECT( CBAudioEqualizer ),"toggled",GTK_SIGNAL_FUNC( prToggled ),(void*)2 );
+ gtk_signal_connect( GTK_OBJECT( CBShowVideoWindow ),"toggled",GTK_SIGNAL_FUNC( prToggled ), (void*)3 );
+#ifdef HAVE_FREETYPE
+ gtk_signal_connect( GTK_OBJECT( RBFontNoAutoScale ),"toggled",GTK_SIGNAL_FUNC( prToggled ),(void*)4 );
+ gtk_signal_connect( GTK_OBJECT( RBFontAutoScaleHeight ),"toggled",GTK_SIGNAL_FUNC( prToggled ),(void*)5 );
+ gtk_signal_connect( GTK_OBJECT( RBFontAutoScaleWidth ),"toggled",GTK_SIGNAL_FUNC( prToggled ),(void*)6 );
+ gtk_signal_connect( GTK_OBJECT( RBFontAutoScaleDiagonal ),"toggled",GTK_SIGNAL_FUNC( prToggled ),(void*)7 );
+#endif
+ gtk_signal_connect( GTK_OBJECT( CBCache ),"toggled",GTK_SIGNAL_FUNC( prToggled ),(void*)8);
+ gtk_signal_connect( GTK_OBJECT( CBAutoSync ),"toggled",GTK_SIGNAL_FUNC( prToggled ),(void*)9);
+#ifdef USE_ASS
+ gtk_signal_connect( GTK_OBJECT( CBUseASS ),"toggled",GTK_SIGNAL_FUNC( prToggled ),(void*)10);
+#endif
+
+ gtk_signal_connect( GTK_OBJECT( HSExtraStereoMul ),"motion_notify_event",GTK_SIGNAL_FUNC( prHScaler ),(void*)0 );
+ gtk_signal_connect( GTK_OBJECT( HSAudioDelay ),"motion_notify_event",GTK_SIGNAL_FUNC( prHScaler ),(void*)1 );
+ gtk_signal_connect( GTK_OBJECT( HSPanscan ),"motion_notify_event",GTK_SIGNAL_FUNC( prHScaler ),(void*)2 );
+ gtk_signal_connect( GTK_OBJECT( HSSubDelay ),"motion_notify_event",GTK_SIGNAL_FUNC( prHScaler ),(void*)3 );
+ gtk_signal_connect( GTK_OBJECT( HSSubPosition ),"motion_notify_event",GTK_SIGNAL_FUNC( prHScaler ),(void*)4 );
+#ifndef HAVE_FREETYPE
+ gtk_signal_connect( GTK_OBJECT( HSFontFactor ),"motion_notify_event",GTK_SIGNAL_FUNC( prHScaler ),(void*)5 );
+#else
+ gtk_signal_connect( GTK_OBJECT( HSFontBlur ),"motion_notify_event",GTK_SIGNAL_FUNC( prHScaler ),(void*)6 );
+ gtk_signal_connect( GTK_OBJECT( HSFontOutLine ),"motion_notify_event",GTK_SIGNAL_FUNC( prHScaler ),(void*)7 );
+ gtk_signal_connect( GTK_OBJECT( HSFontTextScale ),"motion_notify_event",GTK_SIGNAL_FUNC( prHScaler ),(void*)8 );
+ gtk_signal_connect( GTK_OBJECT( HSFontOSDScale ),"motion_notify_event",GTK_SIGNAL_FUNC( prHScaler ),(void*)9 );
+ gtk_signal_connect( GTK_OBJECT( EFontEncoding ),"changed",GTK_SIGNAL_FUNC( prEntry ),(void *)0 );
+#endif
+#ifdef USE_ICONV
+ gtk_signal_connect( GTK_OBJECT( ESubEncoding ),"changed",GTK_SIGNAL_FUNC( prEntry ),(void *)1 );
+#endif
+ gtk_signal_connect( GTK_OBJECT( HSPPQuality ),"motion_notify_event",GTK_SIGNAL_FUNC( prHScaler ),(void*)10 );
+
+ gtk_signal_connect( GTK_OBJECT( CLADrivers ),"select_row",GTK_SIGNAL_FUNC( prCListRow ),(void*)0 );
+ gtk_signal_connect( GTK_OBJECT( CLVDrivers ),"select_row",GTK_SIGNAL_FUNC( prCListRow ),(void*)1 );
+
+ gtk_widget_show( Preferences );
+ gtkSetLayer( Preferences );
+ {
+ static int visible = 1;
+ if ( visible )
+ {
+ gtkMessageBox( GTK_MB_WARNING,MSGTR_PREFERENCES_Message );
+ visible=0;
+ }
+ }
+}
+
+void HidePreferences( void )
+{
+ if ( !Preferences ) return;
+ gtk_widget_hide( Preferences );
+ gtk_widget_destroy( Preferences );
+ Preferences=NULL;
+ HideAudioConfig();
+#ifdef HAVE_DXR3
+ HideDXR3Config();
+#endif
+}
+
+#if defined( HAVE_FREETYPE ) || defined( USE_ICONV )
+static void prEntry( GtkContainer * container,gpointer user_data )
+{
+ char * comment;
+ int i;
+
+ switch( (int)user_data )
+ {
+#ifdef HAVE_FREETYPE
+ case 0: // font encoding
+ comment=gtk_entry_get_text( GTK_ENTRY( EFontEncoding ) );
+ for ( i=0;lEncoding[i].name;i++ )
+ if ( !gstrcmp( lEncoding[i].comment,comment ) ) break;
+ if ( lEncoding[i].comment ) gtkSet( gtkSetFontEncoding,0,lEncoding[i].name );
+ break;
+#endif
+#ifdef USE_ICONV
+ case 1: // sub encoding
+ comment=gtk_entry_get_text( GTK_ENTRY( ESubEncoding ) );
+ for ( i=0;lEncoding[i].name;i++ )
+ if ( !gstrcmp( lEncoding[i].comment,comment ) ) break;
+ if ( lEncoding[i].comment ) gtkSet( gtkSetSubEncoding,0,lEncoding[i].name );
+ else gtkSet( gtkSetSubEncoding,0,NULL );
+ break;
+#endif
+ }
+}
+#endif
+
+#define bAConfig 0
+#define bVconfig 1
+#define bOk 2
+#define bCancel 3
+#define bLSubtitle 4
+#define bLFont 5
+
+void prButton( GtkButton * button,gpointer user_data )
+{
+ switch ( (int)user_data )
+ {
+ case bOk:
+ // -- 1. page
+ gtkEnableAudioEqualizer=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBAudioEqualizer ) );
+ gtkAOExtraStereo=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBExtraStereo ) );
+ gtkAONorm=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBNormalize ) );
+ soft_vol=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBSoftwareMixer ) );
+ gtkSet( gtkSetExtraStereo,HSExtraStereoMuladj->value,NULL );
+ audio_delay=HSAudioDelayadj->value;
+
+ gaddlist( &audio_driver_list,ao_driver[0] );
+ gaddlist( &video_driver_list,vo_driver[0] );
+
+ // -- 2. page
+ vo_doublebuffering=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBDoubleBuffer ) );
+ vo_directrendering=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBDR ) );
+
+ frame_dropping=0;
+ if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBFramedrop ) ) == TRUE ) frame_dropping=1;
+ if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBHFramedrop ) ) == TRUE ) frame_dropping=2;
+
+ flip=-1;
+ if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBFlip ) ) ) flip=1;
+
+ force_fps=HSFPSadj->value;
+
+ // -- 3. page
+ suboverlap_enabled=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBSubOverlap ) );
+ sub_auto=!gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBNoAutoSub ) );
+ gtkSubDumpMPSub=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBDumpMPSub ) );
+ gtkSubDumpSrt=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBDumpSrt ) );
+ sub_unicode=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBSubUnicode ) );
+#ifdef USE_ASS
+ gtkASS.enabled=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBUseASS ) );
+ gtkASS.use_margins=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBASSUseMargins ) );
+ gtkASS.top_margin=gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON( SBASSTopMargin ) );
+ gtkASS.bottom_margin=gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON( SBASSBottomMargin ) );
+#endif
+ sub_delay=HSSubDelayadj->value;
+ sub_fps=HSSubFPSadj->value;
+ sub_pos=(int)HSSubPositionadj->value;
+ if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( RBOSDNone ) ) ) osd_level=0;
+ if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( RBOSDIndicator ) ) ) osd_level=1;
+ if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( RBOSDTandP ) ) ) osd_level=2;
+ if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( RBOSDTPTT ) ) ) osd_level=3;
+
+
+ // --- 4. page
+ guiSetFilename( font_name,gtk_entry_get_text( GTK_ENTRY( prEFontName ) ) );
+#ifndef HAVE_FREETYPE
+ gtkSet( gtkSetFontFactor,HSFontFactoradj->value,NULL );
+#else
+ gtkSet( gtkSetFontBlur,HSFontBluradj->value,NULL );
+ gtkSet( gtkSetFontOutLine,HSFontOutLineadj->value,NULL );
+ gtkSet( gtkSetFontTextScale,HSFontTextScaleadj->value,NULL );
+ gtkSet( gtkSetFontOSDScale,HSFontOSDScaleadj->value,NULL );
+ if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( RBFontNoAutoScale ) ) ) gtkSet( gtkSetFontAutoScale,0,NULL );
+ if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( RBFontAutoScaleHeight ) ) ) gtkSet( gtkSetFontAutoScale,1,NULL );
+ if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( RBFontAutoScaleWidth ) ) ) gtkSet( gtkSetFontAutoScale,2,NULL );
+ if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( RBFontAutoScaleDiagonal ) ) ) gtkSet( gtkSetFontAutoScale,3,NULL );
+#endif
+
+ // -- 5. page
+ force_ni=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBNonInterlaved ) );
+ index_mode=-1;
+ if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBIndex ) ) ) index_mode=1;
+
+ {
+ int i;
+ char * tmp = gtk_entry_get_text( GTK_ENTRY( EVFM ) );
+ for( i=0;mpcodecs_vd_drivers[i];i++ )
+ if ( !gstrcmp( tmp,(char *)mpcodecs_vd_drivers[i]->info->name ) )
+ { gaddlist( &video_fm_list,(char *)mpcodecs_vd_drivers[i]->info->short_name ); break; }
+ }
+
+ {
+ int i;
+ char * tmp = gtk_entry_get_text( GTK_ENTRY( EAFM ) );
+ for( i=0;mpcodecs_ad_drivers[i];i++ )
+ if ( !gstrcmp( tmp,(char *)mpcodecs_ad_drivers[i]->info->name ) )
+ { gaddlist( &audio_fm_list,(char *)mpcodecs_ad_drivers[i]->info->short_name ); break; }
+ }
+
+ // --- 6. page
+ gtkVfPP=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBPostprocess ) );
+ gtkLoadFullscreen=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBLoadFullscreen ) );
+ gui_save_pos=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBSaveWinPos ) );
+ gtkShowVideoWindow=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBShowVideoWindow ) );
+ stop_xscreensaver=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBStopXScreenSaver ) );
+ gtkEnablePlayBar=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBPlayBar ) );
+ gtkSet( gtkSetAutoq,HSPPQualityadj->value,NULL );
+
+ if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBCache ) ) ) { gtkCacheSize=(int)SBCacheadj->value; gtkCacheOn=1; }
+ else gtkCacheOn=0;
+
+ if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBAutoSync ) ) ) { gtkAutoSync=(int)SBAutoSyncadj->value; gtkAutoSyncOn=1; }
+ else gtkAutoSyncOn=0;
+
+ guiSetFilename( dvd_device,gtk_entry_get_text( GTK_ENTRY( prEDVDDevice ) ) );
+ guiSetFilename( cdrom_device,gtk_entry_get_text( GTK_ENTRY( prECDRomDevice ) ) );
+
+ case bCancel:
+ HidePreferences();
+ break;
+ case bAConfig:
+ if ( !ao_driver[0] ) break;
+ gtk_widget_set_sensitive( AConfig,FALSE );
+ if ( !strncmp( ao_driver[0],"oss",3 ) ||
+ !strncmp( ao_driver[0],"alsa",4 ) ||
+ !strncmp( ao_driver[0],"esd",3 ) ||
+ !strncmp( ao_driver[0],"sdl",3 ) ) {
+ ShowAudioConfig();
+ gtk_widget_set_sensitive( AConfig,TRUE );
+ }
+ break;
+ case bVconfig:
+ if ( !vo_driver[0] ) break;
+ gtk_widget_set_sensitive( VConfig,FALSE );
+#ifdef HAVE_DXR3
+ if ( !gstrcmp( vo_driver[0],"dxr3" ) ) { ShowDXR3Config(); gtk_widget_set_sensitive( VConfig,TRUE ); }
+#endif
+ break;
+#if 0
+ case bLSubtitle:
+ break;
+#endif
+ case bLFont:
+ ShowFileSelect( fsFontSelector,FALSE );
+ gtkSetLayer( fsFileSelect );
+ break;
+ }
+}
+
+static gboolean prHScaler( GtkWidget * widget,GdkEventMotion * event,gpointer user_data )
+{
+ switch ( (int)user_data )
+ {
+ case 0: // extra stereo coefficient
+ if ( !guiIntfStruct.Playing ) break;
+ gtkSet( gtkSetExtraStereo,HSExtraStereoMuladj->value,NULL );
+ break;
+ case 1: // audio delay
+ audio_delay=HSAudioDelayadj->value;
+ break;
+ case 2: // panscan
+ gtkSet( gtkSetPanscan,HSPanscanadj->value,NULL );
+ break;
+ case 3: // sub delay
+ sub_delay=HSSubDelayadj->value;
+ break;
+ case 4: // sub position
+ sub_pos=(int)HSSubPositionadj->value;
+ break;
+#ifndef HAVE_FREETYPE
+ case 5: // font factor
+ gtkSet( gtkSetFontFactor,HSFontFactoradj->value,NULL );
+ break;
+#else
+ case 6: // font blur
+ gtkSet( gtkSetFontBlur,HSFontBluradj->value,NULL );
+ break;
+ case 7: // font outline
+ gtkSet( gtkSetFontOutLine,HSFontOutLineadj->value,NULL );
+ break;
+ case 8: // text scale
+ gtkSet( gtkSetFontTextScale,HSFontTextScaleadj->value,NULL );
+ break;
+ case 9: // osd scale
+ gtkSet( gtkSetFontOSDScale,HSFontOSDScaleadj->value,NULL );
+ break;
+#endif
+ case 10: // auto quality
+ gtkSet( gtkSetAutoq,HSPPQualityadj->value,NULL );
+ break;
+ }
+ return FALSE;
+}
+
+static void prToggled( GtkToggleButton * togglebutton,gpointer user_data )
+{
+ int window;
+ switch ( (int)user_data )
+ {
+ case 0: // extra stereo coefficient
+ if ( guiIntfStruct.Playing )
+ gtk_widget_set_sensitive( HSExtraStereoMul,gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBExtraStereo ) ) );
+ break;
+// case 1: // normalize
+// case 2: // equalizer
+// if ( guiIntfStruct.Playing ) gtkMessageBox( GTK_MB_WARNING,"Please remember, this function need restart the playing." );
+// break;
+ case 3:
+ if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBShowVideoWindow ) ) ) gtk_widget_set_sensitive( CBLoadFullscreen,TRUE );
+ else
+ {
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBLoadFullscreen ),0 );
+ gtk_widget_set_sensitive( CBLoadFullscreen,FALSE );
+ }
+ if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBShowVideoWindow ) ) )
+ {
+ window=wsShowWindow;
+ gtkActive( Preferences );
+ } else window=wsHideWindow;
+
+ if ( !guiIntfStruct.Playing ) wsVisibleWindow( &appMPlayer.subWindow,window );
+ break;
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ gtkSet( gtkSetFontAutoScale,(float)((int)user_data - 4 ),NULL );
+ break;
+ case 8:
+ if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBCache ) ) ) gtk_widget_set_sensitive( SBCache,TRUE );
+ else gtk_widget_set_sensitive( SBCache,FALSE );
+ break;
+ case 9:
+ if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBAutoSync ) ) ) gtk_widget_set_sensitive( SBAutoSync,TRUE );
+ else gtk_widget_set_sensitive( SBAutoSync,FALSE );
+ break;
+#ifdef USE_ASS
+ case 10:
+ if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBUseASS ) ) )
+ {
+ gtk_widget_set_sensitive( CBASSUseMargins,TRUE );
+ gtk_widget_set_sensitive( SBASSTopMargin,TRUE );
+ gtk_widget_set_sensitive( SBASSBottomMargin,TRUE );
+ }
+ else
+ {
+ gtk_widget_set_sensitive( CBASSUseMargins,FALSE );
+ gtk_widget_set_sensitive( SBASSTopMargin,FALSE );
+ gtk_widget_set_sensitive( SBASSBottomMargin,FALSE );
+ }
+ break;
+#endif
+ }
+}
+
+static void prCListRow( GtkCList * clist,gint row,gint column,GdkEvent * event,gpointer user_data )
+{
+ switch ( (int)user_data )
+ {
+ case 0: // audio driver
+ gtk_clist_get_text( GTK_CLIST( CLADrivers ),row,0,(char **)&ao_driver );
+ gtk_widget_set_sensitive( AConfig,FALSE );
+ if ( !strncmp( ao_driver[0],"oss",3 ) ||
+ !strncmp( ao_driver[0],"alsa",4 ) ||
+ !strncmp( ao_driver[0],"esd",3 ) ||
+ !strncmp( ao_driver[0],"sdl",3 ) )
+ gtk_widget_set_sensitive( AConfig,TRUE );
+#ifndef HAVE_GTK2_GUI
+ if ( !strncmp( ao_driver[0],"arts",4 ) )
+ gtkMessageBox(GTK_MB_WARNING|GTK_MB_SIMPLE, MSGTR_PREFERENCES_ArtsBroken);
+#endif
+ break;
+ case 1: // video driver
+ gtk_clist_get_text( GTK_CLIST( CLVDrivers ),row,0,(char **)&vo_driver );
+ gtk_widget_set_sensitive( VConfig,FALSE );
+#ifdef HAVE_DXR3
+ if ( !gstrcmp( vo_driver[0],"dxr3" ) ) gtk_widget_set_sensitive( VConfig,TRUE );
+#endif
+ break;
+ }
+}
+
+GtkWidget * create_Preferences( void )
+{
+ GtkWidget * label;
+ GtkWidget * frame;
+
+ GtkWidget * vbox1;
+ GtkWidget * notebook1;
+ GtkWidget * hbox1;
+ GtkWidget * vbox2;
+ GtkWidget * scrolledwindow3;
+ GtkWidget * vbox3;
+ GtkWidget * hbox8;
+ GtkWidget * hbox2;
+ GtkWidget * vbox4;
+ GtkWidget * scrolledwindow2;
+ GtkWidget * hbuttonbox3;
+ GtkWidget * vbox5;
+ GtkWidget * vbox6;
+ GtkWidget * vbox600;
+ GSList * OSD_group = NULL;
+ GSList * Font_group = NULL;
+ GList * CBFontEncoding_items = NULL;
+ GList * CBSubEncoding_items = NULL;
+ GtkWidget * vbox7;
+ GtkWidget * vbox8;
+ GtkWidget * table1;
+ GtkWidget * vbox9;
+ GtkWidget * vbox603;
+ GtkWidget * hbox6;
+ GtkWidget * hbuttonbox5;
+#ifndef HAVE_FREETYPE
+ GtkWidget * hbox7;
+#endif
+ GtkWidget * vbox601;
+ GtkWidget * vbox602;
+ GtkWidget * hbox5;
+ GtkWidget * hbuttonbox1;
+ GtkAccelGroup * accel_group;
+
+ GtkWidget * hbox9;
+ GtkWidget * hbox91;
+ GtkWidget * hbox92;
+
+ accel_group=gtk_accel_group_new();
+
+ Preferences=gtk_window_new( GTK_WINDOW_TOPLEVEL );
+ gtk_widget_set_name( Preferences,"Preferences" );
+ gtk_object_set_data( GTK_OBJECT( Preferences ),"Preferences",Preferences );
+ gtk_window_set_title( GTK_WINDOW( Preferences ),MSGTR_Preferences );
+ gtk_window_set_position( GTK_WINDOW( Preferences ),GTK_WIN_POS_CENTER );
+// gtk_window_set_policy( GTK_WINDOW( Preferences ),FALSE,FALSE,FALSE );
+ gtk_window_set_wmclass( GTK_WINDOW( Preferences ),"Preferences","MPlayer" );
+
+ gtk_widget_realize( Preferences );
+ gtkAddIcon( Preferences );
+
+ vbox1=AddVBox( AddDialogFrame( Preferences ),0 );
+ notebook1=gtk_notebook_new();
+ gtk_widget_set_name( notebook1,"notebook1" );
+ gtk_widget_show( notebook1 );
+ gtk_box_pack_start( GTK_BOX( vbox1 ),notebook1,TRUE,TRUE,0 );
+
+ hbox1=AddVBox( notebook1,0 );
+
+ frame=AddFrame( NULL,GTK_SHADOW_ETCHED_OUT,hbox1,1 );
+ frame=AddFrame( NULL,GTK_SHADOW_NONE,frame,1 );
+
+// --- 1. page
+
+ vbox2=AddVBox( frame,0 );
+
+ scrolledwindow3=gtk_scrolled_window_new( NULL,NULL );
+ gtk_widget_set_name( scrolledwindow3,"scrolledwindow3" );
+ gtk_widget_show( scrolledwindow3 );
+ gtk_box_pack_start( GTK_BOX( vbox2 ),scrolledwindow3,TRUE,TRUE,0 );
+ gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scrolledwindow3 ),GTK_POLICY_NEVER,GTK_POLICY_AUTOMATIC );
+
+ CLADrivers=gtk_clist_new( 2 );
+ gtk_widget_set_name( CLADrivers,"CLADrivers" );
+ gtk_widget_show( CLADrivers );
+ gtk_container_add( GTK_CONTAINER( scrolledwindow3 ),CLADrivers );
+ gtk_clist_set_column_width( GTK_CLIST( CLADrivers ),0,50 );
+ gtk_clist_column_titles_show( GTK_CLIST( CLADrivers ) );
+ gtk_clist_set_shadow_type( GTK_CLIST( CLADrivers ),GTK_SHADOW_NONE );
+ gtk_widget_set_usize( CLADrivers,250,-2 );
+ gtk_clist_set_column_widget( GTK_CLIST( CLADrivers ),0,
+ AddLabel( MSGTR_PREFERENCES_AvailableDrivers,NULL ) );
+
+ AConfig=AddButton( MSGTR_ConfigDriver,
+ AddHButtonBox( vbox2 ) );
+
+ vbox3=AddVBox(
+ AddFrame( NULL,GTK_SHADOW_NONE,
+ AddFrame( NULL,GTK_SHADOW_ETCHED_OUT,hbox1,0 ),1 ),0 );
+ gtk_widget_set_usize( vbox3,250,-2 );
+
+ CBNormalize=AddCheckButton( MSGTR_PREFERENCES_NormalizeSound,vbox3 );
+ CBAudioEqualizer=AddCheckButton( MSGTR_PREFERENCES_EnableEqualizer,vbox3 );
+ CBSoftwareMixer=AddCheckButton( MSGTR_PREFERENCES_SoftwareMixer,vbox3 );
+#if 0
+ CBSurround=AddCheckButton( "Enable surround",vbox3 );
+#endif
+
+ AddHSeparator( vbox3 );
+ CBExtraStereo=AddCheckButton( MSGTR_PREFERENCES_ExtraStereo,vbox3 );
+ hbox8=AddHBox( vbox3,1 );
+ label=AddLabel( MSGTR_PREFERENCES_Coefficient,hbox8 );
+// gtk_misc_set_padding( GTK_MISC( label ),20,0 );
+ HSExtraStereoMuladj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-10,10,0.1,0,0 ) );
+ HSExtraStereoMul=AddHScaler( HSExtraStereoMuladj,hbox8,1 );
+ AddHSeparator( vbox3 );
+
+ hbox8=AddHBox( vbox3,1 );
+ AddLabel( MSGTR_PREFERENCES_AudioDelay,hbox8 );
+
+ HSAudioDelayadj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-10,10,0.01,0,0 ) );
+ HSAudioDelay=AddHScaler( HSAudioDelayadj,hbox8,2 );
+ label=AddLabel( MSGTR_PREFERENCES_Audio,NULL );
+ gtk_notebook_set_tab_label( GTK_NOTEBOOK( notebook1 ),gtk_notebook_get_nth_page( GTK_NOTEBOOK( notebook1 ),0 ),label );
+
+// --- 2. page
+
+ hbox2=AddVBox( notebook1,0 );
+
+ vbox4=AddVBox(
+ AddFrame( NULL,GTK_SHADOW_NONE,
+ AddFrame( NULL,GTK_SHADOW_ETCHED_OUT,hbox2,1 ),1 ),0 );
+
+ scrolledwindow2=gtk_scrolled_window_new( NULL,NULL );
+ gtk_widget_set_name( scrolledwindow2,"scrolledwindow2" );
+ gtk_widget_show( scrolledwindow2 );
+ gtk_box_pack_start( GTK_BOX( vbox4 ),scrolledwindow2,TRUE,TRUE,0 );
+ gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scrolledwindow2 ),GTK_POLICY_NEVER,GTK_POLICY_AUTOMATIC );
+
+ CLVDrivers=gtk_clist_new( 2 );
+ gtk_widget_set_name( CLVDrivers,"CLVDrivers" );
+ gtk_widget_show( CLVDrivers );
+ gtk_container_add( GTK_CONTAINER( scrolledwindow2 ),CLVDrivers );
+ gtk_clist_set_column_width( GTK_CLIST( CLVDrivers ),0,50 );
+ gtk_clist_column_titles_show( GTK_CLIST( CLVDrivers ) );
+ gtk_clist_set_shadow_type( GTK_CLIST( CLVDrivers ),GTK_SHADOW_NONE );
+ gtk_widget_set_usize( CLVDrivers,250,-2 );
+
+ label=AddLabel( MSGTR_PREFERENCES_AvailableDrivers,NULL );
+ gtk_clist_set_column_widget( GTK_CLIST( CLVDrivers ),0,label );
+
+ hbuttonbox3=AddHButtonBox( vbox4 );
+ VConfig=AddButton( MSGTR_ConfigDriver,hbuttonbox3 );
+
+ vbox5=AddVBox(
+ AddFrame( NULL,GTK_SHADOW_NONE,
+ AddFrame( NULL,GTK_SHADOW_ETCHED_OUT,hbox2,0 ),1 ),0 );
+ gtk_widget_set_usize( vbox5,250,-2 );
+
+ CBDoubleBuffer=AddCheckButton( MSGTR_PREFERENCES_DoubleBuffer,vbox5 );
+ CBDR=AddCheckButton( MSGTR_PREFERENCES_DirectRender,vbox5 );
+ CBFramedrop=AddCheckButton( MSGTR_PREFERENCES_FrameDrop,vbox5 );
+ CBHFramedrop=AddCheckButton( MSGTR_PREFERENCES_HFrameDrop,vbox5 );
+ CBFlip=AddCheckButton( MSGTR_PREFERENCES_Flip,vbox5 );
+
+ table1=gtk_table_new( 3,2,FALSE );
+ gtk_widget_set_name( table1,"table1" );
+ gtk_widget_show( table1 );
+ gtk_box_pack_start( GTK_BOX( vbox5 ),table1,FALSE,FALSE,0 );
+
+ label=AddLabel( MSGTR_PREFERENCES_Panscan,NULL );
+ gtk_table_attach( GTK_TABLE( table1 ),label,0,1,0,1,(GtkAttachOptions)( GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 );
+
+ label=AddLabel( MSGTR_PREFERENCES_FPS,NULL );
+ gtk_table_attach( GTK_TABLE( table1 ),label,0,1,1,2,(GtkAttachOptions)( GTK_FILL ),(GtkAttac