public override IntRange SaveWindowControls(StackPanel control, string name, Type type, object[] attributes) { RangeBorderAttribute rangeAtt = ReflectionExt.FindAttribute <RangeBorderAttribute>(attributes); int addMin = 0; int addMax = 0; if (rangeAtt != null) { rangeAtt.GetAddVals(out addMin, out addMax); } int controlIndex = 0; controlIndex++; Avalonia.Controls.Grid innerControl = (Avalonia.Controls.Grid)control.Children[controlIndex]; int innerControlIndex = 0; innerControlIndex++; NumericUpDown nudValueX = (NumericUpDown)innerControl.Children[innerControlIndex]; innerControlIndex++; innerControlIndex++; NumericUpDown nudValueY = (NumericUpDown)innerControl.Children[innerControlIndex]; return(new IntRange((int)nudValueX.Value - addMin, (int)nudValueY.Value - addMax)); }
public override void LoadWindowControls(StackPanel control, string parent, string name, Type type, object[] attributes, IntRange member) { LoadLabelControl(control, name); RangeBorderAttribute rangeAtt = ReflectionExt.FindAttribute <RangeBorderAttribute>(attributes); int addMin = 0; int addMax = 0; if (rangeAtt != null) { rangeAtt.GetAddVals(out addMin, out addMax); } Avalonia.Controls.Grid innerPanel = getSharedRowPanel(4); innerPanel.ColumnDefinitions[0].Width = new GridLength(30); innerPanel.ColumnDefinitions[2].Width = new GridLength(30); TextBlock lblX = new TextBlock(); lblX.Text = "Min:"; lblX.VerticalAlignment = Avalonia.Layout.VerticalAlignment.Center; lblX.HorizontalAlignment = Avalonia.Layout.HorizontalAlignment.Right; innerPanel.Children.Add(lblX); lblX.SetValue(Avalonia.Controls.Grid.ColumnProperty, 0); NumericUpDown nudValueX = new NumericUpDown(); nudValueX.Margin = new Thickness(4, 0, 0, 0); nudValueX.Minimum = Int32.MinValue; nudValueX.Maximum = Int32.MaxValue; nudValueX.Value = member.Min + addMin; innerPanel.Children.Add(nudValueX); nudValueX.SetValue(Avalonia.Controls.Grid.ColumnProperty, 1); TextBlock lblY = new TextBlock(); lblY.Margin = new Thickness(8, 0, 0, 0); lblY.Text = "Max:"; lblY.VerticalAlignment = Avalonia.Layout.VerticalAlignment.Center; lblY.HorizontalAlignment = Avalonia.Layout.HorizontalAlignment.Right; innerPanel.Children.Add(lblY); lblY.SetValue(Avalonia.Controls.Grid.ColumnProperty, 2); NumericUpDown nudValueY = new NumericUpDown(); nudValueY.Margin = new Thickness(4, 0, 0, 0); nudValueY.Minimum = Int32.MinValue; nudValueY.Maximum = Int32.MaxValue; nudValueY.Value = member.Max + addMax; innerPanel.Children.Add(nudValueY); nudValueY.SetValue(Avalonia.Controls.Grid.ColumnProperty, 3); control.Children.Add(innerPanel); }
public override void LoadWindowControls(StackPanel control, string parent, string name, Type type, object[] attributes, ISpawnRangeList member) { LoadLabelControl(control, name); Type elementType = ReflectionExt.GetBaseTypeArg(typeof(ISpawnRangeList <>), type, 0); RangeBorderAttribute rangeAtt = ReflectionExt.FindAttribute <RangeBorderAttribute>(attributes); SpawnRangeListBox lbxValue = new SpawnRangeListBox(); lbxValue.MaxHeight = 260; SpawnRangeListBoxViewModel mv = new SpawnRangeListBoxViewModel(new StringConv(elementType, ReflectionExt.GetPassableAttributes(1, attributes))); if (rangeAtt != null) { mv.Index1 = rangeAtt.Index1; mv.Inclusive = rangeAtt.Inclusive; } lbxValue.DataContext = mv; //add lambda expression for editing a single element mv.OnEditItem += (int index, object element, SpawnRangeListBoxViewModel.EditElementOp op) => { string elementName = name + "[" + index + "]"; DataEditForm frmData = new DataEditForm(); frmData.Title = DataEditor.GetWindowTitle(parent, elementName, element, elementType, ReflectionExt.GetPassableAttributes(2, attributes)); DataEditor.LoadClassControls(frmData.ControlPanel, parent, elementName, elementType, ReflectionExt.GetPassableAttributes(2, attributes), element, true); frmData.SelectedOKEvent += () => { element = DataEditor.SaveClassControls(frmData.ControlPanel, elementName, elementType, ReflectionExt.GetPassableAttributes(2, attributes), true); op(index, element); frmData.Close(); }; frmData.SelectedCancelEvent += () => { frmData.Close(); }; control.GetOwningForm().RegisterChild(frmData); frmData.Show(); }; mv.LoadFromList(member); control.Children.Add(lbxValue); }
public override string GetString(IntRange obj, Type type, object[] attributes) { RangeBorderAttribute rangeAtt = ReflectionExt.FindAttribute <RangeBorderAttribute>(attributes); int addMin = 0; int addMax = 0; if (rangeAtt != null) { rangeAtt.GetAddVals(out addMin, out addMax); } if (obj.Min + addMin + 1 >= obj.Max + addMax) { return(obj.Min.ToString()); } else { return(string.Format("{0}-{1}", obj.Min + addMin, obj.Max + addMax)); } }
public override void LoadWindowControls(StackPanel control, string parent, string name, Type type, object[] attributes, IRangeDict member) { LoadLabelControl(control, name); Type keyType = typeof(IntRange); Type elementType = ReflectionExt.GetBaseTypeArg(typeof(IRangeDict <>), type, 0); RangeBorderAttribute rangeAtt = ReflectionExt.FindAttribute <RangeBorderAttribute>(attributes); RangeDictBox lbxValue = new RangeDictBox(); lbxValue.MaxHeight = 180; RangeDictBoxViewModel mv = new RangeDictBoxViewModel(control.GetOwningForm(), new StringConv(elementType, ReflectionExt.GetPassableAttributes(1, attributes))); if (rangeAtt != null) { mv.Index1 = rangeAtt.Index1; mv.Inclusive = rangeAtt.Inclusive; } lbxValue.DataContext = mv; //add lambda expression for editing a single element mv.OnEditItem += (IntRange key, object element, RangeDictBoxViewModel.EditElementOp op) => { string elementName = name + "[" + key.ToString() + "]"; DataEditForm frmData = new DataEditForm(); frmData.Title = DataEditor.GetWindowTitle(parent, elementName, element, elementType, ReflectionExt.GetPassableAttributes(1, attributes)); DataEditor.LoadClassControls(frmData.ControlPanel, parent, elementName, elementType, ReflectionExt.GetPassableAttributes(1, attributes), element, true); frmData.SelectedOKEvent += () => { element = DataEditor.SaveClassControls(frmData.ControlPanel, elementName, elementType, ReflectionExt.GetPassableAttributes(1, attributes), true); op(key, element); frmData.Close(); }; frmData.SelectedCancelEvent += () => { frmData.Close(); }; control.GetOwningForm().RegisterChild(frmData); frmData.Show(); }; mv.OnEditKey += (IntRange key, object element, RangeDictBoxViewModel.EditElementOp op) => { string elementName = name + "<Range>"; DataEditForm frmKey = new DataEditForm(); List <object> attrList = new List <object>(); if (rangeAtt != null) { attrList.Add(rangeAtt); } frmKey.Title = DataEditor.GetWindowTitle(parent, elementName, key, keyType, attrList.ToArray()); DataEditor.LoadClassControls(frmKey.ControlPanel, parent, elementName, keyType, attrList.ToArray(), key, true); frmKey.SelectedOKEvent += () => { key = (IntRange)DataEditor.SaveClassControls(frmKey.ControlPanel, elementName, keyType, attrList.ToArray(), true); op(key, element); frmKey.Close(); }; frmKey.SelectedCancelEvent += () => { frmKey.Close(); }; control.GetOwningForm().RegisterChild(frmKey); frmKey.Show(); }; mv.LoadFromDict(member); control.Children.Add(lbxValue); }