CNC编辑模式与常规模式切换
This commit is contained in:
@@ -1878,10 +1878,7 @@
|
|||||||
"Telerik.UI.for.Wpf.NetCore.Xaml": "2024.1.408"
|
"Telerik.UI.for.Wpf.NetCore.Xaml": "2024.1.408"
|
||||||
},
|
},
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"XP.Common.dll": {
|
"XP.Common.dll": {}
|
||||||
"assemblyVersion": "1.4.16.1",
|
|
||||||
"fileVersion": "1.4.16.1"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"resources": {
|
"resources": {
|
||||||
"en-US/XP.Common.resources.dll": {
|
"en-US/XP.Common.resources.dll": {
|
||||||
|
|||||||
@@ -34,11 +34,4 @@
|
|||||||
<ProjectReference Include="..\XplorePlane\XplorePlane.csproj" />
|
<ProjectReference Include="..\XplorePlane\XplorePlane.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Reference Include="ImageProcessing.Core">
|
|
||||||
<HintPath>..\XplorePlane\Libs\ImageProcessing\ImageProcessing.Core.dll</HintPath>
|
|
||||||
<Private>True</Private>
|
|
||||||
</Reference>
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 174 KiB |
@@ -1,4 +1,4 @@
|
|||||||
using Prism.Commands;
|
using Prism.Commands;
|
||||||
using Prism.Events;
|
using Prism.Events;
|
||||||
using Prism.Ioc;
|
using Prism.Ioc;
|
||||||
using Prism.Mvvm;
|
using Prism.Mvvm;
|
||||||
@@ -10,6 +10,8 @@ using System.IO;
|
|||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Media.Imaging;
|
using System.Windows.Media.Imaging;
|
||||||
using XplorePlane.Events;
|
using XplorePlane.Events;
|
||||||
|
using XplorePlane.Views;
|
||||||
|
using XplorePlane.Views.Cnc;
|
||||||
using XP.Common.Logging.Interfaces;
|
using XP.Common.Logging.Interfaces;
|
||||||
using XP.Common.PdfViewer.Interfaces;
|
using XP.Common.PdfViewer.Interfaces;
|
||||||
using XP.Hardware.MotionControl.Abstractions;
|
using XP.Hardware.MotionControl.Abstractions;
|
||||||
@@ -62,6 +64,20 @@ namespace XplorePlane.ViewModels
|
|||||||
public DelegateCommand OpenLanguageSwitcherCommand { get; }
|
public DelegateCommand OpenLanguageSwitcherCommand { get; }
|
||||||
public DelegateCommand OpenRealTimeLogViewerCommand { get; }
|
public DelegateCommand OpenRealTimeLogViewerCommand { get; }
|
||||||
|
|
||||||
|
/// <summary>右侧图像区域内容 | Right-side image panel content</summary>
|
||||||
|
public object ImagePanelContent
|
||||||
|
{
|
||||||
|
get => _imagePanelContent;
|
||||||
|
set => SetProperty(ref _imagePanelContent, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>右侧图像区域宽度 | Right-side image panel width</summary>
|
||||||
|
public GridLength ImagePanelWidth
|
||||||
|
{
|
||||||
|
get => _imagePanelWidth;
|
||||||
|
set => SetProperty(ref _imagePanelWidth, value);
|
||||||
|
}
|
||||||
|
|
||||||
// 窗口引用(单例窗口防止重复打开)
|
// 窗口引用(单例窗口防止重复打开)
|
||||||
private Window _motionDebugWindow;
|
private Window _motionDebugWindow;
|
||||||
private Window _detectorConfigWindow;
|
private Window _detectorConfigWindow;
|
||||||
@@ -69,6 +85,9 @@ namespace XplorePlane.ViewModels
|
|||||||
private Window _realTimeLogViewerWindow;
|
private Window _realTimeLogViewerWindow;
|
||||||
private Window _toolboxWindow;
|
private Window _toolboxWindow;
|
||||||
private Window _raySourceConfigWindow;
|
private Window _raySourceConfigWindow;
|
||||||
|
private object _imagePanelContent;
|
||||||
|
private GridLength _imagePanelWidth = new GridLength(350);
|
||||||
|
private bool _isCncEditorMode;
|
||||||
|
|
||||||
public MainViewModel(ILoggerService logger, IContainerProvider containerProvider, IEventAggregator eventAggregator)
|
public MainViewModel(ILoggerService logger, IContainerProvider containerProvider, IEventAggregator eventAggregator)
|
||||||
{
|
{
|
||||||
@@ -90,7 +109,7 @@ namespace XplorePlane.ViewModels
|
|||||||
OpenImageProcessingCommand = new DelegateCommand(() => ShowWindow(new Views.ImageProcessingWindow(), "图像处理"));
|
OpenImageProcessingCommand = new DelegateCommand(() => ShowWindow(new Views.ImageProcessingWindow(), "图像处理"));
|
||||||
LoadImageCommand = new DelegateCommand(ExecuteLoadImage);
|
LoadImageCommand = new DelegateCommand(ExecuteLoadImage);
|
||||||
OpenPipelineEditorCommand = new DelegateCommand(() => ShowWindow(new Views.PipelineEditorWindow(), "流水线编辑器"));
|
OpenPipelineEditorCommand = new DelegateCommand(() => ShowWindow(new Views.PipelineEditorWindow(), "流水线编辑器"));
|
||||||
OpenCncEditorCommand = new DelegateCommand(() => ShowWindow(new Views.Cnc.CncEditorWindow(), "CNC 编辑器"));
|
OpenCncEditorCommand = new DelegateCommand(ExecuteOpenCncEditor);
|
||||||
OpenMatrixEditorCommand = new DelegateCommand(() => ShowWindow(new Views.Cnc.MatrixEditorWindow(), "矩阵编排"));
|
OpenMatrixEditorCommand = new DelegateCommand(() => ShowWindow(new Views.Cnc.MatrixEditorWindow(), "矩阵编排"));
|
||||||
OpenToolboxCommand = new DelegateCommand(ExecuteOpenToolbox);
|
OpenToolboxCommand = new DelegateCommand(ExecuteOpenToolbox);
|
||||||
OpenLibraryVersionsCommand = new DelegateCommand(() => ShowWindow(new Views.LibraryVersionsWindow(), "关于"));
|
OpenLibraryVersionsCommand = new DelegateCommand(() => ShowWindow(new Views.LibraryVersionsWindow(), "关于"));
|
||||||
@@ -109,6 +128,9 @@ namespace XplorePlane.ViewModels
|
|||||||
OpenLanguageSwitcherCommand = new DelegateCommand(ExecuteOpenLanguageSwitcher);
|
OpenLanguageSwitcherCommand = new DelegateCommand(ExecuteOpenLanguageSwitcher);
|
||||||
OpenRealTimeLogViewerCommand = new DelegateCommand(ExecuteOpenRealTimeLogViewer);
|
OpenRealTimeLogViewerCommand = new DelegateCommand(ExecuteOpenRealTimeLogViewer);
|
||||||
|
|
||||||
|
ImagePanelContent = new PipelineEditorView();
|
||||||
|
ImagePanelWidth = new GridLength(350);
|
||||||
|
|
||||||
_logger.Info("MainViewModel 已初始化");
|
_logger.Info("MainViewModel 已初始化");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -153,6 +175,23 @@ namespace XplorePlane.ViewModels
|
|||||||
ShowOrActivate(_toolboxWindow, w => _toolboxWindow = w, () => new Views.OperatorToolboxWindow(), "算子工具箱");
|
ShowOrActivate(_toolboxWindow, w => _toolboxWindow = w, () => new Views.OperatorToolboxWindow(), "算子工具箱");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void ExecuteOpenCncEditor()
|
||||||
|
{
|
||||||
|
if (_isCncEditorMode)
|
||||||
|
{
|
||||||
|
ImagePanelContent = new PipelineEditorView();
|
||||||
|
ImagePanelWidth = new GridLength(350);
|
||||||
|
_isCncEditorMode = false;
|
||||||
|
_logger.Info("已退出 CNC 编辑模式");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ImagePanelContent = new CncPageView();
|
||||||
|
ImagePanelWidth = new GridLength(430);
|
||||||
|
_isCncEditorMode = true;
|
||||||
|
_logger.Info("CNC 编辑器已切换到主界面图像区域");
|
||||||
|
}
|
||||||
|
|
||||||
private void ExecuteOpenUserManual()
|
private void ExecuteOpenUserManual()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
<Window
|
<Window
|
||||||
x:Class="XplorePlane.Views.Cnc.CncEditorWindow"
|
x:Class="XplorePlane.Views.Cnc.CncEditorWindow"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:cnc="clr-namespace:XplorePlane.Views.Cnc"
|
xmlns:cnc="clr-namespace:XplorePlane.Views.Cnc"
|
||||||
Title="CNC 编辑器"
|
Title="CNC 编辑器"
|
||||||
Width="350"
|
Width="544"
|
||||||
Height="750"
|
Height="750"
|
||||||
|
MinWidth="544"
|
||||||
|
MinHeight="750"
|
||||||
|
ResizeMode="CanResize"
|
||||||
ShowInTaskbar="False"
|
ShowInTaskbar="False"
|
||||||
WindowStartupLocation="CenterOwner">
|
WindowStartupLocation="CenterOwner">
|
||||||
<cnc:CncPageView />
|
<cnc:CncPageView />
|
||||||
|
|||||||
@@ -1,32 +1,28 @@
|
|||||||
<!-- CNC 编辑器主页面视图 | CNC editor main page view -->
|
<UserControl
|
||||||
<UserControl
|
|
||||||
x:Class="XplorePlane.Views.Cnc.CncPageView"
|
x:Class="XplorePlane.Views.Cnc.CncPageView"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:prism="http://prismlibrary.com/"
|
xmlns:prism="http://prismlibrary.com/"
|
||||||
|
xmlns:views="clr-namespace:XplorePlane.Views"
|
||||||
d:DesignHeight="700"
|
d:DesignHeight="700"
|
||||||
d:DesignWidth="350"
|
d:DesignWidth="544"
|
||||||
prism:ViewModelLocator.AutoWireViewModel="True"
|
prism:ViewModelLocator.AutoWireViewModel="True"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
|
|
||||||
<UserControl.Resources>
|
<UserControl.Resources>
|
||||||
<!-- 面板背景和边框颜色 | Panel background and border colors -->
|
|
||||||
<SolidColorBrush x:Key="PanelBg" Color="White" />
|
<SolidColorBrush x:Key="PanelBg" Color="White" />
|
||||||
<SolidColorBrush x:Key="PanelBorder" Color="#cdcbcb" />
|
<SolidColorBrush x:Key="PanelBorder" Color="#cdcbcb" />
|
||||||
<SolidColorBrush x:Key="SeparatorBrush" Color="#E0E0E0" />
|
<SolidColorBrush x:Key="SeparatorBrush" Color="#E0E0E0" />
|
||||||
<SolidColorBrush x:Key="AccentBlue" Color="#E3F0FF" />
|
|
||||||
<FontFamily x:Key="CsdFont">Microsoft YaHei UI</FontFamily>
|
<FontFamily x:Key="CsdFont">Microsoft YaHei UI</FontFamily>
|
||||||
|
|
||||||
<!-- 节点列表项样式 | Node list item style -->
|
|
||||||
<Style x:Key="CncNodeItemStyle" TargetType="ListBoxItem">
|
<Style x:Key="CncNodeItemStyle" TargetType="ListBoxItem">
|
||||||
<Setter Property="Padding" Value="0" />
|
<Setter Property="Padding" Value="0" />
|
||||||
<Setter Property="Margin" Value="0" />
|
<Setter Property="Margin" Value="0" />
|
||||||
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
|
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
<!-- 工具栏按钮样式 | Toolbar button style -->
|
|
||||||
<Style x:Key="ToolbarBtn" TargetType="Button">
|
<Style x:Key="ToolbarBtn" TargetType="Button">
|
||||||
<Setter Property="Height" Value="28" />
|
<Setter Property="Height" Value="28" />
|
||||||
<Setter Property="Margin" Value="2,0" />
|
<Setter Property="Margin" Value="2,0" />
|
||||||
@@ -47,110 +43,16 @@
|
|||||||
CornerRadius="4">
|
CornerRadius="4">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<!-- Row 0: 工具栏 | Toolbar -->
|
|
||||||
<RowDefinition Height="Auto" />
|
|
||||||
<!-- Row 1: 主内容区(左侧节点列表 + 右侧参数面板)| Main content (left: node list, right: parameter panel) -->
|
|
||||||
<RowDefinition Height="*" />
|
<RowDefinition Height="*" />
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
<!-- ═══ 工具栏:节点插入命令 + 文件操作命令 | Toolbar: node insert commands + file operation commands ═══ -->
|
<Grid Grid.Row="0">
|
||||||
<Border
|
|
||||||
Grid.Row="0"
|
|
||||||
Padding="6,4"
|
|
||||||
Background="#F5F5F5"
|
|
||||||
BorderBrush="{StaticResource PanelBorder}"
|
|
||||||
BorderThickness="0,0,0,1">
|
|
||||||
<WrapPanel Orientation="Horizontal">
|
|
||||||
<!-- 文件操作按钮 | File operation buttons -->
|
|
||||||
<Button
|
|
||||||
Command="{Binding NewProgramCommand}"
|
|
||||||
Content="新建"
|
|
||||||
Style="{StaticResource ToolbarBtn}"
|
|
||||||
ToolTip="新建程序 | New Program" />
|
|
||||||
<Button
|
|
||||||
Command="{Binding SaveProgramCommand}"
|
|
||||||
Content="保存"
|
|
||||||
Style="{StaticResource ToolbarBtn}"
|
|
||||||
ToolTip="保存程序 | Save Program" />
|
|
||||||
<Button
|
|
||||||
Command="{Binding LoadProgramCommand}"
|
|
||||||
Content="加载"
|
|
||||||
Style="{StaticResource ToolbarBtn}"
|
|
||||||
ToolTip="加载程序 | Load Program" />
|
|
||||||
<Button
|
|
||||||
Command="{Binding ExportCsvCommand}"
|
|
||||||
Content="导出CSV"
|
|
||||||
Style="{StaticResource ToolbarBtn}"
|
|
||||||
ToolTip="导出 CSV | Export CSV" />
|
|
||||||
|
|
||||||
<!-- 分隔线 | Separator -->
|
|
||||||
<Rectangle
|
|
||||||
Width="1"
|
|
||||||
Height="20"
|
|
||||||
Margin="4,0"
|
|
||||||
Fill="{StaticResource SeparatorBrush}" />
|
|
||||||
|
|
||||||
<!-- 节点插入按钮(9 种节点类型)| Node insert buttons (9 node types) -->
|
|
||||||
<Button
|
|
||||||
Command="{Binding InsertReferencePointCommand}"
|
|
||||||
Content="参考点"
|
|
||||||
Style="{StaticResource ToolbarBtn}"
|
|
||||||
ToolTip="插入参考点 | Insert Reference Point" />
|
|
||||||
<Button
|
|
||||||
Command="{Binding InsertSaveNodeWithImageCommand}"
|
|
||||||
Content="保存+图"
|
|
||||||
Style="{StaticResource ToolbarBtn}"
|
|
||||||
ToolTip="保存节点并保存图片 | Save Node With Image" />
|
|
||||||
<Button
|
|
||||||
Command="{Binding InsertSaveNodeCommand}"
|
|
||||||
Content="保存节点"
|
|
||||||
Style="{StaticResource ToolbarBtn}"
|
|
||||||
ToolTip="仅保存节点 | Save Node" />
|
|
||||||
<Button
|
|
||||||
Command="{Binding InsertSavePositionCommand}"
|
|
||||||
Content="保存位置"
|
|
||||||
Style="{StaticResource ToolbarBtn}"
|
|
||||||
ToolTip="保存位置 | Save Position" />
|
|
||||||
<Button
|
|
||||||
Command="{Binding InsertInspectionModuleCommand}"
|
|
||||||
Content="检测模块"
|
|
||||||
Style="{StaticResource ToolbarBtn}"
|
|
||||||
ToolTip="插入检测模块 | Insert Inspection Module" />
|
|
||||||
<Button
|
|
||||||
Command="{Binding InsertInspectionMarkerCommand}"
|
|
||||||
Content="检测标记"
|
|
||||||
Style="{StaticResource ToolbarBtn}"
|
|
||||||
ToolTip="插入检测标记 | Insert Inspection Marker" />
|
|
||||||
<Button
|
|
||||||
Command="{Binding InsertPauseDialogCommand}"
|
|
||||||
Content="停顿"
|
|
||||||
Style="{StaticResource ToolbarBtn}"
|
|
||||||
ToolTip="插入停顿对话框 | Insert Pause Dialog" />
|
|
||||||
<Button
|
|
||||||
Command="{Binding InsertWaitDelayCommand}"
|
|
||||||
Content="延时"
|
|
||||||
Style="{StaticResource ToolbarBtn}"
|
|
||||||
ToolTip="设置等待延时 | Insert Wait Delay" />
|
|
||||||
<Button
|
|
||||||
Command="{Binding InsertCompleteProgramCommand}"
|
|
||||||
Content="完成"
|
|
||||||
Style="{StaticResource ToolbarBtn}"
|
|
||||||
ToolTip="完成程序 | Complete Program" />
|
|
||||||
</WrapPanel>
|
|
||||||
</Border>
|
|
||||||
|
|
||||||
<!-- ═══ 主内容区:左侧节点列表 + 右侧参数面板 | Main content: left node list + right parameter panel ═══ -->
|
|
||||||
<Grid Grid.Row="1">
|
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<!-- 左侧:节点列表 | Left: node list -->
|
<ColumnDefinition Width="250" MinWidth="230" />
|
||||||
<ColumnDefinition Width="3*" MinWidth="150" />
|
<ColumnDefinition Width="1" />
|
||||||
<!-- 分隔线 | Splitter -->
|
<ColumnDefinition Width="*" MinWidth="260" />
|
||||||
<ColumnDefinition Width="Auto" />
|
|
||||||
<!-- 右侧:参数面板 | Right: parameter panel -->
|
|
||||||
<ColumnDefinition Width="2*" MinWidth="150" />
|
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
<!-- ── 左侧:CNC 节点列表 | Left: CNC node list ── -->
|
|
||||||
<ListBox
|
<ListBox
|
||||||
x:Name="CncNodeListBox"
|
x:Name="CncNodeListBox"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
@@ -164,15 +66,11 @@
|
|||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<Grid x:Name="NodeRoot" MinHeight="40">
|
<Grid x:Name="NodeRoot" MinHeight="40">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<!-- 图标列 | Icon column -->
|
|
||||||
<ColumnDefinition Width="40" />
|
<ColumnDefinition Width="40" />
|
||||||
<!-- 名称列 | Name column -->
|
|
||||||
<ColumnDefinition Width="*" />
|
<ColumnDefinition Width="*" />
|
||||||
<!-- 操作按钮列 | Action buttons column -->
|
|
||||||
<ColumnDefinition Width="Auto" />
|
<ColumnDefinition Width="Auto" />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
<!-- 节点图标 | Node icon -->
|
|
||||||
<Border
|
<Border
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Width="28"
|
Width="28"
|
||||||
@@ -190,7 +88,6 @@
|
|||||||
Stretch="Uniform" />
|
Stretch="Uniform" />
|
||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
<!-- 节点序号和名称 | Node index and name -->
|
|
||||||
<StackPanel
|
<StackPanel
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Margin="6,0,0,0"
|
Margin="6,0,0,0"
|
||||||
@@ -209,7 +106,6 @@
|
|||||||
Text="{Binding Name}" />
|
Text="{Binding Name}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
<!-- 悬停操作按钮:上移 / 下移 / 删除 | Hover actions: MoveUp / MoveDown / Delete -->
|
|
||||||
<StackPanel
|
<StackPanel
|
||||||
x:Name="NodeActions"
|
x:Name="NodeActions"
|
||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
@@ -229,7 +125,7 @@
|
|||||||
Content="▲"
|
Content="▲"
|
||||||
Cursor="Hand"
|
Cursor="Hand"
|
||||||
FontSize="10"
|
FontSize="10"
|
||||||
ToolTip="上移 | Move Up" />
|
ToolTip="上移" />
|
||||||
<Button
|
<Button
|
||||||
Width="22"
|
Width="22"
|
||||||
Height="22"
|
Height="22"
|
||||||
@@ -242,7 +138,7 @@
|
|||||||
Content="▼"
|
Content="▼"
|
||||||
Cursor="Hand"
|
Cursor="Hand"
|
||||||
FontSize="10"
|
FontSize="10"
|
||||||
ToolTip="下移 | Move Down" />
|
ToolTip="下移" />
|
||||||
<Button
|
<Button
|
||||||
Width="22"
|
Width="22"
|
||||||
Height="22"
|
Height="22"
|
||||||
@@ -254,11 +150,10 @@
|
|||||||
Content="✕"
|
Content="✕"
|
||||||
Cursor="Hand"
|
Cursor="Hand"
|
||||||
FontSize="10"
|
FontSize="10"
|
||||||
ToolTip="删除 | Delete" />
|
ToolTip="删除" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
<DataTemplate.Triggers>
|
<DataTemplate.Triggers>
|
||||||
<!-- 鼠标悬停时显示操作按钮 | Show action buttons on mouse hover -->
|
|
||||||
<Trigger SourceName="NodeRoot" Property="IsMouseOver" Value="True">
|
<Trigger SourceName="NodeRoot" Property="IsMouseOver" Value="True">
|
||||||
<Setter TargetName="NodeActions" Property="Visibility" Value="Visible" />
|
<Setter TargetName="NodeActions" Property="Visibility" Value="Visible" />
|
||||||
</Trigger>
|
</Trigger>
|
||||||
@@ -267,30 +162,12 @@
|
|||||||
</ListBox.ItemTemplate>
|
</ListBox.ItemTemplate>
|
||||||
</ListBox>
|
</ListBox>
|
||||||
|
|
||||||
<!-- 垂直分隔线 | Vertical separator -->
|
|
||||||
<Rectangle
|
<Rectangle
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="1"
|
Width="1"
|
||||||
Fill="{StaticResource SeparatorBrush}" />
|
Fill="{StaticResource SeparatorBrush}" />
|
||||||
|
|
||||||
<!-- ── 右侧:参数面板(根据节点类型动态渲染)| Right: parameter panel (dynamic rendering by node type) ── -->
|
<views:PipelineEditorView Grid.Column="2" />
|
||||||
<ScrollViewer
|
|
||||||
Grid.Column="2"
|
|
||||||
HorizontalScrollBarVisibility="Disabled"
|
|
||||||
VerticalScrollBarVisibility="Auto">
|
|
||||||
<StackPanel Margin="8,6">
|
|
||||||
<TextBlock
|
|
||||||
Margin="0,0,0,4"
|
|
||||||
FontFamily="{StaticResource CsdFont}"
|
|
||||||
FontSize="11"
|
|
||||||
FontWeight="Bold"
|
|
||||||
Foreground="#555"
|
|
||||||
Text="参数配置" />
|
|
||||||
|
|
||||||
<!-- 动态参数内容区域(占位:根据 SelectedNode 类型渲染)| Dynamic parameter content area (placeholder for node-type-based rendering) -->
|
|
||||||
<ContentControl Content="{Binding SelectedNode}" />
|
|
||||||
</StackPanel>
|
|
||||||
</ScrollViewer>
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Border>
|
</Border>
|
||||||
|
|||||||
@@ -1,16 +1,35 @@
|
|||||||
|
using System;
|
||||||
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
|
using Prism.Ioc;
|
||||||
|
using XplorePlane.ViewModels.Cnc;
|
||||||
|
|
||||||
namespace XplorePlane.Views.Cnc
|
namespace XplorePlane.Views.Cnc
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// CNC 编辑器主页面视图(MVVM 模式,逻辑在 ViewModel 中)
|
/// CNC editor main page view.
|
||||||
/// CNC editor main page view (MVVM pattern, logic in ViewModel)
|
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class CncPageView : UserControl
|
public partial class CncPageView : UserControl
|
||||||
{
|
{
|
||||||
public CncPageView()
|
public CncPageView()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
Loaded += OnLoaded;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnLoaded(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (DataContext is not CncEditorViewModel)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
DataContext = ContainerLocator.Current?.Resolve<CncEditorViewModel>();
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
// keep existing DataContext if resolution fails
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -96,7 +96,7 @@
|
|||||||
Content="加载图像"
|
Content="加载图像"
|
||||||
Style="{StaticResource ToolbarBtn}"
|
Style="{StaticResource ToolbarBtn}"
|
||||||
ToolTip="加载输入图像" />
|
ToolTip="加载输入图像" />
|
||||||
-->
|
|
||||||
<Button
|
<Button
|
||||||
Command="{Binding ExecutePipelineCommand}"
|
Command="{Binding ExecutePipelineCommand}"
|
||||||
Content="▶"
|
Content="▶"
|
||||||
@@ -112,6 +112,7 @@
|
|||||||
Content="🗑"
|
Content="🗑"
|
||||||
Style="{StaticResource ToolbarBtn}"
|
Style="{StaticResource ToolbarBtn}"
|
||||||
ToolTip="工具箱" />
|
ToolTip="工具箱" />
|
||||||
|
-->
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Border>
|
</Border>
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
<UserControl
|
<UserControl
|
||||||
x:Class="XplorePlane.Views.ImagePanelView"
|
x:Class="XplorePlane.Views.ImagePanelView"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:views="clr-namespace:XplorePlane.Views"
|
|
||||||
d:DesignHeight="400"
|
d:DesignHeight="400"
|
||||||
d:DesignWidth="250"
|
d:DesignWidth="250"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
@@ -17,6 +16,6 @@
|
|||||||
<TextBlock Margin="8,4" HorizontalAlignment="Left" VerticalAlignment="Center"
|
<TextBlock Margin="8,4" HorizontalAlignment="Left" VerticalAlignment="Center"
|
||||||
FontWeight="SemiBold" Foreground="#333333" Text="图像" />
|
FontWeight="SemiBold" Foreground="#333333" Text="图像" />
|
||||||
</Border>
|
</Border>
|
||||||
<views:PipelineEditorView Grid.Row="1" />
|
<ContentControl Grid.Row="1" Content="{Binding ImagePanelContent}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
Height="1040"
|
Height="1040"
|
||||||
d:DesignWidth="1580"
|
d:DesignWidth="1580"
|
||||||
Background="#F5F5F5"
|
Background="#F5F5F5"
|
||||||
Icon="pack://application:,,,/XplorerPlane.ico"
|
Icon="pack://application:,,,/XplorePlane;component/XplorerPlane.ico"
|
||||||
WindowStartupLocation="CenterScreen"
|
WindowStartupLocation="CenterScreen"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
<Window.Resources>
|
<Window.Resources>
|
||||||
@@ -284,16 +284,9 @@
|
|||||||
Command="{Binding OpenCncEditorCommand}"
|
Command="{Binding OpenCncEditorCommand}"
|
||||||
Size="Large"
|
Size="Large"
|
||||||
SmallImage="/Assets/Icons/cnc.png"
|
SmallImage="/Assets/Icons/cnc.png"
|
||||||
Text="CNC 编辑器" />
|
Text="CNC 编辑" />
|
||||||
|
|
||||||
|
|
||||||
<!-- 矩阵编排入口按钮 -->
|
|
||||||
<telerik:RadRibbonButton
|
|
||||||
telerik:ScreenTip.Description="打开矩阵编排窗口,配置多工件阵列检测方案"
|
|
||||||
telerik:ScreenTip.Title="矩阵编排"
|
|
||||||
Command="{Binding OpenMatrixEditorCommand}"
|
|
||||||
Size="Large"
|
|
||||||
SmallImage="/Assets/Icons/matrix.png"
|
|
||||||
Text="矩阵编排" />
|
|
||||||
|
|
||||||
<!-- CNC 节点快捷工具 -->
|
<!-- CNC 节点快捷工具 -->
|
||||||
<StackPanel>
|
<StackPanel>
|
||||||
@@ -342,6 +335,16 @@
|
|||||||
SmallImage="/Assets/Icons/wait.png"
|
SmallImage="/Assets/Icons/wait.png"
|
||||||
Text="插入等待" />
|
Text="插入等待" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|
||||||
|
<!-- 矩阵编排入口按钮 -->
|
||||||
|
<telerik:RadRibbonButton
|
||||||
|
telerik:ScreenTip.Description="打开矩阵编排窗口,配置多工件阵列检测方案"
|
||||||
|
telerik:ScreenTip.Title="矩阵编排"
|
||||||
|
Command="{Binding OpenMatrixEditorCommand}"
|
||||||
|
Size="Large"
|
||||||
|
SmallImage="/Assets/Icons/matrix.png"
|
||||||
|
Text="矩阵编排" />
|
||||||
|
|
||||||
</telerik:RadRibbonGroup>
|
</telerik:RadRibbonGroup>
|
||||||
|
|
||||||
<telerik:RadRibbonGroup Header="高级模块" IsEnabled="{Binding Path=CellsGroup.IsEnabled}">
|
<telerik:RadRibbonGroup Header="高级模块" IsEnabled="{Binding Path=CellsGroup.IsEnabled}">
|
||||||
@@ -459,7 +462,7 @@
|
|||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition x:Name="NavColumn" Width="0" />
|
<ColumnDefinition x:Name="NavColumn" Width="0" />
|
||||||
<ColumnDefinition Width="*" />
|
<ColumnDefinition Width="*" />
|
||||||
<ColumnDefinition Width="350" />
|
<ColumnDefinition Width="{Binding ImagePanelWidth}" />
|
||||||
<ColumnDefinition Width="350" />
|
<ColumnDefinition Width="350" />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
|
|||||||
@@ -146,6 +146,9 @@
|
|||||||
<Link>Libs\Hardware\zh-TW\%(Filename)%(Extension)</Link>
|
<Link>Libs\Hardware\zh-TW\%(Filename)%(Extension)</Link>
|
||||||
</None>
|
</None>
|
||||||
<Compile Remove="Views\Main\MainWindowB.xaml.cs" />
|
<Compile Remove="Views\Main\MainWindowB.xaml.cs" />
|
||||||
|
<Content Include="XplorerPlane.ico">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
|
||||||
<Resource Include="XplorerPlane.ico" />
|
<Resource Include="XplorerPlane.ico" />
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 92 KiB |
Reference in New Issue
Block a user