diff options
author | pontscho <pontscho@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-07-25 20:26:38 +0000 |
---|---|---|
committer | pontscho <pontscho@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-07-25 20:26:38 +0000 |
commit | b1be9a6a39d94fc1cbe00eaaa7c7425c081d0721 (patch) | |
tree | 67e25086b99bac66ff938b93dfffb24d0de693c9 /Gui/mplayer/gtk | |
parent | 9ba7dabbab413d4eab2c262589276538b1193a09 (diff) | |
download | mpv-b1be9a6a39d94fc1cbe00eaaa7c7425c081d0721.tar.bz2 mpv-b1be9a6a39d94fc1cbe00eaaa7c7425c081d0721.tar.xz |
- add preferences support (first try)
- fix some playlist bug
- fix some equ bug
- fix some redraw bug
- fix dvd playing
- fix file open dialog box
- etc.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@6795 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'Gui/mplayer/gtk')
-rw-r--r-- | Gui/mplayer/gtk/about.c | 2 | ||||
-rw-r--r-- | Gui/mplayer/gtk/eq.c | 34 | ||||
-rw-r--r-- | Gui/mplayer/gtk/eq.h | 3 | ||||
-rw-r--r-- | Gui/mplayer/gtk/fs.c | 82 | ||||
-rw-r--r-- | Gui/mplayer/gtk/fs.h | 3 | ||||
-rw-r--r-- | Gui/mplayer/gtk/mb.c | 3 | ||||
-rw-r--r-- | Gui/mplayer/gtk/mb.h | 1 | ||||
-rw-r--r-- | Gui/mplayer/gtk/menu.c | 2 | ||||
-rw-r--r-- | Gui/mplayer/gtk/opts.c | 2318 | ||||
-rw-r--r-- | Gui/mplayer/gtk/opts.h | 16 | ||||
-rw-r--r-- | Gui/mplayer/gtk/sb.c | 2 |
11 files changed, 1679 insertions, 787 deletions
diff --git a/Gui/mplayer/gtk/about.c b/Gui/mplayer/gtk/about.c index 0f2935d7ff..1ea51ac7d7 100644 --- a/Gui/mplayer/gtk/about.c +++ b/Gui/mplayer/gtk/about.c @@ -231,7 +231,7 @@ GtkWidget * create_About( void ) gtk_container_add( GTK_CONTAINER( hbuttonbox1 ),Ok ); gtk_signal_connect( GTK_OBJECT( About ),"destroy",GTK_SIGNAL_FUNC( ab_Ok_released ),0 ); - gtk_signal_connect( GTK_OBJECT( About ),"show",GTK_SIGNAL_FUNC( ab_AboutBox_show ),1 ); + gtk_signal_connect( GTK_OBJECT( About ),"show",GTK_SIGNAL_FUNC( ab_AboutBox_show ),(void *)1 ); gtk_signal_connect( GTK_OBJECT( About ),"hide",GTK_SIGNAL_FUNC( ab_AboutBox_show ),0 ); gtk_signal_connect( GTK_OBJECT( Ok ),"released",GTK_SIGNAL_FUNC( ab_Ok_released ),0 ); diff --git a/Gui/mplayer/gtk/eq.c b/Gui/mplayer/gtk/eq.c index 9294cf9a91..cc1a6f6a58 100644 --- a/Gui/mplayer/gtk/eq.c +++ b/Gui/mplayer/gtk/eq.c @@ -10,6 +10,7 @@ #include <gtk/gtk.h> #include "../../events.h" +#include "../../cfg.h" #include "../../help_mp.h" #include "../../../config.h" #include "../../../help_mp.h" @@ -21,6 +22,8 @@ #include "eq.h" +#define eqRange 5 + GtkWidget * Equalizer; static GtkWidget * Notebook; @@ -37,9 +40,6 @@ static int gtkVEquConfig = 0; // --- -int gtkEnableAudioEqualizer = 1; -int gtkEnableVideoEqualizer = 1; - char * gtkEquChannel1 = NULL; char * gtkEquChannel2 = NULL; char * gtkEquChannel3 = NULL; @@ -116,16 +116,16 @@ void ShowEqualizer( void ) VHueadj->value=(float)vo_gamma_hue; VSaturationadj->value=(float)vo_gamma_saturation; - if ( !guiIntfStruct.Playing && gtkEnableVideoEqualizer ) + if ( !guiIntfStruct.Playing || !gtkEnableVideoEqualizer ) { gtk_widget_set_sensitive( VContrast,FALSE ); gtk_widget_set_sensitive( VBrightness,FALSE ); gtk_widget_set_sensitive( VHue,FALSE ); gtk_widget_set_sensitive( VSaturation,FALSE ); } - Channel=0; + Channel=-1; eqSetBands( 0 ); - if ( !guiIntfStruct.Playing && gtkEnableAudioEqualizer ) + if ( !guiIntfStruct.Playing || !gtkEnableAudioEqualizer ) { gtk_widget_set_sensitive( ChannelsList,FALSE ); gtk_widget_set_sensitive( A3125,FALSE ); @@ -205,7 +205,7 @@ static void eqButtonReleased( GtkButton * button,gpointer user_data ) case 1: if ( gtk_notebook_get_current_page( GTK_NOTEBOOK( Notebook ) ) == 0 ) { - if ( !guiIntfStruct.Playing && !gtkEnableAudioEqualizer ) break; + if ( !guiIntfStruct.Playing || !gtkEnableAudioEqualizer ) break; gtkSet( gtkSetEqualizer,0,NULL ); eqSetBands( Channel ); } @@ -381,7 +381,7 @@ GtkWidget * create_Equalizer( void ) gtk_table_set_row_spacings( GTK_TABLE( table1 ),4 ); gtk_table_set_col_spacings( GTK_TABLE( table1 ),9 ); - A3125adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-3,3,0.5,0,0 ) ); + A3125adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-eqRange,eqRange,0.5,0,0 ) ); A3125=gtk_vscale_new( A3125adj ); gtk_widget_set_name( A3125,"A3125" ); gtk_widget_ref( A3125 ); @@ -390,7 +390,7 @@ GtkWidget * create_Equalizer( void ) gtk_table_attach( GTK_TABLE( table1 ),A3125,0,1,0,1,( GtkAttachOptions )( GTK_FILL ),( GtkAttachOptions )( GTK_EXPAND | GTK_FILL ),0,0 ); gtk_scale_set_draw_value( GTK_SCALE( A3125 ),FALSE ); - A6250adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-3,3,0.5,0,0 ) ); + A6250adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-eqRange,eqRange,0.5,0,0 ) ); A6250=gtk_vscale_new( A6250adj ); gtk_widget_set_name( A6250,"A6250" ); gtk_widget_ref( A6250 ); @@ -399,7 +399,7 @@ GtkWidget * create_Equalizer( void ) gtk_table_attach( GTK_TABLE( table1 ),A6250,1,2,0,1,( GtkAttachOptions )( GTK_FILL ),( GtkAttachOptions )( GTK_EXPAND | GTK_FILL ),0,0 ); gtk_scale_set_draw_value( GTK_SCALE( A6250 ),FALSE ); - A125adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-3,3,0.5,0,0 ) ); + A125adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-eqRange,eqRange,0.5,0,0 ) ); A125=gtk_vscale_new( A125adj ); gtk_widget_set_name( A125,"A125" ); gtk_widget_ref( A125 ); @@ -408,7 +408,7 @@ GtkWidget * create_Equalizer( void ) gtk_table_attach( GTK_TABLE( table1 ),A125,2,3,0,1,( GtkAttachOptions )( GTK_FILL ),( GtkAttachOptions )( GTK_EXPAND | GTK_FILL ),0,0 ); gtk_scale_set_draw_value( GTK_SCALE( A125 ),FALSE ); - A250adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-3,3,0.5,0,0 ) ); + A250adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-eqRange,eqRange,0.5,0,0 ) ); A250=gtk_vscale_new( A250adj ); gtk_widget_set_name( A250,"A250" ); gtk_widget_ref( A250 ); @@ -417,7 +417,7 @@ GtkWidget * create_Equalizer( void ) gtk_table_attach( GTK_TABLE( table1 ),A250,3,4,0,1,( GtkAttachOptions )( GTK_FILL ),( GtkAttachOptions )( GTK_EXPAND | GTK_FILL ),0,0 ); gtk_scale_set_draw_value( GTK_SCALE( A250 ),FALSE ); - A500adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-3,3,0.5,0,0 ) ); + A500adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-eqRange,eqRange,0.5,0,0 ) ); A500=gtk_vscale_new( A500adj ); gtk_widget_set_name( A500,"A500" ); gtk_widget_ref( A500 ); @@ -426,7 +426,7 @@ GtkWidget * create_Equalizer( void ) gtk_table_attach( GTK_TABLE( table1 ),A500,4,5,0,1,( GtkAttachOptions )( GTK_FILL ),( GtkAttachOptions )( GTK_EXPAND | GTK_FILL ),0,0 ); gtk_scale_set_draw_value( GTK_SCALE( A500 ),FALSE ); - A1000adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-3,3,0.5,0,0 ) ); + A1000adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-eqRange,eqRange,0.5,0,0 ) ); A1000=gtk_vscale_new( A1000adj ); gtk_widget_set_name( A1000,"A1000" ); gtk_widget_ref( A1000 ); @@ -435,7 +435,7 @@ GtkWidget * create_Equalizer( void ) gtk_table_attach( GTK_TABLE( table1 ),A1000,5,6,0,1,( GtkAttachOptions )( GTK_FILL ),( GtkAttachOptions )( GTK_EXPAND | GTK_FILL ),0,0 ); gtk_scale_set_draw_value( GTK_SCALE( A1000 ),FALSE ); - A2000adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-3,3,0.5,0,0 ) ); + A2000adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-eqRange,eqRange,0.5,0,0 ) ); A2000=gtk_vscale_new( A2000adj ); gtk_widget_set_name( A2000,"A2000" ); gtk_widget_ref( A2000 ); @@ -444,7 +444,7 @@ GtkWidget * create_Equalizer( void ) gtk_table_attach( GTK_TABLE( table1 ),A2000,6,7,0,1,( GtkAttachOptions )( GTK_FILL ),( GtkAttachOptions )( GTK_EXPAND | GTK_FILL ),0,0 ); gtk_scale_set_draw_value( GTK_SCALE( A2000 ),FALSE ); - A4000adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-3,3,0.5,0,0 ) ); + A4000adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-eqRange,eqRange,0.5,0,0 ) ); A4000=gtk_vscale_new( A4000adj ); gtk_widget_set_name( A4000,"A4000" ); gtk_widget_ref( A4000 ); @@ -453,7 +453,7 @@ GtkWidget * create_Equalizer( void ) gtk_table_attach( GTK_TABLE( table1 ),A4000,7,8,0,1,( GtkAttachOptions )( GTK_FILL ),( GtkAttachOptions )( GTK_EXPAND | GTK_FILL ),0,0 ); gtk_scale_set_draw_value( GTK_SCALE( A4000 ),FALSE ); - A8000adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-3,3,0.5,0,0 ) ); + A8000adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-eqRange,eqRange,0.5,0,0 ) ); A8000=gtk_vscale_new( A8000adj ); gtk_widget_set_name( A8000,"A8000" ); gtk_widget_ref( A8000 ); @@ -462,7 +462,7 @@ GtkWidget * create_Equalizer( void ) gtk_table_attach( GTK_TABLE( table1 ),A8000,8,9,0,1,( GtkAttachOptions )( GTK_FILL ),( GtkAttachOptions )( GTK_EXPAND | GTK_FILL ),0,0 ); gtk_scale_set_draw_value( GTK_SCALE( A8000 ),FALSE ); - A16000adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-3,3,0.5,0,0 ) ); + A16000adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-eqRange,eqRange,0.5,0,0 ) ); A16000=gtk_vscale_new( A16000adj ); gtk_widget_set_name( A16000,"A16000" ); gtk_widget_ref( A16000 ); diff --git a/Gui/mplayer/gtk/eq.h b/Gui/mplayer/gtk/eq.h index dd7e7aeade..883c4f8135 100644 --- a/Gui/mplayer/gtk/eq.h +++ b/Gui/mplayer/gtk/eq.h @@ -6,9 +6,6 @@ extern GtkWidget * Equalizer; -extern int gtkEnableAudioEqualizer; -extern int gtkEnableVideoEqualizer; - extern GtkWidget * create_Equalizer( void ); extern void ShowEqualizer( void ); diff --git a/Gui/mplayer/gtk/fs.c b/Gui/mplayer/gtk/fs.c index e01ab5c201..9d6c05188e 100644 --- a/Gui/mplayer/gtk/fs.c +++ b/Gui/mplayer/gtk/fs.c @@ -20,6 +20,7 @@ #include "../widgets.h" #include "fs.h" +#include "opts.h" #ifndef __linux__ #define get_current_dir_name() getcwd(NULL, PATH_MAX) @@ -76,6 +77,11 @@ char * fsAudioFileNames[fsNumberOfAudioFilterNames+1][2] = { "Audio files (*.wav,*.mp2,*.mp3)", "*.wav,*.mp2,*.mp3" }, { "All files ( * )", "*" } }; +#define fsNumberOfFontFilterNames 1 +char * fsFontFileNames[fsNumberOfFontFilterNames+1][2] = + { { "font files (*.desc)", "*.desc" }, + { "All files ( * )", "*" } }; + GtkWidget * fsFileNamesList; GtkWidget * fsFNameList; GtkWidget * fsFileSelect; @@ -120,7 +126,7 @@ void CheckDir( GtkWidget * list,char * directory ) glob( "*",0,NULL,&gg ); // glob( ".*",GLOB_NOSORT | GLOB_APPEND,NULL,&gg ); - for( i=0;i<gg.gl_pathc;i++ ) + for( i=0;(unsigned)i<gg.gl_pathc;i++ ) { stat( gg.gl_pathv[i],&fs ); if( !S_ISDIR( fs.st_mode ) ) continue; @@ -171,7 +177,7 @@ void CheckDir( GtkWidget * list,char * directory ) // glob( ".*",GLOB_NOSORT | GLOB_APPEND,NULL,&gg ); pixmap=fpixmap; mask=fmask; - for( i=0;i<gg.gl_pathc;i++ ) + for( i=0;(unsigned)i<gg.gl_pathc;i++ ) { stat( gg.gl_pathv[i],&fs ); if( S_ISDIR( fs.st_mode ) ) continue; @@ -189,26 +195,14 @@ void CheckDir( GtkWidget * list,char * directory ) gtk_widget_show( list ); } -static int FirstInit = 1; - void ShowFileSelect( int type,int modal ) { int i; + char * tmp = NULL; if ( gtkVFileSelect ) gtkActive( fsFileSelect ); else fsFileSelect=create_FileSelect(); - if ( FirstInit ) - { - fsTopList_items=g_list_append( fsTopList_items,(gchar *)get_current_dir_name() ); - if ( getenv( "HOME" ) ) fsTopList_items=g_list_append( fsTopList_items,getenv( "HOME" ) ); - fsTopList_items=g_list_append( fsTopList_items,"/home" ); - fsTopList_items=g_list_append( fsTopList_items,"/mnt" ); - fsTopList_items=g_list_append( fsTopList_items,"/" ); - FirstInit=0; - } - gtk_combo_set_popdown_strings( GTK_COMBO( fsCombo4 ),fsTopList_items ); - fsType=type; switch ( type ) { @@ -220,6 +214,7 @@ void ShowFileSelect( int type,int modal ) gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); g_list_free( fsList_items ); gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsVideoFilterNames[fsNumberOfVideoFilterNames - 1][0] ); + tmp=guiIntfStruct.Filename; break; case fsSubtitleSelector: gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_SubtitleSelect ); @@ -229,6 +224,7 @@ void ShowFileSelect( int type,int modal ) gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); g_list_free( fsList_items ); gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsSubtitleFilterNames[fsNumberOfSubtitleFilterNames - 1][0] ); + tmp=guiIntfStruct.Subtitlename; break; case fsOtherSelector: gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_OtherSelect ); @@ -238,6 +234,7 @@ void ShowFileSelect( int type,int modal ) gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); g_list_free( fsList_items ); gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsOtherFilterNames[fsNumberOfOtherFilterNames][0] ); + tmp=guiIntfStruct.Othername; break; case fsAudioSelector: gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_AudioFileSelect ); @@ -247,9 +244,46 @@ void ShowFileSelect( int type,int modal ) gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); g_list_free( fsList_items ); gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsAudioFileNames[fsNumberOfAudioFilterNames - 1][0] ); + tmp=guiIntfStruct.AudioFile; + break; + case fsFontSelector: + gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_FontSelect ); + fsList_items=NULL; + for( i=0;i<fsNumberOfFontFilterNames + 1;i++ ) + fsList_items=g_list_append( fsList_items,fsFontFileNames[i][0] ); + gtk_combo_set_popdown_strings( GTK_COMBO( List ),fsList_items ); + g_list_free( fsList_items ); + gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsFontFileNames[fsNumberOfFontFilterNames - 1][0] ); + tmp=guiIntfStruct.Fontname; break; } + + if ( tmp && tmp[0] ) + { + struct stat f; + char * dir = strdup( tmp ); + + do + { + char * c = strrchr( dir,'/' ); + stat( dir,&f ); + if ( S_ISDIR( f.st_mode ) ) break; + if ( c ) *c=0; + } while ( strrchr( dir,'/' ) ); + + if ( dir[0] ) chdir( dir ); + + free( dir ); + } + if ( fsTopList_items ) g_list_free( fsTopList_items ); fsTopList_items=NULL; + fsTopList_items=g_list_append( fsTopList_items,(gchar *)get_current_dir_name() ); + if ( getenv( "HOME" ) ) fsTopList_items=g_list_append( fsTopList_items,getenv( "HOME" ) ); + fsTopList_items=g_list_append( fsTopList_items,"/home" ); + fsTopList_items=g_list_append( fsTopList_items,"/mnt" ); + fsTopList_items=g_list_append( fsTopList_items,"/" ); + gtk_combo_set_popdown_strings( GTK_COMBO( fsCombo4 ),fsTopList_items ); + gtk_window_set_modal( GTK_WINDOW( fsFileSelect ),modal ); gtk_widget_show( fsFileSelect ); gtkVisible++; @@ -301,6 +335,11 @@ void fs_fsFilterCombo_changed( GtkEditable * editable,gpointer user_data ) if( !strcmp( str,fsAudioFileNames[i][0] ) ) { strcpy( fsFilter,fsAudioFileNames[i][1] ); break; } break; + case fsFontSelector: + for( i=0;i<fsNumberOfFontFilterNames+1;i++ ) + if( !strcmp( str,fsFontFileNames[i][0] ) ) + { strcpy( fsFilter,fsFontFileNames[i][1] ); break; } + break; default: return; } CheckDir( fsFNameList,get_current_dir_name() ); @@ -385,8 +424,8 @@ void fs_Ok_released( GtkButton * button,gpointer user_data ) guiSetDF( guiIntfStruct.Filename,fsSelectedDirectory,fsSelectedFile ); guiIntfStruct.StreamType=STREAMTYPE_FILE; guiIntfStruct.FilenameChanged=1; - if ( guiIntfStruct.AudioFile ) free( guiIntfStruct.AudioFile ); - guiIntfStruct.AudioFile=NULL; + gfree( &guiIntfStruct.AudioFile ); + gfree( &guiIntfStruct.Subtitlename ); break; case fsSubtitleSelector: guiSetDF( guiIntfStruct.Subtitlename,fsSelectedDirectory,fsSelectedFile ); @@ -398,6 +437,13 @@ void fs_Ok_released( GtkButton * button,gpointer user_data ) case fsAudioSelector: guiSetDF( guiIntfStruct.AudioFile,fsSelectedDirectory,fsSelectedFile ); break; + case fsFontSelector: + guiSetDF( guiIntfStruct.Fontname,fsSelectedDirectory,fsSelectedFile ); +#if defined( USE_OSD ) || defined( USE_SUB ) + guiLoadFont(); +#endif + if ( gtkVPreferences ) gtk_entry_set_text( GTK_ENTRY( prEFontName ),guiIntfStruct.Fontname ); + break; } HideFileSelect(); @@ -674,7 +720,7 @@ GtkWidget * create_FileSelect( void ) gtk_signal_connect( GTK_OBJECT( fsFileSelect ),"destroy",GTK_SIGNAL_FUNC( fs_fsFileSelect_destroy ),NULL ); gtk_signal_connect( GTK_OBJECT( fsFileSelect ),"key_release_event",GTK_SIGNAL_FUNC( on_FileSelect_key_release_event ),NULL ); - gtk_signal_connect( GTK_OBJECT( fsFileSelect ),"show",GTK_SIGNAL_FUNC( fs_FileSelect_show ),1 ); + gtk_signal_connect( GTK_OBJECT( fsFileSelect ),"show",GTK_SIGNAL_FUNC( fs_FileSelect_show ),(void *)1 ); gtk_signal_connect( GTK_OBJECT( fsFileSelect ),"hide",GTK_SIGNAL_FUNC( fs_FileSelect_show ),0 ); gtk_signal_connect( GTK_OBJECT( fsFilterCombo ),"changed",GTK_SIGNAL_FUNC( fs_fsFilterCombo_changed ),fsFilterCombo ); diff --git a/Gui/mplayer/gtk/fs.h b/Gui/mplayer/gtk/fs.h index cb125135ba..d8a0601dc2 100644 --- a/Gui/mplayer/gtk/fs.h +++ b/Gui/mplayer/gtk/fs.h @@ -6,7 +6,8 @@ #define fsVideoSelector 0 #define fsSubtitleSelector 1 #define fsOtherSelector 2 -#define fsAudioSelector 3 +#define fsAudioSelector 3 +#define fsFontSelector 4 extern GtkWidget * fsFileSelect; diff --git a/Gui/mplayer/gtk/mb.c b/Gui/mplayer/gtk/mb.c index a416f7562b..4492cabb29 100644 --- a/Gui/mplayer/gtk/mb.c +++ b/Gui/mplayer/gtk/mb.c @@ -18,6 +18,7 @@ void ShowMessageBox( char * msg ) { if ( gtkVMessageBox ) gtkActive( MessageBox ); else MessageBox=create_MessageBox( 0 ); + gtkSetLayer( MessageBox ); if ( strlen( msg ) < 20 ) gtk_widget_set_usize( MessageBox,196,-1 ); gtkVisible++; } @@ -164,7 +165,7 @@ GtkWidget * create_MessageBox( int type ) gtk_widget_add_accelerator( Ok,"released",accel_group,GDK_Escape,0,GTK_ACCEL_VISIBLE ); gtk_signal_connect( GTK_OBJECT( MessageBox ),"destroy_event",GTK_SIGNAL_FUNC( on_Ok_released ),NULL ); - gtk_signal_connect( GTK_OBJECT( MessageBox ),"show",GTK_SIGNAL_FUNC( on_MessageBox_show ),1 ); + gtk_signal_connect( GTK_OBJECT( MessageBox ),"show",GTK_SIGNAL_FUNC( on_MessageBox_show ),(void *)1 ); gtk_signal_connect( GTK_OBJECT( MessageBox ),"hide",GTK_SIGNAL_FUNC( on_MessageBox_show ),0 ); gtk_signal_connect( GTK_OBJECT( Ok ),"released",GTK_SIGNAL_FUNC( on_Ok_released ),NULL ); diff --git a/Gui/mplayer/gtk/mb.h b/Gui/mplayer/gtk/mb.h index 8cd18c12d1..1647c6e539 100644 --- a/Gui/mplayer/gtk/mb.h +++ b/Gui/mplayer/gtk/mb.h @@ -6,6 +6,7 @@ extern GtkWidget * gtkMessageBoxText; extern GtkWidget * MessageBox; +extern int gtkVMessageBox; extern GtkWidget * create_MessageBox( int type ); extern void ShowMessageBox( char * msg ); diff --git a/Gui/mplayer/gtk/menu.c b/Gui/mplayer/gtk/menu.c index 1fff9d2625..5bd878b561 100644 --- a/Gui/mplayer/gtk/menu.c +++ b/Gui/mplayer/gtk/menu.c @@ -321,7 +321,7 @@ GtkWidget * create_PopUpMenu( void ) #ifdef USE_DVDREAD DVDSubMenu=AddSubMenu( Menu,MSGTR_MENU_DVD ); AddMenuItem( DVDSubMenu,MSGTR_MENU_PlayDisc" ", evPlayDVD ); - AddMenuItem( DVDSubMenu,MSGTR_MENU_ShowDVDMenu, evNone ); +// AddMenuItem( DVDSubMenu,MSGTR_MENU_ShowDVDMenu, evNone ); AddSeparator( DVDSubMenu ); DVDTitleMenu=AddSubMenu( DVDSubMenu,MSGTR_MENU_Titles ); if ( guiIntfStruct.DVD.titles ) diff --git a/Gui/mplayer/gtk/opts.c b/Gui/mplayer/gtk/opts.c index 957247044d..cf8fa11dfb 100644 --- a/Gui/mplayer/gtk/opts.c +++ b/Gui/mplayer/gtk/opts.c @@ -1,792 +1,1630 @@ -#include <stdlib.h> -#include <stdio.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h> +#include <string.h> -#include "../mplayer.h" +#include <gdk/gdkkeysyms.h> +#include <gtk/gtk.h> -#include "../../events.h" #include "../../../config.h" #include "../../../help_mp.h" - +#include "../../../mixer.h" +#include "../../../libao2/audio_out.h" +#include "../../../libvo/video_out.h" +#include "../../cfg.h" +#include "../../interface.h" #include "../widgets.h" #include "opts.h" - -GtkWidget * opAudioFrameLabel; -GtkWidget * opAudioLabel; -GtkWidget * opAudioDriverMenu; -GtkWidget * opDelayLabel; -GtkWidget * opAudioDelaySkinButton; -GtkWidget * opAudioConfigureButton; -GtkWidget * OpVideoFrameLabel; -GtkWidget * opVideoLabel; -GtkWidget * opVideoMenu; -GtkWidget * opOsdCheckButton; -GtkWidget * opVideoConfButton; -GtkWidget * opOSDLabel; -GtkWidget * opOSDLevelSpinButton; -GtkWidget * opAutoFullscreenCheckBox; -GtkWidget * opOk; -GtkWidget * opCancel; - -int opShift = 0; - -void HideOptions( void ) -{ gtk_widget_destroy( Options ); } - -gboolean on_window2_key_press_event( GtkWidget * widget,GdkEventKey * event,gpointer user_data ) +#include "fs.h" + + GtkWidget * Preferences; +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; +static GtkWidget * EVFM; + +static GtkWidget * CBVFM; +static GtkWidget * CBAudioEqualizer; +static GtkWidget * CBVideoEqualizer; +//static GtkWidget * CBSurround; +static GtkWidget * CBExtraStereo; +static GtkWidget * CBNoSound; +static GtkWidget * CBNormalize; +static GtkWidget * CBDoubleBuffer; +static GtkWidget * CBDR; +static GtkWidget * CBFramedrop; +static GtkWidget * CBHFramedrop; +//static GtkWidget * CBFullScreen; +static GtkWidget * CBNonInterlaved; +static GtkWidget * CBIndex; +static GtkWidget * CBFlip; +static GtkWidget * CBNoAutoSub; +static GtkWidget * CBSubUnicode; +static GtkWidget * CBDumpMPSub; +static GtkWidget * CBDumpSrt; +static GtkWidget * CBPostprocess; + +static GtkWidget * RBOSDNone; +static GtkWidget * RBOSDTandP; +static GtkWidget * RBOSDIndicator; + +static GtkWidget * HSAudioDelay; +static GtkWidget * HSExtraStereoMul; +static GtkWidget * HSPanscan; +static GtkWidget * HSSubDelay; +static GtkWidget * HSSubPosition; +static GtkWidget * HSSubFPS; +static GtkWidget * HSFontFactor; +static GtkWidget * HSPPQuality; + +static GtkAdjustment * HSExtraStereoMuladj, * HSAudioDelayadj, * HSPanscanadj, * HSSubDelayadj; +static GtkAdjustment * HSSubPositionadj, * HSSubFPSadj, * HSFontFactoradj, * HSPPQualityadj; + +static struct { - switch ( event->keyval ) - { - case GDK_Shift_L: - case GDK_Shift_R: - opShift=1; - break; - } - return 0; -} - -gboolean on_window2_key_release_event( GtkWidget * widget,GdkEventKey * event,gpointer user_data ) + int vfm; + char * name; +} lVFM[] = +{ { -1,MSGTR_PREFERENCES_None }, + { 2,MSGTR_PREFERENCES_Codec1 }, + { 3,MSGTR_PREFERENCES_Codec2 }, + { 4,MSGTR_PREFERENCES_Codec3 }, + { 5,MSGTR_PREFERENCES_Codec4 }, + { 7,MSGTR_PREFERENCES_Codec5 }, + { 10,MSGTR_PREFERENCES_Codec6 } }; + + int gtkVPreferences = 0; +static int gtkVOSSConfig = 0; +static int old_audio_driver = 0; +static char * ao_driver[2]; +static char * vo_driver[2]; +static int old_video_driver = 0; + +void ShowOSSConfig( void ); +void HideOSSConfig( void ); +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 ); + +extern int muted; + +void ShowPreferences( void ) { - switch ( event->keyval ) + if ( gtkVPreferences ) gtkActive( Preferences ); + else Preferences=create_Preferences(); + +// -- 1. page + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBAudioEqualizer ),gtkEnableAudioEqualizer ); + gtkAONoSound=muted; + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBNoSound ),gtkAONoSound ); +#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_adjustment_set_value( HSExtraStereoMuladj,gtkAOExtraStereoMul ); + { + int i = 0; + char * tmp[2]; tmp[1]=""; + old_audio_driver=0; + while ( audio_out_drivers[i] ) + { + const ao_info_t *info = audio_out_drivers[i++]->info; + if ( !strcmp( info->short_name,"plugin" ) ) continue; + if ( gtkAODriver ) + if ( !strcmp( gtkAODriver,info->short_name ) ) old_audio_driver=i - 1; + tmp[0]=(char *)info->name; gtk_clist_append( GTK_CLIST( CLADrivers ),tmp ); + } + 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 ( !strcmp( ao_driver[0],"OSS/ioctl audio output" ) ) gtk_widget_set_sensitive( AConfig,TRUE ); + } + +// -- 2. page + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBVideoEqualizer ),gtkEnableVideoEqualizer ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBDoubleBuffer ),gtkVODoubleBuffer ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBDR ),gtkVODirectRendering ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBFramedrop ),gtkVFrameDrop ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBHFramedrop ),gtkVHardFrameDrop ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBFlip ),gtkVFlip ); + gtk_adjustment_set_value( HSPanscanadj,vo_panscan ); + { + int i = 0, c = 0; + char * tmp[2]; tmp[1]=""; + old_video_driver=0; + while ( video_out_drivers[i] ) + if ( video_out_drivers[i++]->control( VOCTRL_GUISUPPORT,NULL ) == VO_TRUE ) + { + const vo_info_t *info = video_out_drivers[i - 1]->get_info(); + if ( gtkVODriver ) + if ( !strcmp( gtkVODriver,info->short_name ) ) old_video_driver=c; c++; + tmp[0]=(char *)info->short_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 ); + } + +// -- 3. page + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBNoAutoSub ),!gtkSubAuto ); + 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 ),gtkSubUnicode ); + gtk_adjustment_set_value( HSSubDelayadj,gtkSubDelay ); + gtk_adjustment_set_value( HSSubFPSadj,gtkSubFPS ); + gtk_adjustment_set_value( HSSubPositionadj,gtkSubPos ); + gtk_adjustment_set_value( HSFontFactoradj,gtkSubFFactor ); + switch ( osd_level ) { - case GDK_Escape: - case GDK_Return: - if ( !opShift ) HideOptions(); - break; - case GDK_Tab: -// if ( sbShift ) -// { if ( (--sbItemsListCounter) < 0 ) sbItemsListCounter=2; } -// else -// { if ( (++sbItemsListCounter) > 2 ) sbItemsListCounter=0; } -// gtk_widget_grab_focus( sbItemsList[sbItemsListCounter] ); - break; - case GDK_Shift_L: - case GDK_Shift_R: - opShift=0; - break; + 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; } - return FALSE; -} - -gboolean on_window2_destroy_event( GtkWidget * widget,GdkEvent * event,gpointer user_data) -{ - HideOptions(); - return FALSE; -} - -void on_opAudioDriverMenu_released( GtkButton * button,gpointer user_data ) -{ -} - -void on_opAudioDelaySkinButton_changed( GtkEditable * editable,gpointer user_data ) -{ +#if 0 + if ( guiIntfStruct.Subtitlename ) gtk_entry_set_text( GTK_ENTRY( ESubtitleName ),guiIntfStruct.Subtitlename ); +#endif + if ( guiIntfStruct.Fontname ) gtk_entry_set_text( GTK_ENTRY( prEFontName ),guiIntfStruct.Fontname ); + +// -- 4. page + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBNonInterlaved ),gtkVNIAVI ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBIndex ),gtkVIndex ); + gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( CBPostprocess ),gtkVPP ); + gtk_adjustment_set_value( HSPPQualityadj,gtkVAutoq ); + { + int i = 0; + for ( i=0;i<7;i++ ) + if ( lVFM[i].vfm == gtkVVFM ) break; + gtk_entry_set_text( GTK_ENTRY( EVFM ),lVFM[i].name ); + } + +// -- disables +#ifndef USE_SUB + gtk_widget_set_sensitive( AConfig,FALSE ); + gtk_widget_set_sensitive( CBNoAutoSub,FALSE ); + gtk_widget_set_sensitive( CBSubUnicode,FALSE ); + gtk_widget_set_sensitive( CBDumpMPSub,FALSE ); + gtk_widget_set_sensitive( CBDumpSrt,FALSE ); + gtk_widget_set_sensitive( HSSubDelay,FALSE ); + gtk_widget_set_sensitive( HSSubPosition,FALSE ); + gtk_widget_set_sensitive( HSSubFPS,FALSE ); +#endif + +#ifndef USE_OSD + gtk_widget_set_sensitive( RBOSDNone,FALSE ); + gtk_widget_set_sensitive( RBOSDTandP,FALSE ); + gtk_widget_set_sensitive( RBOSDIndicator,FALSE ); +#endif + +#if !defined( USE_OSD ) && !defined( USE_SUB ) + gtk_widget_set_sensitive( HSFontFactor,FALSE ); + gtk_widget_set_sensitive( prEFontName,FALSE ); + gtk_widget_set_sensitive( BLoadFont,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( CBAudioEqualizer ),"toggled",GTK_SIGNAL_FUNC( prToggled ),(void*)2 ); + gtk_signal_connect( GTK_OBJECT( CBNoSound ),"toggled",GTK_SIGNAL_FUNC( prToggled ),(void*)3 ); + + 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 ); + gtk_signal_connect( GTK_OBJECT( HSFontFactor ),"motion_notify_event",GTK_SIGNAL_FUNC( prHScaler ),(void*)5 ); + + 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 ); + + gtkVPreferences=1; gtkVisible++; + gtk_widget_show( Preferences ); + gtkSetLayer( Preferences ); + gtkMessageBox( GTK_MB_WARNING,MSGTR_PREFERENCES_Message ); } -void on_opAudioDelaySkinButton_move_to_column( GtkEditable * editable,gint column,gpointer user_data ) +void HidePreferences( void ) { + if ( !gtkVPreferences ) return; + gtkVPreferences=0; gtkVisible--; + gtk_widget_hide( Preferences ); gtk_widget_destroy( Preferences ); + HideOSSConfig(); } -void on_opAudioDelaySkinButton_move_to_row( GtkEditable * editable,gint row,gpointer user_data ) -{ -} +static void prDestroy( GtkObject * object,gpointer user_data ) +{ HidePreferences(); } -void on_opAudioConfigureButton_released( GtkButton * button,gpointer user_data ) -{ -} +static void prShow( GtkWidget * widget,gpointer user_data ) +{ gtkVPreferences=(int)user_data; } -void on_opVideoMenu_released( GtkButton * button,gpointer user_data ) -{ - fprintf( stderr,"[opts] data: %s\n",(char *)user_data ); -} +#define bAConfig 0 +#define bVconfig 1 +#define bOk 2 +#define bCancel 3 +#define bLSubtitle 4 +#define bLFont 5 -void on_opVideoMenu_pressed( GtkButton * button,gpointer user_data ) +void prButton( GtkButton * button,gpointer user_data ) { - fprintf( stderr,"[opts] data: %s\n",(char *)user_data ); -} - -void on_opVideoMenu_clicked( GtkButton * button,gpointer user_data) -{ - fprintf( stderr,"[opts] data(2): %s\n",(char *)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 ) ); + gtkAONoSound=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBNoSound ) ); + gtkSet( gtkSetExtraStereo,HSExtraStereoMuladj->value,NULL ); + gtkSet( gtkSetAudioDelay,HSAudioDelayadj->value,NULL ); + { + int i = 0; + while ( audio_out_drivers[i] ) + { + const ao_info_t *info = audio_out_drivers[i++]->info; + if ( !strcmp( info->short_name,"plugin" ) ) continue; + if ( !strcmp( info->name,ao_driver[0] ) ) gtkAODriver=(char *)info->short_name; + } + } + if ( gtkVODriver ) free( gtkVODriver ); + gtkVODriver=strdup( vo_driver[0] ); + + // -- 2. page + gtkEnableVideoEqualizer=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBVideoEqualizer ) ); + gtkVODoubleBuffer=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBDoubleBuffer ) ); + gtkVODirectRendering=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBDR ) ); + gtkVFrameDrop=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBFramedrop ) ); + gtkVHardFrameDrop=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBHFramedrop ) ); + gtkVFlip=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBFlip ) ); + + // -- 3. page + gtkSet( gtkSetSubAuto,!gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBNoAutoSub ) ),NULL ); + gtkSubDumpMPSub=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBDumpMPSub ) ); + gtkSubDumpSrt=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBDumpSrt ) ); + gtkSubUnicode=gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( CBSubUnicode ) ); + gtkSet( gtkSetSubDelay,HSSubDelayadj->value,NULL ); + gtkSet( gtkSetSubFPS,HSSubFPSadj->value,NULL ); + gtkSet( gtkSetSubPos,HSSubPositionadj->value,NULL ); + gtkSet( gtkSetFontFactor,HSFontFactoradj->value,NULL ); + if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( RBOSDNone ) ) ) osd_level=0; + if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( RBOSDInd |