Commit 6c43e73e authored by zorglub's avatar zorglub
Browse files

Removed the old streaming wizard\nSplitted the interface file into...

Removed the old streaming wizard\nSplitted the interface file into interface+extrapanel\nExtrapanel is now a notebook\nReworked the video extrapanel (removed ratio,added filters)\nImplemented a graphical equaliwer
parent da38b336
......@@ -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 \
......
......@@ -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 );
......
/*****************************************************************************
* extrapanel.cpp : wxWindows plugin for vlc
*****************************************************************************
* Copyright (C) 2000-2004, 2003 VideoLAN
* $Id: interface.cpp 8152 2004-07-08 10:52:23Z gbazin $
*
* Authors: Clment 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 );