diff --git a/src/JiraTimeBot/DI/ContainerBuilder.cs b/src/JiraTimeBot/DI/ContainerBuilder.cs index 972c815..e0aee42 100644 --- a/src/JiraTimeBot/DI/ContainerBuilder.cs +++ b/src/JiraTimeBot/DI/ContainerBuilder.cs @@ -1,5 +1,4 @@ -using System.Windows.Forms; -using Autofac; +using Autofac; using Autofac.Extras.AggregateService; using JiraTimeBot.JiraIntegration; using JiraTimeBot.JiraIntegration.Comments; @@ -8,6 +7,8 @@ using JiraTimeBot.Mercurial.Modifiers; using JiraTimeBot.TasksProcessors; using JiraTimeBot.TaskTime; using JiraTimeBot.UI.Tray; +using System; +using System.Windows.Forms; namespace JiraTimeBot.DI { @@ -21,8 +22,17 @@ namespace JiraTimeBot.DI public IContainer Build(TextBox logTextBox) { - _builder.Register(f => new Logger(logTextBox)).As().AsSelf(); - + _builder.Register(c => logTextBox).AsSelf(); + + _builder.Register(f => + { + var txt = f.Resolve(); + return new Logger(message => + { + txt.Invoke(new Action(text => txt.AppendText(text)), message + Environment.NewLine); + }); + }).As().AsSelf(); + _builder.Register(f => new TrayMenu()).As().AsSelf(); _builder.Register(c => new CommitSkipper()).As(); diff --git a/src/JiraTimeBot/JiraIntegration/Comments/JiraDescriptionSource.cs b/src/JiraTimeBot/JiraIntegration/Comments/JiraDescriptionSource.cs index 37015e3..b81df7f 100644 --- a/src/JiraTimeBot/JiraIntegration/Comments/JiraDescriptionSource.cs +++ b/src/JiraTimeBot/JiraIntegration/Comments/JiraDescriptionSource.cs @@ -1,8 +1,8 @@ -using System; +using JiraTimeBot.Configuration; +using JiraTimeBot.TaskTime.Objects; +using System; using System.Collections.Generic; using System.Linq; -using JiraTimeBot.Configuration; -using JiraTimeBot.TaskTime.Objects; namespace JiraTimeBot.JiraIntegration.Comments { diff --git a/src/JiraTimeBot/Logger.cs b/src/JiraTimeBot/Logger.cs index 5fd35b1..1585fd3 100644 --- a/src/JiraTimeBot/Logger.cs +++ b/src/JiraTimeBot/Logger.cs @@ -1,29 +1,23 @@ using System; using System.ComponentModel; -using System.Windows.Forms; namespace JiraTimeBot { public class Logger : ILog { - private readonly TextBox _txt; - private readonly AppendLog _safeAppender; + private readonly Action _logAction; - public Logger(TextBox txt) + public Logger(Action logAction) { - _txt = txt; - _safeAppender = text => _txt.AppendText(text); - + _logAction = logAction; } private void AppendText(string message) { message = $"{DateTime.Now:HH:mm} {message}"; - _txt.Invoke(_safeAppender, message + Environment.NewLine); + _logAction(message); } - private delegate void AppendLog(string text); - public void Info([Localizable(false)] string message) { AppendText(message); diff --git a/src/JiraTimeBot/Program.cs b/src/JiraTimeBot/Program.cs index 9918224..696784c 100644 --- a/src/JiraTimeBot/Program.cs +++ b/src/JiraTimeBot/Program.cs @@ -1,45 +1,30 @@ -using System; -using System.Diagnostics; +using JiraTimeBot.UI; +using System; +using System.Threading; using System.Windows.Forms; -using JiraTimeBot.UI; namespace JiraTimeBot { static class Program { + private static Mutex _mutex = new Mutex(true, "{44426B3E-B901-4792-ACEA-1385D79DBAD1}"); /// /// The main entry point for the application. /// [STAThread] static void Main() { - if (PriorProcess() != null) + if (_mutex.WaitOne(TimeSpan.Zero, true)) + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new frmMain()); + _mutex.ReleaseMutex(); + } + else { - MessageBox.Show("Another instance of the app is already running."); - return; } - - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new frmMain()); - } - - public static Process PriorProcess() - // Returns a System.Diagnostics.Process pointing to - // a pre-existing process with the same name as the - // current one, if any; or null if the current process - // is unique. - { - Process curr = Process.GetCurrentProcess(); - Process[] procs = Process.GetProcessesByName(curr.ProcessName); - foreach (Process p in procs) - { - if ((p.Id != curr.Id) && - (p.MainModule.FileName == curr.MainModule.FileName)) - return p; - } - return null; } } } diff --git a/src/JiraTimeBot/UI/frmMain.cs b/src/JiraTimeBot/UI/frmMain.cs index 095514c..6a4e421 100644 --- a/src/JiraTimeBot/UI/frmMain.cs +++ b/src/JiraTimeBot/UI/frmMain.cs @@ -1,16 +1,16 @@ -using System; +using Autofac; +using JiraTimeBot.Configuration; +using JiraTimeBot.DI; +using JiraTimeBot.TasksProcessors; +using JiraTimeBot.UI.Tray; +using JiraTimeBot.Update; +using System; using System.Collections.Generic; using System.IO; using System.IO.Compression; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; -using Autofac; -using JiraTimeBot.Configuration; -using JiraTimeBot.DI; -using JiraTimeBot.TasksProcessors; -using JiraTimeBot.UI.Tray; -using JiraTimeBot.Update; // This is the code for your desktop app. // Press Ctrl+F5 (or go to Debug > Start Without Debugging) to run your app.