Commit for development environment setup

This commit is contained in:
2023-06-19 16:12:33 -04:00
parent be72063a3c
commit bbce2ad0a6
2209 changed files with 1171775 additions and 625 deletions

View File

@@ -0,0 +1,268 @@
/*********************************************************************************************
* Copyright 2004 - Volian Enterprises, Inc. All rights reserved.
* Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
* ------------------------------------------------------------------------------
* $Workfile: About.cs $ $Revision: 5 $
* $Author: Jsj $ $Date: 1/02/08 1:38p $
*
* $History: About.cs $
*
* ***************** Version 5 *****************
* User: Jsj Date: 1/02/08 Time: 1:38p
* Updated in $/LibSource/Utils
* upped copyright to 2008
*
* ***************** Version 4 *****************
* User: Jsj Date: 1/02/07 Time: 1:53p
* Updated in $/LibSource/Utils
* uppped copyright to 2007
*
* ***************** Version 3 *****************
* User: Jsj Date: 7/18/06 Time: 11:40a
* Updated in $/LibSource/Utils
* turned off Microsoft Solution Provider logo.
*
* ***************** Version 2 *****************
* User: Jsj Date: 1/03/06 Time: 9:08a
* Updated in $/LibSource/Utils
* upped copyright to year 2005
*
* ***************** Version 1 *****************
* User: Kathy Date: 7/27/04 Time: 8:34a
* Created in $/LibSource/Utils
*********************************************************************************************/
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace Utils
{
/// <summary>
/// Summary description for About.
/// </summary>
public class AboutDlg : System.Windows.Forms.Form
{
private System.Windows.Forms.Button btnHlpAbtOK;
private System.Windows.Forms.Label CopyrightMessage;
private System.Windows.Forms.PictureBox pictureBox2;
private System.Windows.Forms.Label lblProgName;
private System.Windows.Forms.Label lblVerRelNums;
private System.Windows.Forms.Label lblSerialNumber;
private System.Windows.Forms.Label lblSerialNumTitle;
private System.Windows.Forms.Label lblUserID;
private System.Windows.Forms.LinkLabel VolianWebLink;
private System.Windows.Forms.Label lblLicenseTab;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public AboutDlg(string ProgName, string SerialNoStr, string SnTitleTab, string SerialNoTitle, string VerRel, string cpyrght, string UIDstr)
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
CopyrightMessage.Text = cpyrght;
this.lblProgName.Text = ProgName;
lblVerRelNums.Text = VerRel;
lblSerialNumber.Text = SerialNoStr;
lblSerialNumTitle.Text = SerialNoTitle;
lblUserID.Text = UIDstr;
lblLicenseTab.Text = SnTitleTab;
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(AboutDlg));
this.btnHlpAbtOK = new System.Windows.Forms.Button();
this.lblProgName = new System.Windows.Forms.Label();
this.lblVerRelNums = new System.Windows.Forms.Label();
this.lblSerialNumber = new System.Windows.Forms.Label();
this.CopyrightMessage = new System.Windows.Forms.Label();
this.lblUserID = new System.Windows.Forms.Label();
this.pictureBox2 = new System.Windows.Forms.PictureBox();
this.lblSerialNumTitle = new System.Windows.Forms.Label();
this.VolianWebLink = new System.Windows.Forms.LinkLabel();
this.lblLicenseTab = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// btnHlpAbtOK
//
this.btnHlpAbtOK.BackColor = System.Drawing.Color.YellowGreen;
this.btnHlpAbtOK.Font = new System.Drawing.Font("Tahoma", 10.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.btnHlpAbtOK.Location = new System.Drawing.Point(144, 160);
this.btnHlpAbtOK.Name = "btnHlpAbtOK";
this.btnHlpAbtOK.Size = new System.Drawing.Size(96, 32);
this.btnHlpAbtOK.TabIndex = 0;
this.btnHlpAbtOK.Text = "OK";
this.btnHlpAbtOK.Click += new System.EventHandler(this.btnHlpAbtOK_Click);
//
// lblProgName
//
this.lblProgName.BackColor = System.Drawing.Color.Transparent;
this.lblProgName.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.lblProgName.Location = new System.Drawing.Point(8, 8);
this.lblProgName.Name = "lblProgName";
this.lblProgName.Size = new System.Drawing.Size(360, 19);
this.lblProgName.TabIndex = 1;
this.lblProgName.Text = "Program Name";
this.lblProgName.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// lblVerRelNums
//
this.lblVerRelNums.BackColor = System.Drawing.Color.Transparent;
this.lblVerRelNums.Font = new System.Drawing.Font("Arial", 10.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.lblVerRelNums.Location = new System.Drawing.Point(8, 40);
this.lblVerRelNums.Name = "lblVerRelNums";
this.lblVerRelNums.Size = new System.Drawing.Size(352, 24);
this.lblVerRelNums.TabIndex = 2;
this.lblVerRelNums.Text = "Version 0 Release 0";
this.lblVerRelNums.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// lblSerialNumber
//
this.lblSerialNumber.BackColor = System.Drawing.Color.Transparent;
this.lblSerialNumber.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.lblSerialNumber.Location = new System.Drawing.Point(8, 72);
this.lblSerialNumber.Name = "lblSerialNumber";
this.lblSerialNumber.Size = new System.Drawing.Size(360, 16);
this.lblSerialNumber.TabIndex = 3;
this.lblSerialNumber.Text = "Serial Number: xx";
this.lblSerialNumber.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// CopyrightMessage
//
this.CopyrightMessage.BackColor = System.Drawing.Color.Transparent;
this.CopyrightMessage.Font = new System.Drawing.Font("Arial", 6F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.CopyrightMessage.Location = new System.Drawing.Point(8, 192);
this.CopyrightMessage.Name = "CopyrightMessage";
this.CopyrightMessage.Size = new System.Drawing.Size(232, 16);
this.CopyrightMessage.TabIndex = 4;
this.CopyrightMessage.Text = " Copyright C 1988 - 2008 All Rights Reserved";
this.CopyrightMessage.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// lblUserID
//
this.lblUserID.BackColor = System.Drawing.Color.Transparent;
this.lblUserID.Font = new System.Drawing.Font("Arial", 7.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.lblUserID.Location = new System.Drawing.Point(8, 136);
this.lblUserID.Name = "lblUserID";
this.lblUserID.Size = new System.Drawing.Size(360, 16);
this.lblUserID.TabIndex = 6;
this.lblUserID.Text = "User ID: xxxxx";
this.lblUserID.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// pictureBox2
//
this.pictureBox2.Enabled = false;
this.pictureBox2.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox2.Image")));
this.pictureBox2.Location = new System.Drawing.Point(272, 160);
this.pictureBox2.Name = "pictureBox2";
this.pictureBox2.Size = new System.Drawing.Size(69, 32);
this.pictureBox2.TabIndex = 7;
this.pictureBox2.TabStop = false;
this.pictureBox2.Visible = false;
//
// lblSerialNumTitle
//
this.lblSerialNumTitle.BackColor = System.Drawing.Color.Transparent;
this.lblSerialNumTitle.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.lblSerialNumTitle.Location = new System.Drawing.Point(112, 96);
this.lblSerialNumTitle.Name = "lblSerialNumTitle";
this.lblSerialNumTitle.Size = new System.Drawing.Size(256, 32);
this.lblSerialNumTitle.TabIndex = 8;
this.lblSerialNumTitle.Text = "Serial Number Title";
//
// VolianWebLink
//
this.VolianWebLink.Location = new System.Drawing.Point(248, 192);
this.VolianWebLink.Name = "VolianWebLink";
this.VolianWebLink.Size = new System.Drawing.Size(112, 16);
this.VolianWebLink.TabIndex = 9;
this.VolianWebLink.TabStop = true;
this.VolianWebLink.Text = "Volian Enterprises Inc.";
this.VolianWebLink.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.VolianWebLink.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked);
//
// lblLicenseTab
//
this.lblLicenseTab.BackColor = System.Drawing.Color.Transparent;
this.lblLicenseTab.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.lblLicenseTab.Location = new System.Drawing.Point(8, 96);
this.lblLicenseTab.Name = "lblLicenseTab";
this.lblLicenseTab.Size = new System.Drawing.Size(104, 24);
this.lblLicenseTab.TabIndex = 10;
this.lblLicenseTab.Text = "Licenced To:";
//
// AboutDlg
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 12);
this.BackColor = System.Drawing.SystemColors.GrayText;
this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage")));
this.ClientSize = new System.Drawing.Size(370, 209);
this.Controls.Add(this.lblLicenseTab);
this.Controls.Add(this.VolianWebLink);
this.Controls.Add(this.lblSerialNumTitle);
this.Controls.Add(this.pictureBox2);
this.Controls.Add(this.lblUserID);
this.Controls.Add(this.CopyrightMessage);
this.Controls.Add(this.lblSerialNumber);
this.Controls.Add(this.lblVerRelNums);
this.Controls.Add(this.lblProgName);
this.Controls.Add(this.btnHlpAbtOK);
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 6F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "AboutDlg";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "About";
this.Load += new System.EventHandler(this.AboutDlg_Load);
this.ResumeLayout(false);
}
#endregion
private void btnHlpAbtOK_Click(object sender, System.EventArgs e)
{
this.Close();
}
private void linkLabel1_LinkClicked(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
{
System.Diagnostics.Process.Start("www.volian.com");
}
private void AboutDlg_Load(object sender, System.EventArgs e)
{
}
}
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

View File

@@ -0,0 +1,55 @@
using System.Reflection;
using System.Runtime.CompilerServices;
//
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
//
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
//
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.1.*")]
//
// In order to sign your assembly you must specify a key to use. Refer to the
// Microsoft .NET Framework documentation for more information on assembly signing.
//
// Use the attributes below to control which key is used for signing.
//
// Notes:
// (*) If no key is specified, the assembly is not signed.
// (*) KeyName refers to a key that has been installed in the Crypto Service
// Provider (CSP) on your machine. KeyFile refers to a file which contains
// a key.
// (*) If the KeyFile and the KeyName values are both specified, the
// following processing occurs:
// (1) If the KeyName can be found in the CSP, that key is used.
// (2) If the KeyName does not exist and the KeyFile does exist, the key
// in the KeyFile is installed into the CSP and used.
// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility.
// When specifying the KeyFile, the location of the KeyFile should be
// relative to the project output directory which is
// %Project Directory%\obj\<configuration>. For example, if your KeyFile is
// located in the project directory, you would specify the AssemblyKeyFile
// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
// documentation for more information on this.
//

View File

@@ -0,0 +1,57 @@
using System.Reflection;
using System.Runtime.CompilerServices;
//
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
//
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
//
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.1.*")]
//
// In order to sign your assembly you must specify a key to use. Refer to the
// Microsoft .NET Framework documentation for more information on assembly signing.
//
// Use the attributes below to control which key is used for signing.
//
// Notes:
// (*) If no key is specified, the assembly is not signed.
// (*) KeyName refers to a key that has been installed in the Crypto Service
// Provider (CSP) on your machine. KeyFile refers to a file which contains
// a key.
// (*) If the KeyFile and the KeyName values are both specified, the
// following processing occurs:
// (1) If the KeyName can be found in the CSP, that key is used.
// (2) If the KeyName does not exist and the KeyFile does exist, the key
// in the KeyFile is installed into the CSP and used.
// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility.
// When specifying the KeyFile, the location of the KeyFile should be
// relative to the project output directory which is
// %Project Directory%\obj\<configuration>. For example, if your KeyFile is
// located in the project directory, you would specify the AssemblyKeyFile
// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
// documentation for more information on this.
//
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyName("")]

View File

@@ -0,0 +1,185 @@
/*********************************************************************************************
* Copyright 2004 - Volian Enterprises, Inc. All rights reserved.
* Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
* ------------------------------------------------------------------------------
* $Workfile: CurSet.cs $ $Revision: 2 $
* $Author: Jsj $ $Date: 5/17/05 11:51a $
*
* $History: CurSet.cs $
*
* ***************** Version 2 *****************
* User: Jsj Date: 5/17/05 Time: 11:51a
* Updated in $/LibSource/Utils
* cleanup
*
* ***************** Version 1 *****************
* User: Kathy Date: 7/27/04 Time: 8:34a
* Created in $/LibSource/Utils
*********************************************************************************************/
using System;
using System.IO;
using System.Collections;
using System.Text;
using System.Windows.Forms;
namespace Utils
{
/// <summary>
/// Summary description for CurSet.
/// </summary>
public class CurSet
{
public string PathName;
public string DefaultDestFName; //[MAXPATH]
public string DefaultPlantFmt; //[10];
public string DefaultPrinter; //[4];
public ArrayList DefaultUserCBMsg; //[2][10];
public string DefaultUserFmt; //[3];
public ArrayList DefPenColors; //[8]
public short DefaultChangeBars;
public short DefaultDestination;
public short DefaultOriginals;
public short DefaultPagination;
public short DefaultPaperMacro;
public short DefaultPlotterType,DefaultPlotterPort,DefaultCIEType;
public short DontPrintStatusTree;
public short DisableDuplexPrinting;
private string[] SettingFiles={"..\\procs\\curset.dat", "~curset.dat"};
public CurSet(string pname)
{
PathName = pname;
}
public bool Create(UserRunTime usrRT)
{
// find file to copy from procs or system.
bool found = false;
int i=0;
while(found==false)
{
if (File.Exists(usrRT.ExeAdjust(SettingFiles[i])) == true)
found=true;
else
i++;
}
if (found==false) return false;
File.Copy(usrRT.ExeAdjust(SettingFiles[i]),"curset.dat");
PathName = "curset.dat";
return true;
}
private string ReadTheString(BinaryReader bw, int maxlen)
{
StringBuilder retStr = new StringBuilder(maxlen+1);
// read a series of characters until a null is found.
char ac;
bool done = false;
while(done==false)
{
ac = bw.ReadChar();
if (ac=='\0')
done=true;
else
retStr.Append(ac);
}
return retStr.ToString();
}
public bool Read()
{
BinaryReader br;
ArrayList DefaultUserCBMsg = new ArrayList(2);
ArrayList DefPenColors = new ArrayList(8);
FileStream fs;
FileInfo fi = new FileInfo(PathName);
try
{
fs = fi.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite );
br = new BinaryReader(fs,System.Text.ASCIIEncoding.ASCII);
}
catch (Exception e)
{
MessageBox.Show(e.ToString(),"CURSET.DAT Error");
return false;
}
try
{
DefaultDestination=br.ReadSByte();
DefaultChangeBars= br.ReadSByte();
DefaultOriginals=br.ReadSByte();
DefaultPagination=br.ReadSByte();
DefaultPrinter = ReadTheString(br,4);
DefaultPlantFmt = ReadTheString(br,10);
DefaultDestFName = ReadTheString(br,128);
DefaultPlotterType = br.ReadSByte();
DefaultPlotterPort = br.ReadSByte();
DefaultCIEType = br.ReadSByte();
short tmp;
for (int i=0;i<8;i++)
{
tmp = br.ReadSByte();
DefPenColors.Add(tmp);
}
DefaultPaperMacro = br.ReadSByte();
string stmp;
stmp = ReadTheString(br,10);
DefaultUserCBMsg.Add(stmp);
stmp = ReadTheString(br,10);
DefaultUserCBMsg.Add(stmp);
DontPrintStatusTree = br.ReadSByte();
DefaultUserFmt = ReadTheString(br,10);
DisableDuplexPrinting = br.ReadSByte();
br.Close();
}
catch(Exception e)
{
if(br!=null) br.Close();
}
fs.Close();
return true;
}
public bool Save(string filename)
{
// may be a different pathname, if so, change it.
if (filename.ToUpper() != PathName.ToUpper()) PathName = filename;
FileStream fs = new FileStream(PathName, FileMode.Create);
BinaryWriter w = new BinaryWriter(fs);
w.Write(DefaultDestination);
w.Write(DefaultChangeBars);
w.Write(DefaultOriginals);
w.Write(DefaultPagination);
w.Write(DefaultPrinter);
w.Write(DefaultPlantFmt);
w.Write(DefaultDestFName);
w.Write(DefaultPlotterType);
w.Write(DefaultPlotterPort);
w.Write(DefaultCIEType);
w.Write((short)DefPenColors[0]);
w.Write((short)DefPenColors[1]);
w.Write((short)DefPenColors[2]);
w.Write((short)DefPenColors[3]);
w.Write((short)DefPenColors[4]);
w.Write((short)DefPenColors[5]);
w.Write((short)DefPenColors[6]);
w.Write((short)DefPenColors[7]);
w.Write(DefaultPaperMacro);
w.Write((string)DefaultUserCBMsg[0]);
w.Write((string)DefaultUserCBMsg[1]);
w.Write(DontPrintStatusTree);
w.Write(DefaultUserFmt);
w.Write(DisableDuplexPrinting);
w.Close();
fs.Close();
return true;
}
}
}

View File

@@ -0,0 +1,139 @@
/*********************************************************************************************
* Copyright 2005 - Volian Enterprises, Inc. All rights reserved.
* Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
* ------------------------------------------------------------------------------
* $Workfile: DTI.cs $ $Revision: 1 $
* $Author: Kathy $ $Date: 3/08/05 1:46p $
*
* $History: DTI.cs $
*
* ***************** Version 1 *****************
* User: Kathy Date: 3/08/05 Time: 1:46p
* Created in $/LibSource/Utils
* Approval
*********************************************************************************************/
using System;
using System.Text;
namespace Utils
{
/// <summary>
/// Summary description for DTI.
/// </summary>
public class DTI
{
public static string DateTimeInit;
public static string SetDateTimeInit;
public static string Initials; // set from the user's run time.
public static string CurDate(string delim)
{
DateTime dt = DateTime.Today;
StringBuilder sdt = new StringBuilder(11);
if (delim == null || delim == "") delim = "-";
sdt.Append(dt.Month.ToString("D2"));
sdt.Append(delim);
sdt.Append(dt.Day.ToString("D2"));
sdt.Append(delim);
sdt.Append(dt.Year.ToString("D2"));
return sdt.ToString();
}
public static string CurTime()
{
DateTime dt = DateTime.Now;
StringBuilder sdt = new StringBuilder(11);
sdt.Append(dt.Hour.ToString("D2"));
sdt.Append(":");
sdt.Append(dt.Minute.ToString("D2"));
sdt.Append(":");
sdt.Append(dt.Second.ToString("D2"));
return sdt.ToString();
}
// ovrride == 0 default, don't do anything different
// ovrride == 1 means simply override "super"
// ovrride == 2 means force a reset of the DTI
public static void UpdateDateTimeInit(int ovrride)
{
StringBuilder ldti = new StringBuilder(19);
if (ovrride != 2 && (ovrride!=0 || Initials!="super"))
{
string tptr = CurDate(null);
ldti = new StringBuilder(12);
ldti.Insert(0,tptr.Substring(6,4));
ldti.Insert(4,tptr.Substring(0,2));
ldti.Insert(6,tptr.Substring(3,2));
ldti.Insert(8,CurTime().Substring(0,5));
ldti.Insert(13,Initials.PadRight(5,' ').Substring(0,5));
}
else
ldti.Insert(0,DTI.SetDateTimeInit);
// for dbase, replace spaces with '0' in date/time part & shift any non-number
// in first time field back to end of time field (?not sure why - this was
// done in 16-bit code.
for (int i=0;i<13&&ldti[i]!=0;i++) if (ldti[i]==' ') ldti[i]='0';
char c = ldti[10];
if (!Char.IsDigit(c))
{
ldti[10]=ldti[11];
ldti[11]=ldti[12];
ldti[12]=c;
}
if (ldti.ToString().Substring(0,8).Equals("19800101"))
{
ldti.Insert(0,SetDateTimeInit.Substring(0,13));
}
DateTimeInit = ldti.ToString();
}
// MakeDate is passed a date in the form of YYYYMMDD and translates it
// into MM/DD/YY (if ShortYear is true) or MM/DD/YYYY. condense
// removes any leading ' ' or 0 in month or day.
public static string MakeDate(string src, bool condense, bool ShortYear)
{
int[] DateOffset={4,5,47,6,7,47,2,3}; // 47 = '/'
StringBuilder datebuff = new StringBuilder(12);
for (int i=0; i<DateOffset.Length; i++)
{
if (DateOffset[i]<9)
datebuff.Append(src[DateOffset[i]]);
else
datebuff.Append(System.Convert.ToChar(DateOffset[i]));
}
// for Y2K the year should be four digits. Copy the first
// four characters from the source (i.e. 4 digit year) to
// the 'year part' of the destination.
if (!ShortYear)
{
datebuff.Append(" "); // add the two characters to replace in next stmt
for (int i=0;i<4;i++) datebuff[i+6]=src[i];
}
// if the condense flag is set, remove leading 0 or blank
// from day and month fields.
if(condense)
{
for (int i=0;i<datebuff.Length;i++)
{
bool r1 = (datebuff[0]==' ')?true:false;
bool r2 = (datebuff[3]=='0'||datebuff[3]==' ')?true:false;
int pos = 0;
if (!((r1 && i==0)||(r2 && i==3)))
{
datebuff[pos]=datebuff[i];
pos++;
}
}
}
return(datebuff.ToString());
}
}
}

View File

@@ -0,0 +1,73 @@
/*********************************************************************************************
* Copyright 2005 - Volian Enterprises, Inc. All rights reserved.
* Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
* ------------------------------------------------------------------------------
* $Workfile: DirSpace.cs $ $Revision: 1 $
* $Author: Kathy $ $Date: 3/08/05 1:46p $
*
* $History: DirSpace.cs $
*
* ***************** Version 1 *****************
* User: Kathy Date: 3/08/05 Time: 1:46p
* Created in $/LibSource/Utils
* Approval
*********************************************************************************************/
using System;
using System.IO;
using System.Runtime.InteropServices;
namespace Utils
{
/// <summary>
/// Summary description for DirSpace.
/// </summary>
public class DirSpace
{
static DirSpace()
{
}
[DllImport("kernel32.dll", CharSet=CharSet.Auto, SetLastError=true)]
public static extern bool GetDiskFreeSpaceEx(
[MarshalAs(UnmanagedType.LPTStr)] string lpDirectoryName,
ref long lpFreeBytesAvailable,
ref long lpTotalNumberOfBytes,
ref long lpTotalNumberOfFreeBytes);
public static long Free()
{
string curdir = Environment.CurrentDirectory;
long freeBytes = new long();
long totalFreeBytes = new long();
long totalBytes = new long();
bool x = GetDiskFreeSpaceEx(curdir, ref freeBytes, ref totalFreeBytes, ref
totalBytes);
return totalFreeBytes;
}
private static long DirSize(DirectoryInfo d)
{
long Size = 0;
// Add file sizes.
FileInfo[] fis = d.GetFiles();
foreach (FileInfo fi in fis)
{
Size += fi.Length;
}
// Add subdirectory sizes.
DirectoryInfo[] dis = d.GetDirectories();
foreach (DirectoryInfo di in dis)
{
Size += DirSize(di);
}
return(Size);
}
public static long Get(string TheDirectory)
{
DirectoryInfo d = new DirectoryInfo(TheDirectory);
return DirSize(d);
}
}
}

View File

@@ -0,0 +1,75 @@
/*********************************************************************************************
* Copyright 2004 - Volian Enterprises, Inc. All rights reserved.
* Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
* ------------------------------------------------------------------------------
* $Workfile: FmtFiles.cs $ $Revision: 2 $
* $Author: Jsj $ $Date: 5/17/05 11:51a $
*
* $History: FmtFiles.cs $
*
* ***************** Version 2 *****************
* User: Jsj Date: 5/17/05 Time: 11:51a
* Updated in $/LibSource/Utils
* cleanup
*
* ***************** Version 1 *****************
* User: Kathy Date: 7/27/04 Time: 8:34a
* Created in $/LibSource/Utils
*********************************************************************************************/
using System;
using System.IO;
using System.Windows.Forms;
namespace Utils
{
/// <summary>
/// Summary description for FmtFiles.
/// </summary>
public class FmtFile
{
public string FmtFileName;
public FmtFile(string fname)
{
if (fname.IndexOf(".fmt",0) > -1)
FmtFileName = fname;
else
FmtFileName = fname + ".fmt";
}
public string GetFormatTitle(UserRunTime usrRT)
{
string fmtpath = usrRT.syspath + "\\format\\" + FmtFileName;
FileStream fs;
FileInfo fi = new FileInfo(fmtpath);
try
{
fs = fi.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite );
}
catch (Exception e)
{
MessageBox.Show(e.ToString(),"Format File Read Error");
return null;
}
BinaryReader bw = new BinaryReader(fs,System.Text.ASCIIEncoding.ASCII);
ushort len;
len = bw.ReadUInt16();
string retTitle = null;
if (len > 1)
retTitle = new string(bw.ReadChars(len-1)); // -1: remove the null
else
retTitle = "Format not found";
return retTitle;
}
}
public class DocFile
{
public DocFile()
{
}
}
}

View File

@@ -0,0 +1,58 @@
/*********************************************************************************************
* Copyright 2004 - Volian Enterprises, Inc. All rights reserved.
* Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
* ------------------------------------------------------------------------------
* $Workfile: MenuXML.cs $ $Revision: 2 $
* $Author: Jsj $ $Date: 5/17/05 11:52a $
*
* $History: MenuXML.cs $
*
* ***************** Version 2 *****************
* User: Jsj Date: 5/17/05 Time: 11:52a
* Updated in $/LibSource/Utils
* cleanup
*
* ***************** Version 1 *****************
* User: Kathy Date: 7/27/04 Time: 8:34a
* Created in $/LibSource/Utils
*********************************************************************************************/
using System;
using System.Xml;
using System.IO;
using System.Windows.Forms;
namespace Utils
{
/// <summary>
/// This class reads in an xml menu file, as input and creates an XmlDocument from it.
/// </summary>
public class MenuXML
{
private string menuFileName;
private XmlDocument xmlDoc;
public MenuXML(string fn)
{
menuFileName = fn;
try
{
xmlDoc = new XmlDocument();
XmlTextReader reader = new XmlTextReader(fn);
xmlDoc.Load(reader);
reader.Close();
}
catch (Exception e)
{
MessageBox.Show(e.Message.ToString(),"XML Menu Error");
}
}
public XmlDocument GetXmlDoc()
{
return xmlDoc;
}
}
}

View File

@@ -0,0 +1,256 @@
/*********************************************************************************************
* Copyright 2004 - Volian Enterprises, Inc. All rights reserved.
* Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
* ------------------------------------------------------------------------------
* $Workfile: PrivateProfile.cs $ $Revision: 1 $
* $Author: Kathy $ $Date: 7/27/04 8:34a $
*
* $History: PrivateProfile.cs $
*
* ***************** Version 1 *****************
* User: Kathy Date: 7/27/04 Time: 8:34a
* Created in $/LibSource/Utils
*********************************************************************************************/
using System;
using System.IO;
using System.Xml;
namespace Utils
{
/// <summary>
/// PrivateProfile opens a private profile string and stores it's contents in an xml document.
/// </summary>
public class PrivateProfile
{
private string ppName;
private XmlDocument ppXml;
private XmlNode AddNode(XmlNode xParent, string sName, string sValue )
{
XmlNode nd;
// Add a node
nd=xParent.OwnerDocument.CreateNode(System.Xml.XmlNodeType.Element,sName,"");
xParent.AppendChild(nd);
nd.Value=sValue;
return nd;
}
private XmlNode AddNode(XmlNode xParent, string sName)
{
XmlNode nd;
// Add a node
nd=xParent.OwnerDocument.CreateNode(System.Xml.XmlNodeType.Element,sName,"");
xParent.AppendChild(nd);
return nd;
}
private void AddAttribute(XmlNode xParent, string sName, string sValue )
{
XmlNode xa=xParent.Attributes.GetNamedItem(sName);
// bug fix. 09/15/03
// If there was a space after an equal sign, that space character
// was becomming part of the value string (reading the user.CFG file).
// This was giving us a "Must have semi-colon" error message.
// We now strip spaces before and after any Attribute that is written.
sValue = sValue.Trim(' ');
// Add an attribute
if(sValue=="")
{
if(xa != null)
{
xParent.Attributes.RemoveNamedItem(sName);
}
}
else
{
if(xa == null)
{
xa = xParent.OwnerDocument.CreateNode(System.Xml.XmlNodeType.Attribute ,sName,"");
xParent.Attributes.SetNamedItem(xa);
}
xa.Value=sValue;
}
}
private XmlNode AddSection(XmlNode xParent, string sSection )
{
// Add a section [name]
XmlNode nd =AddNode(xParent,"section");
AddAttribute(nd,"name",sSection.Substring(1,sSection.IndexOf("]")-1));
return nd;
}
private XmlNode AddSection_UC(XmlNode xParent, string sSection )
{
// Add a section [name]
string name_uc = sSection.Substring(1,sSection.IndexOf("]")-1).ToUpper() + "__UC";
XmlNode nd =AddNode(xParent,"sectionUC");
AddAttribute(nd,"name",name_uc);
return nd;
}
private void AddComment(XmlNode xParent, string sComment)
{
if(xParent.ChildNodes.Count > 0)
{
XmlNode ndlast=xParent.ChildNodes.Item(xParent.ChildNodes.Count-1);
if(ndlast.Name=="comment")
{
XmlNode xa = ndlast.Attributes.GetNamedItem("text");
xa.Value=xa.Value + "\r\n" + sComment;
return;
}
}
// Add a comment text
XmlNode nd =AddNode(xParent,"comment");
AddAttribute(nd,"text",sComment);
}
private void AddLine(XmlNode xParent, string sLine)
{
// Add a comment text
XmlNode nd =AddNode(xParent,"line");
AddAttribute(nd,"text",sLine);
}
private void AddParam(XmlNode xParent, string sParam)
{
int i = sParam.IndexOf("=");
// add a param name=value
string sName=sParam.Substring(0,i);
string sValue=sParam.Substring(i+1);
XmlNode nd =AddNode(xParent,"param");
sName = sName.Trim(' ');
AddAttribute(nd,"name",sName);
AddAttribute(nd,"value",sValue);
// AddAttribute(nd,"srchname",sName.ToUpper()+"__UC");
// AddAttribute(nd,"value",sValue);
}
private void AddParam_UC(XmlNode xParent, string sParam)
{
int i = sParam.IndexOf("=");
// add a param name=value
string sName=sParam.Substring(0,i);
string sValue=sParam.Substring(i+1);
XmlNode nd =AddNode(xParent,"paramUC");
sName = sName.Trim(' ');
AddAttribute(nd,"name",sName.ToUpper()+"__UC");
AddAttribute(nd,"value",sValue);
}
private void LoadXML()
{
string sLine;
ppXml.LoadXml("<ini/>");// initialize ppXml
XmlNode xmlTop=ppXml.DocumentElement;
XmlNode xmlNd=ppXml.DocumentElement;
XmlNode xmlNd_UC=ppXml.DocumentElement;
StreamReader myReader = new StreamReader(ppName);// Open file
while( (sLine = myReader.ReadLine())!= null)// read line-by-line
{
// add structure
if(sLine.Length > 0)
{
switch (sLine.Substring(0,1))
{
case "[":
xmlNd=AddSection(xmlTop, sLine);
xmlNd_UC=AddSection_UC(xmlTop, sLine);
break;
case ";":
AddComment(xmlNd, sLine);
break;
default:
if(sLine.IndexOf("=") >= 0)
{
AddParam(xmlNd, sLine);
AddParam_UC(xmlNd_UC, sLine);
}
else
{
AddLine(xmlNd, sLine);
}
break;
}
}
}
myReader.Close();
// close file
}
public PrivateProfile(string sFileName)
{
ppName=sFileName; // Store file name
ppXml= new XmlDocument();// Allocate XML
LoadXML();// Load XML
}
~PrivateProfile()
{
// Clean-up
//
}
public string PrettyNode(XmlNode nd,int level)
{
string retval="";
string prefix=new string(' ',level*2);
if(nd.ChildNodes.Count > 0)
{
retval = prefix + "<" + nd.Name;
for(int i=0;i<nd.Attributes.Count;i++)
{
retval=retval + " " + nd.Attributes.Item(i).Name + "='" + nd.Attributes.Item(i).Value + "'";
}
retval=retval+">";
for(int i=0;i<nd.ChildNodes.Count;i++)
{
retval=retval+"\r\n"+PrettyNode(nd.ChildNodes.Item(i),level+1);
}
retval=retval+"\r\n" + prefix + "</" + nd.Name + ">";
}
else
{
retval = prefix + "<" + nd.Name;
for(int i=0;i<nd.Attributes.Count;i++)
{
retval=retval + " " + nd.Attributes.Item(i).Name + "='" + nd.Attributes.Item(i).Value + "'";
}
retval=retval+"/>";
}
return retval;
}
public string PrettyXML()
{
return PrettyNode(ppXml.DocumentElement,0);
}
public XmlDocument XML()
{
// return XML Document
return ppXml;
}
public override string ToString()
{
// return string
return "";
}
public void Save()
{
SaveAs(ppName);
}
public void SaveAs(string sName)
{
}
public string Attr(string sPath)
{
string retval="";
XmlNode xn = ppXml.SelectSingleNode(sPath);
if(xn != null)
{
string quots = xn.Value;
if (quots.Substring(0,1)=="\"" && quots.Substring(quots.Length-1,1)=="\"")
retval = quots.Substring(1,quots.Length-2);
else
retval=xn.Value;
}
return retval;
}
public string Attr(string sSection, string sParameter)
{
string findstr = "/ini/sectionUC[@name='" + sSection.ToUpper() + "__UC']/paramUC[@name='" + sParameter.ToUpper() + "__UC']/@value";
return Attr(findstr);
}
}
}

