Ejemplo n.º 1
0
        public void UpdateSettings()
        {
            if (IsDisposed)
            {
                return;
            }

            if (InvokeRequired)
            {
                Invoke((MethodInvoker) delegate { UpdateSettings(); });
                return;
            }

            isUpdating = true;

            translatableLanguages.Clear();
            ocrableLanguages.Clear();

            if (Program.ActiveOcrEngine != null)
            {
                if (Program.ActiveOcrEngine.IsInstalled)
                {
                    foreach (string language in Program.ActiveOcrEngine.SupportedLanguages.Keys)
                    {
                        CultureInfo culture = CultureInfo.GetCultureInfo(language);
                        if (!ocrableLanguages.Contains(culture.DisplayName))
                        {
                            ocrableLanguages.Add(culture.DisplayName);
                        }
                    }
                }
                else
                {
                    OcrEngineType engineType = OcrEngine.GetType(Program.ActiveOcrEngine.GetType());
                    foreach (Dictionary <OcrEngineType, List <string> > remoteTypes in OcrNetwork.RemoteTypes.Values)
                    {
                        if (remoteTypes.ContainsKey(engineType))
                        {
                            List <string> supportedLanguages = remoteTypes[engineType];
                            foreach (string language in supportedLanguages)
                            {
                                // Remote PC may support different cultures
                                //CultureInfo culture = CultureInfo.GetCultureInfo(language);
                                CultureInfo culture = null;
                                if (LocaleHelper.TryParseCulture(language, out culture) && !ocrableLanguages.Contains(culture.DisplayName))
                                {
                                    ocrableLanguages.Add(culture.DisplayName);
                                }
                            }
                        }
                    }
                }
            }

            if (Program.ActiveTranslator != null)
            {
                foreach (string language in Program.ActiveTranslator.SupportedLanguages.Keys)
                {
                    CultureInfo culture = CultureInfo.GetCultureInfo(language);
                    if (!translatableLanguages.Contains(culture.DisplayName))
                    {
                        translatableLanguages.Add(culture.DisplayName);
                    }
                }
            }

            availableEngines.Clear();
            foreach (var value in Enum.GetValues(typeof(OcrEngineType)))
            {
                OcrEngineType type = (OcrEngineType)value;
                if (RemoteOcr.IsRemote(type) || OcrEngine.Create(type).IsInstalled)
                {
                    availableEngines.Add(type);
                }
            }

            UpdateLanguageComboBoxStyle();
            UpdateEngineComboBoxStyle();
            RunOcr();

            isUpdating = false;
        }