removed IdentWid’s, added TabBullet setup DocStyle to inherit from the section’s default, not Base, added Plant specific for PageStyles (pagelist)
		
			
				
	
	
		
			5653 lines
		
	
	
		
			277 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			5653 lines
		
	
	
		
			277 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | ||
| using System.Windows.Forms;
 | ||
| using System.IO;
 | ||
| using System.Text;
 | ||
| using System.Collections;
 | ||
| using System.Collections.Generic;
 | ||
| using System.Text.RegularExpressions;
 | ||
| using System.Runtime.Serialization.Formatters.Binary;
 | ||
| using System.Xml.Xsl;
 | ||
| using System.Xml;
 | ||
| using System.Xml.Serialization;
 | ||
| using System.ComponentModel;
 | ||
| 
 | ||
| #region StructDefinitions
 | ||
| // top of the format.
 | ||
| 
 | ||
| // convert ALL rows & columns to points, i.e. a point = 1/72 inch
 | ||
| // the row is set based on 6 rows per inch, i.e. row = input * 72/6, row = input * 12
 | ||
| // the column is 12 char/inch, i.e. col = input * 72/12, col = input * 6
 | ||
| [Serializable]
 | ||
| public struct FormatData
 | ||
| {
 | ||
|     public string Name; 
 | ||
|     public string PurchaseOptions;
 | ||
| 	public string TPL;
 | ||
|     //public XtraFlgs XtraFlags;
 | ||
|     public VE_Font FontData;
 | ||
| 	public Symbol[] Symbols;
 | ||
|     public GeneralEditor EditData;
 | ||
|     public GeneralPrint PrintData;
 | ||
|     public Procedure ProcData;
 | ||
|     public Section SectData;
 | ||
|     public Step[] StepData;
 | ||
|     public Box[] BoxData;
 | ||
|     public Trans TransData;
 | ||
| 	public RO ROData;
 | ||
| }
 | ||
| [Flags]
 | ||
| public enum E_PurchaseOptions : uint
 | ||
| {
 | ||
|     ApproveOne = 0x0001,
 | ||
|     AccPagination = 0x0002,
 | ||
|     LibMaint = 0x0004,
 | ||
|     Transfer = 0x0008,
 | ||
|     STrees = 0x0010,
 | ||
|     DateChgSumRpt = 0x0020,
 | ||
|     SetpointUsage = 0x0040,
 | ||
|     Replace = 0x0080,
 | ||
|     FloppyTransfer = 0x0100,
 | ||
|     ApproveGenericBack = 0x0200,
 | ||
|     DistributeApproved = 0x0400,
 | ||
|     OutsideTransitions = 0x0800,
 | ||
|     EnhancedBackgrounds = 0x1000,
 | ||
|     EnhancedDeviations = 0x2000,
 | ||
|     AutoTableOfContents = 0x4000,
 | ||
|     AutoPlacekeeper = 0x8000
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct XtraFlgs
 | ||
| {
 | ||
| #region xtraflags0
 | ||
|     public string DoubleRNOSpace;             // from xtra_flag array 0
 | ||
|     public string MixCautionsAndNotes;
 | ||
|     // public string MULTILEVELCAUTION;       // not migrated used by: ano/bge/sum
 | ||
|     public string AlwaysUseExtralines;
 | ||
|     public string AlwaysTabNote;
 | ||
|     public string AlwaysTabCaution;
 | ||
|     // public string CHECKOFFEQUIPMENT;       // not used by any format
 | ||
|     public string SpecialPageBreakFlag;
 | ||
|     // public string INSYNC;                  // not migraged used by: genplan & scedev
 | ||
|     public string DontPaginateOnFirstSubStep;
 | ||
|     // public string PRINTONESTEPPERPAGE;     // not migrated used by: anos & genplan
 | ||
|     public string ImperfectStructure;
 | ||
|     public string DontUseHalfLines;
 | ||
|     public string FortranFormatNumbers;
 | ||
|     public string AllUnits;
 | ||
|     public string CapsTransitions;
 | ||
| #endregion
 | ||
| #region xtraflags1
 | ||
|     public string CapTranStep;                // from xtra_flag array 1
 | ||
|     // public string BOLDTRANSITIONS;         // not migraged used by: ano1 & sum
 | ||
|     public string TSTepNoFlag;
 | ||
|     public string LowerCaseTranNumber;
 | ||
|     //public string UNDERLINESTEPNUMBER       // not migraged used by: cpla
 | ||
|     public string CondensedChangeBar;
 | ||
|     public string DoRevDate;
 | ||
|     public string SeparateBox;
 | ||
|     public string NumberHighLevelRNO;
 | ||
|     // public string STUPIDBLANKRNONUMBERING; //not migrated used by: lpl
 | ||
|     // public string BULLETINSTEADOFNUMBERRNO //not migrated used by: sce
 | ||
|     // public string BIZZAREINDENTSAVE        //not migrated used by: sce
 | ||
|     public string AlternateFoldoutPages;
 | ||
|     // public string ONLYEXTERNALBOLD;        // not migrated pac & sce
 | ||
|     //public string DONTSPLITTHESTEPATIF      // not migrated used by: sce, vnp, vpe
 | ||
|     public string DontTryToFillHalfOfPage;
 | ||
| #endregion
 | ||
| #region xtraflags2
 | ||
|     public string DontCapitalizeTitle;                // from xtra_flag array 2
 | ||
|     // public string MOVEPARENSTOTOKEN                // not migrated used by: scedev
 | ||
|     public string NoSpaceDoubleRNO;
 | ||
|     //public string SECTIONTITLES;                      // not used
 | ||
|     public string DontOffsetTab;
 | ||
|     public string UpSetpntAftrDash;
 | ||
|     public string LowerCaseRevnum;
 | ||
|     public string DoNotCompressSteps;
 | ||
|     public string ReduceLineAfterNoteAndCaut;
 | ||
|     public string RNOSameLevel;
 | ||
|     //public string USENOTECAUTIONSEPARATOR;            // not migrated: used in genplan
 | ||
|     //public string TRUNCATEPROCNMAFTER1STSPACE         // not migrated: used in paca & sce
 | ||
|     //public string EXTRALINEBEFOREANDAFTERCAUT1        // not migrated: used in mya
 | ||
|     public string BoldHighLevelRNO;
 | ||
|     public string OneLineBeforeNoteCautionTab;
 | ||
|     public string ContinuousChangeBars;
 | ||
| #endregion
 | ||
| #region xtraflags3                                  // from xtra_flag array 3
 | ||
|     // public string DONTDOLINEAFTERENDMESS           // not migrated: used in ano1
 | ||
|     // public string ENDAFTERBOXEDSTEP	            // not migrated: used in ano1
 | ||
|     // public string CheckOffOnAllSteps;			// not migrated - NOT USED
 | ||
|     // public string SPECIALCHANGEBARID		         // not migrated: used in sce
 | ||
|     // public string STEPTABBEFORENOTEANDSTEP	        // not migrated: used in ano1
 | ||
|     public string DontBoxAC;
 | ||
|     //public string OKTOSEPARATESTEPANDTABLE;		// no supporting code
 | ||
|     public string UseTopContinueMessageAtEnd;
 | ||
|     // public string ONLYUSEONELINEFORTOPOFPAGE;      // not used
 | ||
|     // public string ARROWONTRANS;                    // not migrated: used in mya
 | ||
|     // public string PROCEEDMESS;                     // not migrated: used in mya
 | ||
|     // public string UP1INDENTFOROPTEQUIPLIST;        // not migrated: used in mya
 | ||
|     // public string UPCASETHETRANSITIONSUBSTEPONLY;  // not migrated: used in ano1, ano2
 | ||
|     public string UpcaseTranAnd;
 | ||
|     public string UpcaseAllSetpointUnits;
 | ||
|     // public string OBSERVENOTECAUTIONTRAN;          // not used
 | ||
| #endregion
 | ||
| #region xtraflags4
 | ||
|     public string Dev_Format;			                // from xtra_flag array 4
 | ||
|     // public string UPURS;                           // not migrated: used in yae
 | ||
|     public string DontDoSTExtraAtTop;
 | ||
|     public string Xlines_StepFix;
 | ||
|     public string ReBoxCautNote;
 | ||
|     public string IMMStepSpcHdr;
 | ||
|     // public string GENLESSONPLAN;                  // not migrated: used in genplan
 | ||
|     public string FloatingContinueMessage;
 | ||
|     // public string STATREESONACCPAGE;             // not migrated: used in status tress (lots of formats)
 | ||
|     public string AbsoluteFixedChangeColumn;
 | ||
|     // public string QUESTIONTRANSSTEP;             // not migrated: used in sce
 | ||
|     public string LJBorderlessTable;
 | ||
|     public string SuppressAndInTran;
 | ||
|     public string CapHighSetpnt;
 | ||
| 	public string CapFirstLetterInHighSP;        // used in fpl
 | ||
|     public string CapsPIFLastLower;
 | ||
| #endregion
 | ||
| #region xtraflags5
 | ||
|     public string AlternateFloatingFoldout;		 // from xtra_flag array 5
 | ||
|     public string WrapSameAsEdit;
 | ||
|     public string KeepStepsOnPage;
 | ||
|     public string SpecifiedSubstepsOnly;
 | ||
|     public string ThreeBlanksAboveNotesCautions;
 | ||
|     // public string DONTADDUNITTOREV             // not migrated: used in paca
 | ||
|     public string ImperfectSubstep;
 | ||
|     public string DontBreakOnSections;
 | ||
|     public string NoStepNumIfOnlyOneStep;
 | ||
|     public string ShowSectionTitles;
 | ||
|     public string LJTabs;
 | ||
|     public string DontNumberRNOSubs;
 | ||
|     // public string ALIGNNOTECAUTWTAB            // not used
 | ||
|     // public string RNOCONTINUESTEP             // not migrated: used in sum
 | ||
|     public string DropCheckOff;
 | ||
|     public string NoCheckOffsInRNO;
 | ||
| #endregion
 | ||
| #region xtraflags6
 | ||
|     		 // from xtra_flag array 6
 | ||
| 	public string ChgBarMessageFromEdit;
 | ||
|     public string ChangeBarToRNOSep;
 | ||
|     // public string SMALLACBOX                   // not migrated: used in lpl
 | ||
|     public string ChangeStyleForEverySection;
 | ||
|     public string SectionLevelFoldouts;
 | ||
| 	public string BoxContinousActions;
 | ||
|     public string DoSectionTrans;
 | ||
|     // public string DONTUSESECNUMBERS            // not used
 | ||
|     public string UpSpIfPrevUpper;
 | ||
|     public string ContinueSectionHeader;
 | ||
|     public string GlobalProcInfo;
 | ||
|     public string CompressHPSub;
 | ||
|     public string BulletOnContinuous;
 | ||
|     public string CancelSecTitlesOnS2;
 | ||
|     public string NoEndForSingle;
 | ||
|     public string UseMetaSections;
 | ||
| #endregion
 | ||
| #region xtraflags7
 | ||
|     public string RNOContinueOnly;		 // from xtra_flag array 7
 | ||
|     public string Cap1stCharTrans;
 | ||
|     public string DontPaginateOnFirstSubstep3X;
 | ||
|     public string RNOSepAfterAER;
 | ||
|     public string RevDateWithForwardSlash;
 | ||
|     // public string UPSETPNTAFTRCAPS                   // not migrated: used in sum
 | ||
|     public string UseAlternateStepBox;
 | ||
|     public string CancelSecTitlesOnS1;
 | ||
|     public string SpecialStepsFoldout;
 | ||
|     public string UnderlineAfterDashSpace;
 | ||
|     public string NoSpaceInNoteOrCaution;
 | ||
|     public string UseXtraRevNumber;
 | ||
|     public string UnderlineSetpoints;
 | ||
|     public string DoSectionTransTypeB;
 | ||
|     public string PaginateOnLowerStepLevel;
 | ||
|     public string UseTransitionModifier;
 | ||
| #endregion
 | ||
| #region xtraflags8
 | ||
|     public string CustomSpacing;		 // from xtra_flag array 8
 | ||
|     public string EnhancedShortFormDev;
 | ||
|     // public string NOHIGHLEVELREADONLY;				// no supporting code
 | ||
|    // public string NORNOREADONLY                     // not used
 | ||
|     public string PageBreakOnHighLevelStep;
 | ||
|    // public string CHANGEONLYGROUPEDTYPES            // not used
 | ||
|     public string PageBreakOnCautions;
 | ||
|     public string PageBreakOnNotes;
 | ||
|     public string AlignNullTabWSectHead;
 | ||
|     public string DontUseSecTitles;
 | ||
|     public string TextSubFollowsTextStyle;
 | ||
|     public string TranProcTitleInParen;
 | ||
|     public string HardSpTranProcNumb;
 | ||
|     public string TreatAndOrAsSequential;
 | ||
|     public string DontSplitStepInPrntStep;
 | ||
|     public string LineAboveUnderSection;
 | ||
| #endregion
 | ||
| #region xtraflags9
 | ||
|    // public string REMOVEREDUNDANTSEPERATORS		 // from xtra_flag array 9 // not used
 | ||
|    // public string UNINDENTTABSANDSEPERATORS      // not migrated: used in bgeal bgealn bgevl
 | ||
|     public string PicaIgnoreFiveSixths;
 | ||
|     public string SpaceFoRNOSecNumb;
 | ||
|     public string NonEditableSteps;
 | ||
|     public string BoxedSubsteps;
 | ||
|     public string DontNumberHighLevelSteps;
 | ||
|    // public string ASTERISKONIMMEDIATE           // not migrated: used in a number of bge fmts
 | ||
|    // public string CONTINUEAFTERSTEPTEXT         // not used
 | ||
|    // public string FIXPAGELISTSPECIALCHARS       // not migrated: used in a number of bge fmts
 | ||
|     public string NoStepNumberForHighLevelRNO;
 | ||
|     public string PromptForCautinType;
 | ||
|     public string Caution1SameRowAsParent;
 | ||
|     //public string DONTPAGINATEONCAUTION1;			// no supporting code
 | ||
|     public string WolfCreekBackgroundFormat;
 | ||
|     public string EnhancedStepNumFromPrev;
 | ||
| #endregion
 | ||
| #region xtraflags10
 | ||
|     public string ControlUnderlineStyle;          // from xtra_flag array 10
 | ||
|    // public string LANDSCAPEMODE                 // not used
 | ||
|    // public string HORIZONTALSUBSTEPS            // not migrated: used in ano2vlv & bgevl
 | ||
|     public string MultipleChangeIds;
 | ||
|     public string UseMultiLineSectionTitle;
 | ||
|    // public string SECTIONNOTESCAUTIONS           // not migrated: used in anono & various bge
 | ||
|     public string PageBreakOnFirstBlankLine;
 | ||
|     public string DontPrintNoTitle;
 | ||
|    // public string PRINTCAUTION1CONTINUED         // not migrated: used in bgeal
 | ||
|    // public string USECHECKOFFSINS2               // not used
 | ||
| 	public string NotesToFootnotes;               // used in ano2vlv, some bge, many rbnd, NSPF00.in
 | ||
|     public string UndSpecialStepsFoldout;
 | ||
|    // public string DONTAUTOENDFORMATTING          // not migrated: used in various bge
 | ||
|    // public string REMOVEBASISFROMTRANS           // not migrated: used in various bge
 | ||
|     public string PutOnPageByItself;
 | ||
|    // public string USEPHONELIST                   // not migrated: used in bge
 | ||
| #endregion
 | ||
| #region xtraflags11
 | ||
|     public string SecTitleContinue;		    // from xtra_flag array 11
 | ||
|     public string CancelSecTitlesOnE0;
 | ||
|     public string MetaSectEndMessage;
 | ||
|    // public string RNONUMBERWITHLEVEL        // not migrated: used in bgeeop
 | ||
|    // public string FORCELETTEREDHLS          // not migrated: used in bgestp
 | ||
|    // public string CANCELSECTITLESONE1       // not migrated: used in bgeoid
 | ||
|     public string CancelSecTitlesOnE2;
 | ||
|    // public string USESECTITLECONTASIS       // not used
 | ||
|    // public string SMARTLETTEREDHLS          // not migrated: used in various bge
 | ||
|    // public string DOTWOMESSAGES             // not migrated: used in bgeeop
 | ||
|    // public string DONTBOLDINTABLES          // not migrated: used in bgestp
 | ||
|    // public string EXTRALINEAFTERSECTION     // not migrated: used in bgestp
 | ||
|    // public string BGESTPSPECIALFEAT	        // not migrated: used in bgestp
 | ||
|     public string CompressHPSuper;
 | ||
|    // public string PRETENDNOTPROPORTIONAL    // not used
 | ||
|    // public string DOINGPLACEKEEPERS         // not used
 | ||
| #endregion
 | ||
| #region xtraflags12
 | ||
|     public string MatchUpRNOCautNote;	        // from xtra_flag array 12
 | ||
|    // public string NEWHLSTEPONENTER	        // not migrated: used in bgevl
 | ||
|    // public string DONTSEPARATEMULTITEXT		// not migrated: used in bgeop
 | ||
|     public string PaginateAtHighestPaginLevel;
 | ||
|    // public string DONTRESETINDENTONNEWLINE	// not migrated: used in anonop & various bge
 | ||
|    // public string CONTINUEMESSONNEXTLINE	// not migrated: used in anoann
 | ||
|    // public string CAP1STSECTIONTITLE		// not migrated: used in anono
 | ||
|    // public string DOUBLESPACEHLS			// not migrated: used in anoann
 | ||
|     public string UseLongProcTitles;
 | ||
|    // public string INCLUDENOTEINPLACKEEP		// not migrated: used in bgeeop
 | ||
|    // public string OUTTRANTOSECTIONSTEP		// not used
 | ||
|    // public string ANOANNUNCIATORS			// not migrated: used in anoann
 | ||
|     public string SpecialLandscapeMode;
 | ||
|     public string RNOInPagelist;
 | ||
|     public string StpCautNoteTabInPagelist;
 | ||
|     public string ReadOnlyTypeInContMsg;
 | ||
| #endregion
 | ||
| #region xtraflags13
 | ||
|     public string CenterOneLineOnly;          // from xtra_flag array 13
 | ||
|     public string TieTabToLevel;
 | ||
|    // public string LEFTJUSTIMMEDIATE 		// not migrated: used in anoann
 | ||
|     public string AccessoryDocsInDuplex;
 | ||
|     public string FoldoutsInDuplex;
 | ||
|    // public string ABPAGE			        // not migrated: used in various ano
 | ||
|     public string UseSTExtraRealValue;
 | ||
|     public string SubTableGetSup1Level;
 | ||
|    // public string DONTNUMBERNOTECAUT1       // not migrated: used in anonop
 | ||
|     public string DontCountFoldoutPages;
 | ||
|    // public string ANONOPHACKS		        // not migrated: used in anonop
 | ||
|    // public string FLOATSECNUMPOS			// not migrated: used in bgeoi bgestp
 | ||
|     public string SearchAllReplaceWords;
 | ||
|    // public string CALVERTCLIFFSFORMATS	    // not migrated: used in various bge
 | ||
|    // public string NOSTUPIDSUBLOGIC		    // not migrated: used in anonop
 | ||
|    // public string REMEMBERRNOSTEP			// not migrated: used in bgeeop, rbndan, rbnd
 | ||
| #endregion
 | ||
| #region xtraflags14
 | ||
|     public string RememberCautionsAndNotes;   // from xtra_flag array 14
 | ||
|    // public string PUTONPAGEAFTERHALFPAGE	// not migrated: used in anonop
 | ||
|    // public string FLOATINGSTEPS				// not migrated: used in anonop
 | ||
|     public string RtfAdjustments;
 | ||
|     public string CenterOneLineAdjust;
 | ||
|     public string CountAllSubLevels;
 | ||
|    // public string AERCHGBARMSGRNOCHGBARNOMSG // not migrated: used in nae
 | ||
|     public string DontReplaceWordsInROs;
 | ||
|     public string HighLevelRNOBeforeAERSubStps;
 | ||
|     public string UnderlineAllMetaTitles;
 | ||
|     public string DontBreakCautionsOrNotes;
 | ||
|     public string BoldOnlySectionZero;
 | ||
|     public string DontBreakOnRNO;
 | ||
|     public string RNOCheckOffSameAsParent;
 | ||
|     public string UseStepTypeWidthOverride;
 | ||
|     public string WolfcreekCKLFormat;
 | ||
| #endregion
 | ||
| #region xtraflags15
 | ||
|     public string DontPaginateOnFirstSubStep2X;   // from xtra_flag array 15
 | ||
|     public string UseStepTypeWidthOverrideEditPrint;
 | ||
|     public string PartialStepCompression;
 | ||
|     public string UseSmartTemplate;
 | ||
|     public string CheckoffOnHLSOnly;
 | ||
|    // public string KEEPCHANGEIDFORCOPYSTEP   // not migrated: used in various ANO
 | ||
|    // public string RNOBELOWCHECKOFF		    // not migrated: used in various RBND
 | ||
|     public string Caution2SameRowAsParent;
 | ||
|    // public string DONTUNDERLINEMETATITLES	// not migrated: used in various RBND
 | ||
|     public string CenterTextWithinWidth;
 | ||
|     public string DontBreakEquipmentList;
 | ||
|    // public string USELOCALTEMPLATEFILE		// not migrated: used in various RBND
 | ||
|     public string AlwaysTabCaution2;
 | ||
|     public string VirtualDotInHLSTab;
 | ||
|     public string ImperfectStructurePlus4;
 | ||
|    // public string RIVERBENDVALVESHEETS		// not migrated: used in various RBND
 | ||
| #endregion
 | ||
| #region xtraflags16
 | ||
|    // public string RIVERBENDPUMPDATASHEET    // from xtra_flag array 16 -not migrated: used in various RBND
 | ||
|     public string UseRNOTypeInActable;
 | ||
|     public string AbsoluteTransitionUpdate;
 | ||
|     public string SeparateBoxCautions;
 | ||
|    // public string RIVERBENDALARMFORMAT		// not migrated: used in RBNDAN
 | ||
|     public string HLSTextInPagelist;
 | ||
|    // public string HLSCAUT2INPAGELIST	    // not migrated: used in RBNDAN
 | ||
|     public string LowerCaseStepInTran;
 | ||
|    // public string DONTCHANGELOWERLIMIT		// not migrated: used in BGEALN PAC
 | ||
|    // public string UPPERCASESECTIONTITLE		// not migrated: used in various RBND
 | ||
|    //public string ALGNCOMPRESSSUPERTABLE;		// not migrated: no supporting code.
 | ||
|    // public string RIVERBENDLINEUPFORMAT		// not migrated: used in various RBND
 | ||
|     public string ChangeBarsOnLinkedText;
 | ||
|     public string QuotedSubsteps;
 | ||
|    // public string PROPOVERFLOWLETITHANG		// not migrated: used in BGEEOP
 | ||
|    // public string TURKEYPOINTBACKGNDFORMAT	// not migrated: used in FPLBCK
 | ||
| #endregion
 | ||
| #region xtraflags17
 | ||
|    // public string DRAWCENTERLINE            // from xtra_flag array 17 -not migrated: used in BGEEOP
 | ||
|    // public string DOVALVEDIVIDER	        // not migrated: used in ANO2VLV
 | ||
|    // public string DOSECTIONOVERUNDERSTRING	// not migrated: used in bgeeop, bgevl
 | ||
|     public string OverrideEnhancedTabs;
 | ||
|    // public string USEREALCOMPRESSED7LPI		// not used
 | ||
|     public string NoNewlineAfterRNO;
 | ||
|     public string DoSectionSeparatorLine;
 | ||
|     public string ParensOnExtPagenumTrans;
 | ||
|     public string AtLeastTwoDigitsForHLS;
 | ||
|     public string DontBreakOptEquipmentList;
 | ||
|     public string PagelistChangeIDsWithCommas;
 | ||
|     public string DontStartLineWithDash;
 | ||
|     public string NoBlankLineBeforeSubstep;
 | ||
| 	public string DontBreakCautionsNotesOnSubstps;
 | ||
| 	public string DontConvertCaretToDelta;		// handled in data migration
 | ||
| #endregion
 | ||
| #region xtraflags18
 | ||
|     // this was original veairflag, but an extra array element was added to the xtraflags,
 | ||
|     // xtraflags[18], since some of the flags were used in other formats. 
 | ||
|    // public string NOTEAFTERAPPLIEDTEXT		// from xtra_flag array 18 -not migrated: used in ata
 | ||
|     public string NoRNO;
 | ||
|    // public string ALTWFORWARNINGS           // not migrated: used in ata, some bge & some rbnd
 | ||
|     public string OnlySingleColumn;
 | ||
| 	public string NullBox;			        // used in bgeeop and NSP
 | ||
|     public string XChngTranSpForHard;
 | ||
|     public string WolfcreekCKLBackgndFormat;
 | ||
| #endregion
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct Symbol
 | ||
| {
 | ||
| 	public string Unicode;
 | ||
| 	public string Desc;
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct GeneralEditor
 | ||
| {
 | ||
| 	public string EMode;
 | ||
| 	/* Format Flags */
 | ||
| 	public string PromptForCautionType;
 | ||
| 	/* End of format flags */
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct GeneralPrint
 | ||
| {
 | ||
|     public Int16 DoPrnDrvrAdjusts;
 | ||
|     public string TopOfPageThing;
 | ||
| 	/* Format flags moved to here.... */
 | ||
| 	public string DoRevDate;
 | ||
| 	public string AlternateFoldoutPages;
 | ||
| 	public string AlternateFloatingFoldout;
 | ||
| 	public string SectionLevelFoldouts;
 | ||
| 	public string RevDateWithForwardSlash;
 | ||
| 	//public string SpecialStepsFoldout;
 | ||
| 	// Added AllowDuplex to eliminate hardcoded check for WEP2 and WPB formats
 | ||
| 	// for the Disable Automatic Duplexing 
 | ||
| 	public string AllowDuplex;
 | ||
| 	public string AccessoryDocsInDuplex;
 | ||
| 	public string FoldoutsInDuplex;
 | ||
| 	public string PagelistChangeIDsWithCommas;
 | ||
| 	/* end Format flags */
 | ||
|     public ProcDescr [] ProcDescrList;
 | ||
|     public string[] VersionIdText;
 | ||
|     public string DuplexBGDirectory;    // this may go away??
 | ||
|     public string DuplexDDDirectory;    // "  "
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct ProcDescr
 | ||
| {
 | ||
|     public string MatchProcNumber;
 | ||
|     public string ProcDescr1;
 | ||
|     public string ProcDescr2;
 | ||
| }
 | ||
| //[Serializable]
 | ||
| //public struct GeneralLayout           // no data in this category. Comment out 
 | ||
| //{                                     //   in case later some data moves to here.
 | ||
| 
 | ||
| //}
 | ||
| [Serializable]
 | ||
| public struct Procedure
 | ||
| {
 | ||
|     public Int16 TitleLength;
 | ||
|     public Int16 CoverTitleLength;
 | ||
| 	public string ProcForeColor;
 | ||
| 	public string ProcBackColor;
 | ||
|     public string ProcedureSuffixFlags;
 | ||
| 	/* Format flags moved to here.... */
 | ||
| 	public string CapitalizeTitle;
 | ||
| 	public string ChangeStyleForEverySection;
 | ||
| 	public string PrintNoTitle;
 | ||
| 	public string NotesToFootnotes;
 | ||
| 	public string CountFoldoutPages;
 | ||
| 	/* End of Format flags  */
 | ||
|     public string[] ProcedureSuffix;
 | ||
| 	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;
 | ||
| 	public string AllowSectEdit;
 | ||
| 	public string AllowStepEdit;
 | ||
|     public int UseCheckOffsIn;
 | ||
|     public float CheckOffAdjustment;
 | ||
| 	public float XLocation;
 | ||
| 	/* Format flags ... */
 | ||
| 	public string DropCheckOff;
 | ||
| 	public string CheckOffOnHLSOnly;
 | ||
| 	public string SkipSpaces;
 | ||
| 	/* end of format flags */
 | ||
|     //public RightCheckOffBx [] RightCheckOffBoxList;
 | ||
| 	public Absolute [] LayoutList;
 | ||
|     public CheckOffHeader[] CheckOffHeaderList;
 | ||
|     public CheckOff [] CheckOffList;
 | ||
| }
 | ||
| //[Serializable]
 | ||
| //public struct RightCheckOffBx
 | ||
| //{
 | ||
| //    public int Index;
 | ||
| //    public int RightCheckOffBox;
 | ||
| //}
 | ||
| [Serializable]
 | ||
| public struct Absolute
 | ||
| {
 | ||
| 	public string RnoLevel;
 | ||
| 	public int Column;
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct CheckOffHeader
 | ||
| {
 | ||
|     public int Index;
 | ||
|     public string CheckOffHeading;
 | ||
|     public VE_Font Font;
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct CheckOff
 | ||
| {
 | ||
|     public int Index;
 | ||
|     public byte UIMark;
 | ||
| 	public string MenuItem;
 | ||
| 	public string ExcludeInSectMenu;
 | ||
| 	public string Macro;
 | ||
|     public float CheckOffWidAdjust;
 | ||
| 	public int CheckOffXtraLines;
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct ChangeBar
 | ||
| {
 | ||
| 	public string DefaultCBLoc;
 | ||
|     public string ChangeBarMessage;
 | ||
|     public Int16 FixedChangeColumn;               // really flags not columns (don't convert to points
 | ||
| 	public Int16 FixedAERChangeColumn;
 | ||
|     public long ChangeSummaryStyle;               // not really change bar - put here for now.
 | ||
|     public long ChangeBarStyle;
 | ||
|     public string SpecialChangeBar;
 | ||
| 	/* Format flags moved to here.... */
 | ||
| 	public string CondensedChangeBar;
 | ||
| 	public string AbsoluteFixedChangeColumn;
 | ||
| 	public string ContinuousChangeBars;
 | ||
| 	public string ChgBarMessageFromEdit;
 | ||
| 	public string MultipleChangeIds;
 | ||
| 	public string ChangeBarToRNOSep;
 | ||
| 	public string ChangeBarsOnLinkedText;
 | ||
| 	/* End of Format flags */
 | ||
| }
 | ||
| [Flags]
 | ||
| public enum E_ChangeBarMessage : uint
 | ||
| {
 | ||
| 	DateChgID = 0,
 | ||
| 	RevNum = 1,
 | ||
| 	ChgID = 2,
 | ||
| 	None = 3
 | ||
| }
 | ||
| [Flags]
 | ||
| public enum E_EMode : uint
 | ||
| {
 | ||
|     Insert = 0,
 | ||
|     Override = 1
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct Section
 | ||
| {
 | ||
|     public Int16 SectionTitleLength;
 | ||
| 	public string SectForeColor;
 | ||
| 	public string SectBackColor;
 | ||
| 	/* Format Flags moved here... */
 | ||
| 	//public string CancelSecTitlesOnS1;	// moved to docstyle
 | ||
| 	//public string CancelSecTitlesOnS2;
 | ||
| 	//public string CancelSecTitlesOnE0;
 | ||
| 	//public string CancelSecTitlesOnE2;
 | ||
| 	public string MetaSectEndMessage;
 | ||
| 	public string ReadOnlyTypeInContMsg;
 | ||
| 	public string ReplaceWordsInROs;
 | ||
| 	public string UseMetaSections;
 | ||
| 	public string NonEditableSteps;
 | ||
| 	public string SearchAllReplaceWords;
 | ||
| 	public string SecTitleContinue;
 | ||
| 	public string ConvertCaretToDelta;
 | ||
| 	/* end of Format flags */
 | ||
|     public SectionNum SectionNumber;
 | ||
|     public SectionHead SectionHeader;
 | ||
|     public StepSection StepSectionData;
 | ||
|     public AccSection AccSectionData;
 | ||
|     public MetaSection [] MetaSectionData;
 | ||
| 	public ReplaceStr[] ReplaceStrData;
 | ||
| 	
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct SectionNum
 | ||
| {
 | ||
|     public float Pos;
 | ||
|     public string Just;
 | ||
|     public VE_Font Font;
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct SectionHead
 | ||
| {
 | ||
| 	public float Pos;
 | ||
|     public string Just;
 | ||
|     public VE_Font Font;
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct StepSection
 | ||
| {
 | ||
|     public Int16 TopRow;
 | ||
|     public byte IndentToken;
 | ||
|     public Int16 NumberOfHighLevelSteps;
 | ||
|     public Int16 NumberOfSubStepTypes;
 | ||
| 	//public Int16[] TextTypeValue;
 | ||
| 	//public string[] TextType;
 | ||
|     public string IdentB;
 | ||
|     public string[] UnderlineTerminate;
 | ||
|     public string [] ObserveNCString1;
 | ||
|     public string[] ObserveNCString2;
 | ||
| 	/* Format flags moved to here.... */
 | ||
| 	public string WolfCreekBackgroundFormat;
 | ||
| 	public string WolfcreekCKLFormat;
 | ||
| 	public string WolfcreekCKLBackgndFormat;
 | ||
| 	public string FortranFormatNumbers;
 | ||
| 	public string UseTopContinueMessageAtEnd;
 | ||
| 	public string FloatingContinueMessage;
 | ||
| 	public string WrapSameAsEdit;
 | ||
| 	public string ContinueSectionHeader;
 | ||
| 	public string CompressHPSub;
 | ||
| 	public string CompressHPSuper;
 | ||
| 	//public string UndSpecialStepsFoldout;
 | ||
| 	public string UnderlineAllMetaTitles;
 | ||
| 	public string BoldOnlySectionZero;
 | ||
| 	public string ImperfectStructure;
 | ||
| 	public string ImperfectSubstep;
 | ||
| 	public string ImperfectStructurePlus4;
 | ||
| 	public string CountAllSubLevels;
 | ||
| 	public string UseMultiLineSectionTitle;		// Need for data migration only
 | ||
| 	/* end of Format flags */
 | ||
|     public StepSectionLayout StpSectLayData;
 | ||
|     public StepSectionEdit StpSectEditData;
 | ||
|     public StepSectionPrint StpSectPrtData;
 | ||
| 	public SeqTabFmt[] SequentialTabFormat;
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct AccSection
 | ||
| {
 | ||
|     public int AutoContActSumSection;
 | ||
|     public TOC TableOfContentsData;
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct TOC
 | ||
| {
 | ||
|     public float TofCSecNumPos;
 | ||
| 	public float TofCSecTitlePos;
 | ||
|     public byte TofCSecTitleLen;
 | ||
| 	public float TofCPageNumPos;
 | ||
|     public byte TofCSpaceChar;
 | ||
|     public byte TofCLineSpacing;
 | ||
|     public VE_Font Font;
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct MetaSection
 | ||
| {
 | ||
|     public int Index;  // do I need this to order them or will SecNumPositionAdj work?
 | ||
|     public float SecNumPositionAdj;
 | ||
| 	public float SecTitlePositionAdj;
 | ||
| 	public float ColSByLevel;
 | ||
| 	public float TofCPositionAdj;
 | ||
| 	public float WidSAdjByLevel;
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct StepSectionLayout
 | ||
| {
 | ||
|     public float LastLineToStartStep;
 | ||
|     public Int16 LineDrawingOption;
 | ||
| 	public float ColS;
 | ||
| 	public float ColT;
 | ||
| 	public float ColAbs;
 | ||
| 	public float WidT;
 | ||
|     public Int16 PMode;
 | ||
|     public Int16 MaxRNO;
 | ||
|     public string MaxRNOTable;
 | ||
|     public string ColRTable;
 | ||
|     public string WidSTableEdit;
 | ||
|     public string WidSTablePrint;
 | ||
|     public float AdjRNOCol;
 | ||
|     public Int16 EndMessagePos;
 | ||
|     public string RNOWidthAlt;
 | ||
|     public Int16 HLSWidthOVRD;
 | ||
|     public Int16 SubPaginationWght;
 | ||
|     public Int16 TextTitleAdjustment;
 | ||
|     public string TableCenterPos;		// string array with floats.
 | ||
|     public string LowerLimitDivisor;	// pagination - should it be in print? - 16bit: quoted float
 | ||
|     public string NonLinkedStepNumber;
 | ||
|     public string NonLinkedCautNoteNumber;
 | ||
|     public string NonLinkedRNONumber;
 | ||
| 	/* Format flags moved to here.... */
 | ||
| 	public string Dev_Format;
 | ||
| 	public string EnhancedShortFormDev;
 | ||
| 	public string SpecialPageBreakFlag;
 | ||
| 	public string PaginateOnFirstSubstep;
 | ||
| 	public string PaginateOnFirstSubstep2X;
 | ||
| 	public string UseHalfLines;
 | ||
| 	public string TryToFillHalfOfPage;
 | ||
| 	public string CompressSteps;
 | ||
| 	public string DoSTExtraAtTop;
 | ||
| 	public string KeepStepsOnPage;
 | ||
| 	public string BreakOnSections;
 | ||
| 	public string ShowSectionTitles;
 | ||
| 	public string EndForSingle;
 | ||
| 	public string PaginateOnFirstSubstep3X;
 | ||
| 	public string PaginateOnLowerStepLevel;
 | ||
| 	public string CustomSpacing;
 | ||
| 	public string SplitStepInPrntStep;
 | ||
| 	public string LineAboveUnderSection;
 | ||
| 	public string PicaIgnoreFiveSixths;
 | ||
| 	public string SpaceForNoSecNumb;
 | ||
| 	public string PageBreakOnFirstBlankLine;
 | ||
| 	public string PutOnPageByItself;
 | ||
| 	public string PaginateAtHighestPaginLevel;
 | ||
| 	public string UseSTExtraRealValue;
 | ||
| 	public string DoSectionSeparatorLine;
 | ||
| 	public string TieTabToLevel;
 | ||
| 	public string HighLevelRNOBeforeAERSubsteps;
 | ||
| 	public string UseStepTypeWidthOverride;
 | ||
| 	public string UseStepTypeWidthOverrideEditPrint;
 | ||
| 	public string PartialStepCompression;
 | ||
| 	public string VirtualDotInHLSTab;
 | ||
| 	public string OverrideEnhancedTabs;
 | ||
| 	public string RNO;
 | ||
| 	public string OnlySingleColumn;
 | ||
| 	public string NullBox;
 | ||
| 	/* End of format flags */
 | ||
| 	public VE_Font VertStyle;
 | ||
|     public TopOfPg TopOfPage;
 | ||
|     public Separtr Separator;
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct TopOfPg
 | ||
| {
 | ||
|     public float Row;
 | ||
| 	public float Col;
 | ||
|     public VE_Font Font;
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct Separtr
 | ||
| {
 | ||
|     public Int16 SeparatorLocation;
 | ||
|     public VE_Font Font;
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct StepSectionEdit
 | ||
| {
 | ||
| 	public float ColSScreenAdj;
 | ||
| 	public float ScrnAdjRNOText;
 | ||
|     public string ColRScreen;
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct SeqTabFmt
 | ||
| {
 | ||
| 	public int Index;
 | ||
| 	public string TabToken;
 | ||
| 	public string TabFormat;
 | ||
| 	public string PrintTabFormat;
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct StepSectionPrint
 | ||
| { 
 | ||
|     public float ImmStepHdrCol;
 | ||
|     public Int16 SecColHdrforActPMode;
 | ||
|     public string RNOSepString;
 | ||
|     public string HLStpSeparatorString;
 | ||
|     public string HLRNOStpSeparatorString;
 | ||
| 	/* Format flags moved to here.... */
 | ||
| 	public string LowerCaseRevNum;
 | ||
| 	public string UseXtraRevNumber;
 | ||
| 	public string SpecialLandscapeMode;
 | ||
| 	/* End of format flags */
 | ||
|     public VE_Font ModifiedTextStyle;
 | ||
|     public VE_Font ImmStepHdrStyle;
 | ||
| 	public LeftJustify[] LeftJustifyList;
 | ||
|     public string[] ImmStepHdr;
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct LeftJustify
 | ||
| {
 | ||
| 	public int Index;
 | ||
| 	public float Size;
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct ReplaceStr
 | ||
| {
 | ||
|     public string Flag;
 | ||
|     public string ReplaceWord;
 | ||
|     public string ReplaceWith;
 | ||
| }
 | ||
| [Flags]
 | ||
| public enum E_ReplaceStr : uint
 | ||
| {
 | ||
|     High	=0x0001,		    // Do ReplaceWords in HIGH LEVEL STEPS
 | ||
|     RNO		=0x0002,		    // Do ReplaceWords in RNOS
 | ||
|     Caution	=0x0004,		    // Do ReplaceWords in CAUTIONS
 | ||
|     Note	=0x0008,		    // Do ReplaceWords in NOTES
 | ||
|     Table	=0x0010,		    // Do ReplaceWords in TABLES
 | ||
|     Substep	=0x0020,		    // Do ReplaceWords in SUBSTEPS
 | ||
|     Attach	=0x0040,		    // Do ReplaceWords in ATTACHMENTS
 | ||
|     Bkgd        =0x0080,		// Do ReplaceWords in BACKGROUNDS
 | ||
|     DiffUnit	=0x0100,		// Do ReplaceWords ONLY for different UNIT # 
 | ||
|     TOC		=0x0200,		    // Do in auto table-of-contents 
 | ||
|     StatTree	=0x0400,
 | ||
|     HLSSetpnt   =0x0800,		// Do ReplaceWords in HighLevelStep SETPoiNTs
 | ||
|     Trans	=0x1000,		    // Do ReplaceWords in TRANSITIONS
 | ||
|     Setpoint	=0x2000,		// Do ReplaceWords in SETPOINTS
 | ||
| 
 | ||
|     // Case Sensitivity Flags - default is off (Case Sensitive Replace)
 | ||
|     CaseInsens	=0x0000C000,	// Do ReplaceWords for all words thatmatch, regardless of case,
 | ||
| 					                //   and replace with the ReplaceWith string as is
 | ||
|     CaseInsensFirst	= 0x4000,	// Do ReplaceWords for all words thatexactly match the ReplaceWord, 
 | ||
| 					                //   except the case of the first character may be different
 | ||
|     CaseInsensAll	= 0x8000,	// Do ReplaceWords for all words that match the ReplaceWord, regardless of case
 | ||
|     
 | ||
|     Partials		=0x10000,   // Do replace even on partial matches
 | ||
|     Plackeep		=0x20000,   // Do replace in PlaceKeepers
 | ||
|     InSecTitle		=0x40000    // replace words in section titles
 | ||
| }
 | ||
| // all Step variables are strings here so that inheritance check for step variables can be done.
 | ||
| // Some will have float/integer values and should be treated as such in format code in Proms code.
 | ||
| [Serializable]
 | ||
| public struct Step
 | ||
| {
 | ||
|     public int Index;
 | ||
| 	public string Type;
 | ||
|     public string ParentType;
 | ||
| 	public string Inactive;
 | ||
| 	public string ColOverride;
 | ||
| 	public string ColOverrideEdit;
 | ||
| 	public string WidthOverride;
 | ||
| 	public string WidthOverrideEdit;
 | ||
| 	public string Sep;
 | ||
|     public string Prefix;
 | ||
|     public string Suffix;
 | ||
|     public string UnderlineTheseChar;
 | ||
|     public string VertPos;
 | ||
| 	/* the following are xtraflags that have been moved, string is set to true if plant has flag */
 | ||
| 	/* Flag name is listed as comment after each if different than name (change is made if generically used. */
 | ||
| 	public string DoubleSpace;					//DoubleRNOSpace
 | ||
| 	public string EnhancedStepNumFromPrev;
 | ||
| 	public string UseSmartTemplate;
 | ||
| 	public string AlwaysUseExtraLines;
 | ||
| 	public string SeparateBox;
 | ||
| 	public string SeparateBoxCautions;
 | ||
| 	public string SpaceDouble;					// NoSpaceDoubleRNO
 | ||
| 	public string ReduceLineAfter;				// ReduceLineAfterNoteAndCaut
 | ||
| 	public string SameLevel;					// RNOSameLevel
 | ||
| 	public string BoldHighLevel;				// BoldHighLevelRNO
 | ||
| 	public string OneLineBeforeTab;				// OneLineBeforeNoteCautionTab
 | ||
| 	public string BoxIt;						// DontBoxAC
 | ||
| 	public string Boxed;						// BoxContinuousActions, BoxedSubsteps
 | ||
| 	public string XLines_StepFix;
 | ||
| 	public string Rebox;						// ReboxCautNote
 | ||
| 	public string SpcHdr;						// ImmStepSpcHdr
 | ||
| 	public string ContinueOnly;					// RNOContinueOnly
 | ||
| 	public string SepAfterAER;					// RNOSepAfterAER
 | ||
| 	public string UseAlternateStepBox;
 | ||
| 	public string UnderlineAfterDashSpace;
 | ||
| 	public string SpaceIn;						// NoSpaceInNoteOrCaution
 | ||
| 	public string PageBreakOnStep;				// PageBreakOnHighLevelStep, PageBreakOnCautions, PageBreakOnNotes
 | ||
| 	public string AlignNullTabWSectHead;
 | ||
| 	public string TextSubFollowsTextStyle;
 | ||
| 	public string CautionOrNoteSubstepIndent;
 | ||
| 	public string TreatAsSequential;			// TreatAND_ORasSequential
 | ||
| 	public string MatchUpRNO;					// MatchUpRNOCautNote
 | ||
| 	public string InPageList;					// RNOInPageList, StpCautNoteTabInPageList, HLSTextInPageList
 | ||
| 	public string CenterOneLineOnly;
 | ||
| 	public string SubTableGetsUp1Level;
 | ||
| 	public string Remember;						// RememberCautionsAndNotes
 | ||
| 	public string CenterOneLineAdjust;
 | ||
| 	public string Break;						// DontBreakCautionsOrNotes, DontBreakOnRNO, DontBreakOptEquiptmentList
 | ||
| 	public string BreakEquipmentList;			// Need this one as separate from above because differentiate between DontBreakOptEquiptmentList
 | ||
| 	public string BreakCautionsNotesOnSubstps;
 | ||
| 	public string CenterTextWithinWidth;
 | ||
| 	public string NewlineAfter;					// NoNewlineAfterRNO
 | ||
| 	public string StartLineWithDash;
 | ||
| 	public string BlankLineBeforeSubStep;
 | ||
| 	public string AlwaysTab;					// AlwaysTabNote, AlwaysTabCaution, AlwaysTabCaution2
 | ||
| 	public string MixCautionsAndNotes;
 | ||
| 	public string NumberHighLevel;				// NumberHighLevelRNO
 | ||
| 	public string OffsetTab;
 | ||
| 	public string LeftJustifyBorderless;		// LJBorderlessTable
 | ||
| 	public string StepNumIfOnlyOne;				// NoStepNumIfOnlyOneStep
 | ||
| 	public string LJTabs;
 | ||
| 	public string NumberSubs;					// DontNumberRNOSubs
 | ||
| 	public string Bullet;						// BulletOnContinuous
 | ||
| 	public string StepNumberForHighLevel;		// NoStepNumberForHighLevelRNO
 | ||
| 	public string SameRowAsParent;				// Caution1SameRowAsParent, Caution2SameRowAsParent
 | ||
| 	public string CheckoffSameAsParent;			// RNOCheckoffSameAsParent
 | ||
| 	public string AtLeastTwoDigits;				// AtLeastTwoDigitsForHLS
 | ||
| 	public string UseInAcTable;					// UseRNOTypeInAcTable
 | ||
| 	public string Number;						// DontNumberHighLevelSteps
 | ||
| 	public string ThreeBlanksAbove;				// ThreeBlanksAboveNotesCautions
 | ||
| 	public string CheckOffs;					// NoCheckOffsInRNO
 | ||
| 	public string Quoted;						// QuotedSubSteps
 | ||
| 	/* end of xtraflags */
 | ||
|     public VE_Font Font;
 | ||
|     public Layout StepLayoutData;
 | ||
|     public Edit StepEditData;
 | ||
|     public Print StepPrintData;
 | ||
|     public Tab TabData;
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct Edit
 | ||
| {
 | ||
| 		public string ForeColor;  // Doesn't exist in old format - See StepLayoutData
 | ||
| 		public string BackColor;  // Doesn't exist in old format - See StepLayoutData
 | ||
|     public string AcTable;
 | ||
| 	public string Searchable;
 | ||
| 	public TypeMenu TypeMenu;
 | ||
| }
 | ||
| [Flags]
 | ||
|  // acceptence list for adding Tables, Cautions, Notes, Substeps, Next, Previous and RNO
 | ||
| public enum E_AccStep : uint
 | ||
| {
 | ||
|     AddingCaution = 1,
 | ||
|     AddingNote	= 2,
 | ||
|     AddingRNO	= 4,
 | ||
|     AddingSub	= 8,
 | ||
|     AddingTable = 16,
 | ||
|     AddingNext	= 32,
 | ||
|     AddingPrev	= 64
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct TypeMenu
 | ||
| {
 | ||
| 	public string InMenu;					// bool - list in menu if step is in Normal (Left-side) column
 | ||
| 	public string RnoInMenu;				// bool - list in menu if step is in RNO (right-side) column
 | ||
| 	public string MenuItem;					// for migration, if alternatename or rnoalternate name, use it, otherwise it's type
 | ||
| 	public string RnoMenuItem;					// for migration, if alternatename or rnoalternate name, use it, otherwise it's type	
 | ||
| 	public string NoChgReason;				// if not in any menu, list reason for User Interface
 | ||
| 	public string AlternateNameList;		// put indices of alternate types in a list (string)
 | ||
| 	//public AlternateName[] AlternateNames;			// during migration from 16-bit, this is textype values
 | ||
| }
 | ||
| //[Serializable]
 | ||
| //public struct AlternateName
 | ||
| //{
 | ||
| //    public string Type;					// Step Types that can be included/mixed in the menu (caution/notes)
 | ||
| //}
 | ||
| [Serializable]
 | ||
| public struct Print
 | ||
| {
 | ||
|     public string ForeColor;  // Doesn't exist in old format - See StepLayoutData
 | ||
| 	public string BackColor;  // Doesn't exist in old format - See StepLayoutData
 | ||
|     public string PosAdjust;
 | ||
| 	public string Justify;	  // added for wolf creek checklist procedures.
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct Layout
 | ||
| {
 | ||
|     public string ForeColor;
 | ||
|     public string BackColor;
 | ||
|     public string STExtraSpace;
 | ||
|     public string STBoxindex;
 | ||
|     public string EveryNLines;
 | ||
| 	public string SpaceBefore;		// = 0
 | ||
| 	public string SpaceAfter;		// 1 line (in points)
 | ||
|     public string AlwaysUpperCase;
 | ||
|     public string PageBreakAtTypeChange;
 | ||
|     public string AlignWithParentTab;
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct Tab
 | ||
| {
 | ||
| 	public string IdentEdit;
 | ||
| 	public string Ident;
 | ||
| 	public string IdentAltPrint;
 | ||
| 	public string RNOIdentEdit;
 | ||
| 	public string RNOIdent;
 | ||
| 	//public string IdentEditWid;
 | ||
| 	//public string IdentWid;
 | ||
| 	//public string RNOIdentEditWid;
 | ||
| 	//public string RNOIdentWid;
 | ||
| 	public string Justify;			// from tbstyle - None, CENTER, LEFT, RIGHT
 | ||
| 	public string UsePreviousStyle;
 | ||
| 	public COMacro[] MacroList;
 | ||
| 	public VE_Font Font;
 | ||
| 	public TabBullet Bullet;
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct COMacro
 | ||
| {
 | ||
| 	public string Name;
 | ||
| 	public string Macro;
 | ||
| 	public string Grouping;
 | ||
| 	public string NotInRNO;
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct Box
 | ||
| {
 | ||
|     public int Index;
 | ||
|     public float Start;
 | ||
|     public float End;
 | ||
| 	public float TxtStart;
 | ||
| 	public float TxtWidth;
 | ||
| 	public float Height;
 | ||
| 	public float TabPos;
 | ||
|     public sbyte TxtRowAdj;
 | ||
|     public string BXURC;		// Upper Right Corner, etc.
 | ||
|     public string BXHorz;
 | ||
|     public string BXULC;
 | ||
|     public string BXVert;
 | ||
|     public string BXMLS;
 | ||
|     public string BXMRS;
 | ||
|     public string BXLRC;
 | ||
|     public string BXLLC;
 | ||
|     public string BXMID;
 | ||
|     public string BXLHorz;
 | ||
|     public string BXUMID;
 | ||
|     public string BXLMID;
 | ||
|     public VE_Font Font;
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct Trans
 | ||
| {
 | ||
|     public string DelimiterForTransitionTitle;
 | ||
|     public string StepSubstepDelimeter;
 | ||
|     public string ThroughString;
 | ||
| 	/* Format flags moved to here.... */
 | ||
| 	public string SpecifiedSubstepsOnly;
 | ||
| 	public string CapsTransitions;
 | ||
| 	public string CapTranStep;
 | ||
| 	public string TStepNoFlag;
 | ||
| 	public string LowerCaseTranNumber;
 | ||
| 	public string UpcaseTranAnd;
 | ||
| 	public string SuppressAndInTran;
 | ||
| 	public string Cap1stCharTrans;
 | ||
| 	public string UseTransitionModifier;
 | ||
| 	public string UseSecTitles;
 | ||
| 	public string HardSpTranProcNumb;
 | ||
| 	public string XchngTranSpForHard;
 | ||
| 	public string AbsoluteTransitionUpdate;
 | ||
| 	public string LowerCaseStepInTran;
 | ||
| 	public string DoSectionTransitions;
 | ||
| 	/* End of Format flags */
 | ||
|     public TransTypes[] TransTypeData;
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct TransTypes
 | ||
| { 
 | ||
|     public int Index;
 | ||
|     public byte TransType;
 | ||
|     public string TransFormat;
 | ||
|     public string TransMenu;
 | ||
| 	public string TransUI;
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct RO
 | ||
| {
 | ||
| 	/* Format flags moved to here.... */
 | ||
|     public string AllUnits;
 | ||
| 	public string UpRoAftrDash;				//UpSetpntAftrDash;
 | ||
| 	public string UpcaseAllRoUnits;			//UpcaseAllSetpointUnits;
 | ||
| 	public string CapHighRo;				//CapHighSetpnt;
 | ||
| 	public string CapRoIfLastLower;			//CapsPIFLastLower;
 | ||
| 	public string UpRoIfPrevUpper;			//UpSpIfPrevUpper
 | ||
| 	public string UnderlineRo;				//UnderlineSetpoints
 | ||
| 	public string CapFirstLetterInHighRO;	//CAPFIRSTLETTERINHIGHSP
 | ||
| 	/* End of Format flags */
 | ||
| }
 | ||
| [Serializable]
 | ||
| public struct TabBullet
 | ||
| {
 | ||
| 	public string Separate;
 | ||
| 	public VE_Font Font;
 | ||
| }
 | ||
| 
 | ||
| [Flags]
 | ||
| public enum E_TransitionMenus : uint
 | ||
| {
 | ||
| 	None = 0,
 | ||
| 	ProcCur = 0x0001,
 | ||
| 	ProcMenu = 0x0002,
 | ||
| 	SectCur = 0x0004,
 | ||
| 	SectDefault = 0x0008,
 | ||
| 	SectMenuAny = 0x0010,
 | ||
| 	SectMenuStep = 0x0020,
 | ||
| 	StepAllowNone = 0x0040,
 | ||
| 	StepFirst = 0x0080,
 | ||
| 	StepLast = 0x0100
 | ||
| }
 | ||
| [Flags]
 | ||
| public enum E_TransFormatXlate : uint
 | ||
| {
 | ||
| 	None = 0,
 | ||
| 	Step = 1,
 | ||
| 	Range = 2,
 | ||
| 	Section = 4,
 | ||
| 	Procedure = 8,
 | ||
| 	Page = 16
 | ||
| }
 | ||
| 
 | ||
| #endregion
 | ||
| 
 | ||
| ///////////////////////////
 | ||
| namespace fmtxml
 | ||
| {
 | ||
| 	public partial class FmtFileToXml
 | ||
| 	{
 | ||
| 		#region localdata
 | ||
| 		public XtraFlgs BaseXtraFlags;			// used to set up all flags for the Base format.
 | ||
| 		public XtraFlgs SubXtraFlags;
 | ||
| 		public static int MAXSTEPS = 47;
 | ||
| 		public static int MAXBOXES = 12;
 | ||
| 		public static int MAXTABS = 20;
 | ||
| 		public static int MAXTRANS = 15;
 | ||
| 		public static int MAXCHECKOFFS = 18;
 | ||
| 		public static int MAXCHKHEADINGS = 5;
 | ||
| 		public static int MAXSEQ = 9;
 | ||
| 		public static int MAXREPLACE = 60;
 | ||
| 		#region XtraFlagBits
 | ||
| 		// XtraFlag translation fields...
 | ||
| 		//
 | ||
| 		// XtraFlag[0] from 16-bit...
 | ||
| 		public static int DOUBLERNOSPACE = 0x0001;
 | ||
| 		public static int MIXCAUTIONSANDNOTES = 0x0002;
 | ||
| 		public static int ALWAYSUSEEXTRALINES = 0x0008;
 | ||
| 		public static int ALWAYSTABNOTE = 0x0010;
 | ||
| 		public static int ALWAYSTABCAUTION = 0x0020;
 | ||
| 		public static int SPECIALPAGEBREAKFLAG = 0x0080;
 | ||
| 		public static int DONTPAGINATEONFIRSTSUBSTEP = 0x0200;
 | ||
| 		public static int IMPERFECTSTRUCTURE = 0x0800;
 | ||
| 		public static int DONTUSEHALFLINES = 0x1000;
 | ||
| 		public static int FORTRANFORMATNUMBERS = 0x2000;
 | ||
| 		public static int ALLUNITS = 0x4000;
 | ||
| 		public static int CAPSTRANSITIONS = 0x8000;
 | ||
| 
 | ||
| 		// XtraFlag[1] from 16-bit...
 | ||
| 		public static int CAPTRANSTEP = 0x0001;
 | ||
| 		public static int TSTEPNOFLAG = 0x0004;
 | ||
| 		public static int LOWERCASETRANNUMBER = 0x0008;
 | ||
| 		public static int CONDENSEDCHANGEBAR = 0x0020;
 | ||
| 		public static int DOREVDATE = 0x0040;
 | ||
| 		public static int SEPARATEBOX = 0x0080;
 | ||
| 		public static int NUMBERHIGHLEVELRNO = 0x0100;
 | ||
| 		public static int ALTERNATEFOLDOUTPAGES = 0x1000;
 | ||
| 		public static int DONTTRYTOFILLHALFOFPAGE = 0x8000;
 | ||
| 
 | ||
| 		// XtraFlag[2] from 16-bit...
 | ||
| 		public static int DONTCAPITALIZETITLE = 0x0001;
 | ||
| 		public static int NOSPACEDOUBLERNO = 0x0004;
 | ||
| 		public static int DONTOFFSETTAB = 0x0010;
 | ||
| 		public static int UPSETPNTAFTRDASH = 0x0020;
 | ||
| 		public static int LOWERCASEREVNUM = 0x0040;
 | ||
| 		public static int DONOTCOMPRESSSTEPS = 0x0080;
 | ||
| 		public static int REDUCELINEAFTERNOTEANDCAUT = 0x0100;
 | ||
| 		public static int RNOSAMELEVEL = 0x0200;
 | ||
| 		public static int BOLDHIGHLEVELRNO = 0x2000;
 | ||
| 		public static int ONELINEBEFORENOTECAUTIONTAB = 0x4000;
 | ||
| 		public static int CONTINUOUSCHANGEBARS = 0x8000;
 | ||
| 
 | ||
| 		// XtraFlag[3] from 16-bit...
 | ||
| 		//public static int CHECKOFFONALLSTEPS = 0x0004;
 | ||
| 		public static int DONTBOXAC = 0x0020;
 | ||
| 		public static int USETOPCONTINUEMESSAGEATEND = 0x0080;
 | ||
| 		public static int UPCASETRANAND = 0x2000;
 | ||
| 		public static int UPCASEALLSETPOINTUNITS = 0x4000;
 | ||
| 
 | ||
| 		// XtraFlag[4] from 16-bit...
 | ||
| 		public static int DEV_FORMAT = 0x0001;
 | ||
| 		public static int DONTDOSTEXTRAATTOP = 0x0004;
 | ||
| 		public static int XLINES_STEPFIX = 0x0008;
 | ||
| 		public static int REBOXCAUTNOTE = 0x0010;
 | ||
| 		public static int IMMSTEPSPCHDR = 0x0020;
 | ||
| 		public static int FLOATINGCONTINUEMESSAGE = 0x0080;
 | ||
| 		public static int ABSOLUTEFIXEDCHANGECOLUMN = 0x0200;
 | ||
| 		public static int LJBORDERLESSTABLE = 0x0800;
 | ||
| 		public static int SUPPRESSANDINTRAN = 0x1000;
 | ||
| 		public static int CAPHIGHSETPNT = 0x2000;
 | ||
| 		public static int CAPFIRSTLETTERINHIGHSP = 0x4000;
 | ||
| 		public static int CAPSPIFLASTLOWER = 0x8000;
 | ||
| 
 | ||
| 		// XtraFlag[5] from 16-bit...
 | ||
| 		public static int ALTERNATEFLOATINGFOLDOUT = 0x0001;
 | ||
| 		public static int WRAPSAMEASEDIT = 0x0002;
 | ||
| 		public static int KEEPSTEPSONPAGE = 0x0004;
 | ||
| 		public static int SPECIFIEDSUBSTEPSONLY = 0x0008;
 | ||
| 		public static int THREEBLANKSABOVENOTESCAUTIONS = 0x0010;
 | ||
| 		public static int IMPERFECTSUBSTEP = 0x0040;
 | ||
| 		public static int DONTBREAKONSECTIONS = 0x0080;
 | ||
| 		public static int NOSTEPNUMIFONLYONESTEP = 0x0100;
 | ||
| 		public static int SHOWSECTIONTITLES = 0x0200;
 | ||
| 		public static int LJTABS = 0x0400;
 | ||
| 		public static int DONTNUMBERRNOSUBS = 0x0800;
 | ||
| 		public static int DROPCHECKOFF = 0x4000;
 | ||
| 		public static int NOCHECKOFFSINRNO = 0x8000;
 | ||
| 
 | ||
| 		// XtraFlag[6] from 16-bit...
 | ||
| 
 | ||
| 		public static int CHGBARMESSAGEFROMEDIT = 0x0001;
 | ||
| 		public static int CHANGEBARTORNOSEP = 0X0002;
 | ||
| 		public static int CHGSTYLEPERSECTION = 0x0008;
 | ||
| 		public static int SECTIONLEVELFOLDOUTS = 0x0010;
 | ||
| 		public static int BOXCONTACTIONS = 0x0020;
 | ||
| 		public static int DOSECTIONTRANS = 0x0040;
 | ||
| 		public static int UPSPIFPREVUPPER = 0x0100;
 | ||
| 		public static int CONTINUESECTIONHEADER = 0x0200;
 | ||
| 		public static int GLOBALPROCINFO = 0x0400;
 | ||
| 		public static int COMPRESSHPSUB = 0x0800;
 | ||
| 		public static int BULLETONCONTINUOUS = 0x1000;
 | ||
| 		public static int CANCELSECTITLESONS2 = 0x2000;
 | ||
| 		public static int NOENDFORSINGLE = 0x4000;
 | ||
| 		public static int USEMETASECTIONS = 0x8000;
 | ||
| 
 | ||
| 		// XtraFlag[7] from 16-bit...
 | ||
| 
 | ||
| 		public static int RNOCONTINUEONLY = 0x0001;
 | ||
| 		public static int CAP1STCHARTRANS = 0x0002;
 | ||
| 		public static int DONTPAGINATEONFIRSTSUBSTEP3X = 0x0004;
 | ||
| 		public static int RNOSEPAFTERAER = 0x0008;
 | ||
| 		public static int REVDATEWITHFORWARDSLASH = 0x0010;
 | ||
| 		public static int USEALTERNATESTEPBOX = 0x0040;
 | ||
| 		public static int CANCELSECTITLESONS1 = 0x0080;
 | ||
| 		public static int SPECIALSTEPSFOLDOUT = 0x0100;
 | ||
| 		public static int UNDERLINEAFTERDASHSPACE = 0x0200;
 | ||
| 		public static int NOSPACEINNOTEORCAUTION = 0x0400;
 | ||
| 		public static int USEXTRAREVNUMBER = 0x0800;
 | ||
| 		public static int UNDERLINESETPOINTS = 0x1000;
 | ||
| 		public static int DOSECTIONTRANSTYPEB = 0x2000;
 | ||
| 		public static int PAGINATEONLOWERSTEPLEVEL = 0x4000;
 | ||
| 		public static int USETRANSITIONMODIFIER = 0x8000;
 | ||
| 
 | ||
| 		// XtraFlag[8] from 16-bit...
 | ||
| 
 | ||
| 		public static int CUSTOMSPACING = 0x0001;
 | ||
| 		public static int ENHANCEDSHORTFORMDEV = 0x0002;
 | ||
| 		public static int PAGEBREAKONHIGHLEVELSTEP = 0x0010;
 | ||
| 		public static int PAGEBREAKONCAUTIONS = 0X0040;
 | ||
| 		public static int PAGEBREAKONNOTES = 0X0080;
 | ||
| 		public static int ALIGNNULLTABWSECTHEAD = 0X0100;
 | ||
| 		public static int DONTUSESECTITLES = 0x0200;
 | ||
| 		public static int TEXTSUBFOLLOWSTEXTSTYLE = 0x0400;
 | ||
| 		public static int TRANSPROCTITLEINPAREN = 0x0800;
 | ||
| 		public static int HARDSPTRANPROCNUMB = 0x1000;
 | ||
| 		public static int TREATANDORASSEQUENTIAL = 0x2000;
 | ||
| 		public static int DONTSPLITSTEPINPRNTSTEP = 0x4000;
 | ||
| 		public static int LINEABOVEUNDERSECTION = 0x8000;
 | ||
| 
 | ||
| 		// XtraFlag[9] from 16-bit...
 | ||
| 
 | ||
| 		public static int PICAIGNOREFIVESIXTHS = 0x0004;
 | ||
| 		public static int SPACEFORNOSECNUMB = 0x0008;
 | ||
| 		public static int NONEDITABLESTEPS = 0x0010;
 | ||
| 		public static int BOXEDSUBSTEPS = 0x0020;
 | ||
| 		public static int DONTNUMBERHIGHLEVELSTEPS = 0x0040;
 | ||
| 		public static int NOSTEPNUMBERFORHIGHLEVELRNO = 0x0400;
 | ||
| 		public static int PROMPTFORCAUTINTYPE = 0x0800;
 | ||
| 		public static int CAUTION1SAMEROWASPARENT = 0x1000;
 | ||
| 		public static int WOLFCREEKBACKGROUNDFORMAT = 0x4000;
 | ||
| 		public static int ENHANCEDSTEPNUMFROMPREV = 0x8000;
 | ||
| 
 | ||
| 		// XtraFlag[10] from 16-bit...
 | ||
| 
 | ||
| 		public static int CONTROLUNDERLINESTYLE = 0x0001;
 | ||
| 		public static int MULTIPLECHANGEIDS = 0x0008;
 | ||
| 		public static int USEMULTILINESECTIONTITLE = 0x0010;
 | ||
| 		public static int PAGEBREAKONFIRSTBLANKLINE = 0x0040;
 | ||
| 		public static int DONTPRINTNOTITLE = 0x0080;
 | ||
| 		public static int NOTESTOFOOTNOTES = 0x0400;
 | ||
| 		public static int UNDSPECIALSTEPSFOLDOUT = 0x0800;
 | ||
| 		public static int PUTONPAGEBYITSELF = 0x4000;
 | ||
| 
 | ||
| 		// XtraFlag[11] from 16-bit...
 | ||
| 
 | ||
| 		public static int SECTITLECONTINUE = 0x0001;
 | ||
| 		public static int CANCELSECTITLESONE0 = 0x0002;
 | ||
| 		public static int METASECTENDMESSAGE = 0x0004;
 | ||
| 		public static int CANCELSECTITLESONE2 = 0x0040;
 | ||
| 		public static int COMPRESSHPSUPER = 0x2000;
 | ||
| 
 | ||
| 		// XtraFlag[12] from 16-bit...
 | ||
| 
 | ||
| 		public static int MATCHUPRNOCAUTNOTE = 0x0001;
 | ||
| 		public static int PAGINATEATHIGHESTPAGINLEVEL = 0x0008;
 | ||
| 		public static int USELONGPROCTITLES = 0x0100;
 | ||
| 		public static int SPECIALLANDSCAPEMODE = 0x1000;
 | ||
| 		public static int RNOINPAGELIST = 0x2000;
 | ||
| 		public static int STPCAUTNOTETABINPAGELIST = 0x4000;
 | ||
| 		public static int READONLYTYPEINCONTMSG = 0x8000;
 | ||
| 
 | ||
| 		// XtraFlag[13] from 16-bit...
 | ||
| 
 | ||
| 		public static int CENTERONELINEONLY = 0X0001;
 | ||
| 		public static int TIETABTOLEVEL = 0x0002;
 | ||
| 		public static int ACCESSORYDOCSINDUPLEX = 0x0008;
 | ||
| 		public static int FOLDOUTSINDUPLEX = 0x0010;
 | ||
| 		public static int USESTEXTRAREALVALUE = 0x0040;
 | ||
| 		public static int SUBTABLEGETSUP1LEVEL = 0x0080;
 | ||
| 		public static int DONTCOUNTFOLDOUTPAGES = 0x0200;
 | ||
| 		public static int SEARCHALLREPLACEWORDS = 0x1000;
 | ||
| 
 | ||
| 		// XtraFlag[14] from 16-bit...
 | ||
| 
 | ||
| 		public static int REMEMBERCAUTIONSANDNOTES = 0x0001;
 | ||
| 		public static int RTFADJUSTMENTS = 0x0008;
 | ||
| 		public static int CENTERONELINEADJUST = 0x0010;
 | ||
| 		public static int COUNTALLSUBLEVELS = 0x0020;
 | ||
| 		public static int DONTREPLACEWORDSINROS = 0x0080;
 | ||
| 		public static int HIGHLEVELRNOBEFOREAERSUBSTPS = 0x0100;
 | ||
| 		public static int UNDERLINEALLMETATITLES = 0x0200;
 | ||
| 		public static int DONTBREAKCAUTIONSORNOTES = 0x0400;
 | ||
| 		public static int BOLDONLYSECTIONZERO = 0x0800;
 | ||
| 		public static int DONTBREAKONRNO = 0x1000;
 | ||
| 		public static int RNOCHECKOFFSAMEASPARENT = 0x2000;
 | ||
| 		public static int USESTEPTYPEWIDTHOVERRRIDE = 0x4000;
 | ||
| 		public static int WOLFCREEKCKLFORMAT = 0x8000;
 | ||
| 
 | ||
| 		// XtraFlag[15] from 16-bit...
 | ||
| 
 | ||
| 		public static int DONTPAGINATEONFIRSTSUBSTEP2X = 0x0001;
 | ||
| 		public static int USESTEPTYPEWIDTHOVERRRIDEEDITPRINT = 0x0002;
 | ||
| 		public static int PARTIALSTEPCOMPRESSION = 0x0004;
 | ||
| 		public static int USESMARTTEMPLATE = 0x0008;
 | ||
| 		public static int CHECKOFFONHLSONLY = 0x0010;
 | ||
| 		public static int CAUTION2SAMEROWASPARENT = 0x0080;
 | ||
| 		public static int CENTERTEXTWITHINWIDTH = 0x0200;
 | ||
| 		public static int DONTBREAKEQUIPMENTLIST = 0x0400;
 | ||
| 		public static int ALWAYSTABCAUTION2 = 0x1000;
 | ||
| 		public static int VIRTUALDOTINHLSTAB = 0x2000;
 | ||
| 		public static int IMPERFECTSTRUCTUREPLUS4 = 0x4000;
 | ||
| 
 | ||
| 		// XtraFlag[16] from 16-bit...
 | ||
| 
 | ||
| 		public static int USERNOTYPEINACTABLE = 0x0002;
 | ||
| 		public static int ABSOLUTETRANSITIONUPDATE = 0x0004;
 | ||
| 		public static int SEPARATEBOXCAUTIONS = 0x0008;
 | ||
| 		public static int HLSTEXTINPAGELIST = 0x0020;
 | ||
| 		public static int LOWERCASESTEPINTRAN = 0x0080;
 | ||
| 		public static int CHANGEBARSONLINKEDTEXT = 0X1000;
 | ||
| 		public static int QUOTEDSUBSTEPS = 0x2000;
 | ||
| 
 | ||
| 		// XtraFlag[17] from 16-bit...
 | ||
| 
 | ||
| 		public static int OVERRIDEENHANCEDTABS = 0x0008;
 | ||
| 		public static int NONEWLINEAFTERRNO = 0x0020;
 | ||
| 		public static int DOSECTIONSEPARATORLINE = 0x0040;
 | ||
| 		public static int PARENSONEXTPAGENUMTRANS = 0x0080;
 | ||
| 		public static int ATLEASTTWODIGITSFORHLS = 0x0100;
 | ||
| 		public static int DONTBREAKOPTEQUIPMENTLIST = 0x0200;
 | ||
| 		public static int PAGELISTCHANGEIDSWITHCOMMAS = 0x0400;
 | ||
| 		public static int DONTSTARTLINEWITHDASH = 0x0800;
 | ||
| 		public static int NOBLANKLINEBEFORESUBSTEP = 0x1000;
 | ||
| 		public static int DONTBREAKCAUTIONSNOTESONSUBSTPS = 0x2000;
 | ||
| 		public static int DONTCONVERTCARETTODELTA = 0x4000;
 | ||
| 
 | ||
| 		// XtraFlag[18] (was VEAIRFLAG) from 16-bit...
 | ||
| 		public static int NORNO = 0x0002;
 | ||
| 		public static int ONLYSINGLECOLUMN = 0x0008;
 | ||
| 		public static int NULLBOX = 0x0010;
 | ||
| 		public static int XCHNGTRANSPFORHARD = 0x0020;
 | ||
| 		public static int WOLFCREEKCKLBACKGNDFORMAT = 0x0040;
 | ||
| 		#endregion
 | ||
| 		// use the following to define which step the AlternateStepType data is associated with.
 | ||
| 		// i.e. look in new.def to determine the #defines for the original step type associated
 | ||
| 		// with the name of the define. Note that all have been incremented by 1 since these are
 | ||
| 		// indices into the step list and we introduced 'Base' at index 0.
 | ||
| 		// (ALT_HIGH, ALT_CONTINUOUS, ALT_IMMEDIATE, ALT_LOSSOFAC, ALT_HIGH5)
 | ||
| 		private int[] altsteps = { 2, 9, 3, 18, 41 };   // before increment of 1: { 1, 8, 2, 17, 40 };
 | ||
| 
 | ||
| 		// use the following to define which step the AlternateSubType data is associated with.
 | ||
| 		// (see above) (ALT_STANDARD, ALT_AND, ALT_OR, ALT_EQUIPMENTLIST, ALT_EQUIPMENTWBLANK, ALT_EXPLICITAND
 | ||
| 		private int[] altsubsteps = {1, 4, 5, 11, 14, 19, // before increment of 1: {0, 3, 4, 10, 13, 18,
 | ||
|         // ALT_IMPLICITOR, ALT_PARAGRAPH, ALT_EQUIPMENTOPT, ALT_EQUIPMENTOPTWBLANK, ALT_TITLEWITHTEXTRIGHT
 | ||
|             35, 24, 30, 31, 42,				// before increment of 1: 34, 23, 29, 30, 41,
 | ||
|         // ALT_TITLEWITHTEXTBELOW, ALT_CONTACSEQUENTIAL, ALT_CONTACAND, ALT_CONTACOR, ALT_CONTACPARAGRAPH
 | ||
|             43, 44, 45, 46, 47};			// before increment of 1: 42, 43, 44, 45, 46};
 | ||
| 
 | ||
| 		private string[] StepTypes = {
 | ||
|             "Base", "Substep","High","Immediate","And","Or","Caution","Note","Table","Continuous",
 | ||
|             "AERTable","EquipmentList","Title","PageNumber","EquipmentWBlank","ProcNumber",
 | ||
|             "RevNumber","AccPages","LossOfAC","ExplicitAnd","Caution1","Caution2",
 | ||
|             "Note1","Note2","Paragraph","Default","Note3","Caution3","Note4","Caution4",
 | ||
|             "EquipmentOpt","EquipmentOptWBlank","Note5","BorderlessAERTable","BorderlessTable",
 | ||
|             "ImplicitOr","Figure","AERFigure","BorderlessFigure","BorderlessAERFigure",
 | ||
|             "RNOType","High5","TitleWithTextRight","TitleWithTextBelow",
 | ||
|             "ContAcSequential","ContAcAnd","ContAcOr","ContAcParagraph"
 | ||
|         };
 | ||
| 		private string[] ParentTypes = {
 | ||
|             "", "Base","Base","High","Substep","Substep","Base","Base","Base","High",
 | ||
|             "Table","Substep","Base","Title","EquipmentList","Title",
 | ||
|             "Title","Base","High","And","Caution","Caution",
 | ||
|             "Note","Note","Substep","Substep","Note","Caution","Note","Caution",
 | ||
|             "EquipmentList","EquipmentWBlank","Note","AERTable","Table",
 | ||
|             "Or","Base","Figure","Figure","AERFigure",
 | ||
|             "High","High","Title","Title",
 | ||
|             "Substep","And","Or","Paragraph"
 | ||
|         };
 | ||
| 		private string[] Inactive = {
 | ||
|             "False", "False","False","False","False","False","False","False","False","False",
 | ||
|             "False","False","False","True","False","True","True","True","False","False","False","False",
 | ||
|             "False","False","False","True","False","False","False","False","False","False","False","False","False",
 | ||
|             "False","False","False","False","False","False","False","False","False","False","False","False","False"
 | ||
|         };
 | ||
| 		private string[] Searchable = {
 | ||
| 			"False", "True", "True","True","True", "True", "True","True","True","True",
 | ||
| 			"True", "True", "False","False","True", "False","False","True","True","True","True","True",
 | ||
|             "True","True","True","False","True","True","True","True","True","True","True","True","True",
 | ||
|             "True","True","True","True","True","True","True","False","False","True","True","True","False"
 | ||
| 		};
 | ||
| 		private string[] TypeMenuItem = {
 | ||
| 			"Base", "Sequential Substep", "Standard High Level Step","Immediate Action Step","AND", "OR", "Caution","Note","Centered Table","Continuous Action Step",
 | ||
| 			"AER Table", "Equipment List", "Title","Page Number","Equipment Preceded by Blank Line", "Procedure Number",
 | ||
| 			"Rev Number","Acc Pages","Boxed High Level Step","Explicit AND","Caution 1","Caution 2",
 | ||
|             "Note 1","Note 2","Paragraph","Default","Note 3","Caution 3","Note 4","Caution 4",
 | ||
|             "Optional Equipment List","Optional Equipment with Blank Line","Note 5","AER Table Without Border","Centered Table Without Border",
 | ||
|             "Implicit OR","Centered Figure","AER Figure","Centered Figure Without Border","AER Figure Without Border",
 | ||
|             "RNO Type","Alternate High Level Step","Title With Text Right","Title With Text Below",
 | ||
|             "Continuous Action Sequential","Continuous Action AND","Continuous Action OR","Continuous Action Paragraph"
 | ||
| 		};
 | ||
| 		private string[] NoChangeTypeReason = {
 | ||
| 			"Base Type - No change at this level", null, null,null,null, null, null,null,null,null,
 | ||
| 			null, null, null,null,null, null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
 | ||
|             null,null,null,null,null,null,null,null,null,null,"RNO - No change allowed",null,null,null,
 | ||
|             null,null,null,null
 | ||
| 		};
 | ||
| 		private string[] RnoInMenu = {
 | ||
|             null, "True",null,null,"True","True",null,null,"True",null,"False","True",null,null,"True",null,
 | ||
|             null,null,null,"True",null,null,null,null,"True",null,null,null,null,null,"True","True",null,"False","True",
 | ||
|             "True","True","False","True","False","False",null,null,null,"True","True","True","True"
 | ||
|         };
 | ||
| 
 | ||
| 		/*
 | ||
| 		 * from the 16-bit code, the following step type attributes/strings were defined. This was found in \promnt\lib\edit\slectyp.c
 | ||
| 		 * High level types:
 | ||
| 		 * "High Level Step","Continuous Action Step","Immediate Action Step","Boxed High Level Step","Alternate High Level Step"
 | ||
| 		 * int far HighTypeValue[]={HIGH,CONTINUOUS,IMMEDIATE,LOSSOFAC,HIGH5};
 | ||
| 		 * Substep types:
 | ||
| 		 * char *SubType[NBRSUB]={
 | ||
| 		 * "Sequential",
 | ||
| 		 * "AND",
 | ||
| 		 * "OR",
 | ||
| 		 * "Equipment List",
 | ||
| 		 * "Equipment Preceded by Blank Line",
 | ||
| 		 * "Explicit AND",
 | ||
| 		 * "Implicit OR",
 | ||
| 		 * "Paragraph",
 | ||
| 		 * "Optional Equipment List",
 | ||
| 		 * "Optional Equipment with Blank Line",
 | ||
| 		 * "Continuous Action Sequential",
 | ||
| 		 * "Continuous Action AND",
 | ||
| 		 * "Continuous Action OR",
 | ||
| 		 * "Continuous Action Paragraph",
 | ||
| 		 * "Title With Text To The Right",
 | ||
| 		 * "Title With Text Placed Below"
 | ||
| 		 * int SubTypeValue[NBRSUB]={STANDARD,AND,OR,EQUIPMENTLIST,EQUIPMENTWBLANK,EXPLICITAND,IMPLICITOR,PARAGRAPH,
 | ||
| 		 *   EQUIPMENTOPT,EQUIPMENTOPTWBLANK,CONTACSEQUENTIAL,CONTACAND,CONTACOR,CONTACPARAGRAPH,TITLEWITHTEXTRIGHT,TITLEWITHTEXTBELOW
 | ||
| 		 * 
 | ||
| 		 */
 | ||
| 
 | ||
| 		private string[] WinColors = 
 | ||
|         {
 | ||
|             "black","blue","green","cyan","red","magenta",
 | ||
| 			"brown","lightgray","darkgray","ligthblue",
 | ||
| 			"lightgreen","lightcyan","lightred","lightmagenta",
 | ||
| 			"yellow","white"
 | ||
|         };
 | ||
| 		/*
 | ||
| 		 * The ?. characters have been added to the DefaultTransStr.  This string is used in the
 | ||
| 		 * code to determine the text that gets resolved for a transition.
 | ||
| 		 * 
 | ||
| 		 * ?. means the following (for !section transitions)
 | ||
| 		 *		for proc -	if current, don't put out text, if !current, put out text
 | ||
| 		 *		for sect -	if curproc: if cursect, don't put out text; if !cursect, put out text
 | ||
| 		 *					if !curproc: if default sect, don't put out text; if !default sect, put out text
 | ||
| 		 */
 | ||
| 		private string[] DefaultTransStr = 
 | ||
|         {
 | ||
|             "{Proc Num}, {Proc Title}, Step {First Step}",
 | ||
|             "{First Step}",
 | ||
|             "{First Step}, {.}, {.}, {.} and {Last Step}",
 | ||
|             "{First Step} thru {Last Step} of {?.Proc Num}, {?.Proc Title}, {?.Sect Hdr}",
 | ||
| 			// The section transition had <Section Title> for the following, but the 16-bit code
 | ||
| 			// put in the number & title, so 32-bit uses '{?.Sect Hdr}'.  This will need to be
 | ||
| 			// tested for formats that actually use <Section Title>: AEP, BGE, FNP, NSP. OHLP did not.
 | ||
|             "{?.Sect Hdr}, Step {First Step}",
 | ||
|             "{Proc Num}, {Proc Title}, {?.Sect Hdr}, Step {First Step}"
 | ||
|         };
 | ||
| 
 | ||
| 		#region SectionTransitionVariables
 | ||
| 		private string DefaultSectionTransStrTypeB = "{Sect Num}, {Sect Title}, {First Step}";
 | ||
| 		private string DefaultSectionTransStrTypeBNone = "{Sect Hdr}, Step {SectNum}{First Step}";  //original
 | ||
| 		private string[] DefaultSectionTransFormatStr = 
 | ||
| 		{
 | ||
| 			"{Proc Num}, {Proc Title}, Step {Sect Num}{First Step}",
 | ||
| 			"{Sect Num}{First Step}",
 | ||
| 			"{Sect Num}{First Step}, {.}, {.}, {.} and {Sect Num}{Last Step}",
 | ||
| 			"{Sect Num}{First Step} thru {Sect Num}{Last Step}",
 | ||
| 			"{Sect Num}, Step {?.Sect Num}{First Step}",
 | ||
| 			"{Sect Hdr}, Step {SectNum}{First Step}"
 | ||
| 		};
 | ||
| 		// made up the following strings so that the token processing for setting
 | ||
| 		// up the menu enums would work as expected.  These are only used in this migration
 | ||
| 		// code to set up the enums.  The above (DefaultSectionTransFormatStr) is used for
 | ||
| 		// the actual formatting of the strings in the new code.
 | ||
| 		private string[] DefaultSectionTransTokenStr = 
 | ||
| 		{
 | ||
| 			"{Proc Num}, {Proc Title}, Step {First Step}",
 | ||
| 			"{First Step} ( Within the current section )",
 | ||
| 			"{First Step}, {.}, {.}, {.} and {Last Step}",
 | ||
| 			"{Sect Num}{First Step} thru {Sect Num}.{Last Step}",
 | ||
| 			"{Sect Num}{First Step} ( To a different section )",
 | ||
| 			"{Sect Num}{First Step}, {Sect Title} ( To a different section )"
 | ||
| 		};
 | ||
| 
 | ||
| 		#endregion
 | ||
| 
 | ||
| 		private Int16[] Tabindx;
 | ||
| 		private BinaryReader brFmt;
 | ||
| 		private string fmtName;
 | ||
| 
 | ||
| 		private static Dictionary<int, int> dicChar;
 | ||
| 		#endregion
 | ||
| 		public FormatData BaseFormat;
 | ||
| 		public static List<Dictionary<string, Step>> StepParentList = new List<Dictionary<string,Step>>();
 | ||
| 		public static List<Dictionary<string, Step>> StepList = new List<Dictionary<string, Step>>();
 | ||
| 		public bool HasBase;
 | ||
| 		public FormatData MyFormat;
 | ||
| 		public string MyPath;
 | ||
| 		public FmtFileToXml(FmtFileToXml gendata, string alias, string nm, string path)
 | ||
| 		{
 | ||
| 			//DateTime tStart = DateTime.Now;
 | ||
| 			MyPath = path;
 | ||
| 			if (gendata == null)
 | ||
| 				HasBase = false;
 | ||
| 			else
 | ||
| 			{
 | ||
| 				HasBase = true;
 | ||
| 				BaseFormat = gendata.MyFormat;
 | ||
| 				
 | ||
| 			}
 | ||
| 			BuildDictionaryText();
 | ||
| 			fmtName = alias;
 | ||
| 			//if (fmtName.ToUpper() != "CPLS" && fmtName.ToUpper() != "BASE") return;
 | ||
| 			//if (fmtName.ToUpper() != "OHLP" && fmtName.ToUpper() != "BASE" && fmtName.ToUpper() != "WCN2") return;
 | ||
| 			//if (fmtName.ToUpper() != "WCNCKL" && fmtName.ToUpper() != "BASE") return;
 | ||
| 			try
 | ||
| 			{
 | ||
| 				LoadFormatFile(nm + ".fmt", ref SubXtraFlags);
 | ||
| 			}
 | ||
| 			catch (Exception ex)
 | ||
| 			{
 | ||
| 				MessageBox.Show("Format name FAILED = " + nm, ex.Message);
 | ||
| 			}
 | ||
| 			//Console.WriteLine(" {0:0.000} seconds", TimeSpan.FromTicks(DateTime.Now.Ticks - tStart.Ticks).TotalSeconds);
 | ||
| 		}
 | ||
| 		#region GetBinaryReaderData
 | ||
| 		private byte[] GetByteArray(BinaryReader br, int len)
 | ||
| 		{
 | ||
| 			byte[] input; // = new byte[len + 1];
 | ||
| 			input = br.ReadBytes(len);
 | ||
| 			return input;
 | ||
| 		}
 | ||
| 
 | ||
| 		public static Regex Reg2;
 | ||
| 		public static void BuildDictionaryText()
 | ||
| 		{
 | ||
| 			#region ExtraUnicodeConvert
 | ||
| 			dicChar = new Dictionary<int, int>();
 | ||
| 			// note that the following characters needed adjusted, i.e. the
 | ||
| 			// default conversion to unicode did not result in the desired letter,
 | ||
| 			// so an extra conversion was needed.
 | ||
| 			dicChar[966] = 216;         // dist zero
 | ||
| 			dicChar[201] = 274;         // capital E with macron (line above)
 | ||
| 			dicChar[127] = 916;         // delta
 | ||
| 			dicChar[964] = 947;         // little gamma
 | ||
| 			dicChar[920] = 952;         // little theta
 | ||
| 			dicChar[915] = 961;         // little rho
 | ||
| 			dicChar[191] = 964;         // little tau
 | ||
| 			dicChar[8801] = 8773;       // approx. equal
 | ||
| 			dicChar[8734] = 8857;       // circle w/ dot
 | ||
| 			dicChar[7] = 9679;          // bullet
 | ||
| 			dicChar[8976] = 9830;       // diamond
 | ||
| 			// dicChar[15] = 167;          // grave 15=F; 167=xA7
 | ||
| 			#endregion
 | ||
| 			#region DefinedLineDrawChars
 | ||
| 			// do all of the box/line draw characters to unicode. These were part
 | ||
| 			// of the Volian Line Draw font.
 | ||
| 			dicChar[179] = 9474;    // b3
 | ||
| 			dicChar[180] = 9508;    // b4
 | ||
| 			dicChar[181] = 9569;
 | ||
| 			dicChar[182] = 9570;
 | ||
| 			dicChar[183] = 9558;
 | ||
| 			dicChar[184] = 9557;
 | ||
| 			dicChar[185] = 9571;    // b9
 | ||
| 			dicChar[186] = 9553;    // ba
 | ||
| 			dicChar[187] = 9559;
 | ||
| 			dicChar[188] = 9565;
 | ||
| 			dicChar[189] = 9564;
 | ||
| 			dicChar[190] = 9563;
 | ||
| 			dicChar[191] = 9488;
 | ||
| 			dicChar[192] = 9492;    // c0
 | ||
| 			dicChar[193] = 9524;
 | ||
| 			dicChar[194] = 9516;
 | ||
| 			dicChar[195] = 9500;
 | ||
| 			dicChar[196] = 9472;
 | ||
| 			dicChar[197] = 9532;    // C5
 | ||
| 			dicChar[198] = 9566;
 | ||
| 			dicChar[199] = 9567;
 | ||
| 			dicChar[200] = 9562;
 | ||
| 			dicChar[201] = 9556;
 | ||
| 			dicChar[202] = 9577;    // ca
 | ||
| 			dicChar[203] = 9574;
 | ||
| 			dicChar[204] = 9568;
 | ||
| 			dicChar[205] = 9552;
 | ||
| 			dicChar[206] = 9580;
 | ||
| 			dicChar[207] = 9575;
 | ||
| 			dicChar[208] = 9576;    // d0
 | ||
| 			dicChar[209] = 9572;
 | ||
| 			dicChar[210] = 9573;
 | ||
| 			dicChar[211] = 9561;
 | ||
| 			dicChar[212] = 9560;
 | ||
| 			dicChar[213] = 9554;    // d5
 | ||
| 			dicChar[214] = 9555;
 | ||
| 			dicChar[215] = 9579;
 | ||
| 			dicChar[216] = 9578;
 | ||
| 			dicChar[217] = 9496;
 | ||
| 			dicChar[218] = 9484;    // da
 | ||
| 			dicChar[219] = 9608;
 | ||
| 			dicChar[220] = 9604;
 | ||
| 			dicChar[221] = 9612;
 | ||
| 			dicChar[222] = 9616;
 | ||
| 			dicChar[223] = 9600;
 | ||
| 			#endregion
 | ||
| 			#region StyleTokens
 | ||
| 
 | ||
| 			/*
 | ||
|              * char AttrOnList[7] = {0xd3,0xd5,0xae,0xb2,SUBSCRIPT_ON,SUPERSCRIPT_ON,0};
 | ||
| 		char AttrOffList[7] = {0xd4,0xd6,0xaf,0xdd,SUBSCRIPT_OFF,SUPERSCRIPT_OFF,0};
 | ||
| 		int AttrList[7] =	{BUNDERLINE_WORD, BOLD_WORD, UNDERLINE_WORD,
 | ||
| 									ITALICS_WORD, SUBSCRIPT_WORD, SUPERSCRIPT_WORD,0};
 | ||
|              
 | ||
|             dicChar[13] = 213;          //bold on           13=D    -> 213=xD5
 | ||
|                                         //bold off          ??      -> 214=xD6
 | ||
|             dicChar[16] = 244;          //underline on      16=x10  -> 244=xF4
 | ||
|                                         //underline off     ??      -> 246=xF6
 | ||
|                                         //bold&uline on     ??      -> 211=xD3
 | ||
|                                         //bold/uline off    ??      -> 212=xD4
 | ||
|             dicChar[18] = 198;          //superscript on    18=x12  -> 108=xC6
 | ||
|                                         //superscript off   ??      -> 109=xc7
 | ||
|             dicChar[19] = 209;          //subscript on      19=x13  -> 209=D9
 | ||
|                                         //subscript off     ??      -> 166->xA6
 | ||
|             
 | ||
| 
 | ||
|             // see exe\edit\vestdstp.c for some of these....
 | ||
|             dicChar[1] = 161;           //Bold word or toggle
 | ||
|             dicChar[2] = 162;           //Underline word
 | ||
|             // not used except in TRANSITIONS dicChar[3] = 164;           //Bold/Uline word
 | ||
|             // not used except in TRANSITIONS dicChar[4] = 165;           //Italics word
 | ||
|             dicChar[5] = 111;           //Bold/Italics word
 | ||
|             dicChar[6] = 111;           //Bold/Uline word
 | ||
|             //dicChar[7] = 111;           //Bold/Uline/Italics word
 | ||
|             dicChar[8] = 111;           //super word
 | ||
|             dicChar[9] = 111;
 | ||
|             dicChar[10] = 111;
 | ||
|             dicChar[11] = 111;
 | ||
|             dicChar[12] = 111;
 | ||
|             dicChar[14] = 111;
 | ||
|             // ... 9-15
 | ||
|             dicChar[16] = 111;          //subscript word
 | ||
|             dicChar[17] = 111;
 | ||
|             // ... 17-31
 | ||
|             dicChar[20] = 162;
 | ||
|             dicChar[21] = 162;
 | ||
|             dicChar[22] = 162;          // toggle underline
 | ||
|             dicChar[25] = 163;          //subscript on 25=x19; 163=xA3
 | ||
|             dicChar[24] = 122;          //subscript off  (0x18)
 | ||
|             dicChar[23] = 123;          // underline next word
 | ||
|             dicChar[31] = 163;
 | ||
|             dicChar[26] = 163;
 | ||
|             dicChar[27] = 163;
 | ||
|             dicChar[28] = 163;
 | ||
|             dicChar[29] = 163;
 | ||
|             dicChar[30] = 163;
 | ||
|              * */
 | ||
| 			#endregion
 | ||
| 
 | ||
| 			char[] creg = new char[dicChar.Count];
 | ||
| 			int i = 0;
 | ||
| 			foreach (int ic in dicChar.Keys)
 | ||
| 			{
 | ||
| 				creg[i] = (char)ic;
 | ||
| 				i++;
 | ||
| 			}
 | ||
| 			Reg2 = new Regex("[" + new string(creg) + "]");
 | ||
| 		}
 | ||
| 		public static string ReplaceChars(Match m)
 | ||
| 		{
 | ||
| 			char[] cs = m.Value.ToCharArray();
 | ||
| 			for (int i = 0; i < cs.Length; i++)
 | ||
| 			{
 | ||
| 				if (dicChar.ContainsKey((int)(cs[i])))
 | ||
| 				{
 | ||
| 					int iKey = (int)cs[i];
 | ||
| 					int iValue = dicChar[iKey];
 | ||
| 					//if(iKey<32 && iKey!=7)Console.WriteLine(" {0} {1} {2} {3}", iKey, (char)iKey, iValue, (char)iValue);
 | ||
| 					cs[i] = (char)iValue;
 | ||
| 				}
 | ||
| 			}
 | ||
| 			return new string(cs);
 | ||
| 		}
 | ||
| 		public static string ConvertText(string s1)
 | ||
| 		{
 | ||
| 			string s2 = Reg2.Replace(s1, new MatchEvaluator(ReplaceChars));
 | ||
| 			return s2;
 | ||
| 		}
 | ||
| 		private string GetStringFromByteNoConvert(Byte[] barray, int offset)
 | ||
| 		{
 | ||
| 			offset--;
 | ||
| 			StringBuilder inpstr = new StringBuilder();
 | ||
| 			byte input = 0;
 | ||
| 			int cnt = 0;
 | ||
| 			bool stillread = true;
 | ||
| 			do
 | ||
| 			{
 | ||
| 				input = barray[offset++];
 | ||
| 				if (input == 0) stillread = false;
 | ||
| 				inpstr.Append(Convert.ToChar(input));
 | ||
| 				cnt++;
 | ||
| 			} while (stillread);
 | ||
| 
 | ||
| 			string retstr = inpstr.ToString();
 | ||
| 			retstr = retstr.Replace('<', '{');
 | ||
| 			retstr = retstr.Replace('>', '}');
 | ||
| 			//retstr = ConvertText(retstr);
 | ||
| 			if (retstr.Substring(retstr.Length - 1, 1) == "\0") return retstr.Substring(0, retstr.Length - 1);
 | ||
| 			return retstr;
 | ||
| 		}
 | ||
| 		private string GetStringFromByte(Byte[] barray, int offset)
 | ||
| 		{
 | ||
| 			offset--;
 | ||
| 			StringBuilder inpstr = new StringBuilder();
 | ||
| 			byte input = 0;
 | ||
| 			int cnt = 0;
 | ||
| 			bool stillread = true;
 | ||
| 			do
 | ||
| 			{
 | ||
| 				input = barray[offset++];
 | ||
| 				if (input == 0) stillread = false;
 | ||
| 				inpstr.Append(Convert.ToChar(input));
 | ||
| 				cnt++;
 | ||
| 			} while (stillread);
 | ||
| 
 | ||
| 			string retstr = inpstr.ToString();
 | ||
| 			retstr = retstr.Replace('<', '{');
 | ||
| 			retstr = retstr.Replace('>', '}');
 | ||
| 			retstr = ConvertText(retstr);
 | ||
| 			if (retstr.Substring(retstr.Length - 1, 1) == "\0") return retstr.Substring(0, retstr.Length - 1);
 | ||
| 			return retstr;
 | ||
| 		}
 | ||
| 		static public string GetStringUntilNull(BinaryReader br)
 | ||
| 		{
 | ||
| 			StringBuilder inpstr = new StringBuilder();
 | ||
| 			byte input = 0;
 | ||
| 			int cnt = 0;
 | ||
| 			bool stillread = true;
 | ||
| 			do
 | ||
| 			{
 | ||
| 				try
 | ||
| 				{
 | ||
| 					input = br.ReadByte();
 | ||
| 					if (input == 0) stillread = false;
 | ||
| 					inpstr.Append(Convert.ToChar(input));
 | ||
| 				}
 | ||
| 				catch (System.IO.EndOfStreamException)
 | ||
| 				{
 | ||
| 					stillread = false;
 | ||
| 				}
 | ||
| 				cnt++;
 | ||
| 			} while (stillread);
 | ||
| 
 | ||
| 			string retstr = inpstr.ToString();
 | ||
| 			retstr = retstr.Replace('<', '{');
 | ||
| 			retstr = retstr.Replace('>', '}');
 | ||
| 			if (retstr.Substring(retstr.Length - 1, 1) == "\0") return retstr.Substring(0, retstr.Length - 1);
 | ||
| 			return retstr;
 | ||
| 		}
 | ||
| 		private string GetString(BinaryReader br, int len)
 | ||
| 		{
 | ||
| 			StringBuilder inpstr = new StringBuilder();
 | ||
| 			byte input = 0;
 | ||
| 			int cnt = 0;
 | ||
| 			do
 | ||
| 			{
 | ||
| 				try
 | ||
| 				{
 | ||
| 					input = br.ReadByte();
 | ||
| 					inpstr.Append(Convert.ToChar(input));
 | ||
| 				}
 | ||
| 				catch (System.IO.EndOfStreamException)
 | ||
| 				{
 | ||
| 					input = 0;
 | ||
| 					while (cnt < len)
 | ||
| 					{
 | ||
| 						inpstr.Append(Convert.ToChar(input));
 | ||
| 						cnt++;
 | ||
| 					}
 | ||
| 				}
 | ||
| 				cnt++;
 | ||
| 			} while (cnt < len);
 | ||
| 
 | ||
| 			string retstr = inpstr.ToString();
 | ||
| 			retstr = retstr.Replace('<', '{');
 | ||
| 			retstr = retstr.Replace('>', '}');
 | ||
| 			if (retstr.Substring(retstr.Length - 1, 1) == "\0") return retstr.Substring(0, retstr.Length - 1);
 | ||
| 			return retstr;
 | ||
| 		}
 | ||
| 		#endregion
 | ||
| 		private VE_Font LoadVE_Font()
 | ||
| 		{
 | ||
| 			UInt32 ui = brFmt.ReadUInt32();
 | ||
| 			//if (ui > 0) - Always set the font, even if it is 0 (default)
 | ||
| 			//{
 | ||
| 			VE_Font retval = new VE_Font(ui);
 | ||
| 			return retval;
 | ||
| 			//}
 | ||
| 			//return null;
 | ||
| 		}
 | ||
| 		private VE_Font LoadVE_FontByte()
 | ||
| 		{
 | ||
| 			byte bt = brFmt.ReadByte();
 | ||
| 			if (bt > 0)
 | ||
| 			{
 | ||
| 				VE_Font retval = new VE_Font(Convert.ToUInt32(bt));
 | ||
| 				return retval;
 | ||
| 			}
 | ||
| 			return null;
 | ||
| 		}
 | ||
| 		#region XtraFlags
 | ||
| 		private void AddFlags(ref XtraFlgs XtraFlags, int i, Int16 flg)
 | ||
| 		{
 | ||
| 			if (i == 0)
 | ||
| 			{
 | ||
| 				if ((flg & DOUBLERNOSPACE) > 0) XtraFlags.DoubleRNOSpace = true.ToString();
 | ||
| 				if ((flg & MIXCAUTIONSANDNOTES) > 0) XtraFlags.MixCautionsAndNotes = true.ToString();
 | ||
| 				if ((flg & ALWAYSUSEEXTRALINES) > 0) XtraFlags.AlwaysUseExtralines = true.ToString();
 | ||
| 				if ((flg & ALWAYSTABNOTE) > 0) XtraFlags.AlwaysTabNote = true.ToString();
 | ||
| 				if ((flg & ALWAYSTABCAUTION) > 0) XtraFlags.AlwaysTabCaution = true.ToString();
 | ||
| 				if ((flg & SPECIALPAGEBREAKFLAG) > 0) XtraFlags.SpecialPageBreakFlag = true.ToString();
 | ||
| 				if ((flg & DONTPAGINATEONFIRSTSUBSTEP) > 0) XtraFlags.DontPaginateOnFirstSubStep = true.ToString();
 | ||
| 				if ((flg & IMPERFECTSTRUCTURE) > 0) XtraFlags.ImperfectStructure = true.ToString();
 | ||
| 				if ((flg & DONTUSEHALFLINES) > 0) XtraFlags.DontUseHalfLines = true.ToString();
 | ||
| 				if ((flg & FORTRANFORMATNUMBERS) > 0) XtraFlags.FortranFormatNumbers = true.ToString();
 | ||
| 				if ((flg & ALLUNITS) > 0) XtraFlags.AllUnits = true.ToString();
 | ||
| 				if ((flg & CAPSTRANSITIONS) > 0) XtraFlags.CapsTransitions = true.ToString();
 | ||
| 			}
 | ||
| 			else if (i == 1)
 | ||
| 			{
 | ||
| 				if ((flg & CAPTRANSTEP) > 0) XtraFlags.CapTranStep = true.ToString();
 | ||
| 				if ((flg & TSTEPNOFLAG) > 0) XtraFlags.TSTepNoFlag = true.ToString();
 | ||
| 				if ((flg & LOWERCASETRANNUMBER) > 0) XtraFlags.LowerCaseTranNumber = true.ToString();
 | ||
| 				if ((flg & CONDENSEDCHANGEBAR) > 0) XtraFlags.CondensedChangeBar = true.ToString();
 | ||
| 				if ((flg & DOREVDATE) > 0) XtraFlags.DoRevDate = true.ToString();
 | ||
| 				if ((flg & SEPARATEBOX) > 0) XtraFlags.SeparateBox = true.ToString();
 | ||
| 				if ((flg & NUMBERHIGHLEVELRNO) > 0) XtraFlags.NumberHighLevelRNO = true.ToString();
 | ||
| 				if ((flg & ALTERNATEFOLDOUTPAGES) > 0) XtraFlags.AlternateFoldoutPages = true.ToString();
 | ||
| 				if ((flg & DONTTRYTOFILLHALFOFPAGE) > 0) XtraFlags.DontTryToFillHalfOfPage = true.ToString();
 | ||
| 			}
 | ||
| 			else if (i == 2)
 | ||
| 			{
 | ||
| 				if ((flg & DONTCAPITALIZETITLE) > 0) XtraFlags.DontCapitalizeTitle = true.ToString();
 | ||
| 				if ((flg & NOSPACEDOUBLERNO) > 0) XtraFlags.NoSpaceDoubleRNO = true.ToString();
 | ||
| 				if ((flg & DONTOFFSETTAB) > 0) XtraFlags.DontOffsetTab = true.ToString();
 | ||
| 				if ((flg & UPSETPNTAFTRDASH) > 0) XtraFlags.UpSetpntAftrDash = true.ToString();
 | ||
| 				if ((flg & LOWERCASEREVNUM) > 0) XtraFlags.LowerCaseRevnum = true.ToString();
 | ||
| 				if ((flg & DONOTCOMPRESSSTEPS) > 0) XtraFlags.DoNotCompressSteps = true.ToString();
 | ||
| 				if ((flg & REDUCELINEAFTERNOTEANDCAUT) > 0) XtraFlags.ReduceLineAfterNoteAndCaut = true.ToString();
 | ||
| 				if ((flg & RNOSAMELEVEL) > 0) XtraFlags.RNOSameLevel = true.ToString();
 | ||
| 				if ((flg & BOLDHIGHLEVELRNO) > 0) XtraFlags.BoldHighLevelRNO = true.ToString();
 | ||
| 				if ((flg & ONELINEBEFORENOTECAUTIONTAB) > 0) XtraFlags.OneLineBeforeNoteCautionTab = true.ToString();
 | ||
| 				if ((flg & CONTINUOUSCHANGEBARS) > 0) XtraFlags.ContinuousChangeBars = true.ToString();
 | ||
| 			}
 | ||
| 			else if (i == 3)
 | ||
| 			{
 | ||
| 				if ((flg & DONTBOXAC) > 0) XtraFlags.DontBoxAC = true.ToString();
 | ||
| 				if ((flg & USETOPCONTINUEMESSAGEATEND) > 0) XtraFlags.UseTopContinueMessageAtEnd = true.ToString();
 | ||
| 				if ((flg & UPCASETRANAND) > 0) XtraFlags.UpcaseTranAnd = true.ToString();
 | ||
| 				if ((flg & UPCASEALLSETPOINTUNITS) > 0) XtraFlags.UpcaseAllSetpointUnits = true.ToString();
 | ||
| 			}
 | ||
| 			else if (i == 4)
 | ||
| 			{
 | ||
| 				if ((flg & DEV_FORMAT) > 0) XtraFlags.Dev_Format = true.ToString();
 | ||
| 				if ((flg & DONTDOSTEXTRAATTOP) > 0) XtraFlags.DontDoSTExtraAtTop = true.ToString();
 | ||
| 				if ((flg & XLINES_STEPFIX) > 0) XtraFlags.Xlines_StepFix = true.ToString();
 | ||
| 				if ((flg & REBOXCAUTNOTE) > 0) XtraFlags.ReBoxCautNote = true.ToString();
 | ||
| 				if ((flg & IMMSTEPSPCHDR) > 0) XtraFlags.IMMStepSpcHdr = true.ToString();
 | ||
| 				if ((flg & FLOATINGCONTINUEMESSAGE) > 0) XtraFlags.FloatingContinueMessage = true.ToString();
 | ||
| 				if ((flg & ABSOLUTEFIXEDCHANGECOLUMN) > 0) XtraFlags.AbsoluteFixedChangeColumn = true.ToString();
 | ||
| 				if ((flg & LJBORDERLESSTABLE) > 0) XtraFlags.LJBorderlessTable = true.ToString();
 | ||
| 				if ((flg & SUPPRESSANDINTRAN) > 0) XtraFlags.SuppressAndInTran = true.ToString();
 | ||
| 				if ((flg & CAPHIGHSETPNT) > 0) XtraFlags.CapHighSetpnt = true.ToString();
 | ||
| 				if ((flg & CAPSPIFLASTLOWER) > 0) XtraFlags.CapsPIFLastLower = true.ToString();
 | ||
| 				if ((flg & CAPFIRSTLETTERINHIGHSP) > 0) XtraFlags.CapFirstLetterInHighSP = true.ToString();
 | ||
| 			}
 | ||
| 			else if (i == 5)
 | ||
| 			{
 | ||
| 				if ((flg & ALTERNATEFLOATINGFOLDOUT) > 0) XtraFlags.AlternateFloatingFoldout = true.ToString();
 | ||
| 				if ((flg & WRAPSAMEASEDIT) > 0) XtraFlags.WrapSameAsEdit = true.ToString();
 | ||
| 				if ((flg & KEEPSTEPSONPAGE) > 0) XtraFlags.KeepStepsOnPage = true.ToString();
 | ||
| 				if ((flg & SPECIFIEDSUBSTEPSONLY) > 0) XtraFlags.SpecifiedSubstepsOnly = true.ToString();
 | ||
| 				if ((flg & THREEBLANKSABOVENOTESCAUTIONS) > 0) XtraFlags.ThreeBlanksAboveNotesCautions = true.ToString();
 | ||
| 				if ((flg & IMPERFECTSUBSTEP) > 0) XtraFlags.ImperfectSubstep = true.ToString();
 | ||
| 				if ((flg & DONTBREAKONSECTIONS) > 0) XtraFlags.DontBreakOnSections = true.ToString();
 | ||
| 				if ((flg & NOSTEPNUMIFONLYONESTEP) > 0) XtraFlags.NoStepNumIfOnlyOneStep = true.ToString();
 | ||
| 				if ((flg & SHOWSECTIONTITLES) > 0) XtraFlags.ShowSectionTitles = true.ToString();
 | ||
| 				if ((flg & LJTABS) > 0) XtraFlags.LJTabs = true.ToString();
 | ||
| 				if ((flg & DONTNUMBERRNOSUBS) > 0) XtraFlags.DontNumberRNOSubs = true.ToString();
 | ||
| 				if ((flg & DROPCHECKOFF) > 0) XtraFlags.DropCheckOff = true.ToString();
 | ||
| 				if ((flg & NOCHECKOFFSINRNO) > 0) XtraFlags.NoCheckOffsInRNO = true.ToString();
 | ||
| 			}
 | ||
| 			else if (i == 6)
 | ||
| 			{
 | ||
| 				if ((flg & CHGBARMESSAGEFROMEDIT) > 0) XtraFlags.ChgBarMessageFromEdit = true.ToString();
 | ||
| 				if ((flg & CHANGEBARTORNOSEP) > 0) XtraFlags.ChangeBarToRNOSep = true.ToString();
 | ||
| 				if ((flg & CHGSTYLEPERSECTION) > 0) XtraFlags.ChangeStyleForEverySection = true.ToString();
 | ||
| 				if ((flg & SECTIONLEVELFOLDOUTS) > 0) XtraFlags.SectionLevelFoldouts = true.ToString();
 | ||
| 				if ((flg & BOXCONTACTIONS) > 0) XtraFlags.BoxContinousActions = true.ToString();
 | ||
| 				if ((flg & DOSECTIONTRANS) > 0) XtraFlags.DoSectionTrans = true.ToString();
 | ||
| 				if ((flg & UPSPIFPREVUPPER) > 0) XtraFlags.UpSpIfPrevUpper = true.ToString();
 | ||
| 				if ((flg & CONTINUESECTIONHEADER) > 0) XtraFlags.ContinueSectionHeader = true.ToString();
 | ||
| 				if ((flg & GLOBALPROCINFO) > 0) XtraFlags.GlobalProcInfo = true.ToString();
 | ||
| 				if ((flg & COMPRESSHPSUB) > 0) XtraFlags.CompressHPSub = true.ToString();
 | ||
| 				if ((flg & BULLETONCONTINUOUS) > 0) XtraFlags.BulletOnContinuous = true.ToString();
 | ||
| 				if ((flg & CANCELSECTITLESONS2) > 0) XtraFlags.CancelSecTitlesOnS2 = true.ToString();
 | ||
| 				if ((flg & NOENDFORSINGLE) > 0) XtraFlags.NoEndForSingle = true.ToString();
 | ||
| 				if ((flg & USEMETASECTIONS) > 0) XtraFlags.UseMetaSections = true.ToString();
 | ||
| 			}
 | ||
| 			else if (i == 7)
 | ||
| 			{
 | ||
| 				if ((flg & RNOCONTINUEONLY) > 0) XtraFlags.RNOContinueOnly = true.ToString();
 | ||
| 				if ((flg & CAP1STCHARTRANS) > 0) XtraFlags.Cap1stCharTrans = true.ToString();
 | ||
| 				if ((flg & DONTPAGINATEONFIRSTSUBSTEP3X) > 0) XtraFlags.DontPaginateOnFirstSubstep3X = true.ToString();
 | ||
| 				if ((flg & RNOSEPAFTERAER) > 0) XtraFlags.RNOSepAfterAER = true.ToString();
 | ||
| 				if ((flg & REVDATEWITHFORWARDSLASH) > 0) XtraFlags.RevDateWithForwardSlash = true.ToString();
 | ||
| 				if ((flg & USEALTERNATESTEPBOX) > 0) XtraFlags.UseAlternateStepBox = true.ToString();
 | ||
| 				if ((flg & CANCELSECTITLESONS1) > 0) XtraFlags.CancelSecTitlesOnS1 = true.ToString();
 | ||
| 				if ((flg & SPECIALSTEPSFOLDOUT) > 0) XtraFlags.SpecialStepsFoldout = true.ToString();
 | ||
| 				if ((flg & UNDERLINEAFTERDASHSPACE) > 0) XtraFlags.UnderlineAfterDashSpace = true.ToString();
 | ||
| 				if ((flg & NOSPACEINNOTEORCAUTION) > 0) XtraFlags.NoSpaceInNoteOrCaution = true.ToString();
 | ||
| 				if ((flg & USEXTRAREVNUMBER) > 0) XtraFlags.UseXtraRevNumber = true.ToString();
 | ||
| 				if ((flg & UNDERLINESETPOINTS) > 0) XtraFlags.UnderlineSetpoints = true.ToString();
 | ||
| 				if ((flg & DOSECTIONTRANSTYPEB) > 0) XtraFlags.DoSectionTransTypeB = true.ToString();
 | ||
| 				if ((flg & PAGINATEONLOWERSTEPLEVEL) > 0) XtraFlags.PaginateOnLowerStepLevel = true.ToString();
 | ||
| 				if ((flg & USETRANSITIONMODIFIER) > 0) XtraFlags.UseTransitionModifier = true.ToString();
 | ||
| 			}
 | ||
| 			else if (i == 8)
 | ||
| 			{
 | ||
| 				if ((flg & CUSTOMSPACING) > 0) XtraFlags.CustomSpacing = true.ToString();
 | ||
| 				if ((flg & ENHANCEDSHORTFORMDEV) > 0) XtraFlags.EnhancedShortFormDev = true.ToString();
 | ||
| 				if ((flg & PAGEBREAKONHIGHLEVELSTEP) > 0) XtraFlags.PageBreakOnHighLevelStep = true.ToString();
 | ||
| 				if ((flg & PAGEBREAKONCAUTIONS) > 0) XtraFlags.PageBreakOnCautions = true.ToString();
 | ||
| 				if ((flg & PAGEBREAKONNOTES) > 0) XtraFlags.PageBreakOnNotes = true.ToString();
 | ||
| 				if ((flg & ALIGNNULLTABWSECTHEAD) > 0) XtraFlags.AlignNullTabWSectHead = true.ToString();
 | ||
| 				if ((flg & DONTUSESECTITLES) > 0) XtraFlags.DontUseSecTitles = true.ToString();
 | ||
| 				if ((flg & TEXTSUBFOLLOWSTEXTSTYLE) > 0) XtraFlags.TextSubFollowsTextStyle = true.ToString();
 | ||
| 				if ((flg & TRANSPROCTITLEINPAREN) > 0) XtraFlags.TranProcTitleInParen = true.ToString();
 | ||
| 				if ((flg & HARDSPTRANPROCNUMB) > 0) XtraFlags.HardSpTranProcNumb = true.ToString();
 | ||
| 				if ((flg & TREATANDORASSEQUENTIAL) > 0) XtraFlags.TreatAndOrAsSequential = true.ToString();
 | ||
| 				if ((flg & DONTSPLITSTEPINPRNTSTEP) > 0) XtraFlags.DontSplitStepInPrntStep = true.ToString();
 | ||
| 				if ((flg & LINEABOVEUNDERSECTION) > 0) XtraFlags.LineAboveUnderSection = true.ToString();
 | ||
| 			}
 | ||
| 			else if (i == 9)
 | ||
| 			{
 | ||
| 				if ((flg & PICAIGNOREFIVESIXTHS) > 0) XtraFlags.PicaIgnoreFiveSixths = true.ToString();
 | ||
| 				if ((flg & SPACEFORNOSECNUMB) > 0) XtraFlags.SpaceFoRNOSecNumb = true.ToString();
 | ||
| 				if ((flg & NONEDITABLESTEPS) > 0) XtraFlags.NonEditableSteps = true.ToString();
 | ||
| 				if ((flg & BOXEDSUBSTEPS) > 0) XtraFlags.BoxedSubsteps = true.ToString();
 | ||
| 				if ((flg & DONTNUMBERHIGHLEVELSTEPS) > 0) XtraFlags.DontNumberHighLevelSteps = true.ToString();
 | ||
| 				if ((flg & NOSTEPNUMBERFORHIGHLEVELRNO) > 0) XtraFlags.NoStepNumberForHighLevelRNO = true.ToString();
 | ||
| 				if ((flg & PROMPTFORCAUTINTYPE) > 0) XtraFlags.PromptForCautinType = true.ToString();
 | ||
| 				if ((flg & CAUTION1SAMEROWASPARENT) > 0) XtraFlags.Caution1SameRowAsParent = true.ToString();
 | ||
| 				if ((flg & WOLFCREEKBACKGROUNDFORMAT) > 0) XtraFlags.WolfCreekBackgroundFormat = true.ToString();
 | ||
| 				if ((flg & ENHANCEDSTEPNUMFROMPREV) > 0) XtraFlags.EnhancedStepNumFromPrev = true.ToString();
 | ||
| 			}
 | ||
| 			else if (i == 10)
 | ||
| 			{
 | ||
| 				if ((flg & CONTROLUNDERLINESTYLE) > 0) XtraFlags.ControlUnderlineStyle = true.ToString();
 | ||
| 				if ((flg & MULTIPLECHANGEIDS) > 0) XtraFlags.MultipleChangeIds = true.ToString();
 | ||
| 				if ((flg & USEMULTILINESECTIONTITLE) > 0) XtraFlags.UseMultiLineSectionTitle = true.ToString();
 | ||
| 				if ((flg & PAGEBREAKONFIRSTBLANKLINE) > 0) XtraFlags.PageBreakOnFirstBlankLine = true.ToString();
 | ||
| 				if ((flg & DONTPRINTNOTITLE) > 0) XtraFlags.DontPrintNoTitle = true.ToString();
 | ||
| 				if ((flg & NOTESTOFOOTNOTES) > 0) XtraFlags.NotesToFootnotes = true.ToString();
 | ||
| 				if ((flg & UNDSPECIALSTEPSFOLDOUT) > 0) XtraFlags.UndSpecialStepsFoldout = true.ToString();
 | ||
| 				if ((flg & PUTONPAGEBYITSELF) > 0) XtraFlags.PutOnPageByItself = true.ToString();
 | ||
| 			}
 | ||
| 			else if (i == 11)
 | ||
| 			{
 | ||
| 				if ((flg & SECTITLECONTINUE) > 0) XtraFlags.SecTitleContinue = true.ToString();
 | ||
| 				if ((flg & CANCELSECTITLESONE0) > 0) XtraFlags.CancelSecTitlesOnE0 = true.ToString();
 | ||
| 				if ((flg & METASECTENDMESSAGE) > 0) XtraFlags.MetaSectEndMessage = true.ToString();
 | ||
| 				if ((flg & CANCELSECTITLESONE2) > 0) XtraFlags.CancelSecTitlesOnE2 = true.ToString();
 | ||
| 				if ((flg & COMPRESSHPSUPER) > 0) XtraFlags.CompressHPSuper = true.ToString();
 | ||
| 			}
 | ||
| 			else if (i == 12)
 | ||
| 			{
 | ||
| 				if ((flg & MATCHUPRNOCAUTNOTE) > 0) XtraFlags.MatchUpRNOCautNote = true.ToString();
 | ||
| 				if ((flg & PAGINATEATHIGHESTPAGINLEVEL) > 0) XtraFlags.PaginateAtHighestPaginLevel = true.ToString();
 | ||
| 				if ((flg & USELONGPROCTITLES) > 0) XtraFlags.UseLongProcTitles = true.ToString();
 | ||
| 				if ((flg & SPECIALLANDSCAPEMODE) > 0) XtraFlags.SpecialLandscapeMode = true.ToString();
 | ||
| 				if ((flg & RNOINPAGELIST) > 0) XtraFlags.RNOInPagelist = true.ToString();
 | ||
| 				if ((flg & STPCAUTNOTETABINPAGELIST) > 0) XtraFlags.StpCautNoteTabInPagelist = true.ToString();
 | ||
| 				if ((flg & READONLYTYPEINCONTMSG) > 0) XtraFlags.ReadOnlyTypeInContMsg = true.ToString();
 | ||
| 			}
 | ||
| 			else if (i == 13)
 | ||
| 			{
 | ||
| 				if ((flg & CENTERONELINEONLY) > 0) XtraFlags.CenterOneLineOnly = true.ToString();
 | ||
| 				if ((flg & TIETABTOLEVEL) > 0) XtraFlags.TieTabToLevel = true.ToString();
 | ||
| 				if ((flg & ACCESSORYDOCSINDUPLEX) > 0) XtraFlags.AccessoryDocsInDuplex = true.ToString();
 | ||
| 				if ((flg & FOLDOUTSINDUPLEX) > 0) XtraFlags.FoldoutsInDuplex = true.ToString();
 | ||
| 				if ((flg & USESTEXTRAREALVALUE) > 0) XtraFlags.UseSTExtraRealValue = true.ToString();
 | ||
| 				if ((flg & SUBTABLEGETSUP1LEVEL) > 0) XtraFlags.SubTableGetSup1Level = true.ToString();
 | ||
| 				if ((flg & DONTCOUNTFOLDOUTPAGES) > 0) XtraFlags.DontCountFoldoutPages = true.ToString();
 | ||
| 				if ((flg & SEARCHALLREPLACEWORDS) > 0) XtraFlags.SearchAllReplaceWords = true.ToString();
 | ||
| 			}
 | ||
| 			else if (i == 14)
 | ||
| 			{
 | ||
| 				if ((flg & REMEMBERCAUTIONSANDNOTES) > 0) XtraFlags.RememberCautionsAndNotes = true.ToString();
 | ||
| 				if ((flg & RTFADJUSTMENTS) > 0) XtraFlags.RtfAdjustments = true.ToString();
 | ||
| 				if ((flg & CENTERONELINEADJUST) > 0) XtraFlags.CenterOneLineAdjust = true.ToString();
 | ||
| 				if ((flg & COUNTALLSUBLEVELS) > 0) XtraFlags.CountAllSubLevels = true.ToString();
 | ||
| 				if ((flg & DONTREPLACEWORDSINROS) > 0) XtraFlags.DontReplaceWordsInROs = true.ToString();
 | ||
| 				if ((flg & HIGHLEVELRNOBEFOREAERSUBSTPS) > 0) XtraFlags.HighLevelRNOBeforeAERSubStps = true.ToString();
 | ||
| 				if ((flg & UNDERLINEALLMETATITLES) > 0) XtraFlags.UnderlineAllMetaTitles = true.ToString();
 | ||
| 				if ((flg & DONTBREAKCAUTIONSORNOTES) > 0) XtraFlags.DontBreakCautionsOrNotes = true.ToString();
 | ||
| 				if ((flg & BOLDONLYSECTIONZERO) > 0) XtraFlags.BoldOnlySectionZero = true.ToString();
 | ||
| 				if ((flg & DONTBREAKONRNO) > 0) XtraFlags.DontBreakOnRNO = true.ToString();
 | ||
| 				if ((flg & RNOCHECKOFFSAMEASPARENT) > 0) XtraFlags.RNOCheckOffSameAsParent = true.ToString();
 | ||
| 				if ((flg & USESTEPTYPEWIDTHOVERRRIDE) > 0) XtraFlags.UseStepTypeWidthOverride = true.ToString();
 | ||
| 				if ((flg & WOLFCREEKCKLFORMAT) > 0) XtraFlags.WolfcreekCKLFormat = true.ToString();
 | ||
| 			}
 | ||
| 			else if (i == 15)
 | ||
| 			{
 | ||
| 				if ((flg & DONTPAGINATEONFIRSTSUBSTEP2X) > 0) XtraFlags.DontPaginateOnFirstSubStep2X = true.ToString();
 | ||
| 				if ((flg & USESTEPTYPEWIDTHOVERRRIDEEDITPRINT) > 0) XtraFlags.UseStepTypeWidthOverrideEditPrint = true.ToString();
 | ||
| 				if ((flg & PARTIALSTEPCOMPRESSION) > 0) XtraFlags.PartialStepCompression = true.ToString();
 | ||
| 				if ((flg & USESMARTTEMPLATE) > 0) XtraFlags.UseSmartTemplate = true.ToString();
 | ||
| 				if ((flg & CHECKOFFONHLSONLY) > 0) XtraFlags.CheckoffOnHLSOnly = true.ToString();
 | ||
| 				if ((flg & CAUTION2SAMEROWASPARENT) > 0) XtraFlags.Caution2SameRowAsParent = true.ToString();
 | ||
| 				if ((flg & CENTERTEXTWITHINWIDTH) > 0) XtraFlags.CenterTextWithinWidth = true.ToString();
 | ||
| 				if ((flg & DONTBREAKEQUIPMENTLIST) > 0) XtraFlags.DontBreakEquipmentList = true.ToString();
 | ||
| 				if ((flg & ALWAYSTABCAUTION2) > 0) XtraFlags.AlwaysTabCaution2 = true.ToString();
 | ||
| 				if ((flg & VIRTUALDOTINHLSTAB) > 0) XtraFlags.VirtualDotInHLSTab = true.ToString();
 | ||
| 				if ((flg & IMPERFECTSTRUCTUREPLUS4) > 0) XtraFlags.ImperfectStructurePlus4 = true.ToString();
 | ||
| 			}
 | ||
| 			else if (i == 16)
 | ||
| 			{
 | ||
| 				if ((flg & USERNOTYPEINACTABLE) > 0) XtraFlags.UseRNOTypeInActable = true.ToString();
 | ||
| 				if ((flg & ABSOLUTETRANSITIONUPDATE) > 0) XtraFlags.AbsoluteTransitionUpdate = true.ToString();
 | ||
| 				if ((flg & SEPARATEBOXCAUTIONS) > 0) XtraFlags.SeparateBoxCautions = true.ToString();
 | ||
| 				if ((flg & HLSTEXTINPAGELIST) > 0) XtraFlags.HLSTextInPagelist = true.ToString();
 | ||
| 				if ((flg & LOWERCASESTEPINTRAN) > 0) XtraFlags.LowerCaseStepInTran = true.ToString();
 | ||
| 				if ((flg & CHANGEBARSONLINKEDTEXT) > 0) XtraFlags.ChangeBarsOnLinkedText = true.ToString();
 | ||
| 				if ((flg & QUOTEDSUBSTEPS) > 0) XtraFlags.QuotedSubsteps = true.ToString();
 | ||
| 			}
 | ||
| 			else if (i == 17)
 | ||
| 			{
 | ||
| 				if ((flg & OVERRIDEENHANCEDTABS) > 0) XtraFlags.OverrideEnhancedTabs = true.ToString();
 | ||
| 				if ((flg & NONEWLINEAFTERRNO) > 0) XtraFlags.NoNewlineAfterRNO = true.ToString();
 | ||
| 				if ((flg & DOSECTIONSEPARATORLINE) > 0) XtraFlags.DoSectionSeparatorLine = true.ToString();
 | ||
| 				if ((flg & PARENSONEXTPAGENUMTRANS) > 0) XtraFlags.ParensOnExtPagenumTrans = true.ToString();
 | ||
| 				if ((flg & ATLEASTTWODIGITSFORHLS) > 0) XtraFlags.AtLeastTwoDigitsForHLS = true.ToString();
 | ||
| 				if ((flg & DONTBREAKOPTEQUIPMENTLIST) > 0)
 | ||
| 					XtraFlags.DontBreakOptEquipmentList = true.ToString();
 | ||
| 				if ((flg & PAGELISTCHANGEIDSWITHCOMMAS) > 0) XtraFlags.PagelistChangeIDsWithCommas = true.ToString();
 | ||
| 				if ((flg & DONTSTARTLINEWITHDASH) > 0) XtraFlags.DontStartLineWithDash = true.ToString();
 | ||
| 				if ((flg & NOBLANKLINEBEFORESUBSTEP) > 0) XtraFlags.NoBlankLineBeforeSubstep = true.ToString();
 | ||
| 				if ((flg & DONTBREAKCAUTIONSNOTESONSUBSTPS) > 0) XtraFlags.DontBreakCautionsNotesOnSubstps = true.ToString();
 | ||
| 				if ((flg & DONTCONVERTCARETTODELTA) > 0) XtraFlags.DontConvertCaretToDelta = true.ToString();
 | ||
| 			}
 | ||
| 			else if (i == 18)
 | ||
| 			{
 | ||
| 				if ((flg & NORNO) > 0) XtraFlags.NoRNO = true.ToString();
 | ||
| 				if ((flg & ONLYSINGLECOLUMN) > 0) XtraFlags.OnlySingleColumn = true.ToString();
 | ||
| 				if ((flg & NULLBOX) > 0) XtraFlags.NullBox = true.ToString();
 | ||
| 				if ((flg & XCHNGTRANSPFORHARD) > 0) XtraFlags.XChngTranSpForHard = true.ToString();
 | ||
| 				if ((flg & WOLFCREEKCKLBACKGNDFORMAT) > 0) XtraFlags.WolfcreekCKLBackgndFormat = true.ToString();
 | ||
| 			}
 | ||
| 		}
 | ||
| 		#endregion
 | ||
| 		#region ReadInFile
 | ||
| 		private float RowToPoints(int i)
 | ||
| 		{
 | ||
| 			return (i * 12);	// row_in_points = input * 72/6, row = input * 12
 | ||
| 		}
 | ||
| 		private float ColToPoints(float f, uint style)
 | ||
| 		{
 | ||
| 			return 72 * (f / CvtFont.CvtFont.GetPrintPitch(style));
 | ||
| 		}
 | ||
| 		string _AlternateIndex = null;
 | ||
| 		int[] rtCheckOffGroups = new int[MAXSTEPS + 1];
 | ||
| 		private string _fmtFileName;
 | ||
| 		private uint _PlantDefaultFontStyle;
 | ||
| 		public bool ReadInFmtFile(ref FormatData fmtdata, ref XtraFlgs XtraFlags, string fname)
 | ||
| 		{
 | ||
| 			_fmtFileName = fname;
 | ||
| 			int[] tmpshort3 = new int[3];
 | ||
| 			ArrayList stringoffsets = new ArrayList();
 | ||
| 			byte tmpbyte;
 | ||
| 			Int16 tmpshort;
 | ||
| 			string tmpstr;
 | ||
| 			try
 | ||
| 			{
 | ||
| 				tmpshort = brFmt.ReadInt16();
 | ||
| 				fmtdata.Name = GetStringUntilNull(brFmt);
 | ||
| 				for (int i = 0; i < 3; i++)
 | ||
| 				{
 | ||
| 					tmpshort = brFmt.ReadInt16();
 | ||
| 					tmpstr = GetStringUntilNull(brFmt);
 | ||
| 				}
 | ||
| 
 | ||
| 				short vnum = brFmt.ReadInt16();     // number of ints, etc.
 | ||
| 				long posatints = brFmt.BaseStream.Position;
 | ||
| 				long tstloc = vnum + posatints;
 | ||
| 				fmtdata.FontData = new VE_Font(0);
 | ||
| 				#region LoadInts
 | ||
| 				tmpbyte = brFmt.ReadByte();                             // FirstChar
 | ||
| 
 | ||
| 				// NOTE 16bit had xtraflag as 18 & had a VEAIRFlag. VEAIRFlag actually
 | ||
| 				// had some flags used in other formats besides it, so these were rolled
 | ||
| 				// into the xtraflag array just to make conversion easier.
 | ||
| 				Int16[] xtraflag = new Int16[19];
 | ||
| 				for (int i = 0; i < 19; i++)
 | ||
| 				{
 | ||
| 					xtraflag[i] = brFmt.ReadInt16();
 | ||
| 					AddFlags(ref XtraFlags, i, xtraflag[i]);
 | ||
| 				}
 | ||
| 				// if this format has an associated PSI or TPL file, just read in the string & save
 | ||
| 				// it.
 | ||
| 				string otherfile = MyPath + @"\" + fname.Substring(0, fname.LastIndexOf(".")) + @".tpl";
 | ||
| 				if (File.Exists(otherfile))
 | ||
| 					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)) PsiIniToXml(ref fmtdata, otherfile);
 | ||
| 				fmtdata.PurchaseOptions = ((E_PurchaseOptions)brFmt.ReadInt16()).ToString();
 | ||
| 				fmtdata.ProcData.ProcForeColor = "Black";
 | ||
| 				fmtdata.ProcData.ProcBackColor = "White";
 | ||
| 				fmtdata.EditData = new GeneralEditor();
 | ||
| 				fmtdata.EditData.EMode = ((E_EMode)brFmt.ReadInt16()).ToString();
 | ||
| 				fmtdata.SectData = new Section();
 | ||
| 				fmtdata.SectData.SectForeColor = "Black";
 | ||
| 				fmtdata.SectData.SectBackColor = "White";
 | ||
| 				fmtdata.SectData.StepSectionData = new StepSection();
 | ||
| 				fmtdata.SectData.StepSectionData.TopRow = (Int16)(RowToPoints(brFmt.ReadInt16()));
 | ||
| 				tmpshort = brFmt.ReadInt16();                           // Appendlines - not used.
 | ||
| 				fmtdata.PrintData = new GeneralPrint();
 | ||
| 				fmtdata.PrintData.DoPrnDrvrAdjusts = brFmt.ReadInt16();
 | ||
| 				fmtdata.StepData = new Step[MAXSTEPS + 1];		// add 1 for the 'BASE'
 | ||
| 				for (int i = 0; i < MAXSTEPS + 1; i++)
 | ||
| 				{
 | ||
| 					fmtdata.StepData[i].Type = StepTypes[i];
 | ||
| 					fmtdata.StepData[i].ParentType = ParentTypes[i];
 | ||
| 					if (i == 1)
 | ||
| 					{
 | ||
| 						_PlantDefaultFontStyle = brFmt.ReadUInt32();
 | ||
| 						fmtdata.StepData[0].Font = new VE_Font(_PlantDefaultFontStyle);
 | ||
| 						fmtdata.FontData = fmtdata.StepData[0].Font.Copy();
 | ||
| 						//fmtdata.StepData[1].Font will inherit the Base Font
 | ||
| 					}
 | ||
| 					if (i > 1)
 | ||
| 					{
 | ||
| 						uint tmpuint = brFmt.ReadUInt32();
 | ||
| 						if (i == 40 && tmpuint == 0)  // check if RNOtype's font = 0, if so use the plant default
 | ||
| 						{
 | ||
| 							fmtdata.StepData[i].Font = new VE_Font(_PlantDefaultFontStyle);
 | ||
| 						}
 | ||
| 						else
 | ||
| 							fmtdata.StepData[i].Font = new VE_Font(tmpuint);
 | ||
| 					}
 | ||
| 				}
 | ||
| 				for (int i = 1; i < MAXSTEPS + 1; i++)
 | ||
| 				{
 | ||
| 					Int16 tmpcoli = brFmt.ReadInt16();
 | ||
| 					int tmpcol = (tmpcoli & 0x0F00) >> 8;
 | ||
| 					if (tmpcol > 0 && tmpcol < WinColors.Length)
 | ||
| 						fmtdata.StepData[i].StepLayoutData.ForeColor = WinColors[tmpcol];
 | ||
| 					else
 | ||
| 						fmtdata.StepData[i].StepLayoutData.ForeColor = "Black";
 | ||
| 					tmpcol = (tmpcoli & 0xF);
 | ||
| 					if (tmpcol > 0 && tmpcol < WinColors.Length)
 | ||
| 						fmtdata.StepData[i].StepLayoutData.BackColor = WinColors[tmpcol];
 | ||
| 					else
 | ||
| 						fmtdata.StepData[i].StepLayoutData.BackColor = "White";
 | ||
| 				}
 | ||
| 				fmtdata.StepData[0].StepLayoutData.ForeColor = "Black";
 | ||
| 				fmtdata.StepData[0].StepLayoutData.BackColor = "White";
 | ||
| 				for (int i = 1; i < MAXSTEPS + 1; i++) fmtdata.StepData[i].StepLayoutData.STExtraSpace = (RowToPoints(brFmt.ReadInt16())).ToString();
 | ||
| 				fmtdata.StepData[0].StepLayoutData.STExtraSpace = fmtdata.StepData[1].StepLayoutData.STExtraSpace;
 | ||
| 				for (int i = 1; i < MAXSTEPS + 1; i++)
 | ||
| 				{
 | ||
| 					Int16 itmp = brFmt.ReadInt16();
 | ||
| 					if (fmtdata.StepData[i].Font != null && fmtdata.StepData[i].Font.IsBoxed) fmtdata.StepData[i].StepLayoutData.STBoxindex = (itmp + 1).ToString();
 | ||
| 				}
 | ||
| 
 | ||
| 				// Read the tab indexes into a temporary array. Once the tab strings are read
 | ||
| 				// in the structure's data will be added.
 | ||
| 				Tabindx = new Int16[MAXSTEPS];
 | ||
| 				for (int i = 0; i < MAXSTEPS; i++) Tabindx[i] = brFmt.ReadInt16();
 | ||
| 
 | ||
| 				for (int i = 1; i < MAXSTEPS + 1; i++)
 | ||
| 				{
 | ||
| 					fmtdata.StepData[i].StepPrintData = new Print();
 | ||
| 					fmtdata.StepData[i].StepPrintData.PosAdjust = ((Int16)(ColToPoints(brFmt.ReadInt16(), _PlantDefaultFontStyle))).ToString();
 | ||
| 				}
 | ||
| 
 | ||
| 				// NOTE a default is added for boxes for the default box for tables, if
 | ||
| 				// they are boxed.
 | ||
| 				fmtdata.BoxData = new Box[MAXBOXES + 1];
 | ||
| 				// convert these to points. Also, each set of data had 24, not 12 box fields, the 
 | ||
| 				// second twelve for RTF. For now, I'm going to just skip these. They can be added in 
 | ||
| 				// later
 | ||
| 				// Note that the box start (we think) and the box end locations used ELITE, at 12 characters per inch,
 | ||
| 				// for locating the line draw/box drawing.
 | ||
| 				for (int i = 1; i < MAXBOXES + 1; i++) fmtdata.BoxData[i].Start = ColToPoints(brFmt.ReadInt16(), CvtFont.CvtFont.ELITE);
 | ||
| 				for (int i = 1; i < MAXBOXES + 1; i++) tmpshort = brFmt.ReadInt16();
 | ||
| 				for (int i = 1; i < MAXBOXES + 1; i++) fmtdata.BoxData[i].End = ColToPoints(brFmt.ReadInt16(), CvtFont.CvtFont.ELITE);
 | ||
| 				for (int i = 1; i < MAXBOXES + 1; i++) tmpshort = brFmt.ReadInt16();
 | ||
| 				for (int i = 1; i < MAXBOXES + 1; i++) fmtdata.BoxData[i].TxtStart = ColToPoints(brFmt.ReadInt16(), _PlantDefaultFontStyle);
 | ||
| 				for (int i = 1; i < MAXBOXES + 1; i++) tmpshort = brFmt.ReadInt16();
 | ||
| 				for (int i = 1; i < MAXBOXES + 1; i++) fmtdata.BoxData[i].TxtWidth = ColToPoints(brFmt.ReadInt16(), _PlantDefaultFontStyle);
 | ||
| 				for (int i = 1; i < MAXBOXES + 1; i++) tmpshort = brFmt.ReadInt16();
 | ||
| 				for (int i = 1; i < MAXBOXES + 1; i++) fmtdata.BoxData[i].Height = RowToPoints(brFmt.ReadInt16());
 | ||
| 				for (int i = 1; i < MAXBOXES + 1; i++) tmpshort = brFmt.ReadInt16();
 | ||
| 				for (int i = 1; i < MAXBOXES + 1; i++) fmtdata.BoxData[i].TabPos = RowToPoints(brFmt.ReadInt16());
 | ||
| 				for (int i = 1; i < MAXBOXES + 1; i++) tmpshort = brFmt.ReadInt16();
 | ||
| 				tmpshort = brFmt.ReadInt16();    // TransitionCautionOffset
 | ||
| 				for (int i = 1; i < MAXBOXES + 1; i++) fmtdata.BoxData[i].Font = LoadVE_Font();
 | ||
| 				int tmpint;
 | ||
| 				for (int i = 1; i < MAXBOXES + 1; i++) tmpint = brFmt.ReadInt32();
 | ||
| 				for (int i = 0; i < MAXTABS; i++)
 | ||
| 				{
 | ||
| 					VE_Font st = LoadVE_Font();
 | ||
| 					if (i == 0)
 | ||
| 					{
 | ||
| 						fmtdata.StepData[0].TabData.Font = st == null ? null : st.Copy();
 | ||
| 						fmtdata.StepData[0].TabData.Justify = st == null ? "None" : st.FontJustify;
 | ||
| 						if (st != null && st.FontCheckOff != "None")
 | ||
| 						{
 | ||
| 							if (fmtdata.StepData[0].TabData.MacroList == null) fmtdata.StepData[0].TabData.MacroList = new COMacro[1];
 | ||
| 							fmtdata.StepData[0].TabData.MacroList[0].Name = "CHECKOFF";
 | ||
| 							fmtdata.StepData[0].TabData.MacroList[0].Macro = "C22";
 | ||
| 							if (rtCheckOffGroups[0] != 0) fmtdata.StepData[0].TabData.MacroList[0].Grouping = rtCheckOffGroups[0].ToString();
 | ||
| 						}
 | ||
| 						for (int j = 0; j < MAXSTEPS; j++)
 | ||
| 						{
 | ||
| 							if (Tabindx[j] == -1)
 | ||
| 							{
 | ||
| 								fmtdata.StepData[j + 1].TabData.UsePreviousStyle = "True";
 | ||
| 								fmtdata.StepData[j + 1].TabData.Font = st == null ? null : st.Copy();
 | ||
| 								fmtdata.StepData[j + 1].TabData.Justify = st == null ? "None" : st.FontJustify;
 | ||
| 
 | ||
| 								if (st != null && st.FontCheckOff != "None")
 | ||
| 								{
 | ||
| 									fmtdata.StepData[j + 1].TabData.MacroList = new COMacro[1];
 | ||
| 									fmtdata.StepData[j + 1].TabData.MacroList[0].Name = "CHECKOFF";
 | ||
| 									fmtdata.StepData[j + 1].TabData.MacroList[0].Macro = st.FontCheckOff == "Right" ? "C22" : "M20";
 | ||
| 									if (rtCheckOffGroups[j + 1] != 0) fmtdata.StepData[j + 1].TabData.MacroList[0].Grouping = rtCheckOffGroups[j + 1].ToString();
 | ||
| 								}
 | ||
| 							}
 | ||
| 						}
 | ||
| 					}
 | ||
| 					for (int j = 0; j < MAXSTEPS; j++)
 | ||
| 					{
 | ||
| 						if (Tabindx[j] == i)
 | ||
| 						{
 | ||
| 							fmtdata.StepData[j + 1].TabData.Font = st == null ? null : st.Copy();
 | ||
| 							fmtdata.StepData[j + 1].TabData.Justify = st == null ? "None" : st.FontJustify;
 | ||
| 							if (st != null && st.FontCheckOff != "None")
 | ||
| 							{
 | ||
| 								fmtdata.StepData[j + 1].TabData.MacroList = new COMacro[1];
 | ||
| 								fmtdata.StepData[j + 1].TabData.MacroList[0].Name = "CHECKOFF";
 | ||
| 								fmtdata.StepData[j + 1].TabData.MacroList[0].Macro = st.FontCheckOff == "Right" ? "C22" : "M20";
 | ||
| 							}
 | ||
| 						}
 | ||
| 					}
 | ||
| 				}
 | ||
| 				for (int i = 1; i < MAXSTEPS + 1; i++)
 | ||
| 				{
 | ||
| 					fmtdata.StepData[i].StepEditData.AcTable = ((E_AccStep)brFmt.ReadInt16()).ToString();
 | ||
| 					if (fmtdata.StepData[i].StepEditData.AcTable == "0")
 | ||
| 						fmtdata.StepData[i].StepEditData.AcTable = null;
 | ||
| 				}
 | ||
| 				for (int i = 1; i < MAXSTEPS + 1; i++) 
 | ||
| 				{
 | ||
| 					tmpint = brFmt.ReadInt16();
 | ||
| 					if (tmpint == 0) tmpint = 1;				// everynlines default value should be 1.
 | ||
| 					fmtdata.StepData[i].StepLayoutData.EveryNLines = tmpint.ToString();
 | ||
| 				}
 | ||
| 				for (int i = 1; i < MAXSTEPS + 1; i++) fmtdata.StepData[i].StepLayoutData.SpaceBefore = "0";
 | ||
| 				for (int i = 1; i < MAXSTEPS + 1; i++) fmtdata.StepData[i].StepLayoutData.SpaceAfter = RowToPoints(1).ToString();
 | ||
| 				for (int i = 1; i < MAXSTEPS + 1; i++)
 | ||
| 				{
 | ||
| 					tmpint = brFmt.ReadInt16();
 | ||
| 					fmtdata.StepData[i].StepLayoutData.AlwaysUpperCase = tmpint==1?true.ToString():false.ToString();
 | ||
| 				}
 | ||
| 
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData = new StepSectionLayout();
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.TopOfPage = new TopOfPg();
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.TopOfPage.Font = LoadVE_Font();
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.TopOfPage.Row = RowToPoints(brFmt.ReadInt16());
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.TopOfPage.Col = ColToPoints(brFmt.ReadInt16(), _PlantDefaultFontStyle);
 | ||
| 
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectPrtData = new StepSectionPrint();
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectPrtData.ModifiedTextStyle = LoadVE_Font();
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.Separator = new Separtr();
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.Separator.Font = LoadVE_Font();
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.Separator.SeparatorLocation = brFmt.ReadInt16();
 | ||
| 
 | ||
| 				for (int i = 1; i < MAXSTEPS + 1; i++) fmtdata.StepData[i].StepLayoutData.PageBreakAtTypeChange = (brFmt.ReadInt16()).ToString();
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.LastLineToStartStep = RowToPoints(brFmt.ReadInt16());
 | ||
| 
 | ||
| 				/* To do TextTypeValue - not sure how this is used & where to store it, so temporarily read it in */
 | ||
| 				//fmtdata.SectData.StepSectionData.TextTypeValue = new Int16[10];
 | ||
| 				//for (int i = 0; i < 10; i++) fmtdata.SectData.StepSectionData.TextTypeValue[i] = brFmt.ReadInt16();
 | ||
| 
 | ||
| 				Int16[] TextTypeValue = new Int16[10];
 | ||
| 				for (int i = 0; i < 10; i++) TextTypeValue[i] = brFmt.ReadInt16();
 | ||
| 
 | ||
| 				for (int i = 0; i < 10; i++) tmpint = brFmt.ReadInt32();   // DontPrintInSection - not used.
 | ||
| 
 | ||
| 				tmpshort = brFmt.ReadInt16();  // LeftMarginReset - not used.
 | ||
| 				tmpshort = brFmt.ReadInt16();  // OmitErgEopUsage - not used.
 | ||
| 
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.LineDrawingOption = brFmt.ReadInt16();
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.ColS = ColToPoints(brFmt.ReadInt16(), _PlantDefaultFontStyle);
 | ||
| 
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectEditData = new StepSectionEdit();
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectEditData.ColSScreenAdj = ColToPoints(brFmt.ReadInt16(), _PlantDefaultFontStyle);
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectEditData.ScrnAdjRNOText = ColToPoints(brFmt.ReadInt16(), _PlantDefaultFontStyle);
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.ColT = ColToPoints(brFmt.ReadInt16(), 0);
 | ||
| 				tmpshort = brFmt.ReadInt16();   // Coltincr - not used
 | ||
| 				tmpshort = brFmt.ReadInt16();   // ColTab - not used
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.ColAbs = ColToPoints(brFmt.ReadInt16(), _PlantDefaultFontStyle);
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.WidT = ColToPoints(brFmt.ReadInt16(), _PlantDefaultFontStyle);
 | ||
| 				tmpshort = brFmt.ReadInt16();           // WidTab - not used.
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.PMode = brFmt.ReadInt16();
 | ||
| 
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.MaxRNO = brFmt.ReadInt16();
 | ||
| 
 | ||
| 				// maxrnotable, colrtable, widstable, and colrscreen all have three values.
 | ||
| 				for (int i = 0; i < 3; i++) tmpshort3[i] = brFmt.ReadInt16();
 | ||
| 				tmpstr = string.Format("{0},{1},{2}", tmpshort3[0], tmpshort3[1], tmpshort3[2]);
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.MaxRNOTable = tmpstr;
 | ||
| 
 | ||
| 				float[] tmpfloat = new float[3];
 | ||
| 				for (int i = 0; i < 3; i++) tmpfloat[i] = ColToPoints(brFmt.ReadInt16(), _PlantDefaultFontStyle);
 | ||
| 				tmpstr = string.Format("{0},{1},{2}", tmpfloat[0], tmpfloat[1], tmpfloat[2]);
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.ColRTable = tmpstr;
 | ||
| 
 | ||
| 				float[] tmpfloata = new float[3];
 | ||
| 				for (int i = 0; i < 3; i++)
 | ||
| 				{
 | ||
| 					tmpfloat[i] = ColToPoints(brFmt.ReadInt16(), _PlantDefaultFontStyle);
 | ||
| 					tmpfloata[i] = ColToPoints(brFmt.ReadInt16(), _PlantDefaultFontStyle);
 | ||
| 				}
 | ||
| 				tmpstr = string.Format("{0},{1},{2}", tmpfloat[0], tmpfloat[1], tmpfloat[2]);
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.WidSTableEdit = tmpstr;
 | ||
| 				tmpstr = string.Format("{0},{1},{2}", tmpfloata[0], tmpfloata[1], tmpfloata[2]);
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.WidSTablePrint = tmpstr;
 | ||
| 
 | ||
| 				for (int i = 0; i < 3; i++) tmpfloat[i] = ColToPoints(brFmt.ReadInt16(), _PlantDefaultFontStyle);
 | ||
| 				tmpstr = string.Format("{0},{1},{2}", tmpfloat[0], tmpfloat[1], tmpfloat[2]);
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectEditData.ColRScreen = tmpstr;
 | ||
| 
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.AdjRNOCol = ColToPoints(brFmt.ReadInt16(), _PlantDefaultFontStyle);
 | ||
| 
 | ||
| 				ChangeBar cb = new ChangeBar();
 | ||
| 
 | ||
| 				cb.ChangeBarMessage = ((E_ChangeBarMessage)brFmt.ReadUInt16()).ToString();
 | ||
| 
 | ||
| 				cb.FixedChangeColumn = brFmt.ReadInt16();
 | ||
| 				cb.FixedAERChangeColumn = brFmt.ReadByte();
 | ||
| 
 | ||
| 				//read in a number of format items that are not supported...
 | ||
| 				for (int i = 0; i < 3; i++) tmpshort3[i] = brFmt.ReadInt16();    // BD_PageNumOnCover - not used.
 | ||
| 
 | ||
| 				tmpshort = brFmt.ReadInt16();       // VESearchLeftMargin - not used (same for rest that list varname.
 | ||
| 				tmpshort = brFmt.ReadInt16();       // VEStdPrtLeftMarE
 | ||
| 				tmpshort = brFmt.ReadInt16();       // VEStdPrtLeftMarP
 | ||
| 
 | ||
| 				int tmplong = brFmt.ReadInt32();    // ImperfectSTructureSepStyle
 | ||
| 				tmpshort = brFmt.ReadInt16();       // FormsLPI
 | ||
| 				tmplong = brFmt.ReadInt32();        // FormsStyle
 | ||
| 				tmplong = brFmt.ReadInt32();        // FormsBoxStyle
 | ||
| 				tmpshort = brFmt.ReadInt16();       // FormsMargin
 | ||
| 				tmpshort = brFmt.ReadInt16();       // ChangeSummaryLPI
 | ||
| 
 | ||
| 				cb.ChangeSummaryStyle = brFmt.ReadInt32();      // this may be moved into a different struct
 | ||
| 				cb.ChangeBarStyle = brFmt.ReadInt32();
 | ||
| 				fmtdata.ProcData.ChangeBarData = cb;
 | ||
| 
 | ||
| 				for (int i = 0; i < 30; i++) tmpshort = brFmt.ReadInt16();    // XPosition
 | ||
| 
 | ||
| 				fmtdata.ProcData.TitleLength = brFmt.ReadInt16();
 | ||
| 				fmtdata.ProcData.CoverTitleLength = brFmt.ReadInt16();
 | ||
| 
 | ||
| 				fmtdata.ProcData.CheckOffData = new CheckOffData();
 | ||
| 				// for the Base format, set the Default Change bar locations from hardcoded
 | ||
| 				// data in the 16-bit program: (ovrchgbr.c)
 | ||
| 				if (!HasBase) fmtdata.ProcData.ChangeBarData.DefaultCBLoc = "0,85,-85,-3";
 | ||
| 				int[] rightCheckOffBox = new int[4];
 | ||
| 				for (int i = 0; i < 4; i++)
 | ||
| 				{
 | ||
| 					rightCheckOffBox[i] = brFmt.ReadInt16();
 | ||
| 				}
 | ||
| 				int DefaultCheckOffType = (rightCheckOffBox[2] > 0) ? rightCheckOffBox[2] : rightCheckOffBox[3] >> 8;
 | ||
| 				fmtdata.ProcData.CheckOffData.AllowSectEdit = DefaultCheckOffType == 1 || (rightCheckOffBox[0] > 0 || rightCheckOffBox[1] > 0) ? "True" : "False";
 | ||
| 				fmtdata.ProcData.CheckOffData.AllowStepEdit = DefaultCheckOffType >= 1 ? "True" : "False";
 | ||
| 				tmpshort = brFmt.ReadInt16();       // TwoCheckOffs
 | ||
| 				fmtdata.ProcData.CheckOffData.CheckOffList = new CheckOff[MAXCHECKOFFS];
 | ||
| 				for (int i = 0; i < MAXCHECKOFFS; i++) fmtdata.ProcData.CheckOffData.CheckOffList[i].Index = i;
 | ||
| 				for (int i = 0; i < MAXCHECKOFFS; i++) fmtdata.ProcData.CheckOffData.CheckOffList[i].UIMark = brFmt.ReadByte();
 | ||
| 				for (int i = 0; i < MAXCHECKOFFS; i++) fmtdata.ProcData.CheckOffData.CheckOffList[i].CheckOffXtraLines = brFmt.ReadByte();      // CheckOffXtraLines
 | ||
| 				for (int i = 0; i < MAXCHECKOFFS; i++) fmtdata.ProcData.CheckOffData.CheckOffList[i].CheckOffWidAdjust = ColToPoints(brFmt.ReadSByte(), _PlantDefaultFontStyle);
 | ||
| 				for (int i = 0; i < MAXCHECKOFFS; i++) tmpbyte = brFmt.ReadByte();      // CheckOffFeatures
 | ||
| 				fmtdata.ProcData.CheckOffData.CheckOffHeaderList = new CheckOffHeader[MAXCHKHEADINGS];
 | ||
| 				for (int i = 0; i < MAXCHKHEADINGS; i++) fmtdata.ProcData.CheckOffData.CheckOffHeaderList[i].Index = i;
 | ||
| 				for (int i = 0; i < MAXCHKHEADINGS; i++) fmtdata.ProcData.CheckOffData.CheckOffHeaderList[i].Font = LoadVE_Font();
 | ||
| 				fmtdata.ProcData.CheckOffData.UseCheckOffsIn = brFmt.ReadInt32();
 | ||
| 				// 16 bit code was defaulting to Elite when calculating the starting location of the check off line.
 | ||
| 				//  so use elite: 72 points per inch, 12 chars per inch
 | ||
| 				int tmpcolco = (rightCheckOffBox[3] & 0xFF) * 72/12;
 | ||
| 				if (tmpcolco > 0) fmtdata.ProcData.CheckOffData.XLocation = (float)tmpcolco; // ColToPoints((float)tmpcolco, _PlantDefaultFontStyle);
 | ||
| 				tmplong = (int)brFmt.ReadUInt32();
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.EndMessagePos = brFmt.ReadInt16();
 | ||
| 				tmpshort = brFmt.ReadInt16();                           // CenterTableAdjustment
 | ||
| 				tmpshort = brFmt.ReadInt16();                           // NumberOfLinesForNoteOrCaution
 | ||
| 
 | ||
| 				//for (int i = 0; i < MAXSEQ; i++) fmtdata.SectData.StepSectionData.SeqStart[i] = brFmt.ReadByte();
 | ||
| 				fmtdata.SectData.StepSectionData.SequentialTabFormat = new SeqTabFmt[MAXSEQ];
 | ||
| 				for (int i = 0; i < MAXSEQ; i++)
 | ||
| 				{
 | ||
| 					fmtdata.SectData.StepSectionData.SequentialTabFormat[i].TabToken = ConvertSeqStart(brFmt.ReadByte());
 | ||
| 				}
 | ||
| 
 | ||
| 				//fmtdata.SectData.StepSectionData.HighSeqStart = brFmt.ReadByte();
 | ||
| 				tmpbyte = brFmt.ReadByte(); // HighSeqStart
 | ||
| 				fmtdata.SectData.StepSectionData.IndentToken = brFmt.ReadByte();
 | ||
| 
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectPrtData.ImmStepHdrCol = ColToPoints(brFmt.ReadInt16(), _PlantDefaultFontStyle);
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectPrtData.ImmStepHdrStyle = LoadVE_Font();
 | ||
| 
 | ||
| 				ReplaceStr[] repstr = new ReplaceStr[MAXREPLACE];
 | ||
| 				fmtdata.SectData.ReplaceStrData = repstr;
 | ||
| 				for (int i = 0; i < 60; i++) repstr[i].Flag = ((E_ReplaceStr)brFmt.ReadUInt32()).ToString();
 | ||
| 
 | ||
| 				for (int i = 0; i < 2; i++) tmpshort3[i] = brFmt.ReadInt16();
 | ||
| 				tmpstr = string.Format("{0},{1}", tmpshort3[0], tmpshort3[1]);
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.RNOWidthAlt = tmpstr;
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.HLSWidthOVRD = brFmt.ReadInt16();
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectPrtData.SecColHdrforActPMode = brFmt.ReadInt16();
 | ||
| 
 | ||
| 				for (int i = 0; i < MAXSTEPS + 1; i++) fmtdata.StepData[i].Index = i;
 | ||
| 				for (int i = 1; i < MAXSTEPS + 1; i++)
 | ||
| 				{
 | ||
| 					tmpbyte = brFmt.ReadByte();
 | ||
| 					fmtdata.StepData[i].StepLayoutData.AlignWithParentTab = tmpbyte == 1 ? true.ToString() : false.ToString();
 | ||
| 				}
 | ||
| 
 | ||
| 				fmtdata.SectData.SectionNumber = new SectionNum();
 | ||
| 				fmtdata.SectData.SectionHeader = new SectionHead();
 | ||
| 				fmtdata.SectData.SectionNumber.Font = LoadVE_Font();
 | ||
| 				fmtdata.SectData.SectionHeader.Font = LoadVE_Font();
 | ||
| 				fmtdata.SectData.SectionNumber.Pos = ColToPoints(brFmt.ReadInt16(), _PlantDefaultFontStyle);
 | ||
| 				fmtdata.SectData.SectionNumber.Just = ((E_PageStructMod)brFmt.ReadByte()).ToString();
 | ||
| 				fmtdata.SectData.SectionHeader.Pos = ColToPoints(brFmt.ReadInt16(), _PlantDefaultFontStyle);
 | ||
| 				fmtdata.SectData.SectionHeader.Just = ((E_PageStructMod)brFmt.ReadByte()).ToString();
 | ||
| 
 | ||
| 				for (int i = 0; i < 10; i++) tmpbyte = brFmt.ReadByte();    // SecLevelDelta
 | ||
| 				fmtdata.SectData.SectionTitleLength = brFmt.ReadInt16();
 | ||
| 				tmpshort = brFmt.ReadInt16();
 | ||
| 
 | ||
| 				rtCheckOffGroups[0] = 0;
 | ||
| 				for (int i = 1; i < MAXSTEPS + 1; i++) rtCheckOffGroups[i] = (brFmt.ReadInt16());
 | ||
| 				for (int i = 1; i < MAXSTEPS + 1; i++)
 | ||
| 				{
 | ||
| 					// if the grouping is > 0, then use the 'right check off' macro WHEN there
 | ||
| 					// are more than rtCheckOffGroups[i] of the step type.
 | ||
| 					if (rtCheckOffGroups[i] != 0)
 | ||
| 					{
 | ||
| 						if (fmtdata.StepData[i].TabData.MacroList == null)
 | ||
| 						{
 | ||
| 							fmtdata.StepData[i].TabData.MacroList = new COMacro[1];
 | ||
| 							fmtdata.StepData[i].TabData.MacroList[0].Name = "CHECKOFF";
 | ||
| 							fmtdata.StepData[i].TabData.MacroList[0].Macro = "C22";
 | ||
| 						}
 | ||
| 						fmtdata.StepData[i].TabData.MacroList[0].Grouping = rtCheckOffGroups[i].ToString();
 | ||
| 					}
 | ||
| 				}
 | ||
| 				for (int i = 0; i < 100; i++) tmpshort = brFmt.ReadInt16();  // TypeGroups
 | ||
| 				for (int i = 0; i < 20; i++) tmpshort = brFmt.ReadInt16();  // EnhancedSubTypes;
 | ||
| 
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.SubPaginationWght = brFmt.ReadInt16();
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.TextTitleAdjustment = brFmt.ReadInt16();
 | ||
| 
 | ||
| 				for (int i = 1; i < MAXSTEPS + 1; i++) tmpshort = brFmt.ReadInt16();    // STAfterLines
 | ||
| 
 | ||
| 				fmtdata.TransData.TransTypeData = new TransTypes[MAXTRANS];
 | ||
| 				for (int i = 0; i < MAXTRANS; i++)
 | ||
| 				{
 | ||
| 					fmtdata.TransData.TransTypeData[i].TransType = brFmt.ReadByte();
 | ||
| 					if (i < 6 && fmtdata.TransData.TransTypeData[i].TransType == 0) fmtdata.TransData.TransTypeData[i].TransType = (byte)i;
 | ||
| 				}
 | ||
| 				for (int i = 0; i < MAXTRANS; i++) tmpbyte = brFmt.ReadByte();  // TransMode
 | ||
| 				for (int i = 0; i < MAXTRANS; i++) tmpbyte = brFmt.ReadByte();  // OutsideTransType
 | ||
| 
 | ||
| 				for (int i = 1; i < MAXSTEPS+1; i++)
 | ||
| 				{
 | ||
| 					tmpshort = brFmt.ReadInt16();
 | ||
| 					fmtdata.StepData[i].WidthOverride = (ColToPoints((tmpshort & 0x00FF), _PlantDefaultFontStyle)).ToString();
 | ||
| 					fmtdata.StepData[i].WidthOverrideEdit = (ColToPoints(((tmpshort & 0xFF00) >> 8), _PlantDefaultFontStyle)).ToString();
 | ||
| 				}
 | ||
| 
 | ||
| 				// auto table of contents data
 | ||
| 				AccSection accsec = new AccSection();
 | ||
| 
 | ||
| 				TOC toc = new TOC();
 | ||
| 				// the toc position values are all 12 CPI regardless of font used (according to a comment in
 | ||
| 				// the wcn1 format files.
 | ||
| 				float tmpfloat1 = Convert.ToInt16(brFmt.ReadSByte());
 | ||
| 				toc.TofCSecNumPos = 72 * (tmpfloat1 / 12);   // 12cpi
 | ||
| 				tmpfloat1 = Convert.ToInt16(brFmt.ReadSByte());
 | ||
| 				toc.TofCSecTitlePos = 72 * (tmpfloat1 / 12);   // 12cpi
 | ||
| 				tmpbyte = brFmt.ReadByte();         // TofCSecTitlePos2
 | ||
| 				toc.TofCSecTitleLen = brFmt.ReadByte();
 | ||
| 				tmpfloat1 = Convert.ToInt16(brFmt.ReadSByte());
 | ||
| 				toc.TofCPageNumPos = 72 * (tmpfloat1 / 12);
 | ||
| 				toc.TofCSpaceChar = brFmt.ReadByte();
 | ||
| 				toc.TofCLineSpacing = brFmt.ReadByte();
 | ||
| 				toc.Font = LoadVE_FontByte(); ;
 | ||
| 				accsec.TableOfContentsData = toc;
 | ||
| 				for (int i = 0; i < MAXSTEPS; i++) tmpbyte = brFmt.ReadByte();
 | ||
| 
 | ||
| 				fmtdata.ProcData.CheckOffData.CheckOffAdjustment = ColToPoints(Convert.ToInt16(brFmt.ReadSByte()), _PlantDefaultFontStyle);
 | ||
| 
 | ||
| 				tmpshort = brFmt.ReadInt16();       // ColsAdjustInS2
 | ||
| 				tmpbyte = brFmt.ReadByte();         // SeriesTitleLength;
 | ||
| 
 | ||
| 				for (int i = 1; i < MAXSTEPS + 1; i++)
 | ||
| 				{
 | ||
| 					sbyte[] vp = new sbyte[15];
 | ||
| 					for (int j = 0; j < 15; j++) vp[j] = brFmt.ReadSByte();
 | ||
| 					bool hasdata = false;
 | ||
| 					for (int j = 0; j < 15; j++)
 | ||
| 					{
 | ||
| 						if (vp[j] != '\0')
 | ||
| 						{
 | ||
| 							hasdata = true;
 | ||
| 							break;
 | ||
| 						}
 | ||
| 					}
 | ||
| 					if (!hasdata)
 | ||
| 						fmtdata.StepData[i].VertPos = null;
 | ||
| 					else
 | ||
| 					{
 | ||
| 						fmtdata.StepData[i].VertPos = null;
 | ||
| 						for (int j = 0; j < 15; j++)
 | ||
| 							fmtdata.StepData[i].VertPos = fmtdata.StepData[i].VertPos + string.Format("{0},", ColToPoints(vp[j], _PlantDefaultFontStyle));
 | ||
| 						fmtdata.StepData[i].VertPos = fmtdata.StepData[i].VertPos.Substring(0, fmtdata.StepData[i].VertPos.Length - 1);  // remove last ","
 | ||
| 					}
 | ||
| 				}
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.VertStyle = LoadVE_Font();
 | ||
| 
 | ||
| 				for (int i = 0; i < 3; i++)
 | ||
| 				{
 | ||
| 					tmpfloat[i] = ColToPoints(brFmt.ReadSByte(), _PlantDefaultFontStyle);
 | ||
| 				}
 | ||
| 				tmpstr = string.Format("{0},{1},{2}", tmpfloat[0], tmpfloat[1], tmpfloat[2]);
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectLayData.TableCenterPos = tmpstr;
 | ||
| 				for (int i = 0; i < MAXSEQ; i++) fmtdata.SectData.StepSectionData.SequentialTabFormat[i].Index = i;
 | ||
| 				LeftJustify[] lftjust = new LeftJustify[MAXSEQ];
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectPrtData.LeftJustifyList = lftjust;
 | ||
| 				for (int i = 0; i < MAXSEQ; i++)
 | ||
| 				{
 | ||
| 					lftjust[i].Index = i;
 | ||
| 					lftjust[i].Size = ColToPoints(brFmt.ReadInt16(), _PlantDefaultFontStyle); //brFmt.ReadInt16();
 | ||
| 				}
 | ||
| 				MetaSection[] metsects = new MetaSection[10];
 | ||
| 				fmtdata.SectData.MetaSectionData = metsects;
 | ||
| 				for (int i = 0; i < 10; i++) metsects[i].Index = i;
 | ||
| 				for (int i = 0; i < 10; i++) metsects[i].SecNumPositionAdj = ColToPoints(brFmt.ReadSByte(), _PlantDefaultFontStyle);
 | ||
| 				for (int i = 0; i < 10; i++) metsects[i].SecTitlePositionAdj = ColToPoints(brFmt.ReadSByte(), _PlantDefaultFontStyle);
 | ||
| 				for (int i = 0; i < 10; i++) metsects[i].ColSByLevel = ColToPoints(brFmt.ReadSByte(), _PlantDefaultFontStyle);
 | ||
| 				for (int i = 0; i < 10; i++) metsects[i].TofCPositionAdj = ColToPoints(brFmt.ReadSByte(), _PlantDefaultFontStyle);
 | ||
| 				for (int i = 0; i < 10; i++) metsects[i].WidSAdjByLevel = ColToPoints(brFmt.ReadSByte(), _PlantDefaultFontStyle);
 | ||
| 
 | ||
| 				fmtdata.SectData.StepSectionData.NumberOfHighLevelSteps = brFmt.ReadByte();
 | ||
| 
 | ||
| 				for (int i = 0; i < MAXBOXES + 1; i++) fmtdata.BoxData[i].Index = i;
 | ||
| 				for (int i = 1; i < MAXBOXES + 1; i++) fmtdata.BoxData[i].TxtRowAdj = brFmt.ReadSByte();
 | ||
| 				for (int i = 1; i < MAXBOXES + 1; i++) tmpshort = brFmt.ReadByte();
 | ||
| 
 | ||
| 				for (int i = 1; i < MAXSTEPS+1; i++)
 | ||
| 				{
 | ||
| 					tmpshort = brFmt.ReadInt16();
 | ||
| 					fmtdata.StepData[i].ColOverride = (ColToPoints((tmpshort & 0x00FF), _PlantDefaultFontStyle)).ToString();
 | ||
| 					fmtdata.StepData[i].ColOverrideEdit = (ColToPoints(((tmpshort & 0xFF00)>>8), _PlantDefaultFontStyle)).ToString();
 | ||
| 				}
 | ||
| 
 | ||
| 				fmtdata.SectData.StepSectionData.NumberOfSubStepTypes = brFmt.ReadByte();
 | ||
| 
 | ||
| 				accsec.AutoContActSumSection = brFmt.ReadInt32();
 | ||
| 				fmtdata.SectData.AccSectionData = accsec;
 | ||
| 				#endregion
 | ||
| 				#region LoadStrings
 | ||
| 				long floc = brFmt.BaseStream.Position;
 | ||
| 				//////////////////
 | ||
| 				// STRINGS NOW
 | ||
| 				/////////////////
 | ||
| 
 | ||
| 				brFmt.BaseStream.Seek(tstloc, SeekOrigin.Begin);
 | ||
| 				short numstr = brFmt.ReadInt16();
 | ||
| 				short len = brFmt.ReadInt16();
 | ||
| 				byte[] input = GetByteArray(brFmt, len);
 | ||
| 
 | ||
| 				// now load in the offset info for data.
 | ||
| 				// read in the offsets from the begining of tmpstr
 | ||
| 				// this allows us to conserve on memory because duplicate strings
 | ||
| 				// will only be held once
 | ||
| 				//
 | ||
| 				Int16[] offset = new Int16[numstr];
 | ||
| 				int indx;
 | ||
| 				for (int i = 0; i < numstr; i++) offset[i] = brFmt.ReadInt16();
 | ||
| 
 | ||
| 				// Add the default box characters to be used.
 | ||
| 				fmtdata.BoxData[0].BXULC = ConvertText("\x0DA");
 | ||
| 				fmtdata.BoxData[0].BXHorz = ConvertText("\x0C4");
 | ||
| 				fmtdata.BoxData[0].BXURC = ConvertText("\x0BF");
 | ||
| 				fmtdata.BoxData[0].BXVert = ConvertText("\x0B3");
 | ||
| 				fmtdata.BoxData[0].BXMLS = ConvertText("\x0C3");
 | ||
| 				fmtdata.BoxData[0].BXMRS = ConvertText("\x0B4");
 | ||
| 				fmtdata.BoxData[0].BXLLC = ConvertText("\x0C0");
 | ||
| 				fmtdata.BoxData[0].BXLRC = ConvertText("\x0D9");
 | ||
| 				fmtdata.BoxData[0].BXMID = ConvertText("\x0C5");
 | ||
| 				fmtdata.BoxData[0].BXUMID = ConvertText("\x0C2");
 | ||
| 				fmtdata.BoxData[0].BXLMID = ConvertText("\x0C1");
 | ||
| 
 | ||
| 				// using offsets, get data & put into fields.
 | ||
| 				int arcnt = 1;  // use this to count into offset array for data.
 | ||
| 				for (int i = 1; i < MAXBOXES + 1; i++)
 | ||
| 				{
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) fmtdata.BoxData[i].BXURC = GetStringFromByte(input, indx);
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) fmtdata.BoxData[i].BXHorz = GetStringFromByte(input, indx);
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) fmtdata.BoxData[i].BXULC = GetStringFromByte(input, indx);
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) fmtdata.BoxData[i].BXVert = GetStringFromByte(input, indx);
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) fmtdata.BoxData[i].BXMLS = GetStringFromByte(input, indx);
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) fmtdata.BoxData[i].BXMRS = GetStringFromByte(input, indx);
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) fmtdata.BoxData[i].BXLRC = GetStringFromByte(input, indx);
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) fmtdata.BoxData[i].BXLLC = GetStringFromByte(input, indx);
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) fmtdata.BoxData[i].BXMID = GetStringFromByte(input, indx);
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) fmtdata.BoxData[i].BXLHorz = GetStringFromByte(input, indx);
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) fmtdata.BoxData[i].BXUMID = GetStringFromByte(input, indx);
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) fmtdata.BoxData[i].BXLMID = GetStringFromByte(input, indx);
 | ||
| 				}
 | ||
| 
 | ||
| 				// increment arcnt by 144 because there were 24 box possibilities in the
 | ||
| 				// 16bit the second 12 were rtf
 | ||
| 				arcnt = arcnt + 144;
 | ||
| 
 | ||
| 				//tabs
 | ||
| 				string[,] tabstrings = new string[MAXTABS, 2];
 | ||
| 				for (int i = 0; i < MAXTABS; i++)
 | ||
| 				{
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) tabstrings[i, 0] = GetStringFromByte(input, indx);
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) tabstrings[i, 1] = GetStringFromByte(input, indx);
 | ||
| 				}
 | ||
| 				NBRSub = fmtdata.SectData.StepSectionData.NumberOfSubStepTypes != 0 ? fmtdata.SectData.StepSectionData.NumberOfSubStepTypes : NBRSub;
 | ||
| 				for (int i = 0; i < MAXSTEPS; i++)
 | ||
| 				{
 | ||
| 					for (int j = 0; j < MAXTABS; j++)
 | ||
| 					{
 | ||
| 						if (Tabindx[i] == j)
 | ||
| 						{
 | ||
| 							fmtdata.StepData[i + 1].TabData.IdentEdit = DoTabs(fmtdata.StepData[i].TabData.Font, fmtdata.PurchaseOptions, i, tabstrings[j, 0], true);
 | ||
| 							//fmtdata.StepData[i + 1].TabData.IdentEditWid = CalculateTabWid(tabstrings[j, 0]).ToString();
 | ||
| 							fmtdata.StepData[i + 1].TabData.Ident = DoTabs(fmtdata.StepData[i].TabData.Font, fmtdata.PurchaseOptions, i, tabstrings[j, 1], true);
 | ||
| 							//fmtdata.StepData[i + 1].TabData.IdentWid = CalculateTabWid(tabstrings[j, 1]).ToString();
 | ||
| 							break;
 | ||
| 						}
 | ||
| 					}
 | ||
| 				}
 | ||
| 
 | ||
| 				// separators
 | ||
| 				for (int i = 1; i < MAXSTEPS + 1; i++)
 | ||
| 				{
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					// differentiate between an empty string and null.  An empty string is used to put out
 | ||
| 					// blank lines.  A null string means there is not any separator, thus use the string "{Null}"
 | ||
| 					// so that inheritance tests can show a difference between having a separator and not having one.
 | ||
| 					if (indx > 0) fmtdata.StepData[i].Sep = DoReplaceTokens(GetStringFromByte(input, indx));
 | ||
| 					else fmtdata.StepData[i].Sep = "{Null}";
 | ||
| 				}
 | ||
| 
 | ||
| 				// Step prefix & suffix
 | ||
| 				for (int i = 1; i < MAXSTEPS + 1; i++)
 | ||
| 				{
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) fmtdata.StepData[i].Prefix = DoReplaceTokens(GetStringFromByte(input, indx));
 | ||
| 				}
 | ||
| 				for (int i = 1; i < MAXSTEPS + 1; i++)
 | ||
| 				{
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) fmtdata.StepData[i].Suffix = DoReplaceTokens(GetStringFromByte(input, indx));
 | ||
| 				}
 | ||
| 
 | ||
| 				// IdentB & SeqTab
 | ||
| 				indx = offset[arcnt];
 | ||
| 				arcnt++;
 | ||
| 				if (indx > 0) fmtdata.SectData.StepSectionData.IdentB = GetStringFromByte(input, indx);
 | ||
| 				for (int i = 0; i < MAXSEQ; i++)
 | ||
| 				{
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0)
 | ||
| 					{
 | ||
| 						string p = GetStringFromByte(input, indx);  // seqtab.
 | ||
| 						if (p != null)
 | ||
| 						{
 | ||
| 							if (p[0] == '+')
 | ||
| 							{
 | ||
| 								string tmp = null;
 | ||
| 								if (fmtdata.SectData.StepSectionData.SequentialTabFormat[i].TabToken.IndexOf("{numeric}") > -1)
 | ||
| 								{
 | ||
| 									fmtdata.SectData.StepSectionData.SequentialTabFormat[i].TabToken = fmtdata.SectData.StepSectionData.SequentialTabFormat[i].TabToken.Replace("{numeric}", "{numericWpar}");
 | ||
| 									fmtdata.SectData.StepSectionData.SequentialTabFormat[i].TabFormat = p.Replace("+", "{seq}");
 | ||
| 								}
 | ||
| 								else if (fmtdata.SectData.StepSectionData.SequentialTabFormat[i].TabToken.IndexOf("{alpha}") > -1)
 | ||
| 								{
 | ||
| 									fmtdata.SectData.StepSectionData.SequentialTabFormat[i].TabToken = fmtdata.SectData.StepSectionData.SequentialTabFormat[i].TabToken.Replace("{alpha}", "{alphaWpar}");
 | ||
| 									fmtdata.SectData.StepSectionData.SequentialTabFormat[i].TabFormat = p.Replace("+", "{seq}");
 | ||
| 								}
 | ||
| 								else if (fmtdata.SectData.StepSectionData.SequentialTabFormat[i].TabToken.IndexOf("{ALPHA}") > -1)
 | ||
| 								{
 | ||
| 									fmtdata.SectData.StepSectionData.SequentialTabFormat[i].TabToken = fmtdata.SectData.StepSectionData.SequentialTabFormat[i].TabToken.Replace("{ALPHA}", "{ALPHAWpar}");
 | ||
| 									fmtdata.SectData.StepSectionData.SequentialTabFormat[i].TabFormat = p.Replace("+", "{seq}");
 | ||
| 								}
 | ||
| 								else
 | ||
| 									tmp = p.Replace("+", "{UNKNOWNWpar}");
 | ||
| 							}
 | ||
| 							else
 | ||
| 								fmtdata.SectData.StepSectionData.SequentialTabFormat[i].TabFormat = "{seq}" + p;
 | ||
| 						}
 | ||
| 						else
 | ||
| 							fmtdata.SectData.StepSectionData.SequentialTabFormat[i].TabFormat = null;
 | ||
| 					}
 | ||
| 					else
 | ||
| 						fmtdata.SectData.StepSectionData.SequentialTabFormat[i].TabFormat = null;
 | ||
| 					//if (indx > 0) fmtdata.SectData.StepSectionData.SequentialTabFormat[i].TabFormat = fmtdata.SectData.StepSectionData.SequentialTabFormat[i].TabFormat + GetStringFromByte(input, indx);
 | ||
| 				}
 | ||
| 				// replace word strings
 | ||
| 				for (int i = 0; i < MAXREPLACE; i++)
 | ||
| 				{
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) repstr[i].ReplaceWord = DoReplaceTokens(GetStringFromByteNoConvert(input, indx));
 | ||
| 				}
 | ||
| 				for (int i = 0; i < MAXREPLACE; i++)
 | ||
| 				{
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) repstr[i].ReplaceWith = DoReplaceTokens(GetStringFromByte(input, indx));
 | ||
| 				}
 | ||
| 
 | ||
| 				// various proc matching/data
 | ||
| 				ProcDescr[] pd = new ProcDescr[10];
 | ||
| 				for (int i = 0; i < 10; i++)
 | ||
| 				{
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) pd[i].MatchProcNumber = GetStringFromByte(input, indx);
 | ||
| 				}
 | ||
| 
 | ||
| 				for (int i = 0; i < 10; i++)
 | ||
| 				{
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) pd[i].ProcDescr1 = GetStringFromByte(input, indx);
 | ||
| 				}
 | ||
| 
 | ||
| 				for (int i = 0; i < 10; i++)
 | ||
| 				{
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) pd[i].ProcDescr2 = GetStringFromByte(input, indx);
 | ||
| 				}
 | ||
| 				fmtdata.PrintData.ProcDescrList = pd;
 | ||
| 
 | ||
| 				string[] Versid = new string[5];
 | ||
| 				for (int i = 0; i < 5; i++)
 | ||
| 				{
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) Versid[i] = GetStringFromByte(input, indx);
 | ||
| 				}
 | ||
| 				fmtdata.PrintData.VersionIdText = Versid;
 | ||
| 
 | ||
| 				// a few transition strings
 | ||
| 				indx = offset[arcnt];
 | ||
| 				arcnt++;
 | ||
| 				if (indx > 0) fmtdata.TransData.DelimiterForTransitionTitle = GetStringFromByte(input, indx);
 | ||
| 
 | ||
| 				indx = offset[arcnt];
 | ||
| 				arcnt++;
 | ||
| 				if (indx > 0) fmtdata.TransData.StepSubstepDelimeter = GetStringFromByte(input, indx);
 | ||
| 
 | ||
| 				indx = offset[arcnt];
 | ||
| 				arcnt++;
 | ||
| 				// Replace the <20> with a blank, one of the formats (cpla - robinson) used this to flag
 | ||
| 				// an underline for step numbers in transitions, but this format is no longer used.
 | ||
| 				if (indx > 0) fmtdata.TransData.ThroughString = GetStringFromByte(input, indx).Replace('<27>', ' ');
 | ||
| 
 | ||
| 				// procedure suffix data
 | ||
| 				indx = offset[arcnt];
 | ||
| 				arcnt++;
 | ||
| 				if (indx > 0) fmtdata.ProcData.ProcedureSuffixFlags = GetStringFromByte(input, indx);
 | ||
| 
 | ||
| 				fmtdata.ProcData.ProcedureSuffix = new string[10];
 | ||
| 				for (int i = 0; i < 10; i++)
 | ||
| 				{
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) fmtdata.ProcData.ProcedureSuffix[i] = GetStringFromByte(input, indx);
 | ||
| 				}
 | ||
| 
 | ||
| 				// PlantDnLoad not used - skip it.
 | ||
| 				arcnt++;
 | ||
| 
 | ||
| 				indx = offset[arcnt];
 | ||
| 				arcnt++;
 | ||
| 				if (indx > 0) fmtdata.PrintData.TopOfPageThing = DoReplaceTokens(GetStringFromByte(input, indx));
 | ||
| 
 | ||
| 				// not used: xtitle[3][10] - skip 30
 | ||
| 				arcnt = arcnt + 30;
 | ||
| 
 | ||
| 				for (int i = 0; i < MAXSTEPS + 1; i++)
 | ||
| 				{
 | ||
| 					fmtdata.StepData[i].Inactive = Inactive[i];
 | ||
| 					fmtdata.StepData[i].StepEditData.Searchable = Searchable[i];
 | ||
| 					fmtdata.StepData[i].StepEditData.TypeMenu.MenuItem = TypeMenuItem[i];
 | ||
| 					fmtdata.StepData[i].StepEditData.TypeMenu.InMenu = (fmtdata.StepData[i].Type == "RNOType" || fmtdata.StepData[i].Type == "Base") ? false.ToString() : true.ToString();
 | ||
| 
 | ||
| 					// Set all caution/note 'InMenu' to false except basic caution/note, types 6 & 7.  Use the AlternateNameList to set them to true.
 | ||
| 					if (i == 20 || i == 21 || i == 22 || i == 23 || i == 26 || i == 27 || i == 28 || i == 29 || i == 32) fmtdata.StepData[i].StepEditData.TypeMenu.InMenu = false.ToString();
 | ||
| 
 | ||
| 					fmtdata.StepData[i].StepEditData.TypeMenu.NoChgReason = NoChangeTypeReason[i];
 | ||
| 					fmtdata.StepData[i].StepEditData.TypeMenu.RnoInMenu = RnoInMenu[i];
 | ||
| 					if (fmtdata.StepData[i].Type == "Figure")
 | ||
| 						//{
 | ||
| 						//fmtdata.StepData[i].StepEditData.TypeMenu.RnoInMenu = true.ToString();
 | ||
| 						fmtdata.StepData[i].StepEditData.TypeMenu.RnoMenuItem = "With Border";
 | ||
| 					//}
 | ||
| 					else if (fmtdata.StepData[i].Type == "Table")
 | ||
| 						fmtdata.StepData[i].StepEditData.TypeMenu.RnoMenuItem = "Table";
 | ||
| 					else if (fmtdata.StepData[i].Type == "BorderlessTable" || fmtdata.StepData[i].Type == "BorderlessFigure")
 | ||
| 						//{
 | ||
| 						//fmtdata.StepData[i].StepEditData.TypeMenu.RnoInMenu = true.ToString();
 | ||
| 						fmtdata.StepData[i].StepEditData.TypeMenu.RnoMenuItem = "Without Border";
 | ||
| 
 | ||
| 					//}
 | ||
| 					//else if (fmtdata.StepData[i].Type == "AERTable" || fmtdata.StepData[i].Type == "BorderlessAERTable" || fmtdata.StepData[i].Type == "AERFigure" || fmtdata.StepData[i].Type == "BorderlessAERFigure")
 | ||
| 					//    fmtdata.StepData[i].StepEditData.TypeMenu.RnoInMenu = false.ToString();
 | ||
| 					if (fmtdata.StepData[i].Type.Contains("Borderless") && fmtdata.StepData[i].Type.Contains("Table")) fmtdata.StepData[i].Inactive = true.ToString();
 | ||
| 				}
 | ||
| 				// fmtdata.SectData.StepSectionData.TextType = new string[10];
 | ||
| 				// Set up the text type fields - these are used to define what types of steps the current step
 | ||
| 				// can be changed to..
 | ||
| 				_AlternateIndex = null;
 | ||
| 				int[] tmparray ={ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
 | ||
| 				for (int i = 0; i < 10; i++)
 | ||
| 				{
 | ||
| 
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0)
 | ||
| 					{
 | ||
| 						string tmpstring = GetStringFromByte(input, indx);
 | ||
| 						// put this in the step data alternatename field.  If there already is one.  stop
 | ||
| 						// here for now to see this!.
 | ||
| 						//if (fmtdata.StepData[TextTypeValue[i] + 1].StepEditData.TypeMenu.MenuItem != null && fmtdata.StepData[TextTypeValue[i] + 1].StepEditData.TypeMenu.MenuItem != tmpstring)
 | ||
| 						//	Console.WriteLine("different name, " + fmtdata.StepData[TextTypeValue[i] + 1].StepEditData.TypeMenu.MenuItem + ", " + tmpstring);
 | ||
| 						fmtdata.StepData[TextTypeValue[i] + 1].StepEditData.TypeMenu.MenuItem = tmpstring;
 | ||
| 
 | ||
| 						_AlternateIndex = (_AlternateIndex == null) ? fmtdata.StepData[TextTypeValue[i] + 1].Type : _AlternateIndex + "," + fmtdata.StepData[TextTypeValue[i] + 1].Type;
 | ||
| 						//fmtdata.SectData.StepSectionData.TextType[i] = GetStringFromByte(input, indx);
 | ||
| 					}
 | ||
| 
 | ||
| 				}
 | ||
| 				if (_AlternateIndex != null)
 | ||
| 				{
 | ||
| 					// For any step types in the texttypevalue list, add the alternatename list:
 | ||
| 					for (int i = 0; i < 10; i++)
 | ||
| 					{
 | ||
| 						// this was only used for cautions/notes - so only add if texttypevalue isn't 0, 0 was substep and it
 | ||
| 						// was getting set for substeps, that can never have an alternate type - at least from
 | ||
| 						// format->xml migration.
 | ||
| 						if (TextTypeValue[i] != 0)
 | ||
| 						{
 | ||
| 							fmtdata.StepData[TextTypeValue[i] + 1].StepEditData.TypeMenu.AlternateNameList = _AlternateIndex;
 | ||
| 							fmtdata.StepData[TextTypeValue[i] + 1].StepEditData.TypeMenu.InMenu = true.ToString();
 | ||
| 						}
 | ||
| 					}
 | ||
| 				}
 | ||
| 				// not used, SectionsToPrint - 10; SectionNumberMask - 10; SectionsToPrintTitle - 10; 
 | ||
| 				// DocumentTitleExtensions - 10; DocumentFixFileExtensions - 10;
 | ||
| 
 | ||
| 				arcnt = arcnt + 50;
 | ||
| 
 | ||
| 				// some seqtab data.
 | ||
| 				string[] tmpSeqStrings = new string[MAXSEQ];
 | ||
| 				for (int i = 0; i < MAXSEQ; i++)
 | ||
| 				{
 | ||
| 					tmpSeqStrings[i] = fmtdata.SectData.StepSectionData.SequentialTabFormat[i].TabFormat;
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) // PreSeqTab - Edit
 | ||
| 						fmtdata.SectData.StepSectionData.SequentialTabFormat[i].TabFormat = GetStringFromByte(input, indx) + tmpSeqStrings[i];
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0)  // PreSeqTab - Print
 | ||
| 						fmtdata.SectData.StepSectionData.SequentialTabFormat[i].PrintTabFormat = GetStringFromByte(input, indx).Replace("\x08", "{0x08}") + tmpSeqStrings[i];
 | ||
| 					else
 | ||
| 						fmtdata.SectData.StepSectionData.SequentialTabFormat[i].PrintTabFormat = tmpSeqStrings[i];
 | ||
| 					//tmpstr = GetStringFromByte(input, indx).Replace("\x08", "");
 | ||
| 				}
 | ||
| 				for (int i = 0; i < MAXSEQ; i++)
 | ||
| 				{
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) // PostSeqTab - Edit
 | ||
| 						fmtdata.SectData.StepSectionData.SequentialTabFormat[i].TabFormat += GetStringFromByte(input, indx);
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) // PostSeqTab - Print
 | ||
| 						fmtdata.SectData.StepSectionData.SequentialTabFormat[i].PrintTabFormat += GetStringFromByte(input, indx);
 | ||
| 				}
 | ||
| 
 | ||
| 				indx = offset[arcnt];
 | ||
| 				arcnt++;
 | ||
| 				if (indx > 0) fmtdata.SectData.StepSectionData.StpSectPrtData.RNOSepString = DoReplaceTokens(GetStringFromByte(input, indx));
 | ||
| 
 | ||
| 				fmtdata.SectData.StepSectionData.UnderlineTerminate = new string[10];
 | ||
| 				for (int i = 0; i < 10; i++)
 | ||
| 				{
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) fmtdata.SectData.StepSectionData.UnderlineTerminate[i] = GetStringFromByte(input, indx);
 | ||
| 				}
 | ||
| 
 | ||
| 				fmtdata.SectData.StepSectionData.StpSectPrtData.ImmStepHdr = new string[2];
 | ||
| 				for (int i = 0; i < 2; i++)
 | ||
| 				{
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) fmtdata.SectData.StepSectionData.StpSectPrtData.ImmStepHdr[i] = GetStringFromByte(input, indx);
 | ||
| 				}
 | ||
| 				for (int i = 0; i < 5; i++)
 | ||
| 				{
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) fmtdata.StepData[this.altsteps[i]].StepEditData.TypeMenu.MenuItem = GetStringFromByte(input, indx);
 | ||
| 					//if (indx > 0) fmtdata.StepData[TextTypeValue[i]].StepEditData.TypeMenu.MenuItem = GetStringFromByte(input, indx);
 | ||
| 				}
 | ||
| 				string mytmp = null;
 | ||
| 				for (int i = 0; i < 16; i++)
 | ||
| 				{
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) fmtdata.StepData[this.altsubsteps[i]].StepEditData.TypeMenu.MenuItem = GetStringFromByte(input, indx);
 | ||
| 				}
 | ||
| 
 | ||
| 				indx = offset[arcnt];
 | ||
| 				arcnt++;
 | ||
| 				if (indx > 0) fmtdata.ProcData.ChangeBarData.SpecialChangeBar = DoReplaceTokens(GetStringFromByte(input, indx));
 | ||
| 
 | ||
| 				// not used - ImperfectStructureSeparator
 | ||
| 				arcnt++;
 | ||
| 
 | ||
| 				fmtdata.SectData.StepSectionData.ObserveNCString1 = new string[4];
 | ||
| 				fmtdata.SectData.StepSectionData.ObserveNCString2 = new string[4];
 | ||
| 				for (int i = 0; i < 4; i++)
 | ||
| 				{
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) fmtdata.SectData.StepSectionData.ObserveNCString1[i] = DoReplaceTokens(GetStringFromByteNoConvert(input, indx));
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) fmtdata.SectData.StepSectionData.ObserveNCString2[i] = DoReplaceTokens(GetStringFromByteNoConvert(input, indx));
 | ||
| 				}
 | ||
| 
 | ||
| 				for (int i = 1; i < MAXSTEPS + 1; i++)
 | ||
| 				{
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0)
 | ||
| 						fmtdata.StepData[i].UnderlineTheseChar = GetStringFromByte(input, indx);
 | ||
| 				}
 | ||
| 
 | ||
| 				// not used - SubScriptTheseChar
 | ||
| 				arcnt++;
 | ||
| 
 | ||
| 				bool hasMenuItem = false;
 | ||
| 				for (int i = 0; i < MAXCHECKOFFS; i++)
 | ||
| 				{
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0)
 | ||
| 					{
 | ||
| 						fmtdata.ProcData.CheckOffData.CheckOffList[i].MenuItem = GetStringFromByte(input, indx);
 | ||
| 						hasMenuItem = true;
 | ||
| 					}
 | ||
| 				}
 | ||
| 
 | ||
| 				if (hasMenuItem)
 | ||
| 				{
 | ||
| 					fmtdata.ProcData.CheckOffData.Menu = "Checkoff";
 | ||
| 					for (int i = 0; i < MAXCHECKOFFS; i++)
 | ||
| 						if (i > 1) fmtdata.ProcData.CheckOffData.CheckOffList[i].Macro = "C" + i.ToString();
 | ||
| 				}
 | ||
| 				// add signoff menuitems which are Endabled/Disabled & also Menu
 | ||
| 				if (rightCheckOffBox[0] != 0 && rightCheckOffBox[1] != 0)
 | ||
| 				{
 | ||
| 					fmtdata.ProcData.CheckOffData.Menu = "Signoff";
 | ||
| 					fmtdata.ProcData.CheckOffData.CheckOffList[0].Index = 0;
 | ||
| 					fmtdata.ProcData.CheckOffData.CheckOffList[0].MenuItem = "Enabled";
 | ||
| 					fmtdata.ProcData.CheckOffData.CheckOffList[0].Macro = "C1";
 | ||
| 					fmtdata.ProcData.CheckOffData.CheckOffList[1].Index = 1;
 | ||
| 					fmtdata.ProcData.CheckOffData.CheckOffList[1].MenuItem = "Disabled";
 | ||
| 					if (rightCheckOffBox[0] == -2 && rightCheckOffBox[1] == -2) fmtdata.ProcData.CheckOffData.SkipSpaces = "true";
 | ||
| 					else
 | ||
| 					{
 | ||
| 						fmtdata.ProcData.CheckOffData.LayoutList[0].RnoLevel = "0";
 | ||
| 						fmtdata.ProcData.CheckOffData.LayoutList[0].Column = rightCheckOffBox[0];
 | ||
| 						fmtdata.ProcData.CheckOffData.LayoutList[0].RnoLevel = "1";
 | ||
| 						fmtdata.ProcData.CheckOffData.LayoutList[0].Column = rightCheckOffBox[1];
 | ||
| 					}
 | ||
| 				}
 | ||
| 				for (int i = 0; i < MAXCHKHEADINGS; i++)
 | ||
| 				{
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) fmtdata.ProcData.CheckOffData.CheckOffHeaderList[i].CheckOffHeading = DoReplaceTokens(GetStringFromByte(input, indx));
 | ||
| 				}
 | ||
| 
 | ||
| 				// not used - WindEditFile
 | ||
| 				arcnt++;
 | ||
| 
 | ||
| 				indx = offset[arcnt];
 | ||
| 				arcnt++;
 | ||
| 				if (indx > 0) tmpstr = GetStringFromByte(input, indx);
 | ||
| 
 | ||
| 				// not used - RNOPreSeqTab[9][2]
 | ||
| 				arcnt = arcnt + 18;
 | ||
| 
 | ||
| 				indx = offset[arcnt];
 | ||
| 				arcnt++;
 | ||
| 				if (indx > 0) fmtdata.SectData.StepSectionData.StpSectPrtData.HLStpSeparatorString = GetStringFromByte(input, indx);
 | ||
| 
 | ||
| 				indx = offset[arcnt];
 | ||
| 				arcnt++;
 | ||
| 				if (indx > 0) fmtdata.SectData.StepSectionData.StpSectPrtData.HLRNOStpSeparatorString = GetStringFromByte(input, indx);
 | ||
| 
 | ||
| 				for (int i = 0; i < MAXTABS; i++)
 | ||
| 				{
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) tabstrings[i, 0] = GetStringFromByte(input, indx);
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) tabstrings[i, 1] = GetStringFromByte(input, indx);
 | ||
| 				}
 | ||
| 				for (int i = 0; i < MAXSTEPS; i++)
 | ||
| 				{
 | ||
| 					for (int j = 0; j < MAXTABS; j++)
 | ||
| 					{
 | ||
| 						if (Tabindx[i] == j)
 | ||
| 						{
 | ||
| 							fmtdata.StepData[i + 1].TabData.RNOIdentEdit = DoTabs(fmtdata.StepData[i].TabData.Font, fmtdata.PurchaseOptions, i, tabstrings[j, 0], fmtdata.StepData[i].StepNumberForHighLevel == "True");
 | ||
| 							//fmtdata.StepData[i + 1].TabData.RNOIdentEditWid = CalculateTabWid(tabstrings[j, 0]).ToString();
 | ||
| 							fmtdata.StepData[i + 1].TabData.RNOIdent = DoTabs(fmtdata.StepData[i].TabData.Font, fmtdata.PurchaseOptions, i, tabstrings[j, 1], fmtdata.StepData[i].StepNumberForHighLevel == "True");
 | ||
| 							//fmtdata.StepData[i + 1].TabData.RNOIdentWid = CalculateTabWid(tabstrings[j, 1]).ToString();
 | ||
| 							break;
 | ||
| 						}
 | ||
| 					}
 | ||
| 				}
 | ||
| 
 | ||
| 				indx = offset[arcnt];
 | ||
| 				arcnt++;
 | ||
| 				if (indx > 0) fmtdata.SectData.StepSectionData.StpSectLayData.LowerLimitDivisor = GetStringFromByte(input, indx);
 | ||
| 
 | ||
| 				// If the DoSectionTrans flag is set, use DefaultSectionTransStr for defaults, 
 | ||
| 				// otherwise use the DefaultTransStr. The DoSectionTransTypeB flags just 
 | ||
| 				// replaces the [5] item in the DefaultSectionTransStr array.  I'll reset
 | ||
| 				// if this flag isn't used since formats are processed in a loop and only want
 | ||
| 				// the change to the default for the current format if the flag is set in it.
 | ||
| 				if (XtraFlags.DoSectionTransTypeB == "True")
 | ||
| 				{
 | ||
| 					DefaultSectionTransTokenStr[5] = DefaultSectionTransStrTypeB;
 | ||
| 					DefaultSectionTransFormatStr[5] = DefaultSectionTransStrTypeB;
 | ||
| 				}
 | ||
| 				else  // if flag not set, just reset default in case used in one of next formats.
 | ||
| 				{
 | ||
| 					DefaultSectionTransTokenStr[5] = DefaultSectionTransStrTypeBNone;
 | ||
| 					DefaultSectionTransFormatStr[5] = DefaultSectionTransStrTypeBNone;
 | ||
| 				}
 | ||
| 
 | ||
| 				// If the plant uses the TransProcTitleInParen flag, then place parens
 | ||
| 				// around the proc & section titles.
 | ||
| 				if (XtraFlags.TranProcTitleInParen == "True")
 | ||
| 				{
 | ||
| 					DefaultTransStr[0] = "{Proc Num} ({Proc Title}) Step {First Step}";
 | ||
| 					DefaultTransStr[3] = "{First Step} thru {Last Step} of {Proc Num} ({Proc Title}) ({Sect Hdr})";
 | ||
| 					DefaultTransStr[4] = "({Sect Title}), Step {First Step}";
 | ||
| 					DefaultTransStr[5] = "{Proc Num}, ({Proc Title}) ({Sect Hdr}), Step {First Step}";
 | ||
| 				}
 | ||
| 				if (fmtdata.TransData.ThroughString != null && fmtdata.TransData.ThroughString != "")
 | ||
| 				{
 | ||
| 					DefaultTransStr[3] = DefaultTransStr[3].Replace(" thru ", fmtdata.TransData.ThroughString);
 | ||
| 					DefaultSectionTransTokenStr[3] = DefaultSectionTransTokenStr[3].Replace(" thru ", fmtdata.TransData.ThroughString);
 | ||
| 					DefaultSectionTransFormatStr[3] = DefaultSectionTransFormatStr[3].Replace(" thru ", fmtdata.TransData.ThroughString);
 | ||
| 				}
 | ||
| 				for (int i = 0; i < MAXTRANS; i++)
 | ||
| 				{
 | ||
| 					fmtdata.TransData.TransTypeData[i].Index = i;
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) fmtdata.TransData.TransTypeData[i].TransFormat = ConvertTransFormat(GetStringFromByteNoConvert(input, indx));
 | ||
| 					else if (i < 6)
 | ||
| 					{
 | ||
| 						fmtdata.TransData.TransTypeData[i].TransFormat = XtraFlags.DoSectionTrans == "True" ? DefaultSectionTransFormatStr[i] : DefaultTransStr[i];
 | ||
| 						fmtdata.TransData.TransTypeData[i].TransType = (byte)i; // reset type
 | ||
| 					}
 | ||
| 				}
 | ||
| 
 | ||
| 				for (int i = 0; i < MAXTRANS; i++)
 | ||
| 				{
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx > 0) fmtdata.TransData.TransTypeData[i].TransMenu = ConvertTransFormat(GetStringFromByteNoConvert(input, indx));
 | ||
| 					else if (i < 6)
 | ||
| 					{
 | ||
| 						fmtdata.TransData.TransTypeData[i].TransMenu = XtraFlags.DoSectionTrans == "True" ? DefaultSectionTransTokenStr[i] : DefaultTransStr[i];
 | ||
| 						fmtdata.TransData.TransTypeData[i].TransType = (byte)i; // reset type
 | ||
| 					}
 | ||
| 				}
 | ||
| 				for (int i = 0; i < MAXTRANS; i++)
 | ||
| 				{
 | ||
| 					if (fmtdata.TransData.TransTypeData[i].TransFormat != null && fmtdata.TransData.TransTypeData[i].TransMenu != null) fmtdata.TransData.TransTypeData[i].TransUI = GetTransUIEnum(fmtdata.TransData.TransTypeData[i].TransFormat, fmtdata.TransData.TransTypeData[i].TransMenu);
 | ||
| 				}
 | ||
| 				// if in dosectiontransitions, put the format/menu strings back to original
 | ||
| 				//if (XtraFlags.DoSectionTrans == "True")
 | ||
| 				//{
 | ||
| 				//    for (int i = 0; i < MAXTRANS; i++)
 | ||
| 				//    {
 | ||
| 				//        if (i < 6 && fmtdata.TransData.TransTypeData[i].TransMenu != null)
 | ||
| 				//        {
 | ||
| 				//            fmtdata.TransData.TransTypeData[i].TransFormat = DefaultSectionTransFormatStr[i];
 | ||
| 				//            fmtdata.TransData.TransTypeData[i].TransMenu = DefaultSectionTransFormatStr[i];
 | ||
| 
 | ||
| 				//        }
 | ||
| 				//    }
 | ||
| 				//}
 | ||
| 				//arcnt = arcnt + MAXTRANS;
 | ||
| 
 | ||
| 				// not used OutsideTransFmt & OutsideTransMenu
 | ||
| 				arcnt = arcnt + (MAXTRANS * 2);
 | ||
| 
 | ||
| 				indx = offset[arcnt];
 | ||
| 				arcnt++;
 | ||
| 				if (indx > 0) fmtdata.SectData.StepSectionData.StpSectLayData.NonLinkedStepNumber = GetStringFromByte(input, indx);
 | ||
| 
 | ||
| 				//not used BldLstFile
 | ||
| 				arcnt++;
 | ||
| 				// AltPrintTBIdent (20 items)
 | ||
| 				//arcnt += MAXTABS;
 | ||
| 				for (int j = 0; j < MAXTABS; j++)
 | ||
| 				{
 | ||
| 					indx = offset[arcnt];
 | ||
| 					arcnt++;
 | ||
| 					if (indx != 0)
 | ||
| 					{
 | ||
| 						string ts = GetStringFromByte(input, indx);
 | ||
| 						for (int i = 0; i < MAXSTEPS; i++)
 | ||
| 						{
 | ||
| 							if (Tabindx[i] == j)
 | ||
| 							{
 | ||
| 								fmtdata.StepData[i + 1].TabData.IdentAltPrint = ts;
 | ||
| 								break;
 | ||
| 							}
 | ||
| 						}
 | ||
| 					}
 | ||
| 				}
 | ||
| 
 | ||
| 				indx = offset[arcnt];
 | ||
| 				arcnt++;
 | ||
| 				if (indx > 0) fmtdata.SectData.StepSectionData.StpSectLayData.NonLinkedCautNoteNumber = GetStringFromByte(input, indx);
 | ||
| 
 | ||
| 				indx = offset[arcnt];
 | ||
| 				arcnt++;
 | ||
| 				if (indx > 0) fmtdata.PrintData.DuplexBGDirectory = GetStringFromByte(input, indx);
 | ||
| 
 | ||
| 				indx = offset[arcnt];
 | ||
| 				arcnt++;
 | ||
| 				if (indx > 0) fmtdata.PrintData.DuplexDDDirectory = GetStringFromByte(input, indx);
 | ||
| 
 | ||
| 				indx = offset[arcnt];
 | ||
| 				arcnt++;
 | ||
| 				if (indx > 0) fmtdata.SectData.StepSectionData.StpSectLayData.NonLinkedRNONumber = GetStringFromByte(input, indx);
 | ||
| 
 | ||
| 				#endregion
 | ||
| 			}
 | ||
| 			catch (Exception ex)
 | ||
| 			{
 | ||
| 				Console.WriteLine("Error on read - format = {0}", fmtdata.Name);
 | ||
| 				Console.WriteLine(ex.Message);
 | ||
| 				Console.WriteLine();
 | ||
| 				return false;
 | ||
| 			}
 | ||
| 			return AdjustFlags(ref fmtdata, ref XtraFlags);
 | ||
| 		}
 | ||
| 
 | ||
| 		/// <summary>
 | ||
| 		/// Replace invalid characters with a special sequence
 | ||
| 		/// </summary>
 | ||
| 		/// <param name="str"></param>
 | ||
| 		/// <returns></returns>
 | ||
| 		private string FixXmlString(string str)
 | ||
| 		{
 | ||
| 			// http://www.w3.org/TR/2000/REC-xml-20001006#NT-Char
 | ||
| 			// http://cse-mjmcl.cse.bris.ac.uk/blog/2007/02/14/1171465494443.html
 | ||
| 			// The regular expression below find any invalid characters
 | ||
| 			// by looking for characters that are not valid
 | ||
| 			MatchCollection matches = Regex.Matches(str, @"[^\x09\x0A\x0D\x20-\uD7FF\uE000-\uFFFD]");
 | ||
| 			int lastIndex = 0;
 | ||
| 			StringBuilder sb = new StringBuilder();
 | ||
| 			int len = str.Length;
 | ||
| 			foreach (Match match in matches)
 | ||
| 			{
 | ||
| 				sb.Append(str.Substring(lastIndex, match.Index - lastIndex));
 | ||
| 				foreach (char c in match.Value)
 | ||
| 					sb.Append(string.Format("[({0:X04}])", (int)c));
 | ||
| 				lastIndex = match.Index + match.Length;
 | ||
| 			}
 | ||
| 			sb.Append(str.Substring(lastIndex));
 | ||
| 			return sb.ToString();
 | ||
| 		}
 | ||
| 
 | ||
| 		private bool AdjustFlags(ref FormatData fmtdata, ref XtraFlgs XtraFlags)
 | ||
| 		{
 | ||
| 			// do format flags here - this will get yucky!!!
 | ||
| 			#region StepFlags
 | ||
| 			int step = 0;
 | ||
| 			try
 | ||
| 			{
 | ||
| 				for (int i = 0; i < MAXSTEPS + 1; i++)
 | ||
| 				{
 | ||
| 					step = i;
 | ||
| 					// Do base here
 | ||
| 					if (i == 0)
 | ||
| 					{
 | ||
| 						// All types get this thru inheritance
 | ||
| 						if (XtraFlags.SeparateBox == "True") fmtdata.StepData[i].SeparateBox = "True";
 | ||
| 						else fmtdata.StepData[i].SeparateBox = "False";
 | ||
| 						// All types get this thru inheritance
 | ||
| 						if (XtraFlags.LJTabs == "True") fmtdata.StepData[i].LJTabs = "True";
 | ||
| 						else fmtdata.StepData[i].LJTabs = "False";
 | ||
| 					}
 | ||
| 					if (i == 1)				// Sequential flags  - new name will be substeps
 | ||
| 					{
 | ||
| 						if (XtraFlags.BoxedSubsteps == "True") fmtdata.StepData[i].Boxed = "True";
 | ||
| 						else fmtdata.StepData[i].Boxed = "False";
 | ||
| 
 | ||
| 						if (XtraFlags.UnderlineAfterDashSpace == "True") fmtdata.StepData[i].UnderlineAfterDashSpace = "True";
 | ||
| 						else fmtdata.StepData[i].UnderlineAfterDashSpace = "False";
 | ||
| 
 | ||
| 						if (XtraFlags.TextSubFollowsTextStyle == "True") fmtdata.StepData[i].TextSubFollowsTextStyle = "True";
 | ||
| 						else fmtdata.StepData[i].TextSubFollowsTextStyle = "False";
 | ||
| 
 | ||
| 						if (XtraFlags.DontStartLineWithDash == "True") fmtdata.StepData[i].StartLineWithDash = "False";
 | ||
| 						else fmtdata.StepData[i].StartLineWithDash = "True";
 | ||
| 
 | ||
| 						if (XtraFlags.NoBlankLineBeforeSubstep == "True") fmtdata.StepData[i].BlankLineBeforeSubStep = "False";
 | ||
| 						else fmtdata.StepData[i].BlankLineBeforeSubStep = "True";
 | ||
| 					}
 | ||
| 					else if (i == 2)		// High
 | ||
| 					{
 | ||
| 						// All High get this thru inheritance
 | ||
| 						if (XtraFlags.EnhancedStepNumFromPrev == "True") fmtdata.StepData[i].EnhancedStepNumFromPrev = "True";
 | ||
| 						else fmtdata.StepData[i].EnhancedStepNumFromPrev = "False";
 | ||
| 
 | ||
| 						// All High get this thru inheritance
 | ||
| 						if (XtraFlags.UseSmartTemplate == "True") fmtdata.StepData[i].UseSmartTemplate = "True";
 | ||
| 						else fmtdata.StepData[i].UseSmartTemplate = "False";
 | ||
| 
 | ||
| 						// All High get this thru inheritance
 | ||
| 						if (XtraFlags.BoxContinousActions == "True") fmtdata.StepData[i].Boxed = "True";
 | ||
| 						else fmtdata.StepData[i].Boxed = "False";
 | ||
| 
 | ||
| 						// All High get this thru inheritance
 | ||
| 						if (XtraFlags.Xlines_StepFix == "True") fmtdata.StepData[i].XLines_StepFix = "True";
 | ||
| 						else fmtdata.StepData[i].XLines_StepFix = "False";
 | ||
| 
 | ||
| 						// All High get this thru inheritance
 | ||
| 						if (XtraFlags.UseAlternateStepBox == "True") fmtdata.StepData[i].UseAlternateStepBox = "True";
 | ||
| 						else fmtdata.StepData[i].UseAlternateStepBox = "False";
 | ||
| 
 | ||
| 						// All High get this thru inheritance
 | ||
| 						if (XtraFlags.UnderlineAfterDashSpace == "True") fmtdata.StepData[i].UnderlineAfterDashSpace = "True";
 | ||
| 						else fmtdata.StepData[i].UnderlineAfterDashSpace = "False";
 | ||
| 
 | ||
| 						// All High get this thru inheritance
 | ||
| 						if (XtraFlags.PageBreakOnHighLevelStep == "True") fmtdata.StepData[i].PageBreakOnStep = "True";
 | ||
| 						else fmtdata.StepData[i].PageBreakOnStep = "False";
 | ||
| 
 | ||
| 						// All High get this thru inheritance
 | ||
| 						if (XtraFlags.AlignNullTabWSectHead == "True") fmtdata.StepData[i].AlignNullTabWSectHead = "True";
 | ||
| 						else fmtdata.StepData[i].AlignNullTabWSectHead = "False";
 | ||
| 
 | ||
| 						// All High get this thru inheritance
 | ||
| 						if (XtraFlags.HLSTextInPagelist == "True") fmtdata.StepData[i].InPageList = "True";
 | ||
| 						else fmtdata.StepData[i].InPageList = "False";
 | ||
| 
 | ||
| 						// All High get this thru inheritance
 | ||
| 						if (XtraFlags.NoStepNumIfOnlyOneStep == "True") fmtdata.StepData[i].StepNumIfOnlyOne = "False";
 | ||
| 						else fmtdata.StepData[i].StepNumIfOnlyOne = "True";
 | ||
| 
 | ||
| 						// All High get this thru inheritance
 | ||
| 						if (XtraFlags.AtLeastTwoDigitsForHLS == "True") fmtdata.StepData[i].AtLeastTwoDigits = "True";
 | ||
| 						else fmtdata.StepData[i].AtLeastTwoDigits = "False";
 | ||
| 
 | ||
| 						// All High get this thru inheritance
 | ||
| 						if (XtraFlags.DontNumberHighLevelSteps == "True") fmtdata.StepData[i].Number = "False";
 | ||
| 						else fmtdata.StepData[i].Number = "True";
 | ||
| 					}
 | ||
| 					else if (i == 3)		// Immediate
 | ||
| 					{
 | ||
| 						if (XtraFlags.IMMStepSpcHdr == "True") fmtdata.StepData[i].SpcHdr = "True";
 | ||
| 						else fmtdata.StepData[i].SpcHdr = "False";
 | ||
| 					}
 | ||
| 					else if (i == 4)		// And
 | ||
| 					{
 | ||
| 						// All And get this thru inheritance
 | ||
| 						if (XtraFlags.UnderlineAfterDashSpace == "True") fmtdata.StepData[i].UnderlineAfterDashSpace = "True";
 | ||
| 						else fmtdata.StepData[i].UnderlineAfterDashSpace = "False";
 | ||
| 
 | ||
| 						// All And get this thru inheritance
 | ||
| 						if (XtraFlags.TreatAndOrAsSequential == "True") fmtdata.StepData[i].TreatAsSequential = "True";
 | ||
| 						else fmtdata.StepData[i].TreatAsSequential = "False";
 | ||
| 					}
 | ||
| 					else if (i == 5)		// Or
 | ||
| 					{
 | ||
| 						// All Or get this thru inheritance
 | ||
| 						if (XtraFlags.UnderlineAfterDashSpace == "True") fmtdata.StepData[i].UnderlineAfterDashSpace = "True";
 | ||
| 						else fmtdata.StepData[i].UnderlineAfterDashSpace = "False";
 | ||
| 
 | ||
| 						// All Or get this thru inheritance
 | ||
| 						if (XtraFlags.TreatAndOrAsSequential == "True") fmtdata.StepData[i].TreatAsSequential = "True";
 | ||
| 						else fmtdata.StepData[i].TreatAsSequential = "False";
 | ||
| 
 | ||
| 					}
 | ||
| 					else if (i == 6)		// Caution
 | ||
| 					{
 | ||
| 						// All Cautions get this thru inheritance
 | ||
| 						if (XtraFlags.EnhancedStepNumFromPrev == "True") fmtdata.StepData[i].EnhancedStepNumFromPrev = "True";
 | ||
| 						else fmtdata.StepData[i].EnhancedStepNumFromPrev = "False";
 | ||
| 
 | ||
| 						// All Cautions get this thru inheritance
 | ||
| 						if (XtraFlags.AlwaysUseExtralines == "True") fmtdata.StepData[i].AlwaysUseExtraLines = "True";
 | ||
| 						else fmtdata.StepData[i].AlwaysUseExtraLines = "False";
 | ||
| 
 | ||
| 						// All Cautions get this thru inheritance
 | ||
| 						if (XtraFlags.SeparateBoxCautions == "True") fmtdata.StepData[i].SeparateBoxCautions = "True";
 | ||
| 						else fmtdata.StepData[i].SeparateBoxCautions = "False";
 | ||
| 
 | ||
| 						// All Cautions get this thru inheritance
 | ||
| 						if (XtraFlags.ReduceLineAfterNoteAndCaut == "True") fmtdata.StepData[i].ReduceLineAfter = "True";
 | ||
| 						else fmtdata.StepData[i].ReduceLineAfter = "False";
 | ||
| 
 | ||
| 						// All Cautions get this thru inheritance
 | ||
| 						if (XtraFlags.OneLineBeforeNoteCautionTab == "True") fmtdata.StepData[i].OneLineBeforeTab = "True";
 | ||
| 						else fmtdata.StepData[i].OneLineBeforeTab = "False";
 | ||
| 
 | ||
| 						// All Cautions get this thru inheritance
 | ||
| 						if (XtraFlags.ReBoxCautNote == "True") fmtdata.StepData[i].Rebox = "True";
 | ||
| 						else fmtdata.StepData[i].Rebox = "False";
 | ||
| 
 | ||
| 						// All Cautions get this thru inheritance
 | ||
| 						if (XtraFlags.UnderlineAfterDashSpace == "True") fmtdata.StepData[i].UnderlineAfterDashSpace = "True";
 | ||
| 						else fmtdata.StepData[i].UnderlineAfterDashSpace = "False";
 | ||
| 
 | ||
| 						// All Cautions get this thru inheritance
 | ||
| 						if (XtraFlags.NoSpaceInNoteOrCaution == "True") fmtdata.StepData[i].SpaceIn = "False";
 | ||
| 						else fmtdata.StepData[i].SpaceIn = "True";
 | ||
| 
 | ||
| 						// All Cautions get this thru inheritance
 | ||
| 						if (XtraFlags.PageBreakOnCautions == "True") fmtdata.StepData[i].PageBreakOnStep = "True";
 | ||
| 						else fmtdata.StepData[i].PageBreakOnStep = "False";
 | ||
| 
 | ||
| 						// All Cautions get this thru inheritance
 | ||
| 						if (XtraFlags.MatchUpRNOCautNote == "True") fmtdata.StepData[i].MatchUpRNO = "True";
 | ||
| 						else fmtdata.StepData[i].MatchUpRNO = "False";
 | ||
| 
 | ||
| 						// All Cautions get this thru inheritance
 | ||
| 						if (XtraFlags.StpCautNoteTabInPagelist == "True") fmtdata.StepData[i].InPageList = "True";
 | ||
| 						else fmtdata.StepData[i].InPageList = "False";
 | ||
| 
 | ||
| 						// All Cautions get this thru inheritance
 | ||
| 						if (XtraFlags.CenterOneLineOnly == "True") fmtdata.StepData[i].CenterOneLineOnly = "True";
 | ||
| 						else fmtdata.StepData[i].CenterOneLineOnly = "False";
 | ||
| 
 | ||
| 						// All Cautions get this thru inheritance
 | ||
| 						if (XtraFlags.RememberCautionsAndNotes == "True") fmtdata.StepData[i].Remember = "True";
 | ||
| 						else fmtdata.StepData[i].Remember = "False";
 | ||
| 
 | ||
| 						// All Cautions get this thru inheritance
 | ||
| 						if (XtraFlags.CenterOneLineAdjust == "True") fmtdata.StepData[i].CenterOneLineAdjust = "True";
 | ||
| 						else fmtdata.StepData[i].CenterOneLineAdjust = "False";
 | ||
| 
 | ||
| 						// All Cautions get this thru inheritance
 | ||
| 						if (XtraFlags.DontBreakCautionsOrNotes == "True") fmtdata.StepData[i].Break = "False";
 | ||
| 						else fmtdata.StepData[i].Break = "True";
 | ||
| 
 | ||
| 						// All Cautions get this thru inheritance
 | ||
| 						if (XtraFlags.CenterTextWithinWidth == "True") fmtdata.StepData[i].CenterTextWithinWidth = "True";
 | ||
| 						else fmtdata.StepData[i].CenterTextWithinWidth = "False";
 | ||
| 
 | ||
| 						// All Cautions get this thru inheritance
 | ||
| 						if (XtraFlags.DontBreakCautionsNotesOnSubstps == "True") fmtdata.StepData[i].BreakCautionsNotesOnSubstps = "False";
 | ||
| 						else fmtdata.StepData[i].BreakCautionsNotesOnSubstps = "True";
 | ||
| 
 | ||
| 						// All Cautions get this thru inheritance
 | ||
| 						if (XtraFlags.AlwaysTabCaution == "True") fmtdata.StepData[i].AlwaysTab = "True";
 | ||
| 						else fmtdata.StepData[i].AlwaysTab = "False";
 | ||
| 
 | ||
| 						// All Cautions get this thru inheritance
 | ||
| 						if (XtraFlags.ThreeBlanksAboveNotesCautions == "True") fmtdata.StepData[i].ThreeBlanksAbove = "True";
 | ||
| 						else fmtdata.StepData[i].ThreeBlanksAbove = "False";
 | ||
| 					}
 | ||
| 					else if (i == 7)		// Note
 | ||
| 					{
 | ||
| 						// All Notes get this thru inheritance
 | ||
| 						if (XtraFlags.EnhancedStepNumFromPrev == "True") fmtdata.StepData[i].EnhancedStepNumFromPrev = "True";
 | ||
| 						else fmtdata.StepData[i].EnhancedStepNumFromPrev = "False";
 | ||
| 
 | ||
| 						// All Notes get this thru inheritance
 | ||
| 						if (XtraFlags.AlwaysUseExtralines == "True") fmtdata.StepData[i].AlwaysUseExtraLines = "True";
 | ||
| 						else fmtdata.StepData[i].AlwaysUseExtraLines = "False";
 | ||
| 
 | ||
| 						// All Notes get this thru inheritance
 | ||
| 						if (XtraFlags.ReduceLineAfterNoteAndCaut == "True") fmtdata.StepData[i].ReduceLineAfter = "True";
 | ||
| 						else fmtdata.StepData[i].ReduceLineAfter = "False";
 | ||
| 
 | ||
| 						// All Notes get this thru inheritance
 | ||
| 						if (XtraFlags.OneLineBeforeNoteCautionTab == "True") fmtdata.StepData[i].OneLineBeforeTab = "True";
 | ||
| 						else fmtdata.StepData[i].OneLineBeforeTab = "False";
 | ||
| 
 | ||
| 						// All Notes get this thru inheritance
 | ||
| 						if (XtraFlags.ReBoxCautNote == "True") fmtdata.StepData[i].Rebox = "True";
 | ||
| 						else fmtdata.StepData[i].Rebox = "False";
 | ||
| 
 | ||
| 						// All Notes get this thru inheritance
 | ||
| 						if (XtraFlags.UnderlineAfterDashSpace == "True") fmtdata.StepData[i].UnderlineAfterDashSpace = "True";
 | ||
| 						else fmtdata.StepData[i].UnderlineAfterDashSpace = "False";
 | ||
| 
 | ||
| 						// All Notes get this thru inheritance
 | ||
| 						if (XtraFlags.NoSpaceInNoteOrCaution == "True") fmtdata.StepData[i].SpaceIn = "False";
 | ||
| 						else fmtdata.StepData[i].SpaceIn = "True";
 | ||
| 
 | ||
| 						// All Notes get this thru inheritance
 | ||
| 						if (XtraFlags.PageBreakOnNotes == "True") fmtdata.StepData[i].PageBreakOnStep = "True";
 | ||
| 						else fmtdata.StepData[i].PageBreakOnStep = "False";
 | ||
| 
 | ||
| 						// All Notes get this thru inheritance
 | ||
| 						if (XtraFlags.MatchUpRNOCautNote == "True") fmtdata.StepData[i].MatchUpRNO = "True";
 | ||
| 						else fmtdata.StepData[i].MatchUpRNO = "False";
 | ||
| 
 | ||
| 						// All Notes get this thru inheritance
 | ||
| 						if (XtraFlags.StpCautNoteTabInPagelist == "True") fmtdata.StepData[i].InPageList = "True";
 | ||
| 						else fmtdata.StepData[i].InPageList = "False";
 | ||
| 
 | ||
| 						// All Notes get this thru inheritance
 | ||
| 						if (XtraFlags.CenterOneLineOnly == "True") fmtdata.StepData[i].CenterOneLineOnly = "True";
 | ||
| 						else fmtdata.StepData[i].CenterOneLineOnly = "False";
 | ||
| 
 | ||
| 						// All Notes get this thru inheritance
 | ||
| 						if (XtraFlags.RememberCautionsAndNotes == "True") fmtdata.StepData[i].Remember = "True";
 | ||
| 						else fmtdata.StepData[i].Remember = "False";
 | ||
| 
 | ||
| 						// All Notes get this thru inheritance
 | ||
| 						if (XtraFlags.CenterOneLineAdjust == "True") fmtdata.StepData[i].CenterOneLineAdjust = "True";
 | ||
| 						else fmtdata.StepData[i].CenterOneLineAdjust = "False";
 | ||
| 
 | ||
| 						// All Notes get this thru inheritance
 | ||
| 						if (XtraFlags.DontBreakCautionsOrNotes == "True") fmtdata.StepData[i].Break = "False";
 | ||
| 						else fmtdata.StepData[i].Break = "True";
 | ||
| 
 | ||
| 						// All Notes get this thru inheritance
 | ||
| 						if (XtraFlags.DontBreakCautionsNotesOnSubstps == "True") fmtdata.StepData[i].BreakCautionsNotesOnSubstps = "False";
 | ||
| 						else fmtdata.StepData[i].BreakCautionsNotesOnSubstps = "True";
 | ||
| 
 | ||
| 						// All Notes get this thru inheritance
 | ||
| 						if (XtraFlags.CenterTextWithinWidth == "True") fmtdata.StepData[i].CenterTextWithinWidth = "True";
 | ||
| 						else fmtdata.StepData[i].CenterTextWithinWidth = "False";
 | ||
| 
 | ||
| 						// All Notes get this thru inheritance
 | ||
| 						if (XtraFlags.AlwaysTabNote == "True") fmtdata.StepData[i].AlwaysTab = "True";
 | ||
| 						else fmtdata.StepData[i].AlwaysTab = "False";
 | ||
| 
 | ||
| 						// All Notes get this thru inheritance
 | ||
| 						if (XtraFlags.ThreeBlanksAboveNotesCautions == "True") fmtdata.StepData[i].ThreeBlanksAbove = "True";
 | ||
| 						else fmtdata.StepData[i].ThreeBlanksAbove = "False";
 | ||
| 					}
 | ||
| 					else if (i == 8)		// Table
 | ||
| 					{
 | ||
| 						// All Table get this thru inheritance
 | ||
| 						if (XtraFlags.SubTableGetSup1Level == "True") fmtdata.StepData[i].SubTableGetsUp1Level = "True";
 | ||
| 						else fmtdata.StepData[i].SubTableGetsUp1Level = "False";
 | ||
| 					}
 | ||
| 					else if (i == 9)		// Continuous
 | ||
| 					{
 | ||
| 						if (XtraFlags.BulletOnContinuous == "True") fmtdata.StepData[i].Bullet = "True";
 | ||
| 						else fmtdata.StepData[i].Bullet = "False";
 | ||
| 					}
 | ||
| 					else if (i == 10)		// AERTable
 | ||
| 					{
 | ||
| 					}
 | ||
| 					else if (i == 11)		// EquipmentList
 | ||
| 					{
 | ||
| 						// All EquipmentList get this thru inheritance
 | ||
| 						if (XtraFlags.UnderlineAfterDashSpace == "True") fmtdata.StepData[i].UnderlineAfterDashSpace = "True";
 | ||
| 						else fmtdata.StepData[i].UnderlineAfterDashSpace = "False";
 | ||
| 
 | ||
| 						// Note that only equipment lists (and wblank) get this - no inherit - must be done in code!
 | ||
| 						if (XtraFlags.DontBreakEquipmentList == "True") fmtdata.StepData[i].BreakEquipmentList = "False";
 | ||
| 						else fmtdata.StepData[i].BreakEquipmentList = "True";
 | ||
| 					}
 | ||
| 					else if (i == 12)		// Title
 | ||
| 					{
 | ||
| 						// All Title get this thru inheritance
 | ||
| 						if (XtraFlags.UnderlineAfterDashSpace == "True") fmtdata.StepData[i].UnderlineAfterDashSpace = "True";
 | ||
| 						else fmtdata.StepData[i].UnderlineAfterDashSpace = "False";
 | ||
| 					}
 | ||
| 					else if (i == 13)		// PageNumber
 | ||
| 					{
 | ||
| 					}
 | ||
| 					else if (i == 14)		// EquipmentWBlank
 | ||
| 					{
 | ||
| 					}
 | ||
| 					else if (i == 15)		// ProcNumber
 | ||
| 					{
 | ||
| 					}
 | ||
| 					else if (i == 16)		// RevNumber
 | ||
| 					{
 | ||
| 					}
 | ||
| 					else if (i == 17)		// AccPages
 | ||
| 					{
 | ||
| 						if (XtraFlags.UnderlineAfterDashSpace == "True") fmtdata.StepData[i].UnderlineAfterDashSpace = "True";
 | ||
| 						else fmtdata.StepData[i].UnderlineAfterDashSpace = "False";
 | ||
| 					}
 | ||
| 					else if (i == 18)		// LossOfAC
 | ||
| 					{
 | ||
| 						if (XtraFlags.DontBoxAC == "True") fmtdata.StepData[i].BoxIt = "False";
 | ||
| 						else fmtdata.StepData[i].BoxIt = "True";
 | ||
| 					}
 | ||
| 					else if (i == 19)		// ExplicitAnd
 | ||
| 					{
 | ||
| 					}
 | ||
| 					else if (i == 20)		// Caution1
 | ||
| 					{
 | ||
| 						if (XtraFlags.MixCautionsAndNotes == "True") fmtdata.StepData[i].MixCautionsAndNotes = "True";
 | ||
| 						else fmtdata.StepData[i].MixCautionsAndNotes = "False";
 | ||
| 
 | ||
| 						if (XtraFlags.Caution1SameRowAsParent == "True") fmtdata.StepData[i].SameRowAsParent = "True";
 | ||
| 						else fmtdata.StepData[i].SameRowAsParent = "False";
 | ||
| 					}
 | ||
| 					else if (i == 21)		// Caution2
 | ||
| 					{
 | ||
| 						if (XtraFlags.AlwaysTabCaution2 == "True") fmtdata.StepData[i].AlwaysTab = "True";
 | ||
| 						else fmtdata.StepData[i].AlwaysTab = "False";
 | ||
| 
 | ||
| 						if (XtraFlags.Caution2SameRowAsParent == "True") fmtdata.StepData[i].SameRowAsParent = "True";
 | ||
| 						else fmtdata.StepData[i].SameRowAsParent = "False";
 | ||
| 					}
 | ||
| 					else if (i == 22)		// Note1
 | ||
| 					{
 | ||
| 						if (XtraFlags.MixCautionsAndNotes == "True") fmtdata.StepData[i].MixCautionsAndNotes = "True";
 | ||
| 						else fmtdata.StepData[i].MixCautionsAndNotes = "False";
 | ||
| 					}
 | ||
| 					else if (i == 23)		// Note2
 | ||
| 					{
 | ||
| 					}
 | ||
| 					else if (i == 24)		// Paragraph
 | ||
| 					{
 | ||
| 						if (XtraFlags.UnderlineAfterDashSpace == "True") fmtdata.StepData[i].UnderlineAfterDashSpace = "True";
 | ||
| 						else fmtdata.StepData[i].UnderlineAfterDashSpace = "False";
 | ||
| 					}
 | ||
| 					else if (i == 25)		// Default
 | ||
| 					{
 | ||
| 						if (XtraFlags.UnderlineAfterDashSpace == "True") fmtdata.StepData[i].UnderlineAfterDashSpace = "True";
 | ||
| 						else fmtdata.StepData[i].UnderlineAfterDashSpace = "False";
 | ||
| 					}
 | ||
| 					else if (i == 26)		// Note3
 | ||
| 					{
 | ||
| 					}
 | ||
| 					else if (i == 27)		// Caution3
 | ||
| 					{
 | ||
| 					}
 | ||
| 					else if (i == 28)		// Note4
 | ||
| 					{
 | ||
| 					}
 | ||
| 					else if (i == 29)		// Caution4
 | ||
| 					{
 | ||
| 					}
 | ||
| 					else if (i == 30)		// EquipmentOpt
 | ||
| 					{
 | ||
| 						// All EquipmentOpt get this thru inheritance
 | ||
| 						if (XtraFlags.QuotedSubsteps == "True") fmtdata.StepData[i].Quoted = "True";
 | ||
| 						else fmtdata.StepData[i].Quoted = "False";
 | ||
| 
 | ||
| 						// Note that only opt equipment lists (and wblank) get this - no inherit - must be done in code!
 | ||
| 						if (XtraFlags.DontBreakOptEquipmentList == "True")
 | ||
| 							fmtdata.StepData[i].BreakEquipmentList = "False";
 | ||
| 						else
 | ||
| 							fmtdata.StepData[i].BreakEquipmentList = "True";
 | ||
| 					}
 | ||
| 					else if (i == 31)		// EquipmentOptWBlank
 | ||
| 					{
 | ||
| 						// All EquipmentOptWBlank get this thru inheritance
 | ||
| 						if (XtraFlags.QuotedSubsteps == "True") fmtdata.StepData[i].Quoted = "True";
 | ||
| 						else fmtdata.StepData[i].Quoted = "False";
 | ||
| 					}
 | ||
| 					else if (i == 32)		// Note5
 | ||
| 					{
 | ||
| 					}
 | ||
| 					else if (i == 33)		// BorderlessAERTable
 | ||
| 					{
 | ||
| 						if (XtraFlags.LJBorderlessTable == "True") fmtdata.StepData[i].LeftJustifyBorderless = "True";
 | ||
| 						else fmtdata.StepData[i].LeftJustifyBorderless = "False";
 | ||
| 					}
 | ||
| 					else if (i == 34)		// BorderlessTable
 | ||
| 					{
 | ||
| 						if (XtraFlags.LJBorderlessTable == "True") fmtdata.StepData[i].LeftJustifyBorderless = "True";
 | ||
| 						else fmtdata.StepData[i].LeftJustifyBorderless = "False";
 | ||
| 					}
 | ||
| 					else if (i == 35)		// ImplicitOr
 | ||
| 					{
 | ||
| 					}
 | ||
| 					else if (i == 36)		// Figure
 | ||
| 					{
 | ||
| 					}
 | ||
| 					else if (i == 37)		// AERFigure
 | ||
| 					{
 | ||
| 					}
 | ||
| 					else if (i == 38)		// BorderlessFigure
 | ||
| 					{
 | ||
| 						if (XtraFlags.LJBorderlessTable == "True") fmtdata.StepData[i].LeftJustifyBorderless = "True";
 | ||
| 						else fmtdata.StepData[i].LeftJustifyBorderless = "False";
 | ||
| 					}
 | ||
| 					else if (i == 39)		// BorderlessAERFigure
 | ||
| 					{
 | ||
| 						if (XtraFlags.LJBorderlessTable == "True") fmtdata.StepData[i].LeftJustifyBorderless = "True";
 | ||
| 						else fmtdata.StepData[i].LeftJustifyBorderless = "False";
 | ||
| 					}
 | ||
| 					else if (i == 40)		// RNOType
 | ||
| 					{
 | ||
| 						if (XtraFlags.DoubleRNOSpace == "True") fmtdata.StepData[i].DoubleSpace = "True";
 | ||
| 						else fmtdata.StepData[i].DoubleSpace = "False";
 | ||
| 
 | ||
| 						if (XtraFlags.EnhancedStepNumFromPrev == "True") fmtdata.StepData[i].EnhancedStepNumFromPrev = "True";
 | ||
| 						else fmtdata.StepData[i].EnhancedStepNumFromPrev = "False";
 | ||
| 
 | ||
| 						if (XtraFlags.NoSpaceDoubleRNO == "True") fmtdata.StepData[i].SpaceDouble = "False";
 | ||
| 						else fmtdata.StepData[i].SpaceDouble = "True";
 | ||
| 
 | ||
| 						if (XtraFlags.RNOSameLevel == "True") fmtdata.StepData[i].SameLevel = "True";
 | ||
| 						else fmtdata.StepData[i].SameLevel = "False";
 | ||
| 
 | ||
| 						if (XtraFlags.BoldHighLevelRNO == "True") fmtdata.StepData[i].BoldHighLevel = "True";
 | ||
| 						else fmtdata.StepData[i].BoldHighLevel = "False";
 | ||
| 
 | ||
| 						if (XtraFlags.RNOContinueOnly == "True") fmtdata.StepData[i].ContinueOnly = "True";
 | ||
| 						else fmtdata.StepData[i].ContinueOnly = "False";
 | ||
| 
 | ||
| 						if (XtraFlags.RNOSepAfterAER == "True") fmtdata.StepData[i].SepAfterAER = "True";
 | ||
| 						else fmtdata.StepData[i].SepAfterAER = "False";
 | ||
| 
 | ||
| 						if (XtraFlags.UnderlineAfterDashSpace == "True") fmtdata.StepData[i].UnderlineAfterDashSpace = "True";
 | ||
| 						else fmtdata.StepData[i].UnderlineAfterDashSpace = "False";
 | ||
| 
 | ||
| 						if (XtraFlags.RNOInPagelist == "True") fmtdata.StepData[i].InPageList = "True";
 | ||
| 						else fmtdata.StepData[i].InPageList = "False";
 | ||
| 
 | ||
| 						if (XtraFlags.DontBreakOnRNO == "True") fmtdata.StepData[i].Break = "False";
 | ||
| 						else fmtdata.StepData[i].Break = "True";
 | ||
| 
 | ||
| 						if (XtraFlags.NoNewlineAfterRNO == "True") fmtdata.StepData[i].NewlineAfter = "False";
 | ||
| 						else fmtdata.StepData[i].NewlineAfter = "True";
 | ||
| 
 | ||
| 						if (XtraFlags.NumberHighLevelRNO == "True") fmtdata.StepData[i].NumberHighLevel = "True";
 | ||
| 						else fmtdata.StepData[i].NumberHighLevel = "False";
 | ||
| 
 | ||
| 						if (XtraFlags.DontOffsetTab == "True") fmtdata.StepData[i].OffsetTab = "False";
 | ||
| 						else fmtdata.StepData[i].OffsetTab = "True";
 | ||
| 
 | ||
| 						if (XtraFlags.DontNumberRNOSubs == "True") fmtdata.StepData[i].NumberSubs = "False";
 | ||
| 						else fmtdata.StepData[i].NumberSubs = "True";
 | ||
| 
 | ||
| 						if (XtraFlags.NoStepNumberForHighLevelRNO == "True") fmtdata.StepData[i].StepNumberForHighLevel = "False";
 | ||
| 						else fmtdata.StepData[i].StepNumberForHighLevel = "True";
 | ||
| 
 | ||
| 						if (XtraFlags.RNOCheckOffSameAsParent == "True") fmtdata.StepData[i].CheckoffSameAsParent = "True";
 | ||
| 						else fmtdata.StepData[i].CheckoffSameAsParent = "False";
 | ||
| 
 | ||
| 						if (XtraFlags.UseRNOTypeInActable == "True") fmtdata.StepData[i].UseInAcTable = "True";
 | ||
| 						else fmtdata.StepData[i].UseInAcTable = "False";
 | ||
| 					}
 | ||
| 					else if (i == 41)		// High5
 | ||
| 					{
 | ||
| 					}
 | ||
| 					else if (i == 42)		// TitleWithTextRight
 | ||
| 					{
 | ||
| 					}
 | ||
| 					else if (i == 43)		// TitleWithTextBelow
 | ||
| 					{
 | ||
| 					}
 | ||
| 					else if (i == 44)		// ContAcSequential
 | ||
| 					{
 | ||
| 						if (XtraFlags.UnderlineAfterDashSpace == "True") fmtdata.StepData[i].UnderlineAfterDashSpace = "True";
 | ||
| 						else fmtdata.StepData[i].UnderlineAfterDashSpace = "False";
 | ||
| 					}
 | ||
| 					else if (i == 45)		// ContAcAnd
 | ||
| 					{
 | ||
| 					}
 | ||
| 					else if (i == 46)		// ContAcOr
 | ||
| 					{
 | ||
| 					}
 | ||
| 					else if (i == 47)		// ContAcParagraph
 | ||
| 					{
 | ||
| 					}
 | ||
| 					if (fmtdata.StepData[i].TabData.MacroList != null)
 | ||
| 					{
 | ||
| 						if (XtraFlags.NoCheckOffsInRNO == "True") fmtdata.StepData[i].TabData.MacroList[0].NotInRNO = "True";
 | ||
| 						else fmtdata.StepData[i].TabData.MacroList[0].NotInRNO = "False";
 | ||
| 					}
 | ||
| 				}
 | ||
| 			}
 | ||
| 			catch (Exception ex)
 | ||
| 			{
 | ||
| 				Console.WriteLine("Error on step data");
 | ||
| 			}
 | ||
| 			#endregion
 | ||
| 			#region StepStructLayout
 | ||
| 			if (XtraFlags.Dev_Format == "True") fmtdata.SectData.StepSectionData.StpSectLayData.Dev_Format = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.Dev_Format = "False";
 | ||
| 			if (XtraFlags.EnhancedShortFormDev == "True") fmtdata.SectData.StepSectionData.StpSectLayData.EnhancedShortFormDev = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.EnhancedShortFormDev = "False";
 | ||
| 			if (XtraFlags.SpecialPageBreakFlag == "True") fmtdata.SectData.StepSectionData.StpSectLayData.SpecialPageBreakFlag = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.SpecialPageBreakFlag = "False";
 | ||
| 			if (XtraFlags.DontPaginateOnFirstSubStep == "True") fmtdata.SectData.StepSectionData.StpSectLayData.PaginateOnFirstSubstep = "False";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.PaginateOnFirstSubstep = "True";
 | ||
| 			if (XtraFlags.DontPaginateOnFirstSubStep2X == "True") fmtdata.SectData.StepSectionData.StpSectLayData.PaginateOnFirstSubstep2X = "False";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.PaginateOnFirstSubstep2X = "True";
 | ||
| 			if (XtraFlags.DontUseHalfLines == "True") fmtdata.SectData.StepSectionData.StpSectLayData.UseHalfLines = "False";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.UseHalfLines = "True";
 | ||
| 			if (XtraFlags.DontTryToFillHalfOfPage == "True") fmtdata.SectData.StepSectionData.StpSectLayData.TryToFillHalfOfPage = "False";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.TryToFillHalfOfPage = "True";
 | ||
| 			if (XtraFlags.DoNotCompressSteps == "True") fmtdata.SectData.StepSectionData.StpSectLayData.CompressSteps = "False";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.CompressSteps = "True";
 | ||
| 			if (XtraFlags.DontDoSTExtraAtTop == "True") fmtdata.SectData.StepSectionData.StpSectLayData.DoSTExtraAtTop = "False";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.DoSTExtraAtTop = "True";
 | ||
| 			if (XtraFlags.KeepStepsOnPage == "True") fmtdata.SectData.StepSectionData.StpSectLayData.KeepStepsOnPage = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.KeepStepsOnPage = "False";
 | ||
| 			if (XtraFlags.DontBreakOnSections == "True") fmtdata.SectData.StepSectionData.StpSectLayData.BreakOnSections = "False";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.BreakOnSections = "True";
 | ||
| 			if (XtraFlags.ShowSectionTitles == "True") fmtdata.SectData.StepSectionData.StpSectLayData.ShowSectionTitles = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.ShowSectionTitles = "False";
 | ||
| 			if (XtraFlags.NoEndForSingle == "True") fmtdata.SectData.StepSectionData.StpSectLayData.EndForSingle = "False";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.EndForSingle = "True";
 | ||
| 			if (XtraFlags.DontPaginateOnFirstSubstep3X == "True") fmtdata.SectData.StepSectionData.StpSectLayData.PaginateOnFirstSubstep3X = "False";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.PaginateOnFirstSubstep3X = "True";
 | ||
| 			if (XtraFlags.PaginateOnLowerStepLevel == "True") fmtdata.SectData.StepSectionData.StpSectLayData.PaginateOnLowerStepLevel = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.PaginateOnLowerStepLevel = "False";
 | ||
| 			if (XtraFlags.CustomSpacing == "True") fmtdata.SectData.StepSectionData.StpSectLayData.CustomSpacing = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.CustomSpacing = "False";
 | ||
| 			if (XtraFlags.DontSplitStepInPrntStep == "True") fmtdata.SectData.StepSectionData.StpSectLayData.SplitStepInPrntStep = "False";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.SplitStepInPrntStep = "True";
 | ||
| 			if (XtraFlags.LineAboveUnderSection == "True") fmtdata.SectData.StepSectionData.StpSectLayData.LineAboveUnderSection = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.LineAboveUnderSection = "False";
 | ||
| 			if (XtraFlags.PicaIgnoreFiveSixths == "True") fmtdata.SectData.StepSectionData.StpSectLayData.PicaIgnoreFiveSixths = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.PicaIgnoreFiveSixths = "False";
 | ||
| 			if (XtraFlags.SpaceFoRNOSecNumb == "True") fmtdata.SectData.StepSectionData.StpSectLayData.SpaceForNoSecNumb = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.SpaceForNoSecNumb = "False";
 | ||
| 			if (XtraFlags.PageBreakOnFirstBlankLine == "True") fmtdata.SectData.StepSectionData.StpSectLayData.PageBreakOnFirstBlankLine = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.PageBreakOnFirstBlankLine = "False";
 | ||
| 			if (XtraFlags.PutOnPageByItself == "True") fmtdata.SectData.StepSectionData.StpSectLayData.PutOnPageByItself = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.PutOnPageByItself = "False";
 | ||
| 			if (XtraFlags.PaginateAtHighestPaginLevel == "True") fmtdata.SectData.StepSectionData.StpSectLayData.PaginateAtHighestPaginLevel = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.PaginateAtHighestPaginLevel = "False";
 | ||
| 			if (XtraFlags.UseSTExtraRealValue == "True") fmtdata.SectData.StepSectionData.StpSectLayData.UseSTExtraRealValue = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.UseSTExtraRealValue = "False";
 | ||
| 			if (XtraFlags.DoSectionSeparatorLine == "True") fmtdata.SectData.StepSectionData.StpSectLayData.DoSectionSeparatorLine = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.DoSectionSeparatorLine = "False";
 | ||
| 			if (XtraFlags.TieTabToLevel == "True") fmtdata.SectData.StepSectionData.StpSectLayData.TieTabToLevel = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.TieTabToLevel = "False";
 | ||
| 			if (XtraFlags.HighLevelRNOBeforeAERSubStps == "True") fmtdata.SectData.StepSectionData.StpSectLayData.HighLevelRNOBeforeAERSubsteps = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.HighLevelRNOBeforeAERSubsteps = "False";
 | ||
| 			if (XtraFlags.UseStepTypeWidthOverride == "True") fmtdata.SectData.StepSectionData.StpSectLayData.UseStepTypeWidthOverride = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.UseStepTypeWidthOverride = "False";
 | ||
| 			if (XtraFlags.UseStepTypeWidthOverrideEditPrint == "True") fmtdata.SectData.StepSectionData.StpSectLayData.UseStepTypeWidthOverrideEditPrint = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.UseStepTypeWidthOverrideEditPrint = "False";
 | ||
| 			if (XtraFlags.PartialStepCompression == "True") fmtdata.SectData.StepSectionData.StpSectLayData.PartialStepCompression = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.PartialStepCompression = "False";
 | ||
| 			if (XtraFlags.VirtualDotInHLSTab == "True") fmtdata.SectData.StepSectionData.StpSectLayData.VirtualDotInHLSTab = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.VirtualDotInHLSTab = "False";
 | ||
| 			if (XtraFlags.OverrideEnhancedTabs == "True") fmtdata.SectData.StepSectionData.StpSectLayData.OverrideEnhancedTabs = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.OverrideEnhancedTabs = "False";
 | ||
| 			if (XtraFlags.NoRNO == "True") fmtdata.SectData.StepSectionData.StpSectLayData.RNO = "False";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.RNO = "True";
 | ||
| 			if (XtraFlags.OnlySingleColumn == "True") fmtdata.SectData.StepSectionData.StpSectLayData.OnlySingleColumn = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.OnlySingleColumn = "False";
 | ||
| 			if (XtraFlags.NullBox == "True") fmtdata.SectData.StepSectionData.StpSectLayData.NullBox = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectLayData.NullBox = "False";
 | ||
| 			#endregion
 | ||
| 			#region StepSection
 | ||
| 			if (XtraFlags.WolfCreekBackgroundFormat == "True") fmtdata.SectData.StepSectionData.WolfCreekBackgroundFormat = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.WolfCreekBackgroundFormat = "False";
 | ||
| 			if (XtraFlags.WolfcreekCKLFormat == "True") fmtdata.SectData.StepSectionData.WolfcreekCKLFormat = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.WolfcreekCKLFormat = "False";
 | ||
| 			if (XtraFlags.WolfcreekCKLBackgndFormat == "True") fmtdata.SectData.StepSectionData.WolfcreekCKLBackgndFormat = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.WolfcreekCKLBackgndFormat = "False";
 | ||
| 			if (XtraFlags.FortranFormatNumbers == "True") fmtdata.SectData.StepSectionData.FortranFormatNumbers = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.FortranFormatNumbers = "False";
 | ||
| 			if (XtraFlags.UseTopContinueMessageAtEnd == "True") fmtdata.SectData.StepSectionData.UseTopContinueMessageAtEnd = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.UseTopContinueMessageAtEnd = "False";
 | ||
| 			if (XtraFlags.FloatingContinueMessage == "True") fmtdata.SectData.StepSectionData.FloatingContinueMessage = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.FloatingContinueMessage = "False";
 | ||
| 			if (XtraFlags.WrapSameAsEdit == "True") fmtdata.SectData.StepSectionData.WrapSameAsEdit = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.WrapSameAsEdit = "False";
 | ||
| 			if (XtraFlags.ContinueSectionHeader == "True") fmtdata.SectData.StepSectionData.ContinueSectionHeader = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.ContinueSectionHeader = "False";
 | ||
| 			if (XtraFlags.CompressHPSub == "True") fmtdata.SectData.StepSectionData.CompressHPSub = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.CompressHPSub = "False";
 | ||
| 			if (XtraFlags.CompressHPSuper == "True") fmtdata.SectData.StepSectionData.CompressHPSuper = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.CompressHPSuper = "False";
 | ||
| 			//if (XtraFlags.UndSpecialStepsFoldout == "True") fmtdata.SectData.StepSectionData.UndSpecialStepsFoldout = "True";
 | ||
| 			//else fmtdata.SectData.StepSectionData.UndSpecialStepsFoldout = "False";
 | ||
| 			if (XtraFlags.UnderlineAllMetaTitles == "True") fmtdata.SectData.StepSectionData.UnderlineAllMetaTitles = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.UnderlineAllMetaTitles = "False";
 | ||
| 			if (XtraFlags.BoldOnlySectionZero == "True") fmtdata.SectData.StepSectionData.BoldOnlySectionZero = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.BoldOnlySectionZero = "False";
 | ||
| 			if (XtraFlags.ImperfectStructure == "True") fmtdata.SectData.StepSectionData.ImperfectStructure = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.ImperfectStructure = "False";
 | ||
| 			if (XtraFlags.ImperfectSubstep == "True") fmtdata.SectData.StepSectionData.ImperfectSubstep = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.ImperfectSubstep = "False";
 | ||
| 			if (XtraFlags.ImperfectStructurePlus4 == "True") fmtdata.SectData.StepSectionData.ImperfectStructurePlus4 = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.ImperfectStructurePlus4 = "False";
 | ||
| 			if (XtraFlags.CountAllSubLevels == "True") fmtdata.SectData.StepSectionData.CountAllSubLevels = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.CountAllSubLevels = "False";
 | ||
| 			if (XtraFlags.UseMultiLineSectionTitle == "True") fmtdata.SectData.StepSectionData.UseMultiLineSectionTitle = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.UseMultiLineSectionTitle = "False";
 | ||
| 			#endregion
 | ||
| 			#region ChangeBars
 | ||
| 			if (XtraFlags.CondensedChangeBar == "True") fmtdata.ProcData.ChangeBarData.CondensedChangeBar = "True";
 | ||
| 			else fmtdata.ProcData.ChangeBarData.CondensedChangeBar = "False";
 | ||
| 			if (XtraFlags.AbsoluteFixedChangeColumn == "True") fmtdata.ProcData.ChangeBarData.AbsoluteFixedChangeColumn = "True";
 | ||
| 			else fmtdata.ProcData.ChangeBarData.AbsoluteFixedChangeColumn = "False";
 | ||
| 			if (XtraFlags.ContinuousChangeBars == "True") fmtdata.ProcData.ChangeBarData.ContinuousChangeBars = "True";
 | ||
| 			else fmtdata.ProcData.ChangeBarData.ContinuousChangeBars = "False";
 | ||
| 			if (XtraFlags.ChgBarMessageFromEdit == "True") fmtdata.ProcData.ChangeBarData.ChgBarMessageFromEdit = "True";
 | ||
| 			else fmtdata.ProcData.ChangeBarData.ChgBarMessageFromEdit = "False";
 | ||
| 			if (XtraFlags.MultipleChangeIds == "True") fmtdata.ProcData.ChangeBarData.MultipleChangeIds = "True";
 | ||
| 			else fmtdata.ProcData.ChangeBarData.MultipleChangeIds = "False";
 | ||
| 			if (XtraFlags.ChangeBarToRNOSep == "True") fmtdata.ProcData.ChangeBarData.ChangeBarToRNOSep = "True";
 | ||
| 			else fmtdata.ProcData.ChangeBarData.ChangeBarToRNOSep = "False";
 | ||
| 			if (XtraFlags.ChangeBarsOnLinkedText == "True") fmtdata.ProcData.ChangeBarData.ChangeBarsOnLinkedText = "True";
 | ||
| 			else fmtdata.ProcData.ChangeBarData.ChangeBarsOnLinkedText = "False";
 | ||
| 			#endregion
 | ||
| 			#region GeneralPrint & GeneralEdit
 | ||
| 			if (XtraFlags.DoRevDate == "True") fmtdata.PrintData.DoRevDate = "True";
 | ||
| 			else fmtdata.PrintData.DoRevDate = "False";
 | ||
| 			if (XtraFlags.AlternateFoldoutPages == "True") fmtdata.PrintData.AlternateFoldoutPages = "True";
 | ||
| 			else fmtdata.PrintData.AlternateFoldoutPages = "False";
 | ||
| 			if (XtraFlags.AlternateFloatingFoldout == "True") fmtdata.PrintData.AlternateFloatingFoldout = "True";
 | ||
| 			else fmtdata.PrintData.AlternateFloatingFoldout = "False";
 | ||
| 			if (XtraFlags.SectionLevelFoldouts == "True") fmtdata.PrintData.SectionLevelFoldouts = "True";
 | ||
| 			else fmtdata.PrintData.SectionLevelFoldouts = "False";
 | ||
| 			if (XtraFlags.RevDateWithForwardSlash == "True") fmtdata.PrintData.RevDateWithForwardSlash = "True";
 | ||
| 			else fmtdata.PrintData.RevDateWithForwardSlash = "False";
 | ||
| 			//if (XtraFlags.SpecialStepsFoldout == "True") fmtdata.PrintData.SpecialStepsFoldout = "True";
 | ||
| 			//else fmtdata.PrintData.SpecialStepsFoldout = "False";
 | ||
| 			if (XtraFlags.AccessoryDocsInDuplex == "True") fmtdata.PrintData.AccessoryDocsInDuplex = "True";
 | ||
| 			else fmtdata.PrintData.AccessoryDocsInDuplex = "False";
 | ||
| 			if (XtraFlags.FoldoutsInDuplex == "True") fmtdata.PrintData.FoldoutsInDuplex = "True";
 | ||
| 			else fmtdata.PrintData.FoldoutsInDuplex = "False";
 | ||
| 			if (XtraFlags.PagelistChangeIDsWithCommas == "True") fmtdata.PrintData.PagelistChangeIDsWithCommas = "True";
 | ||
| 			else fmtdata.PrintData.PagelistChangeIDsWithCommas = "False";
 | ||
| 			if (XtraFlags.PromptForCautinType == "True") fmtdata.EditData.PromptForCautionType = "True";
 | ||
| 			else fmtdata.EditData.PromptForCautionType = "False";
 | ||
| 			fmtdata.PrintData.AllowDuplex = _fmtFileName.StartsWith("WPB") || _fmtFileName.StartsWith("WEP2") ? "True" : "False";
 | ||
| 			#endregion
 | ||
| 			#region Procedure
 | ||
| 			if (XtraFlags.DontCapitalizeTitle == "True") fmtdata.ProcData.CapitalizeTitle = "False";
 | ||
| 			else fmtdata.ProcData.CapitalizeTitle = "True";
 | ||
| 			if (XtraFlags.ChangeStyleForEverySection == "True") fmtdata.ProcData.ChangeStyleForEverySection = "True";
 | ||
| 			else fmtdata.ProcData.ChangeStyleForEverySection = "False";
 | ||
| 			if (XtraFlags.DontPrintNoTitle == "True") fmtdata.ProcData.PrintNoTitle = "False";
 | ||
| 			else fmtdata.ProcData.PrintNoTitle = "True";
 | ||
| 			if (XtraFlags.NotesToFootnotes == "True") fmtdata.ProcData.NotesToFootnotes = "True";
 | ||
| 			else fmtdata.ProcData.NotesToFootnotes = "False";
 | ||
| 			if (XtraFlags.DontCountFoldoutPages == "True") fmtdata.ProcData.CountFoldoutPages = "False";
 | ||
| 			else fmtdata.ProcData.CountFoldoutPages = "True";
 | ||
| 			#endregion
 | ||
| 			#region Section
 | ||
| 			//if (XtraFlags.CancelSecTitlesOnS1 == "True") fmtdata.SectData.CancelSecTitlesOnS1 = "True";
 | ||
| 			//else fmtdata.SectData.CancelSecTitlesOnS1 = "False";
 | ||
| 			//if (XtraFlags.CancelSecTitlesOnS2 == "True") fmtdata.SectData.CancelSecTitlesOnS2 = "True";
 | ||
| 			//else fmtdata.SectData.CancelSecTitlesOnS2 = "False";
 | ||
| 			//if (XtraFlags.CancelSecTitlesOnE0 == "True") fmtdata.SectData.CancelSecTitlesOnE0 = "True";
 | ||
| 			//else fmtdata.SectData.CancelSecTitlesOnE0 = "False";
 | ||
| 			//if (XtraFlags.CancelSecTitlesOnE2 == "True") fmtdata.SectData.CancelSecTitlesOnE2 = "True";
 | ||
| 			//else fmtdata.SectData.CancelSecTitlesOnE2 = "False";
 | ||
| 			if (XtraFlags.MetaSectEndMessage == "True") fmtdata.SectData.MetaSectEndMessage = "True";
 | ||
| 			else fmtdata.SectData.MetaSectEndMessage = "False";
 | ||
| 			if (XtraFlags.ReadOnlyTypeInContMsg == "True") fmtdata.SectData.ReadOnlyTypeInContMsg = "True";
 | ||
| 			else fmtdata.SectData.ReadOnlyTypeInContMsg = "False";
 | ||
| 			if (XtraFlags.DontReplaceWordsInROs == "True") fmtdata.SectData.ReplaceWordsInROs = "False";
 | ||
| 			else fmtdata.SectData.ReplaceWordsInROs = "True";
 | ||
| 			if (XtraFlags.UseMetaSections == "True") fmtdata.SectData.UseMetaSections = "True";
 | ||
| 			else fmtdata.SectData.UseMetaSections = "False";
 | ||
| 			if (XtraFlags.NonEditableSteps == "True") fmtdata.SectData.NonEditableSteps = "True";
 | ||
| 			else fmtdata.SectData.NonEditableSteps = "False";
 | ||
| 			if (XtraFlags.SearchAllReplaceWords == "True") fmtdata.SectData.SearchAllReplaceWords = "True";
 | ||
| 			else fmtdata.SectData.SearchAllReplaceWords = "False";
 | ||
| 			if (XtraFlags.SecTitleContinue == "True") fmtdata.SectData.SecTitleContinue = "True";
 | ||
| 			else fmtdata.SectData.SecTitleContinue = "False";
 | ||
| 			if (XtraFlags.DontConvertCaretToDelta == "True") fmtdata.SectData.ConvertCaretToDelta = "False";
 | ||
| 			else fmtdata.SectData.ConvertCaretToDelta = "True";
 | ||
| 			#endregion
 | ||
| 			#region StepSectionPrint
 | ||
| 			if (XtraFlags.LowerCaseRevnum == "True") fmtdata.SectData.StepSectionData.StpSectPrtData.LowerCaseRevNum = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectPrtData.LowerCaseRevNum = "False";
 | ||
| 			if (XtraFlags.UseXtraRevNumber == "True") fmtdata.SectData.StepSectionData.StpSectPrtData.UseXtraRevNumber = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectPrtData.UseXtraRevNumber = "False";
 | ||
| 			if (XtraFlags.SpecialLandscapeMode == "True") fmtdata.SectData.StepSectionData.StpSectPrtData.SpecialLandscapeMode = "True";
 | ||
| 			else fmtdata.SectData.StepSectionData.StpSectPrtData.SpecialLandscapeMode = "False";
 | ||
| 			#endregion
 | ||
| 			#region CheckOff
 | ||
| 			if (XtraFlags.DropCheckOff == "True") fmtdata.ProcData.CheckOffData.DropCheckOff = "True";
 | ||
| 			else fmtdata.ProcData.CheckOffData.DropCheckOff = "False";
 | ||
| 			if (XtraFlags.CheckoffOnHLSOnly == "True") fmtdata.ProcData.CheckOffData.CheckOffOnHLSOnly = "True";
 | ||
| 			else fmtdata.ProcData.CheckOffData.CheckOffOnHLSOnly = "False";
 | ||
| 			#endregion
 | ||
| 			#region Trans
 | ||
| 			if (XtraFlags.SpecifiedSubstepsOnly == "True") fmtdata.TransData.SpecifiedSubstepsOnly = "True";
 | ||
| 			else fmtdata.TransData.SpecifiedSubstepsOnly = "False";
 | ||
| 			if (XtraFlags.CapsTransitions == "True") fmtdata.TransData.CapsTransitions = "True";
 | ||
| 			else fmtdata.TransData.CapsTransitions = "False";
 | ||
| 			if (XtraFlags.CapTranStep == "True") fmtdata.TransData.CapTranStep = "True";
 | ||
| 			else fmtdata.TransData.CapTranStep = "False";
 | ||
| 			if (XtraFlags.TSTepNoFlag == "True") fmtdata.TransData.TStepNoFlag = "True";
 | ||
| 			else fmtdata.TransData.TStepNoFlag = "False";
 | ||
| 			if (XtraFlags.LowerCaseTranNumber == "True") fmtdata.TransData.LowerCaseTranNumber = "True";
 | ||
| 			else fmtdata.TransData.LowerCaseTranNumber = "False";
 | ||
| 			if (XtraFlags.UpcaseTranAnd == "True") fmtdata.TransData.UpcaseTranAnd = "True";
 | ||
| 			else fmtdata.TransData.UpcaseTranAnd = "False";
 | ||
| 			if (XtraFlags.SuppressAndInTran == "True") fmtdata.TransData.SuppressAndInTran = "True";
 | ||
| 			else fmtdata.TransData.SuppressAndInTran = "False";
 | ||
| 			if (XtraFlags.Cap1stCharTrans == "True") fmtdata.TransData.Cap1stCharTrans = "True";
 | ||
| 			else fmtdata.TransData.Cap1stCharTrans = "False";
 | ||
| 			if (XtraFlags.UseTransitionModifier == "True") fmtdata.TransData.UseTransitionModifier = "True";
 | ||
| 			else fmtdata.TransData.UseTransitionModifier = "False";
 | ||
| 			if (XtraFlags.DontUseSecTitles == "True") fmtdata.TransData.UseSecTitles = "False";
 | ||
| 			else fmtdata.TransData.UseSecTitles = "True";
 | ||
| 			if (XtraFlags.HardSpTranProcNumb == "True") fmtdata.TransData.HardSpTranProcNumb = "True";
 | ||
| 			else fmtdata.TransData.HardSpTranProcNumb = "False";
 | ||
| 			if (XtraFlags.XChngTranSpForHard == "True") fmtdata.TransData.XchngTranSpForHard = "True";
 | ||
| 			else fmtdata.TransData.XchngTranSpForHard = "False";
 | ||
| 			if (XtraFlags.AbsoluteTransitionUpdate == "True") fmtdata.TransData.AbsoluteTransitionUpdate = "True";
 | ||
| 			else fmtdata.TransData.AbsoluteTransitionUpdate = "False";
 | ||
| 			if (XtraFlags.LowerCaseStepInTran == "True") fmtdata.TransData.LowerCaseStepInTran = "True";
 | ||
| 			else fmtdata.TransData.LowerCaseStepInTran = "False";
 | ||
| 			if (XtraFlags.DoSectionTrans == "True") fmtdata.TransData.DoSectionTransitions = "True";
 | ||
| 			else fmtdata.TransData.DoSectionTransitions = "False";
 | ||
| 			#endregion
 | ||
| 			#region RO
 | ||
| 			if (XtraFlags.AllUnits == "True") fmtdata.ROData.AllUnits = "True";
 | ||
| 			else fmtdata.ROData.AllUnits = "False";
 | ||
| 			if (XtraFlags.UpSetpntAftrDash == "True") fmtdata.ROData.UpRoAftrDash = "True";
 | ||
| 			else fmtdata.ROData.UpRoAftrDash = "False";
 | ||
| 			if (XtraFlags.UpcaseAllSetpointUnits == "True") fmtdata.ROData.UpcaseAllRoUnits = "True";
 | ||
| 			else fmtdata.ROData.UpcaseAllRoUnits = "False";
 | ||
| 			if (XtraFlags.CapHighSetpnt == "True") fmtdata.ROData.CapHighRo = "True";
 | ||
| 			else fmtdata.ROData.CapHighRo = "False";
 | ||
| 			if (XtraFlags.CapsPIFLastLower == "True") fmtdata.ROData.CapRoIfLastLower = "True";
 | ||
| 			else fmtdata.ROData.CapRoIfLastLower = "False";
 | ||
| 			if (XtraFlags.UpSpIfPrevUpper == "True") fmtdata.ROData.UpRoIfPrevUpper = "True";
 | ||
| 			else fmtdata.ROData.UpRoIfPrevUpper = "False";
 | ||
| 			if (XtraFlags.UnderlineSetpoints == "True") fmtdata.ROData.UnderlineRo = "True";
 | ||
| 			else fmtdata.ROData.UnderlineRo = "False";
 | ||
| 			if (XtraFlags.CapFirstLetterInHighSP == "True") fmtdata.ROData.CapFirstLetterInHighRO = "True";
 | ||
| 			else fmtdata.ROData.CapFirstLetterInHighRO = "False";
 | ||
| 			#endregion
 | ||
| 			return true;
 | ||
| 		}
 | ||
| 
 | ||
| 		private string GetTransUIEnum(string format, string menu)
 | ||
| 		{
 | ||
| 			string transtrtmp = (menu == null || menu == "") ? format : menu;
 | ||
| 			E_TransFormatXlate xlt = TransFormat(transtrtmp);
 | ||
| 			// xlt has flags that say what is included in the transition menu
 | ||
| 			// string.  Use this to set the enum that the 32-bit code will use
 | ||
| 			// to display menuing...
 | ||
| 			E_TransitionMenus transmenuflag = TransToMenuFlags(xlt);
 | ||
| 			return ((E_TransitionMenus)transmenuflag).ToString();
 | ||
| 		}
 | ||
| 		private E_TransitionMenus TransToMenuFlags(E_TransFormatXlate xlt)
 | ||
| 		{
 | ||
| 			E_TransitionMenus result = E_TransitionMenus.None;
 | ||
| 
 | ||
| 			// for procedures, if the menu string contains a 'procedure', then the
 | ||
| 			// selection will come from a menu, otherwise, it defaults to current procedure
 | ||
| 			// and the menu will be disabled.
 | ||
| 			result |= (xlt & E_TransFormatXlate.Procedure) == E_TransFormatXlate.Procedure ? E_TransitionMenus.ProcMenu : E_TransitionMenus.ProcCur;
 | ||
| 
 | ||
| 			// for sections... 
 | ||
| 			if ((xlt & E_TransFormatXlate.Section) == E_TransFormatXlate.Section)
 | ||
| 			{
 | ||
| 				if ((xlt & E_TransFormatXlate.Range) == E_TransFormatXlate.Range)
 | ||
| 					result |= E_TransitionMenus.SectMenuStep;
 | ||
| 				else
 | ||
| 					result |= E_TransitionMenus.SectMenuAny;
 | ||
| 
 | ||
| 			}
 | ||
| 			else
 | ||
| 			{
 | ||
| 				if ((xlt & E_TransFormatXlate.Procedure) == E_TransFormatXlate.Procedure)
 | ||
| 					result |= E_TransitionMenus.SectDefault;
 | ||
| 				else
 | ||
| 					result |= E_TransitionMenus.SectCur;
 | ||
| 			}
 | ||
| 
 | ||
| 			// now do steps...
 | ||
| 			if ((xlt & E_TransFormatXlate.Range) == E_TransFormatXlate.Range)
 | ||
| 			{
 | ||
| 				result |= E_TransitionMenus.StepFirst;
 | ||
| 				result |= E_TransitionMenus.StepLast;
 | ||
| 			}
 | ||
| 			else
 | ||
| 				result |= E_TransitionMenus.StepFirst;
 | ||
| 			if (((result & E_TransitionMenus.SectDefault) == E_TransitionMenus.SectDefault) || ((result & E_TransitionMenus.SectMenuAny) == E_TransitionMenus.SectMenuAny))
 | ||
| 				result |= E_TransitionMenus.StepAllowNone;
 | ||
| 
 | ||
| 			return result;
 | ||
| 		}
 | ||
| 		private static E_TransFormatXlate TransFormat(string str)
 | ||
| 		{
 | ||
| 			E_TransFormatXlate retval = E_TransFormatXlate.None;
 | ||
| 			if (HasRange(str)) retval |= E_TransFormatXlate.Range;
 | ||
| 			else if (HasStep(str)) retval |= E_TransFormatXlate.Step;
 | ||
| 			if (HasSection(str)) retval |= E_TransFormatXlate.Section;
 | ||
| 			if (HasProc(str)) retval |= E_TransFormatXlate.Procedure;
 | ||
| 			if (HasPage(str)) retval |= E_TransFormatXlate.Page;
 | ||
| 			return retval;
 | ||
| 		}
 | ||
| 		private static bool HasProc(string str)
 | ||
| 		{
 | ||
| 			return str.Contains("{Proc") || str.Contains("{?.Proc");
 | ||
| 		}
 | ||
| 		private static bool HasPage(string str)
 | ||
| 		{
 | ||
| 			return str.Contains("{Page");
 | ||
| 		}
 | ||
| 		private static bool HasSection(string str)
 | ||
| 		{
 | ||
| 			return str.Contains("{Sect") || str.Contains("{?.Sect");
 | ||
| 		}
 | ||
| 		private static bool HasRange(string str)
 | ||
| 		{
 | ||
| 			return str.Contains("{Last");
 | ||
| 		}
 | ||
| 		private static bool HasStep(string str)
 | ||
| 		{
 | ||
| 			if (str.Contains("{Step")) return true;
 | ||
| 			return str.Contains("{First Step");
 | ||
| 		}
 | ||
| 		private string ConvertSeqStart(byte p)
 | ||
| 		{
 | ||
| 			if (p == 0 || p == 0x30) return "{numeric}";
 | ||
| 			else if (p == 0x60) return "{alpha}";
 | ||
| 			else if (p == 0x40) return "{ALPHA}";
 | ||
| 			else return "{UNKNOWN}";
 | ||
| 		}
 | ||
| 		#endregion
 | ||
| 		private static Dictionary<string, XslCompiledTransform> _TransForms = new Dictionary<string, XslCompiledTransform>();
 | ||
| 		public static XslCompiledTransform getTransform(string path)
 | ||
| 		{
 | ||
| 			if (!_TransForms.ContainsKey(path))
 | ||
| 			{
 | ||
| 				XslCompiledTransform xsl = new XslCompiledTransform();
 | ||
| 				xsl.Load(path);
 | ||
| 				_TransForms.Add(path, xsl);
 | ||
| 			}
 | ||
| 			return _TransForms[path];
 | ||
| 		}
 | ||
| 		public bool WriteOutXmlTmp(FormatData fmtdata, string suffix)
 | ||
| 		{
 | ||
| 			try
 | ||
| 			{
 | ||
| 				XmlSerializer serializer = new XmlSerializer(typeof(FormatData));
 | ||
| 				string lfmtname = fmtName;
 | ||
| 				int findx = fmtName.IndexOf('.');
 | ||
| 				// for subformats, make the name FMT_00 where FMT is format name & 00 is number
 | ||
| 				// from original name.  This will allow the data load to know it's a sub.
 | ||
| 				if (findx > 0)
 | ||
| 					lfmtname = fmtName.Substring(0, fmtName.Length - 4) + "_" + fmtName.Substring(fmtName.Length - 2, 2);
 | ||
| 				string destfile = "tmp_fmt_xml\\" + lfmtname + "_" + suffix + ".xml";
 | ||
| 				if (File.Exists(destfile)) File.Delete(destfile);
 | ||
| 				TextWriter writer = new StreamWriter(destfile);
 | ||
| 				_MyFormatSerializer.Serialize(writer, fmtdata);
 | ||
| 				writer.Close();
 | ||
| 				return true;
 | ||
| 			}
 | ||
| 			catch (Exception e)
 | ||
| 			{
 | ||
| 				Console.WriteLine("Error writing out xml or xsl - format = {0}", fmtdata.Name);
 | ||
| 				Console.WriteLine(e.Message);
 | ||
| 				Console.WriteLine();
 | ||
| 				return false;
 | ||
| 			}
 | ||
| 		}
 | ||
| 		#region WriteOutXml
 | ||
| 		static private XmlSerializer _MyFormatSerializer = new XmlSerializer(typeof(FormatData));
 | ||
| 		public bool WriteOutXml(FormatData fmtdata)
 | ||
| 		{
 | ||
| 			// First serialize files based on the above - then use xsl to transform
 | ||
| 			// into prefered xml.
 | ||
| 			if (!Directory.Exists("fmt_xml")) Directory.CreateDirectory("fmt_xml");
 | ||
| 			if (!Directory.Exists("tmp_fmt_xml")) Directory.CreateDirectory("tmp_fmt_xml");
 | ||
| 			//XmlSerializer serializer = new XmlSerializer(typeof(FormatData));
 | ||
| 
 | ||
| 			string lfmtname = fmtName;
 | ||
| 			int findx = fmtName.IndexOf('.');
 | ||
| 			// for subformats, make the name FMT_00 where FMT is format name & 00 is number
 | ||
| 			// from original name.  This will allow the data load to know it's a sub.
 | ||
| 			if (findx > 0)
 | ||
| 				lfmtname = fmtName.Substring(0, fmtName.Length - 4) + "_" + fmtName.Substring(fmtName.Length - 2, 2);
 | ||
| 			string destfile = "tmp_fmt_xml\\" + lfmtname + "f.xml";
 | ||
| 			if (File.Exists(destfile)) File.Delete(destfile);
 | ||
| 			TextWriter writer = new StreamWriter(destfile);
 | ||
| 			try
 | ||
| 			{
 | ||
| 				_MyFormatSerializer.Serialize(writer, fmtdata);
 | ||
| 				writer.Close();
 | ||
| 				//XslCompiledTransform xsl = new XslCompiledTransform();
 | ||
| 				//xsl.Load(Application.StartupPath + "\\TranslateFmt.XSL");
 | ||
| 				string sResults = "fmt_xml\\" + lfmtname + "f.xml";
 | ||
| 				//xsl.Transform(destfile, sResults); // Perform Transform
 | ||
| 				XslCompiledTransform xsl = getTransform(Application.StartupPath + "\\TranslateFmt.XSL");
 | ||
| 				xsl.Transform(destfile, sResults); // Perform Transform
 | ||
| 				xsl = getTransform(Application.StartupPath + "\\removeempty.XSL");
 | ||
| 				//xsl.Load(Application.StartupPath + "\\removeempty.XSL");
 | ||
| 				string sResults2 = "fmt_xml\\" + lfmtname + "xf.xml";
 | ||
| 				xsl.Transform(sResults, sResults2);
 | ||
| 				File.Delete(sResults);
 | ||
| 				xsl.Transform(sResults2, sResults);
 | ||
| 				File.Delete(sResults2);
 | ||
| 			}
 | ||
| 
 | ||
| 			catch (Exception e)
 | ||
| 			{
 | ||
| 				Console.WriteLine("Error writing out xml or xsl - format = {0}", fmtdata.Name);
 | ||
| 				Console.WriteLine(e.Message);
 | ||
| 				Console.WriteLine();
 | ||
| 				return false;
 | ||
| 			}
 | ||
| 			return true;
 | ||
| 		}
 | ||
| 		#endregion
 | ||
| 		#region OriginalNoBase
 | ||
| 		//public void LoadFormatFileOrig(string fname)
 | ||
| 		//{
 | ||
| 		//    FormatData fmtdata = new FormatData();
 | ||
| 
 | ||
| 		//    // read in data & put into correct place of structures.
 | ||
| 		//    // for test string fnm = "E:\\proms.net\\exe\\fmtxml\\" + fname;
 | ||
| 		//    string fnm = "E:\\ve-proms\\format\\" + fname;
 | ||
| 		//    brFmt = new BinaryReader(File.Open(fnm, System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite, FileShare.ReadWrite));
 | ||
| 		//    bool success = ReadInFmtFile(ref fmtdata);
 | ||
| 		//    #region FinishMainConvert
 | ||
| 		//    if (success)
 | ||
| 		//    {
 | ||
| 		//        DoStepInheritance(ref fmtdata.StepData);
 | ||
| 		//        success = WriteOutXml(fmtdata);
 | ||
| 		//    }
 | ||
| 		//    #endregion
 | ||
| 		//    brFmt.Close();
 | ||
| 
 | ||
| 		//    #region ProcessSubFormats
 | ||
| 		//    // For each sub-format, load the entire file & compare to parent contents
 | ||
| 		//    DirectoryInfo di = new DirectoryInfo("E:\\ve-proms\\format");
 | ||
| 		//    string substr = fname.Substring(0, fname.IndexOf('.')) + ".x*";
 | ||
| 		//    FileInfo [] fis = di.GetFiles(substr);
 | ||
| 		//    foreach (FileInfo fi in fis)
 | ||
| 		//    {
 | ||
| 		//        //this.listBox1.Items.Add(fi.Name);
 | ||
| 		//        fmtName = fi.Name;
 | ||
| 		//        fnm = "E:\\ve-proms\\format\\" + fi.Name;
 | ||
| 		//        brFmt = new BinaryReader(File.Open(fnm, System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite, FileShare.ReadWrite));
 | ||
| 		//        FormatData subdata = new FormatData();
 | ||
| 		//        success = ReadInFmtFile(ref subdata);
 | ||
| 		//        if (success)
 | ||
| 		//        {
 | ||
| 		//            DoStepInheritance(ref subdata.StepData);
 | ||
| 		//        }
 | ||
| 		//        // Now do entire format inheritance - then write out.
 | ||
| 		//        success = CompareParentSub(fmtdata, ref subdata);
 | ||
| 		//        success = WriteOutXml(subdata);
 | ||
| 
 | ||
| 		//    }
 | ||
| 		//    #endregion
 | ||
| 		//}
 | ||
| 		#endregion
 | ||
| 		#region InheritBase
 | ||
| 		public void LoadFormatFile(string fname, ref XtraFlgs XtraFlags)
 | ||
| 		{
 | ||
| 			FormatData fmtdata = new FormatData();
 | ||
| 
 | ||
| 			// read in data & put into correct place of structures.
 | ||
| 			// for test string fnm = "E:\\proms.net\\exe\\fmtxml\\" + fname;
 | ||
| 			string fnm = MyPath + @"\" + fname;
 | ||
| 			brFmt = new BinaryReader(File.Open(fnm, System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite, FileShare.ReadWrite));
 | ||
| 			bool success = ReadInFmtFile(ref fmtdata, ref BaseXtraFlags, fname);
 | ||
| 			AddPlantSpecific(fname, ref fmtdata);
 | ||
| 			if (!HasBase) SetBaseStepNumericValues(ref fmtdata);
 | ||
| 			FixInactiveForHigh(ref fmtdata);
 | ||
| 			FixInactiveForSubStep(ref fmtdata);
 | ||
| 			FixInactiveForText(ref fmtdata);
 | ||
| 			if (!HasBase) InitSymbols(ref fmtdata);
 | ||
| 			else fmtdata.Symbols = null;
 | ||
| 
 | ||
| 			if (success)
 | ||
| 			{
 | ||
| 				PushStepLists(fmtdata.StepData);
 | ||
| 				DoStepInheritance(ref fmtdata.StepData, fname);
 | ||
| 			}
 | ||
| 			brFmt.Close();
 | ||
| 
 | ||
| 			// Now compare with gen (if !gen).
 | ||
| 			if (HasBase == false)
 | ||
| 				success = WriteOutXml(fmtdata);
 | ||
| 			else
 | ||
| 			{
 | ||
| 				//success = WriteOutXmlTmp(fmtdata, "beforeParent");
 | ||
| 				success = CompareParentSub(BaseFormat, ref fmtdata);
 | ||
| 				success = WriteOutXml(fmtdata);
 | ||
| 
 | ||
| 				// For each sub-format, load the entire file & compare to parent contents
 | ||
| 				DirectoryInfo di = new DirectoryInfo(MyPath);
 | ||
| 				string substr = fname.Substring(0, fname.IndexOf('.')) + ".x*";
 | ||
| 				FileInfo[] fis = di.GetFiles(substr);
 | ||
| 				foreach (FileInfo fi in fis)
 | ||
| 				{
 | ||
| 					if (!Form1.Excluded(fi))
 | ||
| 					{
 | ||
| 						//this.listBox1.Items.Add(fi.Name);
 | ||
| 						fmtName = fi.Name;
 | ||
| 						fnm = MyPath + @"\" + fi.Name;
 | ||
| 						brFmt = new BinaryReader(File.Open(fnm, System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite, FileShare.ReadWrite));
 | ||
| 						FormatData subdata = new FormatData();
 | ||
| 						success = ReadInFmtFile(ref subdata, ref SubXtraFlags, fi.Name);
 | ||
| 						AddPlantSpecific(fi.Name, ref subdata);
 | ||
| 						//OutputStepFonts(fi.Name, subdata);
 | ||
| 						if (success)
 | ||
| 						{
 | ||
| 							PushStepLists(subdata.StepData);
 | ||
| 							DoStepInheritance(ref subdata.StepData,fname);
 | ||
| 							PopStepLists();
 | ||
| 						}
 | ||
| 						// Now do entire format inheritance - then write out.
 | ||
| 						success = CompareParentSub(fmtdata, ref subdata);
 | ||
| 						success = CompareParentSub(BaseFormat, ref subdata);
 | ||
| 						success = WriteOutXml(subdata);
 | ||
| 					}
 | ||
| 				}
 | ||
| 			}
 | ||
| 			MyFormat = fmtdata;
 | ||
| 			if (HasBase) PopStepLists();		// leave the base format on 'stack', i.e. only pop if !base.
 | ||
| 		}
 | ||
| 
 | ||
| 		private void SetBaseStepNumericValues(ref FormatData fmtdata)
 | ||
| 		{
 | ||
| 			Step stp = fmtdata.StepData[0];
 | ||
| 			stp.ColOverride = "0";
 | ||
| 			stp.ColOverrideEdit = "0";
 | ||
| 			stp.WidthOverride = "0";
 | ||
| 			stp.WidthOverrideEdit = "0";
 | ||
| 			stp.StepLayoutData.STExtraSpace = "0";
 | ||
| 			stp.StepLayoutData.EveryNLines = "1";			//default for this is 1
 | ||
| 			stp.StepLayoutData.SpaceAfter = "0";
 | ||
| 			stp.StepLayoutData.SpaceBefore = "0";
 | ||
| 		}
 | ||
| 
 | ||
| 		private void PushStepLists(Step[] stpdata)
 | ||
| 		{
 | ||
| 			Dictionary<string, Step> dicSteps = BuildStepDic(stpdata);
 | ||
| 			StepList.Insert(0, dicSteps);
 | ||
| 			Dictionary<string, Step> dicParents = BuildParentDic(stpdata, dicSteps);
 | ||
| 			StepParentList.Insert(0, dicParents);
 | ||
| 		}
 | ||
| 		private void PopStepLists()
 | ||
| 		{
 | ||
| 			StepList.RemoveAt(0);
 | ||
| 			StepParentList.RemoveAt(0);
 | ||
| 		}
 | ||
| 		private static void OutputStepFonts1(string fname, FormatData fmtdata)
 | ||
| 		{
 | ||
| 			if (fname == "BASE.fmt")
 | ||
| 			{
 | ||
| 				Console.Write("'Name','Description'");
 | ||
| 				for (int i = 0; i < MAXSTEPS + 1; i++)
 | ||
| 				{
 | ||
| 					Console.Write(",'{0}'", fmtdata.StepData[i].Type);
 | ||
| 				}
 | ||
| 				Console.Write("\r\n");
 | ||
| 				Console.Write("'base','Default'");
 | ||
| 			}
 | ||
| 			else
 | ||
| 				Console.Write("'{0}','{1}'", FixName(fname), fmtdata.Name);
 | ||
| 			for (int i = 0; i < MAXSTEPS + 1; i++)
 | ||
| 			{
 | ||
| 				if (fmtdata.StepData[i].Font != null)
 | ||
| 					Console.Write(",'{0} [{1}] - {2}'", fmtdata.StepData[i].Font.FontFamily, fmtdata.StepData[i].Font.FontSize, fmtdata.StepData[i].Font.FontStyle);
 | ||
| 				else if (i == 1 && fmtdata.StepData[0].Font != null)
 | ||
| 					Console.Write(",'{0} [{1}] - {2}'", fmtdata.StepData[0].Font.FontFamily, fmtdata.StepData[0].Font.FontSize, fmtdata.StepData[0].Font.FontStyle);
 | ||
| 				else
 | ||
| 					Console.Write(",'Prestige Elite Tall [10] - None'");
 | ||
| 			}
 | ||
| 			Console.Write("\r\n");
 | ||
| 		}
 | ||
| 		private static void OutputStepFonts(string fname, FormatData fmtdata)
 | ||
| 		{
 | ||
| 			if (fname == "BASE.fmt")
 | ||
| 			{
 | ||
| 				Console.Write("'Name','Description'");
 | ||
| 				for (int i = 0; i < MAXSTEPS + 1; i++)
 | ||
| 				{
 | ||
| 					Console.Write(",'{0}'", fmtdata.StepData[i].Type);
 | ||
| 				}
 | ||
| 				Console.Write("\r\n");
 | ||
| 				Console.Write("'base','Default'");
 | ||
| 			}
 | ||
| 			else
 | ||
| 				Console.Write("'{0}','{1}'", FixName(fname), fmtdata.Name);
 | ||
| 			for (int i = 0; i < MAXSTEPS + 1; i++)
 | ||
| 			{
 | ||
| 				if (fmtdata.StepData[i].TabData.Font != null)
 | ||
| 					Console.Write(",'{0} [{1}] - {2}'", fmtdata.StepData[i].TabData.Font.FontFamily, fmtdata.StepData[i].TabData.Font.FontSize, fmtdata.StepData[i].TabData.Font.FontStyle);
 | ||
| 				else if (i == 1 && fmtdata.StepData[0].TabData.Font != null)
 | ||
| 					Console.Write(",'{0} [{1}] - {2}'", fmtdata.StepData[0].TabData.Font.FontFamily, fmtdata.StepData[0].TabData.Font.FontSize, fmtdata.StepData[0].TabData.Font.FontStyle);
 | ||
| 				else
 | ||
| 					Console.Write(",'*'");
 | ||
| 			}
 | ||
| 			Console.Write("\r\n");
 | ||
| 		}
 | ||
| 		private static string FixName(string fname)
 | ||
| 		{
 | ||
| 			string lfmtname = fname;
 | ||
| 			int findx = fname.IndexOf('.');
 | ||
| 			// for subformats, make the name FMT_00 where FMT is format name & 00 is number
 | ||
| 			// from original name.  This will allow the data load to know it's a sub.
 | ||
| 			if (findx > 0)
 | ||
| 			{
 | ||
| 				if (fname.ToUpper().EndsWith(".FMT"))
 | ||
| 					lfmtname = fname.Substring(0, fname.Length - 4);
 | ||
| 				else
 | ||
| 					lfmtname = fname.Substring(0, fname.Length - 4) + fname.Substring(fname.Length - 2, 2);
 | ||
| 			}
 | ||
| 			return lfmtname;
 | ||
| 		}
 | ||
| 		private void InitSymbols(ref FormatData fmtdata)
 | ||
| 		{
 | ||
| 			fmtdata.Symbols = new Symbol[37];
 | ||
| 			fmtdata.Symbols[0].Unicode = "176";
 | ||
| 			fmtdata.Symbols[0].Desc = "degree";
 | ||
| 			fmtdata.Symbols[1].Unicode = "916";
 | ||
| 			fmtdata.Symbols[1].Desc = "delta";
 | ||
| 			fmtdata.Symbols[2].Unicode = "8805";
 | ||
| 			fmtdata.Symbols[2].Desc = "greater than or equal";
 | ||
| 			fmtdata.Symbols[3].Unicode = "8804";
 | ||
| 			fmtdata.Symbols[3].Desc = "less than or equal";
 | ||
| 			fmtdata.Symbols[4].Unicode = "177";
 | ||
| 			fmtdata.Symbols[4].Desc = "plus minus";
 | ||
| 			fmtdata.Symbols[5].Unicode = "931";
 | ||
| 			fmtdata.Symbols[5].Desc = "sigma";
 | ||
| 			fmtdata.Symbols[6].Unicode = "947";
 | ||
| 			fmtdata.Symbols[6].Desc = "gamma";
 | ||
| 			fmtdata.Symbols[7].Unicode = "189";
 | ||
| 			fmtdata.Symbols[7].Desc = "half";
 | ||
| 			fmtdata.Symbols[8].Unicode = "9604";
 | ||
| 			fmtdata.Symbols[8].Desc = "accum";
 | ||
| 			fmtdata.Symbols[9].Unicode = "9679";
 | ||
| 			fmtdata.Symbols[9].Desc = "bullet";
 | ||
| 			fmtdata.Symbols[10].Unicode = "8776";
 | ||
| 			fmtdata.Symbols[10].Desc = "approx eq";
 | ||
| 			fmtdata.Symbols[11].Unicode = "8773";
 | ||
| 			fmtdata.Symbols[11].Desc = "similar eq";
 | ||
| 			fmtdata.Symbols[12].Unicode = "247";
 | ||
| 			fmtdata.Symbols[12].Desc = "division";
 | ||
| 			fmtdata.Symbols[13].Unicode = "8730";
 | ||
| 			fmtdata.Symbols[13].Desc = "square root";
 | ||
| 			fmtdata.Symbols[14].Unicode = "961";
 | ||
| 			fmtdata.Symbols[14].Desc = "rho";
 | ||
| 			fmtdata.Symbols[15].Unicode = "960";
 | ||
| 			fmtdata.Symbols[15].Desc = "pi";
 | ||
| 			fmtdata.Symbols[16].Unicode = "956";
 | ||
| 			fmtdata.Symbols[16].Desc = "micro";
 | ||
| 			fmtdata.Symbols[17].Unicode = "948";
 | ||
| 			fmtdata.Symbols[17].Desc = "lower case delta";
 | ||
| 			fmtdata.Symbols[18].Unicode = "963";
 | ||
| 			fmtdata.Symbols[18].Desc = "lower case sigma";
 | ||
| 			fmtdata.Symbols[19].Unicode = "188";
 | ||
| 			fmtdata.Symbols[19].Desc = "quarter";
 | ||
| 			fmtdata.Symbols[20].Unicode = "216";
 | ||
| 			fmtdata.Symbols[20].Desc = "dist zero";
 | ||
| 			fmtdata.Symbols[21].Unicode = "274";
 | ||
| 			fmtdata.Symbols[21].Desc = "energy";
 | ||
| 			fmtdata.Symbols[22].Unicode = "236";
 | ||
| 			fmtdata.Symbols[22].Desc = "grave";
 | ||
| 			fmtdata.Symbols[23].Unicode = "9474";
 | ||
| 			fmtdata.Symbols[23].Desc = "bar";
 | ||
| 			fmtdata.Symbols[24].Unicode = "949";
 | ||
| 			fmtdata.Symbols[24].Desc = "epsilon";
 | ||
| 			fmtdata.Symbols[25].Unicode = "952";
 | ||
| 			fmtdata.Symbols[25].Desc = "theta";
 | ||
| 			fmtdata.Symbols[26].Unicode = "8857";
 | ||
| 			fmtdata.Symbols[26].Desc = "dot in oval";
 | ||
| 			fmtdata.Symbols[27].Unicode = "964";
 | ||
| 			fmtdata.Symbols[27].Desc = "tau";
 | ||
| 			fmtdata.Symbols[28].Unicode = "9830";
 | ||
| 			fmtdata.Symbols[28].Desc = "diamond";
 | ||
| 			fmtdata.Symbols[29].Unicode = "8594";
 | ||
| 			fmtdata.Symbols[29].Desc = "right arrow";
 | ||
| 			fmtdata.Symbols[30].Unicode = "8592";
 | ||
| 			fmtdata.Symbols[30].Desc = "left arrow";
 | ||
| 			fmtdata.Symbols[31].Unicode = "8593";
 | ||
| 			fmtdata.Symbols[31].Desc = "up arrow";
 | ||
| 			fmtdata.Symbols[32].Unicode = "8595";
 | ||
| 			fmtdata.Symbols[32].Desc = "down arrow";
 | ||
| 			fmtdata.Symbols[33].Unicode = "8711";
 | ||
| 			fmtdata.Symbols[33].Desc = "unknown5";
 | ||
| 			fmtdata.Symbols[34].Unicode = "945";
 | ||
| 			fmtdata.Symbols[34].Desc = "alpha";
 | ||
| 			fmtdata.Symbols[35].Unicode = "946";
 | ||
| 			fmtdata.Symbols[35].Desc = "beta";
 | ||
| 		}
 | ||
| 		#endregion
 | ||
| 		#region TokenConvert
 | ||
| 		private string ConvertTransFormat(string p)
 | ||
| 		{
 | ||
| 			// parenflag puts paren around proc title AND sectitle.
 | ||
| 			p = p.Replace("\xff", "\xA0");
 | ||
| 			p = p.Replace("\x07", "{First Step}");
 | ||
| 			p = p.Replace("\x08", "{Last Step}");
 | ||
| 			p = p.Replace("\x04", "{Sect Title}");
 | ||
| 			p = p.Replace("\x06", "{Sect Title}");
 | ||
| 			p = p.Replace("\x03", "{Sect Num}");
 | ||
| 			p = p.Replace("\x17", "{Sect Num}");
 | ||
| 			p = p.Replace("\x02", "{Proc Title}");
 | ||
| 			p = p.Replace("\x01", "{Proc Num}");
 | ||
| 			p = p.Replace("\xF", "{Page Num}");
 | ||
| 			p = p.Replace("\x1E", "{Page Num}");
 | ||
| 			p = p.Replace("\x1D", "{Step Text}");
 | ||
| 			p = p.Replace("\x0D", "Step {First Step}");
 | ||
| 
 | ||
| 			// the following are in cpl & she format Not sure what to do so just
 | ||
| 			// flag them
 | ||
| 			//if (p.Length==1 && (p.IndexOfAny("\x19\x1A".ToCharArray())>-1))
 | ||
| 			//{
 | ||
| 			p = p.Replace("\x19", "{TransFmt hex 19}");
 | ||
| 			p = p.Replace("\x1A", "{TransFmt hex 1a}");
 | ||
| 			//}
 | ||
| 
 | ||
| 			p = ConvertText(p);
 | ||
| 			p = DoReplaceTokens(p);
 | ||
| 			return p;
 | ||
| 		}
 | ||
| 		private string DoReplaceTokens(string p)
 | ||
| 		{
 | ||
| 			if (p == null || p == "") return p;
 | ||
| 			string wkstr = p;
 | ||
| 			// use regular expressions to do the following...
 | ||
| 
 | ||
| 			try
 | ||
| 			{
 | ||
| 				// replace newline with {par}
 | ||
| 				wkstr = wkstr.Replace("\n", @"{\par}");
 | ||
| 
 | ||
| 				// special change bar token (various cpl formats)
 | ||
| 				wkstr = wkstr.Replace("\x08\x08\x08\x08\x08\x05", "{CHG_BAR with Backspace Token}");
 | ||
| 
 | ||
| 				// special change bar token (various gpc formats)
 | ||
| 				wkstr = wkstr.Replace("\x05", "{CHG_BAR Token}");
 | ||
| 
 | ||
| 				// backspage - just flag for positioning if needed.
 | ||
| 				wkstr = wkstr.Replace("\x08", "{Backspace}");
 | ||
| 
 | ||
| 				//sub on/off
 | ||
| 				//sub on/off - stop at EOL, another token or a space.
 | ||
| 				wkstr = wkstr.Replace("\x19\x19", "\x19");  // replace double sub on with single
 | ||
| 				wkstr = wkstr.Replace("~~", "\x19");
 | ||
| 				wkstr = Regex.Replace(wkstr, @"\x19([^\x19\x18 ]*?)(?:[\x19\x18]|(?= )|\Z)(.*?)", @"\dn2 $1\up0 $2");
 | ||
| 
 | ||
| 				//super on/off
 | ||
| 				//super on/off - stop at EOL, another token or a space.
 | ||
| 				wkstr = Regex.Replace(wkstr, @"\x18([^\x19\x18 ]*?)(?:[\x19\x18]|(?= )|\Z)(.*?)", @"\up2 $1\up0 $2");
 | ||
| 
 | ||
| 				//bold on/off - stop at end of line or another token.
 | ||
| 				wkstr = Regex.Replace(wkstr, @"\x01([^\x01]*?)(?:\x01|\Z)", @"\b $1\b0 ");
 | ||
| 				//OLD CODE (pre-10/2007): wkstr = Regex.Replace(wkstr, @"\x01([^\x01 ]*?)(?:[\x01]|(?= )|\Z)(.*?)", @"\b$1\b0$2");
 | ||
| 				//bold on/off - stop at EOL, another token or a space
 | ||
| 				wkstr = Regex.Replace(wkstr, @"\x13([^\x13\xd6 ]*?)(?:[\x13\xd6]|(?= )|\Z)(.*?)", @"\b $1\b0 $2");
 | ||
| 
 | ||
| 				//underline on/off - look for 16 followed by non-sixteen (as many as there are) and followed by 16 or endofline
 | ||
| 				//OLD CODE (pre-10/2007): wkstr = Regex.Replace(wkstr, @"\x16([^\x16 ]*?)(?:[\x16]|(?= )|\Z)(.*?)", @"\ul$1\ul0$2");
 | ||
| 				//underline on/off - stop at end of line or another token.
 | ||
| 				//wkstr = Regex.Replace(wkstr, @"\x16([^\x16]*?)(?:\x16|\Z)", @"\ul $1\ul0 ");
 | ||
| 				wkstr = Regex.Replace(wkstr, @"\x16([^\x16]*?)(?:\x16|\Z)", @"\ul $1\ulnone ");
 | ||
| 
 | ||
| 				//narrator
 | ||
| 				wkstr = Regex.Replace(wkstr, @"\x86([^\x86 ]*?)(?:[\x86]|(?= )|\Z)(.*?)", @"\f{Narrator}$1\f0$2");
 | ||
| 
 | ||
| 				// remove hanging indent, vertical tab
 | ||
| 				wkstr = Regex.Replace(wkstr, @"\x02", @"\NonSupported Hanging Indent (Hex x02)");
 | ||
| 				wkstr = Regex.Replace(wkstr, @"\x0B", @"\NonSupported Vertical Tab (Hex x0b");
 | ||
| 
 | ||
| 				// remove some unknown chars for ano & fpl - these plants are not supported
 | ||
| 				// as of conversion date.
 | ||
| 				wkstr = Regex.Replace(wkstr, @"\x95", @"\NonSupported Unknown (Hex x95)");  //ano2vlv
 | ||
| 				wkstr = Regex.Replace(wkstr, @"\x1bf1", @"\NonSupported Unknown (hex 1b f1)");  //fpl
 | ||
| 				wkstr = Regex.Replace(wkstr, @"\x1bf0", @"\NonSupported Unknown (hex 1b f0)");  //fpl
 | ||
| 				wkstr = Regex.Replace(wkstr, @"\x1bM1", @"\NonSupported Unknown (hex 1b M1)");  //fpl
 | ||
| 				wkstr = Regex.Replace(wkstr, @"\x1bM0", @"\NonSupported Unknown (hex 1b M0)");  //fpl
 | ||
| 
 | ||
| 				// replace \xff with \xA0, i.e. hardspace
 | ||
| 				wkstr = Regex.Replace(wkstr, @"\xFF", @"\xA0");
 | ||
| 
 | ||
| 				// replace x10 & x11 in various ano tabs - not this needs fixed if ANO comes
 | ||
| 				// back into the program
 | ||
| 				wkstr = wkstr.Replace("\x10", "");
 | ||
| 				wkstr = wkstr.Replace("\x11", "");
 | ||
| 
 | ||
| 				// replace x15 with {RO} for now.
 | ||
| 				wkstr = wkstr.Replace("\x15", "{RO}");
 | ||
| 			}
 | ||
| 			catch (Exception ex)
 | ||
| 			{
 | ||
| 				Console.WriteLine("error replacing token (regex) = {0}", ex.Message);
 | ||
| 			}
 | ||
| 
 | ||
| 			return wkstr;
 | ||
| 		}
 | ||
| 		private float CalculateTabWid(string p)
 | ||
| 		{
 | ||
| 			if (p == null || p.Length == 0) return 0;
 | ||
| 			int tablen = p.Length;
 | ||
| 			// don't count if macro....
 | ||
| 			int tokb = p.IndexOf("{");
 | ||
| 			if (tokb > -1)
 | ||
| 			{
 | ||
| 				if ((tokb = p.IndexOf("{!")) > -1)
 | ||
| 				{
 | ||
| 					int toke = p.IndexOf("}", tokb + 2);
 | ||
| 					tablen -= (toke - tokb + 1);
 | ||
| 				}
 | ||
| 				else
 | ||
| 					tablen -= 2;   // "{}"
 | ||
| 			}
 | ||
| 			if ((tokb = p.IndexOf("\xA1")) > -1) tablen--;		// flags circle macro
 | ||
| 			if ((tokb = p.IndexOf("##-3#")) > -1) tablen -= 5;	// positioning
 | ||
| 			if ((tokb = p.IndexOf("\xAF")) > -1) tablen--;		// indent
 | ||
| 			if ((tokb = p.IndexOf("\n")) > -1) tablen--;		// newline - not sure what to do here
 | ||
| 			if ((tokb = p.IndexOf("<22>")) > -1) tablen--;			// box step flag
 | ||
| 			for (int i = 0; i < p.Length; i++) if (p[i] == 0x08) tablen--;		// discount backspaces.
 | ||
| 			for (int i = 0; i < p.Length; i++) if (p[i] == 0x16) tablen--;	// underline toggle tokens
 | ||
| 			if (tablen < 0) tablen = 0;
 | ||
| 			return ColToPoints(tablen, _PlantDefaultFontStyle);
 | ||
| 		}
 | ||
| 		private int NBRSub = 16;
 | ||
| 		//  STANDARD,AND,OR,EQUIPMENTLIST,EQUIPMENTWBLANK,EXPLICITAND,IMPLICITOR,PARAGRAPH,
 | ||
| 		//   EQUIPMENTOPT,EQUIPMENTOPTWBLANK,CONTACSEQUENTIAL,CONTACAND,CONTACOR,CONTACPARAGRAPH,TITLEWITHTEXTRIGHT,TITLEWITHTEXTBELOW
 | ||
| 		private int[] SubTypeValue ={0,3,4,10,13,18,34,23,29,30,43,44,45,46,41,42};
 | ||
| 		private string DoTabs(VE_Font vefont, string po, int i, string p, bool doNumeric)
 | ||
| 		{
 | ||
| 			// subtypes were defined as the list of types in the comment above from 16bit.  These types, if a tab
 | ||
| 			// string is not defined, should get a {seq}
 | ||
| 			if ((p == null || p == "") && !IsSubType(i)) return p ?? "";
 | ||
| 
 | ||
| 			string wkstr = p;
 | ||
| 			if (p == null)
 | ||
| 				return "{seq}";
 | ||
| 			//Number Formatting
 | ||
| 			// $ - Uppercase Alphabetical (IP2, GEN, CAL2, VLNCAS)
 | ||
| 			// & - Roman Numeral - UpperCase
 | ||
| 			// @ - Uppercase Alphabetical (AEP, CAL2, GEN, IP2, NSP, RGE, VLNCAS)
 | ||
| 			wkstr = Regex.Replace(wkstr, @"\$", @"{ALPHA}");
 | ||
| 			wkstr = Regex.Replace(wkstr, @"&", @"{ROMAN}");
 | ||
| 			wkstr = Regex.Replace(wkstr, @"@", @"{ALPHA}");
 | ||
| 
 | ||
| 			// Position offset - do this one here, so don't get background substitution below..
 | ||
| 			// ##-3# - Offset of -3 from Parent (FNP)
 | ||
| 			wkstr = Regex.Replace(wkstr, @"##-3#", @"{Pos-3}");
 | ||
| 
 | ||
| 			// Background/Deviation Documents - check for E_PurchaseOptions.(ENHANCEDBACKGROUNDS or ENHANCEDDEVIATIONS)
 | ||
| 			// # - Related Caution or Note number
 | ||
| 			// ~ - Linked Step Number
 | ||
| 
 | ||
| 			if ((po.ToUpper().IndexOf("ENHANCEDBACKGROUNDS") > -1) || (po.ToUpper().IndexOf("ENHANCEDDEVIATIONS") > -1))
 | ||
| 			{
 | ||
| 				wkstr = wkstr.Replace("#", "{LNK C/N Num}");
 | ||
| 				wkstr = wkstr.Replace("~", "{LNK Step Num}");
 | ||
| 			}
 | ||
| 
 | ||
| 			// Insert seq & numeric for sequential & any high type if there are not other
 | ||
| 			// commands.
 | ||
| 			int indx = 0;
 | ||
| 			// if sequential or high, add the seq or numeric token
 | ||
| 			if (i == 0 && ((indx = wkstr.IndexOf("{")) < 0)) // sequential - put in "{seq}"
 | ||
| 				wkstr = wkstr.Insert(0, "{seq}");
 | ||
| 			// high, immediate, continuous, lossofac, high5 - put in " {numeric}  "
 | ||
| 			else if ((i == 1 || i == 2 || i == 8 || i == 17 || i == 40) && ((indx = wkstr.IndexOf("{")) < 0) && doNumeric)
 | ||
| 			{
 | ||
| 				int indxColon = wkstr.IndexOf(":");
 | ||
| 				int indxPercent = wkstr.IndexOf("%");
 | ||
| 				if (indxColon > 0)
 | ||
| 					wkstr = wkstr.Insert(indxColon, "{numeric}");
 | ||
| 				else if (indxPercent > 0)
 | ||
| 					wkstr = wkstr.Insert(indxPercent + 1, "{numeric}");  // put numeric after section prefix
 | ||
| 				else
 | ||
| 					wkstr = wkstr.Insert(1, "{numeric}");
 | ||
| 			}
 | ||
| 
 | ||
| 			//Section Numbers
 | ||
| 			// % - Prefix with section number (works string in 16 bit, ie.e For 4.3 the prefix becomes 4.
 | ||
| 			// wid that would be stored. 
 | ||
| 			wkstr = Regex.Replace(wkstr, @"%", @"{Section Prefix}");
 | ||
| 
 | ||
| 			// Position offset
 | ||
| 			// \257 - Indent (CALLOWAY BACKGROUNDS)
 | ||
| 			// Newline within a tab (calbck)
 | ||
| 			wkstr = wkstr.Replace("\xAF", @"{indent}");
 | ||
| 			wkstr = wkstr.Replace("\n", @"{par}");
 | ||
| 
 | ||
| 			//Macros
 | ||
| 			// <!diamond> - draws a diamond around the stepnumber
 | ||
| 			// <!diamond1> - A macro
 | ||
| 			// <!asterisk>
 | ||
| 			// <> - ignored
 | ||
| 			// \241 - circle macro around step, same as <!circle>
 | ||
| 			// Also note, the format files had "<>", these get converted during input in this
 | ||
| 			// format converter code.
 | ||
| 			wkstr = wkstr.Replace("{!asterisk}", "\\fs10 \\b*\\b0");		// was font size 20 in 16-bit
 | ||
| 			wkstr = Regex.Replace(wkstr, @"{![.*?]}", @"{!$1}");
 | ||
| 			wkstr = wkstr.Replace("{}", "");
 | ||
| 			wkstr = wkstr.Replace("<22>", "{!C0}");
 | ||
| 			if (vefont != null && vefont.HasCircleString2()) wkstr.Insert(0, "{!C0}");
 | ||
| 
 | ||
| 			// Symbols
 | ||
| 			// * - simply an asterisk (do nothing here)
 | ||
| 			// - - simlply a dash  (do nothing here)
 | ||
| 			// \007 - bullet (gets translated
 | ||
| 			wkstr = wkstr.Replace("\007", "\x9679");
 | ||
| 			wkstr = wkstr.Replace("<22>", @"{Box Step}");
 | ||
| 			wkstr = DoReplaceTokens(wkstr);
 | ||
| 			wkstr = ConvertText(wkstr);
 | ||
| 			return wkstr;
 | ||
| 		}
 | ||
| 		private bool IsSubType(int indx)
 | ||
| 		{
 | ||
| 			for (int i = 0; i < NBRSub; i++) if (indx == SubTypeValue[i]) return true;
 | ||
| 			return false;
 | ||
| 		}
 | ||
| 		#endregion
 | ||
| 		#region DoEntireInherit
 | ||
| 		private bool CompareParentSub(FormatData mainFmt, ref FormatData subFmt)
 | ||
| 		{
 | ||
| 			// just compare all fields - clear the subformat if equal.
 | ||
| 			#region COMPAREACTIVE
 | ||
| 			subFmt.FontData = FixInheritedFont(subFmt.FontData, mainFmt.FontData); // Phase 10
 | ||
| 			if (mainFmt.PurchaseOptions == subFmt.PurchaseOptions) subFmt.PurchaseOptions = 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";
 | ||
| 			if (mainFmt.SectData.StepSectionData.TopRow == subFmt.SectData.StepSectionData.TopRow) subFmt.SectData.StepSectionData.TopRow = NullInt;
 | ||
| 			if (mainFmt.PrintData.DoPrnDrvrAdjusts == subFmt.PrintData.DoPrnDrvrAdjusts) subFmt.PrintData.DoPrnDrvrAdjusts = NullInt;
 | ||
| 			if (mainFmt.PrintData.DoRevDate != null && mainFmt.PrintData.DoRevDate == subFmt.PrintData.DoRevDate) subFmt.PrintData.DoRevDate = "null";
 | ||
| 			if (mainFmt.PrintData.AlternateFoldoutPages != null && mainFmt.PrintData.AlternateFoldoutPages == subFmt.PrintData.AlternateFoldoutPages) subFmt.PrintData.AlternateFoldoutPages = "null";
 | ||
| 			if (mainFmt.PrintData.AlternateFloatingFoldout != null && mainFmt.PrintData.AlternateFloatingFoldout == subFmt.PrintData.AlternateFloatingFoldout) subFmt.PrintData.AlternateFloatingFoldout = "null";
 | ||
| 			if (mainFmt.PrintData.SectionLevelFoldouts != null && mainFmt.PrintData.SectionLevelFoldouts == subFmt.PrintData.SectionLevelFoldouts) subFmt.PrintData.SectionLevelFoldouts = "null";
 | ||
| 			if (mainFmt.PrintData.RevDateWithForwardSlash != null && mainFmt.PrintData.RevDateWithForwardSlash == subFmt.PrintData.RevDateWithForwardSlash) subFmt.PrintData.RevDateWithForwardSlash = "null";
 | ||
| 			//if (mainFmt.PrintData.SpecialStepsFoldout != null && mainFmt.PrintData.SpecialStepsFoldout == subFmt.PrintData.SpecialStepsFoldout) subFmt.PrintData.SpecialStepsFoldout = "null";
 | ||
| 			if (mainFmt.PrintData.AccessoryDocsInDuplex != null && mainFmt.PrintData.AccessoryDocsInDuplex == subFmt.PrintData.AccessoryDocsInDuplex) subFmt.PrintData.AccessoryDocsInDuplex = "null";
 | ||
| 			if (mainFmt.PrintData.AllowDuplex != null && mainFmt.PrintData.AllowDuplex == subFmt.PrintData.AllowDuplex) subFmt.PrintData.AllowDuplex = "null";
 | ||
| 			if (mainFmt.PrintData.FoldoutsInDuplex != null && mainFmt.PrintData.FoldoutsInDuplex == subFmt.PrintData.FoldoutsInDuplex) subFmt.PrintData.FoldoutsInDuplex = "null";
 | ||
| 			if (mainFmt.PrintData.PagelistChangeIDsWithCommas != null && mainFmt.PrintData.PagelistChangeIDsWithCommas == subFmt.PrintData.PagelistChangeIDsWithCommas) subFmt.PrintData.PagelistChangeIDsWithCommas = "null";
 | ||
| 
 | ||
| 			// box data...
 | ||
| 			for (int i = 0; i < MAXBOXES + 1; i++)
 | ||
| 			{
 | ||
| 				Box mbox = mainFmt.BoxData[i];
 | ||
| 				Box sbox = subFmt.BoxData[i];
 | ||
| 				if (mbox.Start == sbox.Start) sbox.Start = NullInt;
 | ||
| 				if (mbox.End == sbox.End) sbox.End = NullInt;
 | ||
| 				if (mbox.TxtStart == sbox.TxtStart) sbox.TxtStart = NullInt;
 | ||
| 				if (mbox.TxtWidth == sbox.TxtWidth) sbox.TxtWidth = NullInt;
 | ||
| 				if (mbox.Height == sbox.Height) sbox.Height = NullInt;
 | ||
| 				if (mbox.TabPos == sbox.TabPos) sbox.TabPos = NullInt;
 | ||
| 				subFmt.BoxData[i].Font = FixInheritedFont(sbox.Font, mbox.Font); // Phase 3
 | ||
| 			}
 | ||
| 
 | ||
| 			StepSectionLayout msctlay = mainFmt.SectData.StepSectionData.StpSectLayData;
 | ||
| 			StepSectionLayout ssctlay = subFmt.SectData.StepSectionData.StpSectLayData;
 | ||
| 			if (msctlay.TableCenterPos == ssctlay.TableCenterPos) subFmt.SectData.StepSectionData.StpSectLayData.TableCenterPos = null;
 | ||
| 			subFmt.SectData.StepSectionData.StpSectLayData.TopOfPage.Font = FixInheritedFont(ssctlay.TopOfPage.Font, msctlay.TopOfPage.Font);// Phase 4
 | ||
| 			if (msctlay.TopOfPage.Row == ssctlay.TopOfPage.Row) subFmt.SectData.StepSectionData.StpSectLayData.TopOfPage.Row = NullInt;
 | ||
| 			if (msctlay.TopOfPage.Col == ssctlay.TopOfPage.Col) subFmt.SectData.StepSectionData.StpSectLayData.TopOfPage.Col = NullInt;
 | ||
| 
 | ||
| 			StepSectionPrint msctpr = mainFmt.SectData.StepSectionData.StpSectPrtData;
 | ||
| 			StepSectionPrint ssctpr = subFmt.SectData.StepSectionData.StpSectPrtData;
 | ||
| 			subFmt.SectData.StepSectionData.StpSectPrtData.ModifiedTextStyle = FixInheritedFont(msctpr.ModifiedTextStyle, msctpr.ModifiedTextStyle); // Phase 11
 | ||
| 			subFmt.SectData.StepSectionData.StpSectLayData.Separator.Font = FixInheritedFont(ssctlay.Separator.Font, msctlay.Separator.Font); // Phase 5
 | ||
| 			if (msctlay.Separator.SeparatorLocation == ssctlay.Separator.SeparatorLocation) subFmt.SectData.StepSectionData.StpSectLayData.Separator.SeparatorLocation = NullInt;
 | ||
| 			if (msctlay.LastLineToStartStep == ssctlay.LastLineToStartStep) subFmt.SectData.StepSectionData.StpSectLayData.LastLineToStartStep = NullInt;
 | ||
| 
 | ||
| 			//for (int i=0; i<10; i++)
 | ||
| 			//    if (mainFmt.SectData.StepSectionData.TextTypeValue[i] == subFmt.SectData.StepSectionData.TextTypeValue[i]) mainFmt.SectData.StepSectionData.TextTypeValue[i] = 0;
 | ||
| 
 | ||
| 			if (msctlay.LineDrawingOption == ssctlay.LineDrawingOption) subFmt.SectData.StepSectionData.StpSectLayData.LineDrawingOption = NullInt;
 | ||
| 			if (msctlay.ColS == ssctlay.ColS) subFmt.SectData.StepSectionData.StpSectLayData.ColS = NullInt;
 | ||
| 
 | ||
| 			StepSectionEdit mscted = mainFmt.SectData.StepSectionData.StpSectEditData;
 | ||
| 			StepSectionEdit sscted = subFmt.SectData.StepSectionData.StpSectEditData;
 | ||
| 			if (mscted.ColSScreenAdj == sscted.ColSScreenAdj) subFmt.SectData.StepSectionData.StpSectEditData.ColSScreenAdj = NullInt;
 | ||
| 			if (mscted.ScrnAdjRNOText == sscted.ScrnAdjRNOText) subFmt.SectData.StepSectionData.StpSectEditData.ScrnAdjRNOText = NullInt;
 | ||
| 
 | ||
| 			if (msctlay.ColT == ssctlay.ColT) subFmt.SectData.StepSectionData.StpSectLayData.ColT = NullInt;
 | ||
| 			if (msctlay.ColAbs == ssctlay.ColAbs) subFmt.SectData.StepSectionData.StpSectLayData.ColAbs = NullInt;
 | ||
| 			if (msctlay.WidT == ssctlay.WidT) subFmt.SectData.StepSectionData.StpSectLayData.WidT = NullInt;
 | ||
| 			if (msctlay.PMode == ssctlay.PMode) subFmt.SectData.StepSectionData.StpSectLayData.PMode = NullInt;
 | ||
| 			if (msctlay.MaxRNO == ssctlay.MaxRNO) subFmt.SectData.StepSectionData.StpSectLayData.MaxRNO = NullInt;
 | ||
| 			if (msctlay.MaxRNOTable == ssctlay.MaxRNOTable) subFmt.SectData.StepSectionData.StpSectLayData.MaxRNOTable = null;
 | ||
| 			if (msctlay.ColRTable == ssctlay.ColRTable) subFmt.SectData.StepSectionData.StpSectLayData.ColRTable = null;
 | ||
| 			if (msctlay.WidSTablePrint == ssctlay.WidSTablePrint) subFmt.SectData.StepSectionData.StpSectLayData.WidSTablePrint = null;
 | ||
| 			if (mscted.ColRScreen == sscted.ColRScreen) subFmt.SectData.StepSectionData.StpSectEditData.ColRScreen = null;
 | ||
| 			if (msctlay.AdjRNOCol == ssctlay.AdjRNOCol) subFmt.SectData.StepSectionData.StpSectLayData.AdjRNOCol = NullInt;
 | ||
| 
 | ||
| 			// change bar
 | ||
| 			ChangeBar mcb = mainFmt.ProcData.ChangeBarData;
 | ||
| 			ChangeBar scb = subFmt.ProcData.ChangeBarData;
 | ||
| 			if (mcb.ChangeBarMessage == scb.ChangeBarMessage) subFmt.ProcData.ChangeBarData.ChangeBarMessage = null;
 | ||
| 			if (mcb.FixedChangeColumn == scb.FixedChangeColumn) subFmt.ProcData.ChangeBarData.FixedChangeColumn = NullInt;
 | ||
| 			if (mcb.FixedAERChangeColumn == scb.FixedAERChangeColumn) subFmt.ProcData.ChangeBarData.FixedAERChangeColumn = NullInt;
 | ||
| 			if (mcb.ChangeSummaryStyle == scb.ChangeSummaryStyle) subFmt.ProcData.ChangeBarData.ChangeSummaryStyle = NullInt;
 | ||
| 			if (mcb.ChangeBarStyle == scb.ChangeBarStyle) subFmt.ProcData.ChangeBarData.ChangeBarStyle = NullInt;
 | ||
| 			if (mcb.CondensedChangeBar != null && mcb.CondensedChangeBar == scb.CondensedChangeBar) subFmt.ProcData.ChangeBarData.CondensedChangeBar = "null";
 | ||
| 			if (mcb.AbsoluteFixedChangeColumn != null && mcb.AbsoluteFixedChangeColumn == scb.AbsoluteFixedChangeColumn) subFmt.ProcData.ChangeBarData.AbsoluteFixedChangeColumn = "null";
 | ||
| 			if (mcb.ContinuousChangeBars != null && mcb.ContinuousChangeBars == scb.ContinuousChangeBars) subFmt.ProcData.ChangeBarData.ContinuousChangeBars = "null";
 | ||
| 			if (mcb.ChgBarMessageFromEdit != null && mcb.ChgBarMessageFromEdit == scb.ChgBarMessageFromEdit) subFmt.ProcData.ChangeBarData.ChgBarMessageFromEdit = "null";
 | ||
| 			if (mcb.MultipleChangeIds != null && mcb.MultipleChangeIds == scb.MultipleChangeIds) subFmt.ProcData.ChangeBarData.MultipleChangeIds = "null";
 | ||
| 			if (mcb.ChangeBarToRNOSep != null && mcb.ChangeBarToRNOSep == scb.ChangeBarToRNOSep) subFmt.ProcData.ChangeBarData.ChangeBarToRNOSep = "null";
 | ||
| 			if (mcb.ChangeBarsOnLinkedText != null && mcb.ChangeBarsOnLinkedText == scb.ChangeBarsOnLinkedText) subFmt.ProcData.ChangeBarData.ChangeBarsOnLinkedText = "null";
 | ||
| 
 | ||
| 			if (mainFmt.ProcData.TitleLength == subFmt.ProcData.TitleLength) subFmt.ProcData.TitleLength = NullInt;
 | ||
| 			if (mainFmt.ProcData.CoverTitleLength == subFmt.ProcData.CoverTitleLength) subFmt.ProcData.CoverTitleLength = NullInt;
 | ||
| 			if (mainFmt.ProcData.ProcForeColor == subFmt.ProcData.ProcForeColor) subFmt.ProcData.ProcForeColor = null;
 | ||
| 			if (mainFmt.ProcData.ProcBackColor == subFmt.ProcData.ProcBackColor) subFmt.ProcData.ProcBackColor = null;
 | ||
| 			if (mainFmt.ProcData.CapitalizeTitle != null && mainFmt.ProcData.CapitalizeTitle == subFmt.ProcData.CapitalizeTitle) subFmt.ProcData.CapitalizeTitle = "null";
 | ||
| 			if (mainFmt.ProcData.ChangeStyleForEverySection != null && mainFmt.ProcData.ChangeStyleForEverySection == subFmt.ProcData.ChangeStyleForEverySection) subFmt.ProcData.ChangeStyleForEverySection = "null";
 | ||
| 			if (mainFmt.ProcData.PrintNoTitle != null && mainFmt.ProcData.PrintNoTitle == subFmt.ProcData.PrintNoTitle) subFmt.ProcData.PrintNoTitle = "null";
 | ||
| 			if (mainFmt.ProcData.CountFoldoutPages != null && mainFmt.ProcData.CountFoldoutPages == subFmt.ProcData.CountFoldoutPages) subFmt.ProcData.CountFoldoutPages = "null";
 | ||
| 
 | ||
| 			// checkoff
 | ||
| 			CheckOffData mco = mainFmt.ProcData.CheckOffData;
 | ||
| 			CheckOffData sco = subFmt.ProcData.CheckOffData;
 | ||
| 			for (int i = 0; i < MAXCHKHEADINGS; i++)
 | ||
| 			{
 | ||
| 				if (mco.CheckOffHeaderList[i].CheckOffHeading == sco.CheckOffHeaderList[i].CheckOffHeading) subFmt.ProcData.CheckOffData.CheckOffHeaderList[i].CheckOffHeading = null;
 | ||
| 				sco.CheckOffHeaderList[i].Font = FixInheritedFont(sco.CheckOffHeaderList[i].Font, mco.CheckOffHeaderList[i].Font); // Phase 6
 | ||
| 			}
 | ||
| 			if (mco.Menu == sco.Menu) subFmt.ProcData.CheckOffData.Menu = "null";
 | ||
| 			if (mco.AllowSectEdit == sco.AllowSectEdit) subFmt.ProcData.CheckOffData.AllowSectEdit = "null";
 | ||
| 			if (mco.AllowStepEdit == sco.AllowStepEdit) subFmt.ProcData.CheckOffData.AllowStepEdit = "null";
 | ||
| 			if (mco.UseCheckOffsIn == sco.UseCheckOffsIn) subFmt.ProcData.CheckOffData.UseCheckOffsIn = NullInt;
 | ||
| 			if (mco.XLocation == sco.XLocation) subFmt.ProcData.CheckOffData.XLocation = NullInt;
 | ||
| 			if (mco.CheckOffAdjustment == sco.CheckOffAdjustment) subFmt.ProcData.CheckOffData.CheckOffAdjustment = NullInt;
 | ||
| 			if (mco.DropCheckOff != null && mco.DropCheckOff == sco.DropCheckOff) subFmt.ProcData.CheckOffData.DropCheckOff = "null";
 | ||
| 			if (mco.CheckOffOnHLSOnly != null && mco.CheckOffOnHLSOnly == sco.CheckOffOnHLSOnly) subFmt.ProcData.CheckOffData.CheckOffOnHLSOnly = "null";
 | ||
| 			if (mco.SkipSpaces != null && mco.SkipSpaces == sco.SkipSpaces) subFmt.ProcData.CheckOffData.SkipSpaces = "null";
 | ||
| 
 | ||
| 			if (mco.LayoutList != null && sco.LayoutList != null)
 | ||
| 			{
 | ||
| 				int mLayoutCount = mco.LayoutList.Length;
 | ||
| 				int sLayoutCount = sco.LayoutList.Length;
 | ||
| 				if (sLayoutCount == mLayoutCount)
 | ||
| 				{
 | ||
| 					for (int i = 0; i < sLayoutCount; i++)
 | ||
| 					{
 | ||
| 						if (mco.LayoutList[i].RnoLevel == sco.LayoutList[i].RnoLevel) subFmt.ProcData.CheckOffData.LayoutList[i].RnoLevel = "null";
 | ||
| 						if (mco.LayoutList[i].Column == sco.LayoutList[i].Column) subFmt.ProcData.CheckOffData.LayoutList[i].Column = NullInt;
 | ||
| 					}
 | ||
| 				}
 | ||
| 			}
 | ||
| 
 | ||
| 			if (msctlay.EndMessagePos == ssctlay.EndMessagePos) subFmt.SectData.StepSectionData.StpSectLayData.EndMessagePos = NullInt;
 | ||
| 
 | ||
| 			StepSection msctstp = mainFmt.SectData.StepSectionData;
 | ||
| 			StepSection ssctstp = subFmt.SectData.StepSectionData;
 | ||
| 			if (msctstp.IndentToken == ssctstp.IndentToken) subFmt.SectData.StepSectionData.IndentToken = NullByte;
 | ||
| 			if (msctpr.ImmStepHdrCol == ssctpr.ImmStepHdrCol) subFmt.SectData.StepSectionData.StpSectPrtData.ImmStepHdrCol = NullInt;
 | ||
| 			subFmt.SectData.StepSectionData.StpSectPrtData.ImmStepHdrStyle = FixInheritedFont(ssctpr.ImmStepHdrStyle, msctpr.ImmStepHdrStyle);
 | ||
| 			if (msctstp.WolfCreekBackgroundFormat != null && msctstp.WolfCreekBackgroundFormat == ssctstp.WolfCreekBackgroundFormat) subFmt.SectData.StepSectionData.WolfCreekBackgroundFormat = "null";
 | ||
| 			if (msctstp.WolfcreekCKLFormat != null && msctstp.WolfcreekCKLFormat == ssctstp.WolfcreekCKLFormat) subFmt.SectData.StepSectionData.WolfcreekCKLFormat = "null";
 | ||
| 			if (msctstp.WolfcreekCKLBackgndFormat != null && msctstp.WolfcreekCKLBackgndFormat == ssctstp.WolfcreekCKLBackgndFormat) subFmt.SectData.StepSectionData.WolfcreekCKLBackgndFormat = "null";
 | ||
| 			if (msctstp.FortranFormatNumbers != null && msctstp.FortranFormatNumbers == ssctstp.FortranFormatNumbers) subFmt.SectData.StepSectionData.FortranFormatNumbers = "null";
 | ||
| 			if (msctstp.UseTopContinueMessageAtEnd != null && msctstp.UseTopContinueMessageAtEnd == ssctstp.UseTopContinueMessageAtEnd) subFmt.SectData.StepSectionData.UseTopContinueMessageAtEnd = "null";
 | ||
| 			if (msctstp.FloatingContinueMessage != null && msctstp.FloatingContinueMessage == ssctstp.FloatingContinueMessage) subFmt.SectData.StepSectionData.FloatingContinueMessage = "null";
 | ||
| 			if (msctstp.WrapSameAsEdit != null && msctstp.WrapSameAsEdit == ssctstp.WrapSameAsEdit) subFmt.SectData.StepSectionData.WrapSameAsEdit = "null";
 | ||
| 			if (msctstp.ContinueSectionHeader != null && msctstp.ContinueSectionHeader == ssctstp.ContinueSectionHeader) subFmt.SectData.StepSectionData.ContinueSectionHeader = "null";
 | ||
| 			if (msctstp.CompressHPSub != null && msctstp.CompressHPSub == ssctstp.CompressHPSub) subFmt.SectData.StepSectionData.CompressHPSub = "null";
 | ||
| 			if (msctstp.CompressHPSuper != null && msctstp.CompressHPSuper == ssctstp.CompressHPSuper) subFmt.SectData.StepSectionData.CompressHPSuper = "null";
 | ||
| 			//if (msctstp.UndSpecialStepsFoldout != null && msctstp.UndSpecialStepsFoldout == ssctstp.UndSpecialStepsFoldout) subFmt.SectData.StepSectionData.UndSpecialStepsFoldout = "null";
 | ||
| 			if (msctstp.UnderlineAllMetaTitles != null && msctstp.UnderlineAllMetaTitles == ssctstp.UnderlineAllMetaTitles) subFmt.SectData.StepSectionData.UnderlineAllMetaTitles = "null";
 | ||
| 			if (msctstp.BoldOnlySectionZero != null && msctstp.BoldOnlySectionZero == ssctstp.BoldOnlySectionZero) subFmt.SectData.StepSectionData.BoldOnlySectionZero = "null";
 | ||
| 			if (msctstp.ImperfectStructure != null && msctstp.ImperfectStructure == ssctstp.ImperfectStructure) subFmt.SectData.StepSectionData.ImperfectStructure = "null";
 | ||
| 			if (msctstp.ImperfectSubstep != null && msctstp.ImperfectSubstep == ssctstp.ImperfectSubstep) subFmt.SectData.StepSectionData.ImperfectSubstep = "null";
 | ||
| 			if (msctstp.ImperfectStructurePlus4 != null && msctstp.ImperfectStructurePlus4 == ssctstp.ImperfectStructurePlus4) subFmt.SectData.StepSectionData.ImperfectStructurePlus4 = "null";
 | ||
| 			if (msctstp.CountAllSubLevels != null && msctstp.CountAllSubLevels == ssctstp.CountAllSubLevels) subFmt.SectData.StepSectionData.CountAllSubLevels = "null";
 | ||
| 			if (msctstp.UseMultiLineSectionTitle != null && msctstp.UseMultiLineSectionTitle == ssctstp.UseMultiLineSectionTitle) subFmt.SectData.StepSectionData.UseMultiLineSectionTitle = "null";
 | ||
| 
 | ||
| 			if (msctlay.RNOWidthAlt == ssctlay.RNOWidthAlt) subFmt.SectData.StepSectionData.StpSectLayData.RNOWidthAlt = null;
 | ||
| 			if (msctlay.HLSWidthOVRD == ssctlay.HLSWidthOVRD) subFmt.SectData.StepSectionData.StpSectLayData.HLSWidthOVRD = NullInt;
 | ||
| 			if (msctpr.SecColHdrforActPMode == ssctpr.SecColHdrforActPMode) subFmt.SectData.StepSectionData.StpSectPrtData.SecColHdrforActPMode = NullInt;
 | ||
| 
 | ||
| 			SectionNum msctn = mainFmt.SectData.SectionNumber;
 | ||
| 			SectionNum ssctn = subFmt.SectData.SectionNumber;
 | ||
| 			SectionHead mscth = mainFmt.SectData.SectionHeader;
 | ||
| 			SectionHead sscth = subFmt.SectData.SectionHeader;
 | ||
| 			subFmt.SectData.SectionNumber.Font = FixInheritedFont(ssctn.Font, msctn.Font);  // Phase 7
 | ||
| 			if (msctn.Pos == ssctn.Pos) subFmt.SectData.SectionNumber.Pos = NullInt;
 | ||
| 			if (msctn.Just == ssctn.Just) subFmt.SectData.SectionNumber.Just = null;
 | ||
| 			subFmt.SectData.SectionHeader.Font = FixInheritedFont(sscth.Font, mscth.Font);  // Phase 8
 | ||
| 			if (mscth.Pos == sscth.Pos) subFmt.SectData.SectionHeader.Pos = NullInt;
 | ||
| 			if (mscth.Just == sscth.Just) subFmt.SectData.SectionHeader.Just = null;
 | ||
| 
 | ||
| 			if (mainFmt.SectData.SectionTitleLength == subFmt.SectData.SectionTitleLength) subFmt.SectData.SectionTitleLength = NullInt;
 | ||
| 			if (mainFmt.SectData.SectForeColor == subFmt.SectData.SectForeColor) subFmt.SectData.SectForeColor = null;
 | ||
| 			if (mainFmt.SectData.SectBackColor == subFmt.SectData.SectBackColor) subFmt.SectData.SectBackColor = null;
 | ||
| 			if (mainFmt.SectData.MetaSectEndMessage != null && mainFmt.SectData.MetaSectEndMessage == subFmt.SectData.MetaSectEndMessage) subFmt.SectData.MetaSectEndMessage = "null";
 | ||
| 			if (mainFmt.SectData.ReadOnlyTypeInContMsg != null && mainFmt.SectData.ReadOnlyTypeInContMsg == subFmt.SectData.ReadOnlyTypeInContMsg) subFmt.SectData.ReadOnlyTypeInContMsg = "null";
 | ||
| 			if (mainFmt.SectData.ReplaceWordsInROs != null && mainFmt.SectData.ReplaceWordsInROs == subFmt.SectData.ReplaceWordsInROs) subFmt.SectData.ReplaceWordsInROs = "null";
 | ||
| 			if (mainFmt.SectData.UseMetaSections != null && mainFmt.SectData.UseMetaSections == subFmt.SectData.UseMetaSections) subFmt.SectData.UseMetaSections = "null";
 | ||
| 			if (mainFmt.SectData.NonEditableSteps != null && mainFmt.SectData.NonEditableSteps == subFmt.SectData.NonEditableSteps) subFmt.SectData.NonEditableSteps = "null";
 | ||
| 			if (mainFmt.SectData.SearchAllReplaceWords != null && mainFmt.SectData.SearchAllReplaceWords == subFmt.SectData.SearchAllReplaceWords) subFmt.SectData.SearchAllReplaceWords = "null";
 | ||
| 			if (mainFmt.SectData.SecTitleContinue != null && mainFmt.SectData.SecTitleContinue == subFmt.SectData.SecTitleContinue) subFmt.SectData.SecTitleContinue = "null";
 | ||
| 			if (mainFmt.SectData.ConvertCaretToDelta != null && mainFmt.SectData.ConvertCaretToDelta == subFmt.SectData.ConvertCaretToDelta) subFmt.SectData.ConvertCaretToDelta = "null";
 | ||
| 
 | ||
| 			if (msctlay.SubPaginationWght == ssctlay.SubPaginationWght) subFmt.SectData.StepSectionData.StpSectLayData.SubPaginationWght = NullInt;
 | ||
| 			if (msctlay.TextTitleAdjustment == ssctlay.TextTitleAdjustment) subFmt.SectData.StepSectionData.StpSectLayData.TextTitleAdjustment = NullInt;
 | ||
| 
 | ||
| 			AccSection maccsec = mainFmt.SectData.AccSectionData;
 | ||
| 			AccSection saccsec = subFmt.SectData.AccSectionData;
 | ||
| 
 | ||
| 			if (maccsec.TableOfContentsData.TofCSecNumPos == saccsec.TableOfContentsData.TofCSecNumPos) subFmt.SectData.AccSectionData.TableOfContentsData.TofCSecNumPos = NullInt;
 | ||
| 			if (maccsec.TableOfContentsData.TofCSecTitlePos == saccsec.TableOfContentsData.TofCSecTitlePos) subFmt.SectData.AccSectionData.TableOfContentsData.TofCSecTitlePos = NullInt;
 | ||
| 			if (maccsec.TableOfContentsData.TofCSecTitleLen == saccsec.TableOfContentsData.TofCSecTitleLen) subFmt.SectData.AccSectionData.TableOfContentsData.TofCSecTitleLen = NullByte;
 | ||
| 			if (maccsec.TableOfContentsData.TofCPageNumPos == saccsec.TableOfContentsData.TofCPageNumPos) subFmt.SectData.AccSectionData.TableOfContentsData.TofCPageNumPos = NullInt;
 | ||
| 			if (maccsec.TableOfContentsData.TofCSpaceChar == saccsec.TableOfContentsData.TofCSpaceChar) subFmt.SectData.AccSectionData.TableOfContentsData.TofCSpaceChar = NullByte;
 | ||
| 			if (maccsec.TableOfContentsData.TofCLineSpacing == saccsec.TableOfContentsData.TofCLineSpacing) subFmt.SectData.AccSectionData.TableOfContentsData.TofCLineSpacing = NullByte;
 | ||
| 			subFmt.SectData.AccSectionData.TableOfContentsData.Font = FixInheritedFont(saccsec.TableOfContentsData.Font, maccsec.TableOfContentsData.Font); // Phase 9
 | ||
| 			subFmt.SectData.StepSectionData.StpSectLayData.VertStyle = FixInheritedFont(ssctlay.VertStyle, msctlay.VertStyle);// Phase 13
 | ||
| 
 | ||
| 			for (int i = 0; i < 10; i++)
 | ||
| 			{
 | ||
| 				if (mainFmt.SectData.MetaSectionData[i].SecNumPositionAdj == subFmt.SectData.MetaSectionData[i].SecNumPositionAdj) subFmt.SectData.MetaSectionData[i].SecNumPositionAdj = NullInt;
 | ||
| 				if (mainFmt.SectData.MetaSectionData[i].SecTitlePositionAdj == subFmt.SectData.MetaSectionData[i].SecTitlePositionAdj) subFmt.SectData.MetaSectionData[i].SecTitlePositionAdj = NullInt;
 | ||
| 				if (mainFmt.SectData.MetaSectionData[i].ColSByLevel == subFmt.SectData.MetaSectionData[i].ColSByLevel) subFmt.SectData.MetaSectionData[i].ColSByLevel = NullInt;
 | ||
| 				if (mainFmt.SectData.MetaSectionData[i].TofCPositionAdj == subFmt.SectData.MetaSectionData[i].TofCPositionAdj) subFmt.SectData.MetaSectionData[i].TofCPositionAdj = NullInt;
 | ||
| 				if (mainFmt.SectData.MetaSectionData[i].WidSAdjByLevel == subFmt.SectData.MetaSectionData[i].WidSAdjByLevel) subFmt.SectData.MetaSectionData[i].WidSAdjByLevel = NullInt;
 | ||
| 			}
 | ||
| 
 | ||
| 			if (msctstp.NumberOfHighLevelSteps == ssctstp.NumberOfHighLevelSteps) subFmt.SectData.StepSectionData.NumberOfHighLevelSteps = NullInt;
 | ||
| 
 | ||
| 			for (int i = 0; i < MAXBOXES + 1; i++)
 | ||
| 			{
 | ||
| 				if (mainFmt.BoxData[i].TxtRowAdj == subFmt.BoxData[i].TxtRowAdj) subFmt.BoxData[i].TxtRowAdj = (sbyte)NullByte;
 | ||
| 				if (mainFmt.BoxData[i].BXURC == subFmt.BoxData[i].BXURC) subFmt.BoxData[i].BXURC = null;
 | ||
| 				if (mainFmt.BoxData[i].BXHorz == subFmt.BoxData[i].BXHorz) subFmt.BoxData[i].BXHorz = null;
 | ||
| 				if (mainFmt.BoxData[i].BXULC == subFmt.BoxData[i].BXULC) subFmt.BoxData[i].BXULC = NullString;
 | ||
| 				if (mainFmt.BoxData[i].BXVert == subFmt.BoxData[i].BXVert) subFmt.BoxData[i].BXVert = null;
 | ||
| 				if (mainFmt.BoxData[i].BXMLS == subFmt.BoxData[i].BXMLS) subFmt.BoxData[i].BXMLS = null;
 | ||
| 				if (mainFmt.BoxData[i].BXMRS == subFmt.BoxData[i].BXMRS) subFmt.BoxData[i].BXMRS = null;
 | ||
| 				if (mainFmt.BoxData[i].BXLRC == subFmt.BoxData[i].BXLRC) subFmt.BoxData[i].BXLRC = null;
 | ||
| 				if (mainFmt.BoxData[i].BXLLC == subFmt.BoxData[i].BXLLC) subFmt.BoxData[i].BXLLC = null;
 | ||
| 				if (mainFmt.BoxData[i].BXMID == subFmt.BoxData[i].BXMID) subFmt.BoxData[i].BXMID = null;
 | ||
| 				if (mainFmt.BoxData[i].BXLHorz == subFmt.BoxData[i].BXLHorz) subFmt.BoxData[i].BXLHorz = null;
 | ||
| 				if (mainFmt.BoxData[i].BXUMID == subFmt.BoxData[i].BXUMID) subFmt.BoxData[i].BXUMID = null;
 | ||
| 				if (mainFmt.BoxData[i].BXLMID == subFmt.BoxData[i].BXLMID) subFmt.BoxData[i].BXLMID = null;
 | ||
| 
 | ||
| 			}
 | ||
| 
 | ||
| 			if (msctstp.NumberOfSubStepTypes == ssctstp.NumberOfSubStepTypes) subFmt.SectData.StepSectionData.NumberOfSubStepTypes = NullInt;
 | ||
| 
 | ||
| 			if (mainFmt.SectData.AccSectionData.AutoContActSumSection == subFmt.SectData.AccSectionData.AutoContActSumSection) subFmt.SectData.AccSectionData.AutoContActSumSection = NullInt;
 | ||
| 
 | ||
| 			if (msctstp.IdentB == ssctstp.IdentB) subFmt.SectData.StepSectionData.IdentB = null;
 | ||
| 
 | ||
| 			//for (int i = 0; i < MAXSEQ; i++)
 | ||
| 			//   if (msctstp.SeqTab[i] == ssctstp.SeqTab[i]) subFmt.SectData.StepSectionData.SeqTab[i]=null;
 | ||
| 
 | ||
| 			// don't clear replace words. these would have to match exactly, because order matters when processing replace words & integrating the two lists when they are to be
 | ||
| 			// used is too complicated.
 | ||
| 			//for (int i = 0; i < MAXREPLACE; i++)
 | ||
| 			//{
 | ||
| 			//    if (mainFmt.SectData.ReplaceStrData[i].ReplaceWord == subFmt.SectData.ReplaceStrData[i].ReplaceWord) subFmt.SectData.ReplaceStrData[i].ReplaceWord = null;
 | ||
| 			//    if (mainFmt.SectData.ReplaceStrData[i].ReplaceWith == subFmt.SectData.ReplaceStrData[i].ReplaceWith) subFmt.SectData.ReplaceStrData[i].ReplaceWith = null;
 | ||
| 			//    // clear flags only if both replaceword & replacewith ended up getting cleared.
 | ||
| 			//    if ((subFmt.SectData.ReplaceStrData[i].ReplaceWord == null) && (subFmt.SectData.ReplaceStrData[i].ReplaceWith == null)) subFmt.SectData.ReplaceStrData[i].Flag = null;
 | ||
| 			//}
 | ||
| 
 | ||
| 			for (int i = 0; i < 10; i++)
 | ||
| 			{
 | ||
| 				if (mainFmt.PrintData.ProcDescrList[i].MatchProcNumber == subFmt.PrintData.ProcDescrList[i].MatchProcNumber) subFmt.PrintData.ProcDescrList[i].MatchProcNumber = null;
 | ||
| 				if (mainFmt.PrintData.ProcDescrList[i].ProcDescr1 == subFmt.PrintData.ProcDescrList[i].ProcDescr1) subFmt.PrintData.ProcDescrList[i].ProcDescr1 = null;
 | ||
| 				if (mainFmt.PrintData.ProcDescrList[i].ProcDescr2 == subFmt.PrintData.ProcDescrList[i].ProcDescr2) subFmt.PrintData.ProcDescrList[i].ProcDescr2 = null;
 | ||
| 			}
 | ||
| 			for (int i = 0; i < 5; i++)
 | ||
| 				if (mainFmt.PrintData.VersionIdText[i] == subFmt.PrintData.VersionIdText[i]) subFmt.PrintData.VersionIdText[i] = null;
 | ||
| 
 | ||
| 			if (mainFmt.TransData.DelimiterForTransitionTitle == subFmt.TransData.DelimiterForTransitionTitle) subFmt.TransData.DelimiterForTransitionTitle = null;
 | ||
| 			if (mainFmt.TransData.StepSubstepDelimeter == subFmt.TransData.StepSubstepDelimeter) subFmt.TransData.StepSubstepDelimeter = null;
 | ||
| 			if (mainFmt.TransData.ThroughString == subFmt.TransData.ThroughString) subFmt.TransData.ThroughString = null;
 | ||
| 			if (mainFmt.TransData.SpecifiedSubstepsOnly != null && mainFmt.TransData.SpecifiedSubstepsOnly == subFmt.TransData.SpecifiedSubstepsOnly) subFmt.TransData.SpecifiedSubstepsOnly = "null";
 | ||
| 			if (mainFmt.TransData.CapsTransitions != null && mainFmt.TransData.CapsTransitions == subFmt.TransData.CapsTransitions) subFmt.TransData.CapsTransitions = "null";
 | ||
| 			if (mainFmt.TransData.CapTranStep != null && mainFmt.TransData.CapTranStep == subFmt.TransData.CapTranStep) subFmt.TransData.CapTranStep = "null";
 | ||
| 			if (mainFmt.TransData.TStepNoFlag != null && mainFmt.TransData.TStepNoFlag == subFmt.TransData.TStepNoFlag) subFmt.TransData.TStepNoFlag = "null";
 | ||
| 			if (mainFmt.TransData.LowerCaseTranNumber != null && mainFmt.TransData.LowerCaseTranNumber == subFmt.TransData.LowerCaseTranNumber) subFmt.TransData.LowerCaseTranNumber = "null";
 | ||
| 			if (mainFmt.TransData.UpcaseTranAnd != null && mainFmt.TransData.UpcaseTranAnd == subFmt.TransData.UpcaseTranAnd) subFmt.TransData.UpcaseTranAnd = "null";
 | ||
| 			if (mainFmt.TransData.SuppressAndInTran != null && mainFmt.TransData.SuppressAndInTran == subFmt.TransData.SuppressAndInTran) subFmt.TransData.SuppressAndInTran = "null";
 | ||
| 			if (mainFmt.TransData.Cap1stCharTrans != null && mainFmt.TransData.Cap1stCharTrans == subFmt.TransData.Cap1stCharTrans) subFmt.TransData.Cap1stCharTrans = "null";
 | ||
| 			if (mainFmt.TransData.UseTransitionModifier != null && mainFmt.TransData.UseTransitionModifier == subFmt.TransData.UseTransitionModifier) subFmt.TransData.UseTransitionModifier = "null";
 | ||
| 			if (mainFmt.TransData.UseSecTitles != null && mainFmt.TransData.UseSecTitles == subFmt.TransData.UseSecTitles) subFmt.TransData.UseSecTitles = "null";
 | ||
| 			if (mainFmt.TransData.HardSpTranProcNumb != null && mainFmt.TransData.HardSpTranProcNumb == subFmt.TransData.HardSpTranProcNumb) subFmt.TransData.HardSpTranProcNumb = "null";
 | ||
| 			if (mainFmt.TransData.XchngTranSpForHard != null && mainFmt.TransData.XchngTranSpForHard == subFmt.TransData.XchngTranSpForHard) subFmt.TransData.XchngTranSpForHard = "null";
 | ||
| 			if (mainFmt.TransData.AbsoluteTransitionUpdate != null && mainFmt.TransData.AbsoluteTransitionUpdate == subFmt.TransData.AbsoluteTransitionUpdate) subFmt.TransData.AbsoluteTransitionUpdate = "null";
 | ||
| 			if (mainFmt.TransData.LowerCaseStepInTran != null && mainFmt.TransData.LowerCaseStepInTran == subFmt.TransData.LowerCaseStepInTran) subFmt.TransData.LowerCaseStepInTran = "null";
 | ||
| 			if (mainFmt.TransData.DoSectionTransitions != null && mainFmt.TransData.DoSectionTransitions == subFmt.TransData.DoSectionTransitions) subFmt.TransData.DoSectionTransitions = "null";
 | ||
| 
 | ||
| 			if (mainFmt.ROData.AllUnits != null && mainFmt.ROData.AllUnits == subFmt.ROData.AllUnits) subFmt.ROData.AllUnits = "null";
 | ||
| 			if (mainFmt.ROData.UpRoAftrDash != null && mainFmt.ROData.UpRoAftrDash == subFmt.ROData.UpRoAftrDash) subFmt.ROData.UpRoAftrDash = "null";
 | ||
| 			if (mainFmt.ROData.UpcaseAllRoUnits != null && mainFmt.ROData.UpcaseAllRoUnits == subFmt.ROData.UpcaseAllRoUnits) subFmt.ROData.UpcaseAllRoUnits = "null";
 | ||
| 			if (mainFmt.ROData.CapHighRo != null && mainFmt.ROData.CapHighRo == subFmt.ROData.CapHighRo) subFmt.ROData.CapHighRo = "null";
 | ||
| 			if (mainFmt.ROData.CapRoIfLastLower != null && mainFmt.ROData.CapRoIfLastLower == subFmt.ROData.CapRoIfLastLower) subFmt.ROData.CapRoIfLastLower = "null";
 | ||
| 			if (mainFmt.ROData.UpRoIfPrevUpper != null && mainFmt.ROData.UpRoIfPrevUpper == subFmt.ROData.UpRoIfPrevUpper) subFmt.ROData.UpRoIfPrevUpper = "null";
 | ||
| 			if (mainFmt.ROData.UnderlineRo != null && mainFmt.ROData.UnderlineRo == subFmt.ROData.UnderlineRo) subFmt.ROData.UnderlineRo = "null";
 | ||
| 			if (mainFmt.ROData.CapFirstLetterInHighRO != null && mainFmt.ROData.CapFirstLetterInHighRO == subFmt.ROData.CapFirstLetterInHighRO) subFmt.ROData.CapFirstLetterInHighRO = "null";
 | ||
| 
 | ||
| 			if (mainFmt.ProcData.ProcedureSuffixFlags == subFmt.ProcData.ProcedureSuffixFlags) subFmt.ProcData.ProcedureSuffixFlags = null;
 | ||
| 			for (int i = 0; i < 10; i++)
 | ||
| 				if (mainFmt.ProcData.ProcedureSuffix[i] == subFmt.ProcData.ProcedureSuffix[i]) subFmt.ProcData.ProcedureSuffix[i] = null;
 | ||
| 
 | ||
| 			if (mainFmt.PrintData.TopOfPageThing == subFmt.PrintData.TopOfPageThing) subFmt.PrintData.TopOfPageThing = null;
 | ||
| 
 | ||
| 			//for (int i=0; i<10; i++)
 | ||
| 			//    if (msctstp.TextType[i] == ssctstp.TextType[i]) subFmt.SectData.StepSectionData.TextType[i]=null;
 | ||
| 
 | ||
| 			//for (int i=0; i<MAXSEQ; i++)
 | ||
| 			//{
 | ||
| 			//    if (msctstp.PreSeqTabEdit[i] == ssctstp.PreSeqTabEdit[i]) subFmt.SectData.StepSectionData.PreSeqTabEdit[i]=null;
 | ||
| 			//    if (msctstp.PreSeqTabPrint[i] == ssctstp.PreSeqTabPrint[i]) subFmt.SectData.StepSectionData.PreSeqTabPrint[i]=null;
 | ||
| 			//    //if (msctstp.PostSeqTabEdit[i] == ssctstp.PostSeqTabEdit[i]) subFmt.SectData.StepSectionData.PostSeqTabEdit[i]=null;
 | ||
| 			//    //if (msctstp.PostSeqTabPrint[i] == ssctstp.PostSeqTabPrint[i]) subFmt.SectData.StepSectionData.PostSeqTabPrint[i]=null;
 | ||
| 			//}
 | ||
| 
 | ||
| 			if (msctpr.RNOSepString == ssctpr.RNOSepString) subFmt.SectData.StepSectionData.StpSectPrtData.RNOSepString = null;
 | ||
| 
 | ||
| 			for (int i = 0; i < 10; i++)
 | ||
| 				if (msctstp.UnderlineTerminate[i] == ssctstp.UnderlineTerminate[i]) subFmt.SectData.StepSectionData.UnderlineTerminate[i] = null;
 | ||
| 
 | ||
| 			for (int i = 0; i < 2; i++)
 | ||
| 				if (msctpr.ImmStepHdr[i] == ssctpr.ImmStepHdr[i]) subFmt.SectData.StepSectionData.StpSectPrtData.ImmStepHdr[i] = null;
 | ||
| 
 | ||
| 			if (mcb.SpecialChangeBar == scb.SpecialChangeBar) subFmt.ProcData.ChangeBarData.SpecialChangeBar = null;
 | ||
| 
 | ||
| 			for (int i = 0; i < 4; i++)
 | ||
| 			{
 | ||
| 				if (msctstp.ObserveNCString1 != null && ssctstp.ObserveNCString1 != null && msctstp.ObserveNCString1[i] == ssctstp.ObserveNCString1[i]) subFmt.SectData.StepSectionData.ObserveNCString1 = null;
 | ||
| 				if (msctstp.ObserveNCString2 != null && ssctstp.ObserveNCString1 != null && msctstp.ObserveNCString2[i] == ssctstp.ObserveNCString2[i]) subFmt.SectData.StepSectionData.ObserveNCString2 = null;
 | ||
| 			}
 | ||
| 
 | ||
| 			for (int i = 0; i < MAXCHECKOFFS; i++)
 | ||
| 			{
 | ||
| 				if (mco.CheckOffList[i].UIMark == sco.CheckOffList[i].UIMark) subFmt.ProcData.CheckOffData.CheckOffList[i].UIMark = NullByte;
 | ||
| 				if (mco.CheckOffList[i].MenuItem == sco.CheckOffList[i].MenuItem) subFmt.ProcData.CheckOffData.CheckOffList[i].MenuItem = null;
 | ||
| 				if (mco.CheckOffList[i].ExcludeInSectMenu == sco.CheckOffList[i].ExcludeInSectMenu) subFmt.ProcData.CheckOffData.CheckOffList[i].ExcludeInSectMenu = null;
 | ||
| 				if (mco.CheckOffList[i].Macro == sco.CheckOffList[i].Macro) subFmt.ProcData.CheckOffData.CheckOffList[i].Macro = null;
 | ||
| 				if (mco.CheckOffList[i].CheckOffXtraLines == sco.CheckOffList[i].CheckOffXtraLines) subFmt.ProcData.CheckOffData.CheckOffList[i].CheckOffXtraLines = NullInt;
 | ||
| 				if (mco.CheckOffList[i].CheckOffWidAdjust == sco.CheckOffList[i].CheckOffWidAdjust) subFmt.ProcData.CheckOffData.CheckOffList[i].CheckOffWidAdjust = NullInt;
 | ||
| 			}
 | ||
| 
 | ||
| 			for (int i = 0; i < MAXCHKHEADINGS; i++)
 | ||
| 				if (mco.CheckOffHeaderList[i].CheckOffHeading == sco.CheckOffHeaderList[i].CheckOffHeading) subFmt.ProcData.CheckOffData.CheckOffHeaderList[i].CheckOffHeading = 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";
 | ||
| 			if (msctpr.UseXtraRevNumber != null && msctpr.UseXtraRevNumber == ssctpr.UseXtraRevNumber) subFmt.SectData.StepSectionData.StpSectPrtData.UseXtraRevNumber = "null";
 | ||
| 			if (msctpr.SpecialLandscapeMode != null && msctpr.SpecialLandscapeMode == ssctpr.SpecialLandscapeMode) subFmt.SectData.StepSectionData.StpSectPrtData.SpecialLandscapeMode = "null";
 | ||
| 			for (int i = 0; i < MAXSEQ; i++)
 | ||
| 			{
 | ||
| 				if (msctpr.LeftJustifyList[i].Size == ssctpr.LeftJustifyList[i].Size) subFmt.SectData.StepSectionData.StpSectPrtData.LeftJustifyList[i].Size = NullInt;
 | ||
| 			}
 | ||
| 			if (msctlay.LowerLimitDivisor == ssctlay.LowerLimitDivisor) subFmt.SectData.StepSectionData.StpSectLayData.LowerLimitDivisor = null;
 | ||
| 
 | ||
| 			for (int i = 0; i < MAXTRANS; i++)
 | ||
| 			{
 | ||
| 				if (mainFmt.TransData.TransTypeData[i].TransFormat == subFmt.TransData.TransTypeData[i].TransFormat) subFmt.TransData.TransTypeData[i].TransFormat = null;
 | ||
| 				if (mainFmt.TransData.TransTypeData[i].TransMenu == subFmt.TransData.TransTypeData[i].TransMenu) subFmt.TransData.TransTypeData[i].TransMenu = null;
 | ||
| 				if (mainFmt.TransData.TransTypeData[i].TransUI == subFmt.TransData.TransTypeData[i].TransUI) subFmt.TransData.TransTypeData[i].TransUI = null;
 | ||
| 			}
 | ||
| 
 | ||
| 			if (msctlay.NonLinkedStepNumber == ssctlay.NonLinkedStepNumber) subFmt.SectData.StepSectionData.StpSectLayData.NonLinkedStepNumber = null;
 | ||
| 			if (msctlay.NonLinkedCautNoteNumber == ssctlay.NonLinkedCautNoteNumber) subFmt.SectData.StepSectionData.StpSectLayData.NonLinkedCautNoteNumber = null;
 | ||
| 			if (msctlay.NonLinkedRNONumber == ssctlay.NonLinkedRNONumber) subFmt.SectData.StepSectionData.StpSectLayData.NonLinkedRNONumber = null;
 | ||
| 			if (msctlay.Dev_Format != null && msctlay.Dev_Format == ssctlay.Dev_Format) subFmt.SectData.StepSectionData.StpSectLayData.Dev_Format = "null";
 | ||
| 			if (msctlay.EnhancedShortFormDev != null && msctlay.EnhancedShortFormDev == ssctlay.EnhancedShortFormDev) subFmt.SectData.StepSectionData.StpSectLayData.EnhancedShortFormDev = "null";
 | ||
| 			if (msctlay.SpecialPageBreakFlag != null && msctlay.SpecialPageBreakFlag == ssctlay.SpecialPageBreakFlag) subFmt.SectData.StepSectionData.StpSectLayData.SpecialPageBreakFlag = "null";
 | ||
| 			if (msctlay.PaginateOnFirstSubstep != null && msctlay.PaginateOnFirstSubstep == ssctlay.PaginateOnFirstSubstep) subFmt.SectData.StepSectionData.StpSectLayData.PaginateOnFirstSubstep = "null";
 | ||
| 			if (msctlay.PaginateOnFirstSubstep2X != null && msctlay.PaginateOnFirstSubstep2X == ssctlay.PaginateOnFirstSubstep2X) subFmt.SectData.StepSectionData.StpSectLayData.PaginateOnFirstSubstep2X = "null";
 | ||
| 			if (msctlay.UseHalfLines != null && msctlay.UseHalfLines == ssctlay.UseHalfLines) subFmt.SectData.StepSectionData.StpSectLayData.UseHalfLines = "null";
 | ||
| 			if (msctlay.TryToFillHalfOfPage != null && msctlay.TryToFillHalfOfPage == ssctlay.TryToFillHalfOfPage) subFmt.SectData.StepSectionData.StpSectLayData.TryToFillHalfOfPage = "null";
 | ||
| 			if (msctlay.CompressSteps != null && msctlay.CompressSteps == ssctlay.CompressSteps) subFmt.SectData.StepSectionData.StpSectLayData.CompressSteps = "null";
 | ||
| 			if (msctlay.DoSTExtraAtTop != null && msctlay.DoSTExtraAtTop == ssctlay.DoSTExtraAtTop) subFmt.SectData.StepSectionData.StpSectLayData.DoSTExtraAtTop = "null";
 | ||
| 			if (msctlay.KeepStepsOnPage != null && msctlay.KeepStepsOnPage == ssctlay.KeepStepsOnPage) subFmt.SectData.StepSectionData.StpSectLayData.KeepStepsOnPage = "null";
 | ||
| 			if (msctlay.BreakOnSections != null && msctlay.BreakOnSections == ssctlay.BreakOnSections) subFmt.SectData.StepSectionData.StpSectLayData.BreakOnSections = "null";
 | ||
| 			if (msctlay.ShowSectionTitles != null && msctlay.ShowSectionTitles == ssctlay.ShowSectionTitles) subFmt.SectData.StepSectionData.StpSectLayData.ShowSectionTitles = "null";
 | ||
| 			if (msctlay.EndForSingle != null && msctlay.EndForSingle == ssctlay.EndForSingle) subFmt.SectData.StepSectionData.StpSectLayData.EndForSingle = "null";
 | ||
| 			if (msctlay.PaginateOnFirstSubstep3X != null && msctlay.PaginateOnFirstSubstep3X == ssctlay.PaginateOnFirstSubstep3X) subFmt.SectData.StepSectionData.StpSectLayData.PaginateOnFirstSubstep3X = "null";
 | ||
| 			if (msctlay.PaginateOnLowerStepLevel != null && msctlay.PaginateOnLowerStepLevel == ssctlay.PaginateOnLowerStepLevel) subFmt.SectData.StepSectionData.StpSectLayData.PaginateOnLowerStepLevel = "null";
 | ||
| 			if (msctlay.CustomSpacing != null && msctlay.CustomSpacing == ssctlay.CustomSpacing) subFmt.SectData.StepSectionData.StpSectLayData.CustomSpacing = "null";
 | ||
| 			if (msctlay.SplitStepInPrntStep != null && msctlay.SplitStepInPrntStep == ssctlay.SplitStepInPrntStep) subFmt.SectData.StepSectionData.StpSectLayData.SplitStepInPrntStep = "null";
 | ||
| 			if (msctlay.LineAboveUnderSection != null && msctlay.LineAboveUnderSection == ssctlay.LineAboveUnderSection) subFmt.SectData.StepSectionData.StpSectLayData.LineAboveUnderSection = "null";
 | ||
| 			if (msctlay.PicaIgnoreFiveSixths != null && msctlay.PicaIgnoreFiveSixths == ssctlay.PicaIgnoreFiveSixths) subFmt.SectData.StepSectionData.StpSectLayData.PicaIgnoreFiveSixths = "null";
 | ||
| 			if (msctlay.SpaceForNoSecNumb != null && msctlay.SpaceForNoSecNumb == ssctlay.SpaceForNoSecNumb) subFmt.SectData.StepSectionData.StpSectLayData.SpaceForNoSecNumb = "null";
 | ||
| 			if (msctlay.PageBreakOnFirstBlankLine != null && msctlay.PageBreakOnFirstBlankLine == ssctlay.PageBreakOnFirstBlankLine) subFmt.SectData.StepSectionData.StpSectLayData.PageBreakOnFirstBlankLine = "null";
 | ||
| 			if (msctlay.PutOnPageByItself != null && msctlay.PutOnPageByItself == ssctlay.PutOnPageByItself) subFmt.SectData.StepSectionData.StpSectLayData.PutOnPageByItself = "null";
 | ||
| 			if (msctlay.PaginateAtHighestPaginLevel != null && msctlay.PaginateAtHighestPaginLevel == ssctlay.PaginateAtHighestPaginLevel) subFmt.SectData.StepSectionData.StpSectLayData.PaginateAtHighestPaginLevel = "null";
 | ||
| 			if (msctlay.UseSTExtraRealValue != null && msctlay.UseSTExtraRealValue == ssctlay.UseSTExtraRealValue) subFmt.SectData.StepSectionData.StpSectLayData.UseSTExtraRealValue = "null";
 | ||
| 			if (msctlay.DoSectionSeparatorLine != null && msctlay.DoSectionSeparatorLine == ssctlay.DoSectionSeparatorLine) subFmt.SectData.StepSectionData.StpSectLayData.DoSectionSeparatorLine = "null";
 | ||
| 			if (msctlay.TieTabToLevel != null && msctlay.TieTabToLevel == ssctlay.TieTabToLevel) subFmt.SectData.StepSectionData.StpSectLayData.TieTabToLevel = "null";
 | ||
| 			if (msctlay.HighLevelRNOBeforeAERSubsteps != null && msctlay.HighLevelRNOBeforeAERSubsteps == ssctlay.HighLevelRNOBeforeAERSubsteps) subFmt.SectData.StepSectionData.StpSectLayData.HighLevelRNOBeforeAERSubsteps = "null";
 | ||
| 			if (msctlay.UseStepTypeWidthOverride != null && msctlay.UseStepTypeWidthOverride == ssctlay.UseStepTypeWidthOverride) subFmt.SectData.StepSectionData.StpSectLayData.UseStepTypeWidthOverride = "null";
 | ||
| 			if (msctlay.UseStepTypeWidthOverrideEditPrint != null && msctlay.UseStepTypeWidthOverrideEditPrint == ssctlay.UseStepTypeWidthOverrideEditPrint) subFmt.SectData.StepSectionData.StpSectLayData.UseStepTypeWidthOverrideEditPrint = "null";
 | ||
| 			if (msctlay.PartialStepCompression != null && msctlay.PartialStepCompression == ssctlay.PartialStepCompression) subFmt.SectData.StepSectionData.StpSectLayData.PartialStepCompression = "null";
 | ||
| 			if (msctlay.VirtualDotInHLSTab != null && msctlay.VirtualDotInHLSTab == ssctlay.VirtualDotInHLSTab) subFmt.SectData.StepSectionData.StpSectLayData.VirtualDotInHLSTab = "null";
 | ||
| 			if (msctlay.OverrideEnhancedTabs != null && msctlay.OverrideEnhancedTabs == ssctlay.OverrideEnhancedTabs) subFmt.SectData.StepSectionData.StpSectLayData.OverrideEnhancedTabs = "null";
 | ||
| 			if (msctlay.RNO != null && msctlay.RNO == ssctlay.RNO) subFmt.SectData.StepSectionData.StpSectLayData.RNO = "null";
 | ||
| 			if (msctlay.OnlySingleColumn != null && msctlay.OnlySingleColumn == ssctlay.OnlySingleColumn) subFmt.SectData.StepSectionData.StpSectLayData.OnlySingleColumn = "null";
 | ||
| 
 | ||
| 			if (mainFmt.PrintData.DuplexBGDirectory == subFmt.PrintData.DuplexBGDirectory) subFmt.PrintData.DuplexBGDirectory = null;
 | ||
| 			if (mainFmt.PrintData.DuplexDDDirectory == subFmt.PrintData.DuplexDDDirectory) subFmt.PrintData.DuplexDDDirectory = null;
 | ||
| 
 | ||
| 			#endregion
 | ||
| 			return true;
 | ||
| 		}
 | ||
| 		//private bool _LookForChange = false;
 | ||
| 		private VE_Font FixInheritedFont(VE_Font font, VE_Font inhFont)
 | ||
| 		{
 | ||
| 			if (inhFont != null && font != null)
 | ||
| 			{
 | ||
| 				if (!font.CanInherit()) return font; // Already partially inherited
 | ||
| 				if (inhFont.FontFamily == font.FontFamily) font.FontFamily = null;
 | ||
| 				if (inhFont.FontSize == font.FontSize) font.FontSize = null;
 | ||
| 				if (inhFont.FontStyle == font.FontStyle) font.FontStyle = null;
 | ||
| 				if (inhFont.FontJustify == font.FontJustify) font.FontJustify = null;
 | ||
| 				if (inhFont.FontCheckOff == font.FontCheckOff) font.FontCheckOff = null;
 | ||
| 				if (inhFont.CPI == font.CPI) font.CPI = null;
 | ||
| 				//if (_LookForChange && !font.CanInherit())
 | ||
| 				//  Console.WriteLine("Change Happened");
 | ||
| 				if (font.FontFamily == null && font.FontSize == null && font.FontStyle == null && font.FontJustify == null && font.FontCheckOff == null && font.CPI == null)
 | ||
| 					font = null;
 | ||
| 			}
 | ||
| 			return font;
 | ||
| 		}
 | ||
| 		#endregion
 | ||
| 		#region DoStepInherit
 | ||
| 		delegate string StepPartStr(Step stp);
 | ||
| 		private string StepPartInactive(Step stp) { return stp.Inactive; }
 | ||
| 		private string StepPartColOverride(Step stp) { return stp.ColOverride; }
 | ||
| 		private string StepPartColOverrideEdit(Step stp) { return stp.ColOverrideEdit; }
 | ||
| 		private string StepPartWidthOverride(Step stp) { return stp.WidthOverride; }
 | ||
| 		private string StepPartWidthOverrideEdit(Step stp) { return stp.WidthOverrideEdit; }
 | ||
| 		private string StepPartSep(Step stp) { return stp.Sep; }
 | ||
| 		private string StepPartPrefix(Step stp) { return stp.Prefix; }
 | ||
| 		private string StepPartSuffix(Step stp) { return stp.Suffix; }
 | ||
| 		private string StepPartUnderlineTheseChar(Step stp) { return stp.UnderlineTheseChar; }
 | ||
| 		private string StepPartVertPos(Step stp) { return stp.VertPos; }
 | ||
| 
 | ||
| 		private string StepPartFontFamily(Step stp)
 | ||
| 		{
 | ||
| 			if (stp.Font == null) return null;
 | ||
| 			return stp.Font.FontFamily;
 | ||
| 		}
 | ||
| 		private string StepPartFontSize(Step stp)
 | ||
| 		{
 | ||
| 			if (stp.Font == null) return null;
 | ||
| 			return stp.Font.FontSize;
 | ||
| 		}
 | ||
| 		private string StepPartFontCPI(Step stp)
 | ||
| 		{
 | ||
| 			if (stp.Font == null) return null;
 | ||
| 			return stp.Font.CPI;
 | ||
| 		}
 | ||
| 		private string StepPartFontStyle(Step stp)
 | ||
| 		{
 | ||
| 			if (stp.Font == null) return null;
 | ||
| 			return stp.Font.FontStyle;
 | ||
| 		}
 | ||
| 		private string StepPartFontJustify(Step stp)
 | ||
| 		{
 | ||
| 			if (stp.Font == null) return null;
 | ||
| 			return stp.Font.FontJustify;
 | ||
| 		}
 | ||
| 		private string StepPartFontCheckOff(Step stp)
 | ||
| 		{
 | ||
| 			if (stp.Font == null) return null;
 | ||
| 			return stp.Font.FontCheckOff;
 | ||
| 		}
 | ||
| 		private string StepPartLayoutForeColor(Step stp) { return stp.StepLayoutData.ForeColor; }
 | ||
| 		private string StepPartLayoutBackColor(Step stp) { return stp.StepLayoutData.BackColor; }
 | ||
| 		private string StepPartLayoutSTExtraSpace(Step stp) { return stp.StepLayoutData.STExtraSpace; }
 | ||
| 		private string StepPartLayoutSTBoxindex(Step stp) { return stp.StepLayoutData.STBoxindex; }
 | ||
| 		private string StepPartLayoutEveryNLines(Step stp) { return stp.StepLayoutData.EveryNLines; }
 | ||
| 		private string StepPartLayoutSpaceBefore(Step stp) { return stp.StepLayoutData.SpaceBefore; }
 | ||
| 		private string StepPartLayoutSpaceAfter(Step stp) { return stp.StepLayoutData.SpaceAfter; }
 | ||
| 		private string StepPartLayoutAlwaysUpperCase(Step stp) { return stp.StepLayoutData.AlwaysUpperCase; }
 | ||
| 		private string StepPartLayoutPageBreakAtTypeChange(Step stp) { return stp.StepLayoutData.PageBreakAtTypeChange; }
 | ||
| 		private string StepPartLayoutAlignWithParentTab(Step stp) { return stp.StepLayoutData.AlignWithParentTab; }
 | ||
| 
 | ||
| 		private string StepPartEditForeColor(Step stp) { return stp.StepEditData.ForeColor; }
 | ||
| 		private string StepPartEditBackColor(Step stp) { return stp.StepEditData.BackColor; }
 | ||
| 		private string StepPartEditAcTable(Step stp) { return stp.StepEditData.AcTable; }
 | ||
| 		private string StepPartEditSearchable(Step stp) { return stp.StepEditData.Searchable; }
 | ||
| 
 | ||
| 		private string StepPartPrintForeColor(Step stp) { return stp.StepPrintData.ForeColor; }
 | ||
| 		private string StepPartPrintBackColor(Step stp) { return stp.StepPrintData.BackColor; }
 | ||
| 		private string StepPartPrintPosAdjust(Step stp) { return stp.StepPrintData.PosAdjust; }
 | ||
| 
 | ||
| 		private string StepPartTabIdentEdit(Step stp) { return stp.TabData.IdentEdit; }
 | ||
| 		private string StepPartTabIdent(Step stp) { return stp.TabData.Ident; }
 | ||
| 		private string StepPartTabRNOIdentEdit(Step stp) { return stp.TabData.RNOIdentEdit; }
 | ||
| 		private string StepPartTabRNOIdent(Step stp) { return stp.TabData.RNOIdent; }
 | ||
| 		//private string StepPartTabIdentEditWid(Step stp) { return stp.TabData.IdentEditWid; }
 | ||
| 		//private string StepPartTabIdentWid(Step stp) { return stp.TabData.IdentWid; }
 | ||
| 		//private string StepPartTabRNOIdentEditWid(Step stp) { return stp.TabData.RNOIdentEditWid; }
 | ||
| 		//private string StepPartTabRNOIdentWid(Step stp) { return stp.TabData.RNOIdentWid; }
 | ||
| 		private string StepPartTabJustify(Step stp) { return stp.TabData.Justify; }
 | ||
| 
 | ||
| 		// Do the flags:
 | ||
| 		private string StepPartDoubleSpace(Step stp) { return stp.DoubleSpace; }
 | ||
| 		private string StepPartEnhancedStepNumFromPrev(Step stp) { return stp.EnhancedStepNumFromPrev; }
 | ||
| 		private string StepPartUseSmartTemplate(Step stp) { return stp.UseSmartTemplate; }
 | ||
| 		private string StepPartAlwaysUseExtraLines(Step stp) { return stp.AlwaysUseExtraLines; }
 | ||
| 		private string StepPartSeparateBox(Step stp) { return stp.SeparateBox; }
 | ||
| 		private string StepPartSeparateBoxCautions(Step stp) { return stp.SeparateBoxCautions; }
 | ||
| 		private string StepPartSpaceDouble(Step stp) { return stp.SpaceDouble; }
 | ||
| 		private string StepPartReduceLineAfter(Step stp) { return stp.ReduceLineAfter; }
 | ||
| 		private string StepPartSameLevel(Step stp) { return stp.SameLevel; }
 | ||
| 		private string StepPartBoldHighLevel(Step stp) { return stp.BoldHighLevel; }
 | ||
| 		private string StepPartOneLineBeforeTab(Step stp) { return stp.OneLineBeforeTab; }
 | ||
| 		private string StepPartBoxIt(Step stp) { return stp.BoxIt; }
 | ||
| 		private string StepPartBoxed(Step stp) { return stp.Boxed; }
 | ||
| 		private string StepPartXLines_StepFix(Step stp) { return stp.XLines_StepFix; }
 | ||
| 		private string StepPartRebox(Step stp) { return stp.Rebox; }
 | ||
| 		private string StepPartSpcHdr(Step stp) { return stp.SpcHdr; }
 | ||
| 		private string StepPartContinueOnly(Step stp) { return stp.ContinueOnly; }
 | ||
| 		private string StepPartSepAfterAER(Step stp) { return stp.SepAfterAER; }
 | ||
| 		private string StepPartUseAlternateStepBox(Step stp) { return stp.UseAlternateStepBox; }
 | ||
| 		private string StepPartUnderlineAfterDashSpace(Step stp) { return stp.UnderlineAfterDashSpace; }
 | ||
| 		private string StepPartSpaceIn(Step stp) { return stp.SpaceIn; }
 | ||
| 		private string StepPartPageBreakOnStep(Step stp) { return stp.PageBreakOnStep; }
 | ||
| 		private string StepPartAlignNullTabWSectHead(Step stp) { return stp.AlignNullTabWSectHead; }
 | ||
| 		private string StepPartTextSubFollowsTextStyle(Step stp) { return stp.TextSubFollowsTextStyle; }
 | ||
| 		private string StepPartTreatAsSequential(Step stp) { return stp.TreatAsSequential; }
 | ||
| 		private string StepPartMatchUpRNO(Step stp) { return stp.MatchUpRNO; }
 | ||
| 		private string StepPartInPageList(Step stp) { return stp.InPageList; }
 | ||
| 		private string StepPartCenterOneLineOnly(Step stp) { return stp.CenterOneLineOnly; }
 | ||
| 		private string StepPartSubTableGetsUp1Level(Step stp) { return stp.SubTableGetsUp1Level; }
 | ||
| 		private string StepPartRemember(Step stp) { return stp.Remember; }
 | ||
| 		private string StepPartCenterOneLineAdjust(Step stp) { return stp.CenterOneLineAdjust; }
 | ||
| 		private string StepPartBreak(Step stp) { return stp.Break; }
 | ||
| 		private string StepPartBreakEquipmentList(Step stp) { return stp.BreakEquipmentList; }
 | ||
| 		private string StepPartBreakCautionsNotesOnSubstps(Step stp) { return stp.BreakCautionsNotesOnSubstps; }
 | ||
| 		private string StepPartCenterTextWithinWidth(Step stp) { return stp.CenterTextWithinWidth; }
 | ||
| 		private string StepPartNewlineAfter(Step stp) { return stp.NewlineAfter; }
 | ||
| 		private string StepPartStartLineWithDash(Step stp) { return stp.StartLineWithDash; }
 | ||
| 		private string StepPartBlankLineBeforeSubStep(Step stp) { return stp.BlankLineBeforeSubStep; }
 | ||
| 		private string StepPartAlwaysTab(Step stp) { return stp.AlwaysTab; }
 | ||
| 		private string StepPartMixCautionsAndNotes(Step stp) { return stp.MixCautionsAndNotes; }
 | ||
| 		private string StepPartNumberHighLevel(Step stp) { return stp.NumberHighLevel; }
 | ||
| 		private string StepPartOffsetTab(Step stp) { return stp.OffsetTab; }
 | ||
| 		private string StepPartLeftJustifyBorderless(Step stp) { return stp.LeftJustifyBorderless; }
 | ||
| 		private string StepPartStepNumIfOnlyOne(Step stp) { return stp.StepNumIfOnlyOne; }
 | ||
| 		private string StepPartLJTabs(Step stp) { return stp.LJTabs; }
 | ||
| 		private string StepPartNumberSubs(Step stp) { return stp.NumberSubs; }
 | ||
| 		private string StepPartBullet(Step stp) { return stp.Bullet; }
 | ||
| 		private string StepPartStepNumberForHighLevel(Step stp) { return stp.StepNumberForHighLevel; }
 | ||
| 		private string StepPartSameRowAsParent(Step stp) { return stp.SameRowAsParent; }
 | ||
| 		private string StepPartCheckoffSameAsParent(Step stp) { return stp.CheckoffSameAsParent; }
 | ||
| 		private string StepPartAtLeastTwoDigits(Step stp) { return stp.AtLeastTwoDigits; }
 | ||
| 		private string StepPartUseInAcTable(Step stp) { return stp.UseInAcTable; }
 | ||
| 		private string StepPartNumber(Step stp) { return stp.Number; }
 | ||
| 		private string StepPartThreeBlanksAbove(Step stp) { return stp.ThreeBlanksAbove; }
 | ||
| 		private string StepPartCheckOffs(Step stp) { return stp.CheckOffs; }
 | ||
| 		private string StepPartQuoted(Step stp) { return stp.Quoted; }
 | ||
| 
 | ||
| 		//private string StepPartTabCheckOff(Step stp) { return stp.TabData.CheckOff; }
 | ||
| 		private string StepPartTabFontFamily(Step stp)
 | ||
| 		{
 | ||
| 			if (stp.TabData.Font == null) return null;
 | ||
| 			return stp.TabData.Font.FontFamily;
 | ||
| 		}
 | ||
| 		private string StepPartTabFontSize(Step stp)
 | ||
| 		{
 | ||
| 			if (stp.TabData.Font == null) return null;
 | ||
| 			return stp.TabData.Font.FontSize;
 | ||
| 		}
 | ||
| 		private string StepPartTabFontCPI(Step stp)
 | ||
| 		{
 | ||
| 			if (stp.TabData.Font == null) return null;
 | ||
| 			return stp.TabData.Font.CPI;
 | ||
| 		}
 | ||
| 		private string StepPartTabFontStyle(Step stp)
 | ||
| 		{
 | ||
| 			if (stp.TabData.Font == null) return null;
 | ||
| 			return stp.TabData.Font.FontStyle;
 | ||
| 		}
 | ||
| 		private string StepPartTabFontJustify(Step stp)
 | ||
| 		{
 | ||
| 			if (stp.TabData.Font == null) return null;
 | ||
| 			return stp.TabData.Font.FontJustify;
 | ||
| 		}
 | ||
| 		private string StepPartTabMacroListName(Step stp)
 | ||
| 		{
 | ||
| 			if (stp.TabData.MacroList == null || stp.TabData.MacroList[0].Name == null) return null;
 | ||
| 			return stp.TabData.MacroList[0].Name;
 | ||
| 		}
 | ||
| 		private string StepPartTabMacroListMacro(Step stp)
 | ||
| 		{
 | ||
| 			if (stp.TabData.MacroList == null || stp.TabData.MacroList[0].Macro == null) return null;
 | ||
| 			return stp.TabData.MacroList[0].Macro;
 | ||
| 		}
 | ||
| 		private string StepPartTabMacroListGrouping(Step stp)
 | ||
| 		{
 | ||
| 			if (stp.TabData.MacroList == null || stp.TabData.MacroList[0].Grouping == null) return null;
 | ||
| 			return stp.TabData.MacroList[0].Grouping;
 | ||
| 		}
 | ||
| 		private string StepPartTabMacroListNotInRNO(Step stp)
 | ||
| 		{
 | ||
| 			if (stp.TabData.MacroList == null || stp.TabData.MacroList[0].NotInRNO == null) return null;
 | ||
| 			return stp.TabData.MacroList[0].NotInRNO;
 | ||
| 		}
 | ||
| 		private string StepPartEditTypeInMenu(Step stp) { return stp.StepEditData.TypeMenu.InMenu; }
 | ||
| 		private string StepPartEditTypeRnoInMenu(Step stp) { return stp.StepEditData.TypeMenu.RnoInMenu; }
 | ||
| 		private string StepPartEditTypeMenuItem(Step stp) { return stp.StepEditData.TypeMenu.MenuItem; }
 | ||
| 		private string StepPartEditTypeRnoMenuItem(Step stp) { return stp.StepEditData.TypeMenu.RnoMenuItem; }
 | ||
| 		private string StepPartEditTypeNoChg_Reason(Step stp) { return stp.StepEditData.TypeMenu.NoChgReason; }
 | ||
| 		private string StepPartEditTypeAlternateNameList(Step stp) { return stp.StepEditData.TypeMenu.AlternateNameList; }
 | ||
| 
 | ||
| 		private bool baseDone = false;		// base is first 'GEN.Fmt', but there will be a 2nd, i.e. the genfmt.in
 | ||
| 		// pass in the format's file name so that we can check if we're working with the base format, i.e. 'gen.fmt'.
 | ||
| 		private void DoStepInheritance(ref Step[] stpdata, string fname)
 | ||
| 		{
 | ||
| 			Dictionary<string, Step> dicSteps = BuildStepDic(stpdata);
 | ||
| 			Dictionary<string, Step> dicParents = BuildParentDic(stpdata, dicSteps);
 | ||
| 			int startIndx = fname.ToUpper() == "GEN.FMT" && !baseDone? 1 : 0;
 | ||
| 			baseDone = true;
 | ||
| 			for (int i = startIndx; i < MAXSTEPS; i++)
 | ||
| 			//for (int i = 0; i < MAXSTEPS; i++)
 | ||
| 			{
 | ||
| 				FixInheritance(ref stpdata[i], dicParents);
 | ||
| 				// Since 'Step' is a structure, the StepParentList (dictionary) needs to be updated each time
 | ||
| 				// the stpdata is updated. Each instance of Step, because it is a structure, will be a separate copy
 | ||
| 				// so the dictionary had a distinct copy of the step's format data from what gets passed in by reference.
 | ||
| 				for (int j = 0; j < MAXSTEPS; j++)
 | ||
| 				{
 | ||
| 					if (stpdata[i].Type == stpdata[j].ParentType) StepParentList[0][stpdata[j].Type] = stpdata[i];
 | ||
| 				}
 | ||
| 			}
 | ||
| 		}
 | ||
| 		public const string NullString = "-12345";
 | ||
| 		public const int NullInt = -12345;
 | ||
| 		public const byte NullByte = 123;
 | ||
| 
 | ||
| 		private void FixInheritance(ref Step step, Dictionary<string, Step> dicParents)
 | ||
| 		{
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartInactive), step, dicParents)) step.Inactive = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartColOverride), step, dicParents)) step.ColOverride = NullString;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartColOverrideEdit), step, dicParents)) step.ColOverrideEdit = NullString;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartWidthOverride), step, dicParents)) step.WidthOverride = NullString;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartWidthOverrideEdit), step, dicParents)) step.WidthOverrideEdit = NullString;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartSep), step, dicParents)) step.Sep = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartPrefix), step, dicParents)) step.Prefix = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartSuffix), step, dicParents)) step.Suffix = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartUnderlineTheseChar), step, dicParents)) step.UnderlineTheseChar = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartVertPos), step, dicParents)) step.VertPos = null;
 | ||
| 			// substructures - Font
 | ||
| 			if (step.Font != null && CheckInheritedStr(new StepPartStr(StepPartFontFamily), step, dicParents))
 | ||
| 				step.Font.FontFamily = null;
 | ||
| 			if (step.Font != null && CheckInheritedStr(new StepPartStr(StepPartFontStyle), step, dicParents))
 | ||
| 				step.Font.FontStyle = null;
 | ||
| 			if (step.Font != null && CheckInheritedStr(new StepPartStr(StepPartFontSize), step, dicParents))
 | ||
| 				step.Font.FontSize = null;
 | ||
| 			if (step.Font != null && CheckInheritedStr(new StepPartStr(StepPartFontCPI), step, dicParents))
 | ||
| 				step.Font.CPI = null;
 | ||
| 			if (step.Font != null && CheckInheritedStr(new StepPartStr(StepPartFontJustify), step, dicParents))
 | ||
| 				step.Font.FontJustify = null;
 | ||
| 			if (step.Font != null && CheckInheritedStr(new StepPartStr(StepPartFontCheckOff), step, dicParents))
 | ||
| 				step.Font.FontCheckOff = null;
 | ||
| 			if ((step.Font != null) && (step.Font.FontFamily == null) && (step.Font.FontStyle == null) && (step.Font.FontSize == null) && (step.Font.FontJustify == null) && (step.Font.FontCheckOff == null) && (step.Font.CPI == null))
 | ||
| 				step.Font = null;
 | ||
| 			// substructure - StepLayoutData
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartLayoutForeColor), step, dicParents)) step.StepLayoutData.ForeColor = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartLayoutBackColor), step, dicParents)) step.StepLayoutData.BackColor = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartLayoutSTExtraSpace), step, dicParents))
 | ||
| 			{
 | ||
| 				Console.WriteLine("{0}", fmtName);
 | ||
| 				step.StepLayoutData.STExtraSpace = NullString;
 | ||
| 			}
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartLayoutSTBoxindex), step, dicParents)) step.StepLayoutData.STBoxindex = NullString;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartLayoutEveryNLines), step, dicParents)) step.StepLayoutData.EveryNLines = NullString;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartLayoutSpaceBefore), step, dicParents)) step.StepLayoutData.SpaceBefore = NullString;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartLayoutSpaceAfter), step, dicParents)) step.StepLayoutData.SpaceAfter = NullString;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartLayoutAlwaysUpperCase), step, dicParents)) step.StepLayoutData.AlwaysUpperCase = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartLayoutPageBreakAtTypeChange), step, dicParents)) step.StepLayoutData.PageBreakAtTypeChange = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartLayoutAlignWithParentTab), step, dicParents)) step.StepLayoutData.AlignWithParentTab = null;
 | ||
| 			// substructure - StepEditData
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartEditForeColor), step, dicParents)) step.StepEditData.ForeColor = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartEditBackColor), step, dicParents)) step.StepEditData.BackColor = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartEditAcTable), step, dicParents)) step.StepEditData.AcTable = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartEditSearchable), step, dicParents)) step.StepEditData.Searchable = null;
 | ||
| 			// substructure - TypeMenu
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartEditTypeInMenu), step, dicParents)) step.StepEditData.TypeMenu.InMenu = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartEditTypeRnoInMenu), step, dicParents)) step.StepEditData.TypeMenu.RnoInMenu = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartEditTypeMenuItem), step, dicParents)) step.StepEditData.TypeMenu.MenuItem = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartEditTypeRnoMenuItem), step, dicParents)) step.StepEditData.TypeMenu.RnoMenuItem = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartEditTypeNoChg_Reason), step, dicParents)) step.StepEditData.TypeMenu.NoChgReason = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartEditTypeAlternateNameList), step, dicParents)) step.StepEditData.TypeMenu.AlternateNameList = null;
 | ||
| 			// substructure - StepPrintData
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartPrintForeColor), step, dicParents)) step.StepPrintData.ForeColor = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartPrintBackColor), step, dicParents)) step.StepPrintData.BackColor = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartPrintPosAdjust), step, dicParents)) step.StepPrintData.PosAdjust = NullString;
 | ||
| 			// substructure - TabData
 | ||
| 
 | ||
| 			//RHM/KBR added this - not sure: if (mstp.TabData.IdentEdit == sstp.TabData.IdentEdit) subFmt.StepData[i].TabData.IdentEdit = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartTabIdentEdit), step, dicParents)) step.TabData.IdentEdit = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartTabIdent), step, dicParents)) step.TabData.Ident = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartTabRNOIdentEdit), step, dicParents)) step.TabData.RNOIdentEdit = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartTabRNOIdent), step, dicParents)) step.TabData.RNOIdent = null;
 | ||
| 			//if (CheckInheritedStr(new StepPartStr(StepPartTabIdentEditWid), step, dicParents)) step.TabData.IdentEditWid = NullString;
 | ||
| 			//if (CheckInheritedStr(new StepPartStr(StepPartTabIdentWid), step, dicParents)) step.TabData.IdentWid = NullString;
 | ||
| 			//if (CheckInheritedStr(new StepPartStr(StepPartTabRNOIdentEditWid), step, dicParents)) step.TabData.RNOIdentEditWid = NullString;
 | ||
| 			//if (CheckInheritedStr(new StepPartStr(StepPartTabRNOIdentWid), step, dicParents)) step.TabData.RNOIdentWid = NullString;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartTabJustify), step, dicParents)) step.TabData.Justify = null;
 | ||
| 			//if (CheckInheritedStr(new StepPartStr(StepPartTabCheckOff), step, dicParents)) step.TabData.CheckOff = null;
 | ||
| 
 | ||
| 			// substructures - Tab - Font
 | ||
| 			if (step.TabData.Font != null && CheckInheritedStr(new StepPartStr(StepPartTabFontFamily), step, dicParents))
 | ||
| 				step.TabData.Font.FontFamily = null;
 | ||
| 			if (step.TabData.Font != null && CheckInheritedStr(new StepPartStr(StepPartTabFontStyle), step, dicParents))
 | ||
| 				step.TabData.Font.FontStyle = null;
 | ||
| 			if (step.TabData.Font != null && CheckInheritedStr(new StepPartStr(StepPartTabFontSize), step, dicParents))
 | ||
| 				step.TabData.Font.FontSize = null;
 | ||
| 			if (step.TabData.Font != null && CheckInheritedStr(new StepPartStr(StepPartTabFontCPI), step, dicParents))
 | ||
| 				step.TabData.Font.CPI = null;
 | ||
| 			if (step.TabData.Font != null && CheckInheritedStr(new StepPartStr(StepPartTabJustify), step, dicParents))
 | ||
| 				step.TabData.Font.FontJustify = null;
 | ||
| 			if (step.TabData.Font != null) // && CheckInheritedStr(new StepPartStr(StepPartTabCheckOff), step, dicParents))
 | ||
| 				step.TabData.Font.FontCheckOff = null;
 | ||
| 			if ((step.TabData.Font != null) && (step.TabData.Font.FontFamily == null) && (step.TabData.Font.FontStyle == null) && (step.TabData.Font.FontSize == null) && (step.TabData.Font.FontJustify == null) && (step.TabData.Font.CPI == null))
 | ||
| 				step.TabData.Font = null;
 | ||
| 
 | ||
| 			// All macro list items must be identical from step to inherited parent in order to removeit.
 | ||
| 			if (step.TabData.MacroList != null)
 | ||
| 			{
 | ||
| 				if (CheckInheritedStr(new StepPartStr(StepPartTabMacroListName), step, dicParents) &&
 | ||
| 					CheckInheritedStr(new StepPartStr(StepPartTabMacroListMacro), step, dicParents) &&
 | ||
| 					CheckInheritedStr(new StepPartStr(StepPartTabMacroListGrouping), step, dicParents) &&
 | ||
| 					CheckInheritedStr(new StepPartStr(StepPartTabMacroListNotInRNO), step, dicParents))
 | ||
| 				{
 | ||
| 					step.TabData.MacroList[0].Macro = null;
 | ||
| 					step.TabData.MacroList[0].Grouping = NullString;
 | ||
| 					step.TabData.MacroList[0].NotInRNO = null;
 | ||
| 				}
 | ||
| 			}
 | ||
| 
 | ||
| 			// flags:
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartDoubleSpace), step, dicParents)) step.DoubleSpace = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartEnhancedStepNumFromPrev), step, dicParents)) step.EnhancedStepNumFromPrev = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartUseSmartTemplate), step, dicParents)) step.UseSmartTemplate = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartAlwaysUseExtraLines), step, dicParents)) step.AlwaysUseExtraLines = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartSeparateBox), step, dicParents)) step.SeparateBox = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartSeparateBoxCautions), step, dicParents)) step.SeparateBoxCautions = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartSpaceDouble), step, dicParents)) step.SpaceDouble = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartReduceLineAfter), step, dicParents)) step.ReduceLineAfter = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartSameLevel), step, dicParents)) step.SameLevel = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartBoldHighLevel), step, dicParents)) step.BoldHighLevel = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartOneLineBeforeTab), step, dicParents)) step.OneLineBeforeTab = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartBoxIt), step, dicParents)) step.BoxIt = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartBoxed), step, dicParents)) step.Boxed = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartXLines_StepFix), step, dicParents)) step.XLines_StepFix = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartRebox), step, dicParents)) step.Rebox = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartSpcHdr), step, dicParents)) step.SpcHdr = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartContinueOnly), step, dicParents)) step.ContinueOnly = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartSepAfterAER), step, dicParents)) step.SepAfterAER = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartUseAlternateStepBox), step, dicParents)) step.UseAlternateStepBox = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartUnderlineAfterDashSpace), step, dicParents)) step.UnderlineAfterDashSpace = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartSpaceIn), step, dicParents)) step.SpaceIn = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartPageBreakOnStep), step, dicParents)) step.PageBreakOnStep = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartAlignNullTabWSectHead), step, dicParents)) step.AlignNullTabWSectHead = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartTextSubFollowsTextStyle), step, dicParents)) step.TextSubFollowsTextStyle = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartTreatAsSequential), step, dicParents)) step.TreatAsSequential = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartMatchUpRNO), step, dicParents)) step.MatchUpRNO = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartInPageList), step, dicParents)) step.InPageList = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartCenterOneLineOnly), step, dicParents)) step.CenterOneLineOnly = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartSubTableGetsUp1Level), step, dicParents)) step.SubTableGetsUp1Level = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartRemember), step, dicParents)) step.Remember = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartCenterOneLineAdjust), step, dicParents)) step.CenterOneLineAdjust = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartBreak), step, dicParents)) step.Break = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartBreakEquipmentList), step, dicParents)) step.BreakEquipmentList = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartBreakCautionsNotesOnSubstps), step, dicParents)) step.BreakCautionsNotesOnSubstps = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartCenterTextWithinWidth), step, dicParents)) step.CenterTextWithinWidth = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartNewlineAfter), step, dicParents)) step.NewlineAfter = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartStartLineWithDash), step, dicParents)) step.StartLineWithDash = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartBlankLineBeforeSubStep), step, dicParents)) step.BlankLineBeforeSubStep = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartAlwaysTab), step, dicParents)) step.AlwaysTab = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartMixCautionsAndNotes), step, dicParents)) step.MixCautionsAndNotes = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartNumberHighLevel), step, dicParents)) step.NumberHighLevel = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartOffsetTab), step, dicParents)) step.OffsetTab = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartLeftJustifyBorderless), step, dicParents)) step.LeftJustifyBorderless = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartStepNumIfOnlyOne), step, dicParents)) step.StepNumIfOnlyOne = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartLJTabs), step, dicParents)) step.LJTabs = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartNumberSubs), step, dicParents)) step.NumberSubs = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartBullet), step, dicParents)) step.Bullet = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartStepNumberForHighLevel), step, dicParents)) step.StepNumberForHighLevel = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartSameRowAsParent), step, dicParents)) step.SameRowAsParent = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartCheckoffSameAsParent), step, dicParents)) step.CheckoffSameAsParent = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartAtLeastTwoDigits), step, dicParents)) step.AtLeastTwoDigits = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartUseInAcTable), step, dicParents)) step.UseInAcTable = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartNumber), step, dicParents)) step.Number = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartThreeBlanksAbove), step, dicParents)) step.ThreeBlanksAbove = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartCheckOffs), step, dicParents)) step.CheckOffs = null;
 | ||
| 			if (CheckInheritedStr(new StepPartStr(StepPartQuoted), step, dicParents)) step.Quoted = null;
 | ||
| 
 | ||
| 		}
 | ||
| 
 | ||
| 		private bool CheckInheritedStr(StepPartStr stepPartStr, Step step, Dictionary<string, Step> dicParents)
 | ||
| 		{
 | ||
| 			string inheritedValue = GetStepInherited(stepPartStr, step.Type, 0);
 | ||
| 			string stepValue = stepPartStr(step);
 | ||
| 			return inheritedValue == stepValue;
 | ||
| 			//Step parent = step;
 | ||
| 			//while ((stepPartStr(parent) == null) || (step.Type == parent.Type))
 | ||
| 			//{
 | ||
| 			//    if (!dicParents.ContainsKey(parent.Type))
 | ||
| 			//    {
 | ||
| 			//        if (BaseFormat.StepData != null)
 | ||
| 			//        {
 | ||
| 			//            Step mstp = BaseFormat.StepData[step.Index];
 | ||
| 			//            if (stepPartStr(mstp) == stepPartStr(step)) return true;
 | ||
| 			//        }
 | ||
| 			//        return false;// No non-null parent value found
 | ||
| 			//    }
 | ||
| 			//    parent = dicParents[parent.Type];
 | ||
| 			//    if (stepPartStr(step) == stepPartStr(parent))
 | ||
| 			//        return true;            // step value same as parent.
 | ||
| 			//}
 | ||
| 			//return false; // parent value different from step value
 | ||
| 		}
 | ||
| 
 | ||
| 		private string GetStepInherited(StepPartStr stepPartStr, string stepType, int level)
 | ||
| 		{
 | ||
| 			string typ = stepType;
 | ||
| 			// spin through the step inheritance looking for a value
 | ||
| 			while (StepParentList[level].ContainsKey(typ))
 | ||
| 			{
 | ||
| 				Step parent = StepParentList[level][typ];
 | ||
| 				string parentVal = stepPartStr(parent);
 | ||
| 				if (parentVal != null && parentVal != "-12345") return parentVal;
 | ||
| 				typ = parent.Type; 
 | ||
| 			}
 | ||
| 			// no more parent formats to look at:
 | ||
| 			if (level >= (StepParentList.Count - 1)) return null;
 | ||
| 			Step stp = StepList[level + 1][stepType];
 | ||
| 			string stpVal = stepPartStr(stp);
 | ||
| 			if (stpVal != null) return stpVal;
 | ||
| 			return GetStepInherited(stepPartStr, stepType, level + 1);
 | ||
| 		}
 | ||
| 		private Dictionary<string, Step> BuildStepDic(Step[] stpdata)
 | ||
| 		{
 | ||
| 			Dictionary<string, Step> dicSteps = new Dictionary<string, Step>();
 | ||
| 			foreach (Step stp in stpdata) dicSteps[stp.Type] = stp;
 | ||
| 			return dicSteps;
 | ||
| 		}
 | ||
| 		private Dictionary<string, Step> BuildParentDic(Step[] stpdata, Dictionary<string, Step> dicSteps)
 | ||
| 		{
 | ||
| 			Dictionary<string, Step> dicParent = new Dictionary<string, Step>();
 | ||
| 			foreach (Step stp in stpdata)
 | ||
| 				if (stp.ParentType != "") dicParent[stp.Type] = dicSteps[stp.ParentType];
 | ||
| 			return dicParent;
 | ||
| 		}
 | ||
| 		#endregion
 | ||
| 		private void FixInactiveForHigh(ref FormatData fmtdata) // set all the HighLevelSteps beyond 
 | ||
| 		{
 | ||
| 			Step[] stpdata = fmtdata.StepData;
 | ||
| 			int numHigh = fmtdata.SectData.StepSectionData.NumberOfHighLevelSteps;
 | ||
| 			if (numHigh == 0) return;
 | ||
| 			if (numHigh < HighTypeValue.Length) // need to set steps to inactive beyond numHigh
 | ||
| 			{
 | ||
| 				for (int i = numHigh; i < HighTypeValue.Length; i++)
 | ||
| 				{
 | ||
| 					string inactiveType = HighTypeValue[i];
 | ||
| 					for (int j = 0; j < stpdata.Length; j++)
 | ||
| 					{
 | ||
| 						if (stpdata[j].Type == inactiveType)
 | ||
| 							stpdata[j].Inactive = "True";
 | ||
| 					}
 | ||
| 				}
 | ||
| 			}
 | ||
| 		}
 | ||
| 		private void FixInactiveForSubStep(ref FormatData fmtdata)
 | ||
| 		{
 | ||
| 			Step[] stpdata = fmtdata.StepData;
 | ||
| 			int numSub = fmtdata.SectData.StepSectionData.NumberOfSubStepTypes;
 | ||
| 			if (numSub == 0) return;
 | ||
| 			if (numSub < SubStepValue.Length) // need to set steps to inactive beyond numHigh
 | ||
| 			{
 | ||
| 				for (int i = numSub; i < SubStepValue.Length; i++)
 | ||
| 				{
 | ||
| 					string inactiveType = SubStepValue[i];
 | ||
| 					for (int j = 0; j < stpdata.Length; j++)
 | ||
| 					{
 | ||
| 						if (stpdata[j].Type == inactiveType)
 | ||
| 							stpdata[j].Inactive = "True";
 | ||
| 					}
 | ||
| 				}
 | ||
| 			}
 | ||
| 		}
 | ||
| 		private void FixInactiveForText(ref FormatData fmtdata)
 | ||
| 		{
 | ||
| 			Step[] stpdata = fmtdata.StepData;
 | ||
| 			if ((_AlternateIndex ?? "") == "") return;
 | ||
| 			string mask = "," + _AlternateIndex + ",";
 | ||
| 			foreach (string textType in TextTypes)
 | ||
| 			{
 | ||
| 				if (!mask.Contains("," + textType + ","))
 | ||
| 				{
 | ||
| 					for (int j = 0; j < stpdata.Length; j++)
 | ||
| 					{
 | ||
| 						if (stpdata[j].Type == textType)
 | ||
| 							stpdata[j].Inactive = "True";
 | ||
| 					}
 | ||
| 				}
 | ||
| 			}
 | ||
| 		}
 | ||
| 		private string[] HighTypeValue ={ "High", "Continuous", "Immediate", "LossOfAC", "High5" };
 | ||
| 		private string[] SubStepValue = {"Substep","And","Or","EquipmentList","EquipmentWBlank",
 | ||
| 	"ExplicitAnd","ImplicitOr","Paragraph","EquipmentOpt","EquipmentOptWBlank","ContAcSequential",
 | ||
| 	"ContAcAnd","ContAcOr","ContAcParagraph","TitleWithTextRight","TitleWithTextBelow"};
 | ||
| 		private string[] TextTypes = {"Caution","Caution1","Caution2","Caution3","Caution4",
 | ||
| 				"Note","Note1","Note2","Note3","Note4","Note5"};
 | ||
| 
 | ||
| 		private bool RHMDebugPause(string fname, string lookfor)
 | ||
| 		{
 | ||
| 			return lookfor.Contains("." + fname.Substring(0, fname.LastIndexOf(".")).ToLower() + ".");
 | ||
| 		}
 | ||
| 	}
 | ||
| 
 | ||
| }
 |