Exemplo n.º 1
0
            public VisualHintEditor(VisualHint hint, float leftOffset = 0f)
            {
                this.hint = hint;
                Layout    = new VBoxLayout();

                if (hint.Command != null)
                {
                    BooleanEditor = new BooleanEditor(hint.Command);
                }
                else
                {
                    BooleanEditor = new BooleanEditor(hint.Title);
                }
                BooleanEditor.Changed       += e => CheckHandle(e);
                BooleanEditor.Checked        = hint.Enabled;
                BooleanEditor.CommandIssued += () => CheckSelfAndChildren(BooleanEditor.Checked);

                var rowWidget = new Widget {
                    Layout  = new HBoxLayout(),
                    Padding = new Thickness {
                        Left = leftOffset
                    }
                };

                rowWidget.AddNode(hint.SubHints.Count > 0 ? (button = CreateExpandButton()) : offsetWidget.Clone());
                rowWidget.AddNode(BooleanEditor);
                AddNode(rowWidget);
                container = new Widget {
                    Layout = new VBoxLayout()
                };
                foreach (var subHint in hint.SubHints.Values)
                {
                    if (subHint.Hidden)
                    {
                        continue;
                    }
                    container.AddNode(new VisualHintEditor(subHint, leftOffset + 23)
                    {
                        parent = this
                    });
                }
                rowWidget.AddChangeWatcher(() => hint.Expanded, _ => HandleExpanded());
                TryCheckAll(traverseParents: false);
            }
        private Func <string> GetParameterEditorAction(string paramType, string currentValue)
        {
            DataType2 dt2;

            if (Enum.TryParse(paramType, out dt2))
            {
                switch (dt2)
                {
                case DataType2.Boolean:
                case DataType2.Bold:
                case DataType2.Italic:
                case DataType2.Overlined:
                case DataType2.Underlined:
                    return(() =>
                    {
                        using (var ed = new BooleanEditor())
                        {
                            bool b = default(bool);
                            bool.TryParse(currentValue, out b);
                            ed.SetDataType(dt2, b);
                            if (ed.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                            {
                                return ed.Result ? "true" : "false";     //NOXLATE
                            }
                        }
                        return null;
                    });

                case DataType2.Integer:
                case DataType2.Real:
                case DataType2.Angle:
                case DataType2.EndOffset:
                case DataType2.FontHeight:
                case DataType2.LineSpacing:
                case DataType2.LineWeight:
                case DataType2.ObliqueAngle:
                case DataType2.RepeatX:
                case DataType2.RepeatY:
                case DataType2.TrackSpacing:
                case DataType2.StartOffset:
                    return(() =>
                    {
                        using (var ed = new NumberEditor())
                        {
                            decimal d = default(decimal);
                            decimal.TryParse(currentValue, out d);
                            ed.SetDataType(dt2, d);
                            if (ed.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                            {
                                decimal result = ed.Value;
                                if (dt2 == DataType2.Integer)
                                {
                                    return Convert.ToInt32(result).ToString(CultureInfo.InvariantCulture);
                                }
                                else
                                {
                                    return Convert.ToDouble(result).ToString(CultureInfo.InvariantCulture);
                                }
                            }
                        }
                        return null;
                    });

                case DataType2.Color:
                case DataType2.FillColor:
                case DataType2.FrameFillColor:
                case DataType2.FrameLineColor:
                case DataType2.GhostColor:
                case DataType2.LineColor:
                case DataType2.TextColor:
                {
                    return(() =>
                        {
                            using (var picker = new ColorPickerDialog())
                            {
                                try
                                {
                                    picker.SelectedColor = Utility.ParseHTMLColorARGB((currentValue ?? "").Replace("0x", ""));
                                }
                                catch { }
                                if (picker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                                {
                                    return "0x" + Utility.SerializeHTMLColorARGB(picker.SelectedColor, true);
                                }
                            }
                            return null;
                        });
                }

                case DataType2.Justification:
                {
                    var values = Enum.GetValues(typeof(OSGeo.MapGuide.ObjectModels.SymbolDefinition.Justification));
                    return(GetEnumPicker(dt2, values));
                }

                case DataType2.HorizontalAlignment:
                {
                    var values = Enum.GetValues(typeof(OSGeo.MapGuide.ObjectModels.SymbolDefinition.HorizontalAlignment));
                    return(GetEnumPicker(dt2, values));
                }

                case DataType2.VerticalAlignment:
                {
                    var values = Enum.GetValues(typeof(OSGeo.MapGuide.ObjectModels.SymbolDefinition.VerticalAlignment));
                    return(GetEnumPicker(dt2, values));
                }
                }
            }
            return(null);
        }
Exemplo n.º 3
0
        public static Control GetPropertyValueEditor(FastTrackPage page, Type type, PropertyInfo property)
        {
            Control editor = null;

            if (page.IsListProperty(type, property.Name))
            {
                editor = new ListEditor(property.Name);
            }
            else
            {
                Type propertyType = property.PropertyType;

                if (propertyType.IsEnum)
                {
                    editor = new EnumerationEditor(property.Name);
                }

                else if (propertyType.IsPrimitive)
                {
                    if (propertyType == typeof(bool))
                    {
                        editor = new BooleanEditor(property.Name);
                    }


                    else if (propertyType == typeof(Int16) ||
                             propertyType == typeof(Int32) ||
                             propertyType == typeof(Int64) ||
                             propertyType == typeof(Byte))
                    {
                        editor = new NumberEditor(property.Name);
                    }
                }
                else if (propertyType.IsValueType)
                {
                    if (propertyType == typeof(DateTime))
                    {
                        editor = new DateTimeEditor(property.Name);
                    }

                    else if (propertyType == typeof(Decimal))
                    {
                        editor = new NumberEditor(property.Name);
                    }
                }
                else if (propertyType.IsClass)
                {
                    if (propertyType == typeof(string))
                    {
                        editor = new StringEditor(property.Name);
                    }


                    else if (propertyType == typeof(byte[]))
                    {
                        ; //editor = new DateTimeEditor(property.Name);
                    }
                    else
                    {
                        editor = new ReferenceEditor(property.Name);
                    }
                }
            }

            return(editor);
        }