选中状态代码整理

This commit is contained in:
艾竹
2023-05-14 18:02:59 +08:00
parent 58359c36d4
commit 40f81b7209
17 changed files with 663 additions and 62 deletions

View File

@@ -523,7 +523,7 @@ namespace AIStudio.Wpf.DiagramDesigner
case nameof(IsSelected):
if (IsSelected == false)
{
Labels.FirstOrDefault()?.AddToSelection(false);
Labels.FirstOrDefault()?.AddToSelection(false, true);
}
break;
case nameof(RouterMode):

View File

@@ -169,15 +169,20 @@ namespace AIStudio.Wpf.DiagramDesigner
Offset += new VectorBase(0, newvalue - oldvalue);
}
public override void AddToSelection(bool selected)
public override void AddToSelection(bool selected, bool clearother)
{
foreach (var item in Connector.Labels.ToList())
item.IsSelected = false;
if (selected == true)
if (clearother)
{
IsSelected = true;
foreach (var item in Connector.Labels.ToList())
{
if (item != this)
{
item.IsSelected = false;
}
}
}
IsSelected = selected;
}
protected override void ClearText()

View File

@@ -1181,7 +1181,7 @@ namespace AIStudio.Wpf.DiagramDesigner
{
foreach (var item in this.SelectedItems.ToList())
{
item.IsSelected = false;
item.RemoveFromSelection();
}
}
@@ -2498,7 +2498,7 @@ namespace AIStudio.Wpf.DiagramDesigner
item.ParentId = groupItem.Id;
groupItem.Resize();
ClearSelectedItems();
SelectionService.AddToSelection(groupItem);
groupItem.AddToSelection(true, true);
},
() => {
Remove(groupItem);

View File

@@ -153,23 +153,34 @@ namespace AIStudio.Wpf.DiagramDesigner
{
foreach (var designerItemViewModelBase in Root.SelectedItems.ToList())
{
designerItemViewModelBase.ClearSelected();
designerItemViewModelBase.RemoveFromSelection();
}
}
IsSelected = select;
}
public override void AddToSelection(bool selected)
public override void AddToSelection(bool selected, bool clearother)
{
foreach (SelectableDesignerItemViewModelBase item in Root.SelectedItems.ToList())
item.IsSelected = false;
if (clearother == true)
{
foreach (SelectableDesignerItemViewModelBase item in Root.SelectedItems.ToList())
{
if (item != this)
{
item.RemoveFromSelection();
}
}
}
Root.SelectedItems.Clear();
if (selected == true)
{
Root.SelectionService.AddToSelection(this);
}
else
{
Root.SelectionService.RemoveFromSelection(this);
}
}
protected virtual void ExecuteEditCommand(object param)

View File

@@ -72,7 +72,7 @@ namespace AIStudio.Wpf.DiagramDesigner
}
protected virtual void Init(IDiagramViewModel root, bool initNew)
{
{
Root = root;
if (Root?.ColorViewModel != null)
@@ -124,7 +124,7 @@ namespace AIStudio.Wpf.DiagramDesigner
protected virtual void InitNew()
{
}
protected virtual void LoadDesignerItemViewModel(SelectableItemBase designerbase)
@@ -144,7 +144,7 @@ namespace AIStudio.Wpf.DiagramDesigner
public bool IsLoaded
{
get;set;
get; set;
}
public bool IsInternalChanged
@@ -185,10 +185,18 @@ namespace AIStudio.Wpf.DiagramDesigner
get; set;
}
public bool DisableSelected
private bool _disableSelected;
public bool SelectedDisable
{
get;set;
}
get
{
return _disableSelected;
}
set
{
SetProperty(ref _disableSelected, value);
}
}
private bool _isSelected;
[Browsable(false)]
@@ -197,7 +205,7 @@ namespace AIStudio.Wpf.DiagramDesigner
{
get
{
if (DisableSelected == true)
if (SelectedDisable == true)
{
return false;
}
@@ -316,10 +324,6 @@ namespace AIStudio.Wpf.DiagramDesigner
{
return false;
}
if (DisableSelected == true)
{
return false;
}
return _isHitTestVisible;
}
@@ -424,7 +428,7 @@ namespace AIStudio.Wpf.DiagramDesigner
[Browsable(true)]
public string Name
{
get;set;
get; set;
}
private string _text;
@@ -462,12 +466,12 @@ namespace AIStudio.Wpf.DiagramDesigner
}
public virtual void ClearSelected()
public virtual void RemoveFromSelection()
{
_isSelected = false;
IsSelected = false;
}
public virtual void AddToSelection(bool selected)
public virtual void AddToSelection(bool selected, bool clearother)
{
}
@@ -496,7 +500,7 @@ namespace AIStudio.Wpf.DiagramDesigner
protected void ColorViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (IsLoaded == false || IsInternalChanged == true ) { return; }
if (IsLoaded == false || IsInternalChanged == true) { return; }
RaisePropertyChanged(sender, e);
}

View File

@@ -25,7 +25,6 @@ namespace AIStudio.Wpf.DiagramDesigner
DrawMode = drawMode;
Points = new List<Point> { startPoint };
Erasable = erasable;
DisableSelected = Erasable;
if (Erasable)
{
if (Root?.DrawModeViewModel != null)
@@ -75,7 +74,7 @@ namespace AIStudio.Wpf.DiagramDesigner
//this.Geometry.Transform = Transform.Parse(designer.Matrix.ToString());
this.Points = designer.Points;
this.DrawMode = designer.DrawMode;
this.DisableSelected = Erasable;
this.SelectedDisable = Erasable;
}
}
@@ -93,8 +92,6 @@ namespace AIStudio.Wpf.DiagramDesigner
{
if (IsFinish)
{
UpdateLocation();
if (Geometry != null)
{
if (Geometry.Transform is TransformGroup transformGroup)
@@ -104,14 +101,16 @@ namespace AIStudio.Wpf.DiagramDesigner
transformGroup.Children.Add(new TranslateTransform(0 - Geometry.Bounds.Left, 0 - Geometry.Bounds.Top));
}
else
Geometry.Transform = new TranslateTransform(0 - Left, 0 - Top);
Geometry.Transform = new TranslateTransform(0 - Geometry.Bounds.Left, 0 - Geometry.Bounds.Top);
if (Erasable)
{
var aPen = new Pen(ColorViewModel.LineColor.ToBrush(), ColorViewModel.LineWidth);
aPen.DashStyle = new DashStyle(StrokeDashArray.Dash[(int)ColorViewModel.LineDashStyle], 1);
Geometry = Geometry.GetWidenedPathGeometry(aPen); //可擦除需要把Geometry转成几何图像所以不能有填充色
}
UpdateLocation();
}
}
return true;
@@ -180,10 +179,38 @@ namespace AIStudio.Wpf.DiagramDesigner
public void UpdateLocation()
{
ItemWidth = Geometry.Bounds.Width + ColorViewModel.LineWidth * 2;
ItemHeight = Geometry.Bounds.Height + ColorViewModel.LineWidth * 2;
Left = Geometry.Bounds.Left;
Top = Geometry.Bounds.Top;
if (Erasable)
{
ItemWidth = Geometry.Bounds.Width - ColorViewModel.LineWidth * 0.5;
ItemHeight = Geometry.Bounds.Height - ColorViewModel.LineWidth * 0.5;
Left = Points[0].X;
Top = Points[0].Y;
}
else
{
ItemWidth = Geometry.Bounds.Width;
ItemHeight = Geometry.Bounds.Height;
Left = Points[0].X;
Top = Points[0].Y;
}
}
public override void RemoveFromSelection()
{
if (Erasable == true)
{
this.SelectedDisable = true;
}
base.RemoveFromSelection();
}
public override void AddToSelection(bool selected, bool clearother)
{
if (selected == true && _service.DrawModeViewModel.DrawingDrawMode == DrawMode.Select)
{
this.SelectedDisable = false;
}
base.AddToSelection(selected, clearother);
}
}

View File

@@ -34,7 +34,7 @@ namespace AIStudio.Wpf.DiagramDesigner
get; set;
}
void AddToSelection(bool selected);
void AddToSelection(bool selected, bool clearother);
event PropertyChangedEventHandler PropertyChanged;
}

View File

@@ -31,7 +31,7 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
internal void RemoveFromSelection(ISelectable item)
public void RemoveFromSelection(ISelectable item)
{
if (item is IGroupable)
{