/// <summary> /// Initializes the language pair and saves it if requested /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void GlobalTranslateForm_FormClosing(object sender, FormClosingEventArgs e) { if (DialogResult == DialogResult.OK) { try { if (useSavedPairBox.Checked) // user selected "use existing language pair", but didn't specify the language pair { if (LanguagePair == null) { throw new Exception("Saved language pair must be specified."); } } if (useNewPairBox.Checked) // user selected "use new language pair" { if (souceLanguageBox.SelectedIndex == -1 || targetLanguageBox.SelectedIndex == -1) { throw new Exception("Both source and target language must be specified."); } string srcLanguage = null, targetLanguage = null; if (souceLanguageBox.SelectedIndex == 0) // "auto" option selected { srcLanguage = string.Empty; } else { srcLanguage = displayedCultures[souceLanguageBox.SelectedIndex - 1].TwoLetterISOLanguageName; } targetLanguage = displayedCultures[targetLanguageBox.SelectedIndex].TwoLetterISOLanguageName; // create new language pair from specified languages LanguagePair = new SettingsObject.LanguagePair() { FromLanguage = srcLanguage, ToLanguage = targetLanguage }; // if user specified to remember the pair and such pair does not exist, save it if (addLanguagePairBox.Checked && !SettingsObject.Instance.LanguagePairs.Contains(LanguagePair)) { SettingsObject.Instance.LanguagePairs.Add(LanguagePair); SettingsObject.Instance.NotifyPropertyChanged(CHANGE_CATEGORY.EDITOR); } } } catch (Exception ex) { e.Cancel = true; VLOutputWindow.VisualLocalizerPane.WriteException(ex); VisualLocalizer.Library.Components.MessageBox.ShowException(ex); } } }
/// <summary> /// Called before displaying the context menu /// </summary> protected override void ContextMenu_Popup(object sender, EventArgs e) { try { UpdateContextItemsEnabled(); foreach (MenuItem menuItem in translateMenu.MenuItems) // for each translation provider { menuItem.MenuItems.Clear(); // clear current language pair menu items TRANSLATE_PROVIDER provider = (TRANSLATE_PROVIDER)menuItem.Tag; // if the provider is Bing, AppId is required bool enabled = true; if (provider == TRANSLATE_PROVIDER.BING) { enabled = !string.IsNullOrEmpty(SettingsObject.Instance.BingAppId); } menuItem.Enabled = enabled; // add current language pairs from settings foreach (var pair in SettingsObject.Instance.LanguagePairs) { MenuItem newItem = new MenuItem(pair.ToString()); newItem.Tag = pair; newItem.Click += new EventHandler((o, args) => { SettingsObject.LanguagePair sentPair = (o as MenuItem).Tag as SettingsObject.LanguagePair; EditorControl_TranslateRequested(provider, sentPair.FromLanguage, sentPair.ToLanguage); }); newItem.Enabled = enabled; menuItem.MenuItems.Add(newItem); } // add option to add a new language pair MenuItem addItem = new MenuItem("New language pair...", new EventHandler((o, args) => { EditorControl_TranslateRequested(provider); })); addItem.Enabled = enabled; menuItem.MenuItems.Add(addItem); } } catch (Exception ex) { VLOutputWindow.VisualLocalizerPane.WriteException(ex); VisualLocalizer.Library.Components.MessageBox.ShowException(ex); } }
/// <summary> /// Selected language pair changed /// </summary> private void LanguagePairsBox_SelectedIndexChanged(object sender, EventArgs e) { LanguagePair = (SettingsObject.LanguagePair)languagePairsBox.SelectedItem; }