This commit is contained in:
Kathy Ruffing 2011-04-06 14:20:59 +00:00
parent 35f45d2e0b
commit 4e94953f18
3 changed files with 210 additions and 10 deletions

View File

@ -23,7 +23,6 @@ public struct FormatData
{
public string Name;
public string PurchaseOptions;
public string PSI;
public string TPL;
//public XtraFlgs XtraFlags;
public VE_Font FontData;
@ -461,11 +460,54 @@ public struct Procedure
public string CountFoldoutPages;
/* End of Format flags */
public string[] ProcedureSuffix;
public string PSInfFile;
public PSI Psi;
public ChangeBar ChangeBarData;
public CheckOffData CheckOffData;
}
[Serializable]
public struct PSI
{
public int x;
public int y;
public string Caption;
public string ButtonsOnBottom;
public string font;
public PsiBox[] Boxes;
public PsiLabel[] Labels;
public PsiField[] Fields;
}
[Serializable]
public struct PsiBox
{
public string style;
public int x;
public int y;
public int width;
public int height;
}
[Serializable]
public struct PsiLabel
{
public string text;
public string Justify;
public int x;
public int y;
public int width;
public int height;
}
[Serializable]
public struct PsiField
{
public string name;
public string type;
public string text;
public int Length;
public int x;
public int y;
public int width;
public int height;
}
[Serializable]
public struct CheckOffData
{
public string Menu;
@ -1068,7 +1110,7 @@ public enum E_TransFormatXlate : uint
///////////////////////////
namespace fmtxml
{
public class FmtFileToXml
public partial class FmtFileToXml
{
#region localdata
public XtraFlgs BaseXtraFlags; // used to set up all flags for the Base format.
@ -1499,7 +1541,7 @@ namespace fmtxml
BuildDictionaryText();
fmtName = alias;
//if (fmtName.ToUpper() != "CPLS" && fmtName.ToUpper() != "BASE") return;
//if (fmtName.ToUpper() != "OHLP" && fmtName.ToUpper() != "BASE") return;
//if (fmtName.ToUpper() != "HLP" && fmtName.ToUpper() != "BASE") return;
//if (fmtName.ToUpper() != "AEP" && fmtName.ToUpper() != "BASE") return;
try
{
@ -2095,9 +2137,7 @@ namespace fmtxml
fmtdata.TPL = FixXmlString(File.ReadAllText(otherfile));
// http://www.w3.org/TR/2000/REC-xml-20001006#NT-Char
otherfile = MyPath + @"\" + fname.Substring(0, fname.LastIndexOf(".")) + @".ini";
if (File.Exists(otherfile))
fmtdata.PSI = File.ReadAllText(otherfile);
if (File.Exists(otherfile)) PsiIniToXml(ref fmtdata, otherfile);
fmtdata.PurchaseOptions = ((E_PurchaseOptions)brFmt.ReadInt16()).ToString();
fmtdata.ProcData.ProcForeColor = "Black";
fmtdata.ProcData.ProcBackColor = "White";
@ -2983,7 +3023,7 @@ namespace fmtxml
indx = offset[arcnt];
arcnt++;
if (indx > 0) fmtdata.ProcData.PSInfFile = GetStringFromByte(input, indx);
if (indx > 0) tmpstr = GetStringFromByte(input, indx);
// not used - RNOPreSeqTab[9][2]
arcnt = arcnt + 18;
@ -4571,7 +4611,6 @@ namespace fmtxml
#region COMPAREACTIVE
subFmt.FontData = FixInheritedFont(subFmt.FontData, mainFmt.FontData); // Phase 10
if (mainFmt.PurchaseOptions == subFmt.PurchaseOptions) subFmt.PurchaseOptions = null;
if (mainFmt.PSI == subFmt.PSI) subFmt.PSI = null;
if (mainFmt.TPL == subFmt.TPL) subFmt.TPL = null;
if (mainFmt.EditData.EMode == subFmt.EditData.EMode) subFmt.EditData.EMode = null;
if (mainFmt.EditData.PromptForCautionType != null && mainFmt.EditData.PromptForCautionType == subFmt.EditData.PromptForCautionType) subFmt.EditData.PromptForCautionType = "null";
@ -5002,7 +5041,6 @@ namespace fmtxml
for (int i = 0; i < MAXCHKHEADINGS; i++)
if (mco.CheckOffHeaderList[i].CheckOffHeading == sco.CheckOffHeaderList[i].CheckOffHeading) subFmt.ProcData.CheckOffData.CheckOffHeaderList[i].CheckOffHeading = null;
if (mainFmt.ProcData.PSInfFile == subFmt.ProcData.PSInfFile) subFmt.ProcData.PSInfFile = null;
if (msctpr.HLStpSeparatorString == ssctpr.HLStpSeparatorString) subFmt.SectData.StepSectionData.StpSectPrtData.HLStpSeparatorString = null;
if (msctpr.HLRNOStpSeparatorString == ssctpr.HLRNOStpSeparatorString) subFmt.SectData.StepSectionData.StpSectPrtData.HLRNOStpSeparatorString = null;
if (msctpr.LowerCaseRevNum != null && msctpr.LowerCaseRevNum == ssctpr.LowerCaseRevNum) subFmt.SectData.StepSectionData.StpSectPrtData.LowerCaseRevNum = "null";

162
PROMS/fmtxml/PSI.cs Normal file
View File

@ -0,0 +1,162 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Xml;
namespace fmtxml
{
public partial class FmtFileToXml
{
private bool _DoingFields = false;
private int NumBoxes = 0;
private int NumTexts = 0;
private int NumFields = 0;
private int CountForLists = 0;
public void PsiIniToXml(ref FormatData fmtdata, string path)
{
string sLine;
StreamReader myReader = new StreamReader(path);// Open file
while ((sLine = myReader.ReadLine()) != null)// read line-by-line
{
try
{
if (sLine.Length > 0)
{
switch (sLine.Substring(0, 1))
{
case "[":
if (sLine.Contains("[OBJECT COUNT]"))
{
// read in the count of objects - these may not be in order, fix this:
sLine = myReader.ReadLine();
int indx = sLine.IndexOf("=");
string tmp = sLine.Substring(indx + 1, sLine.Length - indx - 1);
NumBoxes = Convert.ToInt32(tmp);
sLine = myReader.ReadLine();
indx = sLine.IndexOf("=");
tmp = sLine.Substring(indx + 1, sLine.Length -indx - 1);
NumTexts = Convert.ToInt32(tmp);
sLine = myReader.ReadLine();
indx = sLine.IndexOf("=");
tmp = sLine.Substring(indx + 1, sLine.Length -indx - 1);
NumFields = Convert.ToInt32(tmp);
fmtdata.ProcData.Psi.Boxes = new PsiBox[NumBoxes];
fmtdata.ProcData.Psi.Labels = new PsiLabel[NumTexts];
fmtdata.ProcData.Psi.Fields = new PsiField[NumFields];
break;
}
if (sLine.Contains("[DIALOG]") || sLine.Contains("[BOXES]") || sLine.Contains("[TEXT]") || sLine.Contains("[FIELDS]"))
{
_DoingFields = sLine.Contains("[FIELDS]");
CountForLists = 0;
break;
}
break;
case ";":
break;
default:
if (sLine.IndexOf("=") >= 0)
{
AddParam(ref fmtdata, sLine);
}
break;
}
}
}
catch (Exception ex)
{
Console.WriteLine(string.Format("error parsing .INI file: {0}, message: {1}", path, ex.Message));
}
}
myReader.Close();
}
private void AddParam(ref FormatData fmtdata, string sParam)
{
int i = sParam.IndexOf("=");
string attrname = sParam.Substring(0, i);
if (attrname.Contains("SIZE"))
{
int end = (sParam.IndexOf(";") > -1) ? sParam.IndexOf(";") : sParam.Length;
string sb = sParam.Substring(i + 1, end - i - 1);
string[] split = sb.Split(new char[] { ',' });
fmtdata.ProcData.Psi.x = Convert.ToInt32(split[0].Trim());
fmtdata.ProcData.Psi.y = Convert.ToInt32(split[1].Trim());
return;
}
if (attrname.Contains("FONT"))
{
int end = (sParam.IndexOf(";") > -1) ? sParam.IndexOf(";") : sParam.Length;
string sb = sParam.Substring(i + 1, end - i - 1);
string[] split = sb.Split(new char[] { ',' });
fmtdata.ProcData.Psi.font = split[0].Trim();
return;
}
if (attrname.Contains("CAPTION"))
{
int end = (sParam.IndexOf(";") > -1) ? sParam.IndexOf(";") : sParam.Length;
fmtdata.ProcData.Psi.Caption = sParam.Substring(i + 1, end-i-1).Replace("\"","");
return;
}
if (attrname.Contains("BUTTONSONBOTTOM"))
{
int end = (sParam.IndexOf(";") > -1) ? sParam.IndexOf(";") : sParam.Length;
fmtdata.ProcData.Psi.ButtonsOnBottom = sParam.Substring(i + 1, end - i - 1);
return;
}
if (attrname.Contains("BOX"))
{
//<Box style="BLACKFRAME" x="4" y="4" width="192" height="112"/>
int end = (sParam.IndexOf(";") > -1) ? sParam.IndexOf(";") : sParam.Length;
string sb = sParam.Substring(i + 1, end - i - 1);
string[] split = sb.Split(new char[] { ',' });
fmtdata.ProcData.Psi.Boxes[CountForLists].style = split[0].Trim();
fmtdata.ProcData.Psi.Boxes[CountForLists].x = Convert.ToInt32(split[1].Trim());
fmtdata.ProcData.Psi.Boxes[CountForLists].y = Convert.ToInt32(split[2].Trim());
fmtdata.ProcData.Psi.Boxes[CountForLists].width = Convert.ToInt32(split[3].Trim());
fmtdata.ProcData.Psi.Boxes[CountForLists].height = Convert.ToInt32(split[4].Trim());
CountForLists++;
return;
}
if (attrname.Contains("TEXT"))
{
//<Label text="Responsible Manager's Title:" Justify="LEFT" x="12" y="11" width="100" height="8" />
int end = (sParam.IndexOf(";") > -1) ? sParam.IndexOf(";") : sParam.Length;
string sb = sParam.Substring(i + 1, end - i - 1);
string[] split = sb.Split(new char[] { ',' });
fmtdata.ProcData.Psi.Labels[CountForLists].text = split[0].Trim();
fmtdata.ProcData.Psi.Labels[CountForLists].Justify = split[1].Trim();
fmtdata.ProcData.Psi.Labels[CountForLists].x = Convert.ToInt32(split[2].Trim());
fmtdata.ProcData.Psi.Labels[CountForLists].y = Convert.ToInt32(split[3].Trim());
fmtdata.ProcData.Psi.Labels[CountForLists].width = Convert.ToInt32(split[4].Trim());
fmtdata.ProcData.Psi.Labels[CountForLists].height = Convert.ToInt32(split[5].Trim());
CountForLists++;
return;
}
if (_DoingFields)
{
//<Field type="TEXT" name="CLASSIFICATION" length="51" x="12" y="20" width="180" height="12" />
//<Field type ="LOGICAL" name="USESETID" text="Some optional text" x="12" y="20" />
int end = (sParam.IndexOf(";") > -1) ? sParam.IndexOf(";") : sParam.Length;
string sb = sParam.Substring(i + 1, end - i - 1);
string[] split = sb.Split(new char[] { ',' });
// first check whether it is a text field or a logical (checkbox) field:
fmtdata.ProcData.Psi.Fields[CountForLists].name = attrname;
fmtdata.ProcData.Psi.Fields[CountForLists].type = split[0].Trim();
string typ = fmtdata.ProcData.Psi.Fields[CountForLists].type;
fmtdata.ProcData.Psi.Fields[CountForLists].text = split[1] == null ? null : split[1].Trim();
if (typ.ToUpper() == "TEXT")
fmtdata.ProcData.Psi.Fields[CountForLists].Length = Convert.ToInt32(split[2].Trim());
else
fmtdata.ProcData.Psi.Fields[CountForLists].Length = 0;
fmtdata.ProcData.Psi.Fields[CountForLists].x = Convert.ToInt32(split[3].Trim());
fmtdata.ProcData.Psi.Fields[CountForLists].y = Convert.ToInt32(split[4].Trim());
fmtdata.ProcData.Psi.Fields[CountForLists].width = Convert.ToInt32(split[5].Trim());
fmtdata.ProcData.Psi.Fields[CountForLists].height = Convert.ToInt32(split[6].Trim());
CountForLists++;
}
}
}
}

Binary file not shown.