diff options
Diffstat (limited to 'gui/mplayer/gtk')
-rw-r--r-- | gui/mplayer/gtk/about.c | 329 | ||||
-rw-r--r-- | gui/mplayer/gtk/about.h | 12 | ||||
-rw-r--r-- | gui/mplayer/gtk/common.c | 180 | ||||
-rw-r--r-- | gui/mplayer/gtk/common.h | 24 | ||||
-rw-r--r-- | gui/mplayer/gtk/eq.c | 670 | ||||
-rw-r--r-- | gui/mplayer/gtk/eq.h | 12 | ||||
-rw-r--r-- | gui/mplayer/gtk/fs.c | 684 | ||||
-rw-r--r-- | gui/mplayer/gtk/fs.h | 21 | ||||
-rw-r--r-- | gui/mplayer/gtk/mb.c | 97 | ||||
-rw-r--r-- | gui/mplayer/gtk/mb.h | 13 | ||||
-rw-r--r-- | gui/mplayer/gtk/menu.c | 629 | ||||
-rw-r--r-- | gui/mplayer/gtk/menu.h | 13 | ||||
-rw-r--r-- | gui/mplayer/gtk/opts.c | 1814 | ||||
-rw-r--r-- | gui/mplayer/gtk/opts.h | 16 | ||||
-rw-r--r-- | gui/mplayer/gtk/pl.c | 529 | ||||
-rw-r--r-- | gui/mplayer/gtk/pl.h | 14 | ||||
-rw-r--r-- | gui/mplayer/gtk/sb.c | 195 | ||||
-rw-r--r-- | gui/mplayer/gtk/sb.h | 18 | ||||
-rw-r--r-- | gui/mplayer/gtk/url.c | 153 | ||||
-rw-r--r-- | gui/mplayer/gtk/url.h | 11 |
20 files changed, 5434 insertions, 0 deletions
diff --git a/gui/mplayer/gtk/about.c b/gui/mplayer/gtk/about.c new file mode 100644 index 0000000000..a19bb55065 --- /dev/null +++ b/gui/mplayer/gtk/about.c @@ -0,0 +1,329 @@ + +#include "app.h" +#include "config.h" +#include "help_mp.h" + +#include "mplayer/pixmaps/about.xpm" +#include "../widgets.h" +#include "about.h" +#include "common.h" + +GtkWidget * About = NULL; + +void ShowAboutBox( void ) +{ + if ( About ) gtkActive( About ); + else About=create_About(); + gtk_widget_show( About ); +} + +void abWidgetDestroy( GtkWidget * widget,GtkWidget ** widget_pointer ) +{ WidgetDestroy( NULL,&About ); } + +GtkWidget * create_About( void ) +{ + GtkWidget * vbox; + GtkWidget * pixmap1; + GtkWidget * scrolledwindow1; + GtkWidget * AboutText; + GtkWidget * Ok; + +#ifdef HAVE_GTK2_GUI + GtkTextBuffer * AboutTextBuffer; + GtkTextIter iter; +#endif //HAVE_GTK2_GUI + + GtkStyle * pixmapstyle; + GdkPixmap * pixmapwid; + GdkBitmap * mask; + + GtkAccelGroup * accel_group; + + accel_group=gtk_accel_group_new(); + + About=gtk_window_new( GTK_WINDOW_TOPLEVEL ); + gtk_widget_set_name( About,MSGTR_About ); + gtk_object_set_data( GTK_OBJECT( About ),MSGTR_About,About ); + gtk_widget_set_usize( About,340,415 ); + 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 ),"About","MPlayer" ); + + gtk_widget_realize( About ); + gtkAddIcon( About ); + + vbox=AddVBox( AddDialogFrame( About ),0 ); + + pixmapstyle=gtk_widget_get_style( About ); + pixmapwid=gdk_pixmap_colormap_create_from_xpm_d( About->window,gdk_colormap_get_system(),&mask,&pixmapstyle->bg[GTK_STATE_NORMAL],about_xpm ); + pixmap1=gtk_pixmap_new( pixmapwid,mask ); + + gtk_widget_set_name( pixmap1,"pixmap1" ); + gtk_widget_show( pixmap1 ); + gtk_box_pack_start( GTK_BOX( vbox ),pixmap1,FALSE,FALSE,0 ); + gtk_widget_set_usize( pixmap1,-2,174 ); + + AddHSeparator( vbox ); + + scrolledwindow1=gtk_scrolled_window_new( NULL,NULL ); + gtk_widget_set_name( scrolledwindow1,"scrolledwindow1" ); + gtk_widget_show( scrolledwindow1 ); + gtk_box_pack_start( GTK_BOX( vbox ),scrolledwindow1,TRUE,TRUE,0 ); + gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scrolledwindow1 ),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC ); + +#ifdef HAVE_GTK2_GUI + AboutText = gtk_text_view_new(); + gtk_text_view_set_editable(GTK_TEXT_VIEW(AboutText), FALSE); + gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(AboutText), FALSE); + AboutTextBuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (AboutText)); + gtk_text_buffer_get_iter_at_offset (AboutTextBuffer, &iter, 0); +#else + AboutText=gtk_text_new( NULL,NULL ); + gtk_text_set_editable(GTK_TEXT(AboutText), FALSE); +#endif + gtk_widget_set_name( AboutText,"AboutText" ); + gtk_widget_show( AboutText ); + gtk_container_add( GTK_CONTAINER( scrolledwindow1 ),AboutText ); +#ifdef HAVE_GTK2_GUI + gtk_text_buffer_insert (AboutTextBuffer, &iter, +#else + gtk_text_insert( GTK_TEXT( AboutText ),NULL,NULL,NULL, +#endif + "\n" + MSGTR_ABOUT_UHU + " (http://www.uhulinux.hu/)\n" + "\n" + MSGTR_ABOUT_Contributors + "\n" + " * Ackermann, Andreas\n" + " * adland\n" + " * Anholt, Eric\n" + " * Ashberg, Folke\n" + " * Balatoni, Dénes\n" + " * Barat, Zsolt\n" + " * Barbato, Luca\n" + " * Baryshkov, Dmitry\n" + " * Baudet, Bertrand\n" + " * Bedel, Alban\n" + " * Behrisch, Michael\n" + " * Belev, Luchezar\n" + " * Bérczi, Gábor\n" + " * Berecz, Szabolcs\n" + " * Beregszászi, Alex\n" + " * Bitterberg, Tilmann\n" + " * Biurrun, Diego\n" + " * Blomenkamp, Marcsu\n" + " * Buehler, Andrew\n" + " * Bulgroz, Eviv\n" + " * Bünemann, Felix\n" + " * Bunkus, Moritz\n" + " * Christiansen, Dan Villiom Podlaski\n" + " * Clagg, Jeff\n" + " * Compn\n" + " * Comstedt, Marcus\n" + " * Cook, Kees\n" + " * Davies, Stephen\n" + " * Di Vita, Piero\n" + " * Diedrich, Tobias\n" + " * Dietrich, Florian\n" + " * Dobbelaere, Jeroen\n" + " * Döffinger, Reimar\n" + " * Dolbeau, Romain\n" + " * Dönmez, Ismail\n" + " * Edele, Robert\n" + " * Egger, Christoph\n" + " * Elsinghorst, Paul Wilhelm\n" + " * Ernesti, Bernd\n" + " * Falco, Salvatore\n" + " * Feigl, Johannes\n" + " * Felker, D Richard III\n" + " * Ferguson, Tim\n" + " * Finlayson, Ross\n" + " * Forghieri, Daniele\n" + " * Foth, Kilian A.\n" + " * Franz, Fabian\n" + " * Gansser, Martin\n" + " * Gereöffy, Árpád\n" + " * Giani, Matteo\n" + " * Goethel, Sven\n" + " * Gomez Garcia, German\n" + " * Gottwald, Alexander\n" + " * Graffam, Michael\n" + " * Gritsenko, Andriy N.\n" + " * Guyomarch, Rémi\n" + " * Hammelmann, Jürgen\n" + " * Hertel, Christopher R.\n" + " * Hess, Andreas\n" + " * Hickey, Corey\n" + " * Hidvégi, Zoltán\n" + " * Hoffmann, Jens\n" + " * Holm, David\n" + " * Horst, Bohdan\n" + " * Hug, Hampa\n" + " * Hurka, Tomas\n" + " * Isani, Sidik\n" + " * Issaris, Panagiotis\n" + " * Jacobs, Aurelien\n" + " * Jelveh, Reza\n" + " * Jermann, Jonas\n" + " * Johansson, Anders\n" + " * Kain, Nicholas\n" + " * Kalinski, Filip\n" + " * Kalvachev, Ivan\n" + " * Kaniewski, Wojtek\n" + " * Kaplan, Kim Minh\n" + " * Kärkkäinen, Samuli\n" + " * Keil, Jürgen\n" + " * Kesterson, Robert\n" + " * Kinali, Attila\n" + " * Kovriga, Gregory\n" + " * Kühling, David\n" + " * Kuivinen, Fredrik\n" + " * Kurshev, Nick\n" + " * Kuschak, Brian\n" + " * Kushnir, Vladimir\n" + " * Lambley, Dave\n" + " * László, Gyula\n" + " * Le Gaillart, Nicolas\n" + " * Lénárt, Gábor\n" + " * Leroy, Colin\n" + " * Liljeblad, Oskar\n" + " * Lin, Sam\n" + " * Lombard, Pierre\n" + " * Madick, Puk\n" + " * Makovicka, Jindrich\n" + " * Marek, Rudolf\n" + " * Megyer, László\n" + " * Melanson, Mike\n" + " * von Merkatz, Arwed\n" + " * Merritt, Loren\n" + " * Mierzejewski, Dominik\n" + " * Milushev, Mihail\n" + " * Mistry, Nehal\n" + " * Mohari, András\n" + " * Mueller, Steven\n" + " * Neundorf, Alexander\n" + " * Niedermayer, Michael\n" + " * Noring, Fredrik\n" + " * Ohm, Christian\n" + " * Parrish, Joey\n" + " * Pietrzak, Dariusz\n" + " * Plourde, Nicolas\n" + " * Poettering, Lennart\n" + " * Poirier, Guillaume\n" + " * Ponekker, Zoltán\n" + " * van Poorten, Ivo\n" + " * Ran, Lu\n" + " * Reder, Uwe\n" + " * rgselk\n" + " * Rune Petersen\n" + " * Saari, Ville\n" + " * Sabbi, Nico\n" + " * Sandell, Björn\n" + " * Sauerbeck, Tilman\n" + " * Scherthan, Frank\n" + " * Schneider, Florian\n" + " * Schoenbrunner, Oliver\n" + " * Shimon, Oded\n" + " * Simon, Peter\n" + " * Snel, Rik\n" + " * Sommer, Sascha\n" + " * Strasser, Alexander\n" + " * Strzelecki, Kamil\n" + " * Svoboda, Jiri\n" + " * Swain, Robert\n" + " * Syrjälä, Ville\n" + " * Szecsi, Gabor\n" + " * Tackaberry, Jason\n" + " * Tam, Howell\n" + " * Tlalka, Adam\n" + " * Tiesi, Gianluigi\n" + " * Togni, Roberto\n" + " * Tropea, Salvador Eduardo\n" + " * Vajna, Miklós\n" + " * Verdejo Pinochet, Reynaldo H.\n" + " * Wigren, Per\n" + " * Witt, Derek J\n" + " * Young, Alan\n" + " * Zaprzala, Artur\n" + " * Zealey, Mark\n" + " * Ziv-Av, Matan\n" + " * Zoltán, Márk Vicián\n" + "\n" + MSGTR_ABOUT_Codecs_libs_contributions + "\n" + " * Bellard, Fabrice\n" + " * Chappelier, Vivien and Vincent, Damien\n" + " * Hipp, Michael\n" + " * Holtzman, Aaron\n" + " * Janovetz, Jake\n" + " * Kabelac, Zdenek\n" + " * Kuznetsov, Eugene\n" + " * Lespinasse, Michel\n" + " * Podlipec, Mark\n" + "\n" + MSGTR_ABOUT_Translations + "\n" + " * Biernat, Marcin\n" + " * Fargas, Marc\n" + " * Heryan, Jiri\n" + " * Jarycki, Marek\n" + " * Kaplita, Leszek\n" + " * Krämer, Sebastian\n" + " * López, Juan Martin\n" + " * Michniewski, Piotr\n" + " * Misiorny, Jakub\n" + " * Mizda, Gábor\n" + " * Paszta, Maciej\n" + " * Proszek, Łukasz\n" + " * Schiller, Wacław\n" + " * Zubimendi, Andoni\n" + "\n" + MSGTR_ABOUT_Skins + "\n" + " * Azrael\n" + " * Bekesi, Viktor\n" + " * Burt.S.\n" + " * Carpenter, Andrew\n" + " * Foucault, Charles\n" + " * Gyimesi, Attila\n" + " * Hertroys, Alban\n" + " * Juan Pablo\n" + " * Kiss, Balint\n" + " * Kuehne, Andre\n" + " * Kuhlmann, Rüdiger\n" + " * Naumov, Dan\n" + " * Northam, Ryan\n" + " * Oyarzun Arroyo\n" + " * Park, DongCheon\n" + " * Pehrson, Jurgen\n" + " * Pizurica, Nikola\n" + " * Ptak, Oliwier\n" + " * Riccio, Pasquale\n" + " * Schultz, Jesper\n" + " * Szumiela, Marcin\n" + " * Tisi, Massimo\n" + " * Tyr, Jiri jun.\n" + " * Vasilev, Ognian\n" + " * Veres, Imre\n" + " * Vesko, Radic\n" + " * Vigvary, Balasz\n" + " * Weber, Andrew\n" + " * Whitmore, Gary Jr.\n" + " * Wilamowski, Franciszek\n" + " * Zeising, Michael\n" + "\n",-1 ); + + AddHSeparator( vbox ); + Ok=AddButton( MSGTR_Ok,AddHButtonBox( vbox ) ); + + gtk_signal_connect( GTK_OBJECT( About ),"destroy",GTK_SIGNAL_FUNC( WidgetDestroy ),&About ); + gtk_signal_connect_object( GTK_OBJECT( Ok ),"clicked",GTK_SIGNAL_FUNC( abWidgetDestroy ),NULL ); + + gtk_widget_add_accelerator( Ok,"clicked",accel_group,GDK_Escape,0,GTK_ACCEL_VISIBLE ); + gtk_widget_add_accelerator( Ok,"clicked",accel_group,GDK_Return,0,GTK_ACCEL_VISIBLE ); + gtk_window_add_accel_group( GTK_WINDOW( About ),accel_group ); + + return About; +} diff --git a/gui/mplayer/gtk/about.h b/gui/mplayer/gtk/about.h new file mode 100644 index 0000000000..66d5f147ae --- /dev/null +++ b/gui/mplayer/gtk/about.h @@ -0,0 +1,12 @@ + +#ifndef __GUI_ABOUT_H +#define __GUI_ABOUT_H + +#include <gtk/gtk.h> + +extern GtkWidget * About; + +extern GtkWidget * create_About( void ); +extern void ShowAboutBox( void ); + +#endif diff --git a/gui/mplayer/gtk/common.c b/gui/mplayer/gtk/common.c new file mode 100644 index 0000000000..7a21969e2f --- /dev/null +++ b/gui/mplayer/gtk/common.c @@ -0,0 +1,180 @@ + +#include <gdk/gdkkeysyms.h> +#include <gtk/gtk.h> + +#include "common.h" + +void WidgetDestroy( GtkWidget * widget,GtkWidget ** widget_pointer ) +{ + if ( !widget_pointer ) return; + gtk_widget_hide( *widget_pointer ); + gtk_widget_destroy( *widget_pointer ); + *widget_pointer=NULL; +} + +GtkWidget * AddDialogFrame( GtkWidget * parent ) +{ + GtkWidget * frame; + frame=AddFrame( NULL,GTK_SHADOW_IN,parent,1 ); + gtk_container_set_border_width( GTK_CONTAINER( frame ),1 ); + frame=AddFrame( NULL,GTK_SHADOW_NONE,frame,1 ); + frame=AddFrame( NULL,GTK_SHADOW_ETCHED_OUT,frame,1 ); + frame=AddFrame( NULL,GTK_SHADOW_NONE,frame,1 ); + return frame; +} + +GtkWidget * AddFrame( const char * title,int type,GtkWidget * parent,int add ) +{ + GtkWidget * frame = NULL; + frame=gtk_frame_new( title ); + gtk_widget_set_name( frame,"frame" ); + gtk_widget_show( frame ); + gtk_frame_set_shadow_type( GTK_FRAME( frame ),type ); + if ( !parent ) return frame; + if ( add ) gtk_container_add( GTK_CONTAINER( parent ),frame ); + else gtk_box_pack_start( GTK_BOX( parent ),frame,FALSE,FALSE,0 ); + return frame; +} + +GtkWidget * AddLabel( const char * title,GtkWidget * parent ) +{ + GtkWidget * label; + label=gtk_label_new( title ); + gtk_widget_set_name( label,"label" ); + gtk_widget_show( label ); + if ( parent ) gtk_box_pack_start( GTK_BOX( parent ),label,FALSE,FALSE,0 ); + gtk_misc_set_alignment( GTK_MISC( label ),0,0.5 ); + gtk_misc_set_padding( GTK_MISC( label ),4,0 ); + return label; +} + +GtkWidget * AddVBox( GtkWidget * parent,int type ) +{ + GtkWidget * vbox; + vbox=gtk_vbox_new( FALSE,0 ); + gtk_widget_set_name( vbox,"vbox" ); + gtk_widget_show( vbox ); + if ( parent ) + { + if ( type ) gtk_box_pack_start( GTK_BOX( parent ),vbox,FALSE,FALSE,0 ); + else gtk_container_add( GTK_CONTAINER( parent ),vbox ); + } + return vbox; +} + +GtkWidget * AddHBox( GtkWidget * parent,int type ) +{ + GtkWidget * hbox; + hbox=gtk_hbox_new( FALSE,0 ); + gtk_widget_set_name( hbox,"hbox" ); + gtk_widget_show( hbox ); + if ( parent ) + { + if ( type ) gtk_box_pack_start( GTK_BOX( parent ),hbox,FALSE,FALSE,0 ); + else gtk_container_add( GTK_CONTAINER( parent ),hbox ); + } + return hbox; +} + +GtkWidget * AddCheckButton( const char * title, GtkWidget * parent ) +{ + GtkWidget * CB; + CB=gtk_check_button_new_with_label( title ); + gtk_widget_set_name( CB,"CB" ); + gtk_widget_show( CB ); + gtk_box_pack_start( GTK_BOX( parent ),CB,FALSE,FALSE,0 ); + return CB; +} + +GtkWidget * AddRadioButton( const char * title,GSList ** group,GtkWidget * parent ) +{ + GtkWidget * RB; + RB=gtk_radio_button_new_with_label( *group,title ); + *group=gtk_radio_button_group( GTK_RADIO_BUTTON( RB ) ); + gtk_widget_set_name( RB,"RB" ); + gtk_widget_show( RB ); + gtk_box_pack_start( GTK_BOX( parent ),RB,FALSE,FALSE,0 ); + return RB; +} + +GtkWidget * AddSpinButton( const char * title,GtkAdjustment * adj,GtkWidget * parent ) +{ + GtkWidget * SB; + GtkWidget * label; + label=gtk_label_new( title ); + gtk_misc_set_alignment( GTK_MISC( label ),0,0.5 ); + gtk_box_pack_start( GTK_BOX( parent ),label,FALSE,FALSE,0 ); + gtk_widget_show( label ); + SB=gtk_spin_button_new( adj,0,0 ); + gtk_widget_set_name( SB,"SB" ); + gtk_box_pack_start( GTK_BOX( parent ),SB,FALSE,FALSE,0 ); + gtk_widget_show( SB ); + return SB; +} + +GtkWidget * AddButton( const char * title,GtkWidget * parent ) +{ + GtkWidget * B; + B=gtk_button_new_with_label( title ); + gtk_widget_set_name( B,"B" ); + gtk_widget_show( B ); + gtk_container_add( GTK_CONTAINER( parent ),B ); + return B; +} + +GtkWidget * AddHSeparator( GtkWidget * parent ) +{ + GtkWidget * hseparator; + hseparator=gtk_hseparator_new(); + gtk_widget_set_name( hseparator,"hseparator1" ); + gtk_widget_show( hseparator ); + gtk_box_pack_start( GTK_BOX( parent ),hseparator,FALSE,FALSE,0 ); + gtk_widget_set_usize( hseparator,-2,6 ); + return hseparator; +} + +GtkWidget * AddHButtonBox( GtkWidget * parent ) +{ + GtkWidget * hbuttonbox; + hbuttonbox=gtk_hbutton_box_new(); + gtk_widget_set_name( hbuttonbox,"hbuttonbox" ); + gtk_widget_show( hbuttonbox ); + gtk_box_pack_start( GTK_BOX( parent ),hbuttonbox,FALSE,FALSE,0 ); + gtk_button_box_set_child_size( GTK_BUTTON_BOX( hbuttonbox ),85,20 ); + return hbuttonbox; +} + +GtkWidget * AddHScaler( GtkAdjustment * adj,GtkWidget * parent,int digit ) +{ + GtkWidget * HS; + HS=gtk_hscale_new( adj ); + gtk_widget_set_name( HS,"HS" ); + gtk_widget_show( HS ); + if ( parent ) gtk_box_pack_start( GTK_BOX( parent ),HS,TRUE,TRUE,0 ); + gtk_scale_set_value_pos( GTK_SCALE( HS ),GTK_POS_RIGHT ); + gtk_scale_set_digits( GTK_SCALE( HS ),digit ); + return HS; +} + +GtkWidget * AddVScaler( GtkAdjustment * adj,GtkWidget * parent,int digit ) +{ + GtkWidget * VS; + VS=gtk_vscale_new( adj ); + gtk_widget_set_name( VS,"VS" ); + gtk_widget_show( VS ); + if ( parent ) gtk_box_pack_start( GTK_BOX( parent ),VS,TRUE,TRUE,0 ); +// gtk_scale_set_value_pos( GTK_SCALE( VS ),GTK_POS_RIGHT ); + if ( digit == -1 ) gtk_scale_set_draw_value( GTK_SCALE( VS ),FALSE ); + else gtk_scale_set_digits( GTK_SCALE( VS ),digit ); + return VS; +} + +GtkWidget * AddComboBox( GtkWidget * parent ) +{ + GtkWidget * CB; + CB=gtk_combo_new(); + gtk_widget_set_name( CB,"CB" ); + gtk_widget_show( CB ); + if ( parent ) gtk_box_pack_start( GTK_BOX( parent ),CB,TRUE,TRUE,0 ); + return CB; +} diff --git a/gui/mplayer/gtk/common.h b/gui/mplayer/gtk/common.h new file mode 100644 index 0000000000..d68a977622 --- /dev/null +++ b/gui/mplayer/gtk/common.h @@ -0,0 +1,24 @@ + +#ifndef __COMMON_H +#define __COMMON_H + +#include <gdk/gdkkeysyms.h> +#include <gtk/gtk.h> + +extern GtkWidget * AddDialogFrame( GtkWidget * parent ); +extern GtkWidget * AddFrame( const char * title,int type,GtkWidget * parent,int add ); +extern GtkWidget * AddLabel( const char * title,GtkWidget * parent ); +extern GtkWidget * AddVBox( GtkWidget * parent,int type ); +extern GtkWidget * AddHBox( GtkWidget * parent,int type ); +extern GtkWidget * AddCheckButton( const char * title, GtkWidget * parent ); +extern GtkWidget * AddRadioButton( const char * title,GSList ** group,GtkWidget * parent ); +extern GtkWidget * AddSpinButton( const char * title,GtkAdjustment * adj,GtkWidget * parent ); +extern GtkWidget * AddButton( const char * title,GtkWidget * parent ); +extern GtkWidget * AddHSeparator( GtkWidget * parent ); +extern GtkWidget * AddHButtonBox( GtkWidget * parent ); +extern GtkWidget * AddHScaler( GtkAdjustment * adj,GtkWidget * parent,int digit ); +extern GtkWidget * AddVScaler( GtkAdjustment * adj,GtkWidget * parent,int digit ); +extern GtkWidget * AddComboBox( GtkWidget * parent ); +extern void WidgetDestroy( GtkWidget * widget,GtkWidget ** widget_pointer ); + +#endif diff --git a/gui/mplayer/gtk/eq.c b/gui/mplayer/gtk/eq.c new file mode 100644 index 0000000000..640a7502d5 --- /dev/null +++ b/gui/mplayer/gtk/eq.c @@ -0,0 +1,670 @@ + +#include <stdlib.h> +#include <stdio.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h> +#include <string.h> + +#include <gdk/gdkkeysyms.h> +#include <gtk/gtk.h> + +#include "app.h" +#include "cfg.h" +#include "config.h" +#include "help_mp.h" +#include "libaf/equalizer.h" +#include "libvo/video_out.h" +#include "../widgets.h" + +#include "eq.h" +#include "common.h" + +#define eqRange 15 + +GtkWidget * Equalizer = NULL; +static GtkWidget * EquConfig; + +static GtkWidget * Notebook; +static GtkWidget * ChannelsList; +static GtkWidget * VContrast, * VBrightness, * VHue, * VSaturation; +static GtkAdjustment * VContrastadj, * VBrightnessadj, * VHueadj, * VSaturationadj; +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; + +// --- + +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; + gtk_adjustment_set_value( A3125adj,0.0f - gtkEquChannels[channel][0] ); + gtk_adjustment_set_value( A6250adj,0.0f - gtkEquChannels[channel][1] ); + gtk_adjustment_set_value( A125adj,0.0f - gtkEquChannels[channel][2] ); + gtk_adjustment_set_value( A250adj,0.0f - gtkEquChannels[channel][3] ); + gtk_adjustment_set_value( A500adj,0.0f - gtkEquChannels[channel][4] ); + gtk_adjustment_set_value( A1000adj,0.0f - gtkEquChannels[channel][5] ); + gtk_adjustment_set_value( A2000adj,0.0f - gtkEquChannels[channel][6] ); + gtk_adjustment_set_value( A4000adj,0.0f - gtkEquChannels[channel][7] ); + gtk_adjustment_set_value( A8000adj,0.0f - gtkEquChannels[channel][8] ); + gtk_adjustment_set_value( A16000adj,0.0f - gtkEquChannels[channel][9] ); + + if ( guiIntfStruct.sh_video ) + { + get_video_colors( guiIntfStruct.sh_video,"brightness",&vo_gamma_brightness ); + get_video_colors( guiIntfStruct.sh_video,"contrast",&vo_gamma_contrast ); + get_video_colors( guiIntfStruct.sh_video,"hue",&vo_gamma_hue ); + get_video_colors( guiIntfStruct.sh_video,"saturation",&vo_gamma_saturation ); + } + + gtk_adjustment_set_value( VContrastadj,(float)vo_gamma_contrast ); + gtk_adjustment_set_value( VBrightnessadj,(float)vo_gamma_brightness ); + gtk_adjustment_set_value( VHueadj,(float)vo_gamma_hue ); + gtk_adjustment_set_value( VSaturationadj,(float)vo_gamma_saturation ); +} + +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 ),0,0 ); +} + +void ShowEqualizer( void ) +{ + if ( Equalizer ) gtkActive( Equalizer ); + else Equalizer=create_Equalizer(); + + 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 ); + + eqSetChannelNames(); + + if ( !guiIntfStruct.Playing || !guiIntfStruct.sh_video ) + { + 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=-1; + 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 ( gtk_notebook_get_current_page( GTK_NOTEBOOK( Notebook ) ) == 0 ) gtk_widget_show( Config ); + gtk_widget_show( Equalizer ); +} + +void HideEqualizer( void ) +{ + if ( !Equalizer ) return; + gtk_widget_hide( Equalizer ); + gtk_widget_destroy( Equalizer ); + Equalizer=NULL; + if ( EquConfig ) HideEquConfig(); +} + +static gboolean eqHScaleMotion( GtkWidget * widget,GdkEventMotion * event,gpointer user_data ) +{ + equalizer_t eq; + switch ( (int)user_data ) + { + case 0: eq.gain=A3125adj->value; break; + case 1: eq.gain=A6250adj->value; break; + case 2: eq.gain=A125adj->value; break; + case 3: eq.gain=A250adj->value; break; + case 4: eq.gain=A500adj->value; break; + case 5: eq.gain=A1000adj->value; break; + case 6: eq.gain=A2000adj->value; break; + case 7: eq.gain=A4000adj->value; break; + case 8: eq.gain=A8000adj->value; break; + case 9: eq.gain=A16000adj->value; break; + default: return FALSE; + } + eq.gain=0.0f - eq.gain; + eq.band=(int)user_data; + if ( Channel == -1 ) + { + int i; + for ( i=0;i<6;i++ ) + { eq.channel=i; gtkSet( gtkSetEqualizer,0,&eq ); } + } else { eq.channel=Channel; gtkSet( gtkSetEqualizer,0,&eq ); } + + return FALSE; +} + +static gboolean eqVScaleMotion( GtkWidget * widget,GdkEventMotion * event,gpointer user_data ) +{ + + switch( (int)user_data ) + { + case 1: gtkSet( gtkSetContrast,VContrastadj->value,NULL ); break; + case 2: gtkSet( gtkSetBrightness,VBrightnessadj->value,NULL ); break; + case 3: gtkSet( gtkSetHue,VHueadj->value,NULL ); break; + case 4: gtkSet( gtkSetSaturation,VSaturationadj->value,NULL ); break; + } + + return FALSE; +} + +static void eqButtonReleased( GtkButton * button,gpointer user_data ) +{ + switch( (int)user_data ) + { + case 0: HideEqualizer(); break; + case 1: + 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 ) break; + gtkSet( gtkSetContrast,0.0f,NULL ); + gtkSet( gtkSetBrightness,0.0f,NULL ); + gtkSet( gtkSetHue,0.0f,NULL ); + gtkSet( gtkSetSaturation,0.0f,NULL ); + eqSetBands( Channel ); + } + break; + case 2: + ShowEquConfig(); + break; + } +} + +static void eqFocus( GtkWindow * window,GtkWidget * widget,gpointer user_data ) +{ eqSetBands( Channel ); } + +static void eqSelectChannelsListRow( GtkCList * clist,gint row,gint column,GdkEvent * event,gpointer user_data ) +{ + Channel=row - 1; + eqSetBands( Channel ); + if ( Channel == -1 ) + { + int i,j; equalizer_t eq; + for ( i=1;i<6;i++ ) + for ( j=0;j<10;j++ ) + { eq.band=j; eq.channel=i; eq.gain=gtkEquChannels[0][j]; gtkSet( gtkSetEqualizer,0,&eq ); } + } +} + +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 * vbox1; + GtkWidget * hbox1; + GtkWidget * scrolledwindow1; + GtkWidget * table1; + GtkWidget * hbuttonbox1; + GtkAccelGroup * accel_group; + + accel_group=gtk_accel_group_new(); + + Equalizer=gtk_window_new( GTK_WINDOW_TOPLEVEL ); + gtk_widget_set_name( Equalizer,MSGTR_Equalizer ); + gtk_object_set_data( GTK_OBJECT( Equalizer ),MSGTR_Equalizer,Equalizer ); + gtk_widget_set_usize( Equalizer,-1,256 ); + 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 ),"Equalizer","MPlayer" ); + + gtk_widget_realize( Equalizer ); + gtkAddIcon( Equalizer ); + + vbox1=AddVBox( AddDialogFrame( Equalizer ),0 ); + + Notebook=gtk_notebook_new(); + gtk_widget_set_name( Notebook,"Notebook" ); + gtk_widget_show( Notebook ); + gtk_box_pack_start( GTK_BOX( vbox1 ),Notebook,TRUE,TRUE,0 ); + gtk_container_set_border_width( GTK_CONTAINER( Notebook ),1 ); + + hbox1=AddHBox( Notebook,0 ); + + scrolledwindow1=gtk_scrolled_window_new( NULL,NULL ); + gtk_widget_set_name( scrolledwindow1,"scrolledwindow1" ); + gtk_widget_show( scrolledwindow1 ); + gtk_box_pack_start( GTK_BOX( hbox1 ),scrolledwindow1,FALSE,FALSE,0 ); + gtk_widget_set_usize( scrolledwindow1,106,-2 ); + gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW( scrolledwindow1 ),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC ); + + ChannelsList=gtk_clist_new( 1 ); + gtk_widget_set_name( ChannelsList,"ChannelsList" ); + gtk_widget_show( ChannelsList ); + gtk_container_add( GTK_CONTAINER( scrolledwindow1 ),ChannelsList ); + gtk_clist_set_column_width( GTK_CLIST( ChannelsList ),0,80 ); + gtk_clist_column_titles_hide( GTK_CLIST( ChannelsList ) ); + + table1=gtk_table_new( 2,10,FALSE ); + gtk_widget_set_name( table1,"table1" ); + gtk_widget_show( table1 ); + gtk_box_pack_start( GTK_BOX( hbox1 ),table1,FALSE,FALSE,0 ); + 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,-eqRange,eqRange,0.5,0,0 ) ); + A3125=AddVScaler( A3125adj,NULL,-1 ); + gtk_table_attach( GTK_TABLE( table1 ),A3125,0,1,0,1,(GtkAttachOptions)( GTK_FILL ),(GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),0,0 ); + + A6250adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-eqRange,eqRange,0.5,0,0 ) ); + A6250=AddVScaler( A6250adj,NULL,-1 ); + gtk_table_attach( GTK_TABLE( table1 ),A6250,1,2,0,1,(GtkAttachOptions)( GTK_FILL ),(GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),0,0 ); + + A125adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-eqRange,eqRange,0.5,0,0 ) ); + A125=AddVScaler( A125adj,NULL,-1 ); + gtk_table_attach( GTK_TABLE( table1 ),A125,2,3,0,1,(GtkAttachOptions)( GTK_FILL ),(GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),0,0 ); + + A250adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-eqRange,eqRange,0.5,0,0 ) ); + A250=AddVScaler( A250adj,NULL,-1 ); + gtk_table_attach( GTK_TABLE( table1 ),A250,3,4,0,1,(GtkAttachOptions)( GTK_FILL ),(GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),0,0 ); + + A500adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-eqRange,eqRange,0.5,0,0 ) ); + A500=AddVScaler( A500adj,NULL,-1 ); + gtk_table_attach( GTK_TABLE( table1 ),A500,4,5,0,1,(GtkAttachOptions)( GTK_FILL ),(GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),0,0 ); + + A1000adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-eqRange,eqRange,0.5,0,0 ) ); + A1000=AddVScaler( A1000adj,NULL,-1 ); + gtk_table_attach( GTK_TABLE( table1 ),A1000,5,6,0,1,(GtkAttachOptions)( GTK_FILL ),(GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),0,0 ); + + A2000adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-eqRange,eqRange,0.5,0,0 ) ); + A2000=AddVScaler( A2000adj,NULL,-1 ); + gtk_table_attach( GTK_TABLE( table1 ),A2000,6,7,0,1,(GtkAttachOptions)( GTK_FILL ),(GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),0,0 ); + + A4000adj=GTK_ADJUSTMENT( gtk_adjustment_new( 0,-eqRange,eqRange,0.5,0,0 ) ); + A4000=AddVScaler( A4000adj,NULL,-1 ); + gtk_table_attach( GTK_TABLE( table1 ),A4000,7,8 |