Added ‘UseSpecificPageNo’ for printing of explicit page number transitions

Use ‘UseSpecificPageNo’ for printing of explicit page number transitions
Allow Change Id for each procedure (not one for entire session). Request from Calvert.
Implement ‘UseSpecificPageNo’ flag.
Added ‘UseSpecificPageNo’ flag
Change Id dialog (moved from VEPROMS UI)
This commit is contained in:
Kathy Ruffing 2014-07-02 13:14:33 +00:00
parent b1740f888c
commit f9bfbea84a
12 changed files with 343 additions and 15 deletions

View File

@ -871,13 +871,13 @@ namespace VEPROMS
StepTabRibbon.PasteNoReturnsSetting = Properties.Settings.Default.PasteNoReturns;
StepTabRibbon.PastePlainTextSetting = Properties.Settings.Default.PastePlainText;
Activate();
FolderInfo fi = FolderInfo.Get(1);
FormatInfo frmI = FormatInfo.Get(fi.FormatID ?? 1);
if (frmI.PlantFormat.FormatData.ProcData.ChangeBarData.ChangeIds)
{
dlgChgId dlgCI = new dlgChgId(tc);
dlgCI.ShowDialog(this);
}
//FolderInfo fi = FolderInfo.Get(1);
//FormatInfo frmI = FormatInfo.Get(fi.FormatID ?? 1);
//if (frmI.PlantFormat.FormatData.ProcData.ChangeBarData.ChangeIds)
//{
// dlgChgId dlgCI = new dlgChgId(tc);
// dlgCI.ShowDialog(this);
//}
}
void tmrCloseTabItems_Tick(object sender, EventArgs e)
@ -1925,6 +1925,12 @@ namespace VEPROMS
if (tvii == null || tc.SelectedDisplayTabItem.MyItemInfo.ItemID != tvii.ItemID)
tv.AdjustTree(tc.SelectedDisplayTabItem.MyItemInfo);
}
// the following line will determine if the format uses the change id feature, and if so
// either prompts the user for change id, or uses an already input one if the procedure has been
// accessed. This gets run when the user clicks on procedure tabs in the step editor.
tc.HandleChangeId(tc.SelectedDisplayTabItem.MyItemInfo, tc.SelectedDisplayTabItem);
SetCaption(tv.SelectedNode as VETreeNode);
displayApplicability.MyDisplayTabItem = tc.SelectedDisplayTabItem;
if (tc.SelectedDisplayTabItem.MyItemInfo.MyDocVersion.DocVersionAssociationCount > 0)

View File

@ -838,21 +838,22 @@ namespace VEPROMS.CSLA.Library
{
int pgoffset = tb._ToItem.PageNumber - tb._FromItem.PageNumber;
tb._ToItem.PageNumberUsed = tb._ToItem.PageNumber;
// if the plant does not want to use the 'Next Page' or 'Previous Page' text, reset the
// pgoffset so that the specific page number is always printed even if it is next or previous page:
if (tb._ToItem.ActiveFormat.PlantFormat.FormatData.TransData.UseSpecificPageNo) pgoffset = -2;
switch (pgoffset)
{
case 1:
tb.Append(" (Next Page)");
//Console.WriteLine("Next Page: {0}", tb._FromItem.ShortPath);
break;
case -1:
tb.Append(" (Previous Page)");
//Console.WriteLine("Prev Page: {0}", tb._FromItem.ShortPath);
break;
case 0:
break;
default:
tb.Append(string.Format(" (Page {0})", tb._ToItem.PageNumber + 1));
//Console.WriteLine("Page: {0}, {1}", tb._FromItem.ShortPath, tb._ToItem.PageNumber);
break;
}
}

View File

