[TextExtractor] Extend settings with preferred language (#22901)

* [TextExtractor] Extend settings with preferred language

* TextExtractor simplifying code, adding update languages on dropdown opening

* fix typo

* TextExtractor fixing bug with order of languages
This commit is contained in:
Laszlo Nemeth
2022-12-28 19:54:59 +01:00
committed by GitHub
parent 1f4ba8f267
commit dd62dab831
8 changed files with 129 additions and 3 deletions

View File

@@ -11,6 +11,7 @@ using System.Windows.Input;
using System.Windows.Media;
using Microsoft.PowerToys.Telemetry;
using PowerOCR.Helpers;
using PowerOCR.Settings;
using PowerOCR.Utilities;
using Windows.Globalization;
using Windows.Media.Ocr;
@@ -55,14 +56,26 @@ public partial class OCROverlay : Window
{
InitializeComponent();
var userSettings = new UserSettings(new Helpers.ThrottledActionInvoker());
string? selectedLanguageName = userSettings.PreferredLanguage.Value;
// build context menu
selectedLanguage = ImageMethods.GetOCRLanguage();
string? selectedLanguageName = selectedLanguage?.DisplayName;
if (string.IsNullOrEmpty(selectedLanguageName))
{
selectedLanguage = ImageMethods.GetOCRLanguage();
selectedLanguageName = selectedLanguage?.DisplayName;
}
List<Language> possibleOcrLanguages = OcrEngine.AvailableRecognizerLanguages.ToList();
foreach (Language language in possibleOcrLanguages)
{
MenuItem menuItem = new MenuItem() { Header = language.DisplayName, Tag = language, IsCheckable = true };
MenuItem menuItem = new MenuItem() { Header = language.NativeName, Tag = language, IsCheckable = true };
menuItem.IsChecked = language.DisplayName.Equals(selectedLanguageName);
if (language.DisplayName.Equals(selectedLanguageName))
{
selectedLanguage = language;
}
menuItem.Click += LanguageMenuItem_Click;
CanvasContextMenu.Items.Add(menuItem);
}

View File

@@ -8,5 +8,7 @@ public interface IUserSettings
{
SettingItem<string> ActivationShortcut { get; }
SettingItem<string> PreferredLanguage { get; }
void SendSettingsTelemetry();
}

View File

@@ -29,6 +29,7 @@ namespace PowerOCR.Settings
{
_settingsUtils = new SettingsUtils();
ActivationShortcut = new SettingItem<string>(DefaultActivationShortcut);
PreferredLanguage = new SettingItem<string>(string.Empty);
LoadSettingsFromJson();
@@ -38,6 +39,8 @@ namespace PowerOCR.Settings
public SettingItem<string> ActivationShortcut { get; private set; }
public SettingItem<string> PreferredLanguage { get; private set; }
private void LoadSettingsFromJson()
{
// TODO this IO call should by Async, update GetFileWatcher helper to support async
@@ -64,6 +67,7 @@ namespace PowerOCR.Settings
if (settings != null)
{
ActivationShortcut.Value = settings.Properties.ActivationShortcut.ToString();
PreferredLanguage.Value = settings.Properties.PreferredLanguage.ToString();
}
retry = false;