/// <summary> /// Adds menu options under "Server" on the menu /// strip for each Language in LocalizationController /// </summary> private void SetupServerList() { string currentLanguage = LocalizationController.GetLanguageFromCode(LocalizationController.GetLanguage()); for (int i = 0; i < ((LocalizationController.Language[])Enum.GetValues(typeof(LocalizationController.Language))).Length; ++i) { LocalizationController.Language language = (LocalizationController.Language)i; MenuItem menuItem = new MenuItem { Header = language.ToString() }; LanguageToolStripMenuItem.Items.Add(menuItem); menuItem.Click += (s, e) => { if (menuItem.IsChecked) { return; } CultureInfo cultureInfo = new CultureInfo(LocalizationController.GetCodeFromLanguage(language)); if (MessageBox.Show(Strings.ResourceManager.GetString("SwitchServer", cultureInfo), Strings.ResourceManager.GetString("Restart", cultureInfo), MessageBoxButton.YesNo, MessageBoxImage.Question) != MessageBoxResult.Yes) { return; } LocalizationController.SetLanguage(language); isRestarting = true; ProcessStartInfo startInfo = Process.GetCurrentProcess().StartInfo; startInfo.FileName = AppController.ExecutablePath; startInfo.Arguments = $"{AppController.ParameterPrefix}restart"; Process.Start(startInfo); System.Windows.Application.Current.Shutdown(); }; if (currentLanguage == language.ToString()) { menuItem.IsChecked = true; } } }
/// <summary> /// The main entry point for the application. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Application_Startup(object sender, StartupEventArgs e) { // Get the command line arguments and check // if the current session is a restart or // a minimized start string[] args = Environment.GetCommandLineArgs(); if (args.Any(arg => arg == $"{AppController.ParameterPrefix}restart")) { isRestarted = true; } if (args.Any(arg => arg == $"{AppController.ParameterPrefix}minimized")) { startMinimized = true; } // Make sure only one instance is running // if the application is not currently restarting Mutex mutex = new Mutex(true, "GTAWChatLogAssistant", out bool isUnique); if (!isUnique && !isRestarted) { MessageBox.Show(Localization.Strings.OtherInstanceRunning, Localization.Strings.Error, MessageBoxButton.OK, MessageBoxImage.Error); Current.Shutdown(); return; } // Check if settings already exist // for a previous assembly version if (!Settings.Default.HasPickedLanguage) { Settings.Default.Upgrade(); } // Initialize the controllers and // display the server picker on the // first start, or the main window // on subsequent starts LocalizationController.InitializeLocale(); AppController.InitializeServerIp(); if (!Settings.Default.HasPickedLanguage) { //LanguagePickerWindow languagePicker = new LanguagePickerWindow(); //languagePicker.Show(); Settings.Default.LanguageCode = LocalizationController.GetCodeFromLanguage(LocalizationController.Language.English); Settings.Default.HasPickedLanguage = true; Settings.Default.Save(); } MainWindow mainWindow = new MainWindow(startMinimized); if (!startMinimized) { mainWindow.Show(); } // Don't let the garbage // collector touch the Mutex GC.KeepAlive(mutex); }