显示CNC文件名,取消节点的上、下移动
This commit is contained in:
@@ -33,6 +33,7 @@ namespace XplorePlane.ViewModels.Cnc
|
|||||||
private CncNodeViewModel _selectedNode;
|
private CncNodeViewModel _selectedNode;
|
||||||
private bool _isModified;
|
private bool _isModified;
|
||||||
private string _programName;
|
private string _programName;
|
||||||
|
private string _programDisplayName = "NewCncProgram";
|
||||||
private Guid? _preferredSelectedNodeId;
|
private Guid? _preferredSelectedNodeId;
|
||||||
|
|
||||||
public CncEditorViewModel(
|
public CncEditorViewModel(
|
||||||
@@ -110,6 +111,12 @@ namespace XplorePlane.ViewModels.Cnc
|
|||||||
set => SetProperty(ref _programName, value);
|
set => SetProperty(ref _programName, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string ProgramDisplayName
|
||||||
|
{
|
||||||
|
get => _programDisplayName;
|
||||||
|
private set => SetProperty(ref _programDisplayName, value);
|
||||||
|
}
|
||||||
|
|
||||||
public DelegateCommand InsertReferencePointCommand { get; }
|
public DelegateCommand InsertReferencePointCommand { get; }
|
||||||
public DelegateCommand InsertSaveNodeWithImageCommand { get; }
|
public DelegateCommand InsertSaveNodeWithImageCommand { get; }
|
||||||
public DelegateCommand InsertSaveNodeCommand { get; }
|
public DelegateCommand InsertSaveNodeCommand { get; }
|
||||||
@@ -256,6 +263,7 @@ namespace XplorePlane.ViewModels.Cnc
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
await _cncProgramService.SaveAsync(_currentProgram, dlg.FileName);
|
await _cncProgramService.SaveAsync(_currentProgram, dlg.FileName);
|
||||||
|
ProgramDisplayName = Path.GetFileName(dlg.FileName);
|
||||||
IsModified = false;
|
IsModified = false;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@@ -280,6 +288,7 @@ namespace XplorePlane.ViewModels.Cnc
|
|||||||
|
|
||||||
_currentProgram = await _cncProgramService.LoadAsync(dlg.FileName);
|
_currentProgram = await _cncProgramService.LoadAsync(dlg.FileName);
|
||||||
ProgramName = _currentProgram.Name;
|
ProgramName = _currentProgram.Name;
|
||||||
|
ProgramDisplayName = Path.GetFileName(dlg.FileName);
|
||||||
IsModified = false;
|
IsModified = false;
|
||||||
RefreshNodes();
|
RefreshNodes();
|
||||||
}
|
}
|
||||||
@@ -294,6 +303,7 @@ namespace XplorePlane.ViewModels.Cnc
|
|||||||
var name = string.IsNullOrWhiteSpace(ProgramName) ? "NewCncProgram" : ProgramName;
|
var name = string.IsNullOrWhiteSpace(ProgramName) ? "NewCncProgram" : ProgramName;
|
||||||
_currentProgram = _cncProgramService.CreateProgram(name);
|
_currentProgram = _cncProgramService.CreateProgram(name);
|
||||||
ProgramName = _currentProgram.Name;
|
ProgramName = _currentProgram.Name;
|
||||||
|
ProgramDisplayName = FormatProgramDisplayName(_currentProgram.Name);
|
||||||
IsModified = false;
|
IsModified = false;
|
||||||
RefreshNodes();
|
RefreshNodes();
|
||||||
}
|
}
|
||||||
@@ -622,5 +632,11 @@ namespace XplorePlane.ViewModels.Cnc
|
|||||||
.GetEvent<CncProgramChangedEvent>()
|
.GetEvent<CncProgramChangedEvent>()
|
||||||
.Publish(new CncProgramChangedPayload(ProgramName ?? string.Empty, IsModified));
|
.Publish(new CncProgramChangedPayload(ProgramName ?? string.Empty, IsModified));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static string FormatProgramDisplayName(string programName)
|
||||||
|
{
|
||||||
|
var name = string.IsNullOrWhiteSpace(programName) ? "NewCncProgram" : programName;
|
||||||
|
return name.EndsWith(".xp", StringComparison.OrdinalIgnoreCase) ? name : $"{name}.xp";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -106,14 +106,14 @@
|
|||||||
FontFamily="{StaticResource UiFont}"
|
FontFamily="{StaticResource UiFont}"
|
||||||
FontSize="13"
|
FontSize="13"
|
||||||
FontWeight="SemiBold"
|
FontWeight="SemiBold"
|
||||||
Text="{Binding ProgramName, TargetNullValue=CNC编辑}"
|
Text="{Binding ProgramDisplayName, TargetNullValue=CNC编辑}"
|
||||||
TextWrapping="Wrap" />
|
TextWrapping="Wrap" />
|
||||||
<TextBlock
|
<TextBlock
|
||||||
Margin="0,3,0,0"
|
Margin="0,3,0,0"
|
||||||
FontFamily="{StaticResource UiFont}"
|
FontFamily="{StaticResource UiFont}"
|
||||||
FontSize="10"
|
FontSize="10"
|
||||||
Foreground="#666666"
|
Foreground="#666666"
|
||||||
Text="保存位置节点下会自动显示检测标记和检测模块,清晰表达当前检测位置与检测内容的父子关系。"
|
Text="新建或加载已有的CNC检测程序,后缀.xp。"
|
||||||
TextWrapping="Wrap" />
|
TextWrapping="Wrap" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Border>
|
</Border>
|
||||||
@@ -125,6 +125,7 @@
|
|||||||
Background="Transparent"
|
Background="Transparent"
|
||||||
BorderThickness="0"
|
BorderThickness="0"
|
||||||
ItemsSource="{Binding TreeNodes}"
|
ItemsSource="{Binding TreeNodes}"
|
||||||
|
PreviewKeyDown="CncTreeView_PreviewKeyDown"
|
||||||
SelectedItemChanged="CncTreeView_SelectedItemChanged">
|
SelectedItemChanged="CncTreeView_SelectedItemChanged">
|
||||||
<TreeView.Resources>
|
<TreeView.Resources>
|
||||||
<HierarchicalDataTemplate DataType="{x:Type vm:CncNodeViewModel}" ItemsSource="{Binding Children}">
|
<HierarchicalDataTemplate DataType="{x:Type vm:CncNodeViewModel}" ItemsSource="{Binding Children}">
|
||||||
@@ -204,32 +205,6 @@
|
|||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Orientation="Horizontal"
|
Orientation="Horizontal"
|
||||||
Visibility="Collapsed">
|
Visibility="Collapsed">
|
||||||
<Button
|
|
||||||
Width="20"
|
|
||||||
Height="20"
|
|
||||||
Margin="1,0"
|
|
||||||
Background="White"
|
|
||||||
BorderBrush="#CDCBCB"
|
|
||||||
BorderThickness="1"
|
|
||||||
Command="{Binding DataContext.MoveNodeUpCommand, RelativeSource={RelativeSource AncestorType=TreeView}}"
|
|
||||||
CommandParameter="{Binding}"
|
|
||||||
Content="↑"
|
|
||||||
Cursor="Hand"
|
|
||||||
FontSize="10"
|
|
||||||
ToolTip="上移" />
|
|
||||||
<Button
|
|
||||||
Width="20"
|
|
||||||
Height="20"
|
|
||||||
Margin="1,0"
|
|
||||||
Background="White"
|
|
||||||
BorderBrush="#CDCBCB"
|
|
||||||
BorderThickness="1"
|
|
||||||
Command="{Binding DataContext.MoveNodeDownCommand, RelativeSource={RelativeSource AncestorType=TreeView}}"
|
|
||||||
CommandParameter="{Binding}"
|
|
||||||
Content="↓"
|
|
||||||
Cursor="Hand"
|
|
||||||
FontSize="10"
|
|
||||||
ToolTip="下移" />
|
|
||||||
<Button
|
<Button
|
||||||
Width="20"
|
Width="20"
|
||||||
Height="20"
|
Height="20"
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using System.Globalization;
|
|||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using System.Windows.Data;
|
using System.Windows.Data;
|
||||||
|
using System.Windows.Input;
|
||||||
using XP.Common.Logging.Interfaces;
|
using XP.Common.Logging.Interfaces;
|
||||||
using XplorePlane.Services;
|
using XplorePlane.Services;
|
||||||
using XplorePlane.ViewModels.Cnc;
|
using XplorePlane.ViewModels.Cnc;
|
||||||
@@ -70,6 +71,18 @@ namespace XplorePlane.Views.Cnc
|
|||||||
viewModel.SelectedNode = e.NewValue as CncNodeViewModel;
|
viewModel.SelectedNode = e.NewValue as CncNodeViewModel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void CncTreeView_PreviewKeyDown(object sender, KeyEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Key != Key.Delete || DataContext is not CncEditorViewModel viewModel)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!viewModel.DeleteNodeCommand.CanExecute())
|
||||||
|
return;
|
||||||
|
|
||||||
|
viewModel.DeleteNodeCommand.Execute();
|
||||||
|
e.Handled = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class NullToVisibilityConverter : IValueConverter
|
public class NullToVisibilityConverter : IValueConverter
|
||||||
|
|||||||
Reference in New Issue
Block a user