View File

@@ -0,0 +1,622 @@
/*********************************************************************************************
* Copyright 2004 - Volian Enterprises, Inc. All rights reserved.
* Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
* ------------------------------------------------------------------------------
* $Workfile: Security.cs $ $Revision: 4 $
* $Author: Jsj $ $Date: 5/17/05 11:52a $
*
* $History: Security.cs $
*
* ***************** Version 4 *****************
* User: Jsj Date: 5/17/05 Time: 11:52a
* Updated in $/LibSource/Utils
* cleanup
*
* ***************** Version 3 *****************
* User: Kathy Date: 1/24/05 Time: 2:44p
* Updated in $/LibSource/Utils
* B2005-004 fixes
*
* ***************** Version 2 *****************
* User: Kathy Date: 1/14/05 Time: 10:38a
* Updated in $/LibSource/Utils
* B2004-061: fix security options
*
* ***************** Version 1 *****************
* User: Kathy Date: 7/27/04 Time: 8:34a
* Created in $/LibSource/Utils
*********************************************************************************************/
using System;
using System.IO;
using System.Collections;
using System.Windows.Forms;
using System.Text;
namespace Utils
{
/// <summary>
/// Summary description for Security.
/// </summary>
public class Security
{
public const long VIEW =0x00000001L;
public const long PRINT =0x00000002L;
public const long PRINTDRAFT =0x00000004L;
public const long PRINTCHANGES =0x00000008L;
public const long EDIT =0x00000010L;
public const long SEARCH =0x00000020L;
public const long STANDARDSTEPS =0x00000040L;
public const long APPROVE =0x00000080L;
public const long APPROVESINGLE =0x00000100L;
public const long LIBRARYDOCS =0x00000200L;
public const long ADDMODDEL =0x00000400L;
public const long CLEAN =0x00000800L;
public const long LOCKPROC =0x00001000L;
public const long LOCKSET =0x00000001L;
public const long UCF =0x00000002L;
public const long LOCKSYSTEM =0x00000001L;
public const long DOCMAINT =0x00000002L;
public const long ROEDITOR =0x00000004L;
public const long SYSADMIN =0x00000008L;
public const int SUPERUSER =1000;
public const long SUPERACCESS =0xFFFFFFFFL;
// the following four flags are system security options,
// read in for the user from the security file (vesam.opt)
private bool BlockAccessFlag=false;
public bool PermissionToManageFlag=false;
public bool SystemAdminFlag=false;
public bool PermissionToLockFlag=false;
// private string optFileName;
private int numsets = 0;
private long uoptions; // user options
private Int16 blockAccess = 0;
private long oldpos;
public int userid = -1;
// private int plantid = -1;
// private int procid = -1;
private string ident;
public string initials;
private const string samoptname = "vesam.opt";
public string optfilename;
private ArrayList psets; //
public FileStream fs;
public BinaryReader bw;
public bool isDemoMode=false;
public Security(string pathname)
{
if (File.Exists(pathname + "\\" + samoptname) == false)
{
MessageBox.Show("Could not locate the Security Options file:\n\n" + pathname+"\\"+samoptname,"Security Access Error");
optfilename = null;
return;
}
optfilename = pathname + "\\" + samoptname;
psets = new ArrayList();
}
public bool OpenFile()
{
try
{
fs = new FileStream(optfilename,FileMode.Open,FileAccess.Read,FileShare.Read,1,false);
bw = new BinaryReader(fs);
return true;
}
catch (Exception e)
{
MessageBox.Show(e.Message,"Security File");
return false;
}
}
public void CloseFile()
{
bw.Close();
fs.Close();
bw=null;
fs=null;
}
public int CheckUserId(string Name, string Pass)
{
// check for default superuser username/password.
if ((Name=="vlnmsp") && (Pass=="575"))
{
userid = SUPERUSER;
ident = "vlnmsp";
initials = Name;
return userid;
}
if (bw==null)
{
bool op;
if ((op = OpenFile()) == false) return -1;
}
byte x;
// read past some header stuff.
for (int jj=0;jj<16;jj++)
x=bw.ReadByte();
long nxtUs;
uint nmUser;
nxtUs=bw.ReadUInt32();
nmUser=bw.ReadUInt16();
int uid, tmp;
string fName, fPass;
for (int i = 0; i < nmUser; i++)
{
fs.Seek((long)nxtUs,SeekOrigin.Begin);
nxtUs=bw.ReadUInt32();
uid = bw.ReadUInt16();
tmp = bw.ReadUInt16();
byte [] test = new byte[10];
test = bw.ReadBytes(10);
fName = Encoding.ASCII.GetString(test,0,10);
int indx = fName.IndexOf("\0");
string fNameTrim = fName.Substring(0,indx);
if (fNameTrim == Name)
{
test = bw.ReadBytes(10);
fPass = Encoding.ASCII.GetString(test,0,10);
indx = fPass.IndexOf("\0");
string fPassTrim = fPass.Substring(0,indx);
if (fPassTrim == Pass)
{
userid = uid;
ident = Name;
initials = Name;
break;
}
}
}
CloseFile();
return userid;
}
public void SetUserSystemRights()
{
BlockAccessFlag=BlockAccess();
long userAccessFlags=GetUserSecurity();
PermissionToManageFlag=(userAccessFlags&Security.DOCMAINT)==0?false:true;
PermissionToLockFlag=(userAccessFlags&Security.LOCKSYSTEM)==0?false:true;
SystemAdminFlag=(userAccessFlags&Security.SYSADMIN)==0?false:true;
}
public void LoadUserSecurity()
{
//
// get the system level security options for this user here
//
bool op = OpenFile();
if (op==false) return;
if( userid == 1000 )
{ // super user priviledge
uoptions = 0xFFFFFFFFL;
SetUserSystemRights();
CloseFile();
return;
}
fs.Seek(32,SeekOrigin.Begin);
blockAccess=bw.ReadInt16();
fs.Seek(0,SeekOrigin.Begin);
byte x;
// read past some header stuff.
for (int jj=0;jj<16;jj++)
x=bw.ReadByte();
long nxtUs;
uint nmUser;
nxtUs=bw.ReadUInt32();
nmUser=bw.ReadUInt16();
int uid;
for (int i = 0; i < nmUser; i++)
{
oldpos = nxtUs;
fs.Seek((long)nxtUs,SeekOrigin.Begin);
nxtUs=bw.ReadUInt32();
uid = bw.ReadUInt16();
if (uid == userid)
{
string junk = new string (bw.ReadChars(22));
uoptions=bw.ReadUInt16();
break;
}
}
SetUserSystemRights();
CloseFile();
}
public void SetUpDemoMode()
{
userid=Security.SUPERUSER; // super user so that demo data can be anywhere (doesn't check vesamp.opt)
ident="demo";
initials="demo";
isDemoMode = true;
}
public int GetPlantSecurityIndex(string Location)
{
for (int i=0;i<psets.Count;i++)
{
SecurityPlantSets sps = (SecurityPlantSets) psets[i];
if (Location.ToUpper() == sps.GetPath().ToUpper()) return i;
}
return -1;
}
public bool PlantHasSecurity(int idx)
{
if (userid == SUPERUSER) return true;
if (idx<0 || idx>psets.Count-1)return false;
SecurityPlantSets sps = (SecurityPlantSets) psets[idx];
return sps.HasSecurity;
}
public bool ProcSetHasSecurity(int idx, string procset)
{
if (userid == SUPERUSER) return true;
if (idx<0 || idx>psets.Count-1)return false;
SecurityPlantSets sps = (SecurityPlantSets) psets[idx];
return sps.ProcSetHasSecurity(procset);
}
public long GetPlantSecurity(int idx)
{
if(userid == SUPERUSER ) return SUPERACCESS;
if (idx<0 || idx>psets.Count-1) return 0L;
SecurityPlantSets sps = (SecurityPlantSets) psets[idx];
return (sps.GetSecurity());
}
public bool AnyOptionsSet(int idx)
{
if(userid==SUPERUSER) return true;
if (idx<0 || idx>psets.Count-1) return false;
SecurityPlantSets sps = (SecurityPlantSets) psets[idx];
return sps.AnyOptionsSet();
}
public long GetUserSecurity()
{
if(userid == SUPERUSER) return SUPERACCESS;
return(uoptions);
}
public bool BlockAccess()
{
if (userid == SUPERUSER) return false;
if(blockAccess!=0) return true;
return false;
}
public bool IsAllowed(long mask)
{
if(userid == SUPERUSER) return true;
return (uoptions&mask) != 0;
}
public bool IsAllowed(string plantpath, string procpath, long mask)
{
bool retval = false;
if(userid == SUPERUSER) return true;
for(int i=0; i<numsets; i++)
{
SecurityPlantSets sps = (SecurityPlantSets) psets[i];
if(sps.IsAllowed(plantpath,procpath,mask)==true)
{
retval = true;
break;
}
}
return retval;
}
public long GetProcSecurity(string fullpath)
{
long mask=0L;
string plantpath;
string fullprocpath;
string procpath;
string tmpchg=null;
string apr=null;
if(userid == SUPERUSER) return SUPERACCESS;
plantpath = fullpath;
procpath = plantpath.Substring(plantpath.LastIndexOf("\\"),plantpath.Length-plantpath.LastIndexOf("\\"));
if (procpath.Substring(1,procpath.Length-1).ToUpper() == "TMPCHG")
{
// we have a Temporary Change directory, store it
tmpchg=procpath;
// remove the tmpchg text from the plantpath string
plantpath=plantpath.Substring(0,plantpath.Length-tmpchg.Length);
// Get the procedure subdirectory
procpath = plantpath.Substring(plantpath.LastIndexOf("\\"),plantpath.Length-plantpath.LastIndexOf("\\"));
}
if(procpath.Substring(1,procpath.Length-1).ToUpper() == "APPROVED")
{
// we have an approved dir, store it
apr = procpath;
// remove the approved text from the plantpath string
plantpath=plantpath.Substring(0,plantpath.Length-apr.Length);
// Get the procedure subdirectory
procpath = plantpath.Substring(plantpath.LastIndexOf("\\"),plantpath.Length-plantpath.LastIndexOf("\\"));
}
// at this point, tmpchg & apr will be set if we have a tmpchg or approved directory,
// plantpath will contain the plant directory & procedure set subdirectory, and
// procpath will be the procedure set subdirectory name (with the preceeding '\').
// Now set plantpath to be the plant level directory. Make fullprocpath from the
// procedure set subdirectory & any approved/tmpchg directories that were part
// of the path that was passed in.
plantpath=plantpath.Substring(0,plantpath.Length-procpath.Length);
procpath=procpath.Substring(1,procpath.Length-1); // remove '\' prefix
fullprocpath=procpath+apr+tmpchg;
for(int i=0; i<numsets; i++)
{
SecurityPlantSets sps = (SecurityPlantSets) psets[i];
if( sps.GetProcSecurity(plantpath,fullprocpath,ref mask) ) break;
}
return mask;
}
public void AddPlant(int nTab, string path)
{
SecurityPlantSets sps = new SecurityPlantSets(path, oldpos, this);
psets.Insert(nTab,sps);
numsets = psets.Count;
}
}
public class SecurityProcSets
{
private long[] procoptions;
private string path;
public SecurityProcSets(string pth, Security security, long userPos, int procid, int numplants, int pid)
{
procoptions = new long[4];
path = pth;
// read in proc options
if (security.userid == Security.SUPERUSER)
{
for(int i=0;i<4;i++) procoptions[i]=0xff;
return;
}
security.fs.Seek(userPos+38L,SeekOrigin.Begin);
short tpid;
for (int i=0;i<numplants;i++)
{
tpid = security.bw.ReadInt16();
security.fs.Seek(8L,SeekOrigin.Current);
short nProcSets;
nProcSets = security.bw.ReadInt16();
for (int j=0; j<nProcSets;j++)
{
short tprocid;
tprocid = security.bw.ReadInt16();
if (tprocid==procid && tpid==pid)
{
tprocid = security.bw.ReadInt16();
for(int k=0;k<4;k++) procoptions[k]=security.bw.ReadInt32();
return;
}
else
security.fs.Seek(18,SeekOrigin.Current);
}
}
}
public bool AnyOptionsSet()
{
for(int k=0;k<4;k++) if(procoptions[k]!=0L)return true;
return false;
}
public bool IsAllowed(string procpath, long mask)
{
bool retval = false;
if (path==procpath) retval = (procoptions[0]&mask) !=0;
return retval;
}
public string GetPath()
{
return path;
}
public bool GetProcSecurity(string procpath, ref long mask)
{
bool retval = false;
if (path.ToUpper()==procpath.ToUpper())
{
mask = procoptions[0];
retval = true;
}
return retval;
}
}
public class SecurityPlantSets
{
private string path;
private long setoption;
private int numopts;
private ArrayList procs; // SecurityProcSets;
private Security security;
// Flag whether this plant has data in the security options file. (maybe newly
// created since vesam was run).
public bool HasSecurity;
public SecurityPlantSets(string cptr, long userPos, Security sec)
{
string title;
string pth;
int pid=0;
long plantpos;
procs = new ArrayList();
security = sec;
path = cptr;
HasSecurity=false;
security.fs.Seek(8L,SeekOrigin.Begin);
numopts = -1;
plantpos = security.bw.ReadInt32(); // 1st plant set position
short np;
np = security.bw.ReadInt16(); // number of plant sets.
long oldpos=0;
short sz;
for (int i=0;i<np;i++)
{
security.fs.Seek(plantpos,SeekOrigin.Begin);
plantpos = security.bw.ReadInt32();
pid = security.bw.ReadInt16();
sz = security.bw.ReadInt16();
title = new string(security.bw.ReadChars(sz));
sz = security.bw.ReadInt16();
pth=null;
pth = new string(security.bw.ReadChars(sz));
if (pth.ToUpper()==path.ToUpper()) // this is what we're looking for..
{
numopts = security.bw.ReadInt16();
security.fs.Seek(4L,SeekOrigin.Current);
oldpos = security.fs.Position;
HasSecurity=true;
break;
}
}
// get the plant level options
int currentUID = sec.userid;
if (currentUID != Security.SUPERUSER)
{
security.fs.Seek(userPos,SeekOrigin.Begin);
security.fs.Seek(38L,SeekOrigin.Current);
short tpid;
for (int i=0;i<np;i++)
{
tpid = security.bw.ReadInt16();
if (tpid == pid) // correct plant
{
setoption = security.bw.ReadInt32();
break;
}
else
{
setoption = security.bw.ReadInt32(); //skip following data...
setoption = security.bw.ReadInt32();
tpid = security.bw.ReadInt16();
for (int j=0;j<tpid;j++) security.fs.Seek(20L,SeekOrigin.Current);
}
}
}
else
setoption = Security.SUPERACCESS;
if (numopts>0)
procs = new ArrayList(numopts);
else
procs = null;
for(int i=0;i<numopts;i++)
{
security.fs.Seek(oldpos+4L,SeekOrigin.Begin);
short procid;
procid = security.bw.ReadInt16();
sz = security.bw.ReadInt16();
title = new string(security.bw.ReadChars(sz));
sz = security.bw.ReadInt16();
pth = new string(security.bw.ReadChars(sz));
security.fs.Seek(4L,SeekOrigin.Current);
oldpos = security.fs.Position;
SecurityProcSets sps = new SecurityProcSets(pth, security, userPos, procid, np, pid);
procs.Insert(i,sps);
}
}
public string GetPath()
{
return path;
}
public bool ProcSetHasSecurity(string procset)
{
if (procs==null)return false; // if no procs for plant in security file.
//see if this plant has a procedure set that matches the input string
// this will tell us that it is included in the vesam.opt file.
for (int i=0;i<procs.Count;i++)
{
SecurityProcSets sps = (SecurityProcSets) procs[i];
if (sps.GetPath().ToUpper() == procset.ToUpper()) return true;
}
return false;
}
public bool AnyOptionsSet()
{
for (int i=0;i<numopts;i++)
{
SecurityProcSets sps = (SecurityProcSets) procs[i];
if (sps.AnyOptionsSet())return true;
}
return false;
}
public bool IsAllowed(string plantpath, string procpath, long mask)
{
bool retval = false;
if (path==plantpath)
{
for (int i=0;i<numopts;i++)
{
SecurityProcSets sps = (SecurityProcSets) procs[i];
if (sps.IsAllowed(procpath, mask)==true)
{
retval = true;
break;
}
}
}
return retval;
}
public long GetSecurity()
{
return (setoption);
}
public bool GetProcSecurity(string plantpath, string procpath, ref long mask)
{
bool retval = false;
if(path.ToUpper() == plantpath.ToUpper())
{
if (security.userid!=Security.SUPERUSER)
{
for (int i=0; i<numopts; i++)
{
SecurityProcSets sps = (SecurityProcSets) procs[i];
if (sps.GetProcSecurity(procpath,ref mask) == true)
{
retval = true;
break;
}
}
}
else
{
retval = true;
mask = Security.SUPERACCESS;
}
}
return retval;
}
}
}

