]> git.sesse.net Git - vlc/commitdiff
Removed the old streaming wizard\nSplitted the interface file into interface+extrapan...
authorClément Stenac <zorglub@videolan.org>
Mon, 12 Jul 2004 06:47:15 +0000 (06:47 +0000)
committerClément Stenac <zorglub@videolan.org>
Mon, 12 Jul 2004 06:47:15 +0000 (06:47 +0000)
modules/gui/wxwindows/Modules.am
modules/gui/wxwindows/dialogs.cpp
modules/gui/wxwindows/extrapanel.cpp [new file with mode: 0644]
modules/gui/wxwindows/interface.cpp
modules/gui/wxwindows/menus.cpp
modules/gui/wxwindows/messages.cpp
modules/gui/wxwindows/streamwizard.cpp [deleted file]
modules/gui/wxwindows/subtitles.cpp
modules/gui/wxwindows/wxwindows.h

index 7c777563c347e5fc48f49a7fb75cd7d9c11c314c..e8ed8c51939f14a0e695bfe22ac383a4130a40d6 100644 (file)
@@ -2,10 +2,10 @@ SOURCES_wxwindows = \
        wxwindows.cpp \
        wxwindows.h \
        interface.cpp \
+       extrapanel.cpp \
        dialogs.cpp \
        open.cpp \
        streamout.cpp \
-       streamwizard.cpp \
        wizard.cpp \
        messages.cpp \
        playlist.cpp \
index 2d06ba3ac27097639b7c0d8e1605b583af7f433a..c5bce255f3ec8bc1f1924b1e6140a979dd72b6ec 100644 (file)
@@ -55,7 +55,6 @@ private:
     void OnMessages( wxCommandEvent& event );
     void OnFileInfo( wxCommandEvent& event );
     void OnPreferences( wxCommandEvent& event );
-    void OnStreamWizardDialog( wxCommandEvent& event );
     void OnWizardDialog( wxCommandEvent& event );
     void OnBookmarks( wxCommandEvent& event );
 
@@ -84,7 +83,6 @@ public:
     Playlist            *p_playlist_dialog;
     Messages            *p_messages_dialog;
     FileInfo            *p_fileinfo_dialog;
-    StreamDialog        *p_streamwizard_dialog;
     WizardDialog        *p_wizard_dialog;
     wxFrame             *p_prefs_dialog;
     wxWindow            *p_bookmarks_dialog;
@@ -114,8 +112,6 @@ BEGIN_EVENT_TABLE(DialogsProvider, wxFrame)
                 DialogsProvider::OnMessages)
     EVT_COMMAND(INTF_DIALOG_PREFS, wxEVT_DIALOG,
                 DialogsProvider::OnPreferences)
-    EVT_COMMAND(INTF_DIALOG_STREAMWIZARD, wxEVT_DIALOG,
-                DialogsProvider::OnStreamWizardDialog)
     EVT_COMMAND(INTF_DIALOG_WIZARD, wxEVT_DIALOG,
                 DialogsProvider::OnWizardDialog)
     EVT_COMMAND(INTF_DIALOG_FILEINFO, wxEVT_DIALOG,
@@ -148,7 +144,6 @@ DialogsProvider::DialogsProvider( intf_thread_t *_p_intf, wxWindow *p_parent )
     p_fileinfo_dialog = NULL;
     p_prefs_dialog = NULL;
     p_file_generic_dialog = NULL;
-    p_streamwizard_dialog = NULL;
     p_wizard_dialog = NULL;
     p_bookmarks_dialog = NULL;
 
@@ -177,7 +172,6 @@ DialogsProvider::~DialogsProvider()
     if( p_messages_dialog ) delete p_messages_dialog;
     if( p_fileinfo_dialog ) delete p_fileinfo_dialog;
     if( p_file_generic_dialog ) delete p_file_generic_dialog;
-    if( p_streamwizard_dialog ) delete p_streamwizard_dialog;
     if( p_wizard_dialog ) delete p_wizard_dialog;
     if( p_bookmarks_dialog ) delete p_bookmarks_dialog;
 
@@ -254,18 +248,6 @@ void DialogsProvider::OnPreferences( wxCommandEvent& WXUNUSED(event) )
     }
 }
 
-void DialogsProvider::OnStreamWizardDialog( wxCommandEvent& WXUNUSED(event) )
-{
-    /* Show/hide the stream window */
-    if( !p_streamwizard_dialog )
-        p_streamwizard_dialog = new StreamDialog( p_intf, this );
-
-    if( p_streamwizard_dialog )
-    {
-        p_streamwizard_dialog->Show( !p_streamwizard_dialog->IsShown() );
-    }
-}
-
 void DialogsProvider::OnWizardDialog( wxCommandEvent& WXUNUSED(event) )
 {
     p_wizard_dialog = new WizardDialog( p_intf, this, NULL, 0, 0 );
diff --git a/modules/gui/wxwindows/extrapanel.cpp b/modules/gui/wxwindows/extrapanel.cpp
new file mode 100644 (file)
index 0000000..4818d1e
--- /dev/null
@@ -0,0 +1,1129 @@
+/*****************************************************************************
+ * extrapanel.cpp : wxWindows plugin for vlc
+ *****************************************************************************
+ * Copyright (C) 2000-2004, 2003 VideoLAN
+ * $Id: interface.cpp 8152 2004-07-08 10:52:23Z gbazin $
+ *
+ * Authors: Clément Stenac <zorglub@videolan.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Preamble
+ *****************************************************************************/
+#include <vlc/vlc.h>
+#include <vlc/aout.h>
+#include <aout_internal.h>
+#include <vlc/vout.h>
+#include <vlc/intf.h>
+
+#include <math.h>
+
+#include "wxwindows.h"
+
+/*****************************************************************************
+ * Local class declarations.
+ *****************************************************************************/
+
+/* FIXME */
+#define SMOOTH_TIP N_( "If this setting is not zero, the bands will move " \
+                "together when you move one. The higher the value is, the " \
+                "more correlated their movement will be." )
+
+static int IntfBandsCallback( vlc_object_t *p_this, char const *psz_cmd,
+                          vlc_value_t oldval, vlc_value_t newval, void *param );
+static int IntfPreampCallback( vlc_object_t *p_this, char const *psz_cmd,
+                          vlc_value_t oldval, vlc_value_t newval, void *param );
+static void ChangeFiltersString( intf_thread_t *p_intf,
+                                 aout_instance_t * p_aout,
+                                 char *psz_name, vlc_bool_t b_add );
+static void ChangeVFiltersString( intf_thread_t *p_intf,
+                                 char *psz_name, vlc_bool_t b_add );
+
+
+/* IDs for the controls and the menu commands */
+enum
+{
+    Notebook_Event,
+
+    Adjust_Event,
+    RestoreDefaults_Event,
+
+    Hue_Event,
+    Contrast_Event,
+    Brightness_Event,
+    Saturation_Event,
+    Gamma_Event,
+    Ratio_Event,
+
+    FiltersInfo_Event,
+
+    Filter0_Event, Filter1_Event, Filter2_Event, Filter3_Event, Filter4_Event,
+    Filter5_Event, Filter6_Event, Filter7_Event, Filter8_Event, Filter9_Event,
+
+    EqEnable_Event,
+    Eq2Pass_Event,
+    EqRestore_Event,
+
+    Smooth_Event,
+
+    Preamp_Event,
+
+    Band0_Event,Band1_Event,Band2_Event,Band3_Event,Band4_Event,
+    Band5_Event,Band6_Event,Band7_Event,Band8_Event,Band9_Event,
+
+    NormVol_Event, NVSlider_Event, HeadPhone_Event
+};
+
+BEGIN_EVENT_TABLE( ExtraPanel, wxPanel )
+    EVT_IDLE( ExtraPanel::OnIdle )
+
+    /* Equalizer */
+    EVT_CHECKBOX( EqEnable_Event, ExtraPanel::OnEnableEqualizer )
+    EVT_CHECKBOX( Eq2Pass_Event, ExtraPanel::OnEq2Pass )
+    EVT_BUTTON( EqRestore_Event, ExtraPanel::OnEqRestore )
+
+    EVT_COMMAND_SCROLL( Preamp_Event, ExtraPanel::OnPreamp )
+    EVT_COMMAND_SCROLL( Smooth_Event, ExtraPanel::OnEqSmooth )
+
+    EVT_COMMAND_SCROLL(Band0_Event, ExtraPanel::OnChangeEqualizer)
+    EVT_COMMAND_SCROLL(Band1_Event, ExtraPanel::OnChangeEqualizer)
+    EVT_COMMAND_SCROLL(Band2_Event, ExtraPanel::OnChangeEqualizer)
+    EVT_COMMAND_SCROLL(Band3_Event, ExtraPanel::OnChangeEqualizer)
+    EVT_COMMAND_SCROLL(Band4_Event, ExtraPanel::OnChangeEqualizer)
+    EVT_COMMAND_SCROLL(Band5_Event, ExtraPanel::OnChangeEqualizer)
+    EVT_COMMAND_SCROLL(Band6_Event, ExtraPanel::OnChangeEqualizer)
+    EVT_COMMAND_SCROLL(Band7_Event, ExtraPanel::OnChangeEqualizer)
+    EVT_COMMAND_SCROLL(Band8_Event, ExtraPanel::OnChangeEqualizer)
+    EVT_COMMAND_SCROLL(Band9_Event, ExtraPanel::OnChangeEqualizer)
+
+    /* Video */
+    EVT_CHECKBOX( Adjust_Event, ExtraPanel::OnEnableAdjust )
+    EVT_BUTTON( RestoreDefaults_Event, ExtraPanel::OnRestoreDefaults )
+
+    EVT_COMMAND_SCROLL(Hue_Event, ExtraPanel::OnAdjustUpdate)
+    EVT_COMMAND_SCROLL(Contrast_Event, ExtraPanel::OnAdjustUpdate)
+    EVT_COMMAND_SCROLL(Brightness_Event, ExtraPanel::OnAdjustUpdate)
+    EVT_COMMAND_SCROLL(Saturation_Event, ExtraPanel::OnAdjustUpdate)
+    EVT_COMMAND_SCROLL(Gamma_Event, ExtraPanel::OnAdjustUpdate)
+
+    EVT_BUTTON( FiltersInfo_Event, ExtraPanel::OnFiltersInfo )
+
+    EVT_CHECKBOX( Filter0_Event, ExtraPanel::OnSelectFilter )
+    EVT_CHECKBOX( Filter1_Event, ExtraPanel::OnSelectFilter )
+    EVT_CHECKBOX( Filter2_Event, ExtraPanel::OnSelectFilter )
+    EVT_CHECKBOX( Filter3_Event, ExtraPanel::OnSelectFilter )
+    EVT_CHECKBOX( Filter4_Event, ExtraPanel::OnSelectFilter )
+    EVT_CHECKBOX( Filter5_Event, ExtraPanel::OnSelectFilter )
+    EVT_CHECKBOX( Filter6_Event, ExtraPanel::OnSelectFilter )
+    EVT_CHECKBOX( Filter7_Event, ExtraPanel::OnSelectFilter )
+    EVT_CHECKBOX( Filter8_Event, ExtraPanel::OnSelectFilter )
+    EVT_CHECKBOX( Filter9_Event, ExtraPanel::OnSelectFilter )
+
+    /* Audio */
+    EVT_CHECKBOX( NormVol_Event, ExtraPanel::OnNormvol )
+    EVT_CHECKBOX( HeadPhone_Event, ExtraPanel::OnHeadphone )
+
+    EVT_COMMAND_SCROLL( NVSlider_Event, ExtraPanel::OnNormvolSlider )
+
+END_EVENT_TABLE()
+
+struct filter {
+    char *psz_filter;
+    char *psz_name;
+    char *psz_help;
+};
+
+static const struct filter vfilters[] =
+{
+    { "clone", "Image clone","Creates several clones of the image" },
+    { "distort", "Distortion", "Adds distorsion effects" },
+    { "invert", "Image inversion" , "Inverts the image colors" },
+    { "crop","Image cropping", "Crops the image" },
+    { "motionblur", "Blurring", "Creates a motion blurring on the image" },
+    { "transform","Transformation","Rotates or flips the image" },
+    {NULL , NULL , NULL } /* Do not remove this line */
+};
+
+/*****************************************************************************
+ * Constructor.
+ *****************************************************************************/
+ExtraPanel::ExtraPanel( intf_thread_t *_p_intf, wxWindow *_p_parent ):
+        wxPanel( _p_parent , -1, wxDefaultPosition, wxDefaultSize )
+{
+
+    p_intf = _p_intf;
+    p_parent = _p_parent;
+    SetAutoLayout( TRUE );
+
+    wxBoxSizer *extra_sizer = new wxBoxSizer( wxHORIZONTAL );
+
+    notebook = new wxNotebook( this, Notebook_Event );
+
+    wxNotebookSizer *notebook_sizer = new wxNotebookSizer( notebook );
+
+    notebook->AddPage( VideoPanel( notebook ), wxU(_("Video")) );
+    notebook->AddPage( EqzPanel( notebook ), wxU(_("Equalizer")) );
+    notebook->AddPage( AudioPanel( notebook ), wxU(_("Audio")) );
+
+    extra_sizer->Add( notebook_sizer, 1, wxEXPAND, 0 );
+
+    SetSizerAndFit( extra_sizer );
+    extra_sizer->Layout();
+}
+
+ExtraPanel::~ExtraPanel()
+{
+}
+
+
+/* Video Panel constructor */
+wxPanel *ExtraPanel::VideoPanel( wxWindow *parent )
+{
+    char *psz_filters;
+
+    wxPanel *panel = new wxPanel( parent, -1 );
+    wxBoxSizer *panel_sizer = new wxBoxSizer( wxHORIZONTAL );
+
+    /* Create static box to surround the adjust controls */
+    wxStaticBox *adjust_box =
+           new wxStaticBox( panel, -1, wxU(_("Adjust Image")) );
+    wxStaticBoxSizer *adjust_sizer =
+        new wxStaticBoxSizer( adjust_box, wxVERTICAL );
+    adjust_sizer->SetMinSize( -1, 50 );
+
+    /* Create flex grid */
+    wxFlexGridSizer *adjust_gridsizer =
+        new wxFlexGridSizer( 6, 2, 0, 0);
+    adjust_gridsizer->AddGrowableCol(1);
+
+    /* Create the adjust button */
+    wxCheckBox * adjust_check = new wxCheckBox( panel, Adjust_Event,
+                                                 wxU(_("Enable")));
+
+    /* Create the restore to defaults button */
+    restoredefaults_button =
+        new wxButton( panel, RestoreDefaults_Event,
+        wxU(_("Restore Defaults")), wxDefaultPosition);
+
+    wxStaticText *hue_text = new wxStaticText( panel, -1,
+                                       wxU(_("Hue")) );
+    hue_slider = new wxSlider ( panel, Hue_Event, 0, 0,
+                                360, wxDefaultPosition, wxDefaultSize );
+
+    wxStaticText *contrast_text = new wxStaticText( panel, -1,
+                                       wxU(_("Contrast")) );
+    contrast_slider = new wxSlider ( panel, Contrast_Event, 0, 0,
+                                200, wxDefaultPosition, wxDefaultSize);
+
+    wxStaticText *brightness_text = new wxStaticText( panel, -1,
+                                       wxU(_("Brightness")) );
+    brightness_slider = new wxSlider ( panel, Brightness_Event, 0, 0,
+                           200, wxDefaultPosition, wxDefaultSize) ;
+
+    wxStaticText *saturation_text = new wxStaticText( panel, -1,
+                                          wxU(_("Saturation")) );
+    saturation_slider = new wxSlider ( panel, Saturation_Event, 0, 0,
+                           300, wxDefaultPosition, wxDefaultSize );
+
+    wxStaticText *gamma_text = new wxStaticText( panel, -1,
+                                          wxU(_("Gamma")) );
+    gamma_slider = new wxSlider ( panel, Gamma_Event, 0, 0,
+                           100, wxDefaultPosition, wxDefaultSize );
+
+    adjust_gridsizer->Add(adjust_check, 1, wxEXPAND, 0);
+    adjust_gridsizer->Add(restoredefaults_button, 1, wxEXPAND, 0);
+    adjust_gridsizer->Add(hue_text, 1, wxEXPAND, 0);
+    adjust_gridsizer->Add(hue_slider, 1, wxEXPAND, 0);
+    adjust_gridsizer->Add(contrast_text, 1, wxEXPAND, 0);
+    adjust_gridsizer->Add(contrast_slider, 1, wxEXPAND, 0);
+    adjust_gridsizer->Add(brightness_text, 1, wxEXPAND, 0);
+    adjust_gridsizer->Add(brightness_slider, 1, wxEXPAND, 0);
+    adjust_gridsizer->Add(saturation_text, 1, wxEXPAND, 0);
+    adjust_gridsizer->Add(saturation_slider, 1, wxEXPAND, 0);
+    adjust_gridsizer->Add(gamma_text, 1, wxEXPAND, 0);
+    adjust_gridsizer->Add(gamma_slider, 1, wxEXPAND, 0);
+
+    adjust_sizer->Add(adjust_gridsizer,1,wxEXPAND, 0);
+
+    panel_sizer->Add( adjust_sizer , 1 );
+
+#if 0
+    /* Create sizer to surround the other controls */
+    wxBoxSizer *other_sizer = new wxBoxSizer( wxVERTICAL );
+
+    wxStaticBox *video_box =
+            new wxStaticBox( panel, -1, wxU(_("Video Options")) );
+    /* Create the sizer for the frame */
+    wxStaticBoxSizer *video_sizer =
+       new wxStaticBoxSizer( video_box, wxVERTICAL );
+    video_sizer->SetMinSize( -1, 50 );
+
+    static const wxString ratio_array[] =
+    {
+        wxT("4:3"),
+        wxT("16:9"),
+    };
+
+    wxBoxSizer *ratio_sizer = new wxBoxSizer( wxHORIZONTAL );
+    wxStaticText *ratio_text = new wxStaticText( panel, -1,
+                                          wxU(_("Aspect Ratio")) );
+
+    ratio_combo = new wxComboBox( panel, Ratio_Event, wxT(""),
+                                  wxDefaultPosition, wxSize( 80 , -1),
+                                  WXSIZEOF(ratio_array), ratio_array,
+                                  0 );
+
+    ratio_sizer->Add( ratio_text, 0 );
+    ratio_sizer->Add( ratio_combo, 0 );
+    ratio_sizer->Layout();
+
+    video_sizer->Add( ratio_sizer  , 0 , wxALL , 0 );
+    video_sizer->Layout();
+#endif
+    wxStaticBox *filter_box =
+                  new wxStaticBox( panel, -1, wxU(_("Video Filters")) );
+    wxStaticBoxSizer *filter_sizer =
+                   new wxStaticBoxSizer( filter_box, wxHORIZONTAL );
+
+    wxBoxSizer *t_col_sizer = new wxBoxSizer( wxVERTICAL );
+
+
+    for( int i = 0 ; vfilters[i].psz_filter != NULL ; i++ )
+    {
+        wxCheckBox *box = new wxCheckBox( panel, Filter0_Event + i,
+                                          wxT( _( vfilters[i].psz_name ) ) );
+        t_col_sizer->Add( box );
+        box->SetToolTip( wxT( _( vfilters[i].psz_help ) ) );
+    }
+
+    filter_sizer->Add( t_col_sizer );
+    filter_sizer->Add( new wxButton( panel, FiltersInfo_Event,
+                            wxU(_("More info" ) ) ) );
+#if 0
+    other_sizer->Add( video_sizer, 0, wxALL | wxEXPAND , 0);
+    other_sizer->Add( filter_sizer, 0, wxALL | wxEXPAND , 0);
+    other_sizer->Layout();
+    panel_sizer->Add(other_sizer , 1 );
+#endif
+
+    panel_sizer->Add( filter_sizer, 1 );
+
+    panel->SetSizerAndFit( panel_sizer );
+
+    /* Layout the whole panel */
+    panel_sizer->Layout();
+
+    panel_sizer->SetSizeHints( panel );
+
+    /* Write down initial values */
+    psz_filters = config_GetPsz( p_intf, "filter" );
+    if( psz_filters && strstr( psz_filters, "adjust" ) )
+    {
+        adjust_check->SetValue( 1 );
+        restoredefaults_button->Enable();
+        saturation_slider->Enable();
+        contrast_slider->Enable();
+        brightness_slider->Enable();
+        hue_slider->Enable();
+        gamma_slider->Enable();
+    }
+    else
+    {
+        adjust_check->SetValue( 0 );
+        restoredefaults_button->Disable();
+        saturation_slider->Disable();
+        contrast_slider->Disable();
+        brightness_slider->Disable();
+        hue_slider->Disable();
+        gamma_slider->Disable();
+    }
+    if( psz_filters ) free( psz_filters );
+
+    int i_value = config_GetInt( p_intf, "hue" );
+    if( i_value > 0 && i_value < 360 )
+        hue_slider->SetValue( i_value );
+    float f_value;
+    f_value = config_GetFloat( p_intf, "saturation" );
+    if( f_value > 0 && f_value < 5 )
+        saturation_slider->SetValue( (int)(100 * f_value) );
+    f_value = config_GetFloat( p_intf, "contrast" );
+    if( f_value > 0 && f_value < 4 )
+        contrast_slider->SetValue( (int)(100 * f_value) );
+    f_value = config_GetFloat( p_intf, "brightness" );
+    if( f_value > 0 && f_value < 2 )
+        brightness_slider->SetValue( (int)(100 * f_value) );
+    f_value = config_GetFloat( p_intf, "gamma" );
+    if( f_value > 0 && f_value < 10 )
+        gamma_slider->SetValue( (int)(10 * f_value) );
+
+    return panel;
+}
+
+/* Audio panel constructor */
+wxPanel *ExtraPanel::AudioPanel( wxWindow *parent )
+{
+    char *psz_filters;
+
+    wxPanel *panel = new wxPanel( parent, -1 );
+    wxBoxSizer *panel_sizer = new wxBoxSizer( wxHORIZONTAL );
+
+    /* Create static box to surround the adjust controls */
+    wxStaticBox *filter_box =
+           new wxStaticBox( panel, -1, wxU(_("Audio filters")) );
+    wxStaticBoxSizer *filter_sizer =
+        new wxStaticBoxSizer( filter_box, wxVERTICAL );
+    filter_sizer->SetMinSize( -1, 50 );
+
+    wxCheckBox * headphone_check = new wxCheckBox( panel, HeadPhone_Event,
+                                    wxU(_("Headphone virtualization")));
+    headphone_check->SetToolTip( wxU(_("This filter gives the feeling of a "
+             "5.1 speaker set when using a headphone." ) ) );
+
+    wxCheckBox * normvol_check = new wxCheckBox( panel, NormVol_Event,
+                                    wxU(_("Volume normalization")));
+    normvol_check->SetToolTip( wxU(_("This filter prevents the audio output "
+                         "power from going over a defined value" ) ) );
+
+    wxStaticText *normvol_label = new wxStaticText( panel, -1,
+                                   wxU( _("Maximum level") ) );
+
+    wxSlider *normvol_slider = new wxSlider ( panel, NVSlider_Event, 20, 5,
+                           100, wxDefaultPosition, wxSize( 100, -1 ) );
+
+    filter_sizer->Add( headphone_check );
+    filter_sizer->Add( normvol_check );
+    filter_sizer->Add( normvol_label, 0, wxLEFT, 10 );
+    filter_sizer->Add( normvol_slider, 0, wxLEFT, 10 );
+
+    panel_sizer->Add( filter_sizer, 1 );
+    panel->SetSizerAndFit( panel_sizer );
+    panel_sizer->Layout();
+    panel_sizer->SetSizeHints( panel );
+
+    /* Write down initial values */
+    psz_filters = config_GetPsz( p_intf, "audio-filter" );
+    if( psz_filters )
+    {
+        headphone_check->SetValue( strstr( psz_filters, "headphone" ) );
+        normvol_check->SetValue( strstr( psz_filters, "normvol" ) );
+        free( psz_filters );
+    }
+    else
+    {
+        headphone_check->SetValue( 0 );
+        normvol_check->SetValue( 0 );
+    }
+
+    return panel;
+}
+
+
+static const wxString band_frequencies[] =
+{
+    wxT(" 60 Hz"),
+    wxT("170 Hz"),
+    wxT("310 Hz"),
+    wxT("600 Hz"),
+    wxT(" 1 kHz"),
+    wxT(" 3 kHz"),
+    wxT(" 6 kHz"),
+    wxT("12 kHz"),
+    wxT("14 kHz"),
+    wxT("16 kHz")
+};
+
+/* Equalizer Panel constructor */
+wxPanel *ExtraPanel::EqzPanel( wxWindow *parent )
+{
+    wxPanel *panel = new wxPanel( parent, -1 );
+    wxBoxSizer *panel_sizer = new wxBoxSizer( wxVERTICAL );
+
+    /* Create static box to surround the adjust controls */
+    wxBoxSizer *top_sizer =
+        new wxBoxSizer( wxHORIZONTAL );
+
+    /* Create the enable button */
+    eq_chkbox =  new wxCheckBox( panel, EqEnable_Event,
+                            wxU(_("Enable") ) );
+    eq_chkbox->SetToolTip( wxU(_("Enable the equalizer. You can either "
+    "manually change the bands or use a preset (Audio Menu->Equalizer)." ) ) );
+    top_sizer->Add( eq_chkbox );
+
+    eq_2p_chkbox =  new wxCheckBox( panel, Eq2Pass_Event,
+                            wxU(_("2 Pass") ) );
+
+    eq_2p_chkbox->SetToolTip( wxU(_("If you enable this settting, the "
+     "equalizer filter will be applied twice. The effect will be sharper") ) );
+
+    top_sizer->Add( eq_2p_chkbox );
+
+    top_sizer->Add( 0, 0, 1 );
+
+    top_sizer->Add( new wxButton( panel, EqRestore_Event,
+                                  wxU( _("Restore defaults") ) ) );
+    top_sizer->Add( 0, 0, 1 );
+
+    wxStaticText *smooth_text = new wxStaticText( panel, -1, wxU( "Smooth :" ));
+    smooth_text->SetToolTip( wxU( SMOOTH_TIP ) );
+    top_sizer->Add( smooth_text );
+
+    smooth_slider =new wxSlider( panel, Smooth_Event, 0, 0, 10 ,
+                    wxDefaultPosition, wxSize( 100, -1 ) );
+    smooth_slider->SetToolTip( wxU( SMOOTH_TIP ) );
+    top_sizer->Add( smooth_slider );
+
+    /* Create flex grid */
+    wxFlexGridSizer *eq_gridsizer =
+        new wxFlexGridSizer( 2, 12, 0, 0);
+    eq_gridsizer->AddGrowableRow( 0 );
+    eq_gridsizer->AddGrowableCol( 1 );
+
+    preamp_slider = new wxSlider( panel, Preamp_Event, 200, 0, 400,
+                    wxDefaultPosition, wxSize( -1 , 90 ) , wxSL_VERTICAL );
+    eq_gridsizer->Add( preamp_slider, 1, wxEXPAND, 0 );
+
+    eq_gridsizer->Add( 0,0,1 );
+
+    for( int i = 0 ; i < 10 ; i++ )
+    {
+        band_sliders[i] = new wxSlider( panel, Band0_Event + i, 200, 0, 400,
+                    wxDefaultPosition, wxSize( -1 , 90 ) , wxSL_VERTICAL );
+
+        i_values[i] = 200;
+        eq_gridsizer->Add( band_sliders[i], 1, wxEXPAND, 0 );
+    }
+
+    preamp_text = new wxStaticText( panel, -1, wxT( "Preamp\n0.0dB" ) );
+    wxFont font= preamp_text->GetFont();
+    font.SetPointSize(7);
+    preamp_text->SetFont( font );
+    eq_gridsizer->Add( preamp_text );
+
+    eq_gridsizer->Add( 0,0,1 );
+
+    for( int i = 0 ; i < 10 ; i++ )
+    {
+        band_texts[i] = new wxStaticText( panel, -1,
+                                band_frequencies[i] + wxU("\n0.0dB" ) ) ;
+        eq_gridsizer->Add( band_texts[i], 1, wxEXPAND, 0 );
+        wxFont font= band_texts[i]->GetFont();
+        font.SetPointSize(7);
+        band_texts[i]->SetFont( font );
+    }
+
+    panel_sizer->Add( top_sizer , 0 , wxTOP | wxEXPAND , 5 );
+    panel_sizer->Add( eq_gridsizer , 0 , wxEXPAND , 0 );
+
+    panel->SetSizer( panel_sizer );
+
+    panel_sizer->Layout();
+
+    panel_sizer->SetSizeHints( panel );
+
+    CheckAout();
+    return panel;
+}
+
+/*******************************************************
+ * Event handlers
+ *******************************************************/
+
+/* Keep aout up to date and update the bands if needed */
+void ExtraPanel::OnIdle( wxIdleEvent &event )
+{
+    CheckAout();
+    if( b_update == VLC_TRUE )
+    {
+        if( b_my_update == VLC_TRUE )
+        {
+            b_update = b_my_update = VLC_FALSE;
+            return;
+        }
+        char *p = psz_bands;
+        for( int i = 0; i < 10; i++ )
+        {
+                float f;
+                char psz_val[5];
+                int i_val;
+                /* Read dB -20/20*/
+                f = strtof( p, &p );
+                i_val= (int)( ( f + 20 ) * 10 );
+                band_sliders[i]->SetValue( 400 - i_val );
+                i_values[i] = 400 - i_val;
+                sprintf( psz_val, "%.1f", f );
+                band_texts[i]->SetLabel( band_frequencies[i] + wxT("\n") +
+                                                wxT( psz_val ) + wxT("dB") );
+                if( p == NULL )
+                {
+                    break;
+                }
+                p++;
+                if( *p == 0 )
+                    break;
+        }
+        char psz_val[5];
+        int i_val = (int)( ( f_preamp + 20 ) * 10 );
+        sprintf( psz_val, "%.1f", f_preamp );
+        preamp_slider->SetValue( 400 - i_val );
+        const wxString preamp = wxT("Preamp\n");
+        preamp_text->SetLabel( preamp + wxT( psz_val ) + wxT( "dB" ) );
+        eq_chkbox->SetValue( TRUE );
+        b_update = VLC_FALSE;
+    }
+}
+
+/*************************
+ *  Equalizer Panel events
+ *************************/
+void ExtraPanel::OnEnableEqualizer( wxCommandEvent &event )
+{
+    aout_instance_t *p_aout= (aout_instance_t *)vlc_object_find(p_intf,
+                                 VLC_OBJECT_AOUT, FIND_ANYWHERE);
+    ChangeFiltersString( p_intf,p_aout, "equalizer",
+                         event.IsChecked() ? VLC_TRUE : VLC_FALSE );
+    if( p_aout != NULL )
+        vlc_object_release( p_aout );
+}
+
+void ExtraPanel::OnEqRestore( wxCommandEvent &event )
+{
+    aout_instance_t *p_aout= (aout_instance_t *)vlc_object_find(p_intf,
+                                 VLC_OBJECT_AOUT, FIND_ANYWHERE);
+    if( p_aout == NULL )
+    {
+        config_PutFloat( p_intf, "equalizer-preamp", 0.0 );
+        config_PutPsz( p_intf, "equalizer-bands",
+                        "0 0 0 0 0 0 0 0 0 0");
+    }
+    else
+    {
+        var_SetFloat( p_aout, "equalizer-preamp", 0.0 );
+        var_SetString( p_aout, "equalizer-bands",
+                        "0 0 0 0 0 0 0 0 0 0");
+        vlc_object_release( p_aout );
+    }
+}
+
+void ExtraPanel::OnEq2Pass( wxCommandEvent &event )
+{
+    aout_instance_t *p_aout= (aout_instance_t *)vlc_object_find(p_intf,
+                                 VLC_OBJECT_AOUT, FIND_ANYWHERE);
+
+    vlc_bool_t b_2p = event.IsChecked() ? VLC_TRUE : VLC_FALSE;
+
+    if( p_aout == NULL )
+    {
+        config_PutInt( p_intf, "equalizer-2pass", b_2p );
+    }
+    else
+    {
+        var_SetBool( p_aout, "equalizer-2pass", b_2p );
+        if( eq_chkbox->IsChecked() )
+        {
+            for( int i = 0; i < p_aout->i_nb_inputs; i++ )
+            {
+                p_aout->pp_inputs[i]->b_restart = VLC_TRUE;
+            }
+        }
+        vlc_object_release( p_aout );
+    }
+}
+
+void ExtraPanel::OnEqSmooth( wxScrollEvent &event )
+{
+    /* Max smoothing : 70% */
+    i_smooth = event.GetPosition() * 7;
+}
+
+void ExtraPanel::OnPreamp( wxScrollEvent &event )
+{
+    float f= (float)( 400 - event.GetPosition() ) / 10 - 20 ;
+    char psz_val[5];
+
+    aout_instance_t *p_aout= (aout_instance_t *)vlc_object_find(p_intf,
+                                 VLC_OBJECT_AOUT, FIND_ANYWHERE);
+
+    sprintf( psz_val, "%.1f", f );
+    const wxString preamp = wxT("Preamp\n");
+    preamp_text->SetLabel( preamp + wxT( psz_val ) + wxT( "dB" ) );
+
+    if( p_aout == NULL )
+    {
+        config_PutFloat( p_intf, "equalizer-preamp", f );
+    }
+    else
+    {
+        var_SetFloat( p_aout, "equalizer-preamp", f );
+        b_my_update = VLC_TRUE;
+        vlc_object_release( p_aout );
+    }
+}
+
+void ExtraPanel::OnChangeEqualizer( wxScrollEvent &event )
+{
+    aout_instance_t *p_aout= (aout_instance_t *)vlc_object_find(p_intf,
+                                 VLC_OBJECT_AOUT, FIND_ANYWHERE);
+    char psz_values[102];
+    memset( psz_values, 0, 102 );
+
+    /* Smoothing */
+    int i_diff = event.GetPosition() - i_values[  event.GetId() - Band0_Event ];
+    i_values[ event.GetId() - Band0_Event] = event.GetPosition();
+
+    for( int i = event.GetId() + 1 ; i <= Band9_Event ; i++ )
+    {
+        int i_new = band_sliders[ i-Band0_Event ]->GetValue() +
+           (int)( i_diff * pow( (float)i_smooth / 100 , i- event.GetId() ) ) ;
+        if( i_new < 0 ) i_new = 0;
+        if( i_new > 400 ) i_new = 400;
+        band_sliders[ i-Band0_Event ]->SetValue( i_new );
+    }
+    for( int i = Band0_Event ; i < event.GetId() ; i++ )
+    {
+        int i_new =   band_sliders[ i-Band0_Event ]->GetValue() +
+           (int)( i_diff * pow( (float)i_smooth / 100 , event.GetId() - i  ) );
+        if( i_new < 0 ) i_new = 0;
+        if( i_new > 400 ) i_new = 400;
+        band_sliders[ i-Band0_Event ]->SetValue( i_new );
+    }
+
+    /* Write the new bands values */
+    for( int i = 0 ; i < 10 ; i++ )
+    {
+        char psz_val[5];
+        float f_val = (float)( 400 - band_sliders[i]->GetValue() ) / 10- 20 ;
+        sprintf( psz_values, "%s %f", psz_values, f_val );
+        sprintf( psz_val, "%.1f", f_val );
+        band_texts[i]->SetLabel( band_frequencies[i] + wxT("\n") +
+                        wxT( psz_val ) + wxT("dB" ) );
+    }
+    if( p_aout == NULL )
+    {
+        config_PutPsz( p_intf, "equalizer-bands", psz_values );
+    }
+    else
+    {
+        var_SetString( p_aout, "equalizer-bands", psz_values );
+        b_my_update = VLC_TRUE;
+        vlc_object_release( p_aout );
+    }
+}
+
+/***********************
+ * Audio Panel events
+ ***********************/
+void ExtraPanel::OnHeadphone( wxCommandEvent &event )
+{
+    aout_instance_t *p_aout= (aout_instance_t *)vlc_object_find(p_intf,
+                                 VLC_OBJECT_AOUT, FIND_ANYWHERE);
+    ChangeFiltersString( p_intf , p_aout, "headphone",
+                         event.IsChecked() ? VLC_TRUE : VLC_FALSE );
+    if( p_aout != NULL )
+        vlc_object_release( p_aout );
+}
+
+void ExtraPanel::OnNormvol( wxCommandEvent &event )
+{
+    aout_instance_t *p_aout= (aout_instance_t *)vlc_object_find(p_intf,
+                                 VLC_OBJECT_AOUT, FIND_ANYWHERE);
+    ChangeFiltersString( p_intf , p_aout, "normvol",
+                         event.IsChecked() ? VLC_TRUE : VLC_FALSE );
+    if( p_aout != NULL )
+        vlc_object_release( p_aout );
+}
+
+void ExtraPanel::OnNormvolSlider( wxScrollEvent &event )
+{
+    aout_instance_t *p_aout= (aout_instance_t *)vlc_object_find(p_intf,
+                                 VLC_OBJECT_AOUT, FIND_ANYWHERE);
+    if( p_aout != NULL )
+    {
+        var_SetFloat( p_aout, "norm-max-level", (float)event.GetPosition()/10 );
+        vlc_object_release( p_aout );
+    }
+    else
+    {
+        config_PutFloat( p_intf, "norm-max-level",
+                        (float)event.GetPosition()/10 );
+    }
+}
+/***********************
+ *  Video Panel events
+ ***********************/
+void ExtraPanel::OnEnableAdjust(wxCommandEvent& event)
+{
+    ChangeVFiltersString( p_intf,  "adjust",
+                          event.IsChecked() ? VLC_TRUE : VLC_FALSE );
+
+    if( event.IsChecked() )
+    {
+        restoredefaults_button->Enable();
+        brightness_slider->Enable();
+        saturation_slider->Enable();
+        contrast_slider->Enable();
+        hue_slider->Enable();
+        gamma_slider->Enable();
+    }
+    else
+    {
+        restoredefaults_button->Disable();
+        brightness_slider->Disable();
+        saturation_slider->Disable();
+        contrast_slider->Disable();
+        hue_slider->Disable();
+        gamma_slider->Disable();
+    }
+}
+
+void ExtraPanel::OnRestoreDefaults( wxCommandEvent &event)
+{
+    hue_slider->SetValue(0);
+    saturation_slider->SetValue(100);
+    brightness_slider->SetValue(100);
+    contrast_slider->SetValue(100),
+    gamma_slider->SetValue(10);
+
+    wxScrollEvent *hscroll_event = new wxScrollEvent(0, Hue_Event, 0);
+    OnAdjustUpdate(*hscroll_event);
+
+    wxScrollEvent *sscroll_event = new wxScrollEvent(0, Saturation_Event, 100);
+    OnAdjustUpdate(*sscroll_event);
+
+    wxScrollEvent *bscroll_event = new wxScrollEvent(0, Brightness_Event, 100);
+    OnAdjustUpdate(*bscroll_event);
+
+    wxScrollEvent *cscroll_event = new wxScrollEvent(0, Contrast_Event, 100);
+    OnAdjustUpdate(*cscroll_event);
+
+    wxScrollEvent *gscroll_event = new wxScrollEvent(0, Gamma_Event, 10);
+    OnAdjustUpdate(*gscroll_event);
+
+}
+
+void ExtraPanel::OnAdjustUpdate( wxScrollEvent &event)
+{
+    vout_thread_t *p_vout = (vout_thread_t *)vlc_object_find(p_intf,
+                                 VLC_OBJECT_VOUT, FIND_ANYWHERE);
+    if( p_vout == NULL )
+        switch( event.GetId() )
+        {
+            case Hue_Event:
+                config_PutInt( p_intf , "hue" , event.GetPosition() );
+                break;
+
+            case Saturation_Event:
+                config_PutFloat( p_intf , "saturation" ,
+                                (float)event.GetPosition()/100 );
+                break;
+
+            case Brightness_Event:
+                config_PutFloat( p_intf , "brightness" ,
+                                (float)event.GetPosition()/100 );
+                break;
+
+            case Contrast_Event:
+                config_PutFloat( p_intf , "contrast" ,
+                                (float)event.GetPosition()/100 );
+                break;
+
+            case Gamma_Event:
+                config_PutFloat( p_intf , "gamma" ,
+                                (float)event.GetPosition()/10 );
+                break;
+        }
+    else
+    {
+        vlc_value_t val;
+        switch( event.GetId() )
+        {
+            case Hue_Event:
+                val.i_int = event.GetPosition();
+                var_Set( p_vout, "hue", val );
+                break;
+
+            case Saturation_Event:
+                val.f_float = (float)event.GetPosition() / 100;
+                var_Set( p_vout, "saturation", val );
+                break;
+
+            case Brightness_Event:
+                val.f_float = (float)event.GetPosition() / 100;
+                var_Set( p_vout, "brightness", val );
+                break;
+
+            case Contrast_Event:
+                val.f_float = (float)event.GetPosition() / 100;
+                var_Set( p_vout, "contrast", val );
+                break;
+
+            case Gamma_Event:
+                val.f_float = (float)event.GetPosition() / 10;
+                var_Set( p_vout, "gamma", val );
+                break;
+        }
+        vlc_object_release(p_vout);
+    }
+}
+
+/* FIXME */
+void ExtraPanel::OnRatio( wxCommandEvent& event )
+{
+   config_PutPsz( p_intf, "aspect-ratio", ratio_combo->GetValue().mb_str() );
+}
+
+
+void ExtraPanel::OnSelectFilter(wxCommandEvent& event)
+{
+    int i_filter = event.GetId() - Filter0_Event ;
+    if( vfilters[i_filter].psz_filter  )
+    {
+        ChangeVFiltersString( p_intf, vfilters[i_filter].psz_filter ,
+                              event.IsChecked() ? VLC_TRUE : VLC_FALSE );
+    }
+}
+
+void ExtraPanel::OnFiltersInfo(wxCommandEvent& event)
+{
+    wxMessageBox( wxU( _("Select the video effects filters to apply. "
+                  "You must restart the stream for these settings to "
+                  "take effect.\n"
+                  "To configure the filters, go to the Preferences, enable "
+                  "the advanced options, and go to to Modules/Video Filters. "
+                  "You can then configure each filter.\n"
+                  "If you want fine control over the filters ( to choose "
+                  "the order in which they are applied ), you need to enter "
+                  "manually a filters string (Preferences / General / Video."
+                  ) ),
+                    wxU( _("More information" ) ), wxOK | wxICON_INFORMATION,
+                    this->p_parent );
+}
+/**********************************
+ * Other functions
+ **********************************/
+void ExtraPanel::CheckAout()
+{
+    aout_instance_t *p_aout= (aout_instance_t *)vlc_object_find(p_intf,
+                                 VLC_OBJECT_AOUT, FIND_ANYWHERE);
+    if( p_aout != NULL )
+    {
+        if( p_aout != p_intf->p_sys->p_aout )
+        {
+            /* We want to know if someone changes the bands */
+            if( var_AddCallback( p_aout, "equalizer-bands",
+                                    IntfBandsCallback, this ) )
+            {
+                /* The variable does not exist yet, wait */
+                vlc_object_release( p_aout );
+                return;
+            }
+            if( var_AddCallback( p_aout, "equalizer-preamp",
+                                    IntfPreampCallback, this )  )
+            {
+                vlc_object_release( p_aout );
+                return;
+            }
+            /* Ok, we have our variables, make a first update round */
+            p_intf->p_sys->p_aout = p_aout;
+
+            f_preamp = var_GetFloat( p_aout, "equalizer-preamp" );
+            psz_bands = var_GetString( p_aout, "equalizer-bands" );
+            b_update = VLC_TRUE;
+        }
+        vlc_object_release( p_aout );
+    }
+}
+
+
+static void ChangeVFiltersString( intf_thread_t *p_intf,
+                                 char *psz_name, vlc_bool_t b_add )
+{
+    char *psz_parser, *psz_string;
+
+    psz_string = config_GetPsz( p_intf, "filter" );
+
+    if( !psz_string ) psz_string = strdup("");
+
+    psz_parser = strstr( psz_string, psz_name );
+
+    if( b_add )
+    {
+        if( !psz_parser )
+        {
+            psz_parser = psz_string;
+            asprintf( &psz_string, (*psz_string) ? "%s:%s" : "%s%s",
+                            psz_string, psz_name );
+            free( psz_parser );
+        }
+        else
+        {
+            return;
+        }
+    }
+    else
+    {
+        if( psz_parser )
+        {
+            memmove( psz_parser, psz_parser + strlen(psz_name) +
+                            (*(psz_parser + strlen(psz_name)) == ':' ? 1 : 0 ),
+                            strlen(psz_parser + strlen(psz_name)) + 1 );
+
+            /* Remove trailing : : */
+            if( *(psz_string+strlen(psz_string ) -1 ) == ':' )
+            {
+                *(psz_string+strlen(psz_string ) -1 ) = '\0';
+            }
+         }
+         else
+         {
+             free( psz_string );
+             return;
+         }
+    }
+    /* Vout is not kept, so put that in the config */
+    //fprintf(stderr,"\nNow : %s",psz_string );
+    config_PutPsz( p_intf, "filter", psz_string );
+    free( psz_string );
+}
+
+
+static void ChangeFiltersString( intf_thread_t *p_intf,
+                                 aout_instance_t * p_aout,
+                                 char *psz_name, vlc_bool_t b_add )
+{
+    char *psz_parser, *psz_string;
+
+    if( p_aout )
+    {
+        psz_string = var_GetString( p_aout, "audio-filter" );
+    }
+    else
+    {
+        psz_string = config_GetPsz( p_intf, "audio-filter" );
+    }
+
+    if( !psz_string ) psz_string = strdup("");
+
+    psz_parser = strstr( psz_string, psz_name );
+
+    if( b_add )
+    {
+        if( !psz_parser )
+        {
+            psz_parser = psz_string;
+            asprintf( &psz_string, (*psz_string) ? "%s,%s" : "%s%s",
+                            psz_string, psz_name );
+            free( psz_parser );
+        }
+        else
+        {
+            return;
+        }
+    }
+    else
+    {
+        if( psz_parser )
+        {
+            memmove( psz_parser, psz_parser + strlen(psz_name) +
+                            (*(psz_parser + strlen(psz_name)) == ',' ? 1 : 0 ),
+                            strlen(psz_parser + strlen(psz_name)) + 1 );
+
+            if( *(psz_string+strlen(psz_string ) -1 ) == ',' )
+            {
+                *(psz_string+strlen(psz_string ) -1 ) = '\0';
+            }
+         }
+         else
+         {
+             free( psz_string );
+             return;
+         }
+    }
+    fprintf(stderr,"\nSETTING %s\n",psz_string );
+
+    if( p_aout == NULL )
+    {
+        config_PutPsz( p_intf, "audio-filter", psz_string );
+    }
+    else
+    {
+        var_SetString( p_aout, "audio-filter", psz_string );
+        for( int i = 0; i < p_aout->i_nb_inputs; i++ )
+        {
+            p_aout->pp_inputs[i]->b_restart = VLC_TRUE;
+        }
+    }
+    free( psz_string );
+}
+
+
+static int IntfBandsCallback( vlc_object_t *p_this, char const *psz_cmd,
+                          vlc_value_t oldval, vlc_value_t newval, void *param )
+{
+    ExtraPanel *p_panel = (ExtraPanel *)param;
+
+    p_panel->psz_bands = strdup( newval.psz_string );
+    p_panel->b_update = VLC_TRUE;
+
+    return VLC_SUCCESS;
+}
+
+static int IntfPreampCallback( vlc_object_t *p_this, char const *psz_cmd,
+                          vlc_value_t oldval, vlc_value_t newval, void *param )
+{
+    ExtraPanel *p_panel = (ExtraPanel *)param;
+
+    p_panel->f_preamp = newval.f_float;
+    p_panel->b_update = VLC_TRUE;
+
+    return VLC_SUCCESS;
+}
+
+#if 0
+/**********************************************************************
+ * A small window to contain the extrapanel in its undocked state
+ **********************************************************************/
+BEGIN_EVENT_TABLE(ExtraWindow, wxFrame)
+END_EVENT_TABLE()
+
+
+ExtraWindow::ExtraWindow( intf_thread_t *_p_intf, wxWindow *p_parent,
+                          wxPanel *_extra_panel ):
+       wxFrame( p_parent, -1, wxU(_("Extended controls")), wxDefaultPosition,
+                 wxDefaultSize, wxDEFAULT_FRAME_STYLE )
+{
+        fprintf(stderr,"Creating extrawindow\n");
+    p_intf = _p_intf;
+    SetIcon( *p_intf->p_sys->p_icon );
+
+    wxBoxSizer *window_sizer = new wxBoxSizer( wxVERTICAL );
+    SetSizer( window_sizer );
+//    panel = new ExtraPanel(  p_intf, this );//_extra_panel;
+
+    panel = _extra_panel;
+    window_sizer->Add( panel );
+
+    window_sizer->Layout();
+    window_sizer->Fit( this );
+
+    Show();
+}
+
+ExtraWindow::~ExtraWindow()
+{
+    delete panel;
+}
+#endif
index 0a9054390f9379dcf7c3d94c30fd6cb2c4598004..80f4229bf87132c81419f513c9aa6c8926f2ab53 100644 (file)
@@ -118,7 +118,6 @@ enum
     OpenOther_Event,
     EjectDisc_Event,
 
