<commit_before>﻿<Window x:Class="configuration.MainWindow"
        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:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
        xmlns:System="clr-namespace:System;assembly=mscorlib"
        xmlns:j="clr-namespace:EliteDangerousDataDefinitions;assembly=EliteDangerousDataDefinitions"
        xmlns:local="clr-namespace:configuration"
        mc:Ignorable="d"
        Title="EDDI Configuration" Height="600"  Width="800">
    <Window.Resources>
        <ObjectDataProvider x:Key="roleValues" MethodName="GetValues" ObjectType="{x:Type System:Enum}">
            <ObjectDataProvider.MethodParameters>
                <x:Type TypeName="j:ShipRole"/>
            </ObjectDataProvider.MethodParameters>
        </ObjectDataProvider>
    </Window.Resources>
    <DockPanel LastChildFill="True">
        <TabControl x:Name="tabControl" DockPanel.Dock="Top">
            <TabItem Header="EDDI">
                <DockPanel LastChildFill="True" Background="#FFE5E5E5">
                    <TextBlock x:Name="eddiText" DockPanel.Dock="Top" TextWrapping="Wrap" Margin="20" Text="EDDI has a number of features that can be configured separately.  Please click on each individual tab above to obtain an explanation of what it provides and how to configure it.  Once you have made changes here you will need to restart VoiceAttack for them to take effect.a" VerticalAlignment="Top"/>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                        <TextBlock x:Name ="eddi2Text" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" TextWrapping="Wrap" Margin="20" Text="You can provide the name of a particular system you consider home, and also a station inside that system if you want" VerticalAlignment="Top"/>
                        <Label x:Name ="eddiHomeSystemLabel" Grid.Row="1" Grid.Column="0" Content="Home system:" />
                        <TextBox x:Name ="eddiHomeSystemText" Grid.Row="1" Grid.Column="1" Margin="3" TextChanged="homeSystemChanged"/>
                        <Label x:Name ="eddiHomeStationLabel" Grid.Row="2" Grid.Column="0" Content="Home station:"/>
                        <TextBox x:Name ="eddiHomeStationText" Grid.Row="2" Grid.Column="1" Margin="3" TextChanged="homeStationChanged"/>
                        <TextBlock x:Name ="eddi3Text" Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" TextWrapping="Wrap" Margin="20" Text="Your insurance excess is the % of your ship's value you have to pay if your ship is destroyed.  This will usually be 5 but could be less if you are an early backer of Elite with alpha backers being 2.5 and beta backers being 3.75.  If you aren't sure then leave it at 5" VerticalAlignment="Top"/>
                        <Label x:Name ="eddiInsuranceLabel" Grid.Row="4" Grid.Column="0" Content="Insurance excess (%):"/>
                        <xctk:DecimalUpDown x:Name="eddiInsuranceDecimal" FormatString="F2" Increment=".25" Grid.Row="4" Grid.Column="1" Margin="3" ValueChanged="insuranceChanged"/>
                    </Grid>
                </DockPanel>
            </TabItem>
            <TabItem Header="Companion App">
                <DockPanel LastChildFill="True" Background="#FFE5E5E5">
                    <TextBlock DockPanel.Dock="Top" TextWrapping="Wrap" Margin="20" Text="The companion app is Frontier's API in to their data.  If you configure this you can obtain information about your commander, your ship and your stored ships.  Please note that if you purchased Elite: Dangerous Horizons as a standalone product and not as an expansion to Elite: Dangerous the companion app will not work for you." VerticalAlignment="Top"/>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                        <TextBlock x:Name ="companionAppText" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" TextWrapping="Wrap" Margin="20" Text="You do not have a connection to the companion app at this time.  Please enter your Elite: Dangerous email address and password below" VerticalAlignment="Top"/>
                        <Label x:Name ="companionAppEmailLabel" Grid.Row="1" Grid.Column="0" Content="Email:"/>
                        <TextBox x:Name ="companionAppEmailText" Grid.Row="1" Grid.Column="1" Margin="3" />
                        <Label x:Name ="companionAppPasswordLabel" Grid.Row="2" Grid.Column="0" Content="Password:"/>
                        <PasswordBox x:Name ="companionAppPasswordText" Grid.Row="2" Grid.Column="1" Margin="3" />
                        <Button  x:Name="companionAppNextButton" Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" Content="Next" Margin="10" Click="companionAppNextClicked"/>
                        <Label x:Name ="companionAppCodeLabel" Visibility="Hidden" Grid.Row="1" Grid.Column="0" Content="Code:"/>
                        <TextBox x:Name ="companionAppCodeText" Visibility="Hidden" Grid.Row="1" Grid.Column="1" Margin="3" />
                    </Grid>
                </DockPanel>
            </TabItem>
            <TabItem Header="Netlog Monitor">
                <DockPanel LastChildFill="True" Background="#FFE5E5E5">
                    <TextBlock x:Name="netlogText" DockPanel.Dock="Top" TextWrapping="Wrap" Margin="20" Text="The netlog monitor reads a file written by Elite and uses information in it to provide system information." VerticalAlignment="Top"/>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                        <TextBlock x:Name="netLogText" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" TextWrapping="Wrap" Margin="20" Text="To configure netlog monitoring you need to provide the path to your Elite: Dangerous product log.  This is commonly in C:\Program Files (x86)\Elite\Products\elite-dangerous-64\Logs but might be in a different location if you have installed Elite through Steam or in a non-standard location" VerticalAlignment="Top"/>
                        <Label Grid.Row="1" Grid.Column="0" Content="Product Logs directory"/>
                        <TextBox x:Name="netLogPathTextBox" Grid.Row="1" Grid.Column="1" Margin="3" TextChanged="netLogPathChanged" />
                        <TextBlock Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" TextWrapping="Wrap" Margin="20" Text="If you are unsure of where the directory is you can start Elite: Dangerous then come back to this window and hit the 'Obtain' button below" VerticalAlignment="Top" />
                        <Button Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" x:Name="obtainButton" Content="Obtain" Margin="10" Click="netLogObtainClicked"/>
                    </Grid>
                </DockPanel>
            </TabItem>
            <TabItem Header="EDSM">
                <DockPanel LastChildFill="True" Background="#FFE5E5E5">
                    <TextBlock x:Name="edsmText" DockPanel.Dock="Top" TextWrapping="Wrap" Margin="20" Text="EDSM is a third-party tool that provides information on the locations of star systems and keeps a log of the star systems you have visited.  It uses the data provided to crowd-source a map of the galaxy." VerticalAlignment="Top"/>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                        <TextBlock Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" TextWrapping="Wrap" Margin="20" Text="To connect to EDSM you need to have registered an account with them.  Once you have done this you can obtain your API key by clicking on your portrait in the top-right corner of the screen and selecting 'My API Key'" VerticalAlignment="Top"/>
                        <Label Grid.Row="1" Grid.Column="0" Content="EDSM API key"/>
                        <TextBox x:Name="edsmApiKeyTextBox" Grid.Row="1" Grid.Column="1" Margin="3" TextChanged="edsmApiKeyChanged"/>
                        <TextBlock Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" TextWrapping="Wrap" Margin="20" Text="If you registered a different commander name to your actual one, or you have not enabled the companion app, please enter your commander name below" VerticalAlignment="Top"/>
                        <Label Grid.Row="3" Grid.Column="0" Content="EDSM Commander name"/>
                        <TextBox x:Name="edsmCommanderNameTextBox" Grid.Row="3" Grid.Column="1" Margin="3" TextChanged="edsmCommanderNameChanged"/>
                    </Grid>
                </DockPanel>
            </TabItem>
            <TabItem Header="Shipyard">
                <DockPanel LastChildFill="True" Background="#FFE5E5E5">
                    <TextBlock x:Name="shipyardText" DockPanel.Dock="Top" TextWrapping="Wrap" Margin="20" Text="This allows you to set names and callsigns for your ships.  The information is made available in VoiceAttack for use by scripts.  Please note that for this feature to work the companion app needs to be configured" VerticalAlignment="Top"/>
                    <DataGrid AutoGenerateColumns="False" x:Name="shipyardData" CanUserAddRows="false" TargetUpdated="shipYardUpdated">
                        <DataGrid.Columns>
                            <DataGridTextColumn IsReadOnly="True" Header="Model" Binding="{Binding Path=Model}"></DataGridTextColumn>
                            <DataGridTextColumn IsReadOnly="True" Header="In Storage At" Binding="{Binding Path=StarSystem}"></DataGridTextColumn>
                            <DataGridComboBoxColumn x:Name ="Role" Header="Role" SelectedItemBinding="{Binding Path=Role,  NotifyOnTargetUpdated=True, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" ItemsSource="{Binding Source={StaticResource roleValues}}"></DataGridComboBoxColumn>
                            <DataGridTextColumn Header="Name" Width="*" Binding="{Binding Path=Name,  NotifyOnTargetUpdated=True, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"></DataGridTextColumn>
                            <DataGridTextColumn IsReadOnly="True" Header="Callsign" MinWidth="40" Binding="{Binding Path=CallSign}"></DataGridTextColumn>
                        </DataGrid.Columns>
                    </DataGrid>
                </DockPanel>
            </TabItem>
        </TabControl>
    </DockPanel><commit_msg>Add Text-to-Speech Tab<commit_after>﻿<Window x:Class="configuration.MainWindow"
        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:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
        xmlns:System="clr-namespace:System;assembly=mscorlib"
        xmlns:j="clr-namespace:EliteDangerousDataDefinitions;assembly=EliteDangerousDataDefinitions"
        xmlns:local="clr-namespace:configuration"
        mc:Ignorable="d"
        Title="EDDI Configuration" Height="600"  Width="800">
    <Window.Resources>
        <ObjectDataProvider x:Key="roleValues" MethodName="GetValues" ObjectType="{x:Type System:Enum}">
            <ObjectDataProvider.MethodParameters>
                <x:Type TypeName="j:ShipRole"/>
            </ObjectDataProvider.MethodParameters>
        </ObjectDataProvider>
    </Window.Resources>
    <DockPanel LastChildFill="True">
        <TabControl x:Name="tabControl" DockPanel.Dock="Top">
            <TabItem Header="EDDI">
                <DockPanel LastChildFill="True" Background="#FFE5E5E5">
                    <TextBlock x:Name="eddiText" DockPanel.Dock="Top" TextWrapping="Wrap" Margin="20" Text="EDDI has a number of features that can be configured separately.  Please click on each individual tab above to obtain an explanation of what it provides and how to configure it.  Once you have made changes here you will need to restart VoiceAttack for them to take effect.a" VerticalAlignment="Top"/>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                        <TextBlock x:Name ="eddi2Text" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" TextWrapping="Wrap" Margin="20" Text="You can provide the name of a particular system you consider home, and also a station inside that system if you want" VerticalAlignment="Top"/>
                        <Label x:Name ="eddiHomeSystemLabel" Grid.Row="1" Grid.Column="0" Content="Home system:" />
                        <TextBox x:Name ="eddiHomeSystemText" Grid.Row="1" Grid.Column="1" Margin="3" TextChanged="homeSystemChanged"/>
                        <Label x:Name ="eddiHomeStationLabel" Grid.Row="2" Grid.Column="0" Content="Home station:"/>
                        <TextBox x:Name ="eddiHomeStationText" Grid.Row="2" Grid.Column="1" Margin="3" TextChanged="homeStationChanged"/>
                        <TextBlock x:Name ="eddi3Text" Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" TextWrapping="Wrap" Margin="20" Text="Your insurance excess is the % of your ship's value you have to pay if your ship is destroyed.  This will usually be 5 but could be less if you are an early backer of Elite with alpha backers being 2.5 and beta backers being 3.75.  If you aren't sure then leave it at 5" VerticalAlignment="Top"/>
                        <Label x:Name ="eddiInsuranceLabel" Grid.Row="4" Grid.Column="0" Content="Insurance excess (%):"/>
                        <xctk:DecimalUpDown x:Name="eddiInsuranceDecimal" FormatString="F2" Increment=".25" Grid.Row="4" Grid.Column="1" Margin="3" ValueChanged="insuranceChanged"/>
                    </Grid>
                </DockPanel>
            </TabItem>
            <TabItem Header="Companion App">
                <DockPanel LastChildFill="True" Background="#FFE5E5E5">
                    <TextBlock DockPanel.Dock="Top" TextWrapping="Wrap" Margin="20" Text="The companion app is Frontier's API in to their data.  If you configure this you can obtain information about your commander, your ship and your stored ships.  Please note that if you purchased Elite: Dangerous Horizons as a standalone product and not as an expansion to Elite: Dangerous the companion app will not work for you." VerticalAlignment="Top"/>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                        <TextBlock x:Name ="companionAppText" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" TextWrapping="Wrap" Margin="20" Text="You do not have a connection to the companion app at this time.  Please enter your Elite: Dangerous email address and password below" VerticalAlignment="Top"/>
                        <Label x:Name ="companionAppEmailLabel" Grid.Row="1" Grid.Column="0" Content="Email:"/>
                        <TextBox x:Name ="companionAppEmailText" Grid.Row="1" Grid.Column="1" Margin="3" />
                        <Label x:Name ="companionAppPasswordLabel" Grid.Row="2" Grid.Column="0" Content="Password:"/>
                        <PasswordBox x:Name ="companionAppPasswordText" Grid.Row="2" Grid.Column="1" Margin="3" />
                        <Button  x:Name="companionAppNextButton" Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" Content="Next" Margin="10" Click="companionAppNextClicked"/>
                        <Label x:Name ="companionAppCodeLabel" Visibility="Hidden" Grid.Row="1" Grid.Column="0" Content="Code:"/>
                        <TextBox x:Name ="companionAppCodeText" Visibility="Hidden" Grid.Row="1" Grid.Column="1" Margin="3" />
                    </Grid>
                </DockPanel>
            </TabItem>
            <TabItem Header="Netlog Monitor">
                <DockPanel LastChildFill="True" Background="#FFE5E5E5">
                    <TextBlock x:Name="netlogText" DockPanel.Dock="Top" TextWrapping="Wrap" Margin="20" Text="The netlog monitor reads a file written by Elite and uses information in it to provide system information." VerticalAlignment="Top"/>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                        <TextBlock x:Name="netLogText" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" TextWrapping="Wrap" Margin="20" Text="To configure netlog monitoring you need to provide the path to your Elite: Dangerous product log.  This is commonly in C:\Program Files (x86)\Elite\Products\elite-dangerous-64\Logs but might be in a different location if you have installed Elite through Steam or in a non-standard location" VerticalAlignment="Top"/>
                        <Label Grid.Row="1" Grid.Column="0" Content="Product Logs directory"/>
                        <TextBox x:Name="netLogPathTextBox" Grid.Row="1" Grid.Column="1" Margin="3" TextChanged="netLogPathChanged" />
                        <TextBlock Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" TextWrapping="Wrap" Margin="20" Text="If you are unsure of where the directory is you can start Elite: Dangerous then come back to this window and hit the 'Obtain' button below" VerticalAlignment="Top" />
                        <Button Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" x:Name="obtainButton" Content="Obtain" Margin="10" Click="netLogObtainClicked"/>
                    </Grid>
                </DockPanel>
            </TabItem>
            <TabItem Header="EDSM">
                <DockPanel LastChildFill="True" Background="#FFE5E5E5">
                    <TextBlock x:Name="edsmText" DockPanel.Dock="Top" TextWrapping="Wrap" Margin="20" Text="EDSM is a third-party tool that provides information on the locations of star systems and keeps a log of the star systems you have visited.  It uses the data provided to crowd-source a map of the galaxy." VerticalAlignment="Top"/>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                        <TextBlock Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" TextWrapping="Wrap" Margin="20" Text="To connect to EDSM you need to have registered an account with them.  Once you have done this you can obtain your API key by clicking on your portrait in the top-right corner of the screen and selecting 'My API Key'" VerticalAlignment="Top"/>
                        <Label Grid.Row="1" Grid.Column="0" Content="EDSM API key"/>
                        <TextBox x:Name="edsmApiKeyTextBox" Grid.Row="1" Grid.Column="1" Margin="3" TextChanged="edsmApiKeyChanged"/>
                        <TextBlock Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" TextWrapping="Wrap" Margin="20" Text="If you registered a different commander name to your actual one, or you have not enabled the companion app, please enter your commander name below" VerticalAlignment="Top"/>
                        <Label Grid.Row="3" Grid.Column="0" Content="EDSM Commander name"/>
                        <TextBox x:Name="edsmCommanderNameTextBox" Grid.Row="3" Grid.Column="1" Margin="3" TextChanged="edsmCommanderNameChanged"/>
                    </Grid>
                </DockPanel>
            </TabItem>
            <TabItem Header="Shipyard">
                <DockPanel LastChildFill="True" Background="#FFE5E5E5">
                    <TextBlock x:Name="shipyardText" DockPanel.Dock="Top" TextWrapping="Wrap" Margin="20" Text="This allows you to set names and callsigns for your ships.  The information is made available in VoiceAttack for use by scripts.  Please note that for this feature to work the companion app needs to be configured" VerticalAlignment="Top"/>
                    <DataGrid AutoGenerateColumns="False" x:Name="shipyardData" CanUserAddRows="false" TargetUpdated="shipYardUpdated">
                        <DataGrid.Columns>
                            <DataGridTextColumn IsReadOnly="True" Header="Model" Binding="{Binding Path=Model}"></DataGridTextColumn>
                            <DataGridTextColumn IsReadOnly="True" Header="In Storage At" Binding="{Binding Path=StarSystem}"></DataGridTextColumn>
                            <DataGridComboBoxColumn x:Name ="Role" Header="Role" SelectedItemBinding="{Binding Path=Role,  NotifyOnTargetUpdated=True, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" ItemsSource="{Binding Source={StaticResource roleValues}}"></DataGridComboBoxColumn>
                            <DataGridTextColumn Header="Name" Width="*" Binding="{Binding Path=Name,  NotifyOnTargetUpdated=True, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"></DataGridTextColumn>
                            <DataGridTextColumn IsReadOnly="True" Header="Callsign" MinWidth="40" Binding="{Binding Path=CallSign}"></DataGridTextColumn>
                        </DataGrid.Columns>
                    </DataGrid>
                </DockPanel>
            </TabItem>
            <TabItem Header="Text-to-Speech">
                <DockPanel LastChildFill="True" Background="#FFE5E5E5">
                    <TextBlock x:Name="ttsText" DockPanel.Dock="Top" TextWrapping="Wrap" Margin="20" Text="EDDI has a Text-to-Speech feature Using SSML, to make your Texts more immersive. It is adding ambient effects specific to your ships cockpit design." />
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="auto" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="auto" />
                        </Grid.RowDefinitions>
                        <Label x:Name="ttsVoiceLabel" Grid.Column="0" Grid.Row="0" Content="Standard Voice:" />
                        <ComboBox x:Name="ttsVoiceDropDown" DisplayMemberPath="Name" Margin="3" Grid.Column="1" Grid.Row="0" />
                    </Grid>
                </DockPanel>
            </TabItem>
        </TabControl>
    </DockPanel>
{'fraction_non_alphanumeric': 0.11297199708062844, 'fraction_numerical': 0.012292090807820844, 'mean_word_length': 2.2320297951582866, 'pattern_counts': {'":': 0, '<': 273, '<?xml version=': 0, '>': 273, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 18}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3840508', 'n_tokens_mistral': 6940, 'n_tokens_neox': 6491, 'n_words': 1737}