Commit 6c43e73e authored by Clément Stenac's avatar Clément Stenac

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 );
}
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
......@@ -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) )
{
......
......@@ -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;
}
......
......@@ -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 Teulire <ipkiss@via.ecp.fr>
*
......
/*****************************************************************************
* stream.cpp : wxWindows plugin for vlc
*****************************************************************************
* Copyright (C) 2000-2004 VideoLAN
* $Id$
*
* 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 <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();
}
......@@ -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>
*
......
......@@ -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__ )
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment