changeset 6651:8f49c75a2824

- add icon (nice, but very ugly hakk:) - move all window to one group - better multilanguage support - some small bug fixed - some warning fixed - swap the two menu - fix small network playing bug ( evPlay instead of evPlayNetwork :) - add channel name selection for equalizer support
author pontscho
date Fri, 05 Jul 2002 23:47:00 +0000
parents 345958ed44e5
children f5942acbb873
files Gui/interface.c Gui/mplayer/gtk/about.c Gui/mplayer/gtk/eq.c Gui/mplayer/gtk/fs.c Gui/mplayer/gtk/mb.c Gui/mplayer/gtk/menu.c Gui/mplayer/gtk/sb.c Gui/mplayer/gtk/url.c Gui/mplayer/mplayer.c Gui/mplayer/mw.h Gui/mplayer/pixmaps/MPlayer_mini.xpm Gui/mplayer/sw.h Gui/mplayer/widgets.c Gui/mplayer/widgets.h Gui/wm/ws.c Gui/wm/ws.h help_mp-en.h help_mp-hu.h libmpdemux/open.c libmpdemux/stream.h
diffstat 20 files changed, 668 insertions(+), 104 deletions(-) [+]
line wrap: on
line diff
--- a/Gui/interface.c	Fri Jul 05 15:38:56 2002 +0000
+++ b/Gui/interface.c	Fri Jul 05 23:47:00 2002 +0000
@@ -237,12 +237,14 @@
 #if defined( HAVE_VCD ) || defined( USE_DVDREAD )
         if ( guiIntfStruct.DiskChanged )
           {
+/*
 #ifdef USE_DVDREAD
            switch ( guiIntfStruct.StreamType )
             {
              case STREAMTYPE_DVD: filename=DEFAULT_DVD_DEVICE; break;
             }
 #endif
+*/
            guiIntfStruct.DiskChanged=0;
 	   guiGetEvent( guiCEvent,(char *)guiSetPlay );
 	  }
--- a/Gui/mplayer/gtk/about.c	Fri Jul 05 15:38:56 2002 +0000
+++ b/Gui/mplayer/gtk/about.c	Fri Jul 05 23:47:00 2002 +0000
@@ -57,6 +57,10 @@
   gtk_window_set_title( GTK_WINDOW( About ),MSGTR_About );
   gtk_window_set_position( GTK_WINDOW( About ),GTK_WIN_POS_CENTER );
   gtk_window_set_policy( GTK_WINDOW( About ),TRUE,FALSE,FALSE );
+  gtk_window_set_wmclass( GTK_WINDOW( About ),MSGTR_About,"MPlayer" );
+
+  gtk_widget_realize( About );
+  gtkAddIcon( About );
 
   frame1=gtk_frame_new( NULL );
   gtk_widget_set_name( frame1,"frame1" );
--- a/Gui/mplayer/gtk/eq.c	Fri Jul 05 15:38:56 2002 +0000
+++ b/Gui/mplayer/gtk/eq.c	Fri Jul 05 23:47:00 2002 +0000
@@ -10,6 +10,7 @@
 #include <gtk/gtk.h>
 
 #include "../../events.h"
+#include "../../help_mp.h"
 #include "../../../config.h"
 #include "../../../help_mp.h"
 #include "../../../mplayer.h"
@@ -25,16 +26,31 @@
 static GtkWidget * ChannelsList;
 static GtkWidget * VContrast, * VBrightness, * VHue, * VSaturation;
 static GtkAdjustment * VContrastadj, * VBrightnessadj, * VHueadj, * VSaturationadj;
-static GtkWidget * Ok, * Clear;
+static GtkWidget * Ok, * Clear, * Config;
 static GtkWidget * A3125,  * A125, * A6250, * A250, * A500, * A1000, * A2000, * A4000, * A8000, * A16000;
 static GtkAdjustment * A3125adj, * A125adj, * A6250adj, * A250adj, * A500adj, * A1000adj, * A2000adj, * A4000adj, * A8000adj, * A16000adj;
 
 static int Channel = -1;
 static int gtkVEqualizer = 0;
+static int gtkVEquConfig = 0;
+
+// ---
 
 int gtkEnableAudioEqualizer = 1;
 int gtkEnableVideoEqualizer = 1;
 
+char * gtkEquChannel1 = NULL;
+char * gtkEquChannel2 = NULL;
+char * gtkEquChannel3 = NULL;
+char * gtkEquChannel4 = NULL;
+char * gtkEquChannel5 = NULL;
+char * gtkEquChannel6 = NULL;
+
+// ---
+
+void ShowEquConfig( void );
+void HideEquConfig( void );
+
 static void eqSetBands( int channel )
 {
  if ( channel < 0 ) channel=0;
@@ -54,69 +70,85 @@
  gtk_adjustment_set_value( VSaturationadj,gtkSaturation );
 }
 
+static void eqSetChannelNames( void )
+{
+ gchar * str[2];
+ gtk_clist_clear( GTK_CLIST( ChannelsList ) );
+ str[1]="";
+ str[0]=MSGTR_EQU_All;
+ gtk_clist_append( GTK_CLIST( ChannelsList ) ,str);
+ if ( guiIntfStruct.AudioType > 1 )
+  {
+   str[0]=gtkEquChannel1; gtk_clist_append( GTK_CLIST( ChannelsList ) ,str);
+   str[0]=gtkEquChannel2; gtk_clist_append( GTK_CLIST( ChannelsList ) ,str);
+  }
+ if ( guiIntfStruct.AudioType > 2 )
+  {
+   str[0]=gtkEquChannel3; gtk_clist_append( GTK_CLIST( ChannelsList ) ,str);
+   str[0]=gtkEquChannel4; gtk_clist_append( GTK_CLIST( ChannelsList ) ,str);
+  }
+ if ( guiIntfStruct.AudioType > 4 )
+  {
+   str[0]=gtkEquChannel5; gtk_clist_append( GTK_CLIST( ChannelsList ) ,str);
+   str[0]=gtkEquChannel6; gtk_clist_append( GTK_CLIST( ChannelsList ) ,str);
+  }
+ gtk_clist_select_row( GTK_CLIST( ChannelsList ),1,0 );
+}
+
 void ShowEqualizer( void )
 {
  if ( gtkVEqualizer ) gtkActive( Equalizer );
     else Equalizer=create_Equalizer();
 
-  {
-   gchar * str[2];  str[1]="";
-   str[0]="All"; gtk_clist_append( GTK_CLIST( ChannelsList ) ,str);
-   if ( guiIntfStruct.AudioType > 1 )
-    {
-     str[0]="Front Right"; gtk_clist_append( GTK_CLIST( ChannelsList ) ,str);
-     str[0]="Front Left"; gtk_clist_append( GTK_CLIST( ChannelsList ) ,str);
-    }
-   if ( guiIntfStruct.AudioType > 2 )
-    {
-     str[0]="Channel 3. (Back Right?)"; gtk_clist_append( GTK_CLIST( ChannelsList ) ,str);
-     str[0]="Channel 4. (Back Left?)"; gtk_clist_append( GTK_CLIST( ChannelsList ) ,str);
-    }
-   if ( guiIntfStruct.AudioType > 4 )
-    {
-     str[0]="Channel 5. (?)"; gtk_clist_append( GTK_CLIST( ChannelsList ) ,str);
-     str[0]="Channel 6. (?)"; gtk_clist_append( GTK_CLIST( ChannelsList ) ,str);
-    }
-   gtk_clist_select_row( GTK_CLIST( ChannelsList ),1,0 );
+ if ( !gtkEquChannel1 ) gtkEquChannel1=strdup( MSGTR_EQU_Front_Right );
+ if ( !gtkEquChannel2 ) gtkEquChannel2=strdup( MSGTR_EQU_Front_Left );
+ if ( !gtkEquChannel3 ) gtkEquChannel3=strdup( MSGTR_EQU_Back_Right );
+ if ( !gtkEquChannel4 ) gtkEquChannel4=strdup( MSGTR_EQU_Back_Left );
+ if ( !gtkEquChannel5 ) gtkEquChannel5=strdup( MSGTR_EQU_Center );
+ if ( !gtkEquChannel6 ) gtkEquChannel6=strdup( MSGTR_EQU_Bass );
 
-   VContrastadj->value=gtkContrast;
-   VBrightnessadj->value=gtkBrightness;
-   VHueadj->value=gtkHue;
-   VSaturationadj->value=gtkSaturation;
+ eqSetChannelNames();
+
+ VContrastadj->value=gtkContrast;
+ VBrightnessadj->value=gtkBrightness;
+ VHueadj->value=gtkHue;
+ VSaturationadj->value=gtkSaturation;
 
-   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;
-   eqSetBands( 0 );
-    
-   if ( !guiIntfStruct.Playing && gtkEnableAudioEqualizer )
-    {
-     gtk_widget_set_sensitive( ChannelsList,FALSE );
-     gtk_widget_set_sensitive( A3125,FALSE );
-     gtk_widget_set_sensitive( A125,FALSE );
-     gtk_widget_set_sensitive( A6250,FALSE );
-     gtk_widget_set_sensitive( A250,FALSE );
-     gtk_widget_set_sensitive( A500,FALSE );
-     gtk_widget_set_sensitive( A1000,FALSE );
-     gtk_widget_set_sensitive( A2000,FALSE );
-     gtk_widget_set_sensitive( A4000,FALSE );
-     gtk_widget_set_sensitive( A8000,FALSE );
-     gtk_widget_set_sensitive( A16000,FALSE );
-    }
+ 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;
+ eqSetBands( 0 );
+ if ( !guiIntfStruct.Playing && gtkEnableAudioEqualizer )
+  {
+   gtk_widget_set_sensitive( ChannelsList,FALSE );
+   gtk_widget_set_sensitive( A3125,FALSE );
+   gtk_widget_set_sensitive( A125,FALSE );
+   gtk_widget_set_sensitive( A6250,FALSE );
+   gtk_widget_set_sensitive( A250,FALSE );
+   gtk_widget_set_sensitive( A500,FALSE );
+   gtk_widget_set_sensitive( A1000,FALSE );
+   gtk_widget_set_sensitive( A2000,FALSE );
+   gtk_widget_set_sensitive( A4000,FALSE );
+   gtk_widget_set_sensitive( A8000,FALSE );
+   gtk_widget_set_sensitive( A16000,FALSE );
   }
 
+ gtk_widget_show( Config );
  gtk_widget_show( Equalizer );
 }
 
 void HideEqualizer( void )
-{ gtkVEqualizer=0; gtk_widget_hide( Equalizer ); gtk_widget_destroy( Equalizer ); }
+{
+ gtkVEqualizer=0;
+ gtk_widget_hide( Equalizer );
+ gtk_widget_destroy( Equalizer );
+ if ( gtkVEquConfig ) HideEquConfig();
+}
 
 static gboolean eqHScaleMotion( GtkWidget * widget,GdkEventMotion  * event,gpointer user_data )
 {
@@ -167,19 +199,24 @@
   {
    case 0: HideEqualizer(); break;
    case 1: 
-	if ( gtk_notebook_get_current_page( Notebook ) == 0 )
+	if ( gtk_notebook_get_current_page( GTK_NOTEBOOK( Notebook ) ) == 0 )
 	 { 
+	  if ( !guiIntfStruct.Playing && !gtkEnableAudioEqualizer ) break;
 	  gtkSet( gtkSetEqualizer,0,NULL ); 
 	  eqSetBands( Channel ); 
 	 }
 	 else
 	  {
+	   if ( !guiIntfStruct.Playing && !gtkEnableVideoEqualizer ) break;
 	   gtkSet( gtkSetContrast,0.0f,NULL );
 	   gtkSet( gtkSetBrightness,0.0f,NULL );
 	   gtkSet( gtkSetHue,0.0f,NULL );
 	   gtkSet( gtkSetSaturation,0.0f,NULL );
 	  }
 	break;
+   case 2:
+	ShowEquConfig();
+	break;
   }
 }
 
@@ -203,6 +240,12 @@
   }
 }
 
