public RangeDropDownControl(HCItemProperty itemProperty)
        {
            InitializeComponent();

            AddOkCancelButtons(out _, out _);

            this.itemProperty = itemProperty;

            rangeAttr = (RangeAttribute)itemProperty.Property.GetCustomAttributes(typeof(RangeAttribute)).FirstOrDefault();
            if (rangeAttr == null)
            {
                rangeAttr = new RangeAttribute(0, 100);                   // default
            }
            SetupUIApplicableRange();

            minTrackBar.ValueChanged += new EventHandler(anyTrackBar_ValueChanged);
            maxTrackBar.ValueChanged += new EventHandler(anyTrackBar_ValueChanged);

            object obj = ReferenceUtility.GetUnreferencedValue(itemProperty.GetValues()[0]);

            value = RangeConverter.ObjectToRange(obj);

            propertyItemForUndoSupport = itemProperty.GetItemInHierarchyToRestoreValues();
            propertyItemForUndoSupport.SaveValuesToRestore();

            UpdateTrackBarsAndTextBoxes();

            EditorThemeUtility.ApplyDarkThemeToForm(this);
        }
示例#2
0
        public ScriptDropDownControl(HCItemProperty itemProperty)
        {
            InitializeComponent();

            Resizable     = true;
            SpecialHolder = true;
            //DoubleBuffered = true;
            ResizeRedraw = true;
            MinimumSize  = Size;
            MaximumSize  = new Size(Size.Width * 2, Size.Height * 2);

            AddOkCancelButtons(out _, out _);

            this.itemProperty = itemProperty;

            propertyItemForUndoSupport = itemProperty.GetItemInHierarchyToRestoreValues();
            propertyItemForUndoSupport.SaveValuesToRestore();

            try
            {
                scriptEditorControl.Initialize(new HCItemPropertyScriptAdapter(itemProperty));
            }
            catch (Exception exc)
            {
                Log.Warning("Script editor control init failed: \n\n" + exc.ToString());
                Enabled = false;
            }

            DarkThemeUtility.ApplyToForm(this);
        }
示例#3
0
        private void TrackBar_ValueChanged(object sender, EventArgs e)
        {
            if (trackBarDisableValueChangedEvent)
            {
                return;
            }

            //!!!!new
            if (!trackBarFocused)
            {
                return;
            }

            //begin modifying. save old values for undo
            if (!trackBarModifying)
            {
                trackBarItemInHierarchyToAddUndo = GetItemInHierarchyToRestoreValues();
                trackBarItemInHierarchyToAddUndo.SaveValuesToRestore();
                trackBarModifying = true;
            }

            var control  = (IHCColorValuePowered)CreatedControlInsidePropertyItemControl;
            var trackBar = control.TrackBarPower;

            trackBarDisableValueChangedEvent = true;

            var netType   = Property.Type.GetNetType();
            var unrefType = ReferenceUtility.GetUnreferencedType(netType);


            var values = GetValues();

            if (values == null)
            {
                return;
            }

            //!!!!multiselection
            var value = values[0];

            var unrefValue = ReferenceUtility.GetUnreferencedValue(value);

            var color = (ColorValuePowered)unrefValue;

            try
            {
                var power = powerRange.GetValueFromTrackBar(false, trackBar.Value);
                color.Power = (float)power;

                SetValue(color, false);
            }
            catch
            {
            }

            trackBarDisableValueChangedEvent = false;
        }