View File

@@ -0,0 +1,295 @@
/*********************************************************************************************
* Copyright 2004 - Volian Enterprises, Inc. All rights reserved.
* Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
* ------------------------------------------------------------------------------
* $Workfile: SerialNo.cs $ $Revision: 7 $
* $Author: Jsj $ $Date: 12/06/07 3:32p $
*
* $History: SerialNo.cs $
*
* ***************** Version 7 *****************
* User: Jsj Date: 12/06/07 Time: 3:32p
* Updated in $/LibSource/Utils
* turn on backgrounds for point beach
*
* ***************** Version 6 *****************
* User: Jsj Date: 7/18/06 Time: 11:40a
* Updated in $/LibSource/Utils
* fixed parse of plant name from SERIAL.NO file
*
* ***************** Version 5 *****************
* User: Jsj Date: 6/29/06 Time: 1:38p
* Updated in $/LibSource/Utils
* turned on enhanced backgrounds for byron and braidwood
*
* ***************** Version 4 *****************
* User: Jsj Date: 6/29/06 Time: 1:27p
* Updated in $/LibSource/Utils
* turned on Deviations for byron and braidwood
*
* ***************** Version 3 *****************
* User: Jsj Date: 5/17/05 Time: 11:53a
* Updated in $/LibSource/Utils
* cleanup
*
* ***************** Version 2 *****************
* User: Kathy Date: 4/12/05 Time: 1:00p
* Updated in $/LibSource/Utils
* B2005-019: bad serial num message
*
* ***************** Version 1 *****************
* User: Kathy Date: 7/27/04 Time: 8:34a
* Created in $/LibSource/Utils
*********************************************************************************************/
using System;
using System.IO;
using System.Text;
using System.Windows.Forms;
namespace Utils
{
/// <summary>
/// Summary description for SerialNo.
/// </summary>
public class SerialNo
{
private string sernofile;
public int SerialNum;
private string SerialNumTitle;
private static byte sum =0xcf;// used in serial number code (nextchar)
public enum SN_Flags
{
SN_NETWORK_ON =0x0001,
SN_BACKGROUND_ON =0x0002,
SN_DEVIATION_ON =0x0004,
SN_CHECKLISTEXPORT_ON =0x0008,
SN_REVISIONFUNCTION_ON =0x0010,
SN_ONLYAPPROVEONCE_ON =0x0020,
SN_BGEPLANTWIDEOPT_ON =0x0040,
SN_REVISESTRIPPC_ON =0x0080,
SN_PROCCOMMENT_ON =0x0400,
SN_REMOVECHGID_ON =0x0800,
SN_OPTIONALACCEDIT_ON =0x1000,
SN_TEMPCHANGE_ON =0X2000,
SN_VOLIANONLY_ON =0x8000
};
public SN_Flags[] SerialNumberOptionsByPlant=
{
/* 0 Volian Enterprises, Inc. */ (SN_Flags)0xFFFF,
/* 1 Entergy Nuclear Northeast - Indian Point Unit 2 */ SN_Flags.SN_BACKGROUND_ON|SN_Flags.SN_NETWORK_ON,
/* 2 Virginia Power - Surry (1A) */ SN_Flags.SN_NETWORK_ON,
/* 3 Virginia Power - North Anna */ SN_Flags.SN_DEVIATION_ON|SN_Flags.SN_NETWORK_ON,
/* 4 Northern States Power - Prairie Island */ SN_Flags.SN_DEVIATION_ON,
/* 5 American Electric Power - D. C. Cook - AOPs */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_BACKGROUND_ON,
/* 6 Wisconsin Electric Power - Point Beach */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_BACKGROUND_ON,
/* 7 Rochester Gas and Electric Corp. - Ginna */ SN_Flags.SN_BACKGROUND_ON,
/* 8 TUEC - Comanche Peak */ 0,
/* 9 Entergy Nuclear Northeast - Indian Point Unit 3 */ SN_Flags.SN_BACKGROUND_ON|SN_Flags.SN_NETWORK_ON,
/*10 Maine Yankee Atomic Power Company - Maine Yankee */ 0,
/*11 Yankee Atomic Electric - Yankee Rowe */ 0,
/*12 Wisconsin Public Service Corp.- Kewaunee */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_BACKGROUND_ON,
/*13 Wisconsin Public Service Corp.- Kewaunee Operating Procedures*/ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_BACKGROUND_ON,
/*14 South Carolina Gas and Electric - V.C. Summer */ 0,
/*15 Louisiana Power and Light - Waterford */ 0,
/*16 Pacific Gas and Electric - Diablo Canyon */ SN_Flags.SN_OPTIONALACCEDIT_ON,
/*17 Southern California Edison - San Onofre */ 0,
/*18 Carolina Power and Light - Robinson */ SN_Flags.SN_NETWORK_ON,/*|SN_BACKGROUND_ON|SN_DEVIATION_ON, */
/*19 Arkansas Nuclear One - Unit 1 */ 0,
/*20 Arkansas Nuclear One - Unit 2 */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_ONLYAPPROVEONCE_ON|SN_Flags.SN_REVISIONFUNCTION_ON|SN_Flags.SN_REVISESTRIPPC_ON|SN_Flags.SN_PROCCOMMENT_ON,
/*21 Southern Nuclear Operating Company - Vogtle */ SN_Flags.SN_BACKGROUND_ON|SN_Flags.SN_DEVIATION_ON,
/*22 Florida Power and Light - Turkey Point (Unit 3) */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_DEVIATION_ON|SN_Flags.SN_BACKGROUND_ON,
/*23 Houston Lighting & Power Company - South Texas */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_BACKGROUND_ON,
/*24 Carolina Power & Light - Shearon Harris */ 0,
/*25 Virginia Power - EPIP */ SN_Flags.SN_NETWORK_ON,
/*26 Wolf Creek Nuclear Operating Corp. - Wolf Creek */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_BACKGROUND_ON|SN_Flags.SN_OPTIONALACCEDIT_ON|SN_Flags.SN_TEMPCHANGE_ON|SN_Flags.SN_CHECKLISTEXPORT_ON,
/*27 Duke Power - Catawba */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_BACKGROUND_ON|SN_Flags.SN_DEVIATION_ON,
/*28 Duke Power - McGuire */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_BACKGROUND_ON|SN_Flags.SN_DEVIATION_ON,
/*29 Exelon Nuclear - Braidwood */ SN_Flags.SN_NETWORK_ON | SN_Flags.SN_BACKGROUND_ON | SN_Flags.SN_DEVIATION_ON,
/*30 Exelon Nuclear - Byron */ SN_Flags.SN_NETWORK_ON | SN_Flags.SN_BACKGROUND_ON | SN_Flags.SN_DEVIATION_ON,
/*31 Virginia Power - Innsbrook */ SN_Flags.SN_NETWORK_ON,
/*32 Constellation Energy Group - Calvert Cliffs */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_REVISIONFUNCTION_ON|SN_Flags.SN_ONLYAPPROVEONCE_ON|SN_Flags.SN_BGEPLANTWIDEOPT_ON|SN_Flags.SN_OPTIONALACCEDIT_ON|SN_Flags.SN_REMOVECHGID_ON,
/*33 American Electric Power - D. C. Cook - EOPs */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_BACKGROUND_ON,
/*34 American Electric Power - D. C. Cook - Training */ 0,
/*35 North Atlantic Energy Service Corp. - Seabrook Nuclear Plant */ SN_Flags.SN_TEMPCHANGE_ON,
/*36 Entergy - River Bend Nuclear Station */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_REVISIONFUNCTION_ON,
/*37 Southern Nuclear Operating Company - Farley Nuclear Plant */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_BACKGROUND_ON|SN_Flags.SN_DEVIATION_ON,
/*38 AmerenUE - Callaway Plant */ SN_Flags.SN_NETWORK_ON|SN_Flags.SN_BACKGROUND_ON
};
public SerialNo(string isernofile,string ucfgpath, UserRunTime usrRT, bool DemoMode)
{
sernofile = isernofile;
PrivateProfile ppCfg;
string sn;
// byte xor=0xCF;
ppCfg = new PrivateProfile(ucfgpath);
// sn=ppCfg.Attr("/ini/section[@name='override']/param[@name='SN']/@value");
sn=ppCfg.Attr("override","SN");
if (sn!=null && sn!="")
{
int indx = 0;
if ((indx = sn.IndexOf(";",0,sn.Length))>0)
SerialNum=System.Convert.ToInt32(sn.Substring(0,indx));
else
SerialNum=System.Convert.ToInt32(sn);
if (SerialNum>SerialNumberOptionsByPlant.Length)
{
MessageBox.Show("Serial number in " + ucfgpath + " is invalid. Demo mode will be used","VE-PROMS");
SerialNum=-1;
}
SerialNumTitle="Override";
return;
}
ppCfg=null;
SerialNum = -1;
if (DemoMode || !File.Exists(usrRT.ExeAdjust(sernofile)))
{
// no serial number file, put into demo mode.
SerialNumTitle = "Demo Mode";
// MessageBox.Show("No Serial Number. Defaulting to Working Demo Mode.\n\nTo purchase VE-PROMS, contact Volian Enterorices Inc.\n\nPhone: (724) 335-3744\n\nEmail: VEPROMS@VOLIAN.COM\n\nSerial Number Warning");
if (DemoMode)
{
MessageBox.Show("Thank you for trying our VE-PROMS Working Demo.\n\n"+
"To purchase VE-PROMS, contact Volian Enterprises, Inc.\n\n"+
"Phone: (724) 335-3744\n\n"+
"Email: VolianEnterprises@volian.com",
"VE-PROMS Working Demo");
}
else
{
MessageBox.Show("No Serial Number. Defaulting to Working Demo Mode.\n\n"+
"To purchase VE-PROMS, contact Volian Enterprises, Inc.\n\n"+
"Phone: (724) 335-3744\n\n"+
"Email: VolianEnterprises@volian.com",
"Serial Number Warning");
}
return;
}
// open file & read in serial number
int i;
byte j;
FileStream fssn = null;
BinaryReader brsn = null;
byte xor=0xCF;
// sum=0xcf;
try
{
fssn = new FileStream(usrRT.ExeAdjust(sernofile),FileMode.Open,FileAccess.Read,FileShare.ReadWrite);
brsn = new BinaryReader(fssn);
int length = (int)fssn.Length-1024;
for (i=0;i<1024;i++)
{
j = nextchar(brsn);
xor ^= (byte)j;
if (j==0xCF)
{
if (SerialNum != -1) return;
SerialNum=i;
}
}
if (SerialNum == -1)
{
SerialNumTitle = "Demo Mode";
// MessageBox.Show("No Serial Number. Defaulting to Working Demo Mode.\n\nTo purchase VE-PROMS, contact Volian Enterorices Inc.\n\nPhone: (724) 335-3744\n\nEmail: VEPROMS@VOLIAN.COM\n\nSerial Number Warning","VE-PROMS");
MessageBox.Show("No Serial Number. Defaulting to Working Demo Mode.\n\n"+
"To purchase VE-PROMS, contact Volian Enterprises, Inc.\n\n"+
"Phone: (724) 335-3744\n\n"+
"Email: VolianEnterprises@volian.com",
"Serial Number Warning");
return;
}
// Just read past this byte. At this point we already
// have a serial number. We now just want to get the
// description text (usually plant/utility name) associated
// with the serial number.
j = nextchar(brsn);
//
// This was always failing. Could not find a reason why. Appears that
// the Exclusive OR arithmatic is a little different in .NET. The
// nextchar() funtion seems to be returning the correct values.
//
// if (j!=xor)
// {
// if (brsn!=null) brsn.Close();
// if (fssn!=null) fssn.Close();
// return;
// }
char [] title = new char[length];
i=0;
while((--length) > 0 && (j=nextchar(brsn))!=0xFF)
{
title[i++] = (char)j;
}
SerialNumTitle = new string(title);
// remove the serial number at the beginning of the title
// - we didn't need to do this - jsj 7/18/2006
// SerialNumTitle = SerialNumTitle.Substring(SerialNumTitle.IndexOf(' ')+1);
}
catch(Exception e)
{
MessageBox.Show(e.Message,"Serial Number Error");
return;
}
if (brsn!=null) brsn.Close();
if (fssn!=null) fssn.Close();
}
private byte nextchar(BinaryReader br)
{
byte retval = 0xFF; // unsigned -1
try
{
byte nxt;
retval = br.ReadByte();
if(retval != 0xFF)
{
nxt=retval;
retval=(byte)((nxt-sum) & 0xFF);
sum=(byte)(((nxt<<1) & 0xFE) | ((nxt>>7) & 0x1));
}
}
catch(Exception e)
{
// MessageBox.Show(e.Message);
return retval;
}
return retval;
}
public uint GetSNOption(uint a)
{
if (SerialNum == -1)
return 0;
else
return ((uint)SerialNumberOptionsByPlant[SerialNum]&(uint)a);
}
public string SerialNumberString
{
get
{
string rtnstr = "";
if (SerialNum == -1) // demo
rtnstr = "Thank you for trying VE-PROMS";
else
rtnstr = "Serial Number: " + SerialNum.ToString();
return rtnstr;
}
}
public string SerialNumberTitleString
{
get
{
return SerialNumTitle;
}
}
}
}

View File

@@ -0,0 +1,51 @@
/*********************************************************************************************
* Copyright 2004 - Volian Enterprises, Inc. All rights reserved.
* Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
* ------------------------------------------------------------------------------
* $Workfile: ShrtNm.cs $ $Revision: 1 $
* $Author: Kathy $ $Date: 7/27/04 8:34a $
*
* $History: ShrtNm.cs $
*
* ***************** Version 1 *****************
* User: Kathy Date: 7/27/04 Time: 8:34a
* Created in $/LibSource/Utils
*********************************************************************************************/
using System;
using System.Text;
using System.Runtime.InteropServices;
using System.ComponentModel;
namespace Utils
{
/// <summary>
/// Summary description for ShrtNm.
/// </summary>
public class ShortName
{
[DllImport("kernel32.dll", SetLastError=true, CharSet=CharSet.Auto)]
[return:MarshalAs(UnmanagedType.U4)]
public static extern int GetShortPathName(
[MarshalAs(UnmanagedType.LPTStr)] string lpszLongPath,
[MarshalAs(UnmanagedType.LPTStr)] StringBuilder lpszShortPath,
[MarshalAs(UnmanagedType.U4)] int cchBuffer);
private string _LongFileName;
private StringBuilder _ShortFileName;
public ShortName(string longname)
{
_LongFileName = longname;
_ShortFileName = new StringBuilder(256);
int len = GetShortPathName(_LongFileName,_ShortFileName,256);
if (len==256) _ShortFileName=null;
if (len==0) _ShortFileName.Append(longname);
}
[Description("FileName")]public string ShortFileName
{
get{return _ShortFileName.ToString();}
}
}
}

View File