+void eqNotebook( GtkNotebook * notebook,GtkNotebookPage * page,gint page_num,gpointer user_data )
+{
+ if ( page_num ) gtk_widget_hide( Config );
+   else gtk_widget_show( Config );
+}
+
 GtkWidget * create_Equalizer( void )
 {
   GtkWidget * frame1;
@@ -239,13 +282,17 @@
   accel_group=gtk_accel_group_new();
 
   Equalizer=gtk_window_new( GTK_WINDOW_DIALOG );
-  gtk_widget_set_name( Equalizer,"Equalizer" );
-  gtk_object_set_data( GTK_OBJECT( Equalizer ),"Equalizer",Equalizer );
+  gtk_widget_set_name( Equalizer,MSGTR_Equalizer );
+  gtk_object_set_data( GTK_OBJECT( Equalizer ),MSGTR_Equalizer,Equalizer );
   gtk_widget_set_usize( Equalizer,550,256 );
-  gtk_window_set_title( GTK_WINDOW( Equalizer ),"Equalizer" );
+  gtk_window_set_title( GTK_WINDOW( Equalizer ),MSGTR_Equalizer );
   gtk_window_set_position( GTK_WINDOW( Equalizer ),GTK_WIN_POS_CENTER );
   gtk_window_set_policy( GTK_WINDOW( Equalizer ),FALSE,FALSE,FALSE );
+  gtk_window_set_wmclass( GTK_WINDOW( Equalizer ),MSGTR_Equalizer,"MPlayer" );
 
+  gtk_widget_realize( Equalizer );
+  gtkAddIcon( Equalizer );
+    
   frame1=gtk_frame_new( NULL );
   gtk_widget_set_name( frame1,"frame1" );
   gtk_widget_ref( frame1 );
@@ -507,7 +554,7 @@
   gtk_table_attach( GTK_TABLE( table1 ),label12,9,10,1,2,( GtkAttachOptions )( GTK_FILL ),( GtkAttachOptions )( 0 ),0,0 );
   gtk_misc_set_alignment( GTK_MISC( label12 ),0,0.5 );
 
-  label1=gtk_label_new( "Audio" );
+  label1=gtk_label_new( MSGTR_EQU_Audio );
   gtk_widget_set_name( label1,"label1" );
   gtk_widget_ref( label1 );
   gtk_object_set_data_full( GTK_OBJECT( Equalizer ),"label1",label1,(GtkDestroyNotify)gtk_widget_unref );
@@ -528,7 +575,7 @@
   gtk_widget_show( vbox2 );
   gtk_box_pack_start( GTK_BOX( hbox2 ),vbox2,FALSE,FALSE,0 );
 
-  label13=gtk_label_new( "Contrast: " );
+  label13=gtk_label_new( MSGTR_EQU_Contrast );
   gtk_widget_set_name( label13,"label13" );
   gtk_widget_ref( label13 );
   gtk_object_set_data_full( GTK_OBJECT( Equalizer ),"label13",label13,(GtkDestroyNotify)gtk_widget_unref );
@@ -537,7 +584,7 @@
   gtk_label_set_justify( GTK_LABEL( label13 ),GTK_JUSTIFY_LEFT );
   gtk_misc_set_alignment( GTK_MISC( label13 ),0.02,0.5 );
 
-  label14=gtk_label_new( "Brightness: " );
+  label14=gtk_label_new( MSGTR_EQU_Brightness );
   gtk_widget_set_name( label14,"label14" );
   gtk_widget_ref( label14 );
   gtk_object_set_data_full( GTK_OBJECT( Equalizer ),"label14",label14,(GtkDestroyNotify)gtk_widget_unref );
@@ -546,7 +593,7 @@
   gtk_label_set_justify( GTK_LABEL( label14 ),GTK_JUSTIFY_LEFT );
   gtk_misc_set_alignment( GTK_MISC( label14 ),0.02,0.5 );
 
-  label15=gtk_label_new( "Hue: " );
+  label15=gtk_label_new( MSGTR_EQU_Hue );
   gtk_widget_set_name( label15,"label15" );
   gtk_widget_ref( label15 );
   gtk_object_set_data_full( GTK_OBJECT( Equalizer ),"label15",label15,(GtkDestroyNotify)gtk_widget_unref );
@@ -555,7 +602,7 @@
   gtk_label_set_justify( GTK_LABEL( label15 ),GTK_JUSTIFY_LEFT );
   gtk_misc_set_alignment( GTK_MISC( label15 ),0.02,0.5 );
 
-  label16=gtk_label_new( "Saturation: " );
+  label16=gtk_label_new( MSGTR_EQU_Saturation );
   gtk_widget_set_name( label16,"label16" );
   gtk_widget_ref( label16 );
   gtk_object_set_data_full( GTK_OBJECT( Equalizer ),"label16",label16,(GtkDestroyNotify)gtk_widget_unref );
@@ -607,7 +654,7 @@
   gtk_box_pack_start( GTK_BOX( vbox3 ),VSaturation,TRUE,TRUE,0 );
   gtk_scale_set_value_pos( GTK_SCALE( VSaturation ),GTK_POS_RIGHT );
 
-  label2=gtk_label_new( "Video" );
+  label2=gtk_label_new( MSGTR_EQU_Video );
   gtk_widget_set_name( label2,"label2" );
   gtk_widget_ref( label2 );
   gtk_object_set_data_full( GTK_OBJECT( Equalizer ),"label2",label2,(GtkDestroyNotify)gtk_widget_unref );
@@ -621,25 +668,28 @@
   gtk_widget_show( hbuttonbox1 );
   gtk_box_pack_end( GTK_BOX( vbox1 ),hbuttonbox1,FALSE,TRUE,0 );
   gtk_button_box_set_layout( GTK_BUTTON_BOX( hbuttonbox1 ),GTK_BUTTONBOX_END );
-  gtk_button_box_set_spacing( GTK_BUTTON_BOX( hbuttonbox1 ),0 );
+  gtk_button_box_set_spacing( GTK_BUTTON_BOX( hbuttonbox1 ),10 );
+  gtk_button_box_set_child_size( GTK_BUTTON_BOX( hbuttonbox1 ),85,20 );
 
-  Clear=gtk_button_new_with_label( "Clear" );
+  Config=gtk_button_new_with_label( MSGTR_Config );
+  gtk_widget_set_name( Config,"Config" );
+  gtk_widget_ref( Config );
+  gtk_object_set_data_full( GTK_OBJECT( Equalizer ),"Config",Config,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_container_add( GTK_CONTAINER( hbuttonbox1 ),Config );
+
+  Clear=gtk_button_new_with_label( MSGTR_Clear );
   gtk_widget_set_name( Clear,"Clear" );
   gtk_widget_ref( Clear );
   gtk_object_set_data_full( GTK_OBJECT( Equalizer ),"Clear",Clear,(GtkDestroyNotify)gtk_widget_unref );
   gtk_widget_show( Clear );
   gtk_container_add( GTK_CONTAINER( hbuttonbox1 ),Clear );
-  GTK_WIDGET_UNSET_FLAGS( Clear,GTK_CAN_FOCUS );
-  GTK_WIDGET_SET_FLAGS( Clear,GTK_CAN_DEFAULT );
 
-  Ok=gtk_button_new_with_label( "Ok" );
+  Ok=gtk_button_new_with_label( MSGTR_Ok );
   gtk_widget_set_name( Ok,"Ok" );
   gtk_widget_ref( Ok );
   gtk_object_set_data_full( GTK_OBJECT( Equalizer ),"Ok",Ok,(GtkDestroyNotify)gtk_widget_unref );
   gtk_widget_show( Ok );
   gtk_container_add( GTK_CONTAINER( hbuttonbox1 ),Ok );
-  GTK_WIDGET_UNSET_FLAGS( Ok,GTK_CAN_FOCUS );
-  GTK_WIDGET_SET_FLAGS( Ok,GTK_CAN_DEFAULT );
   gtk_widget_add_accelerator( Ok,"released",accel_group,GDK_Escape,0,GTK_ACCEL_VISIBLE );
   gtk_widget_add_accelerator( Ok,"released",accel_group,GDK_Return,0,GTK_ACCEL_VISIBLE );
 
@@ -674,9 +724,351 @@
   
   gtk_signal_connect( GTK_OBJECT( Ok ),"released",GTK_SIGNAL_FUNC( eqButtonReleased ),(void *)0 );
   gtk_signal_connect( GTK_OBJECT( Clear ),"released",GTK_SIGNAL_FUNC( eqButtonReleased ),(void *)1 );
+  gtk_signal_connect( GTK_OBJECT( Config ),"released",GTK_SIGNAL_FUNC( eqButtonReleased ),(void *)2 );
+
+  gtk_signal_connect( GTK_OBJECT( Notebook ),"switch_page",GTK_SIGNAL_FUNC( eqNotebook ),NULL );
 
   gtk_window_add_accel_group( GTK_WINDOW( Equalizer ),accel_group );
 
   return Equalizer;
 }
 
+// --- equalizer config dialog box
+
+static GtkWidget * EquConfig;
+static GtkWidget * CBChannel1;
+static GtkWidget * CEChannel1;
+static GtkWidget * CBChannel2;
+static GtkWidget * CEChannel2;
+static GtkWidget * CBChannel3;
+static GtkWidget * CEChannel3;
+static GtkWidget * CBChannel4;
+static GtkWidget * CEChannel4;
+static GtkWidget * CBChannel5;
+static GtkWidget * CEChannel5;
+static GtkWidget * CBChannel6;
+static GtkWidget * CEChannel6;
+static GtkWidget * ecOk;
+static GtkWidget * ecCancel;
+
+GtkWidget * create_EquConfig( void );
+
+void ShowEquConfig( void )
+{
+ GList * Items = NULL;
+
+ if ( gtkVEquConfig ) gtkActive( EquConfig );
+    else EquConfig=create_EquConfig();
+	
+ Items=g_list_append( Items,(gpointer)MSGTR_EQU_Front_Right  );
+ Items=g_list_append( Items,(gpointer)MSGTR_EQU_Front_Left );
+ Items=g_list_append( Items,(gpointer)MSGTR_EQU_Back_Right );
+ Items=g_list_append( Items,(gpointer)MSGTR_EQU_Back_Left );
+ Items=g_list_append( Items,(gpointer)MSGTR_EQU_Center );
+ Items=g_list_append( Items,(gpointer)MSGTR_EQU_Bass );
+ 
+ gtk_combo_set_popdown_strings( GTK_COMBO( CBChannel1 ),Items );
+ gtk_combo_set_popdown_strings( GTK_COMBO( CBChannel2 ),Items );
+ gtk_combo_set_popdown_strings( GTK_COMBO( CBChannel3 ),Items );
+ gtk_combo_set_popdown_strings( GTK_COMBO( CBChannel4 ),Items );
+ gtk_combo_set_popdown_strings( GTK_COMBO( CBChannel5 ),Items );
+ gtk_combo_set_popdown_strings( GTK_COMBO( CBChannel6 ),Items );
+
+ g_list_free( Items );
+
+ gtk_entry_set_text( GTK_ENTRY( CEChannel1 ),gtkEquChannel1 ); gtk_entry_set_editable( GTK_ENTRY( CEChannel1 ),FALSE );
+ gtk_entry_set_text( GTK_ENTRY( CEChannel2 ),gtkEquChannel2 ); gtk_entry_set_editable( GTK_ENTRY( CEChannel2 ),FALSE );
+ gtk_entry_set_text( GTK_ENTRY( CEChannel3 ),gtkEquChannel3 ); gtk_entry_set_editable( GTK_ENTRY( CEChannel3 ),FALSE );
+ gtk_entry_set_text( GTK_ENTRY( CEChannel4 ),gtkEquChannel4 ); gtk_entry_set_editable( GTK_ENTRY( CEChannel4 ),FALSE );
+ gtk_entry_set_text( GTK_ENTRY( CEChannel5 ),gtkEquChannel5 ); gtk_entry_set_editable( GTK_ENTRY( CEChannel5 ),FALSE );
+ gtk_entry_set_text( GTK_ENTRY( CEChannel6 ),gtkEquChannel6 ); gtk_entry_set_editable( GTK_ENTRY( CEChannel6 ),FALSE );
+
+ gtk_widget_show( EquConfig );
+}
+
+void HideEquConfig( void )
+{ gtk_widget_hide( EquConfig ); gtk_widget_destroy( EquConfig ); gtkVEquConfig=0; }
+
+static void ecHandler( GtkObject * object,gpointer user_data )
+{
+ switch ( (int)user_data )
+ {
+   case 0: HideEquConfig(); break;
+   case 1: gtkVEquConfig=1; break;
+   case 2: gtkVEquConfig=0; break;
+ }
+}
+
+static void ecButtonReleased( GtkButton * button,gpointer user_data )
+{
+ if ( (int)user_data )
+ { // if you pressed Ok
+  if ( gtkEquChannel1) free( gtkEquChannel1 ); gtkEquChannel1=strdup( gtk_entry_get_text( GTK_ENTRY( CEChannel1 ) ) );
+  if ( gtkEquChannel2) free( gtkEquChannel2 ); gtkEquChannel2=strdup( gtk_entry_get_text( GTK_ENTRY( CEChannel2 ) ) );
+  if ( gtkEquChannel3) free( gtkEquChannel3 ); gtkEquChannel3=strdup( gtk_entry_get_text( GTK_ENTRY( CEChannel3 ) ) );
+  if ( gtkEquChannel4) free( gtkEquChannel4 ); gtkEquChannel4=strdup( gtk_entry_get_text( GTK_ENTRY( CEChannel4 ) ) );
+  if ( gtkEquChannel5) free( gtkEquChannel5 ); gtkEquChannel5=strdup( gtk_entry_get_text( GTK_ENTRY( CEChannel5 ) ) );
+  if ( gtkEquChannel6) free( gtkEquChannel6 ); gtkEquChannel6=strdup( gtk_entry_get_text( GTK_ENTRY( CEChannel6 ) ) );
+  eqSetChannelNames();
+ }
+ HideEquConfig();
+}
+
+GtkWidget * create_EquConfig( void )
+{
+  GtkWidget * frame1;
+  GtkWidget * frame2;
+  GtkWidget * frame3;
+  GtkWidget * frame4;
+  GtkWidget * vbox1;
+  GtkWidget * table1;
+  GtkWidget * label1;
+  GtkWidget * label2;
+  GtkWidget * label3;
+  GtkWidget * label4;
+  GtkWidget * label5;
+  GtkWidget * label6;
+  GtkWidget * hseparator1;
+  GtkWidget * hbuttonbox1;
+  GtkAccelGroup * accel_group;
+
+  accel_group=gtk_accel_group_new();
+
+  EquConfig=gtk_window_new( GTK_WINDOW_DIALOG );
+  gtk_widget_set_name( EquConfig,"EquConfig" );
+  gtk_object_set_data( GTK_OBJECT( EquConfig ),"EquConfig",EquConfig );
+  gtk_widget_set_usize( EquConfig,350,198 );
+  GTK_WIDGET_SET_FLAGS( EquConfig,GTK_CAN_DEFAULT );
+  gtk_window_set_title( GTK_WINDOW( EquConfig ),"Configure Equalizer" );
+  gtk_window_set_position( GTK_WINDOW( EquConfig ),GTK_WIN_POS_CENTER );
+//  gtk_window_set_modal( GTK_WINDOW( EquConfig ),TRUE );
+  gtk_window_set_policy( GTK_WINDOW( EquConfig ),FALSE,FALSE,FALSE );
+  gtk_window_set_wmclass( GTK_WINDOW( EquConfig ),"EquConfig","MPlayer" );
+
+  gtk_widget_realize( EquConfig );
+  gtkAddIcon( EquConfig );
+
+  frame1=gtk_frame_new( NULL );
+  gtk_widget_set_name( frame1,"frame1" );
+  gtk_widget_ref( frame1 );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"frame1",frame1,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( frame1 );
+  gtk_container_add( GTK_CONTAINER( EquConfig ),frame1 );
+  gtk_container_set_border_width( GTK_CONTAINER( frame1 ),1 );
+  gtk_frame_set_shadow_type( GTK_FRAME( frame1 ),GTK_SHADOW_IN );
+
+  frame2=gtk_frame_new( NULL );
+  gtk_widget_set_name( frame2,"frame2" );
+  gtk_widget_ref( frame2 );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"frame2",frame2,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( frame2 );
+  gtk_container_add( GTK_CONTAINER( frame1 ),frame2 );
+  gtk_frame_set_shadow_type( GTK_FRAME( frame2 ),GTK_SHADOW_NONE );
+
+  frame3=gtk_frame_new( NULL );
+  gtk_widget_set_name( frame3,"frame3" );
+  gtk_widget_ref( frame3 );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"frame3",frame3,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( frame3 );
+  gtk_container_add( GTK_CONTAINER( frame2 ),frame3 );
+  gtk_frame_set_shadow_type( GTK_FRAME( frame3 ),GTK_SHADOW_ETCHED_OUT );
+
+  frame4=gtk_frame_new( NULL );
+  gtk_widget_set_name( frame4,"frame4" );
+  gtk_widget_ref( frame4 );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"frame4",frame4,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( frame4 );
+  gtk_container_add( GTK_CONTAINER( frame3 ),frame4 );
+  gtk_frame_set_shadow_type( GTK_FRAME( frame4 ),GTK_SHADOW_NONE );
+
+  vbox1=gtk_vbox_new( FALSE,0 );
+  gtk_widget_set_name( vbox1,"vbox1" );
+  gtk_widget_ref( vbox1 );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"vbox1",vbox1,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( vbox1 );
+  gtk_container_add( GTK_CONTAINER( frame4 ),vbox1 );
+
+  table1=gtk_table_new( 6,2,FALSE );
+  gtk_widget_set_name( table1,"table1" );
+  gtk_widget_ref( table1 );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"table1",table1,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( table1 );
+  gtk_box_pack_start( GTK_BOX( vbox1 ),table1,TRUE,TRUE,0 );
+  gtk_table_set_row_spacings( GTK_TABLE( table1 ),4 );
+  gtk_table_set_col_spacings( GTK_TABLE( table1 ),4 );
+
+  label1=gtk_label_new( "Channel 1:" );
+  gtk_widget_set_name( label1,"label1" );
+  gtk_widget_ref( label1 );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"label1",label1,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( label1 );
+  gtk_table_attach( GTK_TABLE( table1 ),label1,0,1,0,1,(GtkAttachOptions)( GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 );
+  gtk_misc_set_alignment( GTK_MISC( label1 ),0,0.5 );
+
+  label2=gtk_label_new( "Channel 2:" );
+  gtk_widget_set_name( label2,"label2" );
+  gtk_widget_ref( label2 );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"label2",label2,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( label2 );
+  gtk_table_attach( GTK_TABLE( table1 ),label2,0,1,1,2,(GtkAttachOptions)( GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 );
+  gtk_misc_set_alignment( GTK_MISC( label2 ),0,0.5 );
+
+  label3=gtk_label_new( "Channel 3:" );
+  gtk_widget_set_name( label3,"label3" );
+  gtk_widget_ref( label3 );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"label3",label3,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( label3 );
+  gtk_table_attach( GTK_TABLE( table1 ),label3,0,1,2,3,(GtkAttachOptions)( GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 );
+  gtk_misc_set_alignment( GTK_MISC( label3 ),0,0.5 );
+
+  label4=gtk_label_new( "Channel 4:" );
+  gtk_widget_set_name( label4,"label4" );
+  gtk_widget_ref( label4 );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"label4",label4,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( label4 );
+  gtk_table_attach( GTK_TABLE( table1 ),label4,0,1,3,4,(GtkAttachOptions)( GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 );
+  gtk_misc_set_alignment( GTK_MISC( label4 ),0,0.5 );
+
+  label5=gtk_label_new( "Channel 5:" );
+  gtk_widget_set_name( label5,"label5" );
+  gtk_widget_ref( label5 );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"label5",label5,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( label5 );
+  gtk_table_attach( GTK_TABLE( table1 ),label5,0,1,4,5,(GtkAttachOptions)( GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 );
+  gtk_misc_set_alignment( GTK_MISC( label5 ),0,0.5 );
+
+  label6=gtk_label_new( "Channel 6:" );
+  gtk_widget_set_name( label6,"label6" );
+  gtk_widget_ref( label6 );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"label6",label6,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( label6 );
+  gtk_table_attach( GTK_TABLE( table1 ),label6,0,1,5,6,(GtkAttachOptions)( GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 );
+  gtk_misc_set_alignment( GTK_MISC( label6 ),0,0.5 );
+
+  CBChannel1=gtk_combo_new();
+  gtk_widget_set_name( CBChannel1,"CBChannel1" );
+  gtk_widget_ref( CBChannel1 );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"CBChannel1",CBChannel1,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( CBChannel1 );
+  gtk_table_attach( GTK_TABLE( table1 ),CBChannel1,1,2,0,1,(GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 );
+
+  CEChannel1=GTK_COMBO( CBChannel1 )->entry;
+  gtk_widget_set_name( CEChannel1,"CEChannel1" );
+  gtk_widget_ref( CEChannel1 );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"CEChannel1",CEChannel1,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( CEChannel1 );
+
+  CBChannel2=gtk_combo_new();
+  gtk_widget_set_name( CBChannel2,"CBChannel2" );
+  gtk_widget_ref( CBChannel2 );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"CBChannel2",CBChannel2,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( CBChannel2 );
+  gtk_table_attach( GTK_TABLE( table1 ),CBChannel2,1,2,1,2,(GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 );
+  
+  CEChannel2=GTK_COMBO( CBChannel2 )->entry;
+  gtk_widget_set_name( CEChannel2,"CEChannel2" );
+  gtk_widget_ref( CEChannel2 );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"CEChannel2",CEChannel2,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( CEChannel2 );
+
+  CBChannel3=gtk_combo_new();
+  gtk_widget_set_name( CBChannel3,"CBChannel3" );
+  gtk_widget_ref( CBChannel3 );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"CBChannel3",CBChannel3,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( CBChannel3 );
+  gtk_table_attach( GTK_TABLE( table1 ),CBChannel3,1,2,2,3,(GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 );
+  
+  CEChannel3=GTK_COMBO( CBChannel3 )->entry;
+  gtk_widget_set_name( CEChannel3,"CEChannel3" );
+  gtk_widget_ref( CEChannel3 );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"CEChannel3",CEChannel3,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( CEChannel3 );
+
+  CBChannel4=gtk_combo_new();
+  gtk_widget_set_name( CBChannel4,"CBChannel4" );
+  gtk_widget_ref( CBChannel4 );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"CBChannel4",CBChannel4,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( CBChannel4 );
+  gtk_table_attach( GTK_TABLE( table1 ),CBChannel4,1,2,3,4,(GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 );
+  
+  CEChannel4=GTK_COMBO( CBChannel4 )->entry;
+  gtk_widget_set_name( CEChannel4,"CEChannel4" );
+  gtk_widget_ref( CEChannel4 );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"CEChannel4",CEChannel4,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( CEChannel4 );
+
+  CBChannel5=gtk_combo_new();
+  gtk_widget_set_name( CBChannel5,"CBChannel5" );
+  gtk_widget_ref( CBChannel5 );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"CBChannel5",CBChannel5,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( CBChannel5 );
+  gtk_table_attach( GTK_TABLE( table1 ),CBChannel5,1,2,4,5,(GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 );
+  
+  CEChannel5=GTK_COMBO( CBChannel5 )->entry;
+  gtk_widget_set_name( CEChannel5,"CEChannel5" );
+  gtk_widget_ref( CEChannel5 );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"CEChannel5",CEChannel5,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( CEChannel5 );
+
+  CBChannel6=gtk_combo_new();
+  gtk_widget_set_name( CBChannel6,"CBChannel6" );
+  gtk_widget_ref( CBChannel6 );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"CBChannel6",CBChannel6,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( CBChannel6 );
+  gtk_table_attach( GTK_TABLE( table1 ),CBChannel6,1,2,5,6,(GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 );
+  
+  CEChannel6=GTK_COMBO( CBChannel6 )->entry;
+  gtk_widget_set_name( CEChannel6,"CEChannel6" );
+  gtk_widget_ref( CEChannel6 );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"CEChannel6",CEChannel6,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( CEChannel6 );
+
+  hseparator1=gtk_hseparator_new();
+  gtk_widget_set_name( hseparator1,"hseparator1" );
+  gtk_widget_ref( hseparator1 );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"hseparator1",hseparator1,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( hseparator1 );
+  gtk_box_pack_start( GTK_BOX( vbox1 ),hseparator1,FALSE,FALSE,0 );
+  gtk_widget_set_usize( hseparator1,-2,6 );
+
+  hbuttonbox1=gtk_hbutton_box_new();
+  gtk_widget_set_name( hbuttonbox1,"hbuttonbox1" );
+  gtk_widget_ref( hbuttonbox1 );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"hbuttonbox1",hbuttonbox1,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( hbuttonbox1 );
+  gtk_box_pack_start( GTK_BOX( vbox1 ),hbuttonbox1,FALSE,FALSE,0 );
+  gtk_button_box_set_layout( GTK_BUTTON_BOX( hbuttonbox1 ),GTK_BUTTONBOX_END );
+  gtk_button_box_set_spacing( GTK_BUTTON_BOX( hbuttonbox1 ),10 );
+  gtk_button_box_set_child_size( GTK_BUTTON_BOX( hbuttonbox1 ),-1,20 );
+  gtk_button_box_set_child_ipadding( GTK_BUTTON_BOX( hbuttonbox1 ),0,-1 );
+
+  ecOk=gtk_button_new_with_label( "Ok" );
+  gtk_widget_set_name( ecOk,"Ok" );
+  gtk_widget_ref( ecOk );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"ecOk",ecOk,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( ecOk );
+  gtk_container_add( GTK_CONTAINER( hbuttonbox1 ),ecOk );
+  GTK_WIDGET_UNSET_FLAGS( ecOk,GTK_CAN_FOCUS );
+  gtk_widget_add_accelerator( ecOk,"released",accel_group,GDK_Return,0,GTK_ACCEL_VISIBLE );
+
+  ecCancel=gtk_button_new_with_label( "Cancel" );
+  gtk_widget_set_name( ecCancel,"Cancel" );
+  gtk_widget_ref( ecCancel );
+  gtk_object_set_data_full( GTK_OBJECT( EquConfig ),"ecCancel",ecCancel,(GtkDestroyNotify)gtk_widget_unref );
+  gtk_widget_show( ecCancel );
+  gtk_container_add( GTK_CONTAINER( hbuttonbox1 ),ecCancel );
+  GTK_WIDGET_UNSET_FLAGS( ecCancel,GTK_CAN_FOCUS );
+  gtk_widget_add_accelerator( ecCancel,"released",accel_group,GDK_Escape,0,GTK_ACCEL_VISIBLE );
+
+  gtk_signal_connect( GTK_OBJECT( EquConfig ),"destroy",GTK_SIGNAL_FUNC( ecHandler ),(void *)0 );
+  gtk_signal_connect( GTK_OBJECT( EquConfig ),"show",GTK_SIGNAL_FUNC( ecHandler ),(void *)1 );
+  gtk_signal_connect( GTK_OBJECT( EquConfig ),"hide",GTK_SIGNAL_FUNC( ecHandler ),(void *)2 );
+  
+  gtk_signal_connect( GTK_OBJECT( ecOk ),"released",GTK_SIGNAL_FUNC( ecButtonReleased ),(void *)1 );
+  gtk_signal_connect( GTK_OBJECT( ecCancel ),"released",GTK_SIGNAL_FUNC( ecButtonReleased ),(void *)0 );
+
+  gtk_window_add_accel_group( GTK_WINDOW( EquConfig ),accel_group );
+
+  return EquConfig;
+}
+
--- a/Gui/mplayer/gtk/fs.c	Fri Jul 05 15:38:56 2002 +0000
+++ b/Gui/mplayer/gtk/fs.c	Fri Jul 05 23:47:00 2002 +0000
@@ -474,7 +474,11 @@
  gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_FileSelect );
  gtk_window_set_position( GTK_WINDOW( fsFileSelect ),GTK_WIN_POS_CENTER );
  gtk_window_set_policy( GTK_WINDOW( fsFileSelect ),TRUE,TRUE,TRUE );
+ gtk_window_set_wmclass( GTK_WINDOW( fsFileSelect ),MSGTR_FileSelect,"MPlayer" );
  fsColorMap=gdk_colormap_get_system();
+ 
+ gtk_widget_realize( fsFileSelect );
+ gtkAddIcon( fsFileSelect );
 
  style=gtk_widget_get_style( fsFileSelect );
  dpixmap=gdk_pixmap_colormap_create_from_xpm_d( fsFileSelect->window,fsColorMap,&dmask,&style->bg[GTK_STATE_NORMAL],(gchar **)dir_xpm );
--- a/Gui/mplayer/gtk/mb.c	Fri Jul 05 15:38:56 2002 +0000
+++ b/Gui/mplayer/gtk/mb.c	Fri Jul 05 23:47:00 2002 +0000
@@ -54,6 +54,10 @@
  gtk_window_set_position( GTK_WINDOW( MessageBox ),GTK_WIN_POS_CENTER );
  gtk_window_set_modal( GTK_WINDOW( MessageBox ),TRUE );
  gtk_window_set_policy( GTK_WINDOW( MessageBox ),TRUE,TRUE,FALSE );
+ gtk_window_set_wmclass( GTK_WINDOW( MessageBox ),"Message","MPlayer" );
+ 
+ gtk_widget_realize( MessageBox );
+ gtkAddIcon( MessageBox );
 
  frame1=gtk_frame_new( NULL );
  gtk_widget_set_name( frame1,"frame1" );
--- a/Gui/mplayer/gtk/menu.c	Fri Jul 05 15:38:56 2002 +0000
+++ b/Gui/mplayer/gtk/menu.c	Fri Jul 05 23:47:00 2002 +0000
@@ -64,7 +64,7 @@
 } Languages_t;
 
 #define lng( a,b ) ( (int)(a) * 256 + b )
-Languages_t Languages[] =
+static Languages_t Languages[] =
          {
            { lng( 'a','b' ), "Abkhazian"                  },
            { lng( 'a','a' ), "Afar"                       },
@@ -240,9 +240,14 @@
          };
 #undef lng
 
+static char * ChannelTypes[] =
+	{ "Dolby Digital","","Mpeg1","Mpeg2","PCM","","Digital Theatre System" };
+static char * ChannelNumbers[] =
+	{ "","Stereo","","","","5.1" };
+
 char * GetLanguage( int language )
 {
- int i;
+ unsigned int i;
  for ( i=0;i<sizeof( Languages ) / sizeof( Languages_t );i++ )
   if ( Languages[i].id == language ) return Languages[i].name;
  return NULL;
@@ -354,7 +359,9 @@
        char tmp[64]; int i;
        for ( i=0;i < guiIntfStruct.DVD.nr_of_audio_channels;i++ )
         {
-         strcpy( tmp,GetLanguage( guiIntfStruct.DVD.audio_streams[i].language ) );
+	 snprintf( tmp,64,"%s - %s %s",GetLanguage( guiIntfStruct.DVD.audio_streams[i].language ),
+	   ChannelTypes[ guiIntfStruct.DVD.audio_streams[i].type ],
+	   ChannelNumbers[ guiIntfStruct.DVD.audio_streams[i].channels ] );
          AddMenuItem( DVDAudioLanguageMenu,tmp,( guiIntfStruct.DVD.audio_streams[i].id << 16 ) + evSetDVDAudio );
         }
       }
--- a/Gui/mplayer/gtk/sb.c	Fri Jul 05 15:38:56 2002 +0000
+++ b/Gui/mplayer/gtk/sb.c	Fri Jul 05 23:47:00 2002 +0000
@@ -145,6 +145,10 @@
  gtk_window_set_title( GTK_WINDOW( SkinBrowser ),MSGTR_SkinBrowser );
  gtk_window_set_position( GTK_WINDOW( SkinBrowser ),GTK_WIN_POS_CENTER );
  gtk_window_set_policy( GTK_WINDOW( SkinBrowser ),FALSE,FALSE,TRUE );
+ gtk_window_set_wmclass( GTK_WINDOW( SkinBrowser ),MSGTR_SkinBrowser,"MPlayer" );
+
+ gtk_widget_realize( SkinBrowser );
+ gtkAddIcon( SkinBrowser );
 
  frame5=gtk_frame_new( NULL );
  gtk_widget_set_name( frame5,"frame5" );
--- a/Gui/mplayer/gtk/url.c	Fri Jul 05 15:38:56 2002 +0000
+++ b/Gui/mplayer/gtk/url.c	Fri Jul 05 23:47:00 2002 +0000
@@ -13,6 +13,7 @@
 #include "../../interface.h"
 #include "../../events.h"
 #include "../widgets.h"
+#include "../../help_mp.h"
 
 GtkWidget * URL;
 int         gtkVURLDialogBox = 0;
@@ -67,7 +68,7 @@
      URLComboEntrys=g_list_prepend( URLComboEntrys,(gchar *)str );
 
      guiSetFilename( guiIntfStruct.Filename,str ); guiIntfStruct.FilenameChanged=1;
-     mplEventHandling( evPlay,0 );
+     mplEventHandling( evPlayNetwork,0 );
     }
   }
  HideURLDialogBox(); 
@@ -85,7 +86,7 @@
  GtkWidget * vbox1;
  GtkWidget * hbox1;
  GtkWidget * label1;
- GtkWidget * frame5;
+ GtkWidget * hsep;
  GtkWidget * hbuttonbox1;
  GtkWidget * Ok;
  GtkWidget * Cancel;
@@ -96,13 +97,15 @@
  URL=gtk_window_new( GTK_WINDOW_DIALOG );
  gtk_widget_set_name( URL,"URL" );
  gtk_object_set_data( GTK_OBJECT( URL ),"URL",URL );
- gtk_widget_set_usize( URL,384,80 );
- GTK_WIDGET_SET_FLAGS( URL,GTK_CAN_FOCUS );
+ gtk_widget_set_usize( URL,384,70 );
  GTK_WIDGET_SET_FLAGS( URL,GTK_CAN_DEFAULT );
- gtk_window_set_title( GTK_WINDOW( URL ),"Network streaming ..." );
+ gtk_window_set_title( GTK_WINDOW( URL ),MSGTR_Network );
  gtk_window_set_position( GTK_WINDOW( URL ),GTK_WIN_POS_CENTER );
- gtk_window_set_default_size( GTK_WINDOW( URL ),-1,80 );
  gtk_window_set_policy( GTK_WINDOW( URL ),TRUE,TRUE,FALSE );
+ gtk_window_set_wmclass( GTK_WINDOW( URL ),MSGTR_Network,"MPlayer" );
+ 
+ gtk_widget_realize( URL );
+ gtkAddIcon( URL );
 
  frame1=gtk_frame_new( NULL );
  gtk_widget_set_name( frame1,"frame1" );
@@ -175,13 +178,13 @@
  gtk_object_set_data_full( GTK_OBJECT( URL ),"URLEntry",URLEntry,(GtkDestroyNotify)gtk_widget_unref );
  gtk_widget_show( URLEntry );
 
- frame5=gtk_frame_new( NULL );
- gtk_widget_set_name( frame5,"frame5" );
- gtk_widget_ref( frame5 );
- gtk_object_set_data_full( GTK_OBJECT( URL ),"frame5",frame5,(GtkDestroyNotify)gtk_widget_unref );
- gtk_widget_show( frame5 );
- gtk_box_pack_start( GTK_BOX( hbox1 ),frame5,FALSE,TRUE,0 );
- gtk_frame_set_shadow_type( GTK_FRAME( frame5 ),GTK_SHADOW_NONE );
+ hsep=gtk_hseparator_new();
+ gtk_widget_set_name( hsep,"hsep" );
+ gtk_widget_ref( hsep );
+ gtk_object_set_data_full( GTK_OBJECT( URL ),"hsep",hsep,(GtkDestroyNotify)gtk_widget_unref );
+ gtk_widget_show( hsep );
+ gtk_box_pack_start( GTK_BOX( vbox1 ),hsep,FALSE,TRUE,0 );
+ gtk_widget_set_usize( hsep,-2,8 );
 
  hbuttonbox1=gtk_hbutton_box_new();
  gtk_widget_set_name( hbuttonbox1,"hbuttonbox1" );
@@ -190,23 +193,23 @@
  gtk_widget_show( hbuttonbox1 );
  gtk_box_pack_start( GTK_BOX( vbox1 ),hbuttonbox1,FALSE,FALSE,0 );
  gtk_button_box_set_layout( GTK_BUTTON_BOX( hbuttonbox1 ),GTK_BUTTONBOX_END );
- gtk_button_box_set_spacing( GTK_BUTTON_BOX( hbuttonbox1 ),0 );
+ gtk_button_box_set_spacing( GTK_BUTTON_BOX( hbuttonbox1 ),10 );
+ gtk_button_box_set_child_size( GTK_BUTTON_BOX( hbuttonbox1 ),85,20 );
+ gtk_button_box_set_child_ipadding( GTK_BUTTON_BOX( hbuttonbox1 ),0,0 );
 
- Ok=gtk_button_new_with_label( "Ok" );
+ Ok=gtk_button_new_with_label( MSGTR_Ok );
  gtk_widget_set_name( Ok,"Ok" );
  gtk_widget_ref( Ok );
  gtk_object_set_data_full( GTK_OBJECT( URL ),"Ok",Ok,(GtkDestroyNotify)gtk_widget_unref );
  gtk_widget_show( Ok );
  gtk_container_add( GTK_CONTAINER( hbuttonbox1 ),Ok );
- GTK_WIDGET_SET_FLAGS( Ok,GTK_CAN_DEFAULT );
 
- Cancel=gtk_button_new_with_label( "Cancel" );
+ Cancel=gtk_button_new_with_label( MSGTR_Cancel );
  gtk_widget_set_name( Cancel,"Cancel" );
  gtk_widget_ref( Cancel );
  gtk_object_set_data_full( GTK_OBJECT( URL ),"Cancel",Cancel,(GtkDestroyNotify)gtk_widget_unref );
  gtk_widget_show( Cancel );
  gtk_container_add( GTK_CONTAINER( hbuttonbox1 ),Cancel );
- GTK_WIDGET_SET_FLAGS( Cancel,GTK_CAN_DEFAULT );
  
  gtk_widget_add_accelerator( Ok,"pressed",accel_group,GDK_Return,0,GTK_ACCEL_VISIBLE );
 // gtk_widget_add_accelerator( Ok,"pressed",accel_group,GDK_O,GDK_MOD1_MASK,GTK_ACCEL_VISIBLE );
@@ -222,7 +225,7 @@
  gtk_signal_connect( GTK_OBJECT( Ok ),"pressed",GTK_SIGNAL_FUNC( on_Button_pressed ),(void *)1 );
  gtk_signal_connect( GTK_OBJECT( Cancel ),"pressed",GTK_SIGNAL_FUNC( on_Button_pressed ),NULL );
 
- gtk_widget_grab_default( Ok );
+ gtk_widget_grab_focus( URLEntry );
  gtk_window_add_accel_group( GTK_WINDOW( URL ),accel_group );
 
  return URL;
--- a/Gui/mplayer/mplayer.c	Fri Jul 05 15:38:56 2002 +0000
+++ b/Gui/mplayer/mplayer.c	Fri Jul 05 23:47:00 2002 +0000
@@ -21,6 +21,11 @@
 #include "../../libmpdemux/stream.h"
 #include "../../mp_msg.h"
 
+#include <gdk/gdkprivate.h>
+#include <gdk/gdkkeysyms.h>
+#include <gdk/gdk.h>
+#include <gtk/gtk.h>
+
 #define mplRedrawTimerConst 5
 
 int mplRedrawTimer = mplRedrawTimerConst;
@@ -99,6 +104,9 @@
  btnModify( evSetVolume,guiIntfStruct.Volume );
  btnModify( evSetBalance,guiIntfStruct.Balance );
  btnModify( evSetMoviePosition,guiIntfStruct.Position );
+
+ wsSetIcon( wsDisplay,appMPlayer.mainWindow.WindowID,guiIcon,guiIconMask );
+ wsSetIcon( wsDisplay,appMPlayer.subWindow.WindowID,guiIcon,guiIconMask );
  
  if ( fullscreen )
   {
--- a/Gui/mplayer/mw.h	Fri Jul 05 15:38:56 2002 +0000
+++ b/Gui/mplayer/mw.h	Fri Jul 05 23:47:00 2002 +0000
@@ -489,11 +489,11 @@
 
  switch ( Button )
   {
-   case wsPRMouseButton:
+   case wsPMMouseButton:
           mplShowMenu( RX,RY );
           itemtype=itPRMButton;
           break;
-   case wsRRMouseButton:
+   case wsRMMouseButton:
           mplHideMenu( RX,RY,0 );
           break;
 
@@ -536,7 +536,7 @@
           itemtype=0;
           break;
 
-   case wsPMMouseButton:
+   case wsPRMouseButton:
         gtkShow( evShowPopUpMenu,NULL );
         break;
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Gui/mplayer/pixmaps/MPlayer_mini.xpm	Fri Jul 05 23:47:00 2002 +0000
@@ -0,0 +1,30 @@
+/* XPM */
+static char * MPlayer_mini_xpm[] = {
+"16 16 11 1",
+" 	c None",
+".	c #000000",
+"+	c #C6C6C6",
+"@	c #FFFFFF",
+"#	c #E2E2E2",
+"$	c #383838",
+"%	c #555555",
+"&	c #717171",
+"*	c #1C1C1C",
+"=	c #AAAAAA",
+"-	c #8D8D8D",
+"................",
+".+@..+@..+@..+@.",
+".+@..+@..+@..+@.",
+".+@..+@..+@..+@.",
+"................",
+"......#$.#$.....",
+"......++%@$.....",
+"......&@%@*.....",
+"......&+=#&.....",
+".....%&==&#&....",
+".....-*&%.-*....",
+"................",
+".+@..+@..+@..+@.",
+".+@..+@..+@..+@.",
+".+@..+@..+@..+@.",
+"................"};
--- a/Gui/mplayer/sw.h	Fri Jul 05 15:38:56 2002 +0000
+++ b/Gui/mplayer/sw.h	Fri Jul 05 23:47:00 2002 +0000
@@ -30,15 +30,15 @@
 
  switch( Button )
   {
-   case wsPMMouseButton:
+   case wsPRMouseButton:
           gtkShow( evShowPopUpMenu,NULL );
           break;
-   case wsPRMouseButton:
+   case wsPMMouseButton:
           gtkShow( evHidePopUpMenu,NULL );
           mplShowMenu( RX,RY );
-          msButton=wsPRMouseButton;
+          msButton=wsPMMouseButton;
           break;
-   case wsRRMouseButton:
+   case wsRMMouseButton:
           mplHideMenu( RX,RY,1 );
           msButton=0;
           break;
@@ -56,7 +56,7 @@
                    mplSubMoved=1;
                    if ( !appMPlayer.subWindow.isFullScreen ) wsMoveWindow( &appMPlayer.subWindow,False,RX - sx,RY - sy );
                    break;
-            case wsPRMouseButton:
+            case wsPMMouseButton:
                    mplMenuMouseHandle( X,Y,RX,RY );
                    break;
            }
--- a/Gui/mplayer/widgets.c	Fri Jul 05 15:38:56 2002 +0000
+++ b/Gui/mplayer/widgets.c	Fri Jul 05 23:47:00 2002 +0000
@@ -11,6 +11,7 @@
 
 #include <gdk/gdkprivate.h>
 #include <gdk/gdkkeysyms.h>
+#include <gdk/gdkx.h>
 #include <gdk/gdk.h>
 #include <gtk/gtk.h>
 
@@ -19,6 +20,8 @@
 #include "./mplayer.h"
 #include "../events.h"
 #include "../app.h"
+#include "../wm/ws.h"
+
 
 #include "gtk/menu.h"
 #include "play.h"
@@ -48,8 +51,15 @@
 #include "gtk/url.h"
 #include "gtk/eq.h"
 
+#include "pixmaps/MPlayer_mini.xpm"
+
 // --- init & close gtk
 
+GdkPixmap * gtkIcon = NULL;
+GdkBitmap * gtkIconMask = NULL;
+Pixmap	    guiIcon;
+Pixmap	    guiIconMask;
+
 void gtkInit( void )
 {
  mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[widget] init gtk ...\n" );
@@ -57,6 +67,20 @@
 // gtk_init( &argc,&argv );
  gtk_init( 0,NULL );
 // gdk_set_use_xshm( TRUE );
+
+ {
+  GtkWidget * win;
+  win=gtk_window_new( GTK_WINDOW_TOPLEVEL );
+
+  if ( !gtkIcon ) 
+    gtkIcon=gdk_pixmap_colormap_create_from_xpm_d( win->window,gdk_colormap_get_system(),&gtkIconMask,&win->style->bg[GTK_STATE_NORMAL],MPlayer_mini_xpm );
+
+  guiIcon=GDK_WINDOW_XWINDOW( gtkIcon );
+  guiIconMask=GDK_WINDOW_XWINDOW( gtkIconMask );
+
+  gtk_widget_destroy( win );
+ }
+ 
  gtkInited=1;
 }
 
@@ -64,6 +88,12 @@
 {
 }
 
+void gtkAddIcon( GtkWidget * window )
+{
+ GdkWindowPrivate * win = (GdkWindowPrivate *)window->window;
+ wsSetIcon( gdk_display,win->xwindow,guiIcon,guiIconMask );
+}
+
 void gtkClearList( GtkWidget * list )
 { gtk_clist_clear( GTK_CLIST( list ) ); }
 
@@ -121,13 +151,13 @@
 
 void gtkSetLayer( GtkWidget * wdg )
 {
- GdkWindowPrivate * win = wdg->window;
+ GdkWindowPrivate * win = (GdkWindowPrivate *)wdg->window;
  wsSetLayer( gdk_display,win->xwindow,appMPlayer.subWindow.isFullScreen );
 }
 
 void gtkActive( GtkWidget * wdg )
 {
- GdkWindowPrivate * win = wdg->window;
+ GdkWindowPrivate * win = (GdkWindowPrivate *)wdg->window;
  wsMoveTopWindow( gdk_display,win->xwindow );
 }
 
@@ -145,7 +175,7 @@
         if ( gtkFillSkinList( sbMPlayerPrefixDir ) && gtkFillSkinList( sbMPlayerDirInHome ) )
          {
           gtkSetDefaultToCList( SkinList,param );
-	  gtk_clist_sort( SkinList );
+	  gtk_clist_sort( GTK_CLIST( SkinList ) );
           gtk_widget_show( SkinBrowser );
 	  gtkSetLayer( SkinBrowser );
          } 
--- a/Gui/mplayer/widgets.h	Fri Jul 05 15:38:56 2002 +0000
+++ b/Gui/mplayer/widgets.h	Fri Jul 05 23:47:00 2002 +0000
@@ -12,6 +12,7 @@
 #include "play.h"
 #include "mplayer.h"
 #include "../interface.h"
+#include "../wm/ws.h"
 
 #define GTK_MB_SIMPLE 0
 #define GTK_MB_MODAL 1
@@ -35,10 +36,16 @@
 extern char          * sbMPlayerDirInHome;
 extern char          * sbMPlayerPrefixDir;
 
+extern GdkPixmap * gtkIcon;
+extern GdkBitmap * gtkIconMask;
+extern Pixmap      guiIcon;
+extern Pixmap	   guiIconMask;
+
 extern void widgetsCreate( void );
 
 extern void gtkInit( void );
 extern void gtkDone( void );
+extern void gtkAddIcon( GtkWidget * window );
 
 extern int  gtkFillSkinList( gchar * dir );
 extern void gtkClearList( GtkWidget * list );
--- a/Gui/wm/ws.c	Fri Jul 05 15:38:56 2002 +0000
+++ b/Gui/wm/ws.c	Fri Jul 05 23:47:00 2002 +0000
@@ -1292,4 +1292,27 @@
 #endif
 }
 
+void wsSetIcon( Display * dsp,Window win,Pixmap icon,Pixmap mask )
+{
+ XWMHints * wm;
+ long	    data[2];
+ Atom	    iconatom;
+ 
+ wm=XGetWMHints( dsp,win );
+ if ( !wm ) wm=XAllocWMHints();
+
+ wm->icon_pixmap=icon;
+ wm->icon_mask=mask;
+ wm->flags|=IconPixmapHint | IconMaskHint;
+
+ XSetWMHints( dsp,win,wm );
+
+ data[0]=icon;
+ data[1]=mask;
+ iconatom=XInternAtom( dsp,"KWM_WIN_ICON",0 );
+ XChangeProperty( dsp,win,iconatom,iconatom,32,PropModeReplace,(unsigned char *)data,2 );
+ 
+ XFree( wm );
+}
+
 #include "wsmkeys.h"
--- a/Gui/wm/ws.h	Fri Jul 05 15:38:56 2002 +0000
+++ b/Gui/wm/ws.h	Fri Jul 05 23:47:00 2002 +0000
@@ -232,6 +232,7 @@
 extern void wsFullScreen( wsTWindow * win );
 extern void wsPostRedisplay( wsTWindow * win );
 extern void wsSetShape( wsTWindow * win,char * data );
+extern void wsSetIcon( Display * dsp,Window win,Pixmap icon,Pixmap mask );
 
 // ----------------------------------------------------------------------------------------------
 //    Draw string at x,y with fc ( foreground color ) and bc ( background color ).
--- a/help_mp-en.h	Fri Jul 05 15:38:56 2002 +0000
+++ b/help_mp-en.h	Fri Jul 05 23:47:00 2002 +0000
@@ -241,12 +241,15 @@
 #define MSGTR_PlayList "PlayList"
 #define MSGTR_Equalizer "Equalizer"
 #define MSGTR_SkinBrowser "Skin Browser"
+#define MSGTR_Network "Network streaming ..."
 
 // --- buttons ---
 #define MSGTR_Ok "Ok"
 #define MSGTR_Cancel "Cancel"
 #define MSGTR_Add "Add"
 #define MSGTR_Remove "Remove"
+#define MSGTR_Clear "Clear"
+#define MSGTR_Config "Config"
 
 // --- error messages ---
 #define MSGTR_NEMDB "Sorry, not enough memory for draw buffer."
@@ -312,6 +315,21 @@
 #define MSGTR_MENU_Preferences "Preferences"
 #define MSGTR_MENU_Exit "Exit ..."
 
+// --- equalizer
+#define MSGTR_EQU_Audio "Audio"
+#define MSGTR_EQU_Video "Video"
+#define MSGTR_EQU_Contrast "Contras: "
+#define MSGTR_EQU_Brightness "Brightness: "
+#define MSGTR_EQU_Hue "Hue: "
+#define MSGTR_EQU_Saturation "Saturation: "
+#define MSGTR_EQU_Front_Left "Front Left"
+#define MSGTR_EQU_Front_Right "Front Right"
+#define MSGTR_EQU_Back_Left "Back Left"
+#define MSGTR_EQU_Back_Right "Back Right"
+#define MSGTR_EQU_Center "Center"
+#define MSGTR_EQU_Bass "Bass"
+#define MSGTR_EQU_All "All"
+
 // --- messagebox
 #define MSGTR_MSGBOX_LABEL_FatalError "fatal error ..."
 #define MSGTR_MSGBOX_LABEL_Error "error ..."
--- a/help_mp-hu.h	Fri Jul 05 15:38:56 2002 +0000
+++ b/help_mp-hu.h	Fri Jul 05 23:47:00 2002 +0000
@@ -236,12 +236,15 @@
 #define MSGTR_Equalizer "Equalizer"
 #define MSGTR_PlayList "Lejátszási lista"
 #define MSGTR_SkinBrowser "Skin böngésző"
+#define MSGTR_Network "Lejátszás WEB - röl ..."
 
 // --- buttons ---
 #define MSGTR_Ok "Ok"
 #define MSGTR_Cancel "Mégse"
 #define MSGTR_Add "Hozzáad"
 #define MSGTR_Remove "Kivesz"
+#define MSGTR_Clear "Törlés"
+#define MSGTR_Config "Beállítás"
 
 // --- error messages ---
 #define MSGTR_NEMDB "Nincs elég memória a buffer kirajzolásához."
@@ -307,6 +310,21 @@
 #define MSGTR_MENU_Preferences "Beállítások" 
 #define MSGTR_MENU_Exit "Kilépés ..."
 
+// --- equalizer
+#define MSGTR_EQU_Audio "Audio"
+#define MSGTR_EQU_Video "Video"
+#define MSGTR_EQU_Contrast "Kontraszt: "
+#define MSGTR_EQU_Brightness "Fényerő: "
+#define MSGTR_EQU_Hue "Szinárnyalat: "
+#define MSGTR_EQU_Saturation "Telítettség: "
+#define MSGTR_EQU_Front_Left "Bal Első"
+#define MSGTR_EQU_Front_Right "Jobb Első"
+#define MSGTR_EQU_Back_Left "Bal Hátsó"
+#define MSGTR_EQU_Back_Right "Jobb Hátsó"
+#define MSGTR_EQU_Center "Középső"
+#define MSGTR_EQU_Bass "Basszus"
+#define MSGTR_EQU_All "Mindegyik"
+
 // --- messagebox
 #define MSGTR_MSGBOX_LABEL_FatalError "végzetes hiba ..."
 #define MSGTR_MSGBOX_LABEL_Error "hiba ..."
--- a/libmpdemux/open.c	Fri Jul 05 15:38:56 2002 +0000
+++ b/libmpdemux/open.c	Fri Jul 05 23:47:00 2002 +0000
@@ -56,6 +56,8 @@
 char * dvd_audio_stream_types[8] =
         { "ac3","unknown","mpeg1","mpeg2ext","lpcm","unknown","dts" };
 
+char * dvd_audio_stream_channels[6] =
+	{ "unknown", "stereo", "unknown", "unknown", "unknown", "5.1" };
 #endif
 
 extern int vcd_get_track_end(int fd,int track);
@@ -303,9 +305,15 @@
 		    break;
 	   }
 
-          mp_msg(MSGT_OPEN,MSGL_V,"[open] audio stream: %d audio format: %s language: %s aid: %d\n",
+	  d->audio_streams[d->nr_of_channels].type=audio->audio_format;
+	  // Pontscho: to my mind, tha channels:
+	  //  1 - stereo
+	  //  5 - 5.1
+	  d->audio_streams[d->nr_of_channels].channels=audio->channels;
+          mp_msg(MSGT_OPEN,MSGL_V,"[open] audio stream: %d audio format: %s (%s) language: %s aid: %d\n",
 	    d->nr_of_channels,
             dvd_audio_stream_types[ audio->audio_format ],
+	    dvd_audio_stream_channels[ audio->channels ],
 	    tmp,
 	    d->audio_streams[d->nr_of_channels].id
 	    );
@@ -369,8 +377,7 @@
     else
 	d->last_cell=d->cur_pgc->nr_of_cells;
     
-    if( d->cur_pgc->cell_playback[d->cur_cell].block_type 
-	== BLOCK_TYPE_ANGLE_BLOCK ) d->cur_cell+=dvd_angle;
+    if( d->cur_pgc->cell_playback[d->cur_cell].block_type == BLOCK_TYPE_ANGLE_BLOCK ) d->cur_cell+=dvd_angle;
     d->cur_pack = d->cur_pgc->cell_playback[ d->cur_cell ].first_sector;
     d->cell_last_pack=d->cur_pgc->cell_playback[ d->cur_cell ].last_sector;
     mp_msg(MSGT_DVD,MSGL_V, "DVD start cell: %d  pack: 0x%X-0x%X  \n",d->cur_cell,d->cur_pack,d->cell_last_pack);
--- a/libmpdemux/stream.h	Fri Jul 05 15:38:56 2002 +0000
+++ b/libmpdemux/stream.h	Fri Jul 05 23:47:00 2002 +0000
@@ -225,6 +225,8 @@
 typedef struct {
  int id; // 0 - 31 mpeg; 128 - 159 ac3; 160 - 191 pcm
  int language; 
+ int type;
+ int channels;
 } stream_language_t;
 
 typedef struct {