@ -5398,6 +5398,14 @@ namespace VEPROMS.CSLA.Library
return LazyLoad(ref _UseSpecificTransitionModifier, "@UseSpecificTransitionModifier");
}
}
private LazyLoad<bool> _UseSpecificPageNo;
public bool UseSpecificPageNo
{
get
{
return LazyLoad(ref _UseSpecificPageNo, "@UseSpecificPageNo");
}
}
private LazyLoad<bool> _UseSecTitles;
public bool UseSecTitles
{

View File

@ -81,6 +81,15 @@ namespace Volian.Controls.Library
/// A bar is the docking location for the DisplayTabItems.
/// </summary>
private int _UniqueBarCount;
/// <summary>
/// ItemsChangeIds is used to store a procedure's itemid and its associated (input from dialog)
/// Change Id. Any time a user enters a procedure for the first time in this program session,
/// the user gets prompted to enter a change id. Any time a modification is made to the procedure
/// this change id is used. The user can modify this change id from the step tab ribbon/change id
/// tab (only if the format uses change ids is this tab visible).
/// </summary>
public Dictionary<int, string> ItemsChangeIds = null;
private ItemInfo _MyItemInfo = null;
private EditItem _MyEditItem = null;
private StepRTB _MyStepRTB = null;
@ -282,6 +291,7 @@ namespace Volian.Controls.Library
}
private void SetUp()
{
ItemsChangeIds = new Dictionary<int, string>();
_RemovedDisplayTabItems = new List<DisplayTabItem>();
Dock = DockStyle.Fill;
dotNetBarManager1.Style = DevComponents.DotNetBar.eDotNetBarStyle.Office2007;
@ -823,6 +833,7 @@ namespace Volian.Controls.Library
{
pg = _MyDisplayTabItems[key];
pg.Selected = true;
HandleChangeId(myItemInfo, pg);
if (SelectedDisplayTabItem != pg) // If the selected page doesn't match
SelectDisplayTabItem(pg); // Set the selected page
}
@ -831,6 +842,7 @@ namespace Volian.Controls.Library
pg = new DisplayTabItem(this.components, this, proc, key); // Open a new Procedure Tab
_MyDisplayTabItems.Add(key, pg);
pg.Selected = true;
HandleChangeId(myItemInfo, pg);
SelectDisplayTabItem(pg);
pg.MyStepTabPanel.MyProcedureItemInfo = proc;
@ -847,6 +859,33 @@ namespace Volian.Controls.Library
pg.SelectedItemInfo = myItemInfo; // Select the item
return pg;
}
public void HandleChangeId(ItemInfo myItemInfo, DisplayTabItem pg)
{
if (myItemInfo.ActiveFormat.PlantFormat.FormatData.ProcData.ChangeBarData.ChangeIds)
{
if (ItemsChangeIds.ContainsKey(myItemInfo.MyProcedure.ItemID)) SetChangeId(ItemsChangeIds[myItemInfo.MyProcedure.ItemID], pg);
else PromptForChangeId(myItemInfo, pg);
}
}
private void PromptForChangeId(ItemInfo myItemInfo, DisplayTabItem pg)
{
dlgChgId dlgCI = new dlgChgId(this);
dlgCI.ShowDialog(this);
ItemsChangeIds.Add(myItemInfo.MyProcedure.ItemID, ChgId);
SetChangeId(ChgId, pg);
}
private void SetChangeId(string chgid, DisplayTabItem pg)
{
if (pg == null || pg.MyStepTabPanel == null)
{
ChgId = null;
return;
}
pg.MyStepTabPanel.MyStepTabRibbon.SetChangeId(chgid);
ChgId = chgid;
}
/// <summary>
/// This opens a Word page based upon an itemInfo. Since a word document may be a library
/// document, the related DocID is used for the Word document.

View File

@ -176,7 +176,7 @@ namespace Volian.Controls.Library
if(_MyStepTabPanel != null)
_MyStepTabPanel.MyStepPanel.DisplayItemChanging = true;
base.OnDisplayedChanged();
if(_MyStepTabPanel != null)
if (_MyStepTabPanel != null)
_MyStepTabPanel.MyStepPanel.DisplayItemChanging = false;
//Console.WriteLine("<=<=<=<= OnDisplayedChanged");
}
@ -215,6 +215,7 @@ namespace Volian.Controls.Library
StepTabPanel myTabPanel = myTabItem.MyStepTabPanel as StepTabPanel;
if(myTabPanel == null) return;
if (MyStepTabPanel.SelectedEditItem == null) return;
MyStepTabPanel.MyDisplayTabControl.HandleChangeId(MyStepTabPanel.SelectedEditItem.MyItemInfo, myTabItem);
_MyDisplayTabControl.OnItemSelectedChanged(this,new ItemSelectedChangedEventArgs(MyStepTabPanel.SelectedEditItem));
}
#endregion

View File

@ -59,10 +59,14 @@ namespace Volian.Controls.Library
}
else
MyStepRTB = null;
if (rtabChgId.Visible)
txtBxChgId.Text = (this.Parent as StepTabPanel).MyDisplayTabControl.ChgId;
//if (rtabChgId.Visible)
// txtBxChgId.Text = (this.Parent as StepTabPanel).MyDisplayTabControl.ChgId;
}
}
public void SetChangeId(string chgid)
{
txtBxChgId.Text = chgid;
}
// added jcb 20121221 to support set ro from word doc
private ROFSTLookup MyLookup;
private DocVersionInfo _MyDVI;
@ -2766,7 +2770,9 @@ namespace Volian.Controls.Library
}
private void btnSaveChgId_Click(object sender, EventArgs e)
{
(this.Parent as StepTabPanel).MyDisplayTabControl.ChgId = txtBxChgId.Text;
//(this.Parent as StepTabPanel).MyDisplayTabControl.ChgId = txtBxChgId.Text;
(this.Parent as StepTabPanel).MyDisplayTabControl.ItemsChangeIds.Remove(_MyEditItem.MyStepRTB.MyItemInfo.MyProcedure.ItemID);
(this.Parent as StepTabPanel).MyDisplayTabControl.ItemsChangeIds.Add(_MyEditItem.MyStepRTB.MyItemInfo.MyProcedure.ItemID, txtBxChgId.Text);
}
}
public enum E_FieldToEdit { StepText, Text, Number, PSI };