@@ -0,0 +1,214 @@
/*********************************************************************************************
* Copyright 2004 - Volian Enterprises, Inc. All rights reserved.
* Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
* ------------------------------------------------------------------------------
* $Workfile: SymbDlg.cs $ $Revision: 1 $
* $Author: Kathy $ $Date: 7/27/04 8:34a $
*
* $History: SymbDlg.cs $
*
* ***************** Version 1 *****************
* User: Kathy Date: 7/27/04 Time: 8:34a
* Created in $/LibSource/Utils
*********************************************************************************************/
using System;
using System.Text;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace Utils
{
/// <summary>
/// Summary description for SymbDlg.
/// </summary>
public class SymbDlg : System.Windows.Forms.Form
{
private System.Windows.Forms.TabControl tbctlSymbol;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
private ListBox symlistbox;
public SymbolListB SymList1;
public string ReturnText;
private int NumItems;
private System.Windows.Forms.TextBox tbValue;
private System.Windows.Forms.Button btnOK;
private System.Windows.Forms.Button btnCancel;
public GridItem gridItem;
private string[] SymbolFonts = {"VESymb","Courier New","VolianDraw"};
public SymbDlg(SymbolListB symb, GridItem grditm)
{
//
// Required for Windows Form Designer support
//
ReturnText=null;
gridItem = grditm;
SymList1 = symb;
NumItems = symb.SymbolListStrings.Length;
InitializeComponent();
DoListTabPage();
DoGridTabPage();
if (gridItem!=null)
{
tbValue.Text = (string) gridItem.Value;
tbValue.Visible = true;
}
else
tbValue.Visible = false;
}
private void DoGridTabPage()
{
//TabPage gridTabPage = new TabPage("Grid");
//tbctlSymbol.TabPages.Add(gridTabPage);
}
private void symlistbox_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
{
// Set the DrawMode property to draw fixed sized items.
symlistbox.DrawMode = DrawMode.OwnerDrawFixed;
// Draw the background of the ListBox control for each item.
e.DrawBackground();
// Create a new Brush and initialize to a Black colored brush by default.
Brush myBrush = Brushes.Black;
Font fontVESymb = new Font(SymbolFonts[SymList1.SymbolList[e.Index].CharacterSet],e.Font.SizeInPoints);
Font fontregular = new Font("Courier New",e.Font.SizeInPoints);
float x;
// Draw the current item text based on the current Font and the custom brush settings.
e.Graphics.DrawString(SymList1.SymbolList[e.Index].CharacterCode,fontVESymb,myBrush,e.Bounds.Left,e.Bounds.Top);
x=e.Graphics.MeasureString(SymList1.SymbolList[e.Index].CharacterCode,fontVESymb).Width;
e.Graphics.DrawString(SymList1.SymbolListStrings[e.Index],fontregular,myBrush,e.Bounds.Left+x,e.Bounds.Top);
e.DrawFocusRectangle();
}
private void DoListTabPage()
{
TabPage listTabPage = new TabPage("List");
tbctlSymbol.TabPages.Add(listTabPage);
symlistbox = new ListBox();
symlistbox.Height = 200;
symlistbox.Width = 400;
listTabPage.Controls.Add(symlistbox);
symlistbox.DrawItem += new DrawItemEventHandler(symlistbox_DrawItem);
symlistbox.DoubleClick += new EventHandler(symlistbox_DoubleClick);
symlistbox.DrawMode = DrawMode.OwnerDrawFixed;
// add dummy items, these will be resolved when displayed.
for(int i=0; i<NumItems;i++)
symlistbox.Items.Add(i.ToString());
}
private void symlistbox_DoubleClick(Object sender, EventArgs e)
{
// use encoding for the Microsoft Windows OEM Codepage 437 to get the old
// 'dos' character codes. Also, needed to use the encoding & transfer to/from
// bytes so that the unicode character wouldn't be entered thus causing a
// character conversion. (strings are unicode by default in .net)
int itm = symlistbox.SelectedIndex;
Encoding oem = Encoding.GetEncoding(437);
byte[] oemBytes = oem.GetBytes(tbValue.Text);
byte[] tst = new byte[oemBytes.Length+1];
int indx = tbValue.SelectionStart;
for (int i=0; i<indx; i++) tst[i]=oemBytes[i];
tst[indx]=SymList1.SymbolList[itm].Translation;
for (int i=indx;i<tbValue.Text.Length;i++) tst[i+1]=oemBytes[i];
tbValue.Text = oem.GetString(tst);
tbValue.Refresh();
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(SymbDlg));
this.tbctlSymbol = new System.Windows.Forms.TabControl();
this.tbValue = new System.Windows.Forms.TextBox();
this.btnOK = new System.Windows.Forms.Button();
this.btnCancel = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// tbctlSymbol
//
this.tbctlSymbol.Location = new System.Drawing.Point(8, 0);
this.tbctlSymbol.Name = "tbctlSymbol";
this.tbctlSymbol.SelectedIndex = 0;
this.tbctlSymbol.Size = new System.Drawing.Size(464, 264);
this.tbctlSymbol.TabIndex = 0;
//
// tbValue
//
this.tbValue.Location = new System.Drawing.Point(8, 280);
this.tbValue.Name = "tbValue";
this.tbValue.Size = new System.Drawing.Size(504, 20);
this.tbValue.TabIndex = 1;
this.tbValue.Text = "";
//
// btnOK
//
this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK;
this.btnOK.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.btnOK.Location = new System.Drawing.Point(72, 320);
this.btnOK.Name = "btnOK";
this.btnOK.Size = new System.Drawing.Size(104, 24);
this.btnOK.TabIndex = 2;
this.btnOK.Text = "Save Text";
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
//
// btnCancel
//
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.btnCancel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
this.btnCancel.Location = new System.Drawing.Point(208, 320);
this.btnCancel.Name = "btnCancel";
this.btnCancel.Size = new System.Drawing.Size(72, 23);
this.btnCancel.TabIndex = 3;
this.btnCancel.Text = "Cancel";
//
// SymbDlg
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(672, 350);
this.Controls.Add(this.btnCancel);
this.Controls.Add(this.btnOK);
this.Controls.Add(this.tbValue);
this.Controls.Add(this.tbctlSymbol);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "SymbDlg";
this.Text = "Symbol";
this.ResumeLayout(false);
}
#endregion
private void btnOK_Click(object sender, System.EventArgs e)
{
ReturnText = tbValue.Text;
}
}
}

View File

@@ -0,0 +1,192 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used forserialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="tbctlSymbol.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="tbctlSymbol.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="tbctlSymbol.DrawGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="tbctlSymbol.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="tbctlSymbol.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="tbctlSymbol.GridSize" type="System.Drawing.Size, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>8, 8</value>
</data>
<data name="tbValue.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="tbValue.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="tbValue.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="btnOK.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="btnOK.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="btnOK.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="btnCancel.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="btnCancel.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="btnCancel.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="$this.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>(Default)</value>
</data>
<data name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.Localizable" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.GridSize" type="System.Drawing.Size, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>8, 8</value>
</data>
<data name="$this.DrawGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="$this.TrayHeight" type="System.Int32, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>80</value>
</data>
<data name="$this.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="$this.Name">
<value>SymbDlg</value>
</data>
<data name="$this.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAICAQAAAAAADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAADAAADAAAAAwMAAwAAAAMAAwADAwAAAwMDAAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
AAD///8AiIiIiIiIiIiIiIiIiIiIiPF3F3F3F3F3F3d3d3d3d3jxdxdxdxdxdxd3d3d3d3d49xdxdxdx
dxdxd3d3d3d3ePcXcXcXcXcXcXd3d3d3d3jxcXcXcXcXcXcXd3d3d3d48XF3F3F3F3F3F3d3d3d3ePdx
F3F3F3F3F3F3d3d3d3j3cRdxdxdxdxdxd3d3d3d49xdxdxdxdxdxdxd3d3d3ePcXcXcXcXcXcXcXd3d3
d3jxdxcXcXcXcXcXcXd3d3d48XcXF3F3F3F3F3F3d3d3ePdxdxF3F3F3F3F3F3d3d3j3cXcRdxdxdxdx
dxd3d3d49xdxdxdxdxdxdxdxd3d3ePcXcXcXcXcXcXcXcXd3d3jxdxdxcXcXcXcXcXcXd3d48XcXcXF3
F3F3F3F3F3d3ePdxdxd3F3F3F3F3F3F3d3j3cXcXdxdxdxdxdxdxd3d49xdxd3dxdxdxdxdxdxd3ePcX
cXd3cXcXcXcXcXcXd3jxdxd3d3cXcXcXcXcXcXd48XcXd3d3F3F3F3F3F3F3ePdxd3d3d3F3F3F3F3F3
F3j3cXd3d3dxdxdxdxdxdxd49xd3d3d3dxdxdxdxdxdxePcXd3d3d3cXcXcXcXcXcXjxd3d3d3d3cXcX
cXcXcXcY8Xd3d3d3d3F3F3F3F3F3GP////////////////////gAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
</value>
</data>
</root>

View File

@@ -0,0 +1,142 @@
/*********************************************************************************************
* Copyright 2004 - Volian Enterprises, Inc. All rights reserved.
* Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
* ------------------------------------------------------------------------------
* $Workfile: SymbLst.cs $ $Revision: 2 $
* $Author: Kathy $ $Date: 11/15/04 10:54a $
*
* $History: SymbLst.cs $
*
* ***************** Version 2 *****************
* User: Kathy Date: 11/15/04 Time: 10:54a
* Updated in $/LibSource/Utils
* B2004-057: crash on scroll fixed & rest of PSI/Title symbols added
*
* ***************** Version 1 *****************
* User: Kathy Date: 7/27/04 Time: 8:34a
* Created in $/LibSource/Utils
*********************************************************************************************/
using System;
namespace Utils
{
/// <summary>
/// Summary description for SymbLst.
/// </summary>
///
public class SymbolListItem
{
public string CharacterCode;
public byte Translation;
public short CharacterSet;
public SymbolListItem(string cc, byte trans, short cs)
{
CharacterCode = cc;
Translation = trans;
CharacterSet = cs;
}
}
public class SymbolListB
{
public string[] SymbolListStrings;
public SymbolListItem[] SymbolList;
public SymbolListB()
{
}
}
public class SymbolListSteps : SymbolListB // for steps
{
public SymbolListSteps()
{
SymbolListStrings = new string[]
{
"Degree",
"Delta",
"Greater Than or Equal To",
"Less Than Or Equal To",
"Plus or Minus",
"Sigma",
"Gamma",
"One Half",
"ACCUM Character",
"Solid Bullet",
"Approximatly Equal",
"Similar or Equal",
"Division Symbol",
"Square Root",
"Rho",
"PI",
"Micro",
"Lower Case Delta",
"Lower Case Sigma",
"One Fourth",
"Distinguished Zero",
"Average Disintegration Energy",
"Grave",
"Vertical Line",
"Epsilon",
"Theta",
"Dot in Oval",
"Tau",
"Hard Space",
"Diamond",
"Turn On Bold",
"Turn Off Bold",
"Turn On Underline",
"Turn Off Underline",
"Turn On Italics",
"Turn Off Italics",
"Turn On Superscript",
"Turn Off Superscript",
"Turn On Subscript",
"Turn Off Subscript"
};
SymbolList = new SymbolListItem[] {
new SymbolListItem("\xB0",0xF8,0), /* <20> - Degree */
new SymbolListItem("\x44",0x7F,0), /*  - Delta */
new SymbolListItem("\xB3",0xF2,0), /* <20> - Greater Than or Equal */
new SymbolListItem("\xA3",0xF3,0), /* <20> - Less Than or Equal */
new SymbolListItem("\xB1",0xF1,0), /* <20> - Plus or Minus */
new SymbolListItem("\x53",0xE4,0), /* <20> - Sigma */
new SymbolListItem("\x67",0xE7,0), /* <20> - (Printed as a Gamma) */
new SymbolListItem("\xBD",0xAB,1), /* <20> - One Half */
new SymbolListItem("\xFE",0xFE,0), /* <20> - ACCUM Character */
new SymbolListItem("\xB7",0x07,0), /*  - Solid Bullet */
new SymbolListItem("\xBB",0xF7,0), /* Similar */
new SymbolListItem("\x40",0xF0,0), /* <20> - Approximately equal */
new SymbolListItem("\xB8",0xF6,0), /* <20> - Division symbol */
new SymbolListItem("\xD6",0xFB,0), /* <20> - Square Root */
new SymbolListItem("\x72",0xE2,0), /* <20> - (Printed as a rho) */
new SymbolListItem("\x70",0xE3,0), /* <20> - (Printed as pi) */
new SymbolListItem("\x6D",0xE6,0), /* <20> - micro */
new SymbolListItem("\x64",0xEB,0), /* <20> - Lower Case Delta */
new SymbolListItem("\x73",0xE5,0), /* <20> - Lower Case Sigma */
new SymbolListItem("\xBC",0xAC,1), /* <20> - One Fourth */
new SymbolListItem("\xC6",0xED,0), /* <20> - Distinguished Zero */
new SymbolListItem("\x9F",0x90,0), // Average Deintegration Energy
new SymbolListItem("\xEC",0x8D,1), // Grave
new SymbolListItem("\xBD",0xB3,0), // Vertical Bar
new SymbolListItem("\x65",0xEE,0), // Epsilon
new SymbolListItem("\x71",0xE9,0), // Theta
new SymbolListItem("\x9E",0xEC,0), // Dot With Oval
new SymbolListItem("\x74",0xA8,0), // Tau
new SymbolListItem("\xA0",0xFF,1), // Hard Space
new SymbolListItem("\xA8",0xA9,0), // Diamond
new SymbolListItem("\xD5",0xD5,1), // Bold on
new SymbolListItem("\xD6",0xD6,1), // Bold off
new SymbolListItem("\xAE",0xAE,1), // Underline on
new SymbolListItem("\xAF",0xAF,1), // Underline off
new SymbolListItem("\xB2",0xB2,1), // Italics on
new SymbolListItem("\xDD",0xDD,1), // Italics off
new SymbolListItem("\xC6",0xC6,1), // Superscript on
new SymbolListItem("\xC7",0xC7,1), // Superscript off
new SymbolListItem("\xD1",0xD1,1), // Subscript on
new SymbolListItem("\xA6",0xA6,1) // Subscript off
};
}
}
}

View File

@@ -0,0 +1,624 @@
/*********************************************************************************************
* Copyright 2004 - Volian Enterprises, Inc. All rights reserved.
* Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
* ------------------------------------------------------------------------------
* $Workfile: UsrRunTime.cs $ $Revision: 9 $
* $Author: Jsj $ $Date: 10/31/07 10:11a $
*
* $History: UsrRunTime.cs $
*
* ***************** Version 9 *****************
* User: Jsj Date: 10/31/07 Time: 10:11a
* Updated in $/LibSource/Utils
* Bug fix to ExeAdjust()
*
* ***************** Version 8 *****************
* User: Jsj Date: 7/21/06 Time: 2:57p
* Updated in $/LibSource/Utils
* added comment of logic that might be needed in future.
*
* ***************** Version 7 *****************
* User: Jsj Date: 5/17/05 Time: 11:54a
* Updated in $/LibSource/Utils
* cleanup
*
* ***************** Version 6 *****************
* User: Kathy Date: 4/21/05 Time: 10:17a
* Updated in $/LibSource/Utils
* issingleuser
*
* ***************** Version 5 *****************
* User: Kathy Date: 4/12/05 Time: 1:00p
* Updated in $/LibSource/Utils
* B2004-050: single user needed network info
*
* ***************** Version 4 *****************
* User: Kathy Date: 1/24/05 Time: 2:44p
* Updated in $/LibSource/Utils
* B2005-004 fixes
*
* ***************** Version 3 *****************
* User: Kathy Date: 1/10/05 Time: 12:57p
* Updated in $/LibSource/Utils
* B2004-063 fix
*
* ***************** Version 2 *****************
* User: Jsj Date: 11/12/04 Time: 10:32a
* Updated in $/LibSource/Utils
* Save the user's TEMP dir path ExeAjust() handles TEMP dir and Data Dir
*
* ***************** Version 1 *****************
* User: Kathy Date: 7/27/04 Time: 8:34a
* Created in $/LibSource/Utils
*********************************************************************************************/
using System;
using System.IO;
using System.Windows.Forms;
using System.Text;
using Org.Mentalis.Files;
namespace Utils
{
public enum UserCStatus
{
PRINACTIVE=0, PRACTIVE=1 // process record is NOT active, active respectively
};
public class UserData
{
public byte UserStatus;
public string UserNetworkID;
public string UserName;
public string UserPhone1;
public string UserPhone2;
public string UserLoc1;
public string UserLoc2;
public string UserShell; // 1 - vfw; 2 - browser; 3 - 32-bit browser
public string UserProcess;
// the first constructor loads data from a user's cfg file
public UserData(string ucfgpath)
{
if (File.Exists(ucfgpath)==false) return;
// create an xml node from the [User Data] in the cfg file & transfer
// to this. Note that the UserNetworkID is not set until the serial
// number is read to determine whether in multi-user-mode (B2004-050)
PrivateProfile ppUserData = new PrivateProfile(ucfgpath);
UserName=ppUserData.Attr("User Data","UserName");
UserPhone1=ppUserData.Attr("User Data","UserPhone1");
UserPhone2=ppUserData.Attr("User Data","UserPhone2");
UserLoc1=ppUserData.Attr("User Data","UserLoc1");
UserLoc2=ppUserData.Attr("User Data","UserLoc2");
char tmp = '\x03';
UserShell = tmp.ToString(); // 1 - vfw; 2 - browser; 3 - 32-bit browser
UserProcess="";
ppUserData=null;
}
public void SetNetworkID(string ucfgpath, bool inmultiuser)
{
// create an xml node from the [User Data] in the cfg file & transfer
// to this.
PrivateProfile ppUserData = new PrivateProfile(ucfgpath);
UserNetworkID=ppUserData.Attr("User Data","UserNetworkID");
if (inmultiuser && (UserNetworkID == "" || UserNetworkID==null))
{
MessageBox.Show("Invalid UserNetworkID from " + ucfgpath +", set before reexecuting VE-PROMS.","VE-PROMS Error");
Environment.Exit(-1);
}
ppUserData=null;
}
// the next constructor gets the input 'nth' record from the dat file (dat file is
// passed in via a FileStream
public UserData(FileStream dfs, int n)
{
// seek to the position as defined by n.
long skpos = (long)(n * 140); // 140 is the size of the record from old proms.
dfs.Seek(skpos,SeekOrigin.Begin);
byte [] test = new byte[140];
dfs.Read(test,0,140);
UserStatus = test[0];
string tmp = Encoding.ASCII.GetString(test,0,140);
UserNetworkID = tmp.Substring(1,9).Replace('\0',' ').Trim();
UserName = tmp.Substring(10,31).Replace('\0',' ').Trim();
UserPhone1 = tmp.Substring(41,16).Replace('\0',' ').Trim();
UserPhone2 = tmp.Substring(57,16).Replace('\0',' ').Trim();
UserLoc1 = tmp.Substring(73,31).Replace('\0',' ').Trim();
UserLoc2 = tmp.Substring(104,31).Replace('\0',' ').Trim();
UserShell = tmp.Substring(135,2).Replace('\0',' ').Trim();
UserProcess = tmp.Substring(137,3).Replace('\0',' ').Trim();
}
// write this user data out to the filestream at the current position in file
// defined in dfs
public void Write(FileStream dfs)
{
dfs.WriteByte(UserStatus);
byte[] btmp = Encoding.ASCII.GetBytes(UserNetworkID.PadRight(9,'\0'));
dfs.Write(btmp,0,9);
btmp = Encoding.ASCII.GetBytes(UserName.PadRight(31,'\0'));
dfs.Write(btmp,0,31);
btmp = Encoding.ASCII.GetBytes(UserPhone1.PadRight(16,'\0'));
dfs.Write(btmp,0,16);
btmp = Encoding.ASCII.GetBytes(UserPhone2.PadRight(16,'\0'));
dfs.Write(btmp,0,16);
btmp = Encoding.ASCII.GetBytes(UserLoc1.PadRight(31,'\0'));
dfs.Write(btmp,0,31);
btmp = Encoding.ASCII.GetBytes(UserLoc2.PadRight(31,'\0'));
dfs.Write(btmp,0,31);
btmp = Encoding.ASCII.GetBytes(UserShell.PadRight(2,'\0'));
dfs.Write(btmp,0,2);
btmp = Encoding.ASCII.GetBytes(UserProcess.PadRight(3,'\0'));
dfs.Write(btmp,0,3);
}
};
/// <summary>
/// Summary description for UserRunTime. This class contains all pertinent information
/// for the runtime for this instance of the program, including cfg, paths, menu file,
/// security, serial number, options, etc.
/// </summary>
public class UserRunTime
{
public string exepath;
public string syspath;
public string netsyspath;
public string TempDirPath;
public string ucfgpath; // user config file name
public string appcfgpath; // app config file name
public Security sec;
public SerialNo SerialNumber;
public string OptionsFile;
public string initials; // user login name
public string UserID; // cfg name and/or login
public MenuXML menuwinXML;
public MenuXML menuwin2XML;
public string myUserNetworkID;
public UserData myUserData;
public bool InMultiUserMode;
// make some form properties here, such as color. - make need it's own class,
//
public UserRunTime()
{
menuwin2XML = null;
SetExeName();
// load in xml list of plants. Then do exist tests to see if they
// exist on the datapath.
menuwinXML = new MenuXML(syspath + "\\menuwin.xml");
}
public void SetSecurity(Security isec)
{
// set the user's run time security settings. also, flag whether this user is
// running in multi user mode (just so we don't have to keep making this check
// later)
sec = isec;
// Do this separate (SetUserMode()) to remove interdependent logic path between
// security(vesam), user CFG file, and the serial number
// InMultiUserMode = (SerialNumber.GetSNOption((uint)Utils.SerialNo.SN_Flags.SN_NETWORK_ON)>0)?true:false;
}
public void SetUserMode()
{
if (SerialNumber.SerialNum != -1)
InMultiUserMode = (SerialNumber.GetSNOption((uint)Utils.SerialNo.SN_Flags.SN_NETWORK_ON)>0)?true:false;
if (InMultiUserMode) myUserData.SetNetworkID(ucfgpath, InMultiUserMode);
}
private bool IsSingleUserMode()
{
// Need to do:
// This needs to check if a lock is currently set as well
// - jsj 7/20/06
return !InMultiUserMode;
}
// Adjust the input file with the required pathname as follows:
// '~': (system path) i.e. c:\VE-PROMS
// '@': (executable path) i.e. c:\VE-PROMS\BIN
// '\342': current data directory i.e. c:\VEHPR1B\PROCS
// '\347': resolve for single user mode, append tempdir onto data dir i.e. TEMPS\JOHN____.D00
public string ExeAdjust(string str)
{
if (exepath==null)SetExeName();
// This logic will allow me to combine the use of our special
// tokens. For example, I needed a user temp directory in the
// VE-PROMS root for the Search Across Procedure Sets option:
// "~\374results" --> C:\VE-PROMS\TEMPS\JOHN____.D00\RESUTLS
StringBuilder exebuff = new StringBuilder();
StringBuilder exetkn = new StringBuilder(str);
string exetkn_str = exetkn.ToString();
int pos = 0;
char[] tchar = "~@\xE7\xE2".ToCharArray();
/** Bug Fix: B2007-015
* If a short file/directory name contained a ~ character, it was
* being processed, when it should not have.
* i.e. we were getting the current directory, then looping back up
* and searching the directory string (finding a ~ char)
*
* I added logic to use a starting position in the IndexOfAny() function
* so that we can skip past the portions already processes.
*/
while ((pos=exetkn_str.IndexOfAny(tchar,pos))>-1)
{
char[] chr;
string curdir = Directory.GetCurrentDirectory(); // for use with '\xE2'
chr = new char[exetkn_str.Length];
chr = exetkn_str.ToCharArray();
exetkn.Remove(pos,1);
switch (chr[0])
{
case '~': exetkn.Insert(pos,syspath+"\\"); // i.e. c:\VE-PROMS
pos += syspath.Length +1;
break;
case '@': exetkn.Insert(pos,exepath+"\\"); // i.e. c:\VE-PROMS\BIN
pos += exepath.Length + 1;
break;
case '\xE2': // case '\342':
exetkn.Insert(pos,curdir+"\\"); // i.e. c:\VEHPR1B\PROCS
pos += curdir.Length + 1;
break;
case '\xE7': // case '\347':
if (!IsSingleUserMode()&& TempDirPath!=null)
{
exetkn.Insert(pos,TempDirPath+"\\"); // i.e. TEMPS\JOHN____.D00
pos += TempDirPath.Length + 1;
}
break;
}
exetkn_str = exetkn.ToString();
}
return exetkn.ToString();
}
private void SetExeName()
{
ShortName sname = new ShortName(System.Environment.CommandLine);
string cmdlinepath = sname.ShortFileName;
string upbuff = cmdlinepath.ToUpper();
string tmp = upbuff.Substring(1,upbuff.LastIndexOf("\\")-1);
int idx = tmp.IndexOf("VE-PROMS.NET");
if (idx > 0)
{
exepath = tmp.Substring(0,idx+8) + tmp.Substring(idx+12);
syspath = exepath.Substring(0,exepath.IndexOf("\\BIN"));
netsyspath = syspath + ".NET";
}
else
{
exepath = tmp;
syspath = exepath.Substring(0,exepath.IndexOf("\\BIN"));
netsyspath = syspath + ".NET";
}
}
public void SetAppConfig(string pth)
{
appcfgpath = pth;
}
public bool SetUserConfig()
{
bool Rtnval = true;
PrivateProfile Veproms_ini = new PrivateProfile(ExeAdjust("~veproms.ini"));
// Find the UserId (not the number, he name/initials)
if (UserID==null || UserID.Equals(""))
{
// see if it's defined via an environment variable
UserID = System.Environment.GetEnvironmentVariable("userid");
if (UserID == null)
{
// Check the VEPROMS.INI file
// UserID = Veproms_ini.Attr("/ini/section[@name='veconfig']/param[@name='userid']/@value");
UserID = Veproms_ini.Attr("veconfig","userid");
}
if (UserID == null || UserID.Equals(""))
{
if (sec.initials != null && !sec.initials.Equals(""))
{
// default to the user's login name
UserID = sec.initials;
}
else
{
// default to VEPROMS.CFG
UserID = "VEPROMS";
}
}
}
// Fing the VECONFIG path
ucfgpath=System.Environment.GetEnvironmentVariable("veconfig");
// If VECONFIG environment variable not set then check the
// VEPROMS.INI file for VECONFIG settings.
if (ucfgpath == null || ucfgpath.Equals(""))
{
// ucfgpath = Veproms_ini.Attr("/ini/section[@name='veconfig']/param[@name='file']/@value");
ucfgpath = Veproms_ini.Attr("veconfig","file");
if (ucfgpath==null || ucfgpath.Equals(""))
{
// still no path, use default cfg file path
ucfgpath = ExeAdjust("~CONFIG");
}
}
if (ucfgpath != null)
{
string tmp_UID="";
// See it the VECONFIG path includes a CFG file name.
// if no CFG file name, then build one based on userid
bool atroot = ucfgpath.EndsWith(":\\");
if (!atroot)
{
if (ucfgpath.EndsWith("\\"))
{
// trim the ending backslash
ucfgpath = ucfgpath.Substring(0,ucfgpath.Length-1);
}
}
//See if we need to build a CFG file name
if (atroot || Directory.Exists(ucfgpath))
{
// use the no more than the first 8 chars of the userid
tmp_UID = (UserID.Length > 8)?UserID.Substring(0,8) : UserID;
// Build the CFG file name and append to the VECONFIG path
ucfgpath = ucfgpath + "\\" + tmp_UID + ".CFG";
}
}
if (File.Exists(ucfgpath))
myUserData = new UserData(ucfgpath);
else
{
// error - cfg file does not exist
Rtnval = false;
MessageBox.Show("Configuration file:\n\n" + ucfgpath + "\n\nDoes not exist","Missing CFG file");
}
return Rtnval;
}
public void FreeMenuWinXML()
{
menuwinXML=null;
}
public void LoadMenuWin2()
{
if (menuwin2XML == null)
menuwin2XML = new MenuXML(syspath + "\\menuwin2.xml");
// menuwin2XML = new MenuXML("e:\\ve-proms\\menuwin2.xml");
}
public void FreeMenuWin2XML()
{
menuwin2XML=null;
}
// The following methods update the cfg file (delete item, add item & mod)
//public bool DeletePathFromCfg(string delpth)
//{
// IniReader in1 = new IniReader(ucfgpath);
// string curpath = in1.ReadString("Menu","DataPath","");
// string modpath = curpath.Replace(delpth,"");
// inifile.WriteINIKeyValueStr("Menu","DataPath",modpath,ucfgpath);
// return true;
//}
//public void AddPathToCfg(string pth)
//{
// string newpath=null;
// INIFile inifile = new INIFile();
// string curpath = inifile.GetINIKeyValueStr("Menu","DataPath","",132,ucfgpath);
// string tmp = curpath.TrimEnd(" \t".ToCharArray());
// // If none exists, just add that entered, if it ends with ';', don't add another
// if (tmp==null||tmp=="")
// newpath = pth;
// else if (tmp.Substring(tmp.Length-1,1)==";")
// newpath = tmp + pth;
// else
// newpath = tmp+";"+pth;
// inifile.WriteINIKeyValueStr("Menu","DataPath",newpath,ucfgpath);
//}
//public void ModTitleToCfg(string oldtitle, string newtitle)
//{
// INIFile inifile = new INIFile();
// string curpath = inifile.GetINIKeyValueStr("Menu","DataPath","",132,ucfgpath);
// string newpath=curpath.Replace(oldtitle,newtitle);
// inifile.WriteINIKeyValueStr("Menu","DataPath",newpath,ucfgpath);
//}
// Check if plant (defined by location) is in the menuwin file. Return 0 if not,
// 1 if in file and -1 if error reading file.
public int IsInMenuWin(string location)
{
// see if this plant is already in the file, check menuwin
// and if there, assume in both.
try
{
// Create an instance of StreamReader to read from a file.
// The using statement also closes the StreamReader.
using (StreamReader sr = new StreamReader(syspath+"\\menuwin"))
{
string line;
while ((line = sr.ReadLine()) != null)
{
int indx;
indx = line.ToUpper().IndexOf(location.ToUpper());
if (indx>-1)
{
sr.Close();
return 1;
}
}
}
}
catch (Exception e)
{
// Let the user know what went wrong.
Console.WriteLine("Could not test " + e.Message + " for plant existence in menuwin file");
return -1;
}
return 0;
}
public bool AddToMenuWin(string title,string location)
{
int inmenufile = IsInMenuWin(location);
if (inmenufile==-1)return false; // error checking for it
if (inmenufile==1)return true; // already there.
// make backup files in case of failure.
FileInfo menuwinbak = new FileInfo(syspath+"\\menuwin");
menuwinbak.CopyTo(syspath+"\\menuwin.BAK",true);
menuwinbak=null;
// add the title and location to the menuwin menuwin.xml files.
// menuwin first.
FileStream fs = new FileStream(syspath+"\\menuwin",
FileMode.Open, FileAccess.ReadWrite, FileShare.None);
// if the file couldn't open, give an error.
if (fs == null)
{
MessageBox.Show("Could not add plant to menuwin file.","VE-PROMS");
menuwinbak = new FileInfo(syspath+"\\menuwin.BAK");
menuwinbak.Delete();
return false;
}
// go to last character of file & see if we have a /r/n. There
// needs to be a single newline between plants in the menuwin file
// or an error will occur.
fs.Seek(-2,SeekOrigin.End);
StreamReader tmpReader = new StreamReader(fs);
int tmpi1 = tmpReader.Peek();
bool hasnewline=false;
if (tmpi1==0xD)hasnewline=true;
fs.Seek(0,SeekOrigin.End);
StreamWriter swFromFileStream = new StreamWriter(fs);
if (hasnewline)
swFromFileStream.Write(title);
else
swFromFileStream.Write("\r\n"+title);
string tmpl = "\r\n{t}" + location + " menu ~menu1a\r\n";
swFromFileStream.Write(tmpl);
swFromFileStream.Flush();
swFromFileStream.Close();
fs.Close();
// now add menuwin.xml text, add this before the end tags for
// system attach & menuwin (i.e. that's the seek part of this
// subtracting from end of file the number of characters for
// these two tags.
// make backup files in case of failure.
FileInfo menuwinxbak = new FileInfo(syspath+"\\menuwin");
menuwinxbak.CopyTo(syspath+"\\menuwinx.BAK",true);
menuwinxbak=null;
fs = new FileStream(syspath+"\\menuwin.xml",
FileMode.Open, FileAccess.Write, FileShare.None);
if (fs == null)
{
MessageBox.Show("Could not add plant to menuwin.xml file.","VE-PROMS");
//delete menuwin & rename the bak file.
menuwinbak = new FileInfo(syspath+"\\menuwin");
menuwinbak.Delete();
menuwinbak = null;
menuwinbak = new FileInfo(syspath+"\\menuwin.BAK");
menuwinbak.CopyTo(syspath+"\\menuwin");
menuwinbak.Delete();
menuwinxbak = new FileInfo(syspath+"\\menuwinx.BAK");
menuwinxbak.Delete();
return false;
}
long flen = fs.Length;
fs.SetLength(flen-27); //remove tags.
fs.Seek(0,SeekOrigin.End);
swFromFileStream = new StreamWriter(fs);
swFromFileStream.Write("<Plant>\r\n<MenuName>");
swFromFileStream.Write(title);
swFromFileStream.Write("</MenuName>\r\n<TemplateName>{t}");
swFromFileStream.Write(location);
swFromFileStream.Write(" menu menu1a</TemplateName>\r\n</Plant>\r\n");
swFromFileStream.Write("</SystemAttach>\r\n</MenuWin>");
swFromFileStream.Flush();
swFromFileStream.Close();
fs.Close();
menuwinbak = new FileInfo(syspath+"\\menuwin.BAK");
menuwinbak.Delete();
menuwinxbak = new FileInfo(syspath+"\\menuwinx.BAK");
menuwinxbak.Delete();
// reload so that the new plant node gets added to the xml tree.
menuwinXML = null;
menuwinXML = new MenuXML(syspath + "\\menuwin.xml");
MessageBox.Show("Please send \\ve-proms\\menuwin & \\ve-proms\\menuwin.xml files to Volian.","VE-PROMS");
return true;
}
public bool ModMenuWin(string newtitle, string oldtitle)
{
// replace the oldtitle with the new in both the menuwin file
// and the menuwin.xml file.
FileInfo menuwinbak = new FileInfo(syspath+"\\menuwin");
menuwinbak.CopyTo(syspath+"\\menuwin.BAK",true);
menuwinbak=null;
// read the whole file, replace the plant title string & save the file.
StreamReader sr = File.OpenText(syspath+"\\menuwin");
string input;
if ((input=sr.ReadToEnd())!=null)
{
sr.Close();
string output = input.Replace(oldtitle,newtitle);
StreamWriter sw = new StreamWriter(syspath+"\\menuwin",false);
sw.Write(output);
sw.Close();
}
else
{
sr.Close();
MessageBox.Show("Could not update menuwin file with new plant title","VE-PROMS");
menuwinbak = new FileInfo(syspath+"\\menuwin.BAK");
menuwinbak.CopyTo(syspath+"\\menuwin",true);
menuwinbak.Delete();
return false;
}
// now do the xml file.
menuwinbak = new FileInfo(syspath+"\\menuwin.xml");
menuwinbak.CopyTo(syspath+"\\menuwinx.BAK",true);
menuwinbak=null;
// read the whole file, replace the plant title string & save the file.
sr = File.OpenText(syspath+"\\menuwin.xml");
if ((input=sr.ReadToEnd())!=null)
{
sr.Close();
string output = input.Replace(oldtitle,newtitle);
StreamWriter sw = new StreamWriter(syspath+"\\menuwin.xml",false);
sw.Write(output);
sw.Close();
}
else
{
sr.Close();
MessageBox.Show("Could not update menuwin.xml file with new plant title","VE-PROMS");
menuwinbak = new FileInfo(syspath+"\\menuwin.BAK");
menuwinbak.CopyTo(syspath+"\\menuwin",true);
menuwinbak.Delete();
menuwinbak = new FileInfo(syspath+"\\menuwinx.BAK");
menuwinbak.CopyTo(syspath+"\\menuwin.xml",true);
menuwinbak.Delete();
return false;
}
return true;
}
}
}

