private void CheckForMergeConflicts()
{
bool validWorkingDir = Module.IsValidGitWorkingDir();
if (validWorkingDir && Module.InTheMiddleOfBisect())
{
if (_bisect == null)
{
_bisect = new WarningToolStripItem { Text = _warningMiddleOfBisect.Text };
_bisect.Click += BisectClick;
statusStrip.Items.Add(_bisect);
}
}
else
{
if (_bisect != null)
{
_bisect.Click -= BisectClick;
statusStrip.Items.Remove(_bisect);
_bisect = null;
}
}
if (validWorkingDir &&
(Module.InTheMiddleOfRebase() || Module.InTheMiddleOfPatch()))
{
if (_rebase == null)
{
_rebase = new WarningToolStripItem
{
Text = Module.InTheMiddleOfRebase()
? _warningMiddleOfRebase.Text
: _warningMiddleOfPatchApply.Text
};
_rebase.Click += RebaseClick;
statusStrip.Items.Add(_rebase);
}
}
else
{
if (_rebase != null)
{
_rebase.Click -= RebaseClick;
statusStrip.Items.Remove(_rebase);
_rebase = null;
}
}
AsyncLoader.DoAsync(
() => validWorkingDir && Module.InTheMiddleOfConflictedMerge() &&
!Directory.Exists(Module.GetGitDirectory() + "rebase-apply\\"),
(result) =>
{
if (result)
{
if (_warning == null)
{
_warning = new WarningToolStripItem {Text = _hintUnresolvedMergeConflicts.Text};
_warning.Click += WarningClick;
statusStrip.Items.Add(_warning);
}
}
else
{
if (_warning != null)
{
_warning.Click -= WarningClick;
statusStrip.Items.Remove(_warning);
_warning = null;
}
}
//Only show status strip when there are status items on it.
//There is always a close (x) button, do not count first item.
if (statusStrip.Items.Count > 1)
statusStrip.Show();
else
statusStrip.Hide();
});
}