예제 #1
0
        public void InitFrom(ProfessionalColorTable colorTable, bool makeColorsDefault)
        {
            // Instead of "colors[ColorTableGroup.ButtonSelectedBorder] = colorTable.ButtonSelectedBorder"...
            // use reflection.
            var colorTableType      = colorTable.GetType();
            var colorTableGroupType = typeof(ColorTableGroup);

            foreach (ColorTableGroup colorTableGroup in Enum.GetValues(colorTableGroupType))
            {
                var prop = colorTableType.GetProperty(Enum.GetName(colorTableGroupType, colorTableGroup));
                _colors[colorTableGroup] = (Color)prop.GetValue(colorTable, null);
            }

            if (makeColorsDefault)
            {
                MakeColorsDefault();
            }
        }
예제 #2
0
        public void InitFromBase(bool makeColoursDefault)
        {
            // Instead of " colors[ColorTableGroup.ButtonSelectedBorder] = base.ButtonSelectedBorder"...
            // use reflection.
            Type colorTableType      = professionalColourTable.GetType();
            Type colorTableGroupType = typeof(ColourTableGroup);

            foreach (ColourTableGroup colorTableGroup in Enum.GetValues(colorTableGroupType))
            {
                switch (colorTableGroup)
                {
                case ColourTableGroup.FormForeColour:
                case ColourTableGroup.FormBackColour:
                case ColourTableGroup.GridGridColour:
                case ColourTableGroup.GridBackColour:
                {
                    var name = Enum.GetName(colorTableGroupType, colorTableGroup);
                    try
                    {
                        var prop = colorTableType.GetProperty(name);
                        colours[colorTableGroup] = (Color)prop.GetValue(professionalColourTable, null);
                    }
                    catch
                    {
                        colours[colorTableGroup] = Color.Black;
                    }
                    break;
                }

                default:
                {
                    var prop = colorTableType.GetProperty(Enum.GetName(colorTableGroupType, colorTableGroup));
                    colours[colorTableGroup] = (Color)prop.GetValue(professionalColourTable, null);
                    break;
                }
                }
            }

            if (makeColoursDefault)
            {
                MakeColorsDefault();
            }
        }
예제 #3
0
        /// <summary>
        /// Constructor that instantiates and sets up ProfessionalColorTable object</summary>
        public CustomColorTable()
        {
            var allPropInfos = GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
            var properyMap   = new Dictionary <string, PropertyInfo>();
            int count        = "Settable".Length;

            foreach (var propInfo in allPropInfos)
            {
                if (propInfo.PropertyType != typeof(Color))
                {
                    continue;
                }
                if (propInfo.Name.StartsWith("Settable"))
                {
                    string name = propInfo.Name.Remove(0, count);
                    properyMap.Add(name, propInfo);
                }
            }

            ProfessionalColorTable colorTable = new ProfessionalColorTable();

            PropertyInfo[] originals = colorTable.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
            foreach (var propInfo in originals)
            {
                PropertyInfo settable;
                if (properyMap.TryGetValue(propInfo.Name, out settable))
                {
                    settable.SetValue(this, propInfo.GetValue(colorTable, null), null);
                }
            }

            SettableToolStripBorder = Color.Transparent;

            SettableImageMarginGradientBegin  = Color.Transparent;
            SettableImageMarginGradientMiddle = Color.Transparent;
            SettableImageMarginGradientEnd    = Color.Transparent;
        }