Compare commits
44 Commits
F2025-029_
...
C2022-003-
| Author | SHA1 | Date | |
|---|---|---|---|
| c561aad661 | |||
| 0a301e1a84 | |||
| 37e727202c | |||
| 9023cc76a0 | |||
| 49bdd03c1c | |||
| 23f4b672b2 | |||
| 599d45086f | |||
| 93aed0e06a | |||
| 7eb94d7575 | |||
| fa8b0bd6a1 | |||
| c26e271676 | |||
| 7d87477d68 | |||
| 9002fb3828 | |||
| 10257a832a | |||
| 261f5a526c | |||
| b5e0c121e8 | |||
| 6d99c456e4 | |||
| 8c6f0c2736 | |||
| bd89af5e8c | |||
| b0e4128d3c | |||
| 875a8f101a | |||
| c5a8ef57ac | |||
| c8adeed187 | |||
| 49f5f506d4 | |||
| 1c87585570 | |||
| 30eb52da77 | |||
| 6f089482e6 | |||
| 8e221cc263 | |||
| 441917b670 | |||
| 6251de3b38 | |||
| d731125a14 | |||
| d6fe64bc40 | |||
| f8b93807ae | |||
| 2287a111c1 | |||
| a08d92ea41 | |||
| c41d7981ba | |||
| 37f5336806 | |||
| ebdc98dfa7 | |||
| f3c8c860f5 | |||
| f7b27142c4 | |||
| 52583a05f6 | |||
| 37b4726925 | |||
| cc66eb5329 | |||
| 563c133676 |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -96,10 +96,10 @@ namespace ROEditor
|
||||
private System.Windows.Forms.Label lblW2;
|
||||
private System.Windows.Forms.Label lblW3;
|
||||
private System.Windows.Forms.Label lblW4;
|
||||
private System.Windows.Forms.TextBox tbSingleTxtWid;
|
||||
private System.Windows.Forms.TextBox tbVariableTxtWid;
|
||||
private System.Windows.Forms.TextBox tbTableWid;
|
||||
private System.Windows.Forms.TextBox tbXYPlotWid;
|
||||
private System.Windows.Forms.RichTextBox tbSingleTxtWid; // RO Editor add symbols C2025 - 003
|
||||
private System.Windows.Forms.RichTextBox tbVariableTxtWid;
|
||||
private System.Windows.Forms.RichTextBox tbTableWid;
|
||||
private System.Windows.Forms.RichTextBox tbXYPlotWid;
|
||||
private System.Windows.Forms.Button btnOK;
|
||||
private System.Windows.Forms.Button btnCancel;
|
||||
/// <summary>
|
||||
@@ -218,10 +218,10 @@ namespace ROEditor
|
||||
this.lblFieldName = new System.Windows.Forms.Label();
|
||||
this.tbFieldName = new System.Windows.Forms.TextBox();
|
||||
this.gbAlternatives = new System.Windows.Forms.GroupBox();
|
||||
this.tbXYPlotWid = new System.Windows.Forms.TextBox();
|
||||
this.tbTableWid = new System.Windows.Forms.TextBox();
|
||||
this.tbVariableTxtWid = new System.Windows.Forms.TextBox();
|
||||
this.tbSingleTxtWid = new System.Windows.Forms.TextBox();
|
||||
this.tbXYPlotWid = new System.Windows.Forms.RichTextBox(); // RO Editor add symbols C2025 - 003
|
||||
this.tbTableWid = new System.Windows.Forms.RichTextBox();
|
||||
this.tbVariableTxtWid = new System.Windows.Forms.RichTextBox();
|
||||
this.tbSingleTxtWid = new System.Windows.Forms.RichTextBox();
|
||||
this.lblW4 = new System.Windows.Forms.Label();
|
||||
this.lblW3 = new System.Windows.Forms.Label();
|
||||
this.lblW2 = new System.Windows.Forms.Label();
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -109,6 +109,10 @@
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DevComponents.DotNetBar2, Version=14.1.0.37, Culture=neutral, PublicKeyToken=7eb7c3a35b91de04, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\..\..\..\3rdPartyLibraries\DotNetBar\DotNetBar4.6Build\DevComponents.DotNetBar2.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System">
|
||||
<Name>System</Name>
|
||||
</Reference>
|
||||
@@ -124,10 +128,18 @@
|
||||
<Reference Include="System.Xml">
|
||||
<Name>System.XML</Name>
|
||||
</Reference>
|
||||
<Reference Include="VEPROMS.CSLA.Library, Version=1.0.0.0, Culture=neutral, processorArchitecture=AMD64">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\VEPROMS.CSLA.Library\bin\Debug\VEPROMS.CSLA.Library.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Volian.Base.Library, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\Volian.Base.Library\bin\Debug\Volian.Base.Library.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Volian.Controls.Library, Version=1.0.9399.43177, Culture=neutral, processorArchitecture=AMD64">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\..\Volian.Controls.Library\bin\Debug\Volian.Controls.Library.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="AboutROEditor.cs">
|
||||
@@ -168,6 +180,7 @@
|
||||
<Compile Include="RO_FST.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Content Include="Symbols.xml" />
|
||||
<EmbeddedResource Include="AboutROEditor.resx">
|
||||
<SubType>Designer</SubType>
|
||||
<DependentUpon>AboutROEditor.cs</DependentUpon>
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACE
|
||||
CAAAAk1TRnQBSQFMAgEBAgEAASwBAAEsAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
CAAAAk1TRnQBSQFMAgEBAgEAAUQBAAFEAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
|
||||
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
|
||||
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
|
||||
@@ -175,7 +175,7 @@
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAe
|
||||
CwAAAk1TRnQBSQFMAgEBBgEAASwBAAEsAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
CwAAAk1TRnQBSQFMAgEBBgEAAUQBAAFEAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
|
||||
AwABQAMAASADAAEBAQABCAYAAQgYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
|
||||
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
|
||||
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
|
||||
|
||||
@@ -42,6 +42,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CmpRpt", "..\CmpRpt\CmpRpt.
|
||||
{3A4A3543-2D44-11D6-8452-00A0CC271352} = {3A4A3543-2D44-11D6-8452-00A0CC271352}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D9093FAB-448E-47C7-961B-92B18D85CAF7}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
|
||||
@@ -263,6 +263,7 @@ using System.Collections.Specialized;
|
||||
using Org.Mentalis.Files;
|
||||
using System.Data.SqlClient;
|
||||
using System.Collections.Generic;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
|
||||
namespace RODBInterface
|
||||
@@ -1909,6 +1910,8 @@ namespace RODBInterface
|
||||
string Info = DBE.GetString(3);
|
||||
//B2022-043 &pos; was missing the ;
|
||||
Info = Info.Replace("'", "\'"); // B2021-071: crash when getting/saving field names
|
||||
Info = Regex.Replace(Info, @"\\u([0-9]{1,4})\?", m => Convert.ToChar(int.Parse(m.Groups[1].Value)).ToString()); // RO Editor add symbols C2025 - 003
|
||||
|
||||
node.SetAttribute("HasChild", "True");
|
||||
|
||||
// Store data in the VlnXmlElement as a subgroup
|
||||
@@ -1972,6 +1975,7 @@ namespace RODBInterface
|
||||
elem.SetAttribute("RecID", RecID);
|
||||
elem.SetAttribute("ParentID", node.GetAttribute("RecID"));
|
||||
elem.SetAttribute("Table", node.GetAttribute("Table"));
|
||||
AccPageID = Regex.Replace(AccPageID, @"\\u([0-9]{1,4})\?", m => Convert.ToChar(int.Parse(m.Groups[1].Value)).ToString()); // RO Editor add symbols C2025 - 003
|
||||
elem.SetAttribute("AccPageID", AccPageID);
|
||||
}
|
||||
}
|
||||
@@ -2182,10 +2186,13 @@ namespace RODBInterface
|
||||
parent.SetAttribute("ChildLoaded", "True");
|
||||
}
|
||||
string xmlstr = GenerateXmlString(ro, false);
|
||||
string tmp2 = Regex.Replace(xmlstr, @"\\u([0-9]{1,4})\?", m => Convert.ToChar(int.Parse(m.Groups[1].Value)).ToString()); // RO Editor add symbols C2025 - 003
|
||||
string wraccid = null;
|
||||
if (ro.HasAttribute("AccPageID"))
|
||||
{
|
||||
string accid = ro.GetAttribute("AccPageID");
|
||||
|
||||
|
||||
int quote = accid.IndexOf("'");
|
||||
if (quote >= 0)
|
||||
wraccid = accid.Insert(quote, "'");
|
||||
|
||||
@@ -111,6 +111,9 @@
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="ctlXMLEditLib">
|
||||
<HintPath>..\..\..\VEPROMS User Interface\bin\Debug\ctlXMLEditLib.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System">
|
||||
<Name>System</Name>
|
||||
</Reference>
|
||||
|
||||
@@ -39,7 +39,7 @@ namespace ctlXMLEditLib
|
||||
{
|
||||
private System.Windows.Forms.Button btnSave;
|
||||
private System.Windows.Forms.Button btnCancel;
|
||||
private System.Windows.Forms.TextBox tbZoom;
|
||||
private System.Windows.Forms.RichTextBox tbZoom; // RO Editor add symbols C2025 - 003
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
@@ -88,7 +88,7 @@ namespace ctlXMLEditLib
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.tbZoom = new System.Windows.Forms.TextBox();
|
||||
this.tbZoom = new System.Windows.Forms.RichTextBox(); // RO Editor add symbols C2025 - 003
|
||||
this.btnSave = new System.Windows.Forms.Button();
|
||||
this.btnCancel = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
@@ -99,7 +99,7 @@ namespace ctlXMLEditLib
|
||||
this.tbZoom.Location = new System.Drawing.Point(24, 16);
|
||||
this.tbZoom.Multiline = true;
|
||||
this.tbZoom.Name = "tbZoom";
|
||||
this.tbZoom.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
|
||||
this.tbZoom.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical; // RO Editor add symbols C2025 - 003
|
||||
this.tbZoom.Size = new System.Drawing.Size(576, 392);
|
||||
this.tbZoom.TabIndex = 0;
|
||||
//
|
||||
|
||||
@@ -200,6 +200,10 @@ using System.Xml.Schema;
|
||||
using System.Text;
|
||||
using RODBInterface;
|
||||
using Org.Mentalis.Files;
|
||||
using System.Windows;
|
||||
using System.Text.RegularExpressions;
|
||||
using Volian.Base.Library;
|
||||
using System.Linq;
|
||||
//using IniFileIO;
|
||||
|
||||
|
||||
@@ -237,12 +241,12 @@ namespace ctlXMLEditLib
|
||||
private bool dosaveflag;
|
||||
private VlnXmlElement editelem;
|
||||
private XmlDocument editdoc;
|
||||
private TextBox zoomtextbox;
|
||||
private RichTextBox zoomtextbox;
|
||||
// the following is used for handling images. Note that if we want to have more
|
||||
// than one image defined in an ro, this should be become a list.
|
||||
private TextBox GraphicsFiletextbox;
|
||||
private TextBox GraphicsWdtextbox;
|
||||
private TextBox GraphicsHttextbox;
|
||||
private RichTextBox GraphicsFiletextbox;
|
||||
private RichTextBox GraphicsWdtextbox;
|
||||
private RichTextBox GraphicsHttextbox;
|
||||
private System.Windows.Forms.Button btnFindFile;
|
||||
private string GraphicsText;
|
||||
private ToolTip zmtooltip;
|
||||
@@ -311,7 +315,17 @@ namespace ctlXMLEditLib
|
||||
public string GetParentHTId { get { return parenthtid; } }
|
||||
public void SetParentHTId(string id) { this.parenthtid = id; }
|
||||
}
|
||||
|
||||
private RichTextBox _TextBoxFocus; // RO Editor add symbols C2025 - 003
|
||||
public RichTextBox TextBoxFocus
|
||||
{
|
||||
get { return _TextBoxFocus; }
|
||||
set
|
||||
{
|
||||
_TextBoxFocus = value;
|
||||
// C2015-017 hide the label indicating user is working with a duplicate of an exiting RO
|
||||
//lblDuplicateRO.Visible = value;
|
||||
}
|
||||
}
|
||||
public ctlXMLEdit(VlnXmlElement myelem, XmlSchema myschema, ArrayList reqfields, ArrayList fldsWithApplic, string [] pckids)
|
||||
{
|
||||
// This call is required by the Windows.Forms Form Designer.
|
||||
@@ -363,7 +377,7 @@ namespace ctlXMLEditLib
|
||||
|
||||
// set the required fields tag on those fields which are included in the passed
|
||||
// in required fields list.
|
||||
private void DoSet(TextBox hwnd, string msg)
|
||||
private void DoSet(RichTextBox hwnd, string msg) // RO Editor add symbols C2025 - 003
|
||||
{
|
||||
if (hwnd == null) return;
|
||||
if (hwnd.Tag != null)
|
||||
@@ -378,7 +392,7 @@ namespace ctlXMLEditLib
|
||||
private void SetRequiredFields(ArrayList reqfields)
|
||||
{
|
||||
Object o;
|
||||
TextBox hwnd;
|
||||
RichTextBox hwnd;
|
||||
string field, msg;
|
||||
int indx;
|
||||
foreach (string strfld in reqfields)
|
||||
@@ -397,15 +411,15 @@ namespace ctlXMLEditLib
|
||||
o = myHT[field+"a"];
|
||||
if (o != null) // set all combo types required, the checker
|
||||
{
|
||||
DoSet((TextBox)o,msg);
|
||||
DoSet((TextBox)myHT[field+"b"],msg);
|
||||
DoSet((TextBox)myHT[field+"c"],msg);
|
||||
DoSet((TextBox)myHT[field+"d"],msg);
|
||||
DoSet((RichTextBox)o,msg);
|
||||
DoSet((RichTextBox)myHT[field+"b"],msg);
|
||||
DoSet((RichTextBox)myHT[field+"c"],msg);
|
||||
DoSet((RichTextBox)myHT[field+"d"],msg);
|
||||
}
|
||||
}
|
||||
else if (o != null)
|
||||
{
|
||||
hwnd = (TextBox) o;
|
||||
hwnd = (RichTextBox) o;
|
||||
if (hwnd.Tag != null)
|
||||
{
|
||||
TextBoxAttrTag tag = (TextBoxAttrTag) hwnd.Tag;
|
||||
@@ -419,7 +433,7 @@ namespace ctlXMLEditLib
|
||||
|
||||
// C2021-026 If this is a Parent/Child field that has no value saved in the database
|
||||
// then use the parent's value and display it as grey colored text.
|
||||
private void GetDefaultParentValue(TextBox tb, XmlNode node, string chldName)
|
||||
private void GetDefaultParentValue(RichTextBox tb, XmlNode node, string chldName)
|
||||
{
|
||||
XmlNode parentNode = null;
|
||||
// PCChildren contains a list strings reprenting the Children setup in the current Working Draft Parent/Child property
|
||||
@@ -463,21 +477,24 @@ namespace ctlXMLEditLib
|
||||
private void DisplayFieldContents(XmlNode node)
|
||||
{
|
||||
Object o;
|
||||
TextBox hwnd;
|
||||
RichTextBox hwnd;
|
||||
XmlNode nd;
|
||||
// if we have an image, check it for validity, i.e. file exists, etc.??
|
||||
foreach (string str in myHT.Keys)
|
||||
{
|
||||
o = myHT[str];
|
||||
hwnd = (TextBox) o;
|
||||
hwnd = (RichTextBox)o;
|
||||
nd = node.SelectSingleNode(str);
|
||||
// if not found with just the string, search the tree.
|
||||
if (nd==null)nd = node.SelectSingleNode("*/"+str);
|
||||
if (nd == null || nd.InnerText.Length==0) // B2024-004 use Parent value if Child text length is zero
|
||||
GetDefaultParentValue(hwnd, node, str); // C2021-026 Parent/Child Field has no value so use parent's value
|
||||
else
|
||||
{
|
||||
hwnd.Text = nd.InnerText; // set the field's text from XML
|
||||
{
|
||||
|
||||
hwnd.Text = Regex.Replace(nd.InnerText, @"\\u([0-9]{1,4})\?", m => Convert.ToChar(int.Parse(m.Groups[1].Value)).ToString()); // set the field's text from XML
|
||||
//hwnd.Text = nd.InnerText; // set the field's text from XML
|
||||
Size size = hwnd.Size;
|
||||
|
||||
// check if this window has a button name as part of its tag. If
|
||||
// so it's a combo type & the radio button/visibility may need to
|
||||
@@ -546,7 +563,7 @@ namespace ctlXMLEditLib
|
||||
// height/width data of the image.
|
||||
if (GraphicsFiletextbox != null && GraphicsFiletextbox.Text != "") UpdateHtWd();
|
||||
}
|
||||
public TextBox GetGraphicsFiletextbox()
|
||||
public RichTextBox GetGraphicsFiletextbox()
|
||||
{
|
||||
return GraphicsFiletextbox;
|
||||
}
|
||||
@@ -585,13 +602,13 @@ namespace ctlXMLEditLib
|
||||
{
|
||||
dosaveflag=false;
|
||||
mysavexml=false;
|
||||
TextBox hwnd;
|
||||
RichTextBox hwnd;
|
||||
// first, clear out all of the text boxes.
|
||||
|
||||
foreach (string str in myHT.Keys)
|
||||
{
|
||||
object o = myHT[str];
|
||||
hwnd = (TextBox) o;
|
||||
hwnd = (RichTextBox) o;
|
||||
hwnd.Text = "";
|
||||
TextBoxAttrTag tag = (TextBoxAttrTag) hwnd.Tag;
|
||||
RadioButton radio;
|
||||
@@ -623,7 +640,7 @@ namespace ctlXMLEditLib
|
||||
// to the parent's value, then clear the child's textbox so that nothing is saved
|
||||
// to the database. This allow us to know that a specific value was not set
|
||||
// for this Parent/Child child
|
||||
private void RemovePCChildTextIfSameAsParent(XmlNode node, TextBox tb, string chldName)
|
||||
private void RemovePCChildTextIfSameAsParent(XmlNode node, RichTextBox tb, string chldName)
|
||||
{
|
||||
XmlNode parentNode = null;
|
||||
// if this is a child node get the parent's value
|
||||
@@ -656,6 +673,9 @@ namespace ctlXMLEditLib
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// SaveData saves the data in the element which had been sent to the control. Return
|
||||
// true if success, false if fail.
|
||||
// Note that the Parent and Child XML node variables below are not coding for Parent/Child Applicabily Fields
|
||||
@@ -663,15 +683,56 @@ namespace ctlXMLEditLib
|
||||
{
|
||||
if (mysavexml)
|
||||
{
|
||||
TextBox hwnd;
|
||||
RichTextBox hwnd;
|
||||
TextBoxAttrTag tag;
|
||||
string imgdate;
|
||||
|
||||
//go thru the hash table to get textboxes. Find the ones that have text.
|
||||
foreach (string str in myHT.Keys)
|
||||
foreach (string str in myHT.Keys) // RO Editor add symbols C2025 - 003
|
||||
{
|
||||
object o = myHT[str];
|
||||
hwnd = (TextBox) o;
|
||||
hwnd = (RichTextBox) o;
|
||||
|
||||
string result1 = "";
|
||||
string Str = "";
|
||||
char[] chrAry = hwnd.Text.ToCharArray();
|
||||
foreach (int chr in chrAry)
|
||||
{
|
||||
if (chr > 166)
|
||||
{
|
||||
//Str = @"\u" + ((int)chr).ToString("X4");
|
||||
//Str = @"\u" + ((int)chr); //.ToString("X4");
|
||||
Str = $"\\u{(int)chr}?";
|
||||
|
||||
|
||||
result1 = result1 + Str;
|
||||
}
|
||||
else
|
||||
{
|
||||
result1 = result1 + (char)chr;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var pattern = @"\\u([0-9]{1,4})\?"; // RO Editor add symbols C2025 - 003
|
||||
|
||||
var results = Regex.Matches(hwnd.Text, pattern);
|
||||
|
||||
string num1;
|
||||
|
||||
int num2;
|
||||
|
||||
foreach (Match result in results)
|
||||
{
|
||||
num1 = (result.Groups[1].Value);
|
||||
string resultString = Regex.Match(num1, @"\d+").Value;
|
||||
string resultString1 = string.Format("{0:x}", resultString);
|
||||
num2 = int.Parse(resultString, System.Globalization.NumberStyles.HexNumber);
|
||||
}
|
||||
|
||||
|
||||
hwnd.Text = result1;
|
||||
|
||||
imgdate = null;
|
||||
// if this is a required field and there is no text, put out an error
|
||||
// message and get out of here.
|
||||
@@ -788,6 +849,125 @@ namespace ctlXMLEditLib
|
||||
return (false);
|
||||
}
|
||||
|
||||
// RO Editor add symbols C2025 - 003
|
||||
private static Regex sreg1 = new Regex(@"\\par\r\n(?!\\)");
|
||||
private static Regex sreg2 = new Regex(@"[\r\n]", RegexOptions.Singleline); // Strip Carriage Returns and Newlines
|
||||
private static Regex sreg3 = new Regex(@"^\{(.*)\}$", RegexOptions.Singleline); // Strip Opening and Closing Braces
|
||||
private static Regex sreg4 = new Regex(@"\{[^{]*?\}", RegexOptions.Singleline); // Strip Clauses - remove anything from curly braces
|
||||
private static Regex sreg5 = new Regex(@"\{[^{]*?\}", RegexOptions.Singleline); // Strip Clauses - remove anything from curly braces
|
||||
private static Regex sreg6 = new Regex(@"(\\[^' \\?\r\n\t]+)(?=\\)"); // add space after token if followed by token
|
||||
private static Regex sreg7 = new Regex(@"(\\[^ \\?\r\n\t]+ )"); // take backslash xyz and evaluates them
|
||||
private static Regex sreg8 = new Regex(@"(\\[^ \\?\r\n\t]+) (?=\\)"); // remove space between tokens
|
||||
private static Regex sreg9 = new Regex(@"(\\[^ \\?\r\n\t]+) (?=\r\n)"); // remove space before /r/n
|
||||
|
||||
public static string StaticStripRtfCommands(string rtf, bool fromTable)
|
||||
{
|
||||
// replace \{ & \} with (![ & (!] respectively and then redo at end. The curly braces
|
||||
// are rtf so were getting removed and/or not handled correctly.
|
||||
string retval = rtf.Replace(@"\{", @" (![");
|
||||
retval = retval.Replace(@"\}", @" (!]");
|
||||
|
||||
// For hardspaces, the windows richtextbox does some 'quirky' things:
|
||||
// A unicode representation of \u160? is sent INTO the rtb. Coming out,
|
||||
// that \u160? was translated to a \~ (by the underlying windows rtb).
|
||||
// Note that if the \~ is sent to the rtb, it is treated as a regular space,
|
||||
// i.e. no longer a hardspace, and actually is converted to a regular space.
|
||||
// SO, on the way out, convert any \~ to \u160?
|
||||
retval = RTFConvertedSymbolsToUnicode(retval);
|
||||
|
||||
// remove carriage return/newlines after \par commands (these are introduced by rtb
|
||||
// for hard returns, goes into rtb as \par and comes out as \par\r\n):
|
||||
retval = sreg1.Replace(retval, "\\par ");
|
||||
|
||||
retval = retval.Replace("\\v0\r\n", "\\v0 "); // Replace Carriage Return and Newline after comment
|
||||
retval = sreg2.Replace(retval, ""); // Strip Carriage Returns and Newlines
|
||||
retval = sreg3.Replace(retval, "$1"); // Strip Opening and Closing Braces
|
||||
retval = sreg4.Replace(retval, ""); // Strip Clauses - remove anything from curly braces
|
||||
retval = sreg5.Replace(retval, ""); // Strip Clauses - remove anything from curly braces
|
||||
retval = sreg6.Replace(retval, "$1 "); // add space after token if followed by token
|
||||
retval = sreg7.Replace(retval, new MatchEvaluator(StaticReplaceRTFClause)); // take backslash xyz and evaluates them
|
||||
retval = sreg8.Replace(retval, "$1"); // remove space between tokens
|
||||
retval = sreg9.Replace(retval, "$1"); // remove space before /r/n
|
||||
|
||||
// remove \r\n at end of string if the string has 2 or more characters
|
||||
if (retval.Length > 1 && retval.Substring(retval.Length - 2, 2) == "\r\n") retval = retval.Remove(retval.Length - 2, 2);
|
||||
|
||||
if (retval.Length == 0) return "";
|
||||
if (retval.Length > 1 && retval.Substring(retval.Length - 2, 2) == @"\v") retval = retval.Remove(retval.Length - 2, 2);
|
||||
|
||||
retval = retval.Replace(@" (![", @"\{");
|
||||
retval = retval.Replace(@" (!]", @"\}");
|
||||
retval = retval.TrimEnd(' ');
|
||||
|
||||
// the indent character was translated in the richtextbox, change it back:
|
||||
if (retval.IndexOf(@"\'05") > -1) retval = retval.Replace(@"\'05", "\x05");
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
// RO Editor add symbols C2025 - 003
|
||||
public static string RTFConvertedSymbolsToUnicode(string str)
|
||||
{
|
||||
string rtnStr = str;
|
||||
// convert \~ to a hard spece. RTF is automatically converting \u160? to \~ but will then convert
|
||||
// the \~ to a regular space!
|
||||
rtnStr = rtnStr.Replace(@"\~", @"\u160?");
|
||||
rtnStr = rtnStr.Replace(@"\'a0", @"\u160?");
|
||||
// convert \'99 to \u8482? this is for the trade mark symbol. RTF is automatically
|
||||
// converting the unicode \u8482? to \'99, but once this is done, PROMS StepRTB (edit windows) does not show it
|
||||
rtnStr = rtnStr.Replace(@"\'99", @"\u8482?");
|
||||
// convert \'ae to \u174? this is for the registered symbol. RTF converts the unicode character to \'ae
|
||||
rtnStr = rtnStr.Replace(@"\'ae", @"\u174?");
|
||||
// convert \'a9 to \u169? this is for the copyright symbol. RTF converts the unicode character to \'a9
|
||||
rtnStr = rtnStr.Replace(@"\'a9", @"\u169?");
|
||||
return rtnStr;
|
||||
}
|
||||
|
||||
public static string StaticReplaceRTFClause(Match m)
|
||||
{
|
||||
try
|
||||
{
|
||||
string token = m.Groups[1].Value;
|
||||
switch (token[1])
|
||||
{
|
||||
case '_': // B2020-100 New Non-Breaking Hyphen
|
||||
return token.Trim();
|
||||
case '\\':
|
||||
return token;
|
||||
case '\'': // Special Character
|
||||
return token;
|
||||
case '{': // look for escape for curly braces:
|
||||
return token;
|
||||
case '}':
|
||||
return token;
|
||||
case 'v': // save link hidden info
|
||||
if (token == "\\viewkind4 ") break;
|
||||
if (Regex.IsMatch(token, @"^\\v0? ?$"))
|
||||
return token; // comment part of link
|
||||
// If possible show what procedure was being processed.
|
||||
break;
|
||||
case 'l':
|
||||
if (Regex.IsMatch(token, @"^\\line ?$")) return token;
|
||||
if (Regex.IsMatch(token, @"^\\li[-0-9]+ ?$")) return token; // line indent
|
||||
break;
|
||||
case 'f':
|
||||
if (Regex.IsMatch(token, @"^\\fi[-0-9]+ ?$")) return token; // first line indent
|
||||
// C2020-001: only keep the font size rtf if in a table.
|
||||
//if (_fromTable && Regex.IsMatch(token, @"^\\fs[-0-9]+ ?$")) return token; // font size
|
||||
break;
|
||||
case 'p':
|
||||
if (Regex.IsMatch(token, @"^\\par ?$")) return "\r\n";
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("StaticReplaceRTFClause {0} - {1}", ex.GetType().Name, ex.Message);
|
||||
}
|
||||
return "";//Strip All
|
||||
}
|
||||
|
||||
|
||||
#region Component Designer generated code
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
@@ -858,7 +1038,7 @@ namespace ctlXMLEditLib
|
||||
// 'normalizedString') or a multiline text box(type is 'string'). Also, a radio
|
||||
// button is passed in if this was called to handle an element within a combo type.
|
||||
// This button is saved for a given text box so that initialization of these combo types can occur.
|
||||
private string DisplayXmlSchemaSimpleType(XmlSchemaSimpleType simpleType, TextBox mytextbox, RadioButton radio,
|
||||
private string DisplayXmlSchemaSimpleType(XmlSchemaSimpleType simpleType, RichTextBox mytextbox, RadioButton radio,
|
||||
bool img, string imgname)
|
||||
{
|
||||
// set up for text box tag, which stores whether field is required and
|
||||
@@ -888,12 +1068,18 @@ namespace ctlXMLEditLib
|
||||
if (getannot.IndexOf("Lines")>=0)
|
||||
{
|
||||
GraphicsHttextbox = mytextbox;
|
||||
|
||||
Size size = GraphicsHttextbox.Size;
|
||||
mytextbox.LostFocus += new System.EventHandler(this.GraphicsHt_lostfocus);
|
||||
|
||||
//mytextbox.
|
||||
}
|
||||
if (getannot.IndexOf("Character")>=0)
|
||||
{
|
||||
GraphicsWdtextbox = mytextbox;
|
||||
|
||||
mytextbox.LostFocus += new System.EventHandler(this.GraphicsWd_lostfocus);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -904,14 +1090,17 @@ namespace ctlXMLEditLib
|
||||
{
|
||||
// A Schema Type Restriction is used to define single or multi-line boxes.
|
||||
XmlSchemaSimpleTypeRestriction myRestrictions = (XmlSchemaSimpleTypeRestriction) simpleType.Content;
|
||||
if (myRestrictions.BaseTypeName.Name == "normalizedString")
|
||||
if (myRestrictions.BaseTypeName.Name == "normalizedString")
|
||||
{
|
||||
mytextbox.Multiline = false;
|
||||
mytextbox.Size = new Size(300, 40);
|
||||
}
|
||||
else
|
||||
{
|
||||
mytextbox.Multiline = true;
|
||||
mytextbox.AcceptsReturn = true;
|
||||
mytextbox.Height = (int) mytextbox.Font.GetHeight() * 4;
|
||||
mytextbox.ScrollBars = ScrollBars.Vertical;
|
||||
mytextbox.AcceptsTab = true;
|
||||
mytextbox.Height = (int)mytextbox.Font.GetHeight() * 4;
|
||||
mytextbox.ScrollBars = RichTextBoxScrollBars.Vertical;
|
||||
zmtooltip.SetToolTip(mytextbox, "Press Shift F2 To Zoom");
|
||||
}
|
||||
|
||||
@@ -992,7 +1181,8 @@ namespace ctlXMLEditLib
|
||||
radio.CheckedChanged += new System.EventHandler(this.radiocheckchg);
|
||||
gbox.Controls.Add(radio);
|
||||
|
||||
TextBox tb = new TextBox();
|
||||
RichTextBox tb = new RichTextBox();
|
||||
Size size3 = tb.Size;
|
||||
tb.Location = new Point(boxx+20, y+25);
|
||||
if (!first) tb.Visible = false;
|
||||
myHT.Add(element.Name,tb);
|
||||
@@ -1001,7 +1191,7 @@ namespace ctlXMLEditLib
|
||||
// the groupbox.
|
||||
Controls.Add(tb);
|
||||
tb.TextChanged += new System.EventHandler(this.textbox_change);
|
||||
tb.GotFocus += new System.EventHandler(this.textbox_zoombtn);
|
||||
tb.GotFocus += new System.EventHandler(this.currentTextBox);
|
||||
tb.KeyDown += new KeyEventHandler(MyOnKeyDown);
|
||||
gbox.Contains(tb);
|
||||
// the following will set attributes on the text boxes such as maxlength, multiline, etc.
|
||||
@@ -1144,8 +1334,9 @@ namespace ctlXMLEditLib
|
||||
}
|
||||
else
|
||||
{
|
||||
TextBox mytextbox;
|
||||
mytextbox = new TextBox();
|
||||
RichTextBox mytextbox;
|
||||
mytextbox = new RichTextBox();
|
||||
Size size3 = mytextbox.Size;
|
||||
mytextbox.Location = new Point(screenx+indent, screeny);
|
||||
string tFieldName = (pcChildIdx == 0) ? CvtUserFldToFld(element.Name) : CvtUserFldToFld(pcChildFldName);
|
||||
mytextbox.Name = tFieldName;
|
||||
@@ -1155,7 +1346,7 @@ namespace ctlXMLEditLib
|
||||
screeny = screeny + 10;
|
||||
mytextbox.TextChanged += new System.EventHandler(this.textbox_change);
|
||||
mytextbox.Validating += new System.ComponentModel.CancelEventHandler(this.textbox_Validating);
|
||||
mytextbox.GotFocus += new System.EventHandler(this.textbox_zoombtn);
|
||||
mytextbox.GotFocus += new System.EventHandler(this.currentTextBox);
|
||||
mytextbox.KeyDown += new KeyEventHandler(MyOnKeyDown);
|
||||
if (pcChildIdx > 0)
|
||||
{
|
||||
@@ -1192,7 +1383,7 @@ namespace ctlXMLEditLib
|
||||
// the following is needed to load the control.
|
||||
private void ctlXMLEdit_Load(object sender, System.EventArgs e)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
// when data in a text box has changed, flag it (except for when this
|
||||
@@ -1264,7 +1455,7 @@ namespace ctlXMLEditLib
|
||||
private void radiocheckchg(object sender, System.EventArgs e)
|
||||
{
|
||||
RadioButton btnsel = (RadioButton) sender;
|
||||
TextBox assocbox;
|
||||
RichTextBox assocbox;
|
||||
string btntext, str;
|
||||
|
||||
if(dosaveflag)mysavexml = true;
|
||||
@@ -1277,7 +1468,7 @@ namespace ctlXMLEditLib
|
||||
str = btnsel.Name.Replace(btntext,"");
|
||||
object o = myHT[str];
|
||||
if (o == null) return;
|
||||
assocbox = (TextBox) o;
|
||||
assocbox = (RichTextBox) o;
|
||||
// make the text box visible if checked, otherwise, invisible
|
||||
assocbox.Visible = btnsel.Checked;
|
||||
// C2021-026 show or hide the Parent/Child appicability group box
|
||||
@@ -1391,7 +1582,7 @@ namespace ctlXMLEditLib
|
||||
|
||||
// The following can be used to validate the text, i.e. check the text against
|
||||
// the pattern. this needs written yet (5/16/02)
|
||||
private void MyValidatingCode(TextBox tb)
|
||||
private void MyValidatingCode(RichTextBox tb)
|
||||
{
|
||||
//get the text box's tag which contains a flag for whether this is required &
|
||||
//if it has a pattern. If it has a pattern, validate the field against the pattern.
|
||||
@@ -1420,20 +1611,22 @@ namespace ctlXMLEditLib
|
||||
}
|
||||
|
||||
// save which box we're on, for zoom processing.
|
||||
private void textbox_zoombtn(object sender, System.EventArgs e)
|
||||
private void currentTextBox(object sender, System.EventArgs e)
|
||||
{
|
||||
TextBox textbox = (TextBox) sender;
|
||||
RichTextBox textbox = (RichTextBox) sender;
|
||||
if (textbox.Multiline == true || textbox == GraphicsFiletextbox)
|
||||
zoomtextbox = textbox;
|
||||
else
|
||||
zoomtextbox = null;
|
||||
|
||||
TextBoxFocus = textbox;
|
||||
}
|
||||
|
||||
private void textbox_Validating(object sender, System.ComponentModel.CancelEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
MyValidatingCode((TextBox) sender);
|
||||
MyValidatingCode((RichTextBox) sender);
|
||||
}
|
||||
|
||||
catch(Exception ex)
|
||||
@@ -1460,7 +1653,10 @@ namespace ctlXMLEditLib
|
||||
btnZoom_click(null, null);
|
||||
}
|
||||
}
|
||||
|
||||
public void btnSymbols_click(object sender, System.EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
public void btnZoom_click(object sender, System.EventArgs e)
|
||||
{
|
||||
//TextBox tb = (TextBox) sender;
|
||||
@@ -1929,5 +2125,35 @@ namespace ctlXMLEditLib
|
||||
return curTZ.GetDaylightChanges(year);
|
||||
}
|
||||
}
|
||||
public static class RichTextBoxExtensions // RO Editor add symbols C2025 - 003
|
||||
{
|
||||
public static void InsertSymbol(this RichTextBox richTextBox, int symbcode)
|
||||
{
|
||||
int position = richTextBox.SelectionStart;
|
||||
string sym = string.Format(symbcode < 256 ? "\'{0:X2}" : @"\u{0}", symbcode);
|
||||
string RtfPrefixForSymbols = @"{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset2 FreeMono; } {\f1\fnil\fcharset0 FreeMono; } } {\colortbl;\red255\green0\blue0;\red0\green0\blue255; } \viewkind4\uc1\pard\fs24 \f1\fs24 ";
|
||||
richTextBox.SelectedRtf = RtfPrefixForSymbols + sym + @"}";
|
||||
richTextBox.SelectedRtf = @"{\rtf1\ansi\ansicpg1252\deff0\deflang1033\uc1 }";
|
||||
richTextBox.Select(position, 1);
|
||||
richTextBox.Select(position + 1, 0);
|
||||
|
||||
//TextPointer caretPos = rtb.CaretPosition;
|
||||
//if (symbcode < 256)
|
||||
// AddText(((char)symbcode).ToString());
|
||||
//else
|
||||
// AddSymbol(sym); // Adds font commands around symbol, needed for higher codes
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public enum E_FontStyle : byte
|
||||
{
|
||||
FS_NONE = 0,
|
||||
FS_BOLD = 0x01,
|
||||
FS_UNDERLINE = 0x02,
|
||||
FS_ITALIC = 0x04,
|
||||
FS_SUPERSCRIPT = 0x08,
|
||||
FS_SUBSCRIPT = 0x10
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -126,6 +126,10 @@
|
||||
<Reference Include="System.Xml">
|
||||
<Name>System.XML</Name>
|
||||
</Reference>
|
||||
<Reference Include="Volian.Base.Library, Version=1.0.0.0, Culture=neutral, processorArchitecture=AMD64">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\Volian.Base.Library\bin\Debug\Volian.Base.Library.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="AssemblyInfo.cs">
|
||||
|
||||
@@ -98,6 +98,8 @@ namespace VEPROMS
|
||||
_SelectedStepTabPanel.MyStepTabRibbon.ContActionSummaryRequest += MyStepTabRibbon_ContActionSummaryRequest;
|
||||
_SelectedStepTabPanel.MyStepTabRibbon.AddProcToDVInTree -= new StepTabRibbonEvent(MyStepTabRibbon_AddProcToDocVersionInTree);
|
||||
_SelectedStepTabPanel.MyStepTabRibbon.AddProcToDVInTree += new StepTabRibbonEvent(MyStepTabRibbon_AddProcToDocVersionInTree);
|
||||
_SelectedStepTabPanel.MyStepTabRibbon.EnableDisableStepProperties -= EnableDisableStepProperties;
|
||||
_SelectedStepTabPanel.MyStepTabRibbon.EnableDisableStepProperties += new StepTabRibbonEvent(EnableDisableStepProperties);
|
||||
// F2022-024 Time Critical Action Summary
|
||||
_SelectedStepTabPanel.MyStepTabRibbon.TimeCriticalActionSummaryRequest -= MyStepTabRibbon_TimeCriticalActionSummaryRequest;
|
||||
_SelectedStepTabPanel.MyStepTabRibbon.TimeCriticalActionSummaryRequest += MyStepTabRibbon_TimeCriticalActionSummaryRequest;
|
||||
@@ -119,7 +121,7 @@ namespace VEPROMS
|
||||
|
||||
//added by jcb 20130718 to support create pdf button when multi-unit and user selects a unit
|
||||
pi.MyDocVersion.DocVersionConfig.SelectedSlave = pi.ProcedureConfig.SelectedSlave;
|
||||
|
||||
|
||||
DlgPrintProcedure prnDlg = new DlgPrintProcedure(pi);
|
||||
|
||||
//added by jcb 20130718 to support create pdf button when multi-unit and user selects a unit
|
||||
@@ -372,12 +374,12 @@ namespace VEPROMS
|
||||
cmbFont.SelectedIndex = -1;
|
||||
string[] parameters = System.Environment.CommandLine.Split(" ".ToCharArray());
|
||||
string db = Volian.Base.Library.VlnSettings.GetDB();
|
||||
|
||||
|
||||
if (db != null)
|
||||
Database.SelectedDatabase = db;
|
||||
|
||||
//B2018-129 Most Recently Used list was being cleared. Needed to remove a (string) type case in the IF statement
|
||||
if (!string.IsNullOrEmpty((string)Properties.Settings.Default["DefaultDB"]))
|
||||
if (!string.IsNullOrEmpty((string)Properties.Settings.Default["DefaultDB"]))
|
||||
Database.LastDatabase = Properties.Settings.Default.DefaultDB;
|
||||
|
||||
// Setup the Context menu for DisplaySearch including the symbols
|
||||
@@ -416,7 +418,7 @@ namespace VEPROMS
|
||||
// B2019-107 Error Log message for inconsistent PromsFixes
|
||||
_MyLog.InfoFormat("\r\nSession Beginning\r\n<===={0}[SQL:{1:yyMM.ddHH}]====== User: {2}/{3} Started {4} ===============>{5}"
|
||||
, Application.ProductVersion, Database.RevDate, Environment.UserDomainName, Environment.UserName, DateTime.Now.ToString("dddd MMMM d, yyyy h:mm:ss tt"), FormatInfo.Failed ?? "");
|
||||
|
||||
|
||||
// C2022-030 Notify the user if the stored procedure in the database are not update to date
|
||||
// with those in the PROMSFixes.sql delivered with the PROMS executable
|
||||
string pfVersion = ExeInfo.GetAssocicatedPROMSFixesVersion();
|
||||
@@ -546,7 +548,7 @@ namespace VEPROMS
|
||||
tv.ProcedureCheckedOutTo += new vlnTreeViewEvent(tv_ProcedureCheckedOutTo);
|
||||
tv.ViewPDF += new vlnTreeViewPdfEvent(tv_ViewPDF);
|
||||
displayApplicability.ApplicabilityViewModeChanged += new DisplayApplicability.DisplayApplicabilityEvent(displayApplicability_ApplicabilityViewModeChanged);
|
||||
|
||||
|
||||
tv.ExportImportProcedureSets += new vlnTreeViewEvent(tv_ExportImportProcedureSets);
|
||||
tv.PrintTransitionReport += new vlnTreeViewEvent(tv_PrintTransitionReport);
|
||||
tv.ProcessingComplete += tv_ProcessingComplete;
|
||||
@@ -554,10 +556,23 @@ namespace VEPROMS
|
||||
tv.CreateContinuousActionSummary += new vlnTreeViewEvent(tv_CreateContinuousActionSummary);
|
||||
tv.SelectDateToStartChangeBars += tv_SelectDateToStartChangeBars;
|
||||
tv.CreateTimeCriticalActionSummary += new vlnTreeViewEvent(tv_CreateTimeCriticalActionSummary);
|
||||
tv.RefreshFormats += new vlnTreeViewStatusEvent(RefreshFormats);
|
||||
|
||||
displayBookMarks.ResetBookMarksInPROMSWindows += displayBookMarks_ResetBookMarksInPROMSWindows;
|
||||
}
|
||||
|
||||
//C2021-035 Add Refresh Tree Option at highest level
|
||||
void RefreshFormats(object sender, vlnTreeStatusEventArgs args)
|
||||
{
|
||||
Format.ClearFormatCache();
|
||||
FormatInfo.ClearFormatInfoCache();
|
||||
FormatInfo.Reset();
|
||||
FormatInfoList.Reset();
|
||||
Format.Reset();
|
||||
FormatList.Reset();
|
||||
displaySearch1.SetupContextMenu();
|
||||
}
|
||||
|
||||
// Part of Separate Windows upgrade C2015-022
|
||||
// Extend Changes to BookMark information to all of the child windows
|
||||
void displayBookMarks_ResetBookMarksInPROMSWindows(object sender, EventArgs args)
|
||||
@@ -574,7 +589,7 @@ namespace VEPROMS
|
||||
}
|
||||
}
|
||||
|
||||
void tv_SelectDateToStartChangeBars(object sender, vlnTreeEventArgs args)
|
||||
void tv_SelectDateToStartChangeBars(object sender, vlnTreeEventArgs args)
|
||||
{
|
||||
ProcedureInfo pi = (args.Node as VETreeNode).VEObject as ProcedureInfo;
|
||||
if (pi == null) return;
|
||||
@@ -1183,6 +1198,7 @@ namespace VEPROMS
|
||||
|
||||
if (!MySessionInfo.CanCheckOutItem(pi.ItemID, CheckOutType.Procedure, ref message))
|
||||
{
|
||||
message = message.Replace("\r\nWould You like to open the procedure in View Only Mode?", "");
|
||||
MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
return;
|
||||
}
|
||||
@@ -2072,7 +2088,10 @@ namespace VEPROMS
|
||||
{
|
||||
foreach (DisplayTabItem dti in tc.MyBar.Items)
|
||||
{
|
||||
if (!myList.Contains(dti.OwnerID))
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
// View Only Mode is no longer checked out, so no longer has an OwnerID
|
||||
// This will keep those tabs from auto-closing based on the timer
|
||||
if (!myList.Contains(dti.OwnerID) && dti.MyStepTabPanel.MyStepPanel.VwMode != E_ViewMode.View)
|
||||
{
|
||||
MyCloseTabList.PushDTI(dti);
|
||||
}
|
||||
@@ -2478,7 +2497,7 @@ namespace VEPROMS
|
||||
//and set checkboxes based on what they are set to
|
||||
UserSettings usersettings = new UserSettings(VlnSettings.UserID);
|
||||
|
||||
if (DisPlayTabState.Rows.Count > 0 && (usersettings.UserSetting_OpenTabs_AutoOpen || !usersettings.UserSetting_OpenTabs_Remember))
|
||||
if (!Settings.Default.SeparateWindows && DisPlayTabState.Rows.Count > 0 && (usersettings.UserSetting_OpenTabs_AutoOpen || !usersettings.UserSetting_OpenTabs_Remember))
|
||||
{
|
||||
//will open tabs by default / ask by default
|
||||
DialogResult result = DialogResult.Yes;
|
||||
@@ -3913,6 +3932,7 @@ namespace VEPROMS
|
||||
string message = string.Empty;
|
||||
if (!MySessionInfo.CanCheckOutItem(args.ProcedureConfig.MyProcedure.ItemID, CheckOutType.Procedure, ref message))
|
||||
{
|
||||
message = message.Replace("\r\nWould You like to open the procedure in View Only Mode?", "");
|
||||
MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
this.Cursor = Cursors.Default;
|
||||
return DialogResult.None;
|
||||
@@ -3936,6 +3956,7 @@ namespace VEPROMS
|
||||
string message = string.Empty;
|
||||
if (!MySessionInfo.CanCheckOutItem(args.SectionConfig.MySection.MySectionInfo.MyProcedure.ItemID, CheckOutType.Procedure, ref message))
|
||||
{
|
||||
message = message.Replace("\r\nWould You like to open the procedure in View Only Mode?", "");
|
||||
MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
this.Cursor = Cursors.Default;
|
||||
return DialogResult.None;
|
||||
@@ -4736,6 +4757,11 @@ namespace VEPROMS
|
||||
// B2022-026 RO Memory reduction coding (Jakes Merge)
|
||||
displayRO.SetFindDocROButton(false);
|
||||
displayRO.LoadTree();
|
||||
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
//In View Only Mode - Step Properties should be disabled
|
||||
EnableDisableStepProperties(sender, new StepTabRibbonEventArgs(args.MyEditItem.MyItemInfo, 0, args.MyEditItem.MyStepPanel.VwMode));
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -4767,6 +4793,22 @@ namespace VEPROMS
|
||||
|
||||
}
|
||||
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
//In View Only Mode - Step Properties should be disabled
|
||||
public void EnableDisableStepProperties(object sender, StepTabRibbonEventArgs args)
|
||||
{
|
||||
if (args.ViewMode == E_ViewMode.View && (infoTabs.Enabled || infoTabs.SelectedTab != infotabTags))
|
||||
{
|
||||
infoTabs.Enabled = true;
|
||||
infoTabs.SelectedTab = infotabTags;
|
||||
infoTabs.Enabled = false;
|
||||
}
|
||||
else if (args.ViewMode != E_ViewMode.View && !infoTabs.Enabled)
|
||||
{
|
||||
infoTabs.Enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
void _LastStepRTB_EditModeChanged(object sender, EventArgs args)
|
||||
{
|
||||
if (_LastStepRTB.EditMode) // going into edit mode in a cell of the grid.
|
||||
|
||||
@@ -494,6 +494,8 @@ namespace VEPROMS.CSLA.Library
|
||||
{
|
||||
roid = FormatRoidKey(roid, true);
|
||||
|
||||
|
||||
|
||||
string retval = GetRoChild(roid).value;
|
||||
|
||||
if (string.IsNullOrEmpty(retval))
|
||||
@@ -2152,8 +2154,15 @@ namespace VEPROMS.CSLA.Library
|
||||
if (string.IsNullOrEmpty(s2))
|
||||
return s2;
|
||||
|
||||
var pattern = @"\\u([0-9]{1,4})\?"; // RO Editor add symbols C2025 - 003
|
||||
|
||||
if (Regex.IsMatch(s2, pattern))
|
||||
|
||||
s2 = s2.Replace(@"\u160?", "<HSP>"); // convert hard spaces bug fix: B2016-206
|
||||
s2 = s2.Replace(@"\", @"\u9586?"); // convert backslashes to a backslash symbol
|
||||
if (!Regex.IsMatch(s2, pattern)) // RO Editor add symbols C2025 - 003
|
||||
{
|
||||
s2 = s2.Replace(@"\", @"\u9586?"); // convert backslashes to a backslash symbol
|
||||
}
|
||||
s2 = s2.Replace("<HSP>", @"\u160?"); // convert hard spaces bug fix: B2016-206
|
||||
s2 = s2.Replace("`", @"\'b0"); // convert backquote to degree - left over from DOS days.
|
||||
s2 = s2.Replace("\xf8", @"\'b0"); // convert \xf8 to degree.
|
||||
|
||||
@@ -765,6 +765,19 @@ namespace VEPROMS.CSLA.Library
|
||||
foreach (DocVersionInfo dvi in _CacheByPrimaryKey[key])
|
||||
dvi.ResetProcedures();
|
||||
}
|
||||
|
||||
//C2021-035 Add Refresh Tree Option at highest level
|
||||
public static void ResetAllProcedures()
|
||||
{
|
||||
foreach (string key in _CacheByPrimaryKey.Keys)
|
||||
{
|
||||
foreach (DocVersionInfo dvi in _CacheByPrimaryKey[key])
|
||||
dvi.ResetProcedures();
|
||||
}
|
||||
|
||||
foreach (DocVersionInfo dvi in _CacheList)
|
||||
dvi.ResetProcedures();
|
||||
}
|
||||
#region IVEReadOnlyItem
|
||||
public System.Collections.IList GetChildren()
|
||||
{
|
||||
|
||||
@@ -275,6 +275,14 @@ namespace VEPROMS.CSLA.Library
|
||||
}
|
||||
}
|
||||
|
||||
//C2021-035 Add Refresh Tree Option at highest level
|
||||
public static void Reset()
|
||||
{
|
||||
_LookupFormats?.Clear();
|
||||
_LookupFormats = null;
|
||||
_ = LookupFormats;
|
||||
}
|
||||
|
||||
private static Format AddFormatToDB(Format parent, string format, bool issub, DateTime Dts, string Userid, string fmtPath, string genmacPath)
|
||||
{
|
||||
string fmtdata = null;
|
||||
@@ -509,7 +517,12 @@ public partial class FormatInfo : IFormatOrFormatInfo
|
||||
return _PROMSBaseFormat;
|
||||
}
|
||||
}
|
||||
public static FormatInfo Get(string name)
|
||||
public static void Reset()
|
||||
{
|
||||
_PROMSBaseFormat = null;
|
||||
}
|
||||
|
||||
public static FormatInfo Get(string name)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
@@ -7984,12 +7984,20 @@ namespace VEPROMS.CSLA.Library
|
||||
public ProcedureInfo(SafeDataReader dr) : base(dr) { }
|
||||
#endif
|
||||
private ProcedureInfo() : base() { ;}
|
||||
public new static ProcedureInfo Get(int itemID)
|
||||
public new static ProcedureInfo Get(int itemID, bool forcerefresh = false)
|
||||
{
|
||||
//if (!CanGetObject())
|
||||
// throw new System.Security.SecurityException("User not authorized to view a Item");
|
||||
try
|
||||
{
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
// fixes caching issue
|
||||
// so this forces a refresh of the cache
|
||||
if (forcerefresh)
|
||||
{
|
||||
_CacheByPrimaryKey.Remove(itemID.ToString());
|
||||
}
|
||||
|
||||
ProcedureInfo tmp = GetCachedByPrimaryKey(itemID);
|
||||
if (tmp == null)
|
||||
{
|
||||
|
||||
@@ -186,7 +186,7 @@ namespace VEPROMS.CSLA.Library
|
||||
if (string.IsNullOrEmpty(name))
|
||||
{ name = tmpproc.DisplayText; }
|
||||
|
||||
message = string.Format("The procedure {0} is already checked out to {1}", name, si.UserID);
|
||||
message = string.Format("The procedure {0} is already checked out to {1}.\r\nWould You like to open the procedure in View Only Mode?", name, si.UserID);
|
||||
rv = rv && false;
|
||||
}
|
||||
else if (si.ProcessID != this.ProcessID && objectType == CheckOutType.Document)
|
||||
|
||||
@@ -97,6 +97,12 @@ namespace VEPROMS.CSLA.Library
|
||||
if (formatInfo != null && formatInfo.ToString() == formatName) return formatInfo.Get();
|
||||
return null;
|
||||
}
|
||||
//C2021-035 Add Refresh Tree Option at highest level
|
||||
public static void Reset()
|
||||
{
|
||||
_MyFormatInfoList?.Clear();
|
||||
_MyFormatInfoList = null;
|
||||
}
|
||||
}
|
||||
public class DocStyleListConverter : System.ComponentModel.StringConverter
|
||||
{
|
||||
|
||||
@@ -1145,8 +1145,12 @@ namespace VEPROMS.CSLA.Library
|
||||
{
|
||||
//string thisTab = StepInfo.Get(pitem.ItemID).MyTab.CleanText;
|
||||
string thisTab = pitem.MyTab.CleanText;// StepInfo.Get(pitem.ItemID).MyTab.CleanText;
|
||||
//B2025-058 remove continuous action indicator
|
||||
string medittag = pitem.FormatStepData.TabData.MacroEditTag;
|
||||
if (medittag != null && thisTab.StartsWith(medittag))
|
||||
thisTab = thisTab.Substring(medittag.Length);
|
||||
// remove delimiters of '.' and ')' in tab.
|
||||
if (!hasDelim)
|
||||
if (!hasDelim)
|
||||
{
|
||||
// get list of delimiters to remove from the format:
|
||||
foreach (string rmvDelim in DelimList) thisTab = thisTab.Replace(rmvDelim, "");
|
||||
|
||||
@@ -990,12 +990,21 @@ namespace VEPROMS.CSLA.Library
|
||||
}
|
||||
return tmp;
|
||||
}
|
||||
public static Content Get(int contentID)
|
||||
public static Content Get(int contentID, bool forcerefresh = false)
|
||||
{
|
||||
if (!CanGetObject())
|
||||
throw new System.Security.SecurityException("User not authorized to view a Content");
|
||||
try
|
||||
{
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
// fixes caching issue
|
||||
// this forces a refresh of the cache for a case when need to do a hard refresh
|
||||
if (forcerefresh)
|
||||
{
|
||||
ConvertListToDictionary();
|
||||
_CacheByPrimaryKey.Remove(contentID.ToString());
|
||||
}
|
||||
|
||||
Content tmp = GetCachedByPrimaryKey(contentID);
|
||||
if (tmp == null)
|
||||
{
|
||||
|
||||
@@ -502,6 +502,15 @@ namespace VEPROMS.CSLA.Library
|
||||
_FolderInfoExtension.Refresh(this);
|
||||
OnChange();// raise an event
|
||||
}
|
||||
|
||||
//C2021-035 Add Refresh Tree Option at highest level
|
||||
public static void ClearFolderInfoCache()
|
||||
{
|
||||
_CacheByPrimaryKey.Clear();
|
||||
while (_CacheList.Count > 0)
|
||||
{ _CacheList[0].Dispose(); }
|
||||
}
|
||||
|
||||
public static FolderInfo Get(int folderID)
|
||||
{
|
||||
//if (!CanGetObject())
|
||||
|
||||
@@ -143,6 +143,14 @@ namespace VEPROMS.CSLA.Library
|
||||
if (_CacheByParentID_Name.ContainsKey(key)) return _CacheByParentID_Name[key][0];
|
||||
return null;
|
||||
}
|
||||
|
||||
//C2021-035 Add Refresh Tree Option at highest level
|
||||
public static void ClearFormatCache()
|
||||
{
|
||||
_CacheByPrimaryKey.Clear();
|
||||
while (_CacheList.Count > 0)
|
||||
{ _CacheList[0].Dispose(); }
|
||||
}
|
||||
#endregion
|
||||
#region Business Methods
|
||||
private string _ErrorMessage = string.Empty;
|
||||
|
||||
@@ -71,6 +71,13 @@ namespace VEPROMS.CSLA.Library
|
||||
if (_CacheByPrimaryKey.ContainsKey(key)) return _CacheByPrimaryKey[key][0];
|
||||
return null;
|
||||
}
|
||||
//C2021-035 Add Refresh Tree Option at highest level
|
||||
public static void ClearFormatInfoCache()
|
||||
{
|
||||
_CacheByPrimaryKey.Clear();
|
||||
while (_CacheList.Count > 0)
|
||||
{ _CacheList[0].Dispose(); }
|
||||
}
|
||||
#endregion
|
||||
#region Business Methods
|
||||
private string _ErrorMessage = string.Empty;
|
||||
|
||||
@@ -81,7 +81,7 @@ namespace Volian.Controls.Library
|
||||
this.lbROId.Dock = System.Windows.Forms.DockStyle.Left;
|
||||
this.lbROId.ForeColor = System.Drawing.SystemColors.Highlight;
|
||||
this.lbROId.Location = new System.Drawing.Point(48, 24);
|
||||
this.lbROId.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.lbROId.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.lbROId.Name = "lbROId";
|
||||
this.lbROId.Size = new System.Drawing.Size(183, 33);
|
||||
this.superTooltip1.SetSuperTooltip(this.lbROId, new DevComponents.DotNetBar.SuperTooltipInfo("RO ID", "", "The RO ID for the selected RO Value will be displayed here. Double-Click to open" +
|
||||
@@ -97,7 +97,7 @@ namespace Volian.Controls.Library
|
||||
this.lblROID.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
|
||||
this.lblROID.Dock = System.Windows.Forms.DockStyle.Left;
|
||||
this.lblROID.Location = new System.Drawing.Point(0, 24);
|
||||
this.lblROID.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.lblROID.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.lblROID.Name = "lblROID";
|
||||
this.lblROID.Size = new System.Drawing.Size(48, 33);
|
||||
this.superTooltip1.SetSuperTooltip(this.lblROID, new DevComponents.DotNetBar.SuperTooltipInfo("RO ID", "", "The RO ID for the selected RO Value will be displayed here.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(150, 80)));
|
||||
@@ -139,7 +139,7 @@ namespace Volian.Controls.Library
|
||||
this.btnGoToRO.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.btnGoToRO.Enabled = false;
|
||||
this.btnGoToRO.Location = new System.Drawing.Point(0, 55);
|
||||
this.btnGoToRO.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.btnGoToRO.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnGoToRO.Name = "btnGoToRO";
|
||||
this.btnGoToRO.Size = new System.Drawing.Size(233, 18);
|
||||
this.btnGoToRO.Style = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
@@ -155,7 +155,7 @@ namespace Volian.Controls.Library
|
||||
this.btnPreviewRO.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.btnPreviewRO.Enabled = false;
|
||||
this.btnPreviewRO.Location = new System.Drawing.Point(0, 37);
|
||||
this.btnPreviewRO.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.btnPreviewRO.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.btnPreviewRO.Name = "btnPreviewRO";
|
||||
this.btnPreviewRO.Size = new System.Drawing.Size(233, 18);
|
||||
this.superTooltip1.SetSuperTooltip(this.btnPreviewRO, new DevComponents.DotNetBar.SuperTooltipInfo("Preview", "", "This will Preview the selected RO Table, X/Y Plot, or Image.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(150, 80)));
|
||||
@@ -263,6 +263,7 @@ namespace Volian.Controls.Library
|
||||
this.Controls.Add(this.tvROFST);
|
||||
this.Controls.Add(this.lbFound);
|
||||
this.Controls.Add(this.panelValue);
|
||||
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.Name = "DisplayRO";
|
||||
this.Size = new System.Drawing.Size(233, 507);
|
||||
this.panelValue.ResumeLayout(false);
|
||||
|
||||
@@ -1,18 +1,19 @@
|
||||
using DevComponents.DotNetBar;
|
||||
using JR.Utils.GUI.Forms;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Windows.Forms;
|
||||
using VEPROMS.CSLA.Library;
|
||||
using XYPlots;
|
||||
using DevComponents.DotNetBar;
|
||||
using System.Text.RegularExpressions;
|
||||
using Volian.Base.Library;
|
||||
using JR.Utils.GUI.Forms;
|
||||
using System.Linq;
|
||||
using XYPlots;
|
||||
using static System.Net.Mime.MediaTypeNames;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
{
|
||||
@@ -372,8 +373,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
// B2022-088: [JPR] Find Doc Ro button not working in Word Sections
|
||||
// B2022-098: [JPR] ROs not being resolved in Word Sections
|
||||
if (e.Node.Tag is ROFSTLookup.rochild)
|
||||
{
|
||||
if (e.Node.Tag is ROFSTLookup.rochild){
|
||||
ROFSTLookup.rochild chld = (ROFSTLookup.rochild)e.Node.Tag;
|
||||
selectedChld = chld;
|
||||
|
||||
@@ -770,9 +770,15 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
tmp = new TreeNode(roc.title);
|
||||
tmp.Tag = roc;
|
||||
|
||||
if (tmp.Text.IndexOf("\\u") > -1) // RO Editor add symbols C2025 - 003
|
||||
{
|
||||
tmp.Text = Regex.Replace(tmp.Text, @"\\u([0-9]{1,4})\?", m => Convert.ToChar(int.Parse(m.Groups[1].Value)).ToString());
|
||||
}
|
||||
|
||||
if (roc.roid.Length == 16)
|
||||
{
|
||||
tn.Nodes.Add(tmp);
|
||||
@@ -921,11 +927,12 @@ namespace Volian.Controls.Library
|
||||
// Pad to 16 to store in the RoUsage table.
|
||||
string padroid = ROFSTLookup.FormatRoidKey(roc.roid, true);
|
||||
string linktxt = string.Format(@"#Link:ReferencedObject:<NewID> {0} {1}", padroid, MyROFST.RODbID);
|
||||
|
||||
// Resolve symbols and scientific notation in the RO return value
|
||||
string valtxt = MyROFSTLookup.GetTranslatedRoValue(padroid, MyRTB.MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta, MyRTB.MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.UseTildaPoundCharsForSuperSubScriptInROValues, false, MyRTB.MyItemInfo);
|
||||
|
||||
MyRTB.OnRoInsert(this, new StepRTBRoEventArgs(valtxt, selectedChld.value, linktxt, padroid, MyROFST.RODbID));
|
||||
// Resolve symbols and scientific notation in the RO return value
|
||||
string valtxt = MyROFSTLookup.GetTranslatedRoValue(padroid, MyRTB.MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta, MyRTB.MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.UseTildaPoundCharsForSuperSubScriptInROValues, false, MyRTB.MyItemInfo);
|
||||
|
||||
MyRTB.OnRoInsert(this, new StepRTBRoEventArgs(valtxt, selectedChld.value, linktxt, padroid, MyROFST.RODbID));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -112,20 +112,12 @@
|
||||
<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>
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.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>
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="superTooltip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<metadata name="superTooltip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<data name="btnSaveRO.SuperTooltip" xml:space="preserve">
|
||||
<value>For Step Editor sections:
|
||||
- This will place the selected RO at the cursor position.
|
||||
- This will replace an RO with the selected RO.
|
||||
|
||||
For Word sections
|
||||
- This will place the needed RO ID on the clipboard.</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -603,6 +603,8 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
ItemInfo myItemInfo = myItemInfo2;
|
||||
|
||||
bool viewonlymode = false;
|
||||
|
||||
//B2025-046 Remember Tabs failing when swapping versions of PROMS
|
||||
if (myItemInfo?.MyDocVersion == null) // bug fix: B2016-108 disconnected data will not have a MyDocVersion
|
||||
{
|
||||
@@ -620,8 +622,20 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (!MySessionInfo.CanCheckOutItem(myItemInfo.MyProcedure.ItemID, CheckOutType.Procedure, ref message))
|
||||
{
|
||||
FlexibleMessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
return null;
|
||||
DisplayTabItem dti = MyBar?.Items?.OfType<DisplayTabItem>().FirstOrDefault(x => x.MyItemInfo?.ItemID == myItemInfo.MyProcedure.ItemID);
|
||||
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
//shouldn't prompt - should just auto put in view only if already in open tab
|
||||
//in view only
|
||||
if (
|
||||
(dti != null && dti.MyStepTabPanel.MyStepPanel.VwMode == E_ViewMode.View)
|
||||
||
|
||||
(SeparateWindows && VersionID == myItemInfo.MyDocVersion.VersionID)
|
||||
|| //to handle special case where item will be opened in a separate window
|
||||
MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
|
||||
viewonlymode = true;
|
||||
else
|
||||
return null;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -682,7 +696,7 @@ namespace Volian.Controls.Library
|
||||
// C2023-016 if a Word section and doing Find/Replace don't open Word section, position to section title in step editor instead
|
||||
if (myItemInfo.MyContent.MyEntry == null || doingFindReplace) // If it is not a Word document open in step editor
|
||||
{
|
||||
return OpenStepTabPage(myItemInfo, setFocus);
|
||||
return OpenStepTabPage(myItemInfo, setFocus, viewonlymode);
|
||||
}
|
||||
else // Otherwise open it in the Word editor
|
||||
{
|
||||
@@ -1178,7 +1192,7 @@ namespace Volian.Controls.Library
|
||||
//}
|
||||
//public Dictionary<DocVersionInfo, frmEnhanced> dicEnhancedDocuments = new Dictionary<DocVersionInfo, frmEnhanced>();
|
||||
|
||||
private DisplayTabItem OpenStepTabPage(ItemInfo myItemInfo, bool setFocus)
|
||||
private DisplayTabItem OpenStepTabPage(ItemInfo myItemInfo, bool setFocus, bool viewonlymode = false)
|
||||
{
|
||||
ItemInfo proc = myItemInfo.MyProcedure; // Find procedure Item
|
||||
string key = "Item - " + proc.ItemID.ToString();
|
||||
@@ -1197,7 +1211,7 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
else // If not already open, create a new Page
|
||||
{
|
||||
pg = new DisplayTabItem(this.components, this, proc, key); // Open a new Procedure Tab
|
||||
pg = new DisplayTabItem(this.components, this, proc, key, viewonlymode); // Open a new Procedure Tab
|
||||
_MyDisplayTabItems.Add(key, pg);
|
||||
if (setFocus)
|
||||
{
|
||||
|
||||
@@ -98,13 +98,18 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
#endregion
|
||||
#region Constructors
|
||||
public DisplayTabItem(IContainer container, DisplayTabControl myDisplayTabControl, ItemInfo myItemInfo, string myKey)
|
||||
public DisplayTabItem(IContainer container, DisplayTabControl myDisplayTabControl, ItemInfo myItemInfo, string myKey, bool viewonlymode = false)
|
||||
{
|
||||
_MyItemInfo = myItemInfo;
|
||||
if (MyItemInfo.MyContent.MyEntry == null)
|
||||
OwnerID = myDisplayTabControl.MySessionInfo.CheckOutItem(myItemInfo.MyProcedure.ItemID, CheckOutType.Procedure);
|
||||
else
|
||||
OwnerID = myDisplayTabControl.MySessionInfo.CheckOutItem(myItemInfo.MyContent.MyEntry.DocID, CheckOutType.Document);
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
//don't want to check out if opening in View Only Mode Due to someone else having it checked out
|
||||
if (!viewonlymode)
|
||||
{
|
||||
if (MyItemInfo.MyContent.MyEntry == null)
|
||||
OwnerID = myDisplayTabControl.MySessionInfo.CheckOutItem(myItemInfo.MyProcedure.ItemID, CheckOutType.Procedure);
|
||||
else
|
||||
OwnerID = myDisplayTabControl.MySessionInfo.CheckOutItem(myItemInfo.MyContent.MyEntry.DocID, CheckOutType.Document);
|
||||
}
|
||||
//Console.WriteLine("DisplayTabItem");
|
||||
_MyKey = myKey;
|
||||
_MyDisplayTabControl = myDisplayTabControl;
|
||||
@@ -112,7 +117,7 @@ namespace Volian.Controls.Library
|
||||
InitializeComponent();
|
||||
this.Click += new EventHandler(DisplayTabItem_Click);
|
||||
if (myItemInfo.MyContent.MyEntry == null)
|
||||
SetupStepTabPanel();
|
||||
SetupStepTabPanel(viewonlymode);
|
||||
else
|
||||
SetupDSOTabPanel();
|
||||
SetupSecurity(myItemInfo);
|
||||
@@ -128,7 +133,37 @@ namespace Volian.Controls.Library
|
||||
private bool MesssageShown = false;
|
||||
public void SetupSecurity(ItemInfo myItem)
|
||||
{
|
||||
UserInfo ui = UserInfo.GetByUserID(OwnerInfo.Get(OwnerID).SessionUserID);
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
//is in View Only Mode, so do not set up the Security
|
||||
if (OwnerID == 0)
|
||||
{
|
||||
|
||||
UserInfo uiViewOnly = UserInfo.GetByUserID(Base.Library.VlnSettings.UserID);
|
||||
if (uiViewOnly.IsAdministrator())
|
||||
{
|
||||
MyUserRole = $"{Base.Library.VlnSettings.UserID} - Administrator";
|
||||
}
|
||||
else if (uiViewOnly.IsSetAdministrator(myItem.MyDocVersion))
|
||||
{
|
||||
MyUserRole = $"{Base.Library.VlnSettings.UserID} - Set Administrator";
|
||||
}
|
||||
else if (uiViewOnly.IsWriter(myItem.MyDocVersion))
|
||||
{
|
||||
MyUserRole = $"{Base.Library.VlnSettings.UserID} - Writer";
|
||||
}
|
||||
else if (uiViewOnly.IsROEditor(myItem.MyDocVersion))
|
||||
{
|
||||
MyUserRole = $"{Base.Library.VlnSettings.UserID} - RO Editor";
|
||||
}
|
||||
else
|
||||
{
|
||||
MyUserRole = $"{Base.Library.VlnSettings.UserID} - Reviewer";
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
UserInfo ui = UserInfo.GetByUserID(OwnerInfo.Get(OwnerID).SessionUserID);
|
||||
|
||||
if (ui == null)
|
||||
{
|
||||
@@ -246,7 +281,7 @@ namespace Volian.Controls.Library
|
||||
/// <summary>
|
||||
/// Creates and sets-up a StepTabPanel
|
||||
/// </summary>
|
||||
private void SetupStepTabPanel()
|
||||
private void SetupStepTabPanel(bool viewonlymode = false)
|
||||
{
|
||||
((System.ComponentModel.ISupportInitialize)(_MyDisplayTabControl.MyBar)).BeginInit();
|
||||
_MyDisplayTabControl.MyBar.SuspendLayout();
|
||||
@@ -276,7 +311,7 @@ namespace Volian.Controls.Library
|
||||
_MyDisplayTabControl.MyBar.ResumeLayout(false);
|
||||
DocVersionInfo dvi = _MyItemInfo.MyProcedure.ActiveParent as DocVersionInfo; //MyRTBItem.MyItemInfo.MyProcedure.ActiveParent as DocVersionInfo;
|
||||
if (dvi == null) return;
|
||||
if (dvi.VersionType > 127)
|
||||
if (dvi.VersionType > 127 || viewonlymode)
|
||||
MyStepTabPanel.MyStepPanel.VwMode = E_ViewMode.View;
|
||||
// C2021 - 027: Procedure level PC/PC - add _MyIteminfo to argument list
|
||||
if (dvi.MultiUnitCount > 1)
|
||||
|
||||
@@ -9,6 +9,7 @@ using System.Drawing;
|
||||
using System.Text.RegularExpressions;
|
||||
using Volian.Base.Library;
|
||||
using JR.Utils.GUI.Forms;
|
||||
using System.Linq;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
{
|
||||
@@ -386,6 +387,26 @@ namespace Volian.Controls.Library
|
||||
// The following line expands the items needed to display SelectedItemInfo
|
||||
ExpandAsNeeded(myItemInfo);
|
||||
}
|
||||
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
public void ResetAll()
|
||||
{
|
||||
List<int> itemIDs = Controls.OfType<RTBItem>().Where(t => t?.MyItemInfo?.ActiveParent != null && t.MyItemInfo.ActiveParent.GetType() == typeof(ItemInfo)).Select(x => (x.MyItemInfo.ActiveParent as ItemInfo).ItemID).Distinct().ToList();
|
||||
|
||||
foreach (int itemID in itemIDs)
|
||||
{
|
||||
ItemInfo.ResetParts(itemID);
|
||||
}
|
||||
|
||||
// The following line actually reloads the procedure item
|
||||
MyProcedureItemInfo = ItemInfo.Get(MyProcedureItemInfo.ItemID, true);
|
||||
MyProcedureItemInfo.RefreshConfig();
|
||||
ContentInfo.Refresh(Content.Get(MyProcedureItemInfo.MyContent.ContentID, true));
|
||||
|
||||
// The following line expands the items needed to display SelectedItemInfo
|
||||
ExpandAsNeeded(SelectedItemInfo);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Currently selected StepRTB
|
||||
/// </summary>
|
||||
|
||||
@@ -1400,9 +1400,13 @@ namespace Volian.Controls.Library
|
||||
if (SelectionLength > 0)HandleDeleteKeyWithSelectedText(new KeyEventArgs(Keys.None), null);
|
||||
int position = SelectionStart;
|
||||
SelectionLength = 0;
|
||||
linkValue = linkValue.Replace("\\u8209?", "\\f1\\u8209?\\f0 ");
|
||||
linkValue = linkValue.Replace("\\u9586?", "\\f1\\u9586?\\f0 "); // backslash symbol
|
||||
linkValue = linkValue.Replace("\\u916?", "\\f1\\u916?\\f0 ");
|
||||
|
||||
var pattern = @"\\u([0-9]{1,4})\?"; // RO Editor add symbols C2025 - 003
|
||||
foreach (Match match in Regex.Matches(linkValue, pattern, RegexOptions.IgnoreCase))
|
||||
{
|
||||
linkValue = linkValue.Replace(match.Value, "\\f1 " + match.Value + " \\f0");
|
||||
}
|
||||
|
||||
linkValue = linkValue.Replace(@"{", @"\{");
|
||||
linkValue = linkValue.Replace(@"}", @"\}");
|
||||
SelectedRtf = @"{\rtf1\ansi" + FontTable + @"{\colortbl ;\red255\green0\blue0;\red0\green0\blue255;}\v" + FontSize + @" <START]\v0\cf1 " + linkValue + @"\cf0\v " + linkUrl + @"[END>\v0 }";
|
||||
|
||||
@@ -16,6 +16,8 @@ using DevComponents.DotNetBar;
|
||||
using Microsoft.Win32;
|
||||
using System.Diagnostics;
|
||||
using JR.Utils.GUI.Forms;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
{
|
||||
@@ -721,6 +723,59 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public DevComponents.DotNetBar.GalleryContainer BuildSymbolGalleryForRO()
|
||||
{
|
||||
// sl, galleryContainerSymbolsCM, galleryContainerSymbolsCM3, galleryContainerSymbolsGrid, galleryContainerSymbolsCM4
|
||||
|
||||
DevComponents.DotNetBar.GalleryContainer gc1 = galleryContainerSymbolsCM;
|
||||
DevComponents.DotNetBar.GalleryContainer gc2 = galleryContainerSymbolsCM3;
|
||||
DevComponents.DotNetBar.GalleryContainer gc3 = galleryContainerSymbolsGrid;
|
||||
DevComponents.DotNetBar.GalleryContainer gc4 = galleryContainerSymbolsCM4;
|
||||
|
||||
FormatInfo fmt = FormatInfo.Get(1);
|
||||
SymbolList sl = fmt.PlantFormat.FormatData.SymbolList;
|
||||
if (sl == null || sl.Count <= 0)
|
||||
{
|
||||
FlexibleMessageBox.Show("No symbols are available, check with administrator");
|
||||
//return DevComponents.DotNetBar.GalleryContainer;
|
||||
}
|
||||
foreach (Symbol sym in sl)
|
||||
{
|
||||
// get an image of the symbol character
|
||||
// found the we cannot change the font being used for the button text
|
||||
Bitmap symCharBtmp = createTextBitmap((char)sym.Unicode);
|
||||
DevComponents.DotNetBar.ButtonItem btn = new DevComponents.DotNetBar.ButtonItem();
|
||||
btn.Image = symCharBtmp;
|
||||
//btn.Text = string.Format("{0}", (char)sym.Unicode);
|
||||
|
||||
// to name button use unicode rather than desc, desc may have spaces or odd chars
|
||||
btn.Name = "btn" + sym.Unicode.ToString();
|
||||
btn.Tooltip = sym.Desc;
|
||||
btn.Tag = string.Format(@"{0}", sym.Unicode);
|
||||
//btn.FontBold = true;
|
||||
btn.Click += new System.EventHandler(btnSym_Click);
|
||||
galleryContainerSymbols.SubItems.Add(btn);
|
||||
DevComponents.DotNetBar.ButtonItem btnCM1 = GetCMButton(sym);
|
||||
btnCM1.Image = symCharBtmp;
|
||||
btnCM1.Click += new System.EventHandler(btnSym_Click);
|
||||
gc1.SubItems.Add(btnCM1);
|
||||
DevComponents.DotNetBar.ButtonItem btnCM2 = GetCMButton(sym);
|
||||
btnCM2.Image = symCharBtmp;
|
||||
btnCM2.Click += new System.EventHandler(btnSym_Click);
|
||||
gc2.SubItems.Add(btnCM2);
|
||||
DevComponents.DotNetBar.ButtonItem btnCM3 = GetCMButton(sym);
|
||||
btnCM3.Image = symCharBtmp;
|
||||
btnCM3.Click += new System.EventHandler(btnSym_Click);
|
||||
gc3.SubItems.Add(btnCM3);
|
||||
DevComponents.DotNetBar.ButtonItem btnCM4 = GetCMButton(sym);
|
||||
btnCM4.Image = symCharBtmp;
|
||||
btnCM4.Click += new System.EventHandler(btnSym_Click);
|
||||
gc4.SubItems.Add(btnCM4);
|
||||
}
|
||||
return galleryContainerSymbols;
|
||||
}
|
||||
|
||||
private void SetBtnInsSupInfoVisible()
|
||||
{
|
||||
if (MyItemInfo == null) return;
|
||||
@@ -906,6 +961,11 @@ namespace Volian.Controls.Library
|
||||
// //SetButtonAndMenuEnabling(false);
|
||||
//}
|
||||
private Bitmap createTextBitmap(char ch)
|
||||
{
|
||||
return createTextBitmap(ch, new Font("FreeMono", 18, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel));
|
||||
}
|
||||
|
||||
private Bitmap createTextBitmap(char ch, Font objFont)
|
||||
{
|
||||
string txt = string.Format("{0}", ch);
|
||||
Bitmap objBmpImage = new Bitmap(1, 1);
|
||||
@@ -916,8 +976,6 @@ namespace Volian.Controls.Library
|
||||
// Create the Font object for the image text drawing.
|
||||
// later on, we could add logic to use either FreeMono or Arial Unicode MS based on the format being used
|
||||
// but for now, we are going to use FreeMono to create the symbol list
|
||||
Font objFont = new Font("FreeMono", 18, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
|
||||
//Font objFont = new Font("Arial Unicode MS", 18, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
|
||||
|
||||
// Create a graphics object to measure the text's width and height.
|
||||
Graphics objGraphics = Graphics.FromImage(objBmpImage);
|
||||
@@ -937,7 +995,6 @@ namespace Volian.Controls.Library
|
||||
objGraphics.SmoothingMode = SmoothingMode.AntiAlias;
|
||||
objGraphics.TextContrast = 0;
|
||||
objGraphics.TextRenderingHint = TextRenderingHint.AntiAlias;
|
||||
//objGraphics.DrawString(txt, objFont, new SolidBrush(Color.FromArgb(102, 102, 102)), 0, 0);
|
||||
objGraphics.DrawString(txt, objFont, new SolidBrush(Color.Black),0,0);
|
||||
objGraphics.Flush();
|
||||
return (objBmpImage);
|
||||
@@ -2067,6 +2124,9 @@ namespace Volian.Controls.Library
|
||||
rtabHome.Select();
|
||||
rtabTableGridTools.Visible = false;
|
||||
SetButtonMenuEnabledDisabledOnStepType(false);
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
//Is in View Only Mode so show button as selected
|
||||
btnEditMode.Checked = btnCMEditMode1.Checked = true;
|
||||
this.Refresh();
|
||||
return;
|
||||
}
|
||||
@@ -3338,10 +3398,43 @@ namespace Volian.Controls.Library
|
||||
public void SetupAdminMode()
|
||||
{
|
||||
}
|
||||
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
public event StepTabRibbonEvent EnableDisableStepProperties;
|
||||
private void OnEnableDisableStepProperties(StepTabRibbonEventArgs args)
|
||||
{
|
||||
if (EnableDisableStepProperties != null)
|
||||
EnableDisableStepProperties(this, args);
|
||||
}
|
||||
private void btnToggleEditView_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (MyEditItem == null) return;
|
||||
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
string message = string.Empty;
|
||||
if (MyEditItem.MyStepPanel.VwMode == E_ViewMode.View && !MySessionInfo.CanCheckOutItem(MyEditItem.MyItemInfo.MyProcedure.ItemID, CheckOutType.Procedure, ref message))
|
||||
{
|
||||
//someone else has the procedure checked out so cannot swap out of view only mode
|
||||
message = message.Replace("\r\nWould You like to open the procedure in View Only Mode?", "\r\n\r\nYou will be unable to turn off View Only Mode for this procedure until it is checked in by the user specified above.");
|
||||
MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
return;
|
||||
}
|
||||
else if (MyEditItem.MyStepPanel.VwMode == E_ViewMode.View)
|
||||
{
|
||||
//swapping into edit mode, so check out procedure and Setup Security
|
||||
(this.Parent as StepTabPanel).MyDisplayTabItem.OwnerID = MySessionInfo.CheckOutItem(MyEditItem.MyItemInfo.MyProcedure.ItemID, 0);
|
||||
(this.Parent as StepTabPanel).MyDisplayTabItem.SetupSecurity(MyItemInfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
//swapping into View Only mode, so check in procedure
|
||||
OwnerInfo oi = OwnerInfo.GetByItemID(MyEditItem.MyItemInfo.MyProcedure.ItemID, CheckOutType.Procedure);
|
||||
MySessionInfo.CheckInItem(oi.OwnerID);
|
||||
}
|
||||
|
||||
MyEditItem.MyStepPanel.VwMode = MyEditItem.MyStepPanel.VwMode == E_ViewMode.Edit ? E_ViewMode.View : E_ViewMode.Edit;
|
||||
//enable / disable the Step Properties Panel based on the ViewMode
|
||||
OnEnableDisableStepProperties(new StepTabRibbonEventArgs(MyEditItem.MyItemInfo, 0, MyEditItem.MyStepPanel.VwMode));
|
||||
MyEditItem.ToggleEditView(MyEditItem.MyStepPanel.VwMode);
|
||||
SetButtonAndMenuEnabling(true);
|
||||
SetStepButtonAndMenuEnabling(true);
|
||||
@@ -3355,7 +3448,62 @@ namespace Volian.Controls.Library
|
||||
// btnEnhancedDocSync.Checked = !btnEnhancedDocSync.Checked;
|
||||
//}
|
||||
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
// using a blocking collection to make it thread safe in case someone
|
||||
// spams hitting the refresh button
|
||||
private BlockingCollection<bool> blockingRefreshProcedure = new BlockingCollection<bool>();
|
||||
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
private void btnRefreshProcedure_Click(object sender, EventArgs e)
|
||||
{
|
||||
//Consumer
|
||||
Task.Run(() =>
|
||||
{
|
||||
//Blocks until a newRefresh Procedure Run is available
|
||||
while (!blockingRefreshProcedure.IsCompleted)
|
||||
{
|
||||
_ = blockingRefreshProcedure.Take();
|
||||
RefreshProcedure();
|
||||
}
|
||||
});
|
||||
|
||||
//Producer
|
||||
Task.Run(() => { blockingRefreshProcedure.Add(true); });
|
||||
}
|
||||
|
||||
public void RefreshProcedure()
|
||||
{
|
||||
StepTabPanel stab_Panel = Parent as StepTabPanel;
|
||||
|
||||
if (MyEditItem != null)
|
||||
{
|
||||
if (!MyEditItem.MyStepPanel.ContainsFocus)
|
||||
this.Invoke((Action)(() => { MyEditItem.MyStepPanel.Focus(); }));
|
||||
|
||||
E_ViewMode mode = MyEditItem.MyStepPanel.VwMode;
|
||||
Application.DoEvents();
|
||||
this.Invoke((Action)(() => {MyEditItem.MyStepPanel.ResetAll();}));
|
||||
Application.DoEvents();
|
||||
this.Invoke((Action)(() => {MyEditItem.MyStepPanel.Refresh();}));
|
||||
Application.DoEvents();
|
||||
MyEditItem.MyStepPanel.VwMode = mode;
|
||||
Application.DoEvents();
|
||||
}
|
||||
else if (stab_Panel != null)
|
||||
{
|
||||
if (!stab_Panel.MyStepPanel.ContainsFocus)
|
||||
this.Invoke((Action)(() => {stab_Panel.MyStepPanel.Focus();}));
|
||||
|
||||
E_ViewMode mode = stab_Panel.MyStepPanel.VwMode;
|
||||
Application.DoEvents();
|
||||
this.Invoke((Action)(() => {stab_Panel.MyStepPanel.ResetAll();}));
|
||||
Application.DoEvents();
|
||||
this.Invoke((Action)(() => {stab_Panel.MyStepPanel.Refresh();}));
|
||||
Application.DoEvents();
|
||||
stab_Panel.MyStepPanel.VwMode = mode;
|
||||
Application.DoEvents();
|
||||
}
|
||||
}
|
||||
private void btnROEdit_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (VlnSettings.ReleaseMode.Equals("DEMO"))
|
||||
@@ -4865,10 +5013,11 @@ namespace Volian.Controls.Library
|
||||
public class StepTabRibbonEventArgs : EventArgs
|
||||
{
|
||||
public StepTabRibbonEventArgs() { ; }
|
||||
public StepTabRibbonEventArgs(ItemInfo proc, int oringFlg = 0)
|
||||
public StepTabRibbonEventArgs(ItemInfo proc, int oringFlg = 0, E_ViewMode viewMode = E_ViewMode.Edit)
|
||||
{
|
||||
_Proc = proc;
|
||||
OringFlg = oringFlg;
|
||||
ViewMode = viewMode;
|
||||
}
|
||||
private ItemInfo _Proc;
|
||||
|
||||
@@ -4884,6 +5033,9 @@ namespace Volian.Controls.Library
|
||||
get { return _OringFlg; }
|
||||
set { _OringFlg = value; }
|
||||
}
|
||||
|
||||
//C2019-036 View Only mode work with Checked Out Procedures
|
||||
public E_ViewMode ViewMode { get; set; }
|
||||
}
|
||||
public delegate void StepTabRibbonEvent(object sender, StepTabRibbonEventArgs args);
|
||||
|
||||
|
||||
BIN
PROMS/Volian.Controls.Library/StepTabRibbon.designer.cs
generated
BIN
PROMS/Volian.Controls.Library/StepTabRibbon.designer.cs
generated
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -1269,6 +1269,11 @@ namespace Volian.Controls.Library
|
||||
if (ok)
|
||||
if (pia == null && tn.VEObject as StepInfo == null) cm.MenuItems.Add("Properties...", new EventHandler(mi_Click));
|
||||
#endregion
|
||||
#region Refresh_Tree
|
||||
//C2021-035 Add Refresh Tree Option at highest level
|
||||
if (tn == (VETreeNode)Nodes[0])
|
||||
cm.MenuItems.Add("Refresh Tree", new EventHandler(mi_Click));
|
||||
#endregion
|
||||
//_MyLog.WarnFormat("Context Menu 7 - {0}", GC.GetTotalMemory(true));
|
||||
|
||||
if (fi != null && fi.HasWorkingDraft)
|
||||
@@ -2352,6 +2357,10 @@ namespace Volian.Controls.Library
|
||||
case "Print All Approved Procedures": //C2025-017 print all approved procedures
|
||||
OnPrintAllApprovedProcedures(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0));
|
||||
break;
|
||||
//C2021-035 Add Refresh Tree Option at highest level
|
||||
case "Refresh Tree":
|
||||
RefreshTree();
|
||||
break;
|
||||
default:
|
||||
if (mi.Text.StartsWith("Showing Change Bars Starting"))
|
||||
OnSelectDateToStartChangeBars(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0));
|
||||
@@ -3926,6 +3935,13 @@ namespace Volian.Controls.Library
|
||||
if (Processing != null)
|
||||
Processing(this, new vlnTreeStatusEventArgs(status, message));
|
||||
}
|
||||
//C2021-035 Add Refresh Tree Option at highest level
|
||||
public event vlnTreeViewStatusEvent RefreshFormats;
|
||||
private void OnRefreshFormats(bool status, string message)
|
||||
{
|
||||
if (RefreshFormats != null)
|
||||
RefreshFormats(this, new vlnTreeStatusEventArgs(status, message));
|
||||
}
|
||||
#endregion
|
||||
#region SetLastValuesAndSaveIfChangedStuff
|
||||
private void SetLastValues(VETreeNode node)
|
||||
@@ -4648,6 +4664,36 @@ namespace Volian.Controls.Library
|
||||
if (myFolder.FolderID == ((FolderInfo)obj2).FolderID) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
//C2021-035 Add Refresh Tree Option at highest level
|
||||
public void RefreshTree()
|
||||
{
|
||||
//reload the base node
|
||||
VETreeNode tbase = (VETreeNode) Nodes[0];
|
||||
tbase.ChildrenLoaded = false;
|
||||
|
||||
//Refresh the formats
|
||||
OnRefreshFormats(true, "Refreshing Formats");
|
||||
|
||||
//reset the procedure lists so db is re-queried in case they changed
|
||||
//also clear other caches in case added steps / sections / etc...
|
||||
PartInfo.ClearPartInfoCache();
|
||||
ItemInfo.ClearItemInfoCache();
|
||||
DocVersionInfo.ResetAllProcedures();
|
||||
FolderInfo.ClearFolderInfoCache();
|
||||
|
||||
//Refresh the base VEPROMS object
|
||||
var fldr = tbase.VEObject as FolderInfo;
|
||||
if (fldr != null)
|
||||
{
|
||||
Invoke((Action)(() => { tbase.VEObject = FolderInfo.Get(fldr.FolderID); }));
|
||||
}
|
||||
|
||||
//refresh the tree
|
||||
Invoke((Action)(() => { tbase.RefreshNode(); }));
|
||||
this.Invoke((Action)(() => { this.Update(); }));
|
||||
}
|
||||
|
||||
}
|
||||
#region DragHelper
|
||||
public class DragHelper
|
||||
|
||||
@@ -1855,7 +1855,10 @@ namespace Volian.Print.Library
|
||||
if (doSectionContinue) DoTopContinueMsg(cb, ref yPageStart, yTopMargin, docstyle, null);
|
||||
// If "ContinueSectionHeader" (format flag) is true then print the section title with "(Continued)" appended to it
|
||||
// B2020-164 added check for SpecialCaseCalvert to bypass IsSeparateSubsection STP O-67B-2 step 6.5
|
||||
if ((!MyItemInfo.IsSection || MyItemInfo.IsSubsection) &&
|
||||
// B2025-060 no section continue message if previous was not in same section or sub-section
|
||||
// fixes Vogtle units 3&4 3-AOP-116 Attachments 2 & 3
|
||||
if ((!MyItemInfo.IsSection || MyItemInfo.IsSubsection) &&
|
||||
(MyItemInfo.MyPrevious != null && MyItemInfo.ActiveSection == MyItemInfo.MyPrevious.ActiveSection) &&
|
||||
MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.ContinueSectionHeader &&
|
||||
(!MyItemInfo.IsSection || (MyItemInfo.IsSeparateSubsection || MyItemInfo.ActiveFormat.PlantFormat.FormatData.PrintData.SpecialCaseCalvert)))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user