View File

@@ -0,0 +1,207 @@
<Project DefaultTargets="Build" ToolsVersion="3.5" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectType>Local</ProjectType>
<ProductVersion>8.0.50727</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{680054D3-49C4-40E7-92A5-67B97DCE6308}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ApplicationIcon>
</ApplicationIcon>
<AssemblyKeyContainerName>
</AssemblyKeyContainerName>
<AssemblyName>Utils</AssemblyName>
<AssemblyOriginatorKeyFile>
</AssemblyOriginatorKeyFile>
<DefaultClientScript>JScript</DefaultClientScript>
<DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
<DefaultTargetSchema>IE50</DefaultTargetSchema>
<DelaySign>false</DelaySign>
<OutputType>Library</OutputType>
<RootNamespace>Utils</RootNamespace>
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
<StartupObject>
</StartupObject>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>0.0</OldToolsVersion>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>true</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>false</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<DebugType>full</DebugType>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>TRACE</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>false</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>true</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<DebugType>none</DebugType>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<ItemGroup>
<Reference Include="dznet">
<Name>dznet</Name>
<HintPath>f:\DynaZip Max\Redist\dznet.dll</HintPath>
<AssemblyFolderKey>hklm\dn\dynazip for .net</AssemblyFolderKey>
</Reference>
<Reference Include="System">
<Name>System</Name>
</Reference>
<Reference Include="System.Data">
<Name>System.Data</Name>
</Reference>
<Reference Include="System.Drawing">
<Name>System.Drawing</Name>
</Reference>
<Reference Include="System.Windows.Forms">
<Name>System.Windows.Forms</Name>
</Reference>
<Reference Include="System.Xml">
<Name>System.XML</Name>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="About.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="CurSet.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="DirSpace.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="DTI.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="FmtFiles.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="MenuXML.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="PrivateProfile.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Security.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="SerialNo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="ShrtNm.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="SymbDlg.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="SymbLst.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="UsrRunTime.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="VEdt.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="ZipFuncs.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="ZipFuncsDlg.cs">
<SubType>Form</SubType>
</Compile>
<EmbeddedResource Include="About.resx">
<DependentUpon>About.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="SymbDlg.resx">
<DependentUpon>SymbDlg.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ZipFuncsDlg.resx">
<DependentUpon>ZipFuncsDlg.cs</DependentUpon>
</EmbeddedResource>
<Content Include="AboutBckgnd_370x209.bmp" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
<Visible>False</Visible>
<ProductName>.NET Framework 2.0 %28x86%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
<Visible>False</Visible>
<ProductName>.NET Framework 3.0 %28x86%29</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Org.Mentalis.Files\Org.Mentalis.Files.csproj">
<Project>{A46428FC-1E35-4B8D-8B06-A1DF8BAC7A04}</Project>
<Name>Org.Mentalis.Files</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,19 @@
Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Utils", "Utils.csproj", "{680054D3-49C4-40E7-92A5-67B97DCE6308}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{680054D3-49C4-40E7-92A5-67B97DCE6308}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{680054D3-49C4-40E7-92A5-67B97DCE6308}.Debug|Any CPU.Build.0 = Debug|Any CPU
{680054D3-49C4-40E7-92A5-67B97DCE6308}.Release|Any CPU.ActiveCfg = Release|Any CPU
{680054D3-49C4-40E7-92A5-67B97DCE6308}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@@ -0,0 +1,98 @@
/*********************************************************************************************
* Copyright 2004 - Volian Enterprises, Inc. All rights reserved.
* Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
* ------------------------------------------------------------------------------
* $Workfile: VEdt.cs $ $Revision: 1 $
* $Author: Kathy $ $Date: 7/27/04 8:35a $
*
* $History: VEdt.cs $
*
* ***************** Version 1 *****************
* User: Kathy Date: 7/27/04 Time: 8:35a
* Created in $/LibSource/Utils
*********************************************************************************************/
using System;
namespace Utils
{
/// <summary>
/// Summary description for VEdt.
/// </summary>
public class VEDateTime
{
public DateTime dt;
public string dtstr;
public VEDateTime(long tm)
{
System.Globalization.CultureInfo info =
new System.Globalization.CultureInfo("en-US", false);
System.Globalization.Calendar calendar = info.Calendar;
// do some conversion so that proms will be able to use this
// date/time. Proms had it in seconds since 00:00:00 1/1/1970.
// .NET has it in ticks since 00:00:00 1/1/1
DateTime promsdt = new DateTime(1970,1,1,0,0,0,0); // Jan 1, 1970
//
// Get the offset time between this time zone and UTC (GMT) time.
// Convert the offset to seconds.
// Subtract the offset from the UTC time gotten for Jan 1, 1970
ThisTimeZone TZ = new ThisTimeZone();
TimeSpan TimeZoneSpan = TZ.GetUtcOffset(promsdt); // Time Zone offset from UTC
long TimeZoneAdj = Math.Abs(TimeZoneSpan.Ticks / 10000000); // convert to seconds
DateTime cnv = promsdt.AddSeconds(tm-TimeZoneAdj);
dtstr = cnv.ToLongDateString() + " " + cnv.ToLongTimeString();
}
}
/*
* TimeZone is an Abstract Class. You need to inherit the TimeZone Class
* and overload a couple of it's functions in order to use it.
* - called in CalculatePromsDate() above.
*/
public class ThisTimeZone : TimeZone
{
private TimeZone curTZ;
public TimeSpan SpanTZ;
public ThisTimeZone()
{
curTZ = CurrentTimeZone; // local timezone
}
// get the UTC (GMT) value for the given date/time
public override TimeSpan GetUtcOffset(DateTime ForThisDate)
{
SpanTZ = curTZ.GetUtcOffset(ForThisDate);
return SpanTZ;
}
// Name of the local Daylight savings time zone
public override string DaylightName
{
get
{
return curTZ.DaylightName;
}
}
// Name of the local standard time zone
public override string StandardName
{
get
{
return curTZ.StandardName;
}
}
// Get the start and end dates for daylight savings
public override System.Globalization.DaylightTime GetDaylightChanges(int year)
{
return curTZ.GetDaylightChanges(year);
}
}
}

View File

