580 lines
40 KiB
XML
580 lines
40 KiB
XML
<Window x:Class="ProgramLib.GUI.View.ManualControlWindow"
|
|
x:ClassModifier="internal"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
|
|
xmlns:local="clr-namespace:ProgramLib.GUI.View"
|
|
mc:Ignorable="d"
|
|
Title="Manual Control"
|
|
WindowStyle="None"
|
|
MouseLeftButtonDown="Window_MouseLeftButtonDown"
|
|
KeyDown="Window_KeyDown"
|
|
Loaded="Window_Loaded"
|
|
IsVisibleChanged="Window_IsVisibleChanged"
|
|
Height="550"
|
|
Width="650">
|
|
<WindowChrome.WindowChrome>
|
|
<WindowChrome GlassFrameThickness="1" CornerRadius="13,13,13,13" CaptionHeight="0"/>
|
|
</WindowChrome.WindowChrome>
|
|
<Window.Resources>
|
|
|
|
<!-- Style for the close button -->
|
|
<Style x:Key="TitleBarCloseButtonStyle" TargetType="{x:Type Button}">
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="{x:Type Button}">
|
|
<Border x:Name="bdr_main" BorderThickness="1" BorderBrush="Transparent" Background="Transparent">
|
|
<ContentPresenter x:Name="bdr_main2" VerticalAlignment="Center" HorizontalAlignment="Center" ContentSource="Content"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="bdr_main" Property="Background" Value="#e94856"/>
|
|
<Setter TargetName="bdr_main" Property="BorderBrush" Value="#ba1245"/>
|
|
<Setter TargetName="bdr_main2" Property="Content">
|
|
<Setter.Value>
|
|
<Image Source="pack://application:,,,/Program;component/Resources/Images/Title_Bar_Buttons/close_white.png" Width="20" Height="20" />
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Trigger>
|
|
<Trigger Property="IsPressed" Value="True">
|
|
<Setter TargetName="bdr_main" Property="Background" Value="#ff829a"/>
|
|
<Setter TargetName="bdr_main" Property="BorderBrush" Value="#e94856"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- Style for minimize and maximize buttons -->
|
|
<Style x:Key="TitleBarButtonStyle" TargetType="{x:Type Button}">
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="{x:Type Button}">
|
|
<Border x:Name="bdr_main" BorderThickness="1" BorderBrush="Transparent" Background="Transparent">
|
|
<ContentPresenter x:Name="bdr_main2" VerticalAlignment="Center" HorizontalAlignment="Center" ContentSource="Content"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="bdr_main" Property="Background" Value="#bee6fd"/>
|
|
<Setter TargetName="bdr_main" Property="BorderBrush" Value="#7fb1cd"/>
|
|
</Trigger>
|
|
<Trigger Property="IsPressed" Value="True">
|
|
<Setter TargetName="bdr_main" Property="Background" Value="#a1bfd0"/>
|
|
<Setter TargetName="bdr_main" Property="BorderBrush" Value="#4c778f"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style x:Key="TextBoxAsTextBlock" TargetType="{x:Type TextBox}">
|
|
<Style.Triggers>
|
|
<Trigger Property="IsFocused" Value="False">
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="{x:Type TextBox}">
|
|
<TextBlock Text="{TemplateBinding Text}" />
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
|
|
<SolidColorBrush x:Key="TabItem.Selected.Background" Color="#F9F9F9"/>
|
|
<SolidColorBrush x:Key="TabItem.Selected.Border" Color="#ACACAC"/>
|
|
<Style x:Key="TabControlStyle1" TargetType="{x:Type TabControl}">
|
|
<Setter Property="Padding" Value="2"/>
|
|
<Setter Property="HorizontalContentAlignment" Value="Center"/>
|
|
<Setter Property="VerticalContentAlignment" Value="Center"/>
|
|
<Setter Property="Background" Value="{StaticResource TabItem.Selected.Background}"/>
|
|
<Setter Property="BorderBrush" Value="{StaticResource TabItem.Selected.Border}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="{x:Type TabControl}">
|
|
<Grid x:Name="templateRoot" ClipToBounds="true" SnapsToDevicePixels="true" KeyboardNavigation.TabNavigation="Local">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition x:Name="ColumnDefinition0"/>
|
|
<ColumnDefinition x:Name="ColumnDefinition1" Width="0"/>
|
|
</Grid.ColumnDefinitions>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition x:Name="RowDefinition0" Height="Auto"/>
|
|
<RowDefinition x:Name="RowDefinition1" Height="*"/>
|
|
</Grid.RowDefinitions>
|
|
<TabPanel x:Name="headerPanel" Background="Transparent" Grid.Column="0" IsItemsHost="true" Margin="2,2,2,0" Grid.Row="0" KeyboardNavigation.TabIndex="1" Panel.ZIndex="1"/>
|
|
<Border x:Name="contentPanel" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Grid.Column="0" KeyboardNavigation.DirectionalNavigation="Contained" Grid.Row="1" KeyboardNavigation.TabIndex="2" KeyboardNavigation.TabNavigation="Local">
|
|
<ContentPresenter x:Name="PART_SelectedContentHost" ContentSource="SelectedContent" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
|
|
</Border>
|
|
</Grid>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="TabStripPlacement" Value="Bottom">
|
|
<Setter Property="Grid.Row" TargetName="headerPanel" Value="1"/>
|
|
<Setter Property="Grid.Row" TargetName="contentPanel" Value="0"/>
|
|
<Setter Property="Height" TargetName="RowDefinition0" Value="*"/>
|
|
<Setter Property="Height" TargetName="RowDefinition1" Value="Auto"/>
|
|
<Setter Property="Margin" TargetName="headerPanel" Value="2,0,2,2"/>
|
|
</Trigger>
|
|
<Trigger Property="TabStripPlacement" Value="Left">
|
|
<Setter Property="Grid.Row" TargetName="headerPanel" Value="0"/>
|
|
<Setter Property="Grid.Row" TargetName="contentPanel" Value="0"/>
|
|
<Setter Property="Grid.Column" TargetName="headerPanel" Value="0"/>
|
|
<Setter Property="Grid.Column" TargetName="contentPanel" Value="1"/>
|
|
<Setter Property="Width" TargetName="ColumnDefinition0" Value="Auto"/>
|
|
<Setter Property="Width" TargetName="ColumnDefinition1" Value="*"/>
|
|
<Setter Property="Height" TargetName="RowDefinition0" Value="*"/>
|
|
<Setter Property="Height" TargetName="RowDefinition1" Value="0"/>
|
|
<Setter Property="Margin" TargetName="headerPanel" Value="2,2,0,2"/>
|
|
</Trigger>
|
|
<Trigger Property="TabStripPlacement" Value="Right">
|
|
<Setter Property="Grid.Row" TargetName="headerPanel" Value="0"/>
|
|
<Setter Property="Grid.Row" TargetName="contentPanel" Value="0"/>
|
|
<Setter Property="Grid.Column" TargetName="headerPanel" Value="1"/>
|
|
<Setter Property="Grid.Column" TargetName="contentPanel" Value="0"/>
|
|
<Setter Property="Width" TargetName="ColumnDefinition0" Value="*"/>
|
|
<Setter Property="Width" TargetName="ColumnDefinition1" Value="Auto"/>
|
|
<Setter Property="Height" TargetName="RowDefinition0" Value="*"/>
|
|
<Setter Property="Height" TargetName="RowDefinition1" Value="0"/>
|
|
<Setter Property="Margin" TargetName="headerPanel" Value="0,2,2,2"/>
|
|
</Trigger>
|
|
<Trigger Property="IsEnabled" Value="false">
|
|
<Setter Property="TextElement.Foreground" TargetName="templateRoot" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style x:Key="FocusVisual1">
|
|
<Setter Property="Control.Template">
|
|
<Setter.Value>
|
|
<ControlTemplate>
|
|
<Rectangle Margin="2" StrokeDashArray="1 2" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" SnapsToDevicePixels="true" StrokeThickness="1"/>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<SolidColorBrush x:Key="Button.Static.Background" Color="#FFDDDDDD"/>
|
|
<SolidColorBrush x:Key="Button.Static.Border" Color="#FF707070"/>
|
|
<SolidColorBrush x:Key="Button.MouseOver.Background" Color="#FFBEE6FD"/>
|
|
<SolidColorBrush x:Key="Button.MouseOver.Border" Color="#FF3C7FB1"/>
|
|
<SolidColorBrush x:Key="Button.Pressed.Background" Color="#FFC4E5F6"/>
|
|
<SolidColorBrush x:Key="Button.Pressed.Border" Color="#FF2C628B"/>
|
|
<SolidColorBrush x:Key="Button.Disabled.Background" Color="#E5E5E5"/>
|
|
<SolidColorBrush x:Key="Button.Disabled.Border" Color="#DFDFDF"/>
|
|
<SolidColorBrush x:Key="Button.Disabled.Foreground" Color="#A6A6A6"/>
|
|
<Style x:Key="ButtonStyle1" xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero" TargetType="{x:Type Button}">
|
|
<Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual1}"/>
|
|
<Setter Property="Background" Value="{StaticResource Button.Static.Background}"/>
|
|
<Setter Property="BorderBrush" Value="{StaticResource Button.Static.Border}"/>
|
|
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="HorizontalContentAlignment" Value="Center"/>
|
|
<Setter Property="VerticalContentAlignment" Value="Center"/>
|
|
<Setter Property="Padding" Value="1"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="{x:Type Button}">
|
|
<Microsoft_Windows_Themes:ButtonChrome SnapsToDevicePixels="true"
|
|
x:Name="Chrome" Background="{TemplateBinding Background}"
|
|
BorderBrush="{TemplateBinding BorderBrush}" RenderDefaulted="{TemplateBinding IsDefaulted}"
|
|
RenderMouseOver="{TemplateBinding IsMouseOver}" RenderPressed="{TemplateBinding IsPressed}">
|
|
<ContentPresenter Name="contentPresenter" Margin="{TemplateBinding Padding}"
|
|
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
|
|
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
|
|
RecognizesAccessKey="True"
|
|
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
|
|
</Microsoft_Windows_Themes:ButtonChrome>
|
|
<ControlTemplate.Triggers>
|
|
|
|
<Trigger Property="IsEnabled" Value="false">
|
|
<Setter Property="Background" TargetName="Chrome" Value="{StaticResource Button.Disabled.Background}"/>
|
|
<Setter Property="BorderBrush" TargetName="Chrome" Value="{StaticResource Button.Disabled.Border}"/>
|
|
<Setter Property="TextElement.Foreground" TargetName="contentPresenter" Value="{StaticResource Button.Disabled.Foreground}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style TargetType="TextBox">
|
|
<EventSetter Event="GotKeyboardFocus" Handler="TextBox_GotKeyboardFocus"/>
|
|
</Style>
|
|
|
|
</Window.Resources>
|
|
<Grid Background="#f4f6fd">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="30px"/>
|
|
<RowDefinition Height="*"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- Title bar which has the app icon, app title, minimize button, maximize button and close button -->
|
|
<Grid>
|
|
<WrapPanel HorizontalAlignment="left" VerticalAlignment="Center">
|
|
<Image x:Name="imgAppIcon" Source="pack://application:,,,/Program;component/Resources/Images/missile.png" Width="20" Height="20" Margin="10,0,10,0"/>
|
|
<TextBlock x:Name="txtBlockAppTitle">Manual Control</TextBlock>
|
|
</WrapPanel>
|
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
|
|
<Button Style="{StaticResource TitleBarButtonStyle}" x:Name="btnMin" Width="44" Background="Transparent" BorderBrush="Transparent" Click="btnMin_Click">
|
|
<Image Source="pack://application:,,,/Program;component/Resources/Images/Title_Bar_Buttons/minimize.png" Width="12" Height="12"/>
|
|
</Button>
|
|
<Button Style="{StaticResource TitleBarButtonStyle}" x:Name="btnMax" Width="44" Background="Transparent" BorderBrush="Transparent" Click="btnMax_Click">
|
|
<Image x:Name="imgMax" Source="pack://application:,,,/Program;component/Resources/Images/Title_Bar_Buttons/maximize.png" Width="13" Height="13"/>
|
|
</Button>
|
|
<Button x:FieldModifier="public" Style="{StaticResource TitleBarCloseButtonStyle}" x:Name="btnClose" Width="44" Background="Transparent" BorderBrush="Transparent" Click="btnClose_Click">
|
|
<Image Source="pack://application:,,,/Program;component/Resources/Images/Title_Bar_Buttons/close_black.png" Width="20" Height="20"/>
|
|
</Button>
|
|
</StackPanel>
|
|
</Grid>
|
|
|
|
<TabControl x:Name="manualGuiTc" Style="{DynamicResource TabControlStyle1}" Grid.Row="1" Margin="15,5,15,15">
|
|
<TabItem x:Name="powerSupplyTcTi" Header="Power Supply">
|
|
<Grid Margin="0,10,0,10">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<DockPanel Margin="20,0,0,10">
|
|
<StackPanel>
|
|
<Label HorizontalAlignment="Center">Power Modules</Label>
|
|
<ComboBox Name="powerModuleCb" Width="150" Height="26" ItemsSource="{Binding _powerModuleComboBoxDataItems}" SelectionChanged="powerModuleCb_SelectionChanged">
|
|
<ComboBox.ItemTemplate>
|
|
<DataTemplate>
|
|
<StackPanel Orientation="Horizontal" Height="22">
|
|
<Image Source="{Binding PowerLed}" Width="15" Height="15" />
|
|
<TextBlock Text="{Binding Name}" Margin="5,0,0,0" VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
</DataTemplate>
|
|
</ComboBox.ItemTemplate>
|
|
</ComboBox>
|
|
</StackPanel>
|
|
<StackPanel Margin="30,0,0,0">
|
|
<Label HorizontalAlignment="Center">Voltage Setpoint</Label>
|
|
<TextBox Name="voltageSetpointTb" Width="90" Height="22" LostFocus="voltageSetpointTb_LostFocus"></TextBox>
|
|
</StackPanel>
|
|
<StackPanel Margin="30,0,0,0">
|
|
<Label HorizontalAlignment="Center">OVP</Label>
|
|
<TextBox Name="ovpTb" Width="50" Height="22"></TextBox>
|
|
</StackPanel>
|
|
<StackPanel Margin="30,0,0,0">
|
|
<Label HorizontalAlignment="Center">OCP</Label>
|
|
<TextBox Name="ocpTb" Width="50" Height="22"></TextBox>
|
|
</StackPanel>
|
|
<Button x:Name="powerOnBtn" Style="{DynamicResource ButtonStyle1}" Width="100" Height="25" VerticalAlignment="Bottom" Click="powerOnBtn_Click">Power on</Button>
|
|
</DockPanel>
|
|
|
|
<Border Grid.Row="1" Margin="20,0,20,0" BorderThickness="1,0,0,1" BorderBrush="#bdbcbd">
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="25" />
|
|
<RowDefinition Height="*" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<Label FontSize="14" Foreground="White" FontWeight="Bold" Content="Power Supply Monitor" Padding="5,0,0,2" VerticalContentAlignment="Center" BorderThickness="0" BorderBrush="#bdbcbd">
|
|
<Label.Background>
|
|
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
|
|
<GradientStop Color="#1959b1" Offset="0.31" />
|
|
<GradientStop Color="#1959b1" Offset="0.09" />
|
|
<GradientStop Color="white" Offset="1.1" />
|
|
</LinearGradientBrush>
|
|
</Label.Background>
|
|
</Label>
|
|
|
|
<Grid Grid.Row="1">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="1*" />
|
|
<ColumnDefinition Width="1.5*" />
|
|
<ColumnDefinition Width="1.5*" />
|
|
<ColumnDefinition Width="1*" />
|
|
<ColumnDefinition Width="1*" />
|
|
</Grid.ColumnDefinitions>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="22" />
|
|
<RowDefinition Height="20" />
|
|
<RowDefinition Height="*" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<Label Grid.RowSpan="2" FontSize="13" FontWeight="Bold" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Height="42" BorderThickness="0,1,1,1" BorderBrush="#bdbcbd">PS</Label>
|
|
<Label Grid.Column="1" Grid.ColumnSpan="2" FontSize="10" FontWeight="Bold" Content="Voltage (V)" Padding="0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderThickness="0,1,1,1" BorderBrush="#bdbcbd"/>
|
|
<Label Grid.Column="3" Grid.ColumnSpan="2" FontSize="10" FontWeight="Bold" Content="Current (A)" Padding="0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderThickness="0,1,1,1" BorderBrush="#bdbcbd"/>
|
|
<Label Grid.Row="1" Grid.Column="1" FontSize="10" FontWeight="Bold" Content="Expected" Padding="0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderThickness="0,0,1,1" BorderBrush="#bdbcbd"/>
|
|
<Label Grid.Row="1" Grid.Column="2" FontSize="10" FontWeight="Bold" Content="Actual" Padding="0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderThickness="0,0,1,1" BorderBrush="#bdbcbd"/>
|
|
<Label Grid.Row="1" Grid.Column="3" Grid.ColumnSpan="2" FontSize="10" FontWeight="Bold" Content="Actual" Padding="0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" BorderThickness="0,0,1,1" BorderBrush="#bdbcbd"/>
|
|
|
|
<!-- DataGrid for Power Data-->
|
|
<DataGrid Grid.Row="2" Grid.ColumnSpan="5" Name="datagridPowerData" AutoGenerateColumns="False" CanUserAddRows="False" IsReadOnly="True" SelectionMode="Extended" SelectionUnit="FullRow" ItemsSource="{Binding _poweredModuleDataItems}" Width="auto" HorizontalGridLinesBrush="#e9e9e9" VerticalGridLinesBrush="#e9e9e9" HeadersVisibility="None" BorderThickness="0,0,0,0">
|
|
<DataGrid.Resources>
|
|
<Style x:Key="CellStyle" TargetType="DataGridCell">
|
|
<Setter Property="TextBlock.TextAlignment" Value="Center" />
|
|
<Setter Property="TextBlock.VerticalAlignment" Value="Center"/>
|
|
<Setter Property="Foreground" Value="Black" />
|
|
<Style.Triggers>
|
|
<Trigger Property="IsSelected" Value="True">
|
|
<Setter Property="Background" Value="{x:Null}" />
|
|
<Setter Property="BorderBrush" Value="{x:Null}" />
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
<Style x:Key="CellStyle_2" TargetType="DataGridCell">
|
|
<Setter Property="TextBlock.TextAlignment" Value="Center" />
|
|
<Setter Property="TextBlock.VerticalAlignment" Value="Center"/>
|
|
<Setter Property="TextBlock.Height" Value="25"/>
|
|
<Setter Property="Foreground" Value="Black" />
|
|
<Style.Triggers>
|
|
<Trigger Property="IsSelected" Value="True">
|
|
<Setter Property="Background" Value="{x:Null}" />
|
|
<Setter Property="BorderBrush" Value="{x:Null}" />
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</DataGrid.Resources>
|
|
<DataGrid.Columns>
|
|
<DataGridTemplateColumn CellStyle="{StaticResource CellStyle}" Header="powerModule" Width="1*">
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
<DataTemplate>
|
|
<StackPanel Orientation="Horizontal" Height="22">
|
|
<Image Source="{Binding PowerLed}" Width="15" Height="15" Margin="3,0,0,0" />
|
|
<TextBlock Text="{Binding Name}" Margin="6,0,0,0" VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
</DataTemplate>
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
</DataGridTemplateColumn>
|
|
<DataGridTextColumn CellStyle="{StaticResource CellStyle_2}" Header="expectedVoltage" Width="1.5*" Binding="{Binding ExpectedVoltage}"/>
|
|
<DataGridTextColumn CellStyle="{StaticResource CellStyle_2}" Header="actualVoltage" Width="1.5*" Binding="{Binding ActualVoltage}"/>
|
|
<DataGridTextColumn CellStyle="{StaticResource CellStyle_2}" Header="actualCurrent" Width="2*" Binding="{Binding ActualCurrent}"/>
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
</Grid>
|
|
</Grid>
|
|
</Border>
|
|
</Grid>
|
|
</TabItem>
|
|
<TabItem x:Name="dioTiTc" Header="DIO">
|
|
<StackPanel Focusable="true">
|
|
<GroupBox Header="Digital Input" BorderThickness="2" Margin="0,25,0,0" Width="474">
|
|
<WrapPanel Margin="20,20,0,25">
|
|
<StackPanel VerticalAlignment="Bottom">
|
|
<Label HorizontalAlignment="Center">Input Signals</Label>
|
|
<ComboBox Name="inputDiscretesCb" Width="120"/>
|
|
</StackPanel>
|
|
<StackPanel Margin="20,0,0,0">
|
|
<Label HorizontalAlignment="Center">Read State</Label>
|
|
<TextBlock x:Name="inputDiscreteStatusTb" HorizontalAlignment="Center" TextAlignment="Center" Background="Black" Width="40" Height="20" Foreground="LightGreen" FontWeight="DemiBold">---</TextBlock>
|
|
</StackPanel>
|
|
<WrapPanel VerticalAlignment="Bottom">
|
|
<Button Style="{DynamicResource ButtonStyle1}" Name="inputDiscreteReadBtn" Width="100" Height="25" Margin="40,0,0,0" Cursor="Hand" FontSize="15" Click="inputDiscreteReadBtn_Click">Read</Button>
|
|
</WrapPanel>
|
|
</WrapPanel>
|
|
</GroupBox>
|
|
<GroupBox Header="Digital Output" BorderThickness="2" Margin="0,45,0,0" Width="474">
|
|
<WrapPanel Margin="20,20,0,25">
|
|
<StackPanel>
|
|
<Label HorizontalAlignment="Center">Output Signals</Label>
|
|
<ComboBox Name="outputDiscretesCb" Width="120"/>
|
|
</StackPanel>
|
|
<StackPanel Margin="40,0,0,0">
|
|
<Label HorizontalAlignment="Center">Write State</Label>
|
|
<ComboBox Name="outputDiscreteStateCb" Width="120">
|
|
<ComboBoxItem>Low</ComboBoxItem>
|
|
<ComboBoxItem>High</ComboBoxItem>
|
|
</ComboBox>
|
|
</StackPanel>
|
|
<WrapPanel VerticalAlignment="Bottom" Margin="40,0,0,0">
|
|
<Button Style="{DynamicResource ButtonStyle1}" Name="outputDiscreteWriteBtn" Width="100" Height="25" Margin="10,0,0,0" Cursor="Hand" FontSize="15" Click="outputDiscreteWriteBtn_Click">Write</Button>
|
|
</WrapPanel>
|
|
</WrapPanel>
|
|
</GroupBox>
|
|
</StackPanel>
|
|
</TabItem>
|
|
<TabItem x:Name="coeTcTi" Header="COE">
|
|
<DockPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="Auto" Margin="20,0,20,0" Focusable="true">
|
|
<DockPanel DockPanel.Dock="Bottom" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="Auto" Margin="0,5,0,0">
|
|
<WrapPanel DockPanel.Dock="Left">
|
|
<Label Padding="0,5,5,5">Rate (Hz):</Label>
|
|
<TextBox x:Name="coeSendRate" Width="100" Height="20"></TextBox>
|
|
</WrapPanel>
|
|
<WrapPanel HorizontalAlignment="Right">
|
|
<Button x:Name="coeSendBtn" Style="{DynamicResource ButtonStyle1}" Width="100" Click="coeSendBtn_Click">Send</Button>
|
|
</WrapPanel>
|
|
</DockPanel>
|
|
<WrapPanel DockPanel.Dock="Top" Height="Auto" HorizontalAlignment="Center">
|
|
<StackPanel>
|
|
<Label HorizontalAlignment="Center">COE Device</Label>
|
|
<ComboBox Name="coeDeviceCb" Width="200" SelectionChanged="coeDeviceCb_SelectionChanged"/>
|
|
</StackPanel>
|
|
</WrapPanel>
|
|
<WrapPanel DockPanel.Dock="Top" Margin="0,0,0,10" Height="Auto" HorizontalAlignment="Center">
|
|
<StackPanel>
|
|
<Label HorizontalAlignment="Center">XML Files</Label>
|
|
<ComboBox Name="xmlFileCb" Width="200" SelectionChanged="xmlFileCb_SelectionChanged"/>
|
|
</StackPanel>
|
|
<StackPanel Margin="40,0,0,0">
|
|
<Label HorizontalAlignment="Center">COE Messages</Label>
|
|
<ComboBox Name="coeMessagesCb" Width="200" SelectionChanged="coeMessagesCb_SelectionChanged"/>
|
|
</StackPanel>
|
|
</WrapPanel>
|
|
<Label DockPanel.Dock="Top" HorizontalAlignment="Center" FontSize="16">Message Definition</Label>
|
|
<!-- TreeGrid "Control" -->
|
|
<Border DockPanel.Dock="Top" BorderBrush="Black" BorderThickness="0.5">
|
|
|
|
<!-- Resources -->
|
|
<Border.Resources>
|
|
<Style x:Key="TextBlockStyle" TargetType="{x:Type TextBlock}">
|
|
<Setter Property="Margin" Value="3 0 3 0"/>
|
|
</Style>
|
|
<Style x:Key="TextBlockBoldStyle" TargetType="{x:Type TextBlock}" BasedOn="{StaticResource TextBlockStyle}">
|
|
<!--<Setter Property="FontWeight" Value="Bold"/>-->
|
|
</Style>
|
|
</Border.Resources>
|
|
|
|
<!-- Content -->
|
|
<Grid Grid.IsSharedSizeScope="True">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- Column headers -->
|
|
<TreeViewItem Grid.Row="0" BorderThickness="1">
|
|
<TreeViewItem.Header>
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition SharedSizeGroup="Name"/>
|
|
<!-- Placeholders for four columns of ToggleButton -->
|
|
<ColumnDefinition SharedSizeGroup="Toggle"/>
|
|
<ColumnDefinition SharedSizeGroup="Toggle"/>
|
|
<ColumnDefinition SharedSizeGroup="Toggle"/>
|
|
<ColumnDefinition SharedSizeGroup="Toggle"/>
|
|
<ColumnDefinition SharedSizeGroup="Value"/>
|
|
<ColumnDefinition SharedSizeGroup="Type"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Grid.Column="0" Text="Name" Style="{StaticResource TextBlockBoldStyle}"/>
|
|
<!-- Empty TreeViewItem to measure the size of its ToggleButton into the "Toggle" group-->
|
|
<TreeViewItem Grid.Column="1" Padding="0"/>
|
|
<TextBlock Grid.Column="5" Text="Value" Margin="10,0,0,0" Style="{StaticResource TextBlockBoldStyle}"/>
|
|
<TextBlock Grid.Column="6" Text="Type" Margin="30,0,0,0" Style="{StaticResource TextBlockBoldStyle}"/>
|
|
</Grid>
|
|
</TreeViewItem.Header>
|
|
</TreeViewItem>
|
|
|
|
<!-- Data rows -->
|
|
<TreeView Grid.Row="1" ItemsSource="{Binding _coeMessageDataItems}" BorderBrush="Gray" BorderThickness="0 1 0 0">
|
|
<TreeView.ItemTemplate>
|
|
|
|
<!-- Level 0 template leaves space for 4 child "Toggle" levels -->
|
|
<HierarchicalDataTemplate ItemsSource="{Binding SubItems}">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition SharedSizeGroup="Name"/>
|
|
<ColumnDefinition SharedSizeGroup="Toggle"/>
|
|
<ColumnDefinition SharedSizeGroup="Toggle"/>
|
|
<ColumnDefinition SharedSizeGroup="Toggle"/>
|
|
<ColumnDefinition SharedSizeGroup="Toggle"/>
|
|
<ColumnDefinition SharedSizeGroup="Value"/>
|
|
<ColumnDefinition SharedSizeGroup="Type"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Grid.Column="0" Text="{Binding Name}" Style="{StaticResource TextBlockStyle}"/>
|
|
<TextBox Grid.Column="5" Style="{StaticResource TextBoxAsTextBlock}" Text="{Binding Value}" Margin="10,0,0,0" Focusable="{Binding IsFocusable}"/>
|
|
<TextBlock Grid.Column="6" Text="{Binding Type}" Margin="30,0,0,0" Style="{StaticResource TextBlockStyle}"/>
|
|
</Grid>
|
|
|
|
<!-- Level 1 template leaves space for 3 child "Toggle" levels -->
|
|
<HierarchicalDataTemplate.ItemTemplate>
|
|
<HierarchicalDataTemplate ItemsSource="{Binding SubItems}">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition SharedSizeGroup="Name"/>
|
|
<ColumnDefinition/>
|
|
<ColumnDefinition SharedSizeGroup="Toggle"/>
|
|
<ColumnDefinition SharedSizeGroup="Toggle"/>
|
|
<ColumnDefinition SharedSizeGroup="Toggle"/>
|
|
<ColumnDefinition SharedSizeGroup="Value"/>
|
|
<ColumnDefinition SharedSizeGroup="Type"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Grid.Column="0" Text="{Binding Name}" Style="{StaticResource TextBlockStyle}"/>
|
|
<TextBox Grid.Column="5" Style="{StaticResource TextBoxAsTextBlock}" Text="{Binding Value}" Margin="10,0,0,0" Focusable="{Binding IsFocusable}" GotFocus="TextBox_GotFocus"/>
|
|
<TextBlock Grid.Column="6" Text="{Binding Type}" Margin="30,0,0,0" Style="{StaticResource TextBlockStyle}"/>
|
|
</Grid>
|
|
|
|
<!-- Level 2 template leaves space for 2 child "Toggle" levels -->
|
|
<HierarchicalDataTemplate.ItemTemplate>
|
|
<HierarchicalDataTemplate ItemsSource="{Binding SubItems}">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition SharedSizeGroup="Name"/>
|
|
<ColumnDefinition/>
|
|
<ColumnDefinition/>
|
|
<ColumnDefinition SharedSizeGroup="Toggle"/>
|
|
<ColumnDefinition SharedSizeGroup="Toggle"/>
|
|
<ColumnDefinition SharedSizeGroup="Value"/>
|
|
<ColumnDefinition SharedSizeGroup="Type"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Grid.Column="0" Text="{Binding Name}" Style="{StaticResource TextBlockStyle}"/>
|
|
<TextBox Grid.Column="5" Style="{StaticResource TextBoxAsTextBlock}" Text="{Binding Value}" Margin="10,0,0,0" Focusable="{Binding IsFocusable}" GotFocus="TextBox_GotFocus"/>
|
|
<TextBlock Grid.Column="6" Text="{Binding Type}" Margin="30,0,0,0" Style="{StaticResource TextBlockStyle}"/>
|
|
</Grid>
|
|
|
|
<!-- Level 3 template leaves space for 1 child "Toggle" level -->
|
|
<HierarchicalDataTemplate.ItemTemplate>
|
|
<HierarchicalDataTemplate ItemsSource="{Binding SubItems}">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition SharedSizeGroup="Name"/>
|
|
<ColumnDefinition/>
|
|
<ColumnDefinition/>
|
|
<ColumnDefinition/>
|
|
<ColumnDefinition SharedSizeGroup="Toggle"/>
|
|
<ColumnDefinition SharedSizeGroup="Value"/>
|
|
<ColumnDefinition SharedSizeGroup="Type"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Grid.Column="0" Text="{Binding Name}" Style="{StaticResource TextBlockStyle}"/>
|
|
<TextBox Grid.Column="5" Style="{StaticResource TextBoxAsTextBlock}" Text="{Binding Value}" Margin="10,0,0,0" Focusable="{Binding IsFocusable}" GotFocus="TextBox_GotFocus"/>
|
|
<TextBlock Grid.Column="6" Text="{Binding Type}" Margin="30,0,0,0" Style="{StaticResource TextBlockStyle}"/>
|
|
</Grid>
|
|
|
|
<!-- Level 4 template has no children -->
|
|
<HierarchicalDataTemplate.ItemTemplate>
|
|
<HierarchicalDataTemplate ItemsSource="{Binding SubItems}">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition SharedSizeGroup="Name"/>
|
|
<ColumnDefinition/>
|
|
<ColumnDefinition/>
|
|
<ColumnDefinition/>
|
|
<ColumnDefinition/>
|
|
<ColumnDefinition SharedSizeGroup="Value"/>
|
|
<ColumnDefinition SharedSizeGroup="Type"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Grid.Column="0" Text="{Binding Name}" Style="{StaticResource TextBlockStyle}"/>
|
|
<TextBox Grid.Column="5" Style="{StaticResource TextBoxAsTextBlock}" Text="{Binding Value}" Margin="10,0,0,0" Focusable="{Binding IsFocusable}" GotFocus="TextBox_GotFocus"/>
|
|
<TextBlock Grid.Column="6" Text="{Binding Type}" Margin="30,0,0,0" Style="{StaticResource TextBlockStyle}"/>
|
|
</Grid>
|
|
</HierarchicalDataTemplate>
|
|
</HierarchicalDataTemplate.ItemTemplate>
|
|
</HierarchicalDataTemplate>
|
|
</HierarchicalDataTemplate.ItemTemplate>
|
|
</HierarchicalDataTemplate>
|
|
</HierarchicalDataTemplate.ItemTemplate>
|
|
</HierarchicalDataTemplate>
|
|
</HierarchicalDataTemplate.ItemTemplate>
|
|
</HierarchicalDataTemplate>
|
|
</TreeView.ItemTemplate>
|
|
</TreeView>
|
|
</Grid>
|
|
</Border>
|
|
</DockPanel>
|
|
</TabItem>
|
|
</TabControl>
|
|
|
|
</Grid>
|
|
</Window>
|