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); }
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); }
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; }
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; }
//public delegate void OverridePropertyReadOnlyDelegate( HCItemProperty itemProperty, ref bool propertyReadOnly, ref bool handled ); //public static event OverridePropertyReadOnlyDelegate OverridePropertyReadOnly; public static void PerformOverridePropertyReadOnly(HCItemProperty itemProperty, ref bool?readOnly) //public static void PerformOverridePropertyReadOnly( HCItemProperty itemProperty, ref bool propertyReadOnly ) { //var handled = false; OverridePropertyReadOnly?.Invoke(itemProperty, ref readOnly); //, ref handled ); //if( handled ) // return; var property = itemProperty.Property; //Transform: Position, Rotation, Scale if (property.Name == "Position" || property.Name == "Rotation" || property.Name == "Scale") { var ownerType = property.Owner as Metadata.NetTypeInfo; if (ownerType != null && ownerType.Type == typeof(Transform)) { readOnly = false; //handled = true; } } //array: Length if (property.Name == "Length") { var ownerType = property.Owner as Metadata.TypeInfo; if (ownerType != null && ownerType.GetNetType() == typeof(Array)) // HCItemProperty.IsOneDimensionArray( ownerType.GetNetType() ) ) { var parentItemProperty = itemProperty.Parent as HCItemProperty; if (parentItemProperty != null && !parentItemProperty.Property.ReadOnly) { readOnly = false; //handled = true; } } } //List, ReferenceList: Count if (property.Name == "Count") { var ownerType = property.Owner as Metadata.TypeInfo; if (ownerType != null && HCItemProperty.IsListType(ownerType.GetNetType())) { readOnly = false; //handled = true; } } }
public void ToggleDropDown(HCDropDownControl control, HCItemProperty itemProperty) { if (dropDownHolder == null) { if (control.SpecialHolder) { dropDownHolder = new HCFormDropDownHolder(control); } else { dropDownHolder = new HCToolStripDropDownHolder(control); } dropDownHolder.Show(itemProperty.CreatedControlInsidePropertyItemControl); dropDownHolder.HolderClosed += DropDownHolder_Closed; } else { dropDownHolder.Close(); } }
private void HierarchicalContainer1_PropertyDisplayNameOverride(HierarchicalContainer sender, HCItemProperty property, ref string displayName) { displayName = EditorLocalization.Translate("ContentBrowser.Options", displayName); }
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); }
private void HierarchicalContainer1_OverridePropertyDisplayName(HierarchicalContainer sender, HCItemProperty property, ref string displayName) { displayName = EditorLocalization.Translate("Object.Property", displayName); }
private void HierarchicalContainer1_OverridePropertyDisplayName(HierarchicalContainer sender, HCItemProperty property, ref string displayName) { try { if (Provider.DocumentWindow.Document.SpecialMode == "ProjectSettingsUserMode") { displayName = EditorLocalization.Translate("ProjectSettings.Property", displayName); } else { displayName = EditorLocalization.Translate("Object.Property", displayName); } } catch { } }
//[DefaultValue( false )] //public bool ReverseItems { get; set; } public void PerformOverridePropertyDisplayName(HCItemProperty property, ref string displayName) { OverridePropertyDisplayName?.Invoke(this, property, ref displayName); }
private void HierarchicalContainer1_PropertyDisplayNameOverride(HierarchicalContainer sender, HCItemProperty property, ref string displayName) { displayName = Translate(displayName); }
public HCItemPropertyScriptAdapter(HCItemProperty itemProperty) { this.itemProperty = itemProperty; }
public static void PerformOverridePropertySetValue(HCItemProperty.PropertySetValueData data) { OverridePropertySetValue?.Invoke(data); var property = data.itemProperty.Property; //Transform: Position, Rotation, Scale if (data.parentItemProperty != null && ReferenceUtility.GetUnreferencedType(data.parentItemProperty.Property.Type.GetNetType()) == typeof(Transform)) { for (int n = 0; n < data.itemProperty.ControlledObjects.Length; n++) { var old = data.itemProperty.ControlledObjects[n]; if (property.Name == "Position") { data.itemProperty.ControlledObjects[n] = old.GetType().GetMethod("UpdatePosition").Invoke(old, new object[] { data.value }); } else if (property.Name == "Rotation") { data.itemProperty.ControlledObjects[n] = old.GetType().GetMethod("UpdateRotation").Invoke(old, new object[] { data.value }); } else if (property.Name == "Scale") { data.itemProperty.ControlledObjects[n] = old.GetType().GetMethod("UpdateScale").Invoke(old, new object[] { data.value }); } } data.setValueHandled = true; } //array: Length if (property.Name == "Length") { var ownerType = property.Owner as Metadata.TypeInfo; if (ownerType != null && ownerType.GetNetType() == typeof(Array)) // HCItemProperty.IsOneDimensionArray( ownerType.GetNetType() ) ) { int newLength = (int)data.unrefValue; for (int nCollectedObject = 0; nCollectedObject < data.parentItemProperty.ControlledObjects.Length; nCollectedObject++) { var array = (IList)ReferenceUtility.GetUnreferencedValue(data.itemProperty.ControlledObjects[nCollectedObject]); if (array != null && array.Count != newLength) { var newArray = Array.CreateInstance(array.GetType().GetElementType(), newLength); Array.Copy((Array)array, newArray, Math.Min(newLength, array.Count)); //!!!!multiselection. вместе undo все data.parentItemProperty.SetValue(newArray, data.addUndo); } } data.setValueHandled = true; data.addUndoHandled = true; data.updateParentPropertyHandled = true; } } //List: Count if (property.Name == "Count") { var ownerType = property.Owner as Metadata.TypeInfo; if (ownerType != null && HCItemProperty.IsListType(ownerType.GetNetType())) { int newCount = (int)data.unrefValue; for (int nCollectedObject = 0; nCollectedObject < data.parentItemProperty.ControlledObjects.Length; nCollectedObject++) { var list = (IList)ReferenceUtility.GetUnreferencedValue(data.itemProperty.ControlledObjects[nCollectedObject]); if (list != null) { if (newCount < list.Count) { //remove items if (!data.addUndoHandled && data.addUndo && data.itemProperty.Owner.DocumentWindow?.Document != null) { //remove with undo var indexes = new List <int>(); for (int n = newCount; n < list.Count; n++) { indexes.Add(n); } var undoAction = new UndoActionListAddRemove(list, indexes, false); DocumentInstance document = data.itemProperty.Owner.DocumentWindow.Document; document.UndoSystem.CommitAction(undoAction); document.Modified = true; } else { //remove without undo while (list.Count > newCount) { list.RemoveAt(list.Count - 1); } } } else if (newCount > list.Count) { //add items var indexes = new List <int>(); for (int n = list.Count; n < newCount; n++) { indexes.Add(n); } var elementType = list.GetType().GetGenericArguments()[0]; while (list.Count < newCount) { object itemValue = null; var referenceList = list as IReferenceList; if (referenceList != null) { itemValue = Activator.CreateInstance(referenceList.GetItemType()); // referenceList.CreateItemValue(); } else if (elementType.IsValueType) { itemValue = Activator.CreateInstance(elementType); } list.Add(itemValue); } //undo if (!data.addUndoHandled && data.addUndo && data.itemProperty.Owner.DocumentWindow?.Document != null) { var undoAction = new UndoActionListAddRemove(list, indexes, true); DocumentInstance document = data.itemProperty.Owner.DocumentWindow.Document; document.UndoSystem.CommitAction(undoAction); document.Modified = true; } } } } data.setValueHandled = true; data.addUndoHandled = true; data.updateParentPropertyHandled = true; } } }