@@ -0,0 +1,647 @@
/*********************************************************************************************
* Copyright 2004 - Volian Enterprises, Inc. All rights reserved.
* Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
* ------------------------------------------------------------------------------
* $Workfile: ZipFuncs.cs $ $Revision: 2 $
* $Author: Kathy $ $Date: 8/10/04 9:12a $
*
* $History: ZipFuncs.cs $
*
* ***************** Version 2 *****************
* User: Kathy Date: 8/10/04 Time: 9:12a
* Updated in $/LibSource/Utils
* force copy for backup of zip file on checks (was crashing)
*
* ***************** Version 1 *****************
* User: Kathy Date: 7/27/04 Time: 8:35a
* Created in $/LibSource/Utils
*********************************************************************************************/
using System;
using System.Text;
using System.IO;
using System.Runtime.InteropServices;
using System.Collections.Specialized;
namespace Utils
{
/// <summary>
/// Zip and UnZip functions.
/// </summary>
public class ZipFuncs
{
[DllImport("Kernel32.DLL")] public static extern uint GetDriveType(char[] lpRootPathName);
private CDZipNET dzip;
private CDUnZipNET duzip;
private string _strZipPathAndFile; // full path and zip file name
private bool _CancelZip;
private bool _zipOnRemovable; // i.e. floppy disk
private int _ArchiveType; // Full or Partial
private string _strZipFileExcludeList; // what not to zip
private string _strComment; // user's zip comment
private string _strFilesToArchive; // what to zip up
private string _strArcTitle; // user's archive title
private string _strDestPath; // place to unzip to
//#define DRIVE_UNKNOWN 0
//#define DRIVE_NO_ROOT_DIR 1
//#define DRIVE_REMOVABLE 2
//#define DRIVE_FIXED 3
//#define DRIVE_REMOTE 4
//#define DRIVE_CDROM 5
//#define DRIVE_RAMDISK 6
private enum DriveType
{
DRIVE_UNKNOWN=0,
DRIVE_NO_ROOT_DIR,
DRIVE_REMOVABLE,
DRIVE_FIXED,
DRIVE_REMOTE,
DRIVE_CDROM,
DRIVE_RAMDISK
}
private enum ZipTypes
{
Full=0,
Partial=1
}
// Contstructor for an existing Zip file
public ZipFuncs(string iZipFile)
{
_strZipPathAndFile = iZipFile;
SetupDestinationPath();
_CancelZip = false;
// populate local variables with Zip file's
// Title, Archive type, and Comment
GetZipCommentInformation();
}
// Constructor for a new Zip file
public ZipFuncs()
{
_strZipPathAndFile = "";
_CancelZip = false;
}
//public properties
public string strArcTitle
{
get { return _strArcTitle; }
set {_strArcTitle = value.ToString(); }
}
public string strZipPathAndFile
{
get { return _strZipPathAndFile;}
set
{
_strZipPathAndFile = value.ToString();
SetupDestinationPath();
// populate local variables with Zip file's
// Title, Archive type, and Comment
GetZipCommentInformation();
}
}
public string strUnZipDestPath
{
get { return _strDestPath; }
set
{
_strDestPath = value.ToString();
}
}
public bool CancelZip
{
get { return _CancelZip;}
set { _CancelZip = value; }
}
public bool zipOnRemovable
{
get { return _zipOnRemovable;}
set { _zipOnRemovable = value;}
}
public int ArchiveType
{
get { return _ArchiveType;}
set { _ArchiveType = value; }
}
public string strFilesToArchive
{
get { return _strFilesToArchive; }
set { _strFilesToArchive = value.ToString(); }
}
public string strZipFileExcludeList
{
get { return _strZipFileExcludeList; }
set { _strZipFileExcludeList = value.ToString(); }
}
public string strComment
{
get {return _strComment;}
set
{
// if (value == null)
// _strComment = "";
// else
_strComment = (value == null)?"":value.ToString();
}
}
public bool CreateNewZipFile()
{
return _GenerateZipFile(true);
}
public bool UpdateZipFile()
{
return _GenerateZipFile(false);
}
private bool _GenerateZipFile(bool NewFileFile)
{
StringBuilder cmntTxt = new StringBuilder();
bool rtnval;
ZipFuncsDlg zpDlg = new ZipFuncsDlg();
dzip = new CDZipNET();
_CancelZip = false;
_zipOnRemovable = IsARemovableDisk();
// Setup DynaZip
// build comment field text
cmntTxt.Append(_strArcTitle);
cmntTxt.Append("\n");
if (_ArchiveType == (int)ZipFuncs.ZipTypes.Partial)
{
// Do not recurse the sub directories when doing a partial archive
cmntTxt.Append("PARTIAL\n");
dzip.RecurseFlag = false;
}
else
{
cmntTxt.Append("FULL\n");
dzip.RecurseFlag = true;
}
cmntTxt.Append(_strComment);
dzip.AddCommentFlag = true;
dzip.Comment = cmntTxt.ToString(); // zip file comment string
// CompressionFactors 10 - 19 are not compatable with older zip programs
// (i.e WinZip 7.0)
dzip.CompressionFactor = 9; // maxium compression
dzip.ExcludeFollowingFlag = true;
dzip.ExcludeFollowing = _strZipFileExcludeList;
dzip.ItemList = _strFilesToArchive;
dzip.LargeZIPFilesFlag = true;
dzip.ZIPFile = _strZipPathAndFile; // zip file name with full path
// Is the target zip path on a removable dirve?
if (_zipOnRemovable)
{
dzip.MultiVolumeControl = CDZipNET.MULTIVOLCONTROL.MV_USEMULTI;
}
else
{
dzip.MultiVolumeControl = CDZipNET.MULTIVOLCONTROL.MV_NONE;
}
// setup status bars
dzip.MajorStatusFlag = true;
dzip.MinorStatusFlag = true;
dzip.ZipMajorStatus += new CDZipNET.OnZipMajorStatus(zpDlg.ZipMajorStatus_event);
dzip.ZipMinorStatus += new CDZipNET.OnZipMinorStatus(zpDlg.ZipMinorStatus_event);
_CancelZip = false;
zpDlg.Show();
// Do the Zip function
if (!NewFileFile)
dzip.ActionDZ = CDZipNET.DZACTION.ZIP_UPDATE; //update existing zip file
else
dzip.ActionDZ = CDZipNET.DZACTION.ZIP_ADD; // create new zip file
rtnval = (zpDlg.DialogResult == System.Windows.Forms.DialogResult.OK);
zpDlg.Dispose();
// check for errors during the zip function.
if (rtnval)
rtnval = CheckZipErrorCode();
// if we are zipping to a different location than the current procedure
// set directory, we always want to return false so that this newly
// created zip file is not placed in the VE-PROMS tree.
if (_zipOnRemovable || ZipFileNotInCurrentDirectory())
rtnval = false;
return rtnval;
}
// If there is a problem with the Zip file header, try to fix it.
private bool FixZipFile()
{
bool rtnval;
string ZipFileName = _strZipPathAndFile;
string backupName = ZipFileName.Substring(0,ZipFileName.LastIndexOf(".")) + ".bku";
_CancelZip = false;
// save a copy of the zip file
File.Copy(ZipFileName,backupName,true);
dzip.FixFlag = true;
dzip.ActionDZ = CDZipNET.DZACTION.ZIP_UPDATE;
if (dzip.ErrorCode == CDZipNET.ZIPRESPONSE.ZE_FORM )
{
dzip.FixFlag = false;
dzip.FixHarderFlag = true;
dzip.ActionDZ = CDZipNET.DZACTION.ZIP_UPDATE;
dzip.FixHarderFlag = false;
}
rtnval = (dzip.ErrorCode == 0); // 0 = success
if (!rtnval)
{
// not successful, so restore from the backup file
File.Copy(backupName,ZipFileName,true);
}
File.Delete(backupName); // delete the backup file
return rtnval;
}
private bool CheckZipErrorCode()
{
bool rtnval;
switch (dzip.ErrorCode)
{
case CDZipNET.ZIPRESPONSE.ZE_OK: // ZE_OK
rtnval = true;
break;
case CDZipNET.ZIPRESPONSE.ZE_FORM: // ZE_FORM
case CDZipNET.ZIPRESPONSE.ZE_TEST: // ZE_TEST
// Internal organization of ZIP file is dammaged.
// Try using the Fix function
// note that you cannot do the fix on removable media
if (!zipOnRemovable)
rtnval = FixZipFile();
else
rtnval = false;
break;
case CDZipNET.ZIPRESPONSE.ZE_ABORT: // ZE_ABORT
rtnval = false;
break;
default:
rtnval = false;
break;
}
return rtnval;
}
// If there is a problem with the Zip file header, try to fix it.
private bool FixUnZipFile()
{
bool rtnval;
string ZipFileName = _strZipPathAndFile;
string backupName = ZipFileName.Substring(0,ZipFileName.LastIndexOf(".")) + ".bku";
_CancelZip = false;
dzip = new CDZipNET();
dzip.ZIPFile = duzip.ZIPFile;
// save a copy of the zip file
File.Copy(ZipFileName,backupName,true);
dzip.FixFlag = true;
dzip.ActionDZ = CDZipNET.DZACTION.ZIP_UPDATE;
if (dzip.ErrorCode == CDZipNET.ZIPRESPONSE.ZE_FORM)
{
dzip.FixFlag = false;
dzip.FixHarderFlag = true;
dzip.ActionDZ = CDZipNET.DZACTION.ZIP_UPDATE;
dzip.FixHarderFlag = false;
}
rtnval = (dzip.ErrorCode == CDZipNET.ZIPRESPONSE.ZE_OK); // 0 = success
dzip.Dispose();
if (!rtnval)
{
// not successful, so restore from the backup file
File.Copy(backupName,ZipFileName,true);
}
File.Delete(backupName); // delete the backup file
return rtnval;
}
private bool CheckUnZipErrorCode()
{
bool rtnval;
switch (duzip.ErrorCode)
{
case CDUnZipNET.UNZIPRESPONSE.UE_OK: // UE_OK
rtnval = true;
break;
case CDUnZipNET.UNZIPRESPONSE.UE_STRUCT: // UE_STRUCT
// Internal organization of ZIP file is dammaged.
// Try using the Fix function
rtnval = FixUnZipFile();
break;
case CDUnZipNET.UNZIPRESPONSE.UE_ABORT: // UE_ABORT
case CDUnZipNET.UNZIPRESPONSE.UE_CANCEL: // UE_CANCEL
rtnval = false;
break;
default:
rtnval = false;
break;
}
return rtnval;
}
public bool AddZipCommentInformation()
{
StringBuilder cmntTxt = new StringBuilder();
dzip = new CDZipNET();
_CancelZip = false;
// Save the current attributes of the zip file, update zip file
// and then restore attributes
// - the zip file might be readonly
System.IO.FileAttributes saveAttribs = File.GetAttributes(_strZipPathAndFile);
File.SetAttributes(_strZipPathAndFile,FileAttributes.Normal);
// add comment
cmntTxt.Append(_strArcTitle);
cmntTxt.Append("\n");
if (_ArchiveType == (int)ZipTypes.Partial)
cmntTxt.Append("PARTIAL\n");
else
cmntTxt.Append("FULL\n");
cmntTxt.Append(_strComment);
dzip.AddCommentFlag = true;
dzip.Comment = cmntTxt.ToString();
dzip.ZIPFile = _strZipPathAndFile; // zip file name with full path
dzip.ActionDZ = CDZipNET.DZACTION.ZIP_ADD;
File.SetAttributes(_strZipPathAndFile,saveAttribs);
return CheckZipErrorCode();
}
public bool GetZipCommentInformation()
{
int x;
string ZipComment;
string strArcType;
_CancelZip = false;
if (!(File.Exists(_strZipPathAndFile)))
return false; // !!! no zip file
duzip = new CDUnZipNET();
duzip.ZIPFile = _strZipPathAndFile; // zip file name with full path
duzip.ActionDZ = CDUnZipNET.DUZACTION.UNZIP_GETCOMMENTSIZE;
if (!CheckUnZipErrorCode())
return false; // error
if (duzip.ReturnCount <= 0)
return false; // no comment informat
duzip.ActionDZ = CDUnZipNET.DUZACTION.UNZIP_GETCOMMENT;
ZipComment = duzip.ReturnString;
x = ZipComment.IndexOf("\n");
if (x < 0) return false; // nothing in comment
_strArcTitle = ZipComment.Substring(0,x);
ZipComment = ZipComment.Substring(x+1);
x = ZipComment.IndexOf("\n");
if (x > 0)
{
strArcType = ZipComment.Substring(0,x);
if (strArcType.Equals("FULL"))
_ArchiveType = (int)ZipTypes.Full;
else
_ArchiveType = (int)ZipTypes.Partial;
_strComment = ZipComment.Substring(x+1);
}
else
{
// at this point, default to a full archive
_ArchiveType = (int)ZipTypes.Full;
// default to path and filename for the comment
_strComment = _strZipPathAndFile;
}
return true;
}
private bool IsARemovableDisk()
{
uint DrvType;
string tmp = _strZipPathAndFile.Substring(0,2);
DrvType = GetDriveType(tmp.ToCharArray());
return (DrvType.Equals((uint)DriveType.DRIVE_REMOVABLE));
}
private bool ZipFileNotInCurrentDirectory()
{
string curdir = Directory.GetCurrentDirectory();
string tmpstr = _strZipPathAndFile.ToUpper();
if (tmpstr.EndsWith(".ZIP"))
tmpstr = tmpstr.Substring(0,tmpstr.LastIndexOf("."));
return tmpstr.Equals(curdir);
}
public bool UnzipFromZipFile()
{
return _UnzipFromZipFile(true); // unzip from the archive
}
public bool TestTheZipFile()
{
return _UnzipFromZipFile(false); // test the archive
}
private bool _UnzipFromZipFile(bool ExtractFiles)
{
StringBuilder cmntTxt = new StringBuilder();
bool rtnval;
ZipFuncsDlg zpDlg = new ZipFuncsDlg();
// StringBuilder cmntTxt = new StringBuilder();
// VEO_Archive arc = (VEO_Archive) _CurObj;
duzip = new CDUnZipNET();
_zipOnRemovable = IsARemovableDisk();
// Setup DynaZip
// zip file name with full path
duzip.ZIPFile = _strZipPathAndFile;
//root of drive letter
// duzip.Destination = Path.GetPathRoot(_strZipPathAndFile);
duzip.Destination = _strDestPath;
// what files to get from the zip file
duzip.Filespec = "*.*"; // get all files
//Replace - this combination of flags results in unzipping all files whether
// they were changed or not.
duzip.FreshenFlag = false;
duzip.UpdateFlag = false;
// Make a reference to a single byte to avoid null access
duzip.MemoryBlock = new Byte[1];
// true = Overwrite non-read only files without asking
duzip.OverwriteFlag = true;
// true = proceed to unzip by traversing into folders
duzip.RecurseFlag = true;
duzip.UnzipSubOptions = CDUnZipNET.UNZIPSUBOPTION.USO_NONE;
// set this option to allow the overwriting of ReadOnly Files.
// this option only has meaning when the OverwriteFlag property
// is set to true
duzip.UnzipSubOptions |= CDUnZipNET.UNZIPSUBOPTION.USO_OVERWRITE_RO;
// allow the MinorCancel event to respond to cancel requests
duzip.UnzipSubOptions |= CDUnZipNET.UNZIPSUBOPTION.USO_MINORCANCEL;
// debug
// duzip.DiagnosticFlag = true;
// duzip.UnzipSubOptions |= CDUnZipNET.UNZIPSUBOPTION.USO_LOGZIPRESULTS;
// setup status bars
duzip.MajorStatusFlag = true;
duzip.MinorStatusFlag = true;
duzip.MessageCallbackFlag = true;
duzip.UnZipMajorStatus += new CDUnZipNET.OnUnZipMajorStatus(zpDlg.ZipMajorStatus_event);
duzip.UnZipMinorStatus += new CDUnZipNET.OnUnZipMinorStatus(zpDlg.ZipMinorStatus_event);
_CancelZip = false;
zpDlg.Show(); // display the status dialog
if (!ExtractFiles)
duzip.TestFlag = true; // don't extract, only test each item in zip file
// Do the UnZip function
duzip.ActionDZ = CDUnZipNET.DUZACTION.UNZIP_EXTRACT;
rtnval = (zpDlg.DialogResult == System.Windows.Forms.DialogResult.OK);
zpDlg.Dispose();
// check for errors during the unzip function.
if (!CheckUnZipErrorCode())
return false; // error
if (duzip.ReturnCount <= 0)
return false; // nothing unzipped
return rtnval;
}
public StringCollection ZipFileContents()
{
StringCollection ZipFileList = new StringCollection();
StringBuilder cmntTxt = new StringBuilder();
duzip = new CDUnZipNET();
_zipOnRemovable = false;
// Setup DynaZip
// zip file name with full path
duzip.ZIPFile = _strZipPathAndFile;
// what files to get from the zip file
duzip.Filespec = "*.*"; // get all files
//Replace - this combination of flags results in unzipping all files whether
// they were changed or not.
duzip.FreshenFlag = false;
duzip.UpdateFlag = false;
// Make a reference to a single byte to avoid null access
duzip.MemoryBlock = new Byte[1];
_CancelZip = false;
// Do the UnZip function
duzip.ActionDZ = CDUnZipNET.DUZACTION.UNZIP_COUNTALLZIPMEMBERS;
int numItems = duzip.ReturnCount;
string str_tmpDate;
string str_tmpFileName;
for (int i=0;i<numItems;i++)
{
duzip.ActionDZ = CDUnZipNET.DUZACTION.UNZIP_GETNEXTZIPINFO;
str_tmpDate = duzip.zi_DateTime;
str_tmpFileName = duzip.zi_FileName;
ZipFileList.Add(str_tmpDate + "!" + str_tmpFileName);
}
return ZipFileList;
}
private void SetupDestinationPath()
{
string strDestPath = "";
duzip = new CDUnZipNET();
_zipOnRemovable = false;
// Setup DynaZip
// zip file name with full path
duzip.ZIPFile = _strZipPathAndFile;
strDestPath = Path.GetDirectoryName(_strZipPathAndFile);
strDestPath = strDestPath.ToUpper();
// what files to get from the zip file
duzip.Filespec = "proc.ini"; // get proc.ini file
//Replace - this combination of flags results in unzipping all files whether
// they were changed or not.
duzip.FreshenFlag = false;
duzip.UpdateFlag = false;
duzip.RecurseFlag = true; // so that it can get with or without path
// Make a reference to a single byte to avoid null access
duzip.MemoryBlock = new Byte[1];
_CancelZip = false;
// Do the UnZip function
int numItems = 0;
if (File.Exists(_strZipPathAndFile))
{
duzip.ActionDZ = CDUnZipNET.DUZACTION.UNZIP_COUNTNAMEDZIPMEMBERS;
// See if we found the file
numItems = duzip.ReturnCount;
}
string str_tmpFileName = "";
// string curdir = Directory.GetCurrentDirectory();
// DestPath = curdir.ToUpper();
if (numItems > 0)
{
// Adjust the destination path based on the full or partial
// path in the zip file
char [] trmchar = {'\\'};
duzip.ActionDZ = CDUnZipNET.DUZACTION.UNZIP_GETNEXTNAMEDZIPINFO;
str_tmpFileName = duzip.zi_FileName;
// trim off the file name
str_tmpFileName = str_tmpFileName.ToUpper();
str_tmpFileName = str_tmpFileName.Substring(0,str_tmpFileName.LastIndexOf("PROC.INI"));
// trim off any backslash
str_tmpFileName = str_tmpFileName.TrimEnd(trmchar);
str_tmpFileName = str_tmpFileName.ToUpper();
if (str_tmpFileName.Length > 0)
{
if (strDestPath.LastIndexOf(str_tmpFileName) > 0)
strDestPath = strDestPath.Substring(0,strDestPath.Length - str_tmpFileName.Length);
}
}
_strDestPath = strDestPath;
return;
}
}
}

View File

@@ -0,0 +1,164 @@
/*********************************************************************************************
* Copyright 2004 - Volian Enterprises, Inc. All rights reserved.
* Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
* ------------------------------------------------------------------------------
* $Workfile: ZipFuncsDlg.cs $ $Revision: 1 $
* $Author: Kathy $ $Date: 7/27/04 8:35a $
*
* $History: ZipFuncsDlg.cs $
*
* ***************** Version 1 *****************
* User: Kathy Date: 7/27/04 Time: 8:35a
* Created in $/LibSource/Utils
*********************************************************************************************/
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace Utils
{
/// <summary>
/// Dialog used to display the zip/unzip function status
/// </summary>
public class ZipFuncsDlg : System.Windows.Forms.Form
{
private System.Windows.Forms.ProgressBar progressBar1;
private System.Windows.Forms.ProgressBar progressBar2;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Button button1;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
private bool _CancelZip;
public ZipFuncsDlg()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
_CancelZip = false;
this.DialogResult = System.Windows.Forms.DialogResult.OK;
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.progressBar1 = new System.Windows.Forms.ProgressBar();
this.progressBar2 = new System.Windows.Forms.ProgressBar();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// progressBar1
//
this.progressBar1.Location = new System.Drawing.Point(16, 40);
this.progressBar1.Name = "progressBar1";
this.progressBar1.Size = new System.Drawing.Size(360, 23);
this.progressBar1.TabIndex = 0;
//
// progressBar2
//
this.progressBar2.Location = new System.Drawing.Point(16, 104);
this.progressBar2.Name = "progressBar2";
this.progressBar2.Size = new System.Drawing.Size(360, 23);
this.progressBar2.TabIndex = 1;
//
// label1
//
this.label1.Location = new System.Drawing.Point(24, 16);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(352, 16);
this.label1.TabIndex = 2;
this.label1.Text = "label1";
//
// label2
//
this.label2.Location = new System.Drawing.Point(16, 80);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(360, 16);
this.label2.TabIndex = 3;
this.label2.Text = "label2";
//
// button1
//
this.button1.Location = new System.Drawing.Point(144, 144);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(104, 32);
this.button1.TabIndex = 4;
this.button1.Text = "Cancel";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// ZipFuncs
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(400, 190);
this.Controls.Add(this.button1);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Controls.Add(this.progressBar2);
this.Controls.Add(this.progressBar1);
this.Name = "ZipFuncs";
this.Text = "ZipFuncs";
this.ResumeLayout(false);
}
#endregion
private void button1_Click(object sender, System.EventArgs e)
{
_CancelZip = true;
this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
}
public void ZipMajorStatus_event(String lpstrItem, int percent, ref int rc)
{
progressBar1.Value = percent;
label1.Text = lpstrItem;
if (_CancelZip)
rc = 1;
else
rc = 0;
}
public void ZipMinorStatus_event(String lpstrItem, int percent, ref int rc)
{
progressBar2.Value = percent;
label2.Text = lpstrItem;
if (_CancelZip)
rc = 1;
else
rc = 0;
}
}
}

View File

@@ -0,0 +1,175 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used forserialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="progressBar1.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="progressBar1.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="progressBar1.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="progressBar2.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="progressBar2.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="progressBar2.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="label1.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="label1.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="label1.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="label2.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="label2.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="label2.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="button1.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="button1.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="button1.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="$this.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>(Default)</value>
</data>
<data name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.Localizable" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.GridSize" type="System.Drawing.Size, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>8, 8</value>
</data>
<data name="$this.DrawGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="$this.Name">
<value>ZipFuncs</value>
</data>
<data name="$this.TrayHeight" type="System.Int32, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>80</value>
</data>
<data name="$this.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="$this.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
</root>