2026-06-05 13:44:39 +09:00

423 lines
24 KiB
XML

<UserControl x:Class="AuroraLaser.Amplitude.UCLaserController"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:AuroraLaser.Amplitude"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors" xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
xmlns:aurora="clr-namespace:Aurora.View;assembly=Aurora"
xmlns:usercontrols="clr-namespace:AuroraUIComponent.UserControls;assembly=AuroraUIComponent"
d:DataContext="{d:DesignInstance Type=local:UCLaserControllerViewModel}"
mc:Ignorable="d" x:Name="uc"
d:DesignHeight="1004.85" d:DesignWidth="1583.5">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<aurora:SharedResourceDictionary Source="pack://application:,,,/AuroraUIComponent;component/Style/Generic.xaml"/>
</ResourceDictionary.MergedDictionaries>
<aurora:BoolConverter
x:Key="convSignalConv"
FalseValue="White"
TrueValue="LightGreen"/>
<aurora:BoolConverter
x:Key="convOnOffConv"
FalseValue="Off"
TrueValue="On"/>
<aurora:BoolConverter
x:Key="convConnectStatusConv"
FalseValue="Disconnected"
TrueValue="Connected"/>
<aurora:BoolConverter
x:Key="convShutterStatusConv"
FalseValue="Closed"
TrueValue="Opened"/>
<aurora:BoolConverter
x:Key="convLaserOnOffConv"
FalseValue="Laser Off"
TrueValue="Laser On"/>
</ResourceDictionary>
</UserControl.Resources>
<i:Interaction.Triggers>
<i:PropertyChangedTrigger Binding="{Binding IsVisible, ElementName=uc}">
<i:InvokeCommandAction Command="{Binding CMD_VisibleChanged}" CommandParameter="{Binding IsVisible, ElementName=uc}"/>
</i:PropertyChangedTrigger>
</i:Interaction.Triggers>
<Grid Margin="30 10 30 30">
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition Height="250"/>
<RowDefinition/>
<RowDefinition Height="70"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="250"/>
<ColumnDefinition Width="420"/>
<ColumnDefinition Width="300"/>
<ColumnDefinition Width="300"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="5">
<mah:ToggleSwitch HorizontalAlignment="Right" Margin="0,0,0,0" IsOn="{Binding IsActivated}"
OffContent="Deactivated" OnContent="Activated"/>
</Border>
<Border Grid.Column="0" Grid.Row="1" Margin="10, 0, 0, 0">
<usercontrols:UCProperty Title="Device Config" SelectedObject="{Binding DevConfig}" CMD_Save="{Binding CMD_SaveConfigs}"/>
</Border>
<Border Grid.Column="1" Grid.Row="1" >
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
</Grid.RowDefinitions>
<!-- Laser On-->
<!-- button color #002060 -->
<Border Grid.Column="0" Grid.Row="0" BorderBrush="#1A2242" BorderThickness="1 1 2 2" CornerRadius="1" Margin="10, 0, 10, 0">
<Button Content="{Binding LaserStatus}" Width="100" Height="100" FontSize="15" FontWeight="Bold" Command="{Binding CMD_LaserOnOff}">
<Button.Style>
<Style TargetType="{x:Type Button}" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ButtonBase}">
<Border CornerRadius="50" Background="{TemplateBinding Background}" Name="button" Width="100">
<Grid>
<Border BorderThickness="1,0,1,1" BorderBrush="Black" CornerRadius="{Binding ElementName=button, Path=CornerRadius}">
<Border.Effect>
<BlurEffect Radius="2" KernelType="Gaussian"/>
</Border.Effect>
</Border>
<Border BorderThickness="0,1,0,0" BorderBrush="White" Margin="2" Opacity="0.7" CornerRadius="{Binding ElementName=button, Path=CornerRadius}">
<Border.Effect>
<BlurEffect Radius="2" KernelType="Gaussian"/>
</Border.Effect>
</Border>
<ContentPresenter TextBlock.FontSize="{TemplateBinding FontSize}" TextBlock.FontFamily="{TemplateBinding FontFamily}" TextBlock.Foreground="{TemplateBinding Foreground}" VerticalAlignment="Center" HorizontalAlignment="Center" Content="{TemplateBinding Content}"></ContentPresenter>
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="Background" Value="Gray" />
<Setter Property="Foreground" Value="White" />
<Setter Property="FontSize" Value="20" />
<Setter Property="FontFamily" Value="Consolas" />
</Style>
</Button.Style>
</Button>
</Border>
</Grid>
</Border>
<Border Grid.Column="2" Grid.Row="1" BorderBrush="#1A2242" BorderThickness="1 1 2 2" CornerRadius="1">
<Grid Margin="10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="130"/>
<ColumnDefinition Width="50" />
<ColumnDefinition Width="130"/>
<ColumnDefinition Width="20"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" FontSize="20" FontWeight="Bold" Text="Laser Status" Foreground="Gray" HorizontalAlignment="Left" VerticalAlignment="Bottom"/>
<Line
X1="0" Y1="50"
X2="120" Y2="50"
Stroke="Gray"
StrokeThickness="4"/>
<TextBlock Grid.Column="0" Grid.Row="1" Text="Interlock" HorizontalAlignment="Left" VerticalAlignment="Center" FontWeight="Bold" FontSize="15"/>
<Ellipse Grid.Column="1" Grid.Row="1" Width="15" Height="15" Stroke="Red" StrokeThickness="1" Fill="{Binding IsInterlock, Converter={StaticResource convSignalConv}}" />
<TextBlock Grid.Column="2" Grid.Row="1" Text="Self-Test" HorizontalAlignment="Left" VerticalAlignment="Top" FontWeight="Bold" FontSize="15" Margin="0,20,0,0"/>
<Ellipse Grid.Column="3" Grid.Row="1" Stroke="Red" StrokeThickness="1" VerticalAlignment="Center" HorizontalAlignment="Right" Width="15" Height="15" Fill="{Binding IsSelfTest, Converter={StaticResource convSignalConv}}" RenderTransformOrigin="2.111,0.467" Margin="0,22,-15,22"/>
<TextBlock Grid.Column="0" Grid.Row="2" Text="Mode-Lock" HorizontalAlignment="Left" VerticalAlignment="Center" FontWeight="Bold" FontSize="15"/>
<Ellipse Grid.Column="1" Stroke="Red" StrokeThickness="1" Grid.Row="2" Width="15" Height="15" Fill="{Binding IsModelock, Converter={StaticResource convSignalConv}}" />
<TextBlock Grid.Column="2" Grid.Row="2" Text="Front-End Ready" HorizontalAlignment="Left" VerticalAlignment="Center" FontWeight="Bold" FontSize="15"/>
<Ellipse Grid.Column="3" Stroke="Red" StrokeThickness="1" Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Center" Width="15" Height="16" Fill="{Binding IsFrontEndReady, Converter={StaticResource convSignalConv}}" RenderTransformOrigin="2.956,0.533" Margin="21,19,-15,24"/>
<TextBlock Grid.Column="0" Grid.Row="3" Text="Oscillator Ready" HorizontalAlignment="Left" VerticalAlignment="Center" FontWeight="Bold" FontSize="15"/>
<Ellipse Grid.Column="1" Stroke="Red" StrokeThickness="1" Grid.Row="3" Width="15" Height="15" Fill="{Binding IsOscillatorReady, Converter={StaticResource convSignalConv}}" />
</Grid>
</Border>
<!-- Control Status Start -->
<Border Grid.Column="3" Grid.Row="1" BorderBrush="#1A2242" BorderThickness="1 1 2 2" CornerRadius="1" Margin="10, 0, 10, 0">
<Grid Margin="10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"/>
<ColumnDefinition Width="150*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" >
<TextBlock Grid.Row="0" Grid.Column="0" FontSize="20" FontWeight="Bold" Text="Control Status" Foreground="Gray" HorizontalAlignment="Left" VerticalAlignment="Bottom"/>
<Line
X1="0" Y1="50"
X2="200" Y2="50"
Stroke="Gray"
StrokeThickness="4"/>
</Grid>
<TextBlock Grid.Column="0" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="15" Text="Key" />
<TextBlock Grid.Column="1" Grid.Row="1" Text="{Binding IsKey, Converter={StaticResource convLaserOnOffConv}}" VerticalAlignment="Center" FontSize="15" FontWeight="Bold" TextAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Grid.Column="0" Grid.Row="2" Text="Status" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="15"/>
<TextBlock Grid.Column="1" Grid.Row="2" Text="{Binding IsStatus, Converter={StaticResource convConnectStatusConv}}" HorizontalAlignment="Center" FontWeight="Bold" VerticalAlignment="Center" FontSize="15"/>
<TextBlock Grid.Column="0" Grid.Row="3" Text="Shutter" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="15"/>
<TextBlock Grid.Column="1" Grid.Row="3" Text="{Binding IsShutter, Converter={StaticResource convShutterStatusConv}}" FontSize="15" FontWeight="Bold" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Grid>
</Border>
<!-- Control Status End-->
<!-- Syncro Start -->
<Border Grid.Column="4" Grid.Row="1" BorderBrush="#1A2242" BorderThickness="1 1 2 2" CornerRadius="1" Margin="10, 0, 10, 0">
<Grid Margin="10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"/>
<ColumnDefinition Width="150*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" >
<TextBlock Grid.Row="0" Grid.Column="0" FontSize="20" FontWeight="Bold" Text="Sync" Foreground="Gray" HorizontalAlignment="Left" VerticalAlignment="Bottom"/>
<Line
X1="0" Y1="50"
X2="200" Y2="50"
Stroke="Gray"
StrokeThickness="4"/>
</Grid>
<TextBlock Grid.Column="0" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="15" Text="Pulse Picker" />
<Border Grid.Column="1" Grid.Row="1" Background="LightPink" Margin="10">
<TextBlock Text="{Binding PulsePicker}" VerticalAlignment="Center" FontSize="15" FontWeight="Bold" HorizontalAlignment="Center"/>
</Border>
<TextBlock Grid.Column="0" Grid.Row="2" Text="External Modulator" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="15"/>
<Border Grid.Column="1" Grid.Row="2" Background="LightPink" Margin="10">
<TextBlock Text="{Binding ExternalModulator}" HorizontalAlignment="Center" FontWeight="Bold" VerticalAlignment="Center" FontSize="15"/>
</Border>
</Grid>
</Border>
<!-- Syncro End -->
<Border Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="5" BorderBrush="#1A2242" BorderThickness="1 1 2 2" CornerRadius="1" Margin="10, 10, 10, 0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
</Grid.RowDefinitions>
<!-- Output Power Start -->
<Border Grid.Column="0" Grid.Row="1" BorderBrush="#1A2242" BorderThickness="1 1 2 2" CornerRadius="1" Margin="100">
<Grid Margin="10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" >
<TextBlock Grid.Row="0" Grid.Column="0" FontSize="20" FontWeight="Bold" Text="Output Power" HorizontalAlignment="Left" VerticalAlignment="Bottom"/>
<Line
X1="0" Y1="50"
X2="200" Y2="50"
Stroke="Gray"
StrokeThickness="4"/>
</Grid>
<Border Grid.Column="1" Grid.Row="1" Background="LightPink" Margin="100, 200, 100, 200">
<TextBlock Text="{Binding OutputPower}" VerticalAlignment="Center" FontSize="15" FontWeight="Bold" HorizontalAlignment="Center"/>
</Border>
</Grid>
</Border>
<!-- Output Power End -->
<!-- Oscillator Start -->
<Border Grid.Column="1" Grid.Row="2" BorderBrush="#1A2242" BorderThickness="1 1 2 2" CornerRadius="1" Margin="100">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border Grid.Column="0" Grid.ColumnSpan="2">
<TextBlock Text="Oscillator" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="15" FontWeight="Bold"/>
</Border>
<Border Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2" Background="LightPink" Margin="10">
<TextBlock Text="{Binding Oscillator_Value}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<Border Grid.Column="0" Grid.Row="2" Margin="10">
<TextBlock Text="Temperature" FontSize="15" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<Border Grid.Column="1" Grid.Row="2" Margin="10">
<TextBlock Text="{Binding Oscillator_Temp}" FontSize="15" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<Border Grid.Column="0" Grid.Row="3" Margin="10">
<TextBlock Text="Power LD" FontSize="15" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<Border Grid.Column="1" Grid.Row="3" Margin="10">
<TextBlock Text="{Binding Oscillator_PowerLD}" FontSize="15" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</Grid>
</Border>
<!-- Oscillator End -->
<!-- Preamp1 Start -->
<Border Grid.Column="2" Grid.Row="2" BorderBrush="#1A2242" BorderThickness="1 1 2 2" CornerRadius="1" Margin="100">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border Grid.Column="0" Grid.ColumnSpan="2">
<TextBlock Text="Preamp1" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="15" FontWeight="Bold"/>
</Border>
<Border Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2" Background="LightPink" Margin="10">
<TextBlock Text="{Binding Preamp1_Value}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<Border Grid.Column="0" Grid.Row="2" Margin="10">
<TextBlock Text="Temperature" FontSize="15" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<Border Grid.Column="1" Grid.Row="2" Margin="10">
<TextBlock Text="{Binding Preamp1_Temp}" FontSize="15" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<Border Grid.Column="0" Grid.Row="3" Margin="10">
<TextBlock Text="Power LD" FontSize="15" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<Border Grid.Column="1" Grid.Row="3" Margin="10">
<TextBlock Text="{Binding Preamp1_PowerLD}" FontSize="15" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</Grid>
</Border>
<!-- Preamp1 End -->
<!-- Amplifier Start -->
<Border Grid.Column="3" Grid.Row="2" BorderBrush="#1A2242" BorderThickness="1 1 2 2" CornerRadius="1" Margin="100">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border Grid.Column="0" Grid.ColumnSpan="2">
<TextBlock Text="Amplifier" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="15" FontWeight="Bold"/>
</Border>
<Border Grid.Column="0" Grid.Row="1" Margin="10">
<TextBox Text="{Binding Amplifier_Write, UpdateSourceTrigger=PropertyChanged}" Width="100" FontSize="15" FontWeight="Bold" TextAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBox.InputBindings>
<KeyBinding Command="{Binding CMD_EnterCommand}" Key="Enter"/>
</TextBox.InputBindings>
</TextBox>
</Border>
<Border Grid.Column="1" Grid.Row="1" Background="LightPink" Margin="10">
<TextBlock Text="{Binding Amplifier_Value}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<Border Grid.Column="0" Grid.Row="2" Margin="10">
<TextBlock Text="Temperature" FontSize="15" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<Border Grid.Column="1" Grid.Row="2" Margin="10">
<TextBlock Text="{Binding Amplifier_Temp}" FontSize="15" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<Border Grid.Column="0" Grid.Row="3" Margin="10">
<TextBlock Text="Power LD" FontSize="15" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<Border Grid.Column="1" Grid.Row="3" Margin="10">
<TextBlock Text="{Binding Amplifier_PowerLD}" FontSize="15" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</Grid>
</Border>
<!-- Amplifier End -->
</Grid>
</Border>
<Border Grid.Column="0" Grid.Row="3" Grid.ColumnSpan="5" BorderBrush="#1A2242" BorderThickness="1 1 2 2" CornerRadius="1" Margin="10, 10, 10, 0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" Margin="200, 10, 200, 10">
<Button Content="Synchrolation"></Button>
</Border>
<Border Grid.Column="1" Margin="200, 10, 200, 10">
<Button Content="Compressor"></Button>
</Border>
<Border Grid.Column="2" Margin="200, 10, 200, 10">
<Button Content="Settings" IsEnabled="{Binding IsActivated}" Command="{Binding CMD_ShowSettingView}" Margin="0,0,0,-0.333"/>
</Border>
</Grid>
</Border>
</Grid>
</UserControl>