SourceCode/PROMS/Formats/frmFormatCopy.cs

159 lines
5.1 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.IO;
using System.Windows.Forms;
namespace Formats
{
public partial class frmFormatCopy : Form
{
public frmFormatCopy()
{
InitializeComponent();
SetDefaults();
}
private void SetDefaults()
{
string savedFormatPath = Properties.Settings.Default.FormatPath ?? ""; // Get the last saved format copy path
if (savedFormatPath.Length > 0)
txbxPROMSFormatsPath.Text = savedFormatPath;
else
{
string curFolder = Environment.CurrentDirectory; // C:\development/PROMS/Formats/bin/debug
int idx = curFolder.ToUpper().IndexOf(@"\PROMS\");
txbxPROMSFormatsPath.Text = curFolder.Substring(0, idx);
}
}
// This will create the folders if they don't exist or clear the contents if they do.
private void ClearOrCreateDestinationFolders(string path)
{
DirectoryInfo di = new DirectoryInfo(path);
if (di.Exists == false) //return;
{
DialogResult dlgrslt = DialogResult.No;
dlgrslt = MessageBox.Show(string.Format("{0} does not exist. Create it?", path), "Create Folder?", MessageBoxButtons.YesNo);
if (dlgrslt == DialogResult.Yes)
{
di.Create();
di.CreateSubdirectory("fmtall");
di.CreateSubdirectory("genmacall");
}
else
return;
}
// clear the destination fmtall folder
FileInfo[] fis;
DirectoryInfo[] diAry = di.GetDirectories("fmtall");
DirectoryInfo di_fmtgen;
if (diAry.Length == 0)
di.CreateSubdirectory("fmtall");
else
{
// clear the destination fmtall folder
di_fmtgen = diAry[0];
fis = di_fmtgen.GetFiles("*.xml");
foreach (FileInfo fi in fis)
{
if (fi.IsReadOnly) fi.IsReadOnly = false;
fi.Delete();
}
}
diAry = di.GetDirectories("genmacall");
if (diAry.Length == 0)
di.CreateSubdirectory("genmacall");
else
{
// clear the destination genmacall folder
di_fmtgen = di.GetDirectories("genmacall")[0];
fis = di_fmtgen.GetFiles("*.svg");
foreach (FileInfo fi in fis)
{
if (fi.IsReadOnly) fi.IsReadOnly = false;
fi.Delete();
}
}
}
private void btnBrowse_Click(object sender, EventArgs e)
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
fbd.SelectedPath = txbxPROMSFormatsPath.Text;
if (fbd.ShowDialog() == DialogResult.OK)
{
if (Directory.Exists(fbd.SelectedPath)) txbxPROMSFormatsPath.Text = fbd.SelectedPath + @"\";
}
if (!txbxPROMSFormatsPath.Text.EndsWith(@"\")) txbxPROMSFormatsPath.Text += @"\";
}
private bool ExcludeFromCopy(string fn)
{
// don't copy formats whos file name starts with..
string[] excludeThese = { "WPS", "WEP", "WPB", "VCBEPP" };
foreach (string excludeThis in excludeThese)
if (fn.ToUpper().StartsWith(excludeThis)) return true;
return false;
}
private void btnCopyFormats_Click(object sender, EventArgs e)
{
// make sure there is an ending back slash in the destination path
if (!txbxPROMSFormatsPath.Text.EndsWith(@"\")) txbxPROMSFormatsPath.Text += @"\";
// There should be a "fmtall" and "genmacall" folder in the delelopment project folder
// ex: C:\development\PROMS\Formats\fmtall and C:\development\PROMS\Formats\genmacall
string destFmtallPath = txbxPROMSFormatsPath.Text + @"fmtall\";
string destGenmacallPath = txbxPROMSFormatsPath.Text + @"genmacall\";
string srcFmtallPath = @"..\..\"; // up to levels from startup path
// clear the destination fmtall and genmacall folders
ClearOrCreateDestinationFolders(txbxPROMSFormatsPath.Text);
DirectoryInfo di = new DirectoryInfo(srcFmtallPath);
if (di.Exists == false) return;
// copy the fmtall format files
DirectoryInfo di_fmtgen = di.GetDirectories("fmtall")[0];
FileInfo[] fis = di_fmtgen.GetFiles("*.xml");
foreach (FileInfo fi in fis)
{
if (!ExcludeFromCopy(fi.Name))
{
FileInfo fio = new FileInfo(destFmtallPath + fi.Name);
if (fio.Exists && fio.IsReadOnly) fio.IsReadOnly = false;
fi.CopyTo(fio.FullName, true);
fio = new FileInfo(destFmtallPath + fi.Name);
if (fio.Exists && fio.IsReadOnly) fio.IsReadOnly = false;
}
}
// copy the genmacall format files
di_fmtgen = di.GetDirectories("genmacall")[0];
fis = di_fmtgen.GetFiles("*.svg");
foreach (FileInfo fi in fis)
{
if (!ExcludeFromCopy(fi.Name))
{
FileInfo fio = new FileInfo(destGenmacallPath + fi.Name);
if (fio.Exists && fio.IsReadOnly) fio.IsReadOnly = false;
fi.CopyTo(fio.FullName, true);
fio = new FileInfo(destGenmacallPath + fi.Name);
if (fio.Exists && fio.IsReadOnly) fio.IsReadOnly = false;
}
}
Properties.Settings.Default.FormatPath = txbxPROMSFormatsPath.Text.Substring(0,txbxPROMSFormatsPath.Text.Length-1); // save the copy format path minus the ending backslash
Properties.Settings.Default.Save();
if(MessageBox.Show("Do you want to end the Format Copier?","Formats Copied.", MessageBoxButtons.YesNo, MessageBoxIcon.Question)== DialogResult.Yes)Application.Exit();
}
private void buttonX2_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}