X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FSystem.Drawing%2FSystem.Drawing%2FSizeConverter.cs;h=6b01d88f5716cd5a8a89d8fc090beff34d0bcddc;hb=56884dcbceee8a87dedd587846b65dc28c2dbcfc;hp=30bbf0ad5d13b6044c5d8688683c834002f65baf;hpb=f550dce7c5cb150fca68378509535b73579d84bc;p=mono.git diff --git a/mcs/class/System.Drawing/System.Drawing/SizeConverter.cs b/mcs/class/System.Drawing/System.Drawing/SizeConverter.cs index 30bbf0ad5d1..6b01d88f571 100644 --- a/mcs/class/System.Drawing/System.Drawing/SizeConverter.cs +++ b/mcs/class/System.Drawing/System.Drawing/SizeConverter.cs @@ -10,10 +10,35 @@ // Copyright (C) 2003 Novell, Inc. http://www.novell.com // +// +// Copyright (C) 2004 Novell, Inc (http://www.novell.com) +// +// 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. +// + using System; using System.Collections; using System.ComponentModel; using System.Globalization; +using System.ComponentModel.Design.Serialization; +using System.Reflection; namespace System.Drawing { @@ -41,6 +66,9 @@ namespace System.Drawing if (destinationType == typeof (string)) return true; + if (destinationType == typeof (InstanceDescriptor)) + return true; + return base.CanConvertTo (context, destinationType); } @@ -52,15 +80,18 @@ namespace System.Drawing if (s == null) return base.ConvertFrom (context, culture, value); - // FIXME: use culture - string [] subs = s.Split (','); + string[] subs = s.Split (culture.TextInfo.ListSeparator.ToCharArray ()); + + Int32Converter converter = new Int32Converter (); + int[] numSubs = new int[subs.Length]; + for (int i = 0; i < numSubs.Length; i++) { + numSubs[i] = (int) converter.ConvertFromString (context, culture, subs[i]); + } + if (subs.Length != 2) throw new ArgumentException ("Failed to parse Text(" + s + ") expected text in the format \"Width,Height.\""); - int width = Int32.Parse (subs [0]); - int height = Int32.Parse (subs [1]); - - return new Size (width, height); + return new Size (numSubs[0], numSubs[1]); } public override object ConvertTo (ITypeDescriptorContext context, @@ -71,10 +102,16 @@ namespace System.Drawing // LAMESPEC: "The default implementation calls the ToString method // of the object if the object is valid and if the destination // type is string." MS does not behave as per the specs. - // Oh well, it is just a string and there is no harm in behaving - // like MS. + // Oh well, we have to be compatible with MS. if ((destinationType == typeof (string)) && (value is Size)) - return ((Size) value).Width + ", " + ((Size) value).Height; + return ((Size) value).Width.ToString(culture) + culture.TextInfo.ListSeparator + + " " + ((Size) value).Height.ToString(culture); + + if (destinationType == typeof (InstanceDescriptor) && value is Size) { + Size s = (Size) value; + ConstructorInfo ctor = typeof(Size).GetConstructor (new Type[] {typeof(int), typeof(int)}); + return new InstanceDescriptor (ctor, new object[] {s.Width, s.Height}); + } return base.ConvertTo (context, culture, value, destinationType); }