www.pudn.com > WMACompressor.zip > InFormatEdit.cs


// 
// 
//  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY 
//  KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE 
//  IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR 
//  PURPOSE. IT CAN BE DISTRIBUTED FREE OF CHARGE AS LONG AS THIS HEADER  
//  REMAINS UNCHANGED. 
// 
//  Email:  yetiicb@hotmail.com 
// 
//  Copyright (C) 2002-2003 Idael Cardoso.  
// 
 
using System; 
using System.Collections; 
using System.ComponentModel; 
using System.Drawing; 
using System.Data; 
using System.Windows.Forms; 
using System.Globalization; 
using WaveLib; 
 
namespace Yeti.MMedia 
{ 
	///  
	/// Summary description for EditFormat. 
	///  
	public class EditFormat : System.Windows.Forms.UserControl, IEditFormat 
	{ 
    private System.Windows.Forms.ComboBox comboBoxChannels; 
    private System.Windows.Forms.ComboBox comboBoxBitsPerSample; 
    private System.Windows.Forms.Label label3; 
    private System.Windows.Forms.Label label2; 
    private Yeti.Controls.NumericTextBox textBoxSampleRate; 
    private System.Windows.Forms.Label label1; 
    private System.Windows.Forms.ToolTip toolTip1; 
    private System.ComponentModel.IContainer components; 
    private WaveFormat m_OrigFormat; 
    private System.Windows.Forms.ErrorProvider errorProvider1; 
 
		private bool m_FireConfigChangeEvent = true; 
 
    public EditFormat() 
		{ 
			// This call is required by the Windows.Forms Form Designer. 
			InitializeComponent(); 
      this.Format = new WaveFormat(44100, 16, 2); //Set default values 
		} 
 
		///   
		/// Clean up any resources being used. 
		///  
		protected override void Dispose( bool disposing ) 
		{ 
			if( disposing ) 
			{ 
				if(components != null) 
				{ 
					components.Dispose(); 
				} 
			} 
			base.Dispose( disposing ); 
		} 
 
    public bool ReadOnly 
    { 
      get 
      { 
        return textBoxSampleRate.ReadOnly; 
      } 
      set 
      { 
        textBoxSampleRate.ReadOnly = value; 
        comboBoxBitsPerSample.Enabled = comboBoxChannels.Enabled = !value; 
      } 
    } 
 
		#region Component Designer generated code 
		///   
		/// Required method for Designer support - do not modify  
		/// the contents of this method with the code editor. 
		///  
		private void InitializeComponent() 
		{ 
      this.components = new System.ComponentModel.Container(); 
      this.comboBoxChannels = new System.Windows.Forms.ComboBox(); 
      this.comboBoxBitsPerSample = new System.Windows.Forms.ComboBox(); 
      this.label3 = new System.Windows.Forms.Label(); 
      this.label2 = new System.Windows.Forms.Label(); 
      this.textBoxSampleRate = new Yeti.Controls.NumericTextBox(); 
      this.label1 = new System.Windows.Forms.Label(); 
      this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); 
      this.errorProvider1 = new System.Windows.Forms.ErrorProvider(); 
      this.SuspendLayout(); 
      //  
      // comboBoxChannels 
      //  
      this.comboBoxChannels.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 
      this.comboBoxChannels.Items.AddRange(new object[] { 
                                                          "MONO", 
                                                          "STEREO"}); 
      this.comboBoxChannels.Location = new System.Drawing.Point(96, 56); 
      this.comboBoxChannels.Name = "comboBoxChannels"; 
      this.comboBoxChannels.Size = new System.Drawing.Size(112, 21); 
      this.comboBoxChannels.TabIndex = 13; 
      this.comboBoxChannels.SelectedIndexChanged += new System.EventHandler(this.comboBoxChannels_SelectedIndexChanged); 
      //  
      // comboBoxBitsPerSample 
      //  
      this.comboBoxBitsPerSample.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 
      this.comboBoxBitsPerSample.Items.AddRange(new object[] { 
                                                               "8 bits per sample", 
                                                               "16 bits per sample"}); 
      this.comboBoxBitsPerSample.Location = new System.Drawing.Point(96, 96); 
      this.comboBoxBitsPerSample.Name = "comboBoxBitsPerSample"; 
      this.comboBoxBitsPerSample.Size = new System.Drawing.Size(112, 21); 
      this.comboBoxBitsPerSample.TabIndex = 12; 
      this.comboBoxBitsPerSample.SelectedIndexChanged += new System.EventHandler(this.comboBoxBitsPerSample_SelectedIndexChanged); 
      //  
      // label3 
      //  
      this.label3.Location = new System.Drawing.Point(16, 96); 
      this.label3.Name = "label3"; 
      this.label3.Size = new System.Drawing.Size(88, 23); 
      this.label3.TabIndex = 11; 
      this.label3.Text = "Bits per sample:"; 
      //  
      // label2 
      //  
      this.label2.Location = new System.Drawing.Point(16, 56); 
      this.label2.Name = "label2"; 
      this.label2.Size = new System.Drawing.Size(72, 16); 
      this.label2.TabIndex = 10; 
      this.label2.Text = "Audio mode:"; 
      //  
      // textBoxSampleRate 
      //  
      this.textBoxSampleRate.Location = new System.Drawing.Point(96, 16); 
      this.textBoxSampleRate.Name = "textBoxSampleRate"; 
      this.textBoxSampleRate.Size = new System.Drawing.Size(112, 20); 
      this.textBoxSampleRate.TabIndex = 8; 
      this.textBoxSampleRate.Text = "44100"; 
      this.toolTip1.SetToolTip(this.textBoxSampleRate, "Sample rate, in samples per second. "); 
      this.textBoxSampleRate.Value = 44100; 
      this.textBoxSampleRate.FormatValid += new System.EventHandler(this.textBoxSampleRate_FormatValid); 
      this.textBoxSampleRate.FormatError += new System.EventHandler(this.textBoxSampleRate_FormatError); 
      this.textBoxSampleRate.TextChanged += new System.EventHandler(this.textBoxSampleRate_TextChanged); 
      //  
      // label1 
      //  
      this.label1.Location = new System.Drawing.Point(16, 16); 
      this.label1.Name = "label1"; 
      this.label1.Size = new System.Drawing.Size(72, 16); 
      this.label1.TabIndex = 9; 
      this.label1.Text = "Sample rate:"; 
      //  
      // errorProvider1 
      //  
      this.errorProvider1.ContainerControl = this; 
      //  
      // EditFormat 
      //  
      this.Controls.Add(this.comboBoxChannels); 
      this.Controls.Add(this.comboBoxBitsPerSample); 
      this.Controls.Add(this.label3); 
      this.Controls.Add(this.label2); 
      this.Controls.Add(this.textBoxSampleRate); 
      this.Controls.Add(this.label1); 
      this.Name = "EditFormat"; 
      this.Size = new System.Drawing.Size(288, 200); 
      this.ResumeLayout(false); 
 
    } 
		#endregion 
 
    #region IConfigControl Members 
 
    public void DoApply() 
    { 
      // Nothing to do 
    } 
 
    public void DoSetInitialValues() 
    { 
      m_FireConfigChangeEvent = false; 
      try 
      { 
        textBoxSampleRate.Text = m_OrigFormat.nSamplesPerSec.ToString(); 
        if (m_OrigFormat.wBitsPerSample == 8) 
        { 
          comboBoxBitsPerSample.SelectedIndex = 0; 
        } 
        else 
        { 
          comboBoxBitsPerSample.SelectedIndex = 1; 
        } 
        if (m_OrigFormat.nChannels == 1) 
        { 
          comboBoxChannels.SelectedIndex = 0; 
        } 
        else 
        { 
          comboBoxChannels.SelectedIndex = 1; 
        } 
      } 
      finally 
      { 
        m_FireConfigChangeEvent = true; 
      } 
    } 
    [Browsable(false)] 
    public Control ConfigControl 
    { 
      get 
      { 
        return this; 
      } 
    } 
    [Browsable(false)] 
    public string ControlName 
    { 
      get 
      { 
        return "Input Format"; 
      } 
    } 
 
    public event System.EventHandler ConfigChange;     
     
    #endregion 
     
    #region IEditFormat members 
 
    [Browsable(false)] 
    public WaveFormat Format 
    { 
      get 
      { 
        int rate = int.Parse(textBoxSampleRate.Text, NumberStyles.AllowLeadingWhite|NumberStyles.AllowTrailingWhite); 
        int bits; 
        int channels; 
        if (comboBoxBitsPerSample.SelectedIndex == 0) 
        { 
          bits = 8; 
          comboBoxBitsPerSample.SelectedIndex = 0; 
        } 
        else 
        { 
          bits = 16; 
        } 
        if (comboBoxChannels.SelectedIndex == 0) 
        { 
          channels = 1; 
        } 
        else 
        { 
          channels = 2; 
        } 
        return new WaveFormat(rate, bits, channels); 
      } 
      set 
      { 
        m_OrigFormat = value; 
        DoSetInitialValues(); 
      } 
    } 
 
    #endregion 
 
    private void OnConfigChange(System.EventArgs e) 
    { 
      if ( m_FireConfigChangeEvent && (ConfigChange != null) ) 
      { 
        ConfigChange(this, e); 
      } 
    } 
 
    private void textBoxSampleRate_TextChanged(object sender, System.EventArgs e) 
    { 
      // TODO: Validate text 
      OnConfigChange(EventArgs.Empty); 
    } 
 
    private void comboBoxChannels_SelectedIndexChanged(object sender, System.EventArgs e) 
    { 
      OnConfigChange(EventArgs.Empty); 
    } 
 
    private void comboBoxBitsPerSample_SelectedIndexChanged(object sender, System.EventArgs e) 
    { 
      OnConfigChange(EventArgs.Empty); 
    } 
 
    private void textBoxSampleRate_FormatError(object sender, System.EventArgs e) 
    { 
      errorProvider1.SetError(textBoxSampleRate, "Number expected"); 
    } 
 
    private void textBoxSampleRate_FormatValid(object sender, System.EventArgs e) 
    { 
      errorProvider1.SetError(textBoxSampleRate, ""); 
    } 
  } 
}