示例#4
0
        public EnumDropDownControl(HCItemEnumDropDown itemProperty)
        {
            InitializeComponent();

            this.itemProperty = itemProperty;

            propertyType = ReferenceUtility.GetUnreferencedType(itemProperty.Property.Type.GetNetType());
            if (propertyType.IsEnum)
            {
                enumDataType = Enum.GetUnderlyingType(propertyType);
                isFlag       = propertyType.IsDefined(typeof(FlagsAttribute), false);
            }

            currentValue = ReferenceUtility.GetUnreferencedValue(itemProperty.GetValues()[0]);
            propertyItemForUndoSupport = itemProperty.GetItemInHierarchyToRestoreValues();
            propertyItemForUndoSupport.SaveValuesToRestore();

            listViewEnum.Items.Clear();
            listViewEnum.CheckBoxes = isFlag;

            foreach (var val in Enum.GetValues(propertyType))
            {
                var info = new EnumInfo(val);

                var displayName = info.DisplayName;
                var description = info.Description;
                itemProperty.Owner.PerformOverridePropertyEnumItem(itemProperty, ref displayName, ref description);

                listViewEnum.Items.Add(new ListViewItem
                {
                    Text        = displayName,
                    ToolTipText = description,
                    Tag         = info
                });

                //listViewEnum.Items.Add( new ListViewItem
                //{
                //	Text = info.DisplayName,
                //	ToolTipText = info.Description,
                //	Tag = info
                //} );
            }

            UpdateCheckState();

            int itemCount = listViewEnum.Items.Count;
            var height    = itemCount * (Font.Height + DpiHelper.Default.ScaleValue(4)) + 3;
            var width     = ((IHCProperty)itemProperty.CreatedControl).EditorControl.Width;           //TODO: bad incapsulation. why this control should know about EditorControl.Width ?

            Size = new Size(width, Math.Min(dropdownHeight, height));

            if (EditorAPI.DarkTheme)
            {
                listViewEnum.BackColor = Color.FromArgb(54, 54, 54);
                listViewEnum.ForeColor = Color.FromArgb(240, 240, 240);
            }
        }
        private void TrackBar_ValueChanged(object sender, EventArgs e)
        {
            if (trackBarDisableValueChangedEvent)
            {
                return;
            }

            if (!trackBarFocused)
            {
                return;
            }

            //begin modifying. save old values for undo
            if (!trackBarModifying)
            {
                trackBarItemInHierarchyToAddUndo = GetItemInHierarchyToRestoreValues();
                trackBarItemInHierarchyToAddUndo.SaveValuesToRestore();
                trackBarModifying = true;
            }

            var control  = (IHCTextBoxNumeric)CreatedControlInsidePropertyItemControl;
            var trackBar = control.TrackBar;

            trackBarDisableValueChangedEvent = true;

            var netType   = Property.Type.GetNetType();
            var unrefType = ReferenceUtility.GetUnreferencedType(netType);

            try
            {
                double doubleValue = range.GetValueFromTrackBar(IsInteger(), trackBar.Value);

                //conversion by means string
                string str;
                if (IsInteger())
                {
                    str = Convert.ToInt64(doubleValue).ToString();
                }
                else
                {
                    str = doubleValue.ToString();
                }
                var value = SimpleTypes.ParseValue(unrefType, str);

                SetValue(value, false);
            }
            catch
            {
            }

            trackBarDisableValueChangedEvent = false;
        }
示例#6
0
        public ColorValuePoweredSelectControl(HCItemProperty itemProperty)
        {
            InitializeComponent();
            AddOkCancelButtons(out okButton, out cancelButton);

            this.itemProperty = itemProperty;

            powered = ReferenceUtility.GetUnreferencedType(itemProperty.Property.Type.GetNetType()) == typeof(ColorValuePowered);

            var values = itemProperty.GetValues();

            if (values == null)
            {
                return;
            }

            //!!!!multiselection
            var value = values[0];

            ColorValuePowered initValue;

            bool readOnly;

            {
                var  netType         = itemProperty.Property.Type.GetNetType();
                bool isReferenceType = ReferenceUtility.IsReferenceType(netType);

                bool       referenceSpecified = false;
                IReference iReference         = null;
                if (isReferenceType && value != null)
                {
                    iReference         = (IReference)value;
                    referenceSpecified = !string.IsNullOrEmpty(iReference.GetByReference);
                }

                readOnly = referenceSpecified;
            }

            if (powered)
            {
                initValue = (ColorValuePowered)ReferenceUtility.GetUnreferencedValue(value);
            }
            else
            {
                var c = (ColorValue)ReferenceUtility.GetUnreferencedValue(value);
                initValue = new ColorValuePowered(c.Red, c.Green, c.Blue, c.Alpha, 1);
            }

            //for( int n = 0; n < propertyOwners.Length; n++ )
            //{
            //	ColorValue v = (ColorValue)property.GetValue( propertyOwners[ n ], null );

            //	if( n != 0 )
            //	{
            //		if( value != v )
            //		{
            //			value = new ColorValue( 1, 1, 1 );
            //			break;
            //		}
            //	}
            //	else
            //		value = v;
            //}

            bool noAlpha = itemProperty.Property.GetCustomAttributes(typeof(ColorValueNoAlphaAttribute), true).Length != 0;

            ApplicableRangeColorValuePowerAttribute powerRange = null;

            if (powered)
            {
                var array = itemProperty.Property.GetCustomAttributes(typeof(ApplicableRangeColorValuePowerAttribute), true);
                if (array.Length != 0)
                {
                    powerRange = (ApplicableRangeColorValuePowerAttribute)array[0];
                }
            }

            Init(initValue, noAlpha, powered, powerRange, readOnly);

            propertyItemForUndoSupport = itemProperty.GetItemInHierarchyToRestoreValues();
            propertyItemForUndoSupport.SaveValuesToRestore();

            EditorThemeUtility.ApplyDarkThemeToForm(this);
        }