This commit is contained in:
parent
1b3df2e536
commit
7bbf10f8f0
@ -91,7 +91,10 @@ namespace Volian.Print.Library
|
|||||||
}
|
}
|
||||||
Add(para);
|
Add(para);
|
||||||
// para.YBottomMost will have y for bottom of any substeps that are also enclosed in the box.
|
// para.YBottomMost will have y for bottom of any substeps that are also enclosed in the box.
|
||||||
yoff = para.YBottomMost;
|
if (childItemInfo.IsStep && childItemInfo.MyHLS.FormatStepData.UseSmartTemplate && para.ChildrenBelow.Count>0 && para.ChildrenBelow[0].YBottomMost > para.YBottomMost)
|
||||||
|
yoff = para.ChildrenBelow[0].YBottomMost;
|
||||||
|
else
|
||||||
|
yoff = para.YBottomMost;
|
||||||
if (childItemInfo.FormatStepData != null && childItemInfo.FormatStepData.BoxIt)
|
if (childItemInfo.FormatStepData != null && childItemInfo.FormatStepData.BoxIt)
|
||||||
{
|
{
|
||||||
box.Height = yoff - box.YOffset - (1.1F * vlnPrintObject.SixLinesPerInch);
|
box.Height = yoff - box.YOffset - (1.1F * vlnPrintObject.SixLinesPerInch);
|
||||||
@ -655,6 +658,7 @@ namespace Volian.Print.Library
|
|||||||
private int COL_WID_ADJ = 6; // adjusts for incorrect use of WidSTable when breaking a line (it breaks 6 chars too short)
|
private int COL_WID_ADJ = 6; // adjusts for incorrect use of WidSTable when breaking a line (it breaks 6 chars too short)
|
||||||
public vlnParagraph(vlnParagraph parent, PdfContentByte cb, ItemInfo itemInfo, float xoff, float yoff, int rnoLevel, int maxRNO, FormatInfo formatInfo)
|
public vlnParagraph(vlnParagraph parent, PdfContentByte cb, ItemInfo itemInfo, float xoff, float yoff, int rnoLevel, int maxRNO, FormatInfo formatInfo)
|
||||||
{
|
{
|
||||||
|
float savCheckListBottomMost = 0;
|
||||||
//int[] problemIDs = { 889 };
|
//int[] problemIDs = { 889 };
|
||||||
//List<int> lProblemIDs = new List<int>(problemIDs);
|
//List<int> lProblemIDs = new List<int>(problemIDs);
|
||||||
//if (lProblemIDs.Contains(itemInfo.ItemID))
|
//if (lProblemIDs.Contains(itemInfo.ItemID))
|
||||||
@ -694,8 +698,9 @@ namespace Volian.Print.Library
|
|||||||
if (itemInfo.MyParent.IsCaution || itemInfo.MyParent.IsNote)
|
if (itemInfo.MyParent.IsCaution || itemInfo.MyParent.IsNote)
|
||||||
XOffset += 72 * (itemInfo.FormatStepData.CautionOrNoteSubstepIndent == null ? 0 : (float)itemInfo.FormatStepData.CautionOrNoteSubstepIndent / (float)itemInfo.FormatStepData.Font.CPI);
|
XOffset += 72 * (itemInfo.FormatStepData.CautionOrNoteSubstepIndent == null ? 0 : (float)itemInfo.FormatStepData.CautionOrNoteSubstepIndent / (float)itemInfo.FormatStepData.Font.CPI);
|
||||||
|
|
||||||
// research a better way - maybe add an xml tag or check printident vs editident:
|
if (itemInfo.IsStep && itemInfo.MyHLS.FormatStepData.UseSmartTemplate &&
|
||||||
if (MyItemInfo.ActiveFormat.Name == "WCNCKL" && (MyItemInfo.MyContent.Type == 20031 || MyItemInfo.MyContent.Type == 20030 || MyItemInfo.MyContent.Type == 20035))
|
itemInfo.FormatStepData.StepLayoutData.AlignWithParentTab
|
||||||
|
|| (itemInfo.Steps != null && itemInfo.Steps.Count > 0 && itemInfo.Steps[0].FormatStepData.StepLayoutData.AlignWithParentTab))
|
||||||
itemInfo.MyTab = null;
|
itemInfo.MyTab = null;
|
||||||
if (itemInfo.MyTab != null && itemInfo.MyTab.Text != null && itemInfo.MyTab.Text != "")
|
if (itemInfo.MyTab != null && itemInfo.MyTab.Text != null && itemInfo.MyTab.Text != "")
|
||||||
{
|
{
|
||||||
@ -717,7 +722,22 @@ namespace Volian.Print.Library
|
|||||||
{
|
{
|
||||||
float offset = (float)itemInfo.MyDocStyle.Layout.LeftMargin;
|
float offset = (float)itemInfo.MyDocStyle.Layout.LeftMargin;
|
||||||
if (formatInfo.PlantFormat.FormatData.SectData.SectionNumber.Pos != null)
|
if (formatInfo.PlantFormat.FormatData.SectData.SectionNumber.Pos != null)
|
||||||
offset += (float)formatInfo.PlantFormat.FormatData.SectData.SectionNumber.Pos;
|
{
|
||||||
|
// determine level of metasections. This level will be used to calculate the
|
||||||
|
// indent. DO I NEED THIS HERE????
|
||||||
|
int level = 0;
|
||||||
|
ItemInfo iilvl = itemInfo;
|
||||||
|
while (!iilvl.IsProcedure)
|
||||||
|
{
|
||||||
|
level++;
|
||||||
|
iilvl = iilvl.MyParent;
|
||||||
|
}
|
||||||
|
level = level <= 2 ? 1 : level - 1;
|
||||||
|
if (level == 1)
|
||||||
|
offset += (float)formatInfo.PlantFormat.FormatData.SectData.SectionNumber.Pos;
|
||||||
|
else
|
||||||
|
offset += (level-1) * ((float)formatInfo.PlantFormat.FormatData.SectData.SectionHeader.Pos-(float)formatInfo.PlantFormat.FormatData.SectData.SectionNumber.Pos);
|
||||||
|
}
|
||||||
localXOffset = offset;
|
localXOffset = offset;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -774,6 +794,7 @@ namespace Volian.Print.Library
|
|||||||
}
|
}
|
||||||
else if (itemInfo.IsFigure) // if a figure we've got to determine the size:
|
else if (itemInfo.IsFigure) // if a figure we've got to determine the size:
|
||||||
{
|
{
|
||||||
|
string erMsg = null;
|
||||||
if (itemInfo.MyContent.Text != null)
|
if (itemInfo.MyContent.Text != null)
|
||||||
{
|
{
|
||||||
ProcedureInfo proc = itemInfo.MyProcedure;
|
ProcedureInfo proc = itemInfo.MyProcedure;
|
||||||
@ -781,37 +802,42 @@ namespace Volian.Print.Library
|
|||||||
ROFstInfo rofst = dvi.DocVersionAssociations[0].MyROFst;
|
ROFstInfo rofst = dvi.DocVersionAssociations[0].MyROFst;
|
||||||
ROFSTLookup lookup = rofst.ROFSTLookup;
|
ROFSTLookup lookup = rofst.ROFSTLookup;
|
||||||
string linkInfoText = itemInfo.MyContent.Text.Replace(@"\v ", "");
|
string linkInfoText = itemInfo.MyContent.Text.Replace(@"\v ", "");
|
||||||
Match m = Regex.Match(linkInfoText, @"(.*)[#]Link:([A-Za-z]*):(.*)");
|
if (linkInfoText.Contains("?"))
|
||||||
string[] subs = m.Groups[3].Value.Split(" ".ToCharArray());
|
erMsg = "RO was not found during data migration.";
|
||||||
string roid = subs[1];
|
else
|
||||||
string val = lookup.GetRoValue(subs[1]);
|
|
||||||
if (val == null) val = lookup.GetRoValue(subs[1].Substring(0, 12));
|
|
||||||
if (val != null)
|
|
||||||
{
|
{
|
||||||
string[] vals = val.Split("\n".ToCharArray());
|
Match m = Regex.Match(linkInfoText, @"(.*)[#]Link:([A-Za-z]*):(.*)");
|
||||||
Width = Int32.Parse(vals[3], System.Globalization.NumberStyles.AllowHexSpecifier) * MyItemInfo.FormatStepData.Font.CharsToTwips;
|
string[] subs = m.Groups[3].Value.Split(" ".ToCharArray());
|
||||||
int lines = Int32.Parse(vals[2], System.Globalization.NumberStyles.AllowHexSpecifier);
|
string roid = subs[1];
|
||||||
Height = lines * SixLinesPerInch;
|
string val = lookup.GetRoValue(subs[1]);
|
||||||
//yForCheckoff = yoff + Height - SixLinesPerInch;
|
if (val == null) val = lookup.GetRoValue(subs[1].Substring(0, 12));
|
||||||
if (dropCheckoff)
|
if (val != null)
|
||||||
yForCheckoff += Height - SixLinesPerInch; // place checkoff on last row of text
|
|
||||||
yoff += (Height + (2 * SixLinesPerInch));
|
|
||||||
string erMsg = null;
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
ROImageInfo roImage = ROImageInfo.GetByROFstID_FileName(rofst.ROFstID, vals[0]);
|
string[] vals = val.Split("\n".ToCharArray());
|
||||||
if (roImage != null)
|
Width = Int32.Parse(vals[3], System.Globalization.NumberStyles.AllowHexSpecifier) * MyItemInfo.FormatStepData.Font.CharsToTwips;
|
||||||
ImageText = val;
|
int lines = Int32.Parse(vals[2], System.Globalization.NumberStyles.AllowHexSpecifier);
|
||||||
else
|
Height = lines * SixLinesPerInch;
|
||||||
erMsg = string.Format("Image {0} does not exist.", vals[0]);
|
//yForCheckoff = yoff + Height - SixLinesPerInch;
|
||||||
}
|
if (dropCheckoff)
|
||||||
|
yForCheckoff += Height - SixLinesPerInch; // place checkoff on last row of text
|
||||||
|
yoff += (Height + (2 * SixLinesPerInch));
|
||||||
|
|
||||||
catch (Exception ex)
|
try
|
||||||
{
|
{
|
||||||
erMsg = string.Format("Image {0} does not exist, error = {1}.", vals[0], ex.Message);
|
ROImageInfo roImage = ROImageInfo.GetByROFstID_FileName(rofst.ROFstID, vals[0]);
|
||||||
|
if (roImage != null)
|
||||||
|
ImageText = val;
|
||||||
|
else
|
||||||
|
erMsg = string.Format("Image {0} does not exist.", vals[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
erMsg = string.Format("Image {0} does not exist, error = {1}.", vals[0], ex.Message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (erMsg != null) Rtf = GetRtf(erMsg, itemInfo.ActiveFormat.PlantFormat.FormatData.Font);
|
|
||||||
}
|
}
|
||||||
|
if (erMsg != null) Rtf = GetRtf(erMsg, itemInfo.ActiveFormat.PlantFormat.FormatData.Font);
|
||||||
CalculateXOffset(itemInfo, maxRNO, formatInfo);
|
CalculateXOffset(itemInfo, maxRNO, formatInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -825,9 +851,10 @@ namespace Volian.Print.Library
|
|||||||
Width += 24;
|
Width += 24;
|
||||||
Rtf = Rtf.Replace("{Backspace}", "");
|
Rtf = Rtf.Replace("{Backspace}", "");
|
||||||
}
|
}
|
||||||
if (formatInfo.Name == "WCNCKL")
|
if (itemInfo.IsStep && itemInfo.MyHLS.FormatStepData.UseSmartTemplate)
|
||||||
{
|
{
|
||||||
if (itemInfo.IsStep && (MyItemInfo.MyContent.Type == 20031 || MyItemInfo.MyContent.Type == 20030 || MyItemInfo.MyContent.Type == 20035))
|
if (itemInfo.FormatStepData.StepLayoutData.AlignWithParentTab
|
||||||
|
|| (itemInfo.Steps != null && itemInfo.Steps.Count > 0 && itemInfo.Steps[0].FormatStepData.StepLayoutData.AlignWithParentTab))
|
||||||
{
|
{
|
||||||
int stplevl = TheStepLevel(itemInfo);
|
int stplevl = TheStepLevel(itemInfo);
|
||||||
if (stplevl >= 0 && MyItemInfo.MyHLS.FormatStepData.VertPos[stplevl] > 0)
|
if (stplevl >= 0 && MyItemInfo.MyHLS.FormatStepData.VertPos[stplevl] > 0)
|
||||||
@ -848,17 +875,27 @@ namespace Volian.Print.Library
|
|||||||
SectionConfig sc = itemInfo.MyConfig as SectionConfig;
|
SectionConfig sc = itemInfo.MyConfig as SectionConfig;
|
||||||
if ((sc != null && sc.Section_PrintHdr == "Y") && itemInfo.ActiveFormat.PlantFormat.FormatData.SectData.UseMetaSections) printMetaHdr = true;
|
if ((sc != null && sc.Section_PrintHdr == "Y") && itemInfo.ActiveFormat.PlantFormat.FormatData.SectData.UseMetaSections) printMetaHdr = true;
|
||||||
}
|
}
|
||||||
// Determine if section title is output
|
|
||||||
if ((!itemInfo.IsStepSection && MyItemInfo.ActiveFormat.Name != "WCNCKL")
|
// If WCN checklists, the substeps are printed in a row, need to keep track of the 'longest' in
|
||||||
|
// y direction (bottommost) across the row.
|
||||||
|
if (itemInfo.IsStep && itemInfo.MyHLS.FormatStepData.UseSmartTemplate && (TheStepLevel(itemInfo)>0))
|
||||||
|
{
|
||||||
|
// do I need to get max of savCheckListBottomMost & (yoff+Height+SixLinesPerInch)
|
||||||
|
savCheckListBottomMost = yoff + Height + SixLinesPerInch;
|
||||||
|
}
|
||||||
|
// Get Y offset for regular steps, or if section title is output or if not within row (not last column of
|
||||||
|
// text) for wcn checklist, i.e. .
|
||||||
|
if ((!itemInfo.IsStepSection && !itemInfo.MyHLS.FormatStepData.UseSmartTemplate)
|
||||||
|| printMetaHdr ||
|
|| printMetaHdr ||
|
||||||
(formatInfo.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.ShowSectionTitles
|
(formatInfo.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.ShowSectionTitles
|
||||||
&& !MyItemInfo.MyDocStyle.CancelSectTitle
|
&& !MyItemInfo.MyDocStyle.CancelSectTitle
|
||||||
&& !MyItemInfo.MyDocStyle.SpecialStepsFoldout)
|
&& !MyItemInfo.MyDocStyle.SpecialStepsFoldout)
|
||||||
|| (MyItemInfo.ActiveFormat.Name=="WCNCKL" && !MyItemInfo.IsStepSection
|
// In WCN Checklist: I don't have children or if I have children the first child doesn't alignwithparent.
|
||||||
&& itemInfo.MyContent.Type != 20031 && itemInfo.MyContent.Type != 20030)) // && itemInfo.MyContent.Type != 20035))
|
|| (!itemInfo.IsStepSection && itemInfo.MyHLS.FormatStepData.UseSmartTemplate
|
||||||
|
&& ((itemInfo.Steps == null || itemInfo.Steps.Count == 0)
|
||||||
|
|| !itemInfo.Steps[0].FormatStepData.StepLayoutData.AlignWithParentTab)))
|
||||||
{
|
{
|
||||||
yoff += Height;
|
yoff += Height;
|
||||||
//yForCheckoff = yoff - SixLinesPerInch;
|
|
||||||
yoff += AdjustForBlankLines();
|
yoff += AdjustForBlankLines();
|
||||||
if (dropCheckoff)
|
if (dropCheckoff)
|
||||||
yForCheckoff += Height - SixLinesPerInch; // place checkoff on last row of text
|
yForCheckoff += Height - SixLinesPerInch; // place checkoff on last row of text
|
||||||
@ -917,10 +954,15 @@ namespace Volian.Print.Library
|
|||||||
yoff += myRnoSep.Height + SixLinesPerInch;
|
yoff += myRnoSep.Height + SixLinesPerInch;
|
||||||
}
|
}
|
||||||
YBottomMost = yoff;
|
YBottomMost = yoff;
|
||||||
|
|
||||||
|
// For WCN Checklist, the substeps are in rows of data. The YBottomMost is the bottom most for
|
||||||
|
// the row.
|
||||||
|
if (savCheckListBottomMost != 0 && savCheckListBottomMost>YBottomMost) YBottomMost = savCheckListBottomMost;
|
||||||
}
|
}
|
||||||
|
|
||||||
private int TheStepLevel(ItemInfo itemInfo)
|
private int TheStepLevel(ItemInfo itemInfo)
|
||||||
{
|
{
|
||||||
|
if (itemInfo.IsHigh) return -1;
|
||||||
int lev = 0;
|
int lev = 0;
|
||||||
ItemInfo ii = itemInfo;
|
ItemInfo ii = itemInfo;
|
||||||
while (!ii.MyParent.IsHigh)
|
while (!ii.MyParent.IsHigh)
|
||||||
@ -1513,7 +1555,20 @@ namespace Volian.Print.Library
|
|||||||
if (itemInfo.IsStepSection)
|
if (itemInfo.IsStepSection)
|
||||||
{
|
{
|
||||||
if (formatInfo.PlantFormat.FormatData.SectData.SectionHeader.Just == "PSLeft")
|
if (formatInfo.PlantFormat.FormatData.SectData.SectionHeader.Just == "PSLeft")
|
||||||
XOffset = (float)itemInfo.MyDocStyle.Layout.LeftMargin + (float)formatInfo.PlantFormat.FormatData.SectData.SectionHeader.Pos;
|
{
|
||||||
|
int level = 0;
|
||||||
|
ItemInfo iilvl = itemInfo;
|
||||||
|
while (!iilvl.IsProcedure)
|
||||||
|
{
|
||||||
|
level++;
|
||||||
|
iilvl = iilvl.MyParent;
|
||||||
|
}
|
||||||
|
level = level <= 2 ? 1 : level - 1;
|
||||||
|
if (level==1)
|
||||||
|
XOffset = (float)itemInfo.MyDocStyle.Layout.LeftMargin + (level * (float)formatInfo.PlantFormat.FormatData.SectData.SectionHeader.Pos);
|
||||||
|
else
|
||||||
|
XOffset = (float)formatInfo.PlantFormat.FormatData.SectData.MetaSectionList[level].ColSByLevel;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int typ = ((int)itemInfo.MyContent.Type) % 10000;
|
int typ = ((int)itemInfo.MyContent.Type) % 10000;
|
||||||
@ -1626,7 +1681,12 @@ namespace Volian.Print.Library
|
|||||||
{
|
{
|
||||||
int typ = ((int)itemInfo.MyContent.Type) % 10000;
|
int typ = ((int)itemInfo.MyContent.Type) % 10000;
|
||||||
int? bxIndx = itemInfo.IsStep ? formatInfo.PlantFormat.FormatData.StepDataList[typ].StepLayoutData.STBoxindex : null;
|
int? bxIndx = itemInfo.IsStep ? formatInfo.PlantFormat.FormatData.StepDataList[typ].StepLayoutData.STBoxindex : null;
|
||||||
float? widOvrd = itemInfo.FormatStepData == null ? null : itemInfo.FormatStepData.WidthOverride;
|
float? widOvrd = 0;
|
||||||
|
float xwid = 0;
|
||||||
|
if (itemInfo.IsStep && itemInfo.MyHLS.FormatStepData.UseSmartTemplate && (xwid = GetWidthFromTemplate(itemInfo, formatInfo))>0)
|
||||||
|
widOvrd = xwid;
|
||||||
|
else
|
||||||
|
widOvrd = itemInfo.FormatStepData == null ? null : itemInfo.FormatStepData.WidthOverride;
|
||||||
if ((widOvrd??0) != 0)
|
if ((widOvrd??0) != 0)
|
||||||
{
|
{
|
||||||
Width = (float)widOvrd;
|
Width = (float)widOvrd;
|
||||||
@ -1723,6 +1783,47 @@ namespace Volian.Print.Library
|
|||||||
Width = adjwidth + MyParent.Width - tabWidth + (myTab == null ? 0 : myTab.TabAlign);
|
Width = adjwidth + MyParent.Width - tabWidth + (myTab == null ? 0 : myTab.TabAlign);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private float GetWidthFromTemplate(ItemInfo itemInfo, FormatInfo formatInfo)
|
||||||
|
{
|
||||||
|
float rtnwid = 0;
|
||||||
|
int tpIndx = GetSmartTemplateIndex(itemInfo, itemInfo.MyContent.Type, formatInfo);
|
||||||
|
if (tpIndx != -1)
|
||||||
|
{
|
||||||
|
int ncol = formatInfo.PlantFormat.FormatData.Templates[tpIndx].width;
|
||||||
|
// now convert to the units for this format. The template width data is in number of columns.
|
||||||
|
rtnwid = ncol * itemInfo.FormatStepData.Font.CharsToTwips;
|
||||||
|
}
|
||||||
|
return rtnwid;
|
||||||
|
}
|
||||||
|
private int GetSmartTemplateIndex(ItemInfo itemInfo, int? type, FormatInfo formatInfo)
|
||||||
|
{
|
||||||
|
int indx = 0;
|
||||||
|
// find the starting template in the list for the high level step type:
|
||||||
|
int highType = (int)itemInfo.MyHLS.MyContent.Type-20001;
|
||||||
|
while (indx < formatInfo.PlantFormat.FormatData.Templates.Count)
|
||||||
|
{
|
||||||
|
// level of 0 starts a new group.
|
||||||
|
if (formatInfo.PlantFormat.FormatData.Templates[indx].level == 0)
|
||||||
|
{
|
||||||
|
indx++;
|
||||||
|
// now see if we're on the high level step type, if so, look under this one
|
||||||
|
// for the step type that we're on. If found return the index of it.
|
||||||
|
if (formatInfo.PlantFormat.FormatData.Templates[indx].type == highType)
|
||||||
|
{
|
||||||
|
indx++;
|
||||||
|
while (indx < formatInfo.PlantFormat.FormatData.Templates.Count && formatInfo.PlantFormat.FormatData.Templates[indx].level != 0)
|
||||||
|
{
|
||||||
|
if (formatInfo.PlantFormat.FormatData.Templates[indx].type == type - 20001)
|
||||||
|
return indx;
|
||||||
|
indx++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
indx++;
|
||||||
|
}
|
||||||
|
return -1; // didn't find this step type in the template width override list.
|
||||||
|
}
|
||||||
|
|
||||||
private float AdjustForSectionLevelTab()
|
private float AdjustForSectionLevelTab()
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user