private static void Main() { try { Log.Initialize(); SingleAppInstance.Initialize(); Translator.Initialize(); Config.UpgradeIfNotUpgraded(); if (Config.LoadOrSetByUser()) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.ThreadException += ThreadException; void ThreadException(object s, ThreadExceptionEventArgs t) { AskUserSendError(t.Exception); } Scaling.Initialize(); FolderOptions.Initialize(); using (new App()) { Log.WriteApplicationRuns(); Application.Run(); } } } #pragma warning disable CA1031 // Do not catch general exception types catch (Exception ex) #pragma warning restore CA1031 // => Represents ThreadException during attached to process { AskUserSendError(ex); } finally { Log.Close(); } void AskUserSendError(Exception ex) { Log.Error("Application Crashed", ex); #warning [Feature] When Error ask user to send us #47, todo own dialog, lines here too long if (MessageBox.Show("A problem has been encountered and the application needs to restart. " + "Reporting this error will help us make our product better. Press yes to open your standard email app.", "SystemTrayMenu BugSplat", MessageBoxButtons.YesNo) == DialogResult.Yes) { Log.ProcessStart("mailto:" + "*****@*****.**" + "?subject=SystemTrayMenu Bug reported " + Assembly.GetEntryAssembly().GetName().Version + "&body=" + ex.ToString()); } AppRestart.ByThreadException(); } }
static void Settings_Click(object sender, EventArgs e) { SettingsForm settingsForm = new SettingsForm(); if (settingsForm.ShowDialog() == DialogResult.OK) { AppRestart.ByConfigChange(); } }
public ContextMenuStrip Create() { ContextMenuStrip menu = new ContextMenuStrip { BackColor = SystemColors.Control }; ToolStripMenuItem settings = new ToolStripMenuItem() { ImageScaling = ToolStripItemImageScaling.SizeToFit, Text = Translator.GetText("Settings") }; settings.Click += Settings_Click; void Settings_Click(object sender, EventArgs e) { SettingsForm settingsForm = new SettingsForm(); if (settingsForm.ShowDialog() == DialogResult.OK) { AppRestart.ByConfigChange(); } } menu.Items.Add(settings); ToolStripSeparator seperator = new ToolStripSeparator { BackColor = SystemColors.Control }; menu.Items.Add(seperator); ToolStripMenuItem openLog = new ToolStripMenuItem { Text = Translator.GetText("Log File") }; openLog.Click += OpenLog_Click; void OpenLog_Click(object sender, EventArgs e) { ClickedOpenLog.Invoke(); } menu.Items.Add(openLog); menu.Items.Add(new ToolStripSeparator()); ToolStripMenuItem helpFAQ = new ToolStripMenuItem { Text = Translator.GetText("HelpFAQ") }; helpFAQ.Click += HelpFAQ_Click; void HelpFAQ_Click(object sender, EventArgs e) { Config.ShowHelpFAQ(); } menu.Items.Add(helpFAQ); ToolStripMenuItem about = new ToolStripMenuItem { Text = Translator.GetText("About") }; about.Click += About_Click; void About_Click(object sender, EventArgs e) { FileVersionInfo versionInfo = FileVersionInfo.GetVersionInfo( Assembly.GetEntryAssembly().Location); AboutBox ab = new AboutBox { AppTitle = versionInfo.ProductName, AppDescription = versionInfo.FileDescription, AppVersion = $"Version {versionInfo.FileVersion}", AppCopyright = versionInfo.LegalCopyright, AppMoreInfo = versionInfo.LegalCopyright }; ab.AppMoreInfo += Environment.NewLine; ab.AppMoreInfo += "Markus Hofknecht (mailto:[email protected])"; ab.AppMoreInfo += Environment.NewLine; ab.AppMoreInfo += "Tanja Kauth (mailto:[email protected])"; ab.AppMoreInfo += Environment.NewLine; ab.AppMoreInfo += "http://www.hofknecht.eu/systemtraymenu/"; ab.AppMoreInfo += Environment.NewLine; ab.AppMoreInfo += "https://github.com/Hofknecht/SystemTrayMenu"; ab.AppMoreInfo += Environment.NewLine; ab.AppMoreInfo += Environment.NewLine; ab.AppMoreInfo += "GNU GENERAL PUBLIC LICENSE" + Environment.NewLine; ab.AppMoreInfo += "(Version 3, 29 June 2007)" + Environment.NewLine; ab.AppDetailsButton = true; ab.ShowDialog(); } menu.Items.Add(about); menu.Items.Add(new ToolStripSeparator()); ToolStripMenuItem restart = new ToolStripMenuItem { Text = Translator.GetText("Restart") }; restart.Click += Restart_Click; void Restart_Click(object sender, EventArgs e) { ClickedRestart.Invoke(); } menu.Items.Add(restart); ToolStripMenuItem exit = new ToolStripMenuItem { Text = Translator.GetText("Exit") }; exit.Click += Exit_Click; void Exit_Click(object sender, EventArgs e) { ClickedExit.Invoke(); } menu.Items.Add(exit); return(menu); }