private void createTableRow(PropertyInfo prop, int row, PropertyFieldAttribute attr) { if (!uiElementMap.ContainsKey(prop.Name)) { gridAddRowDef(); var ed = createDropDownBox(row); ed.Title = CONST_STRING.GetTitleText(prop.ReflectedType, prop.Name); ed.AllowDrop = true; ed.Tag = prop; ed.SelectText = prop.GetValue(_selectedObject).ToString(); ed.PreviewKeyUp += dropDown_PreviewKeyUp; //ed.ItemSource = TableManager.GetNodeList(attr.Param.ToString()); ed.DorpDownEvent += dropDown_DorpDownEvent; ed.DropDownSelected += dropDown_DropDownSelected; ed.PreviewDragOver += new DragEventHandler((object sender, DragEventArgs e) => { table_dragOver(attr, sender, e); }); ed.PreviewDragLeave += control_PreviewDragLeave; ed.PreviewDrop += new DragEventHandler((object sender, DragEventArgs e) => { table_PreviewDrop(sender, e.Data.GetData(typeof(string)).ToString(), attr.Param.ToString()); }); uiElementMap[prop.Name] = ed; gridAddEnd(); } }
private void createColorPanel(PropertyInfo prop, int row, PropertyFieldAttribute attr) { gridAddRowDef(); gridAddTitle(prop); Rectangle back = new Rectangle(); back.Margin = new Thickness(0, 2, 2, 0); Rectangle rect = new Rectangle(); Vector4 color = (Vector4)prop.GetValue(_selectedObject); back.Fill = _View.Resources["CheckerBoard"] as Brush; rect.Fill = new SolidColorBrush(Color.FromArgb((byte)(color.w * 255), (byte)(color.x * 255), (byte)(color.y * 255), (byte)(color.z * 255))); rect.Tag = prop; rect.Margin = new Thickness(0, 2, 2, 0); Grid.SetColumn(rect, 1); Grid.SetRow(rect, _panelParent.RowDefinitions.Count - 1); Grid.SetColumn(back, 1); Grid.SetRow(back, _panelParent.RowDefinitions.Count - 1); var template = (ControlTemplate)_View.Resources["validationErrorTemplate"]; Validation.SetErrorTemplate(rect, template); _panelParent.Children.Add(back); _panelParent.Children.Add(rect); rect.PreviewMouseLeftButtonUp += Rect_PreviewMouseLeftButtonUp; gridAddEnd(); }
private void createNewIntListRow(PropertyInfo prop, int row, PropertyFieldAttribute attr) { if (!uiElementMap.ContainsKey(prop.Name)) { gridAddRowDef(); MultTextBox mutb = new MultTextBox(); mutb.Margin = new Thickness(0, 2, 2, 0); mutb.BorderThickness = new Thickness(0); mutb.VerticalAlignment = VerticalAlignment.Stretch; mutb.titleName.Text = CONST_STRING.GetTitleText(prop.ReflectedType, prop.Name); Grid.SetColumn(mutb, 0); Grid.SetColumnSpan(mutb, 2); mutb.HorizontalAlignment = HorizontalAlignment.Stretch; Grid.SetRow(mutb, _panelParent.RowDefinitions.Count - 1); mutb.SelectObject = _selectedObject; mutb.inputPropertyInfo = prop; _panelParent.Children.Add(mutb); _panelParent.RowDefinitions[_panelParent.RowDefinitions.Count - 1].Height = new GridLength(mutb.TotalHeight); mutb.EnterComplete += Mutb_EnterComplete; uiElementMap[prop.Name] = mutb; gridAddEnd(); } }
private void createVector3Row(PropertyInfo prop, int row, PropertyFieldAttribute attr) { Vector3Control vecElement = null; if (uiElementMap.ContainsKey(prop.Name)) { vecElement = uiElementMap[prop.Name] as Vector3Control; vecElement.ValueObject = (E3DEngine.Vector3)prop.GetValue(_selectedObject); } else { gridAddRowDef(); gridAddTitle(prop); gridAddEnd(); gridAddRowDef(); vecElement = new Vector3Control(); vecElement.ValueObject = (E3DEngine.Vector3)prop.GetValue(_selectedObject); vecElement.SelectObject = _selectedObject; vecElement.ValueProperty = prop; vecElement.Margin = new Thickness(0, 2, 2, 0); vecElement.BorderThickness = new Thickness(0); Grid.SetColumn(vecElement, 0); Grid.SetColumnSpan(vecElement, 2); Grid.SetRow(vecElement, _panelParent.RowDefinitions.Count - 1); var template = (ControlTemplate)_View.Resources["validationErrorTemplate"]; Validation.SetErrorTemplate(vecElement, template); uiElementMap[prop.Name] = vecElement; _panelParent.Children.Add(vecElement); gridAddEnd(); } }
private void displayProperty(PropertyInfo prop, int row, PropertyFieldAttribute prf) { if (!createNewPropertyMap.ContainsKey(prf.PropType)) { return; } createNewPropertyMap[prf.PropType](prop, row, prf); }
/*************************** ******* METHODS ******* **************************/ // Make your own IMGUI based GUI for the property public override void OnGUI(Rect _position, SerializedProperty _property, GUIContent _label) { // Get linked property name PropertyFieldAttribute _attribute = (PropertyFieldAttribute)attribute; string _propertyName = string.IsNullOrEmpty(_attribute.PropertyName) ? (char.ToUpper(_property.name[0]) + _property.name.Substring(1)) : _attribute.PropertyName; // Draw field EditorGUIEnhanced.PropertyField(_position, _property, _label, _propertyName); }
private void table_dragOver(PropertyFieldAttribute attr, object sender, DragEventArgs e) { string text = e.Data.GetData(typeof(string)).ToString(); if (checkDragTextIsCanUse(attr.Param, text)) { e.Handled = true; (sender as DropDownBox).Background = Brushes.LightGreen; } else { e.Effects = DragDropEffects.None; (sender as DropDownBox).Background = Brushes.Red; } }
private void createNumberBoxRow(PropertyInfo prop, int row, PropertyFieldAttribute attr) { if (!uiElementMap.ContainsKey(prop.Name)) { gridAddRowDef(); gridAddTitle(prop); var numBox = createNumberTextBox(); numBox.Tag = prop; var binding = new Binding(prop.Name); binding.Source = _selectedObject; binding.ValidatesOnExceptions = true; binding.Mode = BindingMode.OneWay; numBox.tbx.SetBinding(TextBox.TextProperty, binding); uiElementMap[prop.Name] = numBox; numBox.KeyUp += NumBox_KeyUp; gridAddEnd(); } }
private void createNewEnumRow(PropertyInfo prop, int row, PropertyFieldAttribute attr) { if (!uiElementMap.ContainsKey(prop.Name)) { gridAddRowDef(); gridAddTitle(prop); var cb = new ComboBox(); Type type = prop.PropertyType; if (attr.EnumType != null) { type = attr.EnumType; } if (!addValueInComboBox(cb, type)) { return; } cb.Margin = new Thickness(0, 2, 2, 0); cb.BorderThickness = new Thickness(0); Grid.SetColumn(cb, 1); Grid.SetRow(cb, _panelParent.RowDefinitions.Count - 1); cb.Tag = prop; int propValue = (int)prop.GetValue(_selectedObject); string text = EnumTools.GetTextByValue(propValue, type); cb.SelectedItem = text; cb.SelectionChanged += new SelectionChangedEventHandler((object sender, SelectionChangedEventArgs e) => { int enumValue = EnumTools.GetEnumValue(cb.SelectedValue.ToString(), type); prop.SetValue(_selectedObject, EnumTools.Int2Enum(enumValue, type)); }); var template = (ControlTemplate)_View.Resources["validationErrorTemplate"]; Validation.SetErrorTemplate(cb, template); uiElementMap[prop.Name] = cb; _panelParent.Children.Add(cb); gridAddEnd(); } }
private void createImagePathRow(PropertyInfo prop, int row, PropertyFieldAttribute attr) { if (!uiElementMap.ContainsKey(prop.Name)) { gridAddRowDef(); gridAddTitle(prop); var ed = createTextBox(false); ed.Tag = prop; var binding = new Binding(prop.Name); binding.Source = _selectedObject; binding.ValidatesOnExceptions = true; binding.Mode = BindingMode.OneWay; ed.SetBinding(TextBox.TextProperty, binding); uiElementMap[prop.Name] = ed; gridAddEnd(); } }
private void createNewFileRow(PropertyInfo prop, int row, PropertyFieldAttribute attr) { if (!uiElementMap.ContainsKey(prop.Name)) { gridAddRowDef(); string text = prop.GetValue(_selectedObject) as string; if (text == "") { return; } FileType fileType = CommonTools.GetFileType(text); if (fileType == FileType.eImage) { System.Drawing.Bitmap bitmap = FreeImageToBitmap.LoadImageFormFreeImage(Config.GamePath + "\\" + text); System.Windows.Media.Imaging.BitmapSource bs = Imaging.CreateBitmapSourceFromHBitmap(bitmap.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions()); createImgeProperty(bs, _panelParent.RowDefinitions.Count - 1, prop.Name); } else if (fileType == FileType.eText || fileType == FileType.eScript) { showTxt(text, prop.Name); } else if (fileType == FileType.eVideo || fileType == FileType.eAudio) { showMusic(text, prop.Name); } else { _panelParent.RowDefinitions.RemoveAt(_panelParent.RowDefinitions.Count - 1); return; } gridAddEnd(); } }
private static string GetConfigurationKey(PropertyFieldAttribute attribute, PropertyInfo property, string prefix = null) { return((!string.IsNullOrWhiteSpace(prefix) ? prefix + ':' : "") + (attribute?.Key ?? property.Name)); }
private void createNewImageRow(PropertyInfo prop, int row, PropertyFieldAttribute attr) { gridAddRowDef(); createImgeProperty(prop.GetValue(_selectedObject) as ImageSource, row, prop.Name); gridAddEnd(); }
private void createComponentRow(PropertyInfo prop, int row, PropertyFieldAttribute attr) { IList <ComponentRef> componentList = prop.GetValue(_selectedObject) as IList <ComponentRef>; Type comType = typeof(ComponentRef); for (int i = 0; i < componentList.Count; i++) { gridAddRowDef(); CheckBox check = createCheckBox(); check.IsChecked = componentList[i].GetIsActive(); check.Tag = componentList[i]; check.Checked += Check_Checked; check.Unchecked += Check_Unchecked; gridAddTitle(15, componentList[i].GetName()); gridAddEnd(); ComponentRef com = componentList[i]; List <ComponentField> fieldList = com.GetFields(); for (int j = 0; j < fieldList.Count; j++) { gridAddRowDef(); TextBlock title = gridAddTitle(30, fieldList[j].Name); if ((fieldList[j].Type & ComponentFieldType.FT_FLOAT) == ComponentFieldType.FT_FLOAT || (fieldList[j].Type & ComponentFieldType.FT_INT) == ComponentFieldType.FT_INT) { NumberTextBox tb = createNumberTextBox(); tb.Text = fieldList[j].Value; tb.Tag = fieldList[j]; tb._KeyUp += comNumTb__KeyUp; title.Tag = fieldList[j]; float value = Convert.ToSingle(fieldList[j].Value); title.MouseLeftButtonDown += new MouseButtonEventHandler((object sender, MouseButtonEventArgs e) => { _mouseDown = true; _mousePosX = e.GetPosition(null).X; title.CaptureMouse(); }); title.MouseMove += new MouseEventHandler((object sender, MouseEventArgs e) => { if (_mouseDown) { double xPos = e.GetPosition(null).X; ComponentField f = (sender as TextBlock).Tag as ComponentField; if ((f.Type & ComponentFieldType.FT_READONLY) == ComponentFieldType.FT_READONLY) { return; } if ((f.Type & ComponentFieldType.FT_FLOAT) == ComponentFieldType.FT_FLOAT) { if (xPos > _mousePosX) { value += 0.01f; } else if (xPos < _mousePosX) { value -= 0.01f; } } else if ((f.Type & ComponentFieldType.FT_INT) == ComponentFieldType.FT_INT) { if (xPos > _mousePosX) { value += 1; } else if (xPos < _mousePosX) { value -= 1; } } tb.Text = value.ToString(); f.SetValue(tb.Text); _mousePosX = xPos; } }); title.MouseLeftButtonUp += new MouseButtonEventHandler((object sender, MouseButtonEventArgs e) => { _mouseDown = false; _mousePosX = 0; title.ReleaseMouseCapture(); }); } else if (fieldList[j].Type == ComponentFieldType.FT_OBJECT) { TextBox tb = createTextBox(true); tb.Tag = fieldList[j]; tb.KeyUp += comTb_KeyUp; tb.Text = fieldList[j].Value; } else if (fieldList[j].Type == ComponentFieldType.FT_BOOLEAN) { ComboBox cb = createBoolControl(); cb.Tag = fieldList[j]; cb.SelectionChanged += comCb_SelectionChanged; cb.SelectedIndex = fieldList[j].Value == "true" ? 0 : 1; } else if (fieldList[j].Type == ComponentFieldType.FT_VECTOR3) { var vecElement = new Vector3Control(); string[] vStr = fieldList[j].Value.Split(','); Vector3 vec = new Vector3(Convert.ToSingle(vStr[0]), Convert.ToSingle(vStr[1]), Convert.ToSingle(vStr[2])); vecElement.ValueObject = vec; vecElement.Margin = new Thickness(0, 2, 2, 0); vecElement.BorderThickness = new Thickness(0); vecElement.Tag = fieldList[j]; Grid.SetColumn(vecElement, 1); Grid.SetRow(vecElement, _panelParent.RowDefinitions.Count - 1); var template = (ControlTemplate)_View.Resources["validationErrorTemplate"]; Validation.SetErrorTemplate(vecElement, template); vecElement.EnterKeyDown += VecElement_EnterKeyDown; _panelParent.Children.Add(vecElement); } else { TextBox tb = createTextBox(false); tb.Tag = fieldList[j]; tb.KeyUp += comTb_KeyUp; tb.Text = fieldList[j].Value; } gridAddEnd(); } } }
private void createNewReadonlyBooleanRow(PropertyInfo prop, int row, PropertyFieldAttribute attr) { gridAddRowDef(); createNewBooleanRow(prop, row, true); gridAddEnd(); }
private void createNewNormalBooleanRow(PropertyInfo prop, int row, PropertyFieldAttribute attr) { gridAddRowDef(); createNewBooleanRow(prop, row, false); gridAddEnd(); }