View File

@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Volian.Controls.Library
{
public partial class dlgChgId : Form
{
DisplayTabControl TabControl;
public dlgChgId(DisplayTabControl tc)
{
InitializeComponent();
TabControl = tc;
tbChgId.Focus();
}
private void btnOk_Click(object sender, EventArgs e)
{
TabControl.ChgId = tbChgId.Text;
}
private void btnCancel_Click(object sender, EventArgs e)
{
TabControl.ChgId = null;
}
}
}

View File

@ -0,0 +1,113 @@
namespace Volian.Controls.Library
{
partial class dlgChgId
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.tbChgId = new System.Windows.Forms.TextBox();
this.btnOk = new System.Windows.Forms.Button();
this.btnCancel = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(17, 12);
this.label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(160, 13);
this.label1.TabIndex = 0;
this.label1.Text = "Please enter your change bar ID";
//
// tbChgId
//
this.tbChgId.Location = new System.Drawing.Point(41, 41);
this.tbChgId.Margin = new System.Windows.Forms.Padding(2);
this.tbChgId.Name = "tbChgId";
this.tbChgId.Size = new System.Drawing.Size(97, 20);
this.tbChgId.TabIndex = 1;
//
// btnOk
//
this.btnOk.DialogResult = System.Windows.Forms.DialogResult.OK;
this.btnOk.Location = new System.Drawing.Point(25, 74);
this.btnOk.Margin = new System.Windows.Forms.Padding(2);
this.btnOk.Name = "btnOk";
this.btnOk.Size = new System.Drawing.Size(46, 24);
this.btnOk.TabIndex = 2;
this.btnOk.Text = "OK";
this.btnOk.UseVisualStyleBackColor = true;
this.btnOk.Click += new System.EventHandler(this.btnOk_Click);
//
// btnCancel
//
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.btnCancel.Location = new System.Drawing.Point(103, 74);
this.btnCancel.Margin = new System.Windows.Forms.Padding(2);
this.btnCancel.Name = "btnCancel";
this.btnCancel.Size = new System.Drawing.Size(49, 24);
this.btnCancel.TabIndex = 3;
this.btnCancel.Text = "Cancel";
this.btnCancel.UseVisualStyleBackColor = true;
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
//
// dlgChgId
//
this.AcceptButton = this.btnOk;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.btnCancel;
this.ClientSize = new System.Drawing.Size(186, 113);
this.ControlBox = false;
this.Controls.Add(this.btnCancel);
this.Controls.Add(this.btnOk);
this.Controls.Add(this.tbChgId);
this.Controls.Add(this.label1);
this.Margin = new System.Windows.Forms.Padding(2);
this.MaximizeBox = false;
this.MaximumSize = new System.Drawing.Size(202, 152);
this.MinimizeBox = false;
this.MinimumSize = new System.Drawing.Size(202, 152);
this.Name = "dlgChgId";
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "PROMS Change Bar ID";
this.TopMost = true;
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox tbChgId;
private System.Windows.Forms.Button btnOk;
private System.Windows.Forms.Button btnCancel;
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -1134,6 +1134,7 @@ public struct Trans
public string Cap1stCharTrans;
public string UseTransitionModifier;
public string UseSpecificTransitionModifier; // added for BGE. Modifier, i.e. page num, is within the specific format string that defines the transition
public string UseSpecificPageNo; // added for BGE. Use specific page number instead of 'Next Page' or 'Previous Page'
public string UseSecTitles;
public string HardSpTranProcNumb;
public string XchngTranSpForHard;
@ -5190,6 +5191,7 @@ namespace fmtxml
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.UseSpecificTransitionModifier != null && mainFmt.TransData.UseSpecificTransitionModifier == subFmt.TransData.UseSpecificTransitionModifier) subFmt.TransData.UseSpecificTransitionModifier = "null";
if (mainFmt.TransData.UseSpecificPageNo != null && mainFmt.TransData.UseSpecificPageNo == subFmt.TransData.UseSpecificPageNo) subFmt.TransData.UseSpecificPageNo = "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";

View File

@ -31,7 +31,8 @@ namespace fmtxml
fmtdata.SectData.StepSectionData.StpSectLayData.TabPtsPerChar = 6.2f;
fmtdata.SectData.StepSectionData.SequentialTabFormat[4].TabFormat = "{seq})";
fmtdata.SectData.StepSectionData.SequentialTabFormat[4].PrintTabFormat = "{seq})";
fmtdata.TransData.UseSpecificTransitionModifier = "true";
fmtdata.TransData.UseSpecificTransitionModifier = "True";
fmtdata.TransData.UseSpecificPageNo = "True";
fmtdata.StepData[2].TabData.Ident = " {numeric}. ";
fmtdata.StepData[2].TabData.IdentEdit = " {numeric}. ";
fmtdata.StepData[2].TabData.RNOIdent = " . ";

Binary file not shown.