Section titles & section title continue messages improved
Calvert OP/STP: Improved section title continue message Calvert OP/STP: Added a method to get tab width with no symbol font name as argument
This commit is contained in:
parent
5e33d7ec2a
commit
6c564c8e4d
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -946,6 +946,25 @@ namespace Volian.Print.Library
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
private string GetSectCombinedTab(ItemInfo tmp)
|
||||||
|
{
|
||||||
|
ItemInfo itemInfo = tmp;
|
||||||
|
if (itemInfo.IsCautionOrNotePart) itemInfo = itemInfo.ActiveParent as ItemInfo; // if caution/note get to its associated step
|
||||||
|
itemInfo = itemInfo.ActiveParent as ItemInfo; // don't want this one in the combined tab, start at parent
|
||||||
|
if (!itemInfo.IsHigh && !itemInfo.IsSequential && !itemInfo.IsSection) itemInfo = itemInfo.ActiveParent as ItemInfo;
|
||||||
|
string prTab = "";
|
||||||
|
string thisTab = itemInfo.MyTab.CleanText.Trim();
|
||||||
|
|
||||||
|
ItemInfo mypar = itemInfo.MyParent;
|
||||||
|
while (mypar.MyParent != null && !mypar.MyParent.IsProcedure)
|
||||||
|
{
|
||||||
|
string pTab = mypar.MyTab.CleanText.Trim();
|
||||||
|
pTab = pTab.TrimEnd(" .".ToCharArray()) + ".";
|
||||||
|
prTab = pTab + prTab;
|
||||||
|
mypar = mypar.MyParent;
|
||||||
|
}
|
||||||
|
return (prTab + thisTab.Trim()).TrimEnd(".".ToCharArray());
|
||||||
|
}
|
||||||
private static bool DoSubs = true; // flag whether to print substeps (don't if doing continued checklist header)
|
private static bool DoSubs = true; // flag whether to print substeps (don't if doing continued checklist header)
|
||||||
public override float ToPdf(PdfContentByte cb, float yPageStart, ref float yTopMargin, ref float yBottomMargin)
|
public override float ToPdf(PdfContentByte cb, float yPageStart, ref float yTopMargin, ref float yBottomMargin)
|
||||||
{
|
{
|
||||||
@ -1146,14 +1165,32 @@ namespace Volian.Print.Library
|
|||||||
yPageStart = yTopMargin + yTopMost;// -2 * SixLinesPerInch;
|
yPageStart = yTopMargin + yTopMost;// -2 * SixLinesPerInch;
|
||||||
DoCheckOffHeader(cb, MyItemInfo, yLocation, yTopMargin, yPageStart);
|
DoCheckOffHeader(cb, MyItemInfo, yLocation, yTopMargin, yPageStart);
|
||||||
if (EmptyTopMostPart) yPageStart += SixLinesPerInch;
|
if (EmptyTopMostPart) yPageStart += SixLinesPerInch;
|
||||||
bool addExtraLines = DoTopContinueMsg(cb, ref yPageStart, yTopMargin, docstyle, doThreeContinues && MyItemInfo.MyParent != null && MyItemInfo.MyParent.MyTab != null ? MyItemInfo.MyParent.MyTab.CleanText : null);
|
bool addExtraLines = false;
|
||||||
|
|
||||||
// If "ContinueSectionHeader" (format flag) is true then print the section title with "(Continued)" appended to it
|
// If "ContinueSectionHeader" (format flag) is true then print the section title with "(Continued)" appended to it
|
||||||
if (MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.ContinueSectionHeader)
|
if (MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.ContinueSectionHeader)
|
||||||
|
{
|
||||||
|
// if this is calvert OI/STP, then also check that docstyle has a top continue message
|
||||||
|
// in the document style that includes 'Continued'
|
||||||
|
if (MyItemInfo.ActiveFormat.PlantFormat.FormatData.PrintData.SpecialCaseCalvert)
|
||||||
|
{
|
||||||
|
string myMsg = MyItemInfo.MyDocStyle.Continue.Top.Message;
|
||||||
|
if (myMsg == null || myMsg == "")
|
||||||
|
doSectionTitleContinued = false;
|
||||||
|
else
|
||||||
{
|
{
|
||||||
SectionConfig sch = MyItemInfo.ActiveSection.MyConfig as SectionConfig;
|
SectionConfig sch = MyItemInfo.ActiveSection.MyConfig as SectionConfig;
|
||||||
doSectionTitleContinued = (sch == null || sch.Section_PrintHdr == "Y");
|
doSectionTitleContinued = (sch == null || sch.Section_PrintHdr == "Y");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SectionConfig sch = MyItemInfo.ActiveSection.MyConfig as SectionConfig;
|
||||||
|
doSectionTitleContinued = (sch == null || sch.Section_PrintHdr == "Y");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!doSectionTitleContinued)
|
||||||
|
addExtraLines = DoTopContinueMsg(cb, ref yPageStart, yTopMargin, docstyle, doThreeContinues && MyItemInfo.MyParent != null && MyItemInfo.MyParent.MyTab != null ? MyItemInfo.MyParent.MyTab.CleanText : null);
|
||||||
|
|
||||||
MyPageHelper.YMultiplier = 1;
|
MyPageHelper.YMultiplier = 1;
|
||||||
|
|
||||||
// For Calvert Alarms, if there was a page break and there is an box around the current
|
// For Calvert Alarms, if there was a page break and there is an box around the current
|
||||||
@ -1244,11 +1281,56 @@ namespace Volian.Print.Library
|
|||||||
{
|
{
|
||||||
vlnParagraph sectContPara;
|
vlnParagraph sectContPara;
|
||||||
string contMsg = MyItemInfo.MyActiveSection.MyDocStyle.Continue.SectionTitle.AppendToTitle;
|
string contMsg = MyItemInfo.MyActiveSection.MyDocStyle.Continue.SectionTitle.AppendToTitle;
|
||||||
|
// For Calvert, the xoffset will be the highest level sections xoffset (there are metasections,
|
||||||
|
// don't use their xoffset or the continue message is indented too much)
|
||||||
|
if (MyItemInfo.ActiveFormat.PlantFormat.FormatData.PrintData.SpecialCaseCalvert)
|
||||||
|
{
|
||||||
|
float secContinueTabXoff = (float)MyItemInfo.MyDocStyle.Layout.LeftMargin;
|
||||||
|
float secContinueXoff = 0f;
|
||||||
|
float secContinueTabWidth = 0f;
|
||||||
|
vlnParagraph fndTopSect = this;
|
||||||
|
while (fndTopSect.MyParent != null)
|
||||||
|
{
|
||||||
|
fndTopSect = fndTopSect.MyParent;
|
||||||
|
}
|
||||||
|
if (fndTopSect != null && fndTopSect.MyTab != null)
|
||||||
|
{
|
||||||
|
secContinueTabXoff = fndTopSect.MyTab.XOffset;
|
||||||
|
secContinueTabWidth = fndTopSect.MyTab.Width;
|
||||||
|
secContinueXoff = fndTopSect.XOffset;
|
||||||
|
}
|
||||||
|
|
||||||
|
sectContPara = new vlnParagraph(MyParent.MyParent, cb, MyItemInfo.ActiveSection, MyParent.XOffset, 0, 0, 0, MyParent.MyItemInfo.ActiveFormat, null, (contMsg == null || contMsg == "") ? " (Continued)" : contMsg, 0, false);
|
||||||
|
if (sectContPara.PartsLeft.Count > 0)
|
||||||
|
{
|
||||||
|
vlnTab vt = sectContPara.MyTab;
|
||||||
|
string ctab = GetSectCombinedTab(MyItemInfo);
|
||||||
|
vt.Rtf = GetRtf(ctab, vt.MyFont);
|
||||||
|
float wd = vt.GetTextWidth(vt.MyFont, ctab);
|
||||||
|
vt.XOffset = secContinueTabXoff;
|
||||||
|
vt.Width = secContinueXoff - secContinueTabXoff;
|
||||||
|
sectContPara.XOffset = secContinueXoff;
|
||||||
|
if ((wd + 12) > secContinueXoff - secContinueTabXoff) // 12 is 2 characters
|
||||||
|
{
|
||||||
|
float dif = wd + 12 - (secContinueXoff - secContinueTabXoff);
|
||||||
|
vt.Width += dif;
|
||||||
|
sectContPara.XOffset += dif;
|
||||||
|
sectContPara.Width -= dif;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
float mytmpfloat = sectContPara.ParagraphToPdf(cb, yTopMargin, yTopMargin, yBottomMargin);
|
||||||
|
if (sectContPara.SectionContinuePrinted)
|
||||||
|
yPageStart -= sectContPara.Height * 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
sectContPara = new vlnParagraph(MyParent.MyParent, cb, MyItemInfo.ActiveSection, MyParent.XOffset, 0, 0, 0, MyParent.MyItemInfo.ActiveFormat, null, (contMsg == null || contMsg == "") ? " (Continued)" : contMsg, 0, false);
|
sectContPara = new vlnParagraph(MyParent.MyParent, cb, MyItemInfo.ActiveSection, MyParent.XOffset, 0, 0, 0, MyParent.MyItemInfo.ActiveFormat, null, (contMsg == null || contMsg == "") ? " (Continued)" : contMsg, 0, false);
|
||||||
float mytmpfloat = sectContPara.ParagraphToPdf(cb, yTopMargin, yTopMargin, yBottomMargin);
|
float mytmpfloat = sectContPara.ParagraphToPdf(cb, yTopMargin, yTopMargin, yBottomMargin);
|
||||||
if (sectContPara.SectionContinuePrinted)
|
if (sectContPara.SectionContinuePrinted)
|
||||||
yPageStart -= sectContPara.Height * 2;
|
yPageStart -= sectContPara.Height * 2;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
yPageStart = ChildrenAbove.ToPdf(cb, yPageStart, ref yTopMargin, ref yBottomMargin);
|
yPageStart = ChildrenAbove.ToPdf(cb, yPageStart, ref yTopMargin, ref yBottomMargin);
|
||||||
yPageStart = ChildrenLeft.ToPdf(cb, yPageStart, ref yTopMargin, ref yBottomMargin);
|
yPageStart = ChildrenLeft.ToPdf(cb, yPageStart, ref yTopMargin, ref yBottomMargin);
|
||||||
|
|
||||||
@ -1357,7 +1439,6 @@ namespace Volian.Print.Library
|
|||||||
if (yLocalypagestart != yPageStart) DebugText.WriteLine("ToPdf-yPagestartDiff:{0},{1},{2},{3}", MyPageHelper.MyPdfContentByte.PdfWriter.CurrentPageNumber, MyItemInfo.ItemID, yLocalypagestart, yPageStart);
|
if (yLocalypagestart != yPageStart) DebugText.WriteLine("ToPdf-yPagestartDiff:{0},{1},{2},{3}", MyPageHelper.MyPdfContentByte.PdfWriter.CurrentPageNumber, MyItemInfo.ItemID, yLocalypagestart, yPageStart);
|
||||||
return yPageStart;
|
return yPageStart;
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool DoTopContinueMsg(PdfContentByte cb, ref float yPageStart, float yTopMargin, DocStyle docstyle, string subTab)
|
private bool DoTopContinueMsg(PdfContentByte cb, ref float yPageStart, float yTopMargin, DocStyle docstyle, string subTab)
|
||||||
{
|
{
|
||||||
bool addExtraLine = false;
|
bool addExtraLine = false;
|
||||||
@ -2059,6 +2140,8 @@ namespace Volian.Print.Library
|
|||||||
MetaLevel = MetaLevel <= 2 ? 1 : MetaLevel - 1;
|
MetaLevel = MetaLevel <= 2 ? 1 : MetaLevel - 1;
|
||||||
if (MetaLevel == 1)
|
if (MetaLevel == 1)
|
||||||
offset += (float)formatInfo.PlantFormat.FormatData.SectData.SectionNumber.Pos;
|
offset += (float)formatInfo.PlantFormat.FormatData.SectData.SectionNumber.Pos;
|
||||||
|
else if (formatInfo.PlantFormat.FormatData.PrintData.SpecialCaseCalvert)
|
||||||
|
offset = MyParent.XOffset;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
xMetaAdj = (float)formatInfo.PlantFormat.FormatData.SectData.MetaSectionList[0].ColSByLevel;
|
xMetaAdj = (float)formatInfo.PlantFormat.FormatData.SectData.MetaSectionList[0].ColSByLevel;
|
||||||
@ -3616,6 +3699,8 @@ namespace Volian.Print.Library
|
|||||||
level = level <= 2 ? 1 : level - 1;
|
level = level <= 2 ? 1 : level - 1;
|
||||||
if (level == 1)
|
if (level == 1)
|
||||||
XOffset = (float)itemInfo.MyDocStyle.Layout.LeftMargin + (level * (float)formatInfo.PlantFormat.FormatData.SectData.SectionHeader.Pos);
|
XOffset = (float)itemInfo.MyDocStyle.Layout.LeftMargin + (level * (float)formatInfo.PlantFormat.FormatData.SectData.SectionHeader.Pos);
|
||||||
|
else if (formatInfo.PlantFormat.FormatData.PrintData.SpecialCaseCalvert)
|
||||||
|
XOffset = myTab.XOffset + ((float)formatInfo.PlantFormat.FormatData.SectData.SectionHeader.Pos - (float)formatInfo.PlantFormat.FormatData.SectData.SectionNumber.Pos);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
XOffset = (float)itemInfo.MyDocStyle.Layout.LeftMargin + (float)formatInfo.PlantFormat.FormatData.SectData.MetaSectionList[level].ColSByLevel;
|
XOffset = (float)itemInfo.MyDocStyle.Layout.LeftMargin + (float)formatInfo.PlantFormat.FormatData.SectData.MetaSectionList[level].ColSByLevel;
|
||||||
|
@ -77,6 +77,10 @@ namespace Volian.Print.Library
|
|||||||
return System.Drawing.FontStyle.Italic;
|
return System.Drawing.FontStyle.Italic;
|
||||||
return FontStyle.Regular;
|
return FontStyle.Regular;
|
||||||
}
|
}
|
||||||
|
public float GetTextWidth(VE_Font vefont, string txt)
|
||||||
|
{
|
||||||
|
return GetTextWidth(vefont, txt, SymbolFontName);
|
||||||
|
}
|
||||||
private float GetTextWidth(VE_Font vefont, string txt, string symblFontName)
|
private float GetTextWidth(VE_Font vefont, string txt, string symblFontName)
|
||||||
{
|
{
|
||||||
System.Drawing.Font font = new System.Drawing.Font(vefont.Family, (float)vefont.Size, GetSysFontStyle(vefont));
|
System.Drawing.Font font = new System.Drawing.Font(vefont.Family, (float)vefont.Size, GetSysFontStyle(vefont));
|
||||||
@ -109,8 +113,15 @@ namespace Volian.Print.Library
|
|||||||
get { return _SeparateBullet; }
|
get { return _SeparateBullet; }
|
||||||
set { _SeparateBullet = value; }
|
set { _SeparateBullet = value; }
|
||||||
}
|
}
|
||||||
|
private string _SymbolFontName;
|
||||||
|
public string SymbolFontName
|
||||||
|
{
|
||||||
|
get { return _SymbolFontName; }
|
||||||
|
set { _SymbolFontName = value; }
|
||||||
|
}
|
||||||
public vlnTab(PdfContentByte cb, vlnParagraph myparent, string origTab, string cleanTab, float xoffset, float yoffset, VE_Font vFont, bool doSectTab, string symblFontName, bool removedUnderline)
|
public vlnTab(PdfContentByte cb, vlnParagraph myparent, string origTab, string cleanTab, float xoffset, float yoffset, VE_Font vFont, bool doSectTab, string symblFontName, bool removedUnderline)
|
||||||
{
|
{
|
||||||
|
SymbolFontName = symblFontName;
|
||||||
bool alignAsIfBulleted = false;
|
bool alignAsIfBulleted = false;
|
||||||
ScriptCaution = (origTab.Contains("Caution") && vFont.Family == "VolianScript");
|
ScriptCaution = (origTab.Contains("Caution") && vFont.Family == "VolianScript");
|
||||||
MyContentByte = cb;
|
MyContentByte = cb;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user