• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ParadoxGameConverters / Fronter.NET / 22321902429

23 Feb 2026 07:39PM UTC coverage: 22.788% (-0.1%) from 22.889%
22321902429

push

github

web-flow
Button for cancelling a conversion in progress (#954)

* Button for cancelling a conversion in progress

* Fix warning about LaunchConverter being too long

* Fix for CodeFactor

144 of 776 branches covered (18.56%)

Branch coverage included in aggregate %.

7 of 62 new or added lines in 4 files covered. (11.29%)

2 existing lines in 2 files now uncovered.

737 of 3090 relevant lines covered (23.85%)

9.93 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/Fronter.NET/Views/MainWindow.axaml
1
<!-- ReSharper disable once InconsistentNaming -->
2
<Window xmlns="https://github.com/avaloniaui"
×
3
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
5
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
6
        xmlns:viewModels="clr-namespace:Fronter.ViewModels"
7
        xmlns:views="clr-namespace:Fronter.Views"
8
        xmlns:ns="clr-namespace:Fronter.Extensions"
9
        xmlns:vc="clr-namespace:Fronter.ValueConverters"
10
        xmlns:log4netCore="clr-namespace:log4net.Core;assembly=log4net"
11
        xmlns:models="clr-namespace:Fronter.Models"
12
        xmlns:controls="clr-namespace:Avalonia.Notification.Controls;assembly=Notification.Avalonia"
13
        mc:Ignorable="d" d:DesignWidth="710" d:DesignHeight="400"
14
        x:DataType="viewModels:MainWindowViewModel"
15
        x:Class="Fronter.Views.MainWindow"
16
        Icon="/Assets/converter.ico"
×
17
        Title="{Binding WindowTitle}"
×
18
        MinWidth="710"
19
        
20
        ExtendClientAreaToDecorationsHint="False">
×
21

22
    <Design.DataContext>
23
        <viewModels:MainWindowViewModel />
24
    </Design.DataContext>
25
    <Window.Resources>
NEW
26
        <vc:BooleanNegationConverter x:Key="InverseBool" />
×
27
    </Window.Resources>
28

29
    <DockPanel>
×
30
        <DockPanel.Background>
31
            <ImageBrush Source="/Assets/Images/background.png" Stretch="UniformToFill" Opacity="0.18" />
×
32
        </DockPanel.Background>
33
        <Menu DockPanel.Dock="Top">
×
34
            <MenuItem Header="{ns:Loc MENUCONVERTER}">
×
35
                <MenuItem
×
36
                    Header="{ns:Loc CHECKFORUPDATES}"
×
37
                    Command="{Binding CheckForUpdates}"
×
38
                    IsVisible="{Binding Config.UpdateCheckerEnabled}"
×
39
                    />
40
                <Separator/>
×
41
                <MenuItem Header="{ns:Loc EXIT}" Command="{Binding Exit}"/>
×
42
            </MenuItem>
43
            
44
            <MenuItem Header="{ns:Loc LANGUAGE}" ItemsSource="{Binding LanguageMenuItems}">
×
45
                <MenuItem.ItemContainerTheme>
46
                    <ControlTheme TargetType="MenuItem" BasedOn="{StaticResource {x:Type MenuItem}}" x:DataType="viewModels:MenuItemViewModel">
×
47
                        <Setter Property="Header" Value="{Binding Header}"/>
×
48
                        <Setter Property="Command" Value="{Binding Command}"/>
×
49
                        <Setter Property="CommandParameter" Value="{Binding CommandParameter}"/>
×
50
                    </ControlTheme>
51
                </MenuItem.ItemContainerTheme>
52
            </MenuItem>
53
            
54
            <MenuItem Header="{ns:Loc MENU_THEME}" ItemsSource="{Binding ThemeMenuItems}">
×
55
                <MenuItem.ItemContainerTheme>
56
                    <ControlTheme TargetType="MenuItem" BasedOn="{StaticResource {x:Type MenuItem}}" x:DataType="viewModels:MenuItemViewModel">
×
57
                        <Setter Property="Header" Value="{Binding Header}"/>
×
58
                        <Setter Property="Command" Value="{Binding Command}"/>
×
59
                        <Setter Property="CommandParameter" Value="{Binding CommandParameter}"/>
×
60
                    </ControlTheme>
61
                </MenuItem.ItemContainerTheme>
62
            </MenuItem>
63
                
64
            <MenuItem Header="{ns:Loc MENU_HELP}">
×
65
                <MenuItem Header="{ns:Loc ABOUT}" Command="{Binding OpenAboutDialog}"/>
×
66
                <MenuItem Header="{ns:Loc SUPPORT_US}" Command="{Binding OpenPatreonPage}"/>
×
67
            </MenuItem>
68
        </Menu>
69
        
70
        <Grid RowDefinitions="6*, 4, 4*" DockPanel.Dock="Bottom">
×
71
            <Border Grid.Column="0" Grid.Row="0" ZIndex="1000">
×
72
                <controls:NotificationMessageContainer 
×
73
                    Manager="{Binding NotificationManager}"
×
74
                />
75
            </Border>
76

77
            <TabControl Grid.Column="0" Grid.Row="0" MinHeight="150">
×
78
                <TabItem Header="{ns:Loc PATHSTAB}" VerticalContentAlignment="Center">
×
79
                    <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" MinHeight="150">
×
80
                        <views:PathPickerView DataContext="{Binding PathPicker}"/>
×
81
                    </ScrollViewer>
82
                </TabItem>
83
                
84
                <TabItem Header="{ns:Loc TARGET_PLAYSET_TAB}" VerticalContentAlignment="Center" IsVisible="{Binding TargetPlaysetPickerTabVisible}">
×
85
                    <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" MinHeight="150">
×
86
                        <views:TargetPlaysetPickerView DataContext="{Binding TargetPlaysetPicker}"/>
×
87
                    </ScrollViewer>
88
                </TabItem>
89
                
90
                <TabItem Header="{ns:Loc OPTIONSTAB}" VerticalContentAlignment="Center" IsVisible="{Binding OptionsTabVisible}">
×
91
                    <ScrollViewer VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Auto" MinHeight="150">
×
92
                        <views:OptionsView DataContext="{Binding Options}" />
×
93
                    </ScrollViewer>
94
                </TabItem>
95
                
96
                <TabItem Header="{ns:Loc CONVERTTAB}" VerticalContentAlignment="Center">
×
97
                    <Grid ColumnDefinitions="1*,2*" RowDefinitions="Auto" Margin="5,15,5,10" MinHeight="150">
×
98
                        <StackPanel Grid.Row="0" Grid.Column="0">
×
99
                            <TextBlock Text="{ns:Loc LOGLEVEL}" HorizontalAlignment="Left" VerticalAlignment="Center"/>
×
100
                            
101
                            <RadioButton IsChecked="{Binding Path=LogFilterLevel, FallbackValue=False, Mode=OneWay, Converter={x:Static vc:EnumToBooleanConverter.Instance}, ConverterParameter={x:Static log4netCore:Level.Error}}"
×
102
                                         Command="{Binding ToggleLogFilterLevelCommand}"
×
103
                                         CommandParameter="Error"
×
104
                                         VerticalContentAlignment="Center"
105
                                         Content="{ns:Loc LOGLEVEL0}"
×
106
                                         Margin="1">
107
                            </RadioButton>
108
                            <RadioButton IsChecked="{Binding Path=LogFilterLevel, FallbackValue=False, Mode=OneWay, Converter={x:Static vc:EnumToBooleanConverter.Instance}, ConverterParameter={x:Static log4netCore:Level.Warn}}"
×
109
                                         Command="{Binding ToggleLogFilterLevelCommand}"
×
110
                                         CommandParameter="Warn"
×
111
                                         VerticalContentAlignment="Center"
112
                                         Content="{ns:Loc LOGLEVEL1}"
×
113
                                         Margin="1">
114
                            </RadioButton>
115
                            <RadioButton IsChecked="{Binding Path=LogFilterLevel, FallbackValue=False, Mode=OneWay, Converter={x:Static vc:EnumToBooleanConverter.Instance}, ConverterParameter={x:Static log4netCore:Level.Info}}"
×
116
                                         Command="{Binding ToggleLogFilterLevelCommand}"
×
117
                                         CommandParameter="Info"
×
118
                                         VerticalContentAlignment="Center"
119
                                         Content="{ns:Loc LOGLEVEL2}"
×
120
                                         Margin="1">
121
                            </RadioButton>
122
                            <RadioButton IsChecked="{Binding Path=LogFilterLevel, FallbackValue=False, Mode=OneWay, Converter={x:Static vc:EnumToBooleanConverter.Instance}, ConverterParameter={x:Static log4netCore:Level.Debug}}"
×
123
                                         Command="{Binding ToggleLogFilterLevelCommand}"
×
124
                                         CommandParameter="Debug"
×
125
                                         VerticalContentAlignment="Center"
126
                                         Content="{ns:Loc LOGLEVEL3}"
×
127
                                         Margin="1">
128
                            </RadioButton>
129
                        </StackPanel>
130
                        
131
                        <StackPanel Grid.Row="0" Grid.Column="1" Orientation="Vertical" >
×
132
                            <Grid ColumnDefinitions="1.8*, 1*" RowDefinitions="1*,1*,1*" Margin="10, 4, 0, 4">
×
133
                                <TextBlock Grid.Row="0" Grid.Column="0" Text="{ns:Loc CONVERTSAVING}"></TextBlock>
×
134
                                <TextBlock Grid.Row="0" Grid.Column="1" Text="{ns:DynamicLoc SaveStatus}"></TextBlock>
×
135
                                
136
                                <TextBlock Grid.Row="1" Grid.Column="0" Text="{ns:Loc CONVERTCONVERTING}"></TextBlock>
×
137
                                <TextBlock Grid.Row="1" Grid.Column="1" Text="{ns:DynamicLoc ConvertStatus}"></TextBlock>
×
138
                                
139
                                <TextBlock Grid.Row="2" Grid.Column="0" Text="{ns:Loc CONVERTCOPYING}"></TextBlock>
×
140
                                <TextBlock Grid.Row="2" Grid.Column="1" Text="{ns:DynamicLoc CopyStatus}"></TextBlock>
×
141
                            </Grid>
142
                            <ProgressBar Margin="4" Height="20" Value="{Binding Progress}" BorderThickness="1" BorderBrush="Gray" IsIndeterminate="{Binding IndeterminateProgress}"/>
×
143
                            <TextBlock Text="{Binding Progress, StringFormat={}{0}%}" HorizontalAlignment="Center"></TextBlock>
×
NEW
144
                            <Button Margin="4,15,4,4" HorizontalAlignment="Center" Name="ConvertButton" Command="{Binding LaunchConverter}" IsEnabled="{Binding ConvertButtonEnabled}" Content="{ns:Loc CONVERTBUTTON}" IsVisible="{Binding ConvertButtonEnabled}"/>
×
NEW
145
                            <Button Margin="4,15,4,4" HorizontalAlignment="Center" Name="CancelButton" Command="{Binding CancelConversionCommand}" Content="{ns:Loc CANCEL}" IsVisible="{Binding ConvertButtonEnabled, Converter={StaticResource InverseBool}}"/>
×
146
                        </StackPanel>
147
                    </Grid>
148
                </TabItem>
149
            </TabControl>
150
        
151
            <GridSplitter Grid.Row="1" ResizeDirection="Rows" ResizeBehavior="BasedOnAlignment" Background="Gray"/>
×
152
            
153
            <DataGrid Name="LogGrid" Grid.Column="0" Grid.Row="2"
×
154
                      ItemsSource="{Binding FilteredLogLines}"
×
155
                      AutoGenerateColumns="False"
156
                      CanUserReorderColumns="False"
×
157
                      CanUserSortColumns="False"
158
                      RowBackground="Transparent"
×
159
                      VerticalScrollBarVisibility="Visible"
160
                      GridLinesVisibility="All"
×
161
                      >
162
                <DataGrid.Resources>
163
                    <vc:LogLevelToColorNameConverter x:Key="LogLevelToColorNameConverter"/>
×
164
                </DataGrid.Resources>
165
                <DataGrid.Styles>
166
                    <Style Selector="DataGrid DataGridRow" x:DataType="models:LogLine">
×
167
                        <Setter Property="Background" Value="{Binding Level, Converter={StaticResource LogLevelToColorNameConverter}}" />
×
168
                    </Style>
169
                </DataGrid.Styles>
170
                <DataGrid.Columns>
171
                    <DataGridTextColumn Header="{ns:Loc LOGTIME}" IsReadOnly="True" Binding="{Binding Timestamp}" />
×
172
                    <DataGridTextColumn Header="{ns:Loc LOGSEVERITY}" IsReadOnly="True" Binding="{Binding LevelName}" />
×
173
                    <DataGridTextColumn Header="{ns:Loc LOGMESSAGE}" IsReadOnly="True" Binding="{Binding Message}" />
×
174
                </DataGrid.Columns>
175
            </DataGrid>
176
        </Grid>
177
    </DockPanel>
178
</Window>
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc