Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
154 changes: 108 additions & 46 deletions src/ProcessBus.App.Wpf/MainWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@
</Style>

<Style x:Key="PremiumWorkspaceHeroStyle" TargetType="Border">
<Setter Property="Padding" Value="18,14"/>
<Setter Property="Padding" Value="16,12"/>
<Setter Property="BorderBrush" Value="#28618F"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="CornerRadius" Value="12"/>
Expand All @@ -94,7 +94,7 @@
</Style>

<Style x:Key="PremiumWorkspacePanelStyle" TargetType="Border">
<Setter Property="Padding" Value="16"/>
<Setter Property="Padding" Value="14"/>
<Setter Property="Background" Value="#0A1A2A"/>
<Setter Property="BorderBrush" Value="#21496A"/>
<Setter Property="BorderThickness" Value="1"/>
Expand All @@ -112,16 +112,16 @@
</Style>

<Style x:Key="PremiumInspectorPanelStyle" TargetType="Border" BasedOn="{StaticResource PremiumWorkspacePanelStyle}">
<Setter Property="Background" Value="#081827"/>
<Setter Property="BorderBrush" Value="#2A5578"/>
<Setter Property="Background" Value="#0A1A2A"/>
<Setter Property="BorderBrush" Value="#21496A"/>
</Style>

<Style x:Key="PremiumSectionCardStyle" TargetType="Border">
<Setter Property="Padding" Value="12"/>
<Setter Property="Background" Value="#0B1C2D"/>
<Setter Property="BorderBrush" Value="#1F4566"/>
<Setter Property="BorderBrush" Value="#193851"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="CornerRadius" Value="10"/>
<Setter Property="CornerRadius" Value="9"/>
</Style>

<Style x:Key="CompactExplorerCardStyle" TargetType="Border">
Expand Down Expand Up @@ -201,7 +201,7 @@
FontWeight="SemiBold"
Foreground="{StaticResource TextPrimaryBrush}"/>

<TextBlock Text="IEC 61850 SV / GOOSE / PTP Workspace"
<TextBlock Text="IEC 61850 · SV / GOOSE / PTP"
Margin="0,2,0,0"
FontSize="11"
Foreground="#7FA8CC"/>
Expand All @@ -211,12 +211,12 @@
<!-- Workspace selector: web-modern segmented control / Blue Pill Effect -->
<Border Grid.Column="2"
Style="{StaticResource WorkspaceSegmentHostStyle}"
HorizontalAlignment="center"
HorizontalAlignment="Left"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Keep the workspace rail clear of capture controls

At the default 1600-DIP window width—and more severely at the 1240-DIP minimum—the seven fixed-width workspace buttons require about 990 DIPs, but this star column receives only the space left after the product identity and roughly 560-DIP capture-control stack. Changing the rail from centered to left-aligned pushes its overflow entirely into column 3, where the later-declared adapter and run controls render and hit-test over the Validation and Advanced buttons. The new margin on the capture stack further reduces the star column rather than reserving space after the rail; this needs responsive button sizing/wrapping or a layout that actually allocates both groups their required widths.

Useful? React with 👍 / 👎.

VerticalAlignment="Center">
<Grid x:Name="WorkspaceSegmentRail"
ClipToBounds="True">
<Border x:Name="WorkspaceActivePill"
Width="136"
Width="116"
Height="38"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Expand Down Expand Up @@ -350,13 +350,15 @@
</Grid>
</Border>

<!-- Global capture controls: adapter + run/stop/clear live in the most actionable header area. -->
<!-- Fixed 20-DIP breathing room between the workspace switcher and adapter.
Never let the tab pill visually merge into the adapter frame. -->
<StackPanel Grid.Column="3"
Margin="20,0,0,0"
Orientation="Horizontal"
VerticalAlignment="Center"
HorizontalAlignment="Right">