-    StreamWizard_Event,
     Wizard_Event,
 
     Playlist_Event,
@@ -127,6 +126,7 @@ enum
 
     Prefs_Event,
     Extended_Event,
+//    Undock_Event,
     Bookmarks_Event,
     Skins_Event,
 
@@ -138,17 +138,6 @@ enum
     SlowStream_Event,
     FastStream_Event,
 
-    Adjust_Event,
-    RestoreDefaults_Event,
-    Hue_Event,
-    Contrast_Event,
-    Brightness_Event,
-    Saturation_Event,
-    Gamma_Event,
-
-    Ratio_Event,
-    Visual_Event,
-
     /* it is important for the id corresponding to the "About" command to have
      * this standard value as otherwise it won't be handled properly under Mac
      * (where it is special and put into the "Apple" menu) */
@@ -167,13 +156,10 @@ BEGIN_EVENT_TABLE(Interface, wxFrame)
 
     EVT_MENU_OPEN(Interface::OnMenuOpen)
 
-    EVT_MENU( Extended_Event, Interface::OnExtended)
-    EVT_MENU( Bookmarks_Event, Interface::OnShowDialog)
+    EVT_MENU( Extended_Event, Interface::OnExtended )
+//    EVT_MENU( Undock_Event, Interface::OnUndock )
 
