示例#1
0
 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();
     }
 }
示例#2
0
        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();
        }
示例#3
0
        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();
            }
        }
示例#4
0
        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();
            }
        }
示例#5
0
 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);
        }
示例#7
0
        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;
            }
        }
示例#8
0
        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();
            }
        }
示例#9
0
        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();
            }
        }
示例#10
0
        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();
            }
        }
示例#11
0
        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();
            }
        }
示例#12
0
 private static string GetConfigurationKey(PropertyFieldAttribute attribute, PropertyInfo property, string prefix = null)
 {
     return((!string.IsNullOrWhiteSpace(prefix) ? prefix + ':' : "") + (attribute?.Key ?? property.Name));
 }
示例#13
0
 private void createNewImageRow(PropertyInfo prop, int row, PropertyFieldAttribute attr)
 {
     gridAddRowDef();
     createImgeProperty(prop.GetValue(_selectedObject) as ImageSource, row, prop.Name);
     gridAddEnd();
 }
示例#14
0
        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();
                }
            }
        }
示例#15
0
 private void createNewReadonlyBooleanRow(PropertyInfo prop, int row, PropertyFieldAttribute attr)
 {
     gridAddRowDef();
     createNewBooleanRow(prop, row, true);
     gridAddEnd();
 }
示例#16
0
 private void createNewNormalBooleanRow(PropertyInfo prop, int row, PropertyFieldAttribute attr)
 {
     gridAddRowDef();
     createNewBooleanRow(prop, row, false);
     gridAddEnd();
 }