예제 #1
0
        /// <summary>
        ///     Update properties used to display content in the combo box with new values.
        /// </summary>
        /// <parameters>
        /// <param name="enumType">The type of the enum bound to the <see cref="EnumBinding"/> dependency property.</param>
        /// </parameters>
        /// <remarks>
        ///     This will display a new set of localized strings in the drop-down part of the combo box, and select one of them if appropriate.
        /// </remarks>
        private void UpdateContent(Type enumType)
        {
            EnumNameCollection.Clear();

            if (enumType != null && enumType.IsEnum)
            {
                IValueConverter Converter          = NameConverter;
                object          ConverterParameter = NameConverterParameter;
                ConversionCulture = NameConverterCulture;
                if (ConversionCulture == null)
                {
                    ConversionCulture = CultureInfo.CurrentCulture;
                }

                string[] EnumNames = enumType.GetEnumNames();
                foreach (string EnumName in EnumNames)
                {
                    string ConvertedText = (Converter != null) ? Converter.Convert(EnumName, typeof(string), ConverterParameter, ConversionCulture) as string : EnumName;
                    EnumNameCollection.Add(ConvertedText);
                }
            }

            ItemsSource = EnumNameCollection;

            if (SelectedIndex >= EnumNameCollection.Count)
            {
                SelectedIndex = -1;
            }
        }
예제 #2
0
		void WriteFlags<T>(T flags, EnumNameCollection<T> flagNames) where T : struct
		{
			long val = Convert.ToInt64(flags);
			long tested = 0;
			foreach (var pair in flagNames) {
				tested |= pair.Key;
				if ((val & pair.Key) != 0 && pair.Value != null) {
					output.Write(pair.Value);
					output.Write(' ');
				}
			}
			if ((val & ~tested) != 0)
				output.Write("flag({0:x4}) ", val & ~tested);
		}
예제 #3
0
		void WriteEnum<T>(T enumValue, EnumNameCollection<T> enumNames) where T : struct
		{
			long val = Convert.ToInt64(enumValue);
			foreach (var pair in enumNames) {
				if (pair.Key == val) {
					if (pair.Value != null) {
						output.Write(pair.Value);
						output.Write(' ');
					}
					return;
				}
			}
			if (val != 0) {
				output.Write("flag({0:x4})", val);
				output.Write(' ');
			}
			
		}
예제 #4
0
        private void WriteFlags <T>(T flags, EnumNameCollection <T> flagNames) where T : struct
        {
            long val    = Convert.ToInt64(flags);
            long tested = 0;

            foreach (var pair in flagNames)
            {
                tested |= pair.Key;
                if ((val & pair.Key) != 0 && pair.Value != null)
                {
                    languageWriter.WriteKeyword(pair.Value);
                    languageWriter.WriteSpace();
                }
            }
            if ((val & ~tested) != 0)
            {
                languageWriter.WriteKeyword(string.Format("flag({0:x4}) ", val & ~tested));
            }
        }
예제 #5
0
        private void WriteFlags <T>(T flags, EnumNameCollection <T> flagNames) where T : struct
        {
            var  val    = Convert.ToInt64(flags);
            long tested = 0;

            foreach (var pair in flagNames)
            {
                tested |= pair.Key;
                if ((val & pair.Key) == 0 || pair.Value == null)
                {
                    continue;
                }
                _o.Write(pair.Value);
                _o.Write(' ');
            }
            if ((val & ~tested) != 0)
            {
                _o.Write("flag({0:x4}) ", val & ~tested);
            }
        }
예제 #6
0
        private void WriteEnum <T>(T enumValue, EnumNameCollection <T> enumNames) where T : struct
        {
            var val = Convert.ToInt64(enumValue);

            foreach (var pair in enumNames.Where(pair => pair.Key == val))
            {
                if (pair.Value == null)
                {
                    return;
                }
                _o.Write(pair.Value);
                _o.Write(' ');
                return;
            }
            if (val == 0)
            {
                return;
            }
            _o.Write("flag({0:x4})", val);
            _o.Write(' ');
        }
예제 #7
0
        private void WriteEnum <T>(T enumValue, EnumNameCollection <T> enumNames) where T : struct
        {
            long val = Convert.ToInt64(enumValue);

            foreach (var pair in enumNames)
            {
                if (pair.Key == val)
                {
                    if (pair.Value != null)
                    {
                        languageWriter.WriteKeyword(pair.Value);
                        languageWriter.WriteSpace();
                    }
                    return;
                }
            }
            if (val != 0)
            {
                languageWriter.WriteKeyword(string.Format("flag({0:x4})", val));
                languageWriter.WriteSpace();
            }
        }
예제 #8
0
 /// <summary>
 ///     Resets properties used to display content in the combo box.
 /// </summary>
 private void ResetContent()
 {
     EnumNameCollection.Clear();
     SelectedIndex = -1;
 }