<ComboBox Width="300"
<ComboBox Width="250"
Style="{StaticResource ToolbarAdapterComboBoxStyle}"
IsEnabled="{Binding IsRunning, Converter={StaticResource InverseBooleanConverter}}"
ItemsSource="{Binding Adapters}"
Expand Down Expand Up @@ -2360,8 +2362,8 @@
<TextBlock DockPanel.Dock="Left" Text="Power estimate"
Foreground="#A6CBE3" FontSize="11"
FontWeight="SemiBold"/>
<TextBlock DockPanel.Dock="Right" Text="UNVERIFIED"
Foreground="#D4B36C" FontSize="9.5"
<TextBlock DockPanel.Dock="Right" Text="Nominal scale"
Foreground="#90B5D0" FontSize="9.5"
ToolTip="{Binding EngineeringScaleExplanation}"/>
</DockPanel>
<UniformGrid Columns="4">
Expand Down Expand Up @@ -2661,11 +2663,11 @@
<StackPanel>
<TextBlock Text="CLOCK LOCK" Foreground="#91B3CF"
FontSize="10.5" FontWeight="SemiBold"/>
<TextBlock Text="UNVERIFIED"
<TextBlock Text="NOT MEASURED"
Foreground="#F4C66D"
FontSize="17" FontWeight="SemiBold"
Margin="0,8,0,5" TextTrimming="CharacterEllipsis"/>
<TextBlock Text="Passive observation only"
<TextBlock Text="Clock lock not inferred from packets"
Foreground="#A7C2D9" FontSize="11"
TextTrimming="CharacterEllipsis"/>
</StackPanel>
Expand Down Expand Up @@ -3148,26 +3150,14 @@
</Style>
</Border.Style>
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center"
MaxWidth="405">
<TextBlock Text="No GOOSE events in this view"
Foreground="#E6F3FF" FontSize="16"
MaxWidth="390">
<TextBlock Text="No GOOSE state changes"
Foreground="#E5F2FF" FontSize="15"
FontWeight="SemiBold" TextAlignment="Center"/>
<TextBlock Margin="0,9,0,0" TextAlignment="Center" TextWrapping="Wrap"
Foreground="#9FC0DC" FontSize="12"
Text="Listening for GOOSE state changes. An empty event list does not prove the publisher is offline."/>
<Border Margin="0,18,0,0" Background="#0D2236" CornerRadius="8"
Padding="14,12">
<StackPanel>
<TextBlock Text="CHECK THE CAPTURE PATH"
Foreground="#8CC7F2" FontWeight="SemiBold" FontSize="10.5"/>
<TextBlock Margin="0,6,0,0" TextWrapping="Wrap"
Foreground="#BFD5E8" FontSize="11.5"
Text="Verify capture adapter and SPAN/TAP VLAN visibility. Confirm that the IED is publishing GOOSE and that the current filters include its goID."/>
<TextBlock Margin="0,8,0,0" TextWrapping="Wrap"
Foreground="#84A8C6" FontSize="11"
Text="Tip: this timeline defaults to state changes; retransmissions can be inspected through the left-side toggle."/>
</StackPanel>
</Border>
<TextBlock Margin="0,8,0,0" TextAlignment="Center" TextWrapping="Wrap"
Foreground="#A6C4DB" FontSize="11.5"
Text="Check publisher and VLAN visibility, or enable retransmissions."
ToolTip="An empty state-change view does not prove the publisher is offline. Confirm the adapter, SPAN/TAP path, VLAN and goID filters."/>
</StackPanel>
</Border>
</Grid>
Expand All @@ -3187,13 +3177,36 @@
Foreground="#7FA8CC"
FontSize="11"
Margin="0,3,0,14"/>
<TextBlock Text="Select a GOOSE event to inspect publisher identity, network and values."
Foreground="#9FC0DA" FontSize="11.5" TextWrapping="Wrap"
Margin="0,12,0,0">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedGooseTrafficRow}" Value="{x:Null}">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>

<Border Padding="13"
Background="#081827"
BorderBrush="#1B344F"
<Border Padding="12"
Background="#0B1C2D"
BorderBrush="#1A3852"
BorderThickness="1"
CornerRadius="12"
CornerRadius="9"
Margin="0,0,0,12">
<Border.Style>
<Style TargetType="Border">
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedGooseTrafficRow}" Value="{x:Null}">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="112"/>
Expand Down Expand Up @@ -3223,12 +3236,21 @@
</Grid>
</Border>

<Border Padding="13"
Background="#081827"
BorderBrush="#1B344F"
<Border Padding="12"
Background="#0B1C2D"
BorderBrush="#1A3852"
BorderThickness="1"
CornerRadius="12"
CornerRadius="9"
Margin="0,0,0,12">
<Border.Style>
<Style TargetType="Border">
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedGooseTrafficRow}" Value="{x:Null}">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<StackPanel>
<TextBlock Text="Communication / Network"
Foreground="#F4FAFF"
Expand Down Expand Up @@ -3281,11 +3303,20 @@
</StackPanel>
</Border>

<Border Padding="13"
Background="#081827"
BorderBrush="#1B344F"
<Border Padding="12"
Background="#0B1C2D"
BorderBrush="#1A3852"
BorderThickness="1"
CornerRadius="12">
CornerRadius="9">
<Border.Style>
<Style TargetType="Border">
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedGooseTrafficRow}" Value="{x:Null}">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<StackPanel>
<DockPanel Margin="0,0,0,10">
<TextBlock DockPanel.Dock="Left"
Expand Down Expand Up @@ -4286,6 +4317,37 @@
</Grid>
</Border>
</Grid>

<!-- P1: avoid showing three enormous empty data-grids before any SCL
document is loaded. Live capture continues independently. -->
<Border Grid.Row="2" Background="#0A1A2A"
BorderBrush="#21496A" BorderThickness="1"
CornerRadius="10" Padding="24">
<Border.Style>
<Style TargetType="Border">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding HasSclProject}" Value="False">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<StackPanel HorizontalAlignment="Center"
VerticalAlignment="Center" MaxWidth="440">
<TextBlock Text="Import SCL to compare streams"
TextAlignment="Center" FontSize="15"
FontWeight="SemiBold" Foreground="#EAF6FF"/>
<TextBlock Margin="0,8,0,0"
Text="SCD, CID, ICD and IID files provide the expected publisher identity and DataSet order."
TextWrapping="Wrap" TextAlignment="Center"
FontSize="11.5" Foreground="#A2C3DE"/>
<TextBlock Margin="0,6,0,0"
Text="Live capture continues in Analyzer and Diagnostics."
TextAlignment="Center" FontSize="11"
Foreground="#88AAC5"/>
</StackPanel>
</Border>
</Grid>
</TabItem>

Expand Down
2 changes: 1 addition & 1 deletion src/ProcessBus.App.Wpf/Themes/Controls.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -464,7 +464,7 @@
<Setter Property="Foreground" Value="#B8C8D9"/>
<Setter Property="FontWeight" Value="SemiBold"/>
<Setter Property="FontSize" Value="12"/>
<Setter Property="Width" Value="136"/>
<Setter Property="Width" Value="112"/>
<Setter Property="Height" Value="38"/>
<Setter Property="Margin" Value="2,0"/>
<Setter Property="Padding" Value="14,0"/>
Expand Down
Loading
Loading