public MainForm(GACApplication application)
        {
            _application = application;
            InitializeComponent();

            tasksLabel.Font = FontHelper.SubHeadingGuiFont;

            list.Bind(application.Tasks);
            list.ItemAdd += ListOnItemChange;
            list.ItemEdit += ListOnItemChange;
            list.ListChanged += ListOnChange;

            versionLabel.Text = Version;
        }
        public NotifyIconController(GACApplication application)
        {
            _application = application;
            _notifyIcon = new NotifyIcon();
            _contextMenu = new ContextMenuStrip();
            _contextMenu.Items.AddRange(
                new[]
                    {
                        new ToolStripMenuItem("&Configuration", null, (s, e) => ShowMainForm()),
                        new ToolStripMenuItem("E&xit", null, (s, e) => Close())
                    }
                );

            _notifyIcon.ContextMenuStrip = _contextMenu;
            _notifyIcon.Icon = Resources.icon_16;
            _notifyIcon.Text = "Git auto commit";

            _notifyIcon.DoubleClick += delegate { ShowMainForm(); };

            if (!application.IsCommandLineDriven && application.Tasks.Count == 0)
            {
                ShowMainForm();
            }
        }
        private static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            #if DEBUG
            dw = new DebugWindow();
            dw.Show();
            #endif
            GACApplication application;
            if (args.Length == 0)
            {
                application = new GACApplication(true);
            }
            else
            {
                int interval;
                string error = null;
                if (args.Length < 2 || !int.TryParse(args[0], out interval) || !AllDirectoriesExist(args.Skip(1), out error))
                {
                    if (string.IsNullOrEmpty(error))
                        error = "Invalid command line arguments";

                    error = error + "\r\n\r\n" +
                            "usage: git-auto-commit <commit-interval-seconds> <directory 1>, <directory 2>, ..., <directory n>";

                    MessageBox.Show(error, "git-auto-commit", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    Environment.Exit(1);
                    return;
                }

                var tasks = args.Skip(1).Select(x => new AutoCommitTask(interval, x));
                application = new GACApplication(true, tasks);
            }

            var icon = new NotifyIconController(application);
            icon.Show();

            Application.Run();
        }