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); }
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); }