// Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the // "Software"), to deal in the Software without restriction, including // without limitation the rights to use, copy, modify, merge, publish, // distribute, sublicense, and/or sell copies of the Software, and to // permit persons to whom the Software is furnished to do so, subject to // the following conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // // Copyright (c) 2004 Novell, Inc. // // Authors: // Peter Bartok pbartok@novell.com // // NOT COMPLETE using System.Globalization; namespace System.Windows.Forms { public sealed class InputLanguage { private static InputLanguageCollection all; private IntPtr handle; private CultureInfo culture; private string layout_name; private static InputLanguage current_input; private static InputLanguage default_input; #region Private Constructor [MonoInternalNote ("Pull Microsofts InputLanguages and enter them here")] internal InputLanguage() { } internal InputLanguage(IntPtr handle, CultureInfo culture, string layout_name) : this() { this.handle=handle; this.culture=culture; this.layout_name=layout_name; } #endregion // Private Constructor #region Public Static Properties public static InputLanguage CurrentInputLanguage { get { if (current_input == null) current_input = InputLanguage.FromCulture (CultureInfo.CurrentUICulture); return current_input; } set { if (InstalledInputLanguages.Contains (value)) current_input = value; } } public static InputLanguage DefaultInputLanguage { get { if (default_input == null) default_input = InputLanguage.FromCulture (CultureInfo.CurrentUICulture); return default_input; } } public static InputLanguageCollection InstalledInputLanguages { get { if (all == null) all = new InputLanguageCollection (new InputLanguage[] { new InputLanguage (IntPtr.Zero, new CultureInfo(string.Empty), "US") }); return all; } } #endregion // Public Static Properties #region Public Instance Properties public CultureInfo Culture { get { return this.culture; } } public IntPtr Handle { get { return this.handle; } } public string LayoutName { get { return this.layout_name; } } #endregion // Public Instance Properties #region Public Static Methods public static InputLanguage FromCulture(System.Globalization.CultureInfo culture) { foreach (InputLanguage c in InstalledInputLanguages) { if (culture.EnglishName==c.culture.EnglishName) { return new InputLanguage(c.handle, c.culture, c.layout_name); } } return new InputLanguage (InstalledInputLanguages[0].handle, InstalledInputLanguages[0].culture, InstalledInputLanguages[0].layout_name); } #endregion // Public Static Methods #region Public Instance Methods public override bool Equals(object value) { if (value is InputLanguage) { if ((((InputLanguage)value).culture==this.culture) && (((InputLanguage)value).handle==this.handle) && (((InputLanguage)value).layout_name==this.layout_name)) { return true; } } return false; } public override int GetHashCode() { return base.GetHashCode(); } #endregion // Public Instance Methods } }