/// <summary> /// If the plug-in settings can be changed by the user, /// SDL Trados Studio will display a Settings button. /// By clicking this button, users raise the plug-in user interface, /// in which they can modify any applicable settings, in our implementation /// the delimiter character and the list file name. /// </summary> /// <param name="owner"></param> /// <param name="translationProvider"></param> /// <param name="languagePairs"></param> /// <param name="credentialStore"></param> /// <returns></returns> #region "Edit" public bool Edit(IWin32Window owner, ITranslationProvider translationProvider, LanguagePair[] languagePairs, ITranslationProviderCredentialStore credentialStore) { TermInjectorTranslationProvider editProvider = translationProvider as TermInjectorTranslationProvider; if (editProvider == null) { return(false); } string oldFileName = editProvider.Options.GlossaryFileName; string oldRegexFileName = editProvider.Options.RegexFileName; string oldMatchCase = editProvider.Options.MatchCase; string oldDelimiter = editProvider.Options.Delimiter; string oldTMName = editProvider.Options.TMFileName; TermInjectorTranslationProviderConfDialog dialog = new TermInjectorTranslationProviderConfDialog(editProvider.Options, editProvider, owner); if (dialog.ShowDialog(owner) == DialogResult.OK) { if (dialog.Options.TMFileName == "") { MessageBox.Show("Translation memory field is empty. Previous translation memory will be used."); return(false); } //If the TM has been changed, check that the new TM exists and has the correct languages if (oldTMName != dialog.Options.TMFileName) { if (!File.Exists(dialog.Options.TMFileName)) { MessageBox.Show("Specified translation memory does not exist", "TermInjector"); return(false); } var fileTM = new FileBasedTranslationMemory(dialog.Options.TMFileName); if (!fileTM.SupportsLanguageDirection(languagePairs[0])) { MessageBox.Show("Selected translation memory does not support the selected language direction (" + languagePairs[0] + "). Previous translation memory will be used", "TermInjector"); return(false); } //The checks passed, so update the TM in the provider editProvider.loadTM(); } //If the glossary file, case matching setting, regex setting or delimiter setting is changed, the tries should be reloaded if (oldFileName != dialog.Options.GlossaryFileName || oldMatchCase != dialog.Options.MatchCase || oldRegexFileName != dialog.Options.RegexFileName || oldDelimiter != dialog.Options.Delimiter) { try { editProvider.loadTries(); } catch (Exception e) { MessageBox.Show(e.Message); } editProvider.initializeVisitors(); } //Everything is fine, so we can update the provider options editProvider.Options = dialog.Options; return(true); } return(false); }