summaryrefslogtreecommitdiffstats
path: root/Gui
diff options
context:
space:
mode:
authorpontscho <pontscho@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-11-29 00:58:25 +0000
committerpontscho <pontscho@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-11-29 00:58:25 +0000
commit73d2051d619873011f0c6e053ae6b2e8bcc96c7b (patch)
tree0b5db480b97c2df05d0432a1b349fab65f089619 /Gui
parent4984919e0b81198fd38b5114797c2025cfb5a013 (diff)
downloadmpv-73d2051d619873011f0c6e053ae6b2e8bcc96c7b.tar.bz2
mpv-73d2051d619873011f0c6e053ae6b2e8bcc96c7b.tar.xz
- audio track handling in menu (idea from RĂ¼diger Kuhlmann)
- some userfriendly changes in menu git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8313 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'Gui')
-rw-r--r--Gui/app.c3
-rw-r--r--Gui/app.h3
-rw-r--r--Gui/interface.c3
-rw-r--r--Gui/interface.h2
-rw-r--r--Gui/mplayer/gtk/menu.c38
-rw-r--r--Gui/mplayer/mw.c7
6 files changed, 42 insertions, 14 deletions
diff --git a/Gui/app.c b/Gui/app.c
index 9569c76ffe..bb17908de4 100644
--- a/Gui/app.c
+++ b/Gui/app.c
@@ -62,7 +62,8 @@ evName evNames[] =
{ evSetURL, "evSetURL" },
{ evLoadAudioFile, "evLoadAudioFile" },
{ evDropSubtitle, "evDropSubtitle" },
- { evSetAspect, "evSetAspect" }
+ { evSetAspect, "evSetAspect" },
+ { evSetAudio, "evSetAudio" }
};
int evBoxs = sizeof( evNames ) / sizeof( evName );
diff --git a/Gui/app.h b/Gui/app.h
index c2c792fcc6..38a4a6c29f 100644
--- a/Gui/app.h
+++ b/Gui/app.h
@@ -57,7 +57,8 @@
#define evPlayNetwork 41
#define evLoadAudioFile 42
#define evSetAspect 44
-// 45 ...
+#define evSetAudio 45
+// 46 ...
#define evExit 1000
diff --git a/Gui/interface.c b/Gui/interface.c
index 3bf2ef7aef..a12fcbd383 100644
--- a/Gui/interface.c
+++ b/Gui/interface.c
@@ -454,6 +454,9 @@ int guiGetEvent( int type,char * arg )
case guiReDrawSubWindow:
wsPostRedisplay( &appMPlayer.subWindow );
break;
+ case guiSetDemuxer:
+ guiIntfStruct.demuxer=(void *)arg;
+ break;
case guiSetShVideo:
{
if ( !appMPlayer.subWindow.isFullScreen )
diff --git a/Gui/interface.h b/Gui/interface.h
index d16a86d618..83318e1566 100644
--- a/Gui/interface.h
+++ b/Gui/interface.h
@@ -59,6 +59,7 @@ typedef struct
guiUnknowErrorStruct error;
void * sh_video;
+ void * demuxer;
void * event_struct;
int DiskChanged;
@@ -123,6 +124,7 @@ extern guiInterface_t guiIntfStruct;
#define guiSetDefaults 12
#define guiSetValues 13
#define guiSetFileFormat 14
+#define guiSetDemuxer 15
#define guiSetStop 0
#define guiSetPlay 1
diff --git a/Gui/mplayer/gtk/menu.c b/Gui/mplayer/gtk/menu.c
index 6e69682418..b2ed3461a9 100644
--- a/Gui/mplayer/gtk/menu.c
+++ b/Gui/mplayer/gtk/menu.c
@@ -14,6 +14,8 @@
#include "../widgets.h"
#include "../app.h"
+#include "../../../libmpdemux/demuxer.h"
+
void ActivateMenuItem( int Item )
{
// fprintf( stderr,"[menu] item: %d.%d\n",Item&0xffff,Item>>16 );
@@ -411,11 +413,29 @@ GtkWidget * create_PopUpMenu( void )
gtk_widget_set_sensitive( MenuItem,FALSE );
}
#endif
- AspectMenu=AddSubMenu( Menu,MSGTR_MENU_AspectRatio );
- AddMenuItem( AspectMenu,MSGTR_MENU_Original,( 1 << 16 ) + evSetAspect );
- AddMenuItem( AspectMenu,"16:9",( 2 << 16 ) + evSetAspect );
- AddMenuItem( AspectMenu,"4:3",( 3 << 16 ) + evSetAspect );
- AddMenuItem( AspectMenu,"2.35",( 4 << 16 ) + evSetAspect );
+
+ if ( guiIntfStruct.Playing )
+ {
+ AspectMenu=AddSubMenu( Menu,MSGTR_MENU_AspectRatio );
+ AddMenuItem( AspectMenu,MSGTR_MENU_Original,( 1 << 16 ) + evSetAspect );
+ AddMenuItem( AspectMenu,"16:9",( 2 << 16 ) + evSetAspect );
+ AddMenuItem( AspectMenu,"4:3",( 3 << 16 ) + evSetAspect );
+ AddMenuItem( AspectMenu,"2.35",( 4 << 16 ) + evSetAspect );
+ }
+
+ if ( guiIntfStruct.demuxer )
+ {
+ int i,c = 0;
+
+ for ( i=0;i < MAX_A_STREAMS;i++ )
+ if ( ((demuxer_t *)guiIntfStruct.demuxer)->a_streams[i] )
+ {
+ char tmp[32];
+ snprintf( tmp,32,"Track %d",i );
+ if ( !c ) { SubMenu=AddSubMenu( Menu, "Audio track" ); c=1; }
+ AddMenuItem( SubMenu,tmp,( i << 16 ) + evSetAudio );
+ }
+ }
AddSeparator( Menu );
MenuItem=AddMenuCheckItem( Menu,MSGTR_MENU_Mute,muted,evMute );
@@ -424,11 +444,11 @@ GtkWidget * create_PopUpMenu( void )
AddMenuItem( Menu,MSGTR_MENU_SkinBrowser, evSkinBrowser );
AddMenuItem( Menu,MSGTR_MENU_Preferences, evPreferences );
AddMenuItem( Menu,MSGTR_Equalizer, evEqualizer );
- AddSeparator( Menu );
if ( guiIntfStruct.NoWindow == False )
{
int b1 = 0, b2 = 0;
+ AddSeparator( Menu );
if ( !appMPlayer.subWindow.isFullScreen && guiIntfStruct.Playing )
{
if ( ( appMPlayer.subWindow.Width == guiIntfStruct.MovieWidth * 2 )&&
@@ -439,12 +459,6 @@ GtkWidget * create_PopUpMenu( void )
AddMenuCheckItem( Menu,MSGTR_MENU_DoubleSize,b2,evDoubleSize );
AddMenuCheckItem( Menu,MSGTR_MENU_FullScreen,appMPlayer.subWindow.isFullScreen,evFullScreen );
}
- else
- {
- MenuItem=AddMenuCheckItem( Menu,MSGTR_MENU_NormalSize" ",0,evNormalSize ); gtk_widget_set_sensitive( MenuItem,FALSE );
- MenuItem=AddMenuCheckItem( Menu,MSGTR_MENU_DoubleSize,0,evDoubleSize ); gtk_widget_set_sensitive( MenuItem,FALSE );
- MenuItem=AddMenuCheckItem( Menu,MSGTR_MENU_FullScreen,0,evFullScreen ); gtk_widget_set_sensitive( MenuItem,FALSE );
- }
AddSeparator( Menu );
AddMenuItem( Menu,MSGTR_MENU_Exit, evExit );
diff --git a/Gui/mplayer/mw.c b/Gui/mplayer/mw.c
index fc665761a2..9d69a8d106 100644
--- a/Gui/mplayer/mw.c
+++ b/Gui/mplayer/mw.c
@@ -270,6 +270,13 @@ void mplEventHandling( int msg,float param )
case evSetURL:
gtkShow( evPlayNetwork,NULL );
break;
+
+ case evSetAudio:
+ if ( !guiIntfStruct.demuxer ) break;
+ audio_id=(int)param;
+ if ( guiIntfStruct.StreamType == STREAMTYPE_DVD ) goto play;
+ guiIntfStruct.FilenameChanged=1;
+ break;
#ifdef HAVE_VCD
case evSetVCDTrack: