Component File /DBCommander/Misc/OptionsInfo.cs (C#)
using System;  
using System.Collections;  
using System.Windows.Forms;  
using System.IO;  
  
namespace YariSoft.DBCommander.Misc  
{  
    [Serializable]  
    public class OptionsInfo  
    {  
        #region Local variables  
        private const int selectionCount        = 10;  
  
        private bool    _showFuncBar            = true;  
        private bool    _showToolBar            = true;  
        private string    _previousConfigFileName    = "";  
        private ArrayList      
                        _selections                = null;  
        private TableOptionsInfo  
                        _tableOptions            = null;  
        private YariSoft.Utils.AgentInfo  
                        _agentOptions            = null;  
  
        [NonSerialized()]private string _fileName = "";  
        #endregion  
  
        #region Properties  
        public bool ShowFuncBar  
        {  
            get{ return _showFuncBar; }  
            set{ this._showFuncBar = value; }  
        }  
  
        public bool ShowToolBar  
        {  
            get{ return this._showToolBar; }  
            set{ this._showToolBar = value; }  
        }  
  
        public TableOptionsInfo TableOptions  
        {  
            get{ return this._tableOptions; }  
            set{ this._tableOptions = value; }  
        }  
  
        public YariSoft.Utils.AgentInfo AgentOptions  
        {  
            get{ return this._agentOptions; }  
            set{ this._agentOptions = value; }  
        }  
  
        public string PreviousConfigFileName  
        {  
            get{ return this._previousConfigFileName; }  
            set{ this._previousConfigFileName = value; }  
        }  
  
        public string FileName  
        {  
            get{ return this._fileName; }  
            set{ this._fileName = value; }  
        }  
  
        public ArrayList Selections  
        {  
            get{ return this._selections; }  
        }  
        #endregion  
  
        #region Constructor/Destructor  
        public OptionsInfo( string FileName )  
        {  
            this._fileName        = FileName;  
            this._selections    = new ArrayList();  
            this.TableOptions    = new TableOptionsInfo();  
            this.AgentOptions    = new YariSoft.Utils.AgentInfo();  
        }  
        #endregion  
  
        #region Public functions  
        public bool SaveToFile()  
        {  
            while( this._selections.Count > selectionCount ){  
                this._selections.RemoveAt( this._selections.Count - 1);  
            }  
  
            return YariSoft.Utils.ConfigFile.SaveToFile( ref this._fileName, this, false );  
        }  
  
        public static OptionsInfo LoadFromFile( string FileName )  
        {  
            OptionsInfo result = ( OptionsInfo )YariSoft.Utils.ConfigFile.LoadFromFile( ref FileName, false );  
            if( result == null ){  
                result = new OptionsInfo( FileName );  
            } else {  
                result.FileName = FileName;  
            }  
            if( result.AgentOptions.ConfigFileName == "" ){  
                string optFileName = Application.StartupPath + "\\DBCommander.amv";  
                FileInfo fileInfo = new FileInfo( optFileName );  
                if( fileInfo.Exists ){  
                    result.AgentOptions.ConfigFileName = optFileName;  
                }  
            }  
            return result;  
        }  
        #endregion  
    }  
}