SourceCode/PROMS/Sync/Sync/frmSync.cs
Rich 4ca9a34c07 I added some RTF logic to indent the change description. This will make it easier for me to copy text into source safe from this document.
Corrected logic for returning the RO Value when the ROs do not have multiple return values.  This fixes Bug B2013-080.
Added logic to the code that looks for a newer version of the RO.FST file, when the DocVersion (Folder) does not have an assocated RO Database.
Added Caption, Button and Icon to Warning Message when DocVersion (Folder) does not have an assocated RO Database.
Added logic to support ROs that do not have Multiple return values.
Fixed logic to support ROST lookup when the DocVersion (Folder) does not have an assocated RO Database
Added Caption, Button and Icon to Warning Message when DocVersion (Folder) does not have an assocated RO Database.
Shut-off the RO Edit feature when DocVersion (Folder) does not have an assocated RO Database.
2013-04-19 15:01:11 +00:00

647 lines
22 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Xml;
using SevenZip;
namespace Sync
{
public partial class frmSync : Form
{
private List<FileCompare> _CheckedOut;
private bool IsLoading = false;
private float _DPI=100;
public frmSync()
{
InitializeComponent();
using (Graphics gr = CreateGraphics())
_DPI = gr.DpiX;
}
private void LoadSettings()
{
if (Properties.Settings.Default["Location"] != null)
Location = Properties.Settings.Default.Location;
if (Properties.Settings.Default["Size"] != null)
Size = Properties.Settings.Default.Size;
if (Properties.Settings.Default.DevelopmentFolder != "")
tbDevelopment.Text = Properties.Settings.Default.DevelopmentFolder;
if (Properties.Settings.Default.SourceSafeFolder != "")
tbSourceSafe.Text = Properties.Settings.Default.SourceSafeFolder;
if(Properties.Settings.Default.MailBoxDevelopmentFolder != "")
tbMailBox.Text = Properties.Settings.Default.MailBoxDevelopmentFolder;
if (Properties.Settings.Default.MailBoxSourceSafeFolder != "")
tbSSMailBox.Text = Properties.Settings.Default.MailBoxSourceSafeFolder;
}
private void frmSync_Load(object sender, EventArgs e)
{
LoadSettings();
Setup();
}
private void Setup()
{
// Setup Browse Buttons
btnBrwsDev.Tag = this.tbDevelopment;
btnBrwsSS.Tag = this.tbSourceSafe;
btnBrwsMail.Tag = this.tbMailBox;
btnBrwsSSMail.Tag = this.tbSSMailBox;
}
private void btnBrowse_Click(object sender, EventArgs e)
{
TextBox tb = (TextBox)((Button)sender).Tag;
fbd.SelectedPath = tb.Text;
if (fbd.ShowDialog() == DialogResult.OK)
tb.Text = fbd.SelectedPath;
}
private void ClearResults()
{
_CheckedOut = new List<FileCompare>();
dgv.DataSource = null;
Application.DoEvents();
}
private void FindCheckedOut(DirectoryInfo di)
{
FindCheckedOut(di.GetFiles());
FindCheckedOut(di.GetDirectories());
}
private void FindCheckedOut(DirectoryInfo[] directoryInfoList)
{
foreach (DirectoryInfo di in directoryInfoList)
FindCheckedOut(di);
}
private void FindCheckedOut(FileInfo[] fileInfoList)
{
foreach (FileInfo fi in fileInfoList)
FindCheckedOut(fi);
}
private void FindCheckedOut(FileInfo fi)
{
if (fi.Name.ToLower().EndsWith("scc")) return;
if (fi.Name.ToLower().EndsWith("sln")) return;
if (fi.Name.ToLower().EndsWith("csproj"))
{
// Find files that have been added to the new Project
List<string> compileList = GetCompileList(fi.FullName);
FileInfo fi1csproj = new FileInfo(fi.FullName.Replace(tbSourceSafe.Text, tbDevelopment.Text));
if (fi1csproj.Exists)
{
List<string> compileList1 = GetCompileList(fi1csproj.FullName);
CompareLists(compileList, compileList1, fi, fi1csproj);
}
return;
}
if (fi.Name.ToLower().EndsWith("licx")) return;
FileInfo fi1 = new FileInfo(fi.FullName.Replace(tbSourceSafe.Text, tbDevelopment.Text));
if ((fi1.Attributes & FileAttributes.ReadOnly) != FileAttributes.ReadOnly)
AddToResults(fi, fi1);
}
private void CompareLists(List<string> compileList, List<string> compileList1, FileInfo fi, FileInfo fi1)
{
// If anything is in compileList1 and not in CompileList add it to the results
foreach (string filename in compileList1)
if (!compileList.Contains(filename))
AddToResults(fi, fi1, filename);
}
private void AddToResults(FileInfo fi, FileInfo fi1, string filename)
{
FileInfo newfi = new FileInfo(fi.DirectoryName + "/" + filename);
FileInfo newfi1 = new FileInfo(fi1.DirectoryName + "/" + filename);
if(!newfi.Exists)AddToResults(newfi, newfi1); // Only add if the file does not exist
}
private List<string> GetCompileList(string fileName)
{
List<string> retval = new List<string>();
XmlDocument doc = new XmlDocument();
doc.Load(fileName);
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
foreach (XmlAttribute attrib in doc.DocumentElement.Attributes)
if (attrib.Name == "xmlns")
nsmgr.AddNamespace("ns", attrib.Value);
XmlNodeList xl = doc.DocumentElement.SelectNodes(@"//ns:Compile/@Include",nsmgr);
foreach (XmlAttribute xa in xl)
retval.Add(xa.Value);
xl = doc.DocumentElement.SelectNodes(@"//ns:Content/@Include", nsmgr);
foreach (XmlAttribute xa in xl)
{
if (xa.Value.ToUpper().EndsWith("DLL"))
retval.Add(xa.Value);
if (xa.Value.ToUpper().EndsWith("XML"))
retval.Add(xa.Value);
if (xa.Value.ToUpper().EndsWith("SVG"))
retval.Add(xa.Value);
if (xa.Value.ToUpper().EndsWith("BAS"))
retval.Add(xa.Value);
}
xl = doc.DocumentElement.SelectNodes(@"//ns:EmbeddedResource/@Include", nsmgr);
foreach (XmlAttribute xa in xl)
if (!xa.Value.ToUpper().EndsWith("LICX"))
retval.Add(xa.Value);
xl = doc.DocumentElement.SelectNodes(@"//ns:None/@Include", nsmgr);
foreach (XmlAttribute xa in xl)
{
if(xa.Value.ToUpper().EndsWith("SQL"))
retval.Add(xa.Value);
if (xa.Value.ToUpper().EndsWith("FRM"))
retval.Add(xa.Value);
if (xa.Value.ToUpper().EndsWith("FRX"))
retval.Add(xa.Value);
}
return retval;
}
private void AddToResults(FileInfo fiSS,FileInfo fiDev)
{
FileCompare fc = new FileCompare(fiDev, fiSS);
FileInfo fiMB = new FileInfo(fc.FileName.Replace(tbDevelopment.Text, tbSSMailBox.Text));
if (fiMB.Exists && fiSS.LastWriteTimeUtc != fiMB.LastWriteTimeUtc)
fc.Merge = true;
//if(!_OnlyContentDifferent || (fc.Different && (fc.DevModified != null)))
if (!_OnlyContentDifferent || (fc.Different))
_CheckedOut.Add(fc);
//if (tbResults.Text == "") tbResults.Text = "Found:";
//tbResults.Text += "\r\n" + fiDev.FullName + " - " + ((fiDev.Attributes & FileAttributes.ReadOnly) != FileAttributes.ReadOnly ? "" : "ReadOnly");
}
private void ClearMailBox()
{
DeleteFolder(new DirectoryInfo(tbMailBox.Text));
DeleteFolder(new DirectoryInfo(tbSSMailBox.Text));
}
private void DeleteFolder(DirectoryInfo directoryInfo)
{
if (directoryInfo.Exists)
{
AdjustAttributes(directoryInfo);
directoryInfo.Delete(true);
}
}
private void AdjustAttributes(DirectoryInfo directoryInfo)
{
foreach (DirectoryInfo di in directoryInfo.GetDirectories())
AdjustAttributes(di);
foreach (FileInfo fi in directoryInfo.GetFiles())
AdjustAttribute(fi);
}
private void AdjustAttribute(FileInfo fi)
{
fi.Attributes &= (fi.Attributes ^ FileAttributes.ReadOnly);// Turn-Off ReadOnly Attribute
fi.Attributes &= (fi.Attributes ^ FileAttributes.Hidden);// Turn-Off Hidden Attribute
}
private void frmSync_FormClosing(object sender, FormClosingEventArgs e)
{
Properties.Settings.Default.Location = Location;
Properties.Settings.Default.Size = Size;
Properties.Settings.Default.DevelopmentFolder = tbDevelopment.Text;
Properties.Settings.Default.SourceSafeFolder = tbSourceSafe.Text;
Properties.Settings.Default.MailBoxDevelopmentFolder = tbMailBox.Text;
Properties.Settings.Default.MailBoxSourceSafeFolder = tbSSMailBox.Text;
Properties.Settings.Default.Save();
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
private void clearToolStripMenuItem_Click(object sender, EventArgs e)
{
ClearMailBox();
}
private void buildToolStripMenuItem_Click(object sender, EventArgs e)
{
dgv.EndEdit();
ClearMailBox();
if (_CheckedOut == null)
checkedOutToolStripMenuItem_Click(sender, e);
foreach (FileCompare fc in _CheckedOut)
{
if (fc.ToProcess)
{
fc.MoveDevToMailBox(tbDevelopment.Text, tbMailBox.Text);
fc.MoveSSToMailBox(tbSourceSafe.Text, tbSSMailBox.Text);
}
}
BuildZipOfMailBox(tbMailBox.Text);
}
private string _RTFFile = null;
public string RTFFile
{
get { return _RTFFile; }
set { _RTFFile = value; }
}
private void BuildZipOfMailBox(string mailbox)
{
SevenZipCompressor.SetLibraryPath(Application.StartupPath + @"\7z.dll");
SevenZipCompressor cmpr = new SevenZipCompressor();
cmpr.PreserveDirectoryRoot = true;
string fileDate = DateTime.Now.ToString("yyyyMMdd HHmm");
RTFFile = string.Format("{0} To SS {1}.Rtf", mailbox, fileDate);
string zipName = string.Format("{0} To SS {1}.7z", mailbox, fileDate);
cmpr.CompressDirectory(mailbox, zipName, "*.*", true);
MessageBox.Show(string.Format("{0} created!", zipName), "Mailbox Zip Created", MessageBoxButtons.OK, MessageBoxIcon.Information);
//if (System.IO.File.Exists(@"c:\program files\7-zip\7z.exe"))
//{
// string args = string.Format(@"a -t7z ""{0} To SS {1}.7z"" ""{0}\*.*"" -r", mailbox, DateTime.Now.ToString("yyyyMMdd HHmm"));
// System.Diagnostics.Process p = System.Diagnostics.Process.Start(@"c:\program files\7-zip\7z", args);
// p.WaitForExit();
//}
//"c:\program files\7-zip\7z" a -t7z "C:\Development\MailBox\Proms To SS 20120424 1850.7z" "C:\Development\MailBox\Proms\*.*" -r
}
private void checkedOutToolStripMenuItem_Click(object sender, EventArgs e)
{
dgv.EndEdit();
ClearResults();
// Walk though Source Safe and check to see if the files in the Development folder are read-only
FindCheckedOut(new DirectoryInfo(tbSourceSafe.Text));
dgv.DataSource = _CheckedOut;
SetColumnWidth();
}
private void syncAllToolStripMenuItem_Click(object sender, EventArgs e)
{
dgv.EndEdit();
foreach (FileCompare fc in _CheckedOut)
{
fc.MoveToDevelopment();
}
}
private void restoreUnchangedToolStripMenuItem_Click(object sender, EventArgs e)
{
dgv.EndEdit();
foreach (FileCompare fc in _CheckedOut)
{
if(!fc.Different || fc.DevModified == null)
fc.MoveToDevelopment();
}
}
private void restoreSelectedToolStripMenuItem_Click(object sender, EventArgs e)
{
dgv.EndEdit();
foreach (FileCompare fc in _CheckedOut)
{
if (fc.ToProcess) fc.MoveToDevelopment();
}
}
private void restoreAllToolStripMenuItem_Click(object sender, EventArgs e)
{
dgv.EndEdit();
foreach (FileCompare fc in _CheckedOut)
{
fc.MoveToDevelopment();
}
}
private List<FileCompare> SelectedList
{
get
{
dgv.EndEdit();
List<FileCompare> fcList = new List<FileCompare>();
foreach (DataGridViewCell dgc in dgv.SelectedCells)
{
FileCompare fc = dgv.Rows[dgc.RowIndex].DataBoundItem as FileCompare;
if (fc != null && fcList.Contains(fc) == false)
fcList.Add(fc);
}
return fcList;
}
}
private void compareToolStripMenuItem_Click(object sender, EventArgs e)
{
dgv.EndEdit();
// This should launch UltraCompare with the two files
// Which Item am I on
List<FileCompare> fcList = SelectedList;
foreach (FileCompare fc in fcList)
{
CompareOneFile(fc.FileName, fc.SSFileName);
}
}
private static void CompareOneFile(string fileDev, string fileSS)
{
Console.WriteLine("Compare {0} and {1}", fileDev, fileSS);
string progname = string.Empty;
if (System.IO.File.Exists(@"C:\Program Files\IDM Computer Solutions\UltraCompare\UC.exe"))
progname = @"C:\Program Files\IDM Computer Solutions\UltraCompare\UC.exe";
if (System.IO.File.Exists(@"C:\Program Files (x86)\IDM Computer Solutions\UltraCompare\UC.exe"))
progname = @"C:\Program Files (x86)\IDM Computer Solutions\UltraCompare\UC.exe";
// string cmd = string.Format("\"{0}\" -t \"{1}\" \"{2}\"", progname, fc.FileName, fc.SSFileName);
System.Diagnostics.ProcessStartInfo psi =
new System.Diagnostics.ProcessStartInfo(progname, string.Format(@" -t ""{0}"" ""{1}""", fileDev, fileSS));
System.Diagnostics.Process prc = System.Diagnostics.Process.Start(psi);
}
private void restoreToolStripMenuItem_Click(object sender, EventArgs e)
{
dgv.EndEdit();
List<FileCompare> fcList = SelectedList;
foreach (FileCompare fc in fcList)
{
fc.MoveToDevelopment();
}
}
private void differentToolStripMenuItem_Click(object sender, EventArgs e)
{
dgv.EndEdit();
ClearResults();
// Walk though Source Safe and check to see if the files in the Development folder are read-only
FindDifferent(new DirectoryInfo(tbSourceSafe.Text));
dgv.DataSource = _CheckedOut;
SetColumnWidth();
}
private void SetColumnWidth()
{
IsLoading = true;
if (Properties.Settings.Default["Widths"] == null)
{
dgv.Columns[0].Width = 60;
dgv.Columns[1].Visible = false;
dgv.Columns[2].Width = 125;
dgv.Columns[3].Width = 125;
dgv.Columns[4].Width = 50;
dgv.Columns[5].Width = 500;
}
else
{
for (int i = 0; i < Properties.Settings.Default.Widths.Count; i++)
{
string sWidth = Properties.Settings.Default.Widths[i];
if (sWidth == "Invisible")
dgv.Columns[i].Visible = false;
else
dgv.Columns[i].Width = int.Parse(sWidth);
}
}
dgv.Columns[1].Visible = false;
IsLoading = false;
}
private void FindDifferent(DirectoryInfo di)
{
FindDifferent(di.GetFiles());
FindDifferent(di.GetDirectories());
}
private void FindDifferent(DirectoryInfo[] directoryInfoList)
{
foreach (DirectoryInfo di in directoryInfoList)
FindDifferent(di);
}
private void FindDifferent(FileInfo[] fileInfoList)
{
foreach (FileInfo fi in fileInfoList)
FindDifferent(fi);
}
private void FindDifferent(FileInfo fi)
{
if (fi.Name.ToLower().EndsWith("scc")) return;
if (fi.Name.ToLower().EndsWith("sln")) return;
if (fi.Name.ToLower().EndsWith("csproj"))
{
// Find files that have been added to the new Project
List<string> compileList = GetCompileList(fi.FullName);
FileInfo fi1csproj = new FileInfo(fi.FullName.Replace(tbSourceSafe.Text, tbDevelopment.Text));
if (fi1csproj.Exists)
{
List<string> compileList1 = GetCompileList(fi1csproj.FullName);
CompareLists(compileList, compileList1, fi, fi1csproj);
}
return;
}
if (fi.Name.ToLower().EndsWith("licx")) return;
FileInfo fiD = new FileInfo(fi.FullName.Replace(tbSourceSafe.Text, tbDevelopment.Text));
FileInfo fiS = fi;
// Only check Read-Only flag, other attributes are unimportant
if (fiS.LastWriteTimeUtc != fiD.LastWriteTimeUtc || (fiS.Attributes & FileAttributes.ReadOnly ) != (fiD.Attributes & FileAttributes.ReadOnly ))
AddToResults(fi, fiD);
}
private void dgv_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e)
{
if (!IsLoading)
{
System.Collections.Specialized.StringCollection widths = new System.Collections.Specialized.StringCollection();
foreach (DataGridViewColumn col in dgv.Columns)
widths.Add(col.Visible ? col.Width.ToString() : "Invisible");
Properties.Settings.Default.Widths = widths;
Properties.Settings.Default.Save();
}
}
private bool _OnlyContentDifferent = false;
private void contentDifferentToolStripMenuItem_Click(object sender, EventArgs e)
{
dgv.EndEdit();
ClearResults();
_OnlyContentDifferent = true;
// Walk though Source Safe and check to see if the files in the Development folder are read-only
FindDifferent(new DirectoryInfo(tbSourceSafe.Text));
_OnlyContentDifferent = false;
dgv.DataSource = _CheckedOut;
SetColumnWidth();
}
private void frmSync_LocationChanged(object sender, EventArgs e)
{
Rectangle rec = Screen.GetWorkingArea(this);
int newLeft = Left;
int newTop = Top;
if (Math.Abs(Left - rec.X) < 10) newLeft = rec.X;
if (Math.Abs(Top - rec.Y) < 10) newTop = rec.Y;
if (Math.Abs(rec.X + rec.Width - Right) < 10) newLeft = rec.X + rec.Width - Width;
if (Math.Abs(rec.Y + rec.Height - Bottom) < 10) newTop = rec.Y + rec.Height - Height;
if (newTop != Top || newLeft != Left)
Location = new Point(newLeft, newTop);
}
private void restoreReadOnlyToolStripMenuItem_Click(object sender, EventArgs e)
{
dgv.EndEdit();
foreach (FileCompare fc in _CheckedOut)
{
if (fc.ReadOnly) fc.MoveToDevelopment();
}
}
private void listToClipboardToolStripMenuItem_Click(object sender, EventArgs e)
{
RichTextBox rtb = new RichTextBox();
Font fntNormal = new Font("Arial", 10, FontStyle.Regular);
rtb.Font = fntNormal;
Font fntBold = new Font("Arial", 12, FontStyle.Bold);
Font fntItalic = new Font("Arial", 11, FontStyle.Italic);
Font fntBoldItalic = new Font("Arial", 14, FontStyle.Bold | FontStyle.Italic);
StringBuilder sb = new StringBuilder();
dgv.EndEdit();
if (HasFmtXML(_CheckedOut))
{
sb.Append("* This change includes format changes which must be loaded into the databases.\r\n\r\n");
AddText(rtb, fntBoldItalic, "*\tThis change includes format changes\r\n\twhich must be loaded into the databases.",Color.Orange);
AddText(rtb, fntNormal, "\r\n\r\n",Color.Black);
}
if (HasPromsFixes(_CheckedOut))
{
sb.Append("* This change includes changes to PROMSFixes.SQL which must be loaded into the databases.\r\n\r\n");
AddText(rtb, fntBoldItalic, "*\tThis change includes changes to PROMSFixes.SQL\r\n\twhich must be loaded into the databases.\r\n\r\n", Color.Red);
AddText(rtb, fntNormal, "\r\n\r\n", Color.Black);
}
sb.Append("Code Changes:\r\n\r\n");
AddText(rtb, fntBold, "Code Changes:");
AddText(rtb, fntNormal, "\r\n\r\n");
int lenFolder = tbDevelopment.Text.Length;
string lastFolder = "";
foreach (FileCompare fc in _CheckedOut)
{
if (fc.ToProcess)
{
FileInfo fi = new FileInfo(fc.FileName);
FileInfo fis = new FileInfo(fc.SSFileName);
string folder = fi.Directory.FullName.Substring(lenFolder + 1);
if (folder != lastFolder)
{
sb.Append(folder + ":\r\n");
AddText(rtb, fntItalic, folder + ":\r\n");
lastFolder = folder;
}
sb.Append((fis.Exists ? "" : " =>NEW") + "\t" + fi.Name + "\r\n");
AddText(rtb, fntNormal, (fis.Exists ? "" : " =>NEW") + "\t" + fi.Name + "\r\n");
AddIndent(rtb);
}
}
sb.Append("\r\nInternal Release:\r\n\r\n");
sb.Append("\r\nExternal Release:\r\n\r\n");
sb.Append("\r\nTesting Performed:\r\n\r\n");
sb.Append("\r\nTesting Requirements:\r\n\r\n");
sb.Append("\r\nManual Changes/Additions:\r\n\r\n");
AddText(rtb, fntNormal, "\r\n");
AddText(rtb, fntBold, "Internal Release:");
AddText(rtb, fntNormal, "\r\n\r\n\r\n\r\n");
AddText(rtb, fntBold, "External Release:");
AddText(rtb, fntNormal, "\r\n\r\n\r\n\r\n");
AddText(rtb, fntBold, "Testing Performed:");
AddText(rtb, fntNormal, "\r\n\r\n\r\n\r\n");
AddText(rtb, fntBold, "Testing Requirements:");
AddText(rtb, fntNormal, "\r\n\r\n\r\n\r\n");
AddText(rtb, fntBold, "Manual Changes/Additions:");
AddText(rtb, fntNormal, "\r\n\r\n");
try
{
Clipboard.Clear();
DataObject dao = new DataObject();
dao.SetData(DataFormats.Text,sb.ToString());
dao.SetData(DataFormats.Rtf, rtb.Rtf);
Clipboard.SetDataObject(dao, true, 10, 500);
if (RTFFile != null)
{
rtb.SaveFile(RTFFile);
System.Diagnostics.Process.Start(RTFFile);
}
else
MessageBox.Show(sb.ToString(), "Copied to Clipboard", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
StringBuilder sb2 = new StringBuilder();
string prefix = "";
while (ex != null)
{
sb2.AppendLine(string.Format("{0}{1} - {2}",prefix, ex.GetType().Name, ex.Message));
prefix += " ";
}
MessageBox.Show(sb2.ToString(), "Error saving Clipboard", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private bool HasPromsFixes(List<FileCompare> _CheckedOut)
{
foreach (FileCompare fc in _CheckedOut)
{
if (fc.ToProcess && fc.FileName.ToLower().Contains("promsfixes.sql"))
return true;
}
return false;
}
private bool HasFmtXML(List<FileCompare> _CheckedOut)
{
foreach (FileCompare fc in _CheckedOut)
{
if (fc.ToProcess && fc.FileName.ToLower().Contains("\\fmtxml\\"))
return true;
}
return false;
}
private void AddIndent(RichTextBox rtb)
{
rtb.Select(rtb.TextLength, 0);
rtb.SelectionIndent = (int) _DPI;
rtb.SelectedText = "\r\n";
rtb.Select(rtb.TextLength, 0);
rtb.SelectionIndent = 0;
}
private static void AddText(RichTextBox rtb, Font font, string txt)
{
rtb.Select(rtb.TextLength, 0);
rtb.SelectionFont = font;
rtb.SelectedText = txt;
}
private static void AddText(RichTextBox rtb, Font font, string txt, Color myColor)
{
rtb.Select(rtb.TextLength, 0);
rtb.SelectionFont = font;
rtb.SelectionColor = myColor;
rtb.SelectedText = txt;
rtb.Select(rtb.TextLength, 0);
rtb.SelectionColor = Color.Black;
}
private void dgv_MouseDown(object sender, MouseEventArgs e)
{
dgv.ClearSelection();
DataGridView.HitTestInfo info = dgv.HitTest(e.X, e.Y);
if (info.RowIndex < 0) return;
dgv.CurrentCell = dgv[0, info.RowIndex];
dgv.Rows[info.RowIndex].Selected = true;
}
private void selectAllToolStripMenuItem_Click(object sender, EventArgs e)
{
if (_CheckedOut == null || _CheckedOut.Count == 0)
{
MessageBox.Show("Don't you really think you should get a list first!", "Hey Moron!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Stop);
return;
}
foreach (FileCompare fc in _CheckedOut) fc.ToProcess = true;
dgv.Refresh();
}
private void selectNoneToolStripMenuItem_Click(object sender, EventArgs e)
{
if (_CheckedOut == null || _CheckedOut.Count == 0)
{
MessageBox.Show("Don't you really think you should get a list first!", "Hey Moron!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Stop);
return;
}
foreach (FileCompare fc in _CheckedOut) fc.ToProcess = false;
dgv.Refresh();
}
private void compareSourceSafeToolStripMenuItem_Click(object sender, EventArgs e)
{
// Compare SS version with SS version from Mailbox
dgv.EndEdit();
// This should launch UltraCompare with the two files
// Which Item am I on
List<FileCompare> fcList = SelectedList;
foreach (FileCompare fc in fcList)
{
CompareOneFile(fc.SSFileName, fc.SSFileName.Replace(tbSourceSafe.Text, tbSSMailBox.Text));
}
}
private void compareMailboxToolStripMenuItem_Click(object sender, EventArgs e)
{
// Compare MailBox version with Mailbox Source Safe version
dgv.EndEdit();
// This should launch UltraCompare with the two files
// Which Item am I on
List<FileCompare> fcList = SelectedList;
foreach (FileCompare fc in fcList)
{
CompareOneFile(fc.FileName, fc.FileName.Replace(tbDevelopment.Text, tbSSMailBox.Text));
}
}
}
}