-    EVT_CHECKBOX( Adjust_Event, Interface::OnEnableAdjust)
-    EVT_BUTTON( RestoreDefaults_Event, Interface::OnRestoreDefaults)
-    EVT_TEXT( Ratio_Event, Interface::OnRatio)
-    EVT_CHECKBOX( Visual_Event, Interface::OnEnableVisual)
+    EVT_MENU( Bookmarks_Event, Interface::OnShowDialog)
 
 #if defined( __WXMSW__ ) || defined( __WXMAC__ )
     EVT_CONTEXT_MENU(Interface::OnContextMenu2)
@@ -188,7 +174,6 @@ BEGIN_EVENT_TABLE(Interface, wxFrame)
     EVT_MENU(OpenNet_Event, Interface::OnShowDialog)
     EVT_MENU(OpenCapture_Event, Interface::OnShowDialog)
     EVT_MENU(OpenSat_Event, Interface::OnShowDialog)
-    EVT_MENU(StreamWizard_Event, Interface::OnShowDialog)
     EVT_MENU(Wizard_Event, Interface::OnShowDialog)
     EVT_MENU(StopStream_Event, Interface::OnStopStream)
     EVT_MENU(PlayStream_Event, Interface::OnPlayStream)
@@ -199,12 +184,6 @@ BEGIN_EVENT_TABLE(Interface, wxFrame)
 
     /* Slider events */
     EVT_COMMAND_SCROLL(SliderScroll_Event, Interface::OnSliderUpdate)
