55using SnapX . Core ;
66using SnapX . Core . History ;
77using SnapX . Core . Utils ;
8+ using static SnapX . Core . Job . TaskHelpers ;
89
910namespace SnapX . Avalonia . Views ;
1011
@@ -13,7 +14,6 @@ public partial class OCR : AppWindow
1314 private OCRViewModel _ocrViewModel ;
1415 private HistoryItem ? _item ;
1516
16-
1717 public OCR ( HistoryItem ? item , OCRViewModel viewModel )
1818 {
1919 DataContext = viewModel ;
@@ -29,18 +29,22 @@ public OCR(HistoryItem? item, OCRViewModel viewModel)
2929 // LoadImage();
3030 // RunOCR(_languages[0]);
3131 }
32- public OCR ( ) : this ( null , new OCRViewModel ( ) )
33- {
34- }
35- public OCR ( HistoryItem item ) : this ( item , new OCRViewModel ( ) )
36- {
37- }
3832
39- private async void LanguageSelector_SelectionChanged ( object ? sender , SelectionChangedEventArgs e )
33+ public OCR ( )
34+ : this ( null , new OCRViewModel ( ) ) { }
35+
36+ public OCR ( HistoryItem item )
37+ : this ( item , new OCRViewModel ( ) ) { }
38+
39+ private async void LanguageSelector_SelectionChanged (
40+ object ? sender ,
41+ SelectionChangedEventArgs e
42+ )
4043 {
4144 DebugHelper . WriteLine ( $ "{ nameof ( LanguageSelector_SelectionChanged ) } triggered") ;
4245
43- if ( LanguageSelector ? . SelectedIndex is not ( >= 0 and var index ) ) return ;
46+ if ( LanguageSelector ? . SelectedIndex is not ( >= 0 and var index ) )
47+ return ;
4448
4549 _ocrViewModel . SelectedLanguageIndex = index ;
4650
@@ -53,8 +57,21 @@ private async Task RunOCRAsync(string languageCode)
5357 DebugHelper . WriteLine ( $ "{ nameof ( RunOCRAsync ) } triggered") ;
5458 var textBox = this . FindControl < TextBox > ( "ResultText" ) ! ;
5559 textBox . Text = Lang . Processing ;
56- var result = await _ocrViewModel . RunOCRAsync ( _item , languageCode ) ;
57- if ( SingleLine ? . IsChecked ?? false ) result = result . Replace ( "\r " , "" ) . Replace ( "\n " , "" ) ;
60+ LanguageSelector ? . IsEnabled = false;
61+
62+ var progressHandler = new Progress < OCRProgress > ( update =>
63+ {
64+ textBox . Text = $ "[{ update . Percent } %] { update . Status } ";
65+ } ) ;
66+
67+ var result = await _ocrViewModel . RunOCRAsync ( _item , languageCode , progressHandler ) ;
68+
69+ if ( SingleLine ? . IsChecked ?? false )
70+ {
71+ result = result . Replace ( "\r " , "" ) . Replace ( "\n " , "" ) ;
72+ }
73+ LanguageSelector ? . IsEnabled = true;
74+
5875 textBox . Text = result ;
5976 }
6077
@@ -76,4 +93,3 @@ private void CopyResult_Click(object? Sender, RoutedEventArgs E)
7693 Clipboard ? . SetTextAsync ( ResultText . Text ) ;
7794 }
7895}
79-
0 commit comments