mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-16 19:57:57 +01:00
[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:
@@ -3,13 +3,18 @@
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text.Json;
|
||||
using System.Timers;
|
||||
using global::PowerToys.GPOWrapper;
|
||||
using Microsoft.PowerToys.Settings.UI.Library;
|
||||
using Microsoft.PowerToys.Settings.UI.Library.Helpers;
|
||||
using Microsoft.PowerToys.Settings.UI.Library.Interfaces;
|
||||
using Windows.Globalization;
|
||||
using Windows.Media.Ocr;
|
||||
|
||||
namespace Microsoft.PowerToys.Settings.UI.ViewModels
|
||||
{
|
||||
@@ -31,6 +36,33 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
|
||||
private GpoRuleConfigured _enabledGpoRuleConfiguration;
|
||||
private bool _enabledStateIsGPOConfigured;
|
||||
private bool _isEnabled;
|
||||
private int _languageIndex;
|
||||
private List<Language> possibleOcrLanguages;
|
||||
|
||||
public ObservableCollection<string> AvailableLanguages { get; } = new ObservableCollection<string>();
|
||||
|
||||
public int LanguageIndex
|
||||
{
|
||||
get
|
||||
{
|
||||
return _languageIndex;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
if (value != _languageIndex)
|
||||
{
|
||||
_languageIndex = value;
|
||||
if (_powerOcrSettings != null && _languageIndex < possibleOcrLanguages.Count && _languageIndex >= 0)
|
||||
{
|
||||
_powerOcrSettings.Properties.PreferredLanguage = possibleOcrLanguages[_languageIndex].DisplayName;
|
||||
NotifySettingsChanged();
|
||||
}
|
||||
|
||||
OnPropertyChanged(nameof(LanguageIndex));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Func<string, int> SendConfigMSG { get; }
|
||||
|
||||
@@ -130,6 +162,48 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
|
||||
}
|
||||
}
|
||||
|
||||
internal void UpdateLanguages()
|
||||
{
|
||||
int preferredLanguageIndex = -1;
|
||||
int systemLanguageIndex = -1;
|
||||
CultureInfo systemCulture = CultureInfo.CurrentUICulture;
|
||||
|
||||
// get the list of all installed OCR languages. While processing them, search for the previously preferred language and also for the current ui language
|
||||
possibleOcrLanguages = OcrEngine.AvailableRecognizerLanguages.OrderBy(x => x.NativeName).ToList();
|
||||
AvailableLanguages.Clear();
|
||||
foreach (Language language in possibleOcrLanguages)
|
||||
{
|
||||
if (_powerOcrSettings.Properties.PreferredLanguage?.Equals(language.DisplayName) == true)
|
||||
{
|
||||
preferredLanguageIndex = AvailableLanguages.Count;
|
||||
}
|
||||
|
||||
if (systemCulture.DisplayName.Equals(language.DisplayName) || systemCulture.Parent.DisplayName.Equals(language.DisplayName))
|
||||
{
|
||||
systemLanguageIndex = AvailableLanguages.Count;
|
||||
}
|
||||
|
||||
AvailableLanguages.Add(language.NativeName);
|
||||
}
|
||||
|
||||
// if the previously stored preferred language is not available (has been deleted or this is the first run with language preference)
|
||||
if (preferredLanguageIndex == -1)
|
||||
{
|
||||
// try to use the current ui language. If it is also not available, set the first language as preferred (to have any selected language)
|
||||
if (systemLanguageIndex >= 0)
|
||||
{
|
||||
preferredLanguageIndex = systemLanguageIndex;
|
||||
}
|
||||
else
|
||||
{
|
||||
preferredLanguageIndex = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// set the language index -> the preferred language gets selected in the combo box
|
||||
LanguageIndex = preferredLanguageIndex;
|
||||
}
|
||||
|
||||
private void ScheduleSavingOfSettings()
|
||||
{
|
||||
lock (_delayedActionLock)
|
||||
|
||||
Reference in New Issue
Block a user