summaryrefslogtreecommitdiffstats
path: root/Gui/mplayer
diff options
context:
space:
mode:
authorpontscho <pontscho@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-07-25 20:26:38 +0000
committerpontscho <pontscho@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-07-25 20:26:38 +0000
commitb1be9a6a39d94fc1cbe00eaaa7c7425c081d0721 (patch)
tree67e25086b99bac66ff938b93dfffb24d0de693c9 /Gui/mplayer
parent9ba7dabbab413d4eab2c262589276538b1193a09 (diff)
downloadmpv-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')
-rw-r--r--Gui/mplayer/gtk/about.c2
-rw-r--r--Gui/mplayer/gtk/eq.c34
-rw-r--r--Gui/mplayer/gtk/eq.h3
-rw-r--r--Gui/mplayer/gtk/fs.c82
-rw-r--r--Gui/mplayer/gtk/fs.h3
-rw-r--r--Gui/mplayer/gtk/mb.c3
-rw-r--r--Gui/mplayer/gtk/mb.h1
-rw-r--r--Gui/mplayer/gtk/menu.c2
-rw-r--r--Gui/mplayer/gtk/opts.c2318
-rw-r--r--Gui/mplayer/gtk/opts.h16
-rw-r--r--Gui/mplayer/gtk/sb.c2
-rw-r--r--Gui/mplayer/mplayer.c24
-rw-r--r--Gui/mplayer/mw.h53
-rw-r--r--Gui/mplayer/play.c91
-rw-r--r--Gui/mplayer/play.h3
-rw-r--r--Gui/mplayer/sw.h4
-rw-r--r--Gui/mplayer/widgets.c12
17 files changed, 1768 insertions, 885 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( CBVideoEqualize