MainWindow.xaml 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <Window x:Class="TsViewer.MainWindow"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:local="clr-namespace:TsViewer"
  5. xmlns:ts="clr-namespace:MatrixIO.IO.MpegTs;assembly=MatrixIO.IO.MPEGTS"
  6. xmlns:Properties="clr-namespace:TsViewer.Properties"
  7. DataContext="{Binding RelativeSource={RelativeSource Self}}"
  8. Title="TsViewer"
  9. Height="{Binding MainWindow_Height, Source={x:Static Properties:Settings.Default}, Mode=TwoWay}"
  10. Width="{Binding MainWindow_Width, Source={x:Static Properties:Settings.Default}, Mode=TwoWay}">
  11. <Window.Resources>
  12. <Style TargetType="TreeViewItem">
  13. <Setter Property="IsExpanded" Value="true" />
  14. </Style>
  15. <HierarchicalDataTemplate x:Key="SourceNode" DataType="{x:Type local:TsSource}" ItemsSource="{Binding Path=Demuxer.Programs}">
  16. <StackPanel Orientation="Horizontal">
  17. <!--<Image Width="16" Height="16" Source="{Binding Converter={local:BoxToIconConverter}}"/>-->
  18. <TextBlock Text="{Binding}"/>
  19. </StackPanel>
  20. </HierarchicalDataTemplate>
  21. <HierarchicalDataTemplate x:Key="ProgramNode" DataType="{x:Type ts:TsProgram}" ItemsSource="{Binding Path=Streams}">
  22. <StackPanel Orientation="Horizontal">
  23. <!--<Image Width="16" Height="16" Source="{Binding Converter={local:BoxToIconConverter}}"/>-->
  24. <TextBlock Text="{Binding}"/>
  25. </StackPanel>
  26. </HierarchicalDataTemplate>
  27. <DataTemplate x:Key="StreamNode" DataType="{x:Type ts:TsStream}">
  28. <StackPanel Orientation="Horizontal">
  29. <!--<Image Width="16" Height="16" Source="{Binding Converter={local:BoxToIconConverter}}"/>-->
  30. <TextBlock Text="{Binding Path=Type}"/>
  31. <TextBlock Text=" (PID "/>
  32. <TextBlock Text="{Binding Path=PacketIdentifier}"/>
  33. <TextBlock Text=")"/>
  34. </StackPanel>
  35. </DataTemplate>
  36. <HierarchicalDataTemplate x:Key="Node" ItemsSource="{Binding}">
  37. <StackPanel Orientation="Horizontal">
  38. <!--<Image Width="16" Height="16" Source="{Binding Converter={local:BoxToIconConverter}}"/>-->
  39. <TextBlock Text="{Binding}"/>
  40. </StackPanel>
  41. </HierarchicalDataTemplate>
  42. <DataTemplate x:Key="Leaf">
  43. <StackPanel Orientation="Horizontal">
  44. <!--<Image Width="16" Height="16" Source="{Binding Converter={local:BoxToIconConverter}}"/>-->
  45. <TextBlock Text="{Binding}"/>
  46. </StackPanel>
  47. </DataTemplate>
  48. <local:TreeBoxDataTemplateSelector x:Key="TreeBoxSelector" Leaf="{StaticResource Leaf}" Node="{StaticResource Node}" SourceNode="{StaticResource SourceNode}" ProgramNode="{StaticResource ProgramNode}" StreamNode="{StaticResource StreamNode}"/>
  49. </Window.Resources>
  50. <Grid>
  51. <Grid.RowDefinitions>
  52. <RowDefinition Height="Auto"/>
  53. <RowDefinition Height="*"/>
  54. <RowDefinition Height="Auto"/>
  55. </Grid.RowDefinitions>
  56. <Grid.ColumnDefinitions>
  57. <ColumnDefinition Width="{Binding MainWindow_TreeWidth, Source={x:Static Properties:Settings.Default}, Mode=TwoWay}"/>
  58. <ColumnDefinition Width="*"/>
  59. </Grid.ColumnDefinitions>
  60. <Menu Grid.Row="0" Grid.ColumnSpan="2">
  61. <MenuItem Header="_File">
  62. <MenuItem Header="_Open File"/>
  63. <MenuItem Header="Open _Stream"/>
  64. </MenuItem>
  65. <MenuItem Header="_View">
  66. <MenuItem Header="_Log" Click="MenuItem_Log_Click"/>
  67. </MenuItem>
  68. <MenuItem Name="debugMenu" Header="_Debug" Visibility="Collapsed">
  69. <MenuItem Header="_Break" Click="MenuItem_Break_Click"/>
  70. </MenuItem>
  71. </Menu>
  72. <TreeView Grid.Row="1" Name="TreeView1" ItemsSource="{Binding Sources}" ItemTemplateSelector="{StaticResource TreeBoxSelector}" Margin="0,0,4,0"/>
  73. <GridSplitter Grid.Row="1" Width="4"/>
  74. <Grid Grid.Row="1" Grid.Column="1">
  75. <Grid.RowDefinitions>
  76. <RowDefinition Height="*"/>
  77. <RowDefinition Height="{Binding MainWindow_ContentHeight, Source={x:Static Properties:Settings.Default}, Mode=TwoWay}"/>
  78. </Grid.RowDefinitions>
  79. <ListView Grid.Row="0"/>
  80. <GridSplitter Grid.Row="1" Width="Auto" Height="4" ResizeDirection="Rows" HorizontalAlignment="Stretch" VerticalAlignment="Top" Margin="0"/>
  81. <ListView Grid.Row="1" Margin="0,4,0,0"/>
  82. </Grid>
  83. <StatusBar Grid.Row="2" Grid.ColumnSpan="2">
  84. <StatusBarItem>
  85. <TextBlock Name="statusBarBitrate" Text="Bitrate: 0.0bps"/>
  86. </StatusBarItem>
  87. <StatusBarItem>
  88. <TextBlock Name="statusBarPacketrate" Text="Packetrate: 0.0pps"/>
  89. </StatusBarItem>
  90. <StatusBarItem>
  91. <TextBlock Name="statusBarPacketsize" Text="Avg. Packet: 0.0B"/>
  92. </StatusBarItem>
  93. <StatusBarItem>
  94. <TextBlock Name="statusBarDroppedPackets" Text="Dropped Packets: 0.0"/>
  95. </StatusBarItem>
  96. <StatusBarItem>
  97. <TextBlock Name="statusBarProcessingTime" Text="Time/Packet: 0"/>
  98. </StatusBarItem>
  99. </StatusBar>
  100. </Grid>
  101. </Window>