SourceCode/PROMS/Sync/SyncMany/frmSyncMany.cs
2010-03-26 12:10:02 +00:00

269 lines
7.9 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;
namespace SyncMany
{
public partial class frmSyncMany : Form
{
public string MyStatus
{
get { return tsslStatus.Text; }
set { tsslStatus.Text = value; Application.DoEvents(); }
}
private string _MyFileName;
public string MyFileName
{
get { return _MyFileName; }
set { _MyFileName = value; ofd.FileName = value; sfd.FileName = value; }
}
SyncFile _MySyncFile = new SyncFile();
public SyncFile MySyncFile
{
get { return _MySyncFile; }
set
{
_MySyncFile = value;
ResetOriginalSync();
dgv.DataSource = value.Items;
dgv.AutoResizeColumns();
}
}
private void ResetOriginalSync()
{
_OriginalSync = ObjectSerializer<SyncFile>.StringSerialize(MySyncFile);
}
private string _SourceFolder;
public string SourceFolder
{
get { return _SourceFolder; }
set { _SourceFolder = value; }
}
private string _DestinationFolder;
public string DestinationFolder
{
get { return _DestinationFolder; }
set { _DestinationFolder = value; }
}
public frmSyncMany()
{
InitializeComponent();
compareItemsBindingSource.DataSource = MySyncFile.Items;
}
public string _OriginalSync = "";
public bool IsDirty
{
get
{
string tmp = ObjectSerializer<SyncFile>.StringSerialize(MySyncFile);
return tmp != _OriginalSync;
}
}
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
if (ofd.ShowDialog() == DialogResult.OK)
{
MySyncFile = ObjectSerializer<SyncFile>.ReadFile(MyFileName);
}
}
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
if (MyFileName == null)
saveAsToolStripMenuItem_Click(sender, e);
else
{
ObjectSerializer<SyncFile>.WriteFile(MySyncFile, MyFileName);
ResetOriginalSync();
}
}
private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
{
if (sfd.ShowDialog() == DialogResult.OK)
{
ObjectSerializer<SyncFile>.WriteFile(MySyncFile, MyFileName);
ResetOriginalSync();
}
}
private void ofd_FileOk(object sender, CancelEventArgs e)
{
MyFileName = ofd.FileName;
}
private void sfd_FileOk(object sender, CancelEventArgs e)
{
MyFileName = sfd.FileName;
}
private void addToolStripMenuItem_Click(object sender, EventArgs e)
{
frmAddCompareItem myCompareItem = new frmAddCompareItem(SourceFolder,DestinationFolder);
if (myCompareItem.ShowDialog() == DialogResult.OK)
{
SourceFolder = myCompareItem.SourceFolder;
DestinationFolder = myCompareItem.DestinationFolder;
MySyncFile.Items.Add(new CompareItem(myCompareItem.SourceName, myCompareItem.DestinationName));
//compareItemsBindingSource.Add(new CompareItem(myCompareItem.SourceName, myCompareItem.DestinationName));
compareItemsBindingSource.DataSource = null;
compareItemsBindingSource.DataSource = MySyncFile.Items;
dgv.DataSource = null;
dgv.DataSource = compareItemsBindingSource;
dgv.Refresh();
}
}
private void compareToolStripMenuItem1_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in dgv.SelectedRows)
{
CompareItem item = row.DataBoundItem as CompareItem;
if (item != null)
{
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(@"C:\Program Files\IDM Computer Solutions\UltraCompare\UC.exe",
string.Format(@" -t ""{0}"" ""{1}""", item.Source, item.DestinationItem));
System.Diagnostics.Process prc = System.Diagnostics.Process.Start(psi);
}
}
}
private void frmSyncMany_Load(object sender, EventArgs e)
{
LoadSettings();
this.Move +=new EventHandler(frmSyncMany_Move);
this.Resize +=new EventHandler(frmSyncMany_Resize);
FileInfo myInfo = new FileInfo(MyFileName);
if (myInfo.Exists)
MySyncFile = ObjectSerializer<SyncFile>.ReadFile(MyFileName);
else
MySyncFile = new SyncFile();
}
private void copySourceToDestinationToolStripMenuItem_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in dgv.SelectedRows)
{
CompareItem item = row.DataBoundItem as CompareItem;
if (item != null)
{
item.CopySourceToDestination();
}
dgv.Refresh();
}
}
private void copyDestinationToSourceToolStripMenuItem_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in dgv.SelectedRows)
{
CompareItem item = row.DataBoundItem as CompareItem;
if (item != null)
{
item.CopyDestinationToSource();
}
}
dgv.Refresh();
}
private void frmSyncMany_FormClosing(object sender, FormClosingEventArgs e)
{
if (IsDirty)
{
DialogResult result = MessageBox.Show("Do you want to Save changes?","Save Changes", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
switch (result)
{
case DialogResult.Cancel:
// Don't close
e.Cancel = true;
return;
break;
case DialogResult.No:
// Don't do anything
break;
case DialogResult.Yes:
saveToolStripMenuItem_Click(this, e);
break;
}
}
SaveSettings();
}
private string GetPropertyString(string propertyName)
{
object prop = Properties.Settings.Default[propertyName];
return prop == null ? "" : prop.ToString();
}
private void LoadSettings()
{
string myDocuments = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
if (GetPropertyString("Location") != "")
this.Location = Properties.Settings.Default.Location;
if ((Properties.Settings.Default["Size"] ?? "") != "")
this.Size = Properties.Settings.Default.Size;
this.WindowState = Properties.Settings.Default.WindowState;
string test = GetPropertyString("FileName");
if (GetPropertyString("FileName") != "")
MyFileName = Properties.Settings.Default.FileName;
else
MyFileName = myDocuments + @"\SyncList.XML";
SetupOpenFileDialog(MyFileName);
if (GetPropertyString("SourceFolder") != "")
SourceFolder = Properties.Settings.Default.SourceFolder;
else
SourceFolder = myDocuments;
if (GetPropertyString("DestinationFolder") != "")
DestinationFolder = Properties.Settings.Default.DestinationFolder;
else
DestinationFolder = myDocuments;
}
private string SetupOpenFileDialog(string fileName)
{
FileInfo fi = new FileInfo(fileName);
sfd.InitialDirectory = ofd.InitialDirectory = fi.Directory.FullName;
sfd.FileName = ofd.FileName = fi.Name;
return ofd.InitialDirectory;
}
private void SaveSettings()
{
Properties.Settings.Default.WindowState = this.WindowState;
Properties.Settings.Default.FileName = MyFileName;
Properties.Settings.Default.SourceFolder = SourceFolder;
Properties.Settings.Default.DestinationFolder = DestinationFolder;
Properties.Settings.Default.Save();
}
private void frmSyncMany_Move(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Normal)
{
Properties.Settings.Default.Location = this.Location;
Properties.Settings.Default.Size = this.Size;
}
}
private void frmSyncMany_Resize(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Normal)
{
Properties.Settings.Default.Location = this.Location;
Properties.Settings.Default.Size = this.Size;
}
}
private void removeToolStripMenuItem_Click(object sender, EventArgs e)
{
int index = dgv.SelectedRows[0].Index;
dgv.Rows[index].Selected = false;
MySyncFile.Items.RemoveAt(index);
compareItemsBindingSource.DataSource = MySyncFile.Items;
dgv.DataSource = null;
dgv.DataSource = compareItemsBindingSource;
dgv.Refresh();
}
private void dgv_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.RowIndex >= 0)
{
dgv.Rows[e.RowIndex].Selected = true;
dgv.CurrentCell = dgv[0, e.RowIndex];
}
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
}
}