-    
-    EVT_COMMAND_SCROLL(Hue_Event, Interface::OnAdjustUpdate)
-    EVT_COMMAND_SCROLL(Contrast_Event, Interface::OnAdjustUpdate)
-    EVT_COMMAND_SCROLL(Brightness_Event, Interface::OnAdjustUpdate)
-    EVT_COMMAND_SCROLL(Saturation_Event, Interface::OnAdjustUpdate)
-    EVT_COMMAND_SCROLL(Gamma_Event, Interface::OnAdjustUpdate)
 
     /* Custom events */
     EVT_COMMAND(0, wxEVT_INTF, Interface::OnControlEvent)
@@ -223,6 +202,9 @@ Interface::Interface( intf_thread_t *_p_intf ):
     p_intf = _p_intf;
     i_old_playing_status = PAUSE_S;
     b_extra = VLC_FALSE;
+//    b_undock = VLC_FALSE;
+
+    extra_window = NULL;
 
     /* Give our interface a nice little icon */
     SetIcon( wxIcon( vlc_xpm ) );
@@ -244,7 +226,7 @@ Interface::Interface( intf_thread_t *_p_intf ):
     CreateOurToolBar();
 
     /* Create the extra panel */
-    CreateOurExtendedPanel();
+    extra_frame = new ExtraPanel( p_intf, this );
     frame_sizer->Add( extra_frame, 0, wxEXPAND , 0 );
     frame_sizer->Hide( extra_frame );
 
@@ -341,8 +323,6 @@ void Interface::CreateOurMenuBar()
 
     file_menu->AppendSeparator();
     file_menu->Append( Wizard_Event, wxU(_("&Wizard...\tCtrl-W")) );
-    file_menu->Append( StreamWizard_Event,
-                       wxU(_("Old streaming Wizard...")) );
     file_menu->AppendSeparator();
     file_menu->Append( Exit_Event, wxU(_("E&xit\tCtrl-X")) );
 
@@ -523,201 +503,6 @@ void Interface::CreateOurSlider()
 }
 
 
