diff options
Diffstat (limited to 'gui/mplayer/gtk/opts.c')
-rw-r--r-- | gui/mplayer/gtk/opts.c | 1814 |
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 |