-void Interface::CreateOurExtendedPanel()
-{
-    char *psz_filters;
-
-    extra_frame = new wxPanel( this, -1, wxDefaultPosition, wxDefaultSize );
-    extra_frame->SetAutoLayout( TRUE );
-    wxBoxSizer *extra_sizer = new wxBoxSizer( wxHORIZONTAL );
-
-    /* Create static box to surround the adjust controls */
-    wxStaticBox *adjust_box =
-           new wxStaticBox( extra_frame, -1, wxU(_("Adjust Image")) );
-
-    /* Create the size for the frame */
-    wxStaticBoxSizer *adjust_sizer =
-        new wxStaticBoxSizer( adjust_box, wxVERTICAL );
-    adjust_sizer->SetMinSize( -1, 50 );
-    
-    /* Create flex grid */
-    wxFlexGridSizer *adjust_gridsizer =
-        new wxFlexGridSizer( 6, 2, 0, 0);
-    adjust_gridsizer->AddGrowableCol(1);
-
-    /* Create every controls */
-
-    /* Create the adjust button */
-    wxCheckBox * adjust_check = new wxCheckBox( extra_frame, Adjust_Event,
-                                                 wxU(_("Enable")));
-
-    /* Create the restore to defaults button */
-    restoredefaults_button = 
-        new wxButton( extra_frame, RestoreDefaults_Event,
-        wxU(_("Restore Defaults")), wxDefaultPosition);
-
-    wxStaticText *hue_text = new wxStaticText( extra_frame, -1,
-                                       wxU(_("Hue")) );
-    hue_slider = new wxSlider ( extra_frame, Hue_Event, 0, 0,
-                                360, wxDefaultPosition, wxDefaultSize );
-
-
-    wxStaticText *contrast_text = new wxStaticText( extra_frame, -1,
-                                       wxU(_("Contrast")) );
-    contrast_slider = new wxSlider ( extra_frame, Contrast_Event, 0, 0,
-                                200, wxDefaultPosition, wxDefaultSize);
-
-    wxStaticText *brightness_text = new wxStaticText( extra_frame, -1,
-                                       wxU(_("Brightness")) );
-    brightness_slider = new wxSlider ( extra_frame, Brightness_Event, 0, 0,
-                           200, wxDefaultPosition, wxDefaultSize) ;
-
-    wxStaticText *saturation_text = new wxStaticText( extra_frame, -1,
-                                          wxU(_("Saturation")) );
-    saturation_slider = new wxSlider ( extra_frame, Saturation_Event, 0, 0,
-                           300, wxDefaultPosition, wxDefaultSize );
-
-    wxStaticText *gamma_text = new wxStaticText( extra_frame, -1,
-                                          wxU(_("Gamma")) );
-    gamma_slider = new wxSlider ( extra_frame, Gamma_Event, 0, 0,
-                           100, wxDefaultPosition, wxDefaultSize );
-
-    adjust_gridsizer->Add(adjust_check, 1, wxEXPAND, 0);
-    adjust_gridsizer->Add(restoredefaults_button, 1, wxEXPAND, 0);
-    adjust_gridsizer->Add(hue_text, 1, wxEXPAND, 0);
-    adjust_gridsizer->Add(hue_slider, 1, wxEXPAND, 0);
-    adjust_gridsizer->Add(contrast_text, 1, wxEXPAND, 0);
-    adjust_gridsizer->Add(contrast_slider, 1, wxEXPAND, 0);
-    adjust_gridsizer->Add(brightness_text, 1, wxEXPAND, 0);
-    adjust_gridsizer->Add(brightness_slider, 1, wxEXPAND, 0);
-    adjust_gridsizer->Add(saturation_text, 1, wxEXPAND, 0);
-    adjust_gridsizer->Add(saturation_slider, 1, wxEXPAND, 0);
-    adjust_gridsizer->Add(gamma_text, 1, wxEXPAND, 0);
-    adjust_gridsizer->Add(gamma_slider, 1, wxEXPAND, 0);
-    
-    adjust_sizer->Add(adjust_gridsizer,1,wxEXPAND, 0);
-    
-    extra_sizer->Add(adjust_sizer,1,wxBOTTOM,5);
-
-    /* Create sizer to surround the other controls */
-    wxBoxSizer *other_sizer = new wxBoxSizer( wxVERTICAL );
-
-
-    wxStaticBox *video_box =
-            new wxStaticBox( extra_frame, -1, wxU(_("Video Options")) );
-    /* Create the sizer for the frame */
-    wxStaticBoxSizer *video_sizer =
-       new wxStaticBoxSizer( video_box, wxVERTICAL );
-    video_sizer->SetMinSize( -1, 50 );
-
-    static const wxString ratio_array[] =
-    {
-        wxT("4:3"),
-        wxT("16:9"),
-    };
-
-    wxBoxSizer *ratio_sizer = new wxBoxSizer( wxHORIZONTAL );
-    wxStaticText *ratio_text = new wxStaticText( extra_frame, -1,
-                                          wxU(_("Aspect Ratio")) );
-
-    ratio_combo = new wxComboBox( extra_frame, Ratio_Event, wxT(""),
-                                  wxDefaultPosition, wxSize(120,-1),
-                                  WXSIZEOF(ratio_array), ratio_array,
-                                  0 );
-
-    ratio_sizer->Add( ratio_text, 0, wxALL, 2 );
-    ratio_sizer->Add( ratio_combo, 0, wxALL, 2 );
-    ratio_sizer->Layout();
-
-    video_sizer->Add( ratio_sizer  , 0 , wxALL , 0 );
-    video_sizer->Layout();
-
-#if 0
-    wxBoxSizer *visual_sizer = new wxBoxSizer( wxHORIZONTAL );
-
-    wxCheckBox *visual_checkbox = new wxCheckBox( extra_frame, Visual_Event,
-                                            wxU(_("Visualizations")) );
-
-    visual_sizer->Add( visual_checkbox, 0, wxEXPAND, 0);
-    visual_sizer->Layout();
-
-    wxStaticBox *audio_box =
-              new wxStaticBox( extra_frame, -1, wxU(_("Audio Options")) );
-    /* Create the sizer for the frame */
-    wxStaticBoxSizer *audio_sizer =
-        new wxStaticBoxSizer( audio_box, wxVERTICAL );
-    audio_sizer->SetMinSize( -1, 50 );
-
-    audio_sizer->Add( visual_sizer, 0, wxALL, 0);
-    audio_sizer->Layout();
-
-    other_sizer->Add( audio_sizer , 0 , wxALL | wxEXPAND , 0 );
-#endif
-    other_sizer->Add( video_sizer, 0, wxALL | wxEXPAND , 0);
-    other_sizer->Layout();
-
-    extra_sizer->Add(other_sizer,0,wxBOTTOM,5);
-
-    extra_frame->SetSizer( extra_sizer );
-
-    /* Layout the whole panel */
-    extra_sizer->Layout();
-
-    extra_sizer->SetSizeHints(extra_frame);
-
-    /* Write down initial values */
-#if 0
-    psz_filters = config_GetPsz( p_intf, "audio-filter" );
-    if( psz_filters && strstr( psz_filters, "visual" ) )
-    {
-        visual_checkbox->SetValue(1);
-    }
-    if( psz_filters ) free( psz_filters );
-#endif
-    psz_filters = config_GetPsz( p_intf, "filter" );
-    if( psz_filters && strstr( psz_filters, "adjust" ) )
-    {
-        adjust_check->SetValue( 1 );
-        restoredefaults_button->Enable();
-        saturation_slider->Enable();
-        contrast_slider->Enable();
-        brightness_slider->Enable();
-        hue_slider->Enable();
-        gamma_slider->Enable();
-    }
-    else
-    {
-        adjust_check->SetValue( 0 );
-        restoredefaults_button->Disable();
-        saturation_slider->Disable();
-        contrast_slider->Disable();
-        brightness_slider->Disable();
-        hue_slider->Disable();
-        gamma_slider->Disable();
-    }
-    if( psz_filters ) free( psz_filters );
-
-    int i_value = config_GetInt( p_intf, "hue" );
-    if( i_value > 0 && i_value < 360 )
-        hue_slider->SetValue( i_value );
-
-    float f_value;
-    f_value = config_GetFloat( p_intf, "saturation" );
-    if( f_value > 0 && f_value < 5 )
-        saturation_slider->SetValue( (int)(100 * f_value) );
-    f_value = config_GetFloat( p_intf, "contrast" );
-    if( f_value > 0 && f_value < 4 )
-        contrast_slider->SetValue( (int)(100 * f_value) );
-    f_value = config_GetFloat( p_intf, "brightness" );
-    if( f_value > 0 && f_value < 2 )
-        brightness_slider->SetValue( (int)(100 * f_value) );
-    f_value = config_GetFloat( p_intf, "gamma" );
-    if( f_value > 0 && f_value < 10 )
-        gamma_slider->SetValue( (int)(10 * f_value) );
-
-    extra_frame->Hide();
-}
-
 static int ConvertHotkeyModifiers( int i_hotkey )
 {
     int i_accel_flags = 0;
@@ -819,6 +604,11 @@ void Interface::OnMenuOpen(wxMenuEvent& event)
         p_settings_menu->AppendCheckItem( Extended_Event,
             wxU(_("&Extended GUI") ) );
         if( b_extra ) p_settings_menu->Check( Extended_Event, TRUE );
+#if 0
+        p_settings_menu->AppendCheckItem( Undock_Event,
+            wxU(_("&Undock Ext. GUI") ) );
+        if( b_undock ) p_settings_menu->Check( Undock_Event, TRUE );
+#endif
         p_settings_menu->AppendCheckItem( Bookmarks_Event,
             wxU(_("&Bookmarks...") ) );
         p_settings_menu->Append( Prefs_Event, wxU(_("&Preferences...")) );
@@ -924,9 +714,6 @@ void Interface::OnShowDialog( wxCommandEvent& event )
         case Prefs_Event:
             i_id = INTF_DIALOG_PREFS;
             break;
-        case StreamWizard_Event:
-            i_id = INTF_DIALOG_STREAMWIZARD;
-            break;
         case Wizard_Event:
             i_id = INTF_DIALOG_WIZARD;
             break;
@@ -944,205 +731,99 @@ void Interface::OnShowDialog( wxCommandEvent& event )
 
 void Interface::OnExtended(wxCommandEvent& event)
 {
-    if( b_extra == VLC_FALSE)
+    b_extra = (b_extra == VLC_TRUE ? VLC_FALSE : VLC_TRUE );
+
+    if( b_extra == VLC_FALSE )
     {
-        extra_frame->Show();
-        frame_sizer->Show( extra_frame );
-        b_extra = VLC_TRUE;
+        extra_frame->Hide();
+        frame_sizer->Hide( extra_frame );
     }
     else
     {
-        extra_frame->Hide();
-        frame_sizer->Hide( extra_frame );
-        b_extra = VLC_FALSE;
+        extra_frame->Show();
+        frame_sizer->Show( extra_frame );
     }
     frame_sizer->Layout();
     frame_sizer->Fit(this);
 }
 
-void Interface::OnEnableAdjust(wxCommandEvent& event)
-{
-    char *psz_filters=config_GetPsz( p_intf, "filter");
-    char *psz_new = NULL;
-    if( event.IsChecked() )
-    {
-        if(psz_filters == NULL)
+#if 0
+        if( b_undock == VLC_TRUE )
         {
-            psz_new = strdup( "adjust" );
+                fprintf(stderr,"Deleting window\n");
+            if( extra_window )
+            {
+                delete extra_window;
+                extra_window = NULL;
+            }
         }
         else
         {
-            psz_new= (char *) malloc(strlen(psz_filters) + 8 );
-            sprintf( psz_new, "%s:adjust", psz_filters);
+            extra_frame->Hide();
+            frame_sizer->Hide( extra_frame );
+            frame_sizer->Layout();
+            frame_sizer->Fit(this);
         }
-        config_PutPsz( p_intf, "filter", psz_new );
-        vlc_value_t val;
-        vout_thread_t *p_vout =
-           (vout_thread_t *)vlc_object_find( p_intf, VLC_OBJECT_VOUT,
-                                       FIND_ANYWHERE );
-        if( p_vout != NULL )
-        {
-            val.psz_string = strdup( psz_new );
-            var_Set( p_vout, "filter", val);
-            vlc_object_release( p_vout );
-        }
-        if( val.psz_string ) free( val.psz_string );
-        restoredefaults_button->Enable();
-        brightness_slider->Enable();
-        saturation_slider->Enable();
-        contrast_slider->Enable();
-        hue_slider->Enable();
-        gamma_slider->Enable();
     }
     else
     {
-        if( psz_filters != NULL )
+        if( b_undock == VLC_TRUE )
         {
-
-            char *psz_current;
-            unsigned int i=0;
-            for( i = 0; i< strlen(psz_filters ); i++)
-            {
-                if ( !strncasecmp( &psz_filters[i],"adjust",6 ))
-                {
-                    if(i > 0)
-                        if( psz_filters[i-1] == ':' ) i--;
-                    psz_current = strchr( &psz_filters[i+1] , ':' );
-                    if( !psz_current )
-                        psz_filters[i] = '\0';
-                    else
-                    {
-                       memmove( &psz_filters[i] , psz_current,
-                                &psz_filters[strlen(psz_filters)]-psz_current
-                                +1);
-                    }
-                }
-            }
-            config_PutPsz( p_intf, "filter", psz_filters);
-            vlc_value_t val;
-            val.psz_string = strdup( psz_filters );
-            vout_thread_t *p_vout =
-               (vout_thread_t *)vlc_object_find( p_intf, VLC_OBJECT_VOUT,
-                                       FIND_ANYWHERE );
-            if( p_vout != NULL )
+                fprintf(stderr,"Creating window\n");
+            extra_frame->Hide();
+            frame_sizer->Hide( extra_frame );
+            frame_sizer->Detach( extra_frame );
+            frame_sizer->Layout();
+            frame_sizer->Fit(this);
+            extra_window = new ExtraWindow( p_intf, this, extra_frame );
+        }
+        else
+        {
+                fprintf(stderr,"Deleting window\n");
+            if( extra_window )
             {
-                var_Set( p_vout, "filter", val);
-                vlc_object_release( p_vout );
+                delete extra_window;
             }
-            if( val.psz_string ) free( val.psz_string );
+            extra_frame->Show();
+            frame_sizer->Show( extra_frame );
+            frame_sizer->Layout();
+            frame_sizer->Fit(this);
         }
-        restoredefaults_button->Disable();
-        brightness_slider->Disable();
-        saturation_slider->Disable();
-        contrast_slider->Disable();
-        hue_slider->Disable();
-        gamma_slider->Disable();
     }
-    if(psz_filters) free(psz_filters);
-    if(psz_new) free(psz_new);
 }
 
-void Interface::OnRestoreDefaults( wxCommandEvent &event)
+void Interface::OnUndock(wxCommandEvent& event)
 {
-    hue_slider->SetValue(0);
-    saturation_slider->SetValue(100);
-    brightness_slider->SetValue(100);
-    contrast_slider->SetValue(100),
-    gamma_slider->SetValue(10);
-
-    wxScrollEvent *hscroll_event = new wxScrollEvent(0, Hue_Event, 0);
-    OnAdjustUpdate(*hscroll_event);
-    
-    wxScrollEvent *sscroll_event = new wxScrollEvent(0, Saturation_Event, 100);
-    OnAdjustUpdate(*sscroll_event);
-    
-    wxScrollEvent *bscroll_event = new wxScrollEvent(0, Brightness_Event, 100);
-    OnAdjustUpdate(*bscroll_event);
-    
-    wxScrollEvent *cscroll_event = new wxScrollEvent(0, Contrast_Event, 100);
-    OnAdjustUpdate(*cscroll_event);
-    
-    wxScrollEvent *gscroll_event = new wxScrollEvent(0, Gamma_Event, 10);
-    OnAdjustUpdate(*gscroll_event);
+    b_undock = (b_undock == VLC_TRUE ? VLC_FALSE : VLC_TRUE );
 
-}
-
-void Interface::OnAdjustUpdate( wxScrollEvent &event)
-{
-    vout_thread_t *p_vout = (vout_thread_t *)vlc_object_find(p_intf, VLC_OBJECT_VOUT, FIND_ANYWHERE);
-    if(p_vout == NULL)
-        switch(event.GetId())
+    if( b_extra == VLC_TRUE )
+    {
+        if( b_undock == VLC_FALSE )
         {
-            case Hue_Event: 
-                config_PutInt( p_intf , "hue" , event.GetPosition() );
-                break;
-            
-            case Saturation_Event: 
-                config_PutFloat( p_intf , "saturation" , (float)event.GetPosition()/100 );
-                break;
-            
-            case Brightness_Event: 
-                config_PutFloat( p_intf , "brightness" , (float)event.GetPosition()/100 );
-                break;
-            
-            case Contrast_Event: 
-                config_PutFloat( p_intf , "contrast" , (float)event.GetPosition()/100 );
-                break;
-            
-            case Gamma_Event: 
-                config_PutFloat( p_intf , "gamma" , (float)event.GetPosition()/10 );
-                break;
+                fprintf(stderr,"Deleting window\n");
+            if( extra_window )
+            {
+                delete extra_window;
+                extra_window = NULL;
+            }
+            extra_frame->Show();
+            frame_sizer->Show( extra_frame );
+            frame_sizer->Layout();
+            frame_sizer->Fit(this);
         }
-    else
-    {
-        vlc_value_t val;
-        switch(event.GetId())
+        else
         {
-            case Hue_Event: 
-                val.i_int = event.GetPosition();
-                var_Set(p_vout, "hue", val);
-                break;
-            
-            case Saturation_Event:
-                val.f_float = (float)event.GetPosition()/100;
-                var_Set(p_vout, "saturation", val);
-                break;
-            
-            case Brightness_Event: 
-                val.f_float = (float)event.GetPosition()/100;
-                var_Set(p_vout, "brightness", val);
-                break;
-            
-            case Contrast_Event: 
-                val.f_float = (float)event.GetPosition()/100;
-                var_Set(p_vout, "contrast", val);
-                break;
-            
-            case Gamma_Event: 
-                val.f_float = (float)event.GetPosition()/10;
-                var_Set(p_vout, "gamma", val);
-                break;
+                fprintf(stderr,"Creating window\n");
+            extra_frame->Hide();
+            frame_sizer->Hide( extra_frame );
+            frame_sizer->Detach( extra_frame );
+            frame_sizer->Layout();
+            frame_sizer->Fit(this);
+            extra_window = new ExtraWindow( p_intf, this, extra_frame );
         }
-        vlc_object_release(p_vout);
-    }
-}
-
-void Interface::OnRatio( wxCommandEvent& event )
-{
-   config_PutPsz( p_intf, "aspect-ratio", ratio_combo->GetValue().mb_str() );
-}
-
-void Interface::OnEnableVisual(wxCommandEvent& event)
-{
-    if( event.IsChecked() )
-    {
-        config_PutPsz( p_intf, "audio-filter", "visual" );
-    }
-    else
-    {
-        config_PutPsz( p_intf, "audio-filter", "" );
     }
 }
+#endif
 
 void Interface::OnPlayStream( wxCommandEvent& WXUNUSED(event) )
 {
index e4827f283d3d344ec8c7bbc021342df9f7d6f3f1..4c8213e4d9909e612c049f858deabda4983615e0 100644 (file)
@@ -897,7 +897,6 @@ void MenuEvtHandler::OnMenuEvent( wxCommandEvent& event )
 
         /* Get the key combination and send it to the hotkey handler */
         var_Set( p_intf->p_vlc, "key-pressed", val );
-       msg_Err( p_intf, "received key event: %i", event.GetId() );
         return;
     }
 
index 28ac9d9cf253600655b74961f21fb427eea7be5a..21d16911a627af8f60507388004c9755b6065879 100644 (file)
@@ -2,7 +2,7 @@
  * messages.cpp : wxWindows plugin for vlc
  *****************************************************************************
  * Copyright (C) 2000-2004 VideoLAN
- * $Id: messages.cpp,v 1.20 2004/01/25 03:29:01 hartman Exp $
+ * $Id$
  *
  * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
  *
diff --git a/modules/gui/wxwindows/streamwizard.cpp b/modules/gui/wxwindows/streamwizard.cpp
deleted file mode 100644 (file)
index 8e0b7c5..0000000
+++ /dev/null
@@ -1,251 +0,0 @@
-/*****************************************************************************
- * stream.cpp : wxWindows plugin for vlc
- *****************************************************************************
- * Copyright (C) 2000-2004 VideoLAN
- * $Id$
- *
- * Authors: Clément Stenac <zorglub@videolan.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
- *****************************************************************************/
-
-/*****************************************************************************
- * Preamble
- *****************************************************************************/
-#include <stdlib.h>                                      /* malloc(), free() */
-#include <errno.h>                                                 /* ENOMEM */
-#include <string.h>                                            /* strerror() */
-#include <stdio.h>
-
-#include <vlc/vlc.h>
-#include <vlc/intf.h>
-
-#include "wxwindows.h"
-
-#include <wx/statline.h>
-
-#define STREAM_INTRO N_( "Stream with VLC in three steps." )
-#define STREAM_STEP1 N_( "Step 1: Select what to stream." )
-#define STREAM_STEP2 N_( "Step 2: Define streaming method." )
-#define STREAM_STEP3 N_( "Step 3: Start streaming." )
-
-/*****************************************************************************
- * Event Table.
- *****************************************************************************/
-
-/* IDs for the controls and the menu commands */
-enum
-{
-    Open_Event,
-    Sout_Event,
-    Start_Event,
-    Close_Event
-};
-
-BEGIN_EVENT_TABLE(StreamDialog, wxFrame)
-    /* Button events */
-    EVT_BUTTON(wxID_OK, StreamDialog::OnClose)
-
-    EVT_BUTTON(Open_Event,StreamDialog::OnOpen)
-    EVT_BUTTON(Sout_Event,StreamDialog::OnSout)
-    EVT_BUTTON(Start_Event,StreamDialog::OnStart)
-
-    /* Hide the window when the user closes the window */
-    EVT_CLOSE(StreamDialog::OnClose)
-
-END_EVENT_TABLE()
-
-/*****************************************************************************
- * Constructor.
- *****************************************************************************/
-StreamDialog::StreamDialog( intf_thread_t *_p_intf, wxWindow *p_parent ):
-    wxFrame( p_parent, -1, wxU(_("Stream")), wxDefaultPosition,
-             wxDefaultSize, wxDEFAULT_FRAME_STYLE )
-{
-    /* Initializations */
-    p_intf = _p_intf;
-    SetIcon( *p_intf->p_sys->p_icon );
-    SetAutoLayout( TRUE );
-
-    p_open_dialog = NULL;
-    p_sout_dialog = NULL;
-
-    /* Create a panel to put everything in */
-    wxPanel *panel = new wxPanel( this, -1 );
-    panel->SetAutoLayout( TRUE );
-
-    wxStaticText *intro_label = new wxStaticText( panel,
-                          -1 , wxU(_( STREAM_INTRO )));
-
-
-    wxStaticText *step1_label = new wxStaticText( panel,
-                           -1 , wxU(_( STREAM_STEP1 )));
-
-    step2_label = new wxStaticText( panel,
-                 -1 , wxU(_( STREAM_STEP2 )));
-
-    step3_label = new wxStaticText( panel,
-                 -1 , wxU(_( STREAM_STEP3 )));
-
-    wxButton *open_button = new wxButton( panel,
-                  Open_Event, wxU(_("Open...")));
-
-    sout_button = new wxButton( panel,
-                   Sout_Event, wxU(_("Choose...")));
-
-    start_button = new wxButton( panel,
-                   Start_Event, wxU(_("Start!")));
-
-    step2_label->Disable();
-    step3_label->Disable();
-
-    sout_button->Disable();
-    start_button->Disable();
-
-    /* Place everything in sizers */
-    wxBoxSizer *main_sizer = new wxBoxSizer( wxVERTICAL );
-    wxBoxSizer *panel_sizer = new wxBoxSizer( wxVERTICAL );
-
-    wxBoxSizer *step1_sizer = new wxBoxSizer( wxHORIZONTAL );
-    wxBoxSizer *step2_sizer = new wxBoxSizer( wxHORIZONTAL );
-    wxBoxSizer *step3_sizer = new wxBoxSizer( wxHORIZONTAL );
-
-    step1_sizer->Add( step1_label, 1, wxALL | wxEXPAND | wxALIGN_LEFT, 10 );
-    step1_sizer->Add( open_button, 1, wxALL | wxEXPAND | wxALIGN_RIGHT, 10 );
-
-    step2_sizer->Add( step2_label, 1, wxALL | wxEXPAND | wxALIGN_LEFT, 10 );
-    step2_sizer->Add( sout_button, 1, wxALL | wxEXPAND | wxALIGN_RIGHT, 10 );
-
-    step3_sizer->Add( step3_label,  1, wxALL | wxEXPAND | wxLEFT, 10 );
-    step3_sizer->Add( start_button, 1, wxALL | wxEXPAND | wxLEFT, 10 );
-
-    panel_sizer->Add( intro_label, 0, wxEXPAND | wxALL, 10 );
-
-    panel_sizer->Add( new wxStaticLine( panel, 0), 0,
-                      wxEXPAND | wxLEFT | wxRIGHT, 2 );
-    panel_sizer->Add( step1_sizer, 0, wxEXPAND, 10 );
-    panel_sizer->Add( new wxStaticLine( panel, 0), 0,
-                      wxEXPAND | wxLEFT | wxRIGHT, 2 );
-    panel_sizer->Add( step2_sizer, 0, wxEXPAND, 10 );
-    panel_sizer->Add( new wxStaticLine( panel, 0), 0,
-                      wxEXPAND | wxLEFT | wxRIGHT, 2 );
-    panel_sizer->Add( step3_sizer, 0, wxEXPAND, 10 );
-
-    panel_sizer->Layout();
-    panel->SetSizerAndFit( panel_sizer );
-    main_sizer->Add( panel, 1, wxEXPAND, 0 );
-    main_sizer->Layout();
-    SetSizerAndFit( main_sizer );
-
-}
-
-/*****************************************************************************
- * Destructor.
- *****************************************************************************/
-StreamDialog::~StreamDialog()
-{
-    if( p_open_dialog ) delete p_open_dialog;
-    if( p_sout_dialog ) delete p_sout_dialog;
-}
-
-void StreamDialog::OnOpen( wxCommandEvent& event )
-{
-    if( !p_open_dialog )
-    {
-        p_open_dialog =
-            new OpenDialog( p_intf, this, FILE_ACCESS, 1 , OPEN_STREAM );
-    }
-
-    if( p_open_dialog)
-    {
-       p_open_dialog->Show();
-       p_open_dialog->Enable();
-       mrl = p_open_dialog->mrl;
-       sout_button->Enable();
-       step2_label->Enable();
-    }
-}
-
-void StreamDialog::OnSout( wxCommandEvent& event )
-{
-    /* Show/hide the sout dialog */
-    if( p_sout_dialog == NULL )
-        p_sout_dialog = new SoutDialog( p_intf, this );
-
-    if( p_sout_dialog && p_sout_dialog->ShowModal() == wxID_OK )
-    {
-        sout_mrl = p_sout_dialog->GetOptions();
-        start_button->Enable();
-        step3_label->Enable();
-    }
-}
-
-void StreamDialog::OnStart( wxCommandEvent& event )
-{
-    /* Update the playlist */
-    playlist_t *p_playlist =
-        (playlist_t *)vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
-                                       FIND_ANYWHERE );
-    if( p_playlist == NULL ) return;
-
-    for( int i = 0; i < (int)p_open_dialog->mrl.GetCount(); i++ )
-    {
-        playlist_item_t *p_item = playlist_ItemNew( p_intf,
-                      (const char *)p_open_dialog->mrl[i].mb_str(),
-                      (const char *)p_open_dialog->mrl[i].mb_str() );
-        int i_options = 0;
-
-        /* Count the input options */
-        while( i + i_options + 1 < (int)p_open_dialog->mrl.GetCount() &&
-               ((const char *)p_open_dialog->mrl[i + i_options + 1].
-                                             mb_str())[0] == ':' )
-        {
-            i_options++;
-        }
-
-        /* Insert options */
-        for( int j = 0; j < i_options; j++ )
-        {
-            playlist_ItemAddOption( p_item ,
-                                p_open_dialog->mrl[i + j  + 1].mb_str() );
-        }
-
-        /* Get the options from the stream output dialog */
-        if( sout_mrl.GetCount() )
-        {
-            for( int j = 0; j < (int)sout_mrl.GetCount(); j++ )
-            {
-                playlist_ItemAddOption( p_item , sout_mrl[j].mb_str() );
-            }
-        }
-
-        playlist_AddItem( p_playlist, p_item,
-                          PLAYLIST_APPEND | (i ? 0 : PLAYLIST_GO),
-                          PLAYLIST_END );
-
-        msg_Dbg( p_intf,"playings %s",
-                 (const char *)p_open_dialog->mrl[i].mb_str() );
-
-        i += i_options;
-    }
-    vlc_object_release( p_playlist );
-
-    Hide();
-}
-
-void StreamDialog::OnClose( wxCommandEvent& event )
-{
-    Hide();
-}
index e9c0a1c3e3687879ea8ad9c63b5badda9985137a..6b89ccf5b0ab6cc9da18dba0fd2b56f2efd49f08 100644 (file)
@@ -2,7 +2,7 @@
  * subtitles.cpp : wxWindows plugin for vlc
  *****************************************************************************
  * Copyright (C) 2000-2001 VideoLAN
- * $Id: subtitles.cpp,v 1.11 2004/02/14 12:36:16 gbazin Exp $
+ * $Id$
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *
index b91d578793c7b5b9a7fdd9cf3ada21c2a026d3e8..435f347c0fcf52eb8e23376c73b91757d13458fc 100644 (file)
@@ -137,6 +137,9 @@ struct intf_sys_t
     /* Embedded vout */
     VideoWindow         *p_video_window;
     wxBoxSizer          *p_video_sizer;
+
+    /* Aout */
+    aout_instance_t     *p_aout;
 };
 
 /*****************************************************************************
@@ -183,6 +186,104 @@ private:
     vlc_bool_t b_old_seekable;
 };
 
+
+/* Extended panel */
+class ExtraPanel: public wxPanel
+{
+public:
+    /* Constructor */
+    ExtraPanel( intf_thread_t *p_intf, wxWindow *p_parent );
+    virtual ~ExtraPanel();
+
+    wxStaticBox *adjust_box;
+    wxButton *restoredefaults_button;
+    wxSlider *brightness_slider;
+    wxSlider *contrast_slider;
+    wxSlider *saturation_slider;
+    wxSlider *hue_slider;
+    wxSlider *gamma_slider;
+
+    wxStaticBox *other_box;
+    wxComboBox *ratio_combo;
+
+    char *psz_bands;
+    float f_preamp;
+    vlc_bool_t b_update;
+
+private:
+
+    wxPanel *VideoPanel( wxWindow * );
+    wxPanel *EqzPanel( wxWindow * );
+    wxPanel *AudioPanel( wxWindow * );
+
+    wxNotebook *notebook;
+
+    wxCheckBox *eq_chkbox;
+
+    wxCheckBox *eq_2p_chkbox;
+
+    wxSlider *smooth_slider;
+
+    wxSlider *preamp_slider;
+    wxStaticText * preamp_text;
+
+    int i_smooth;
+    wxWindow *p_parent;
+
+    wxSlider *band_sliders[10];
+    wxStaticText *band_texts[10];
+
+    int i_values[10];
+
+    void CheckAout();
+
+    /* Event handlers (these functions should _not_ be virtual) */
+
+    void OnEnableAdjust( wxCommandEvent& );
+    void OnEnableEqualizer( wxCommandEvent& );
+    void OnRestoreDefaults( wxCommandEvent& );
+    void OnChangeEqualizer( wxScrollEvent& );
+    void OnAdjustUpdate( wxScrollEvent& );
+    void OnRatio( wxCommandEvent& );
+    void OnFiltersInfo( wxCommandEvent& );
+    void OnSelectFilter( wxCommandEvent& );
+
+    void OnEqSmooth( wxScrollEvent& );
+    void OnPreamp( wxScrollEvent& );
+    void OnEq2Pass( wxCommandEvent& );
+    void OnEqRestore( wxCommandEvent& );
+
+    void OnHeadphone( wxCommandEvent& );
+    void OnNormvol( wxCommandEvent& );
+    void OnNormvolSlider( wxScrollEvent& );
+
+    void OnIdle( wxIdleEvent& );
+
+    DECLARE_EVENT_TABLE();
+
+    intf_thread_t *p_intf;
+    vlc_bool_t b_my_update;
+};
+
+#if 0
+/* Extended Window  */
+class ExtraWindow: public wxFrame
+{
+public:
+    /* Constructor */
+    ExtraWindow( intf_thread_t *p_intf, wxWindow *p_parent, wxPanel *panel );
+    virtual ~ExtraWindow();
+
+private:
+
+    wxPanel *panel;
+
+    DECLARE_EVENT_TABLE();
+
+    intf_thread_t *p_intf;
+};
+#endif
+
 /* Main Interface */
 class Interface: public wxFrame
 {
@@ -198,20 +299,13 @@ public:
 
     wxSlider    *slider;
     wxWindow    *slider_frame;
-    wxWindow    *extra_frame;
+    wxPanel     *extra_frame;
 
-    vlc_bool_t b_extra;
+    wxFrame    *extra_window;
 
-    wxStaticBox *adjust_box;
-    wxButton *restoredefaults_button;
-    wxSlider *brightness_slider;
-    wxSlider *contrast_slider;
-    wxSlider *saturation_slider;
-    wxSlider *hue_slider;
-    wxSlider *gamma_slider;
+    vlc_bool_t b_extra;
+    vlc_bool_t b_undock;
 
-    wxStaticBox *other_box;
-    wxComboBox *ratio_combo;
 
     wxGauge     *volctrl;
 
@@ -232,7 +326,10 @@ private:
     void OnOpenDisc( wxCommandEvent& event );
     void OnOpenNet( wxCommandEvent& event );
     void OnOpenSat( wxCommandEvent& event );
+
     void OnExtended( wxCommandEvent& event );
+    //void OnUndock( wxCommandEvent& event );
+
     void OnBookmarks( wxCommandEvent& event );
     void OnShowDialog( wxCommandEvent& event );
     void OnPlayStream( wxCommandEvent& event );
@@ -243,13 +340,6 @@ private:
     void OnSlowStream( wxCommandEvent& event );
     void OnFastStream( wxCommandEvent& event );
 
-    void OnEnableAdjust( wxCommandEvent& event );
-    void OnRestoreDefaults( wxCommandEvent& event);
-    void OnAdjustUpdate( wxScrollEvent& event );
-
-    void OnRatio( wxCommandEvent& event );
-    void OnEnableVisual( wxCommandEvent& event );
-
     void OnMenuOpen( wxMenuEvent& event );
 
 #if defined( __WXMSW__ ) || defined( __WXMAC__ )