C2019-025_Ability-to-Toggle-Replace-Words

This commit is contained in:
2025-01-24 10:12:43 -05:00
parent 37626d8f45
commit 71130bd26b
24 changed files with 1598 additions and 887 deletions

View File

@@ -0,0 +1,117 @@
# Rules in this file were initially inferred by Visual Studio IntelliCode from the C:\Git\Production\Repos\SourceCode\PROMS\VEPROMS.CSLA.Library\ codebase based on best match to current usage at 1/21/2025
# You can modify the rules from these initially generated values to suit your own policies
# You can learn more about editorconfig here: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference
[*.cs]
#Core editorconfig formatting - indentation
#use hard tabs for indentation
indent_style = tab
#Formatting - new line options
#place catch statements on a new line
csharp_new_line_before_catch = true
#place else statements on a new line
csharp_new_line_before_else = true
#require finally statements to be on a new line after the closing brace
csharp_new_line_before_finally = true
#require braces to be on a new line for properties, methods, control_blocks, and types (also known as "Allman" style)
csharp_new_line_before_open_brace = properties, methods, control_blocks, types
#Formatting - organize using options
#do not place System.* using directives before other using directives
dotnet_sort_system_directives_first = false
#Formatting - spacing options
#require NO space between a cast and the value
csharp_space_after_cast = false
#require a space before the colon for bases or interfaces in a type declaration
csharp_space_after_colon_in_inheritance_clause = true
#require a space after a keyword in a control flow statement such as a for loop
csharp_space_after_keywords_in_control_flow_statements = true
#require a space before the colon for bases or interfaces in a type declaration
csharp_space_before_colon_in_inheritance_clause = true
#remove space within empty argument list parentheses
csharp_space_between_method_call_empty_parameter_list_parentheses = false
#remove space between method call name and opening parenthesis
csharp_space_between_method_call_name_and_opening_parenthesis = false
#do not place space characters after the opening parenthesis and before the closing parenthesis of a method call
csharp_space_between_method_call_parameter_list_parentheses = false
#remove space within empty parameter list parentheses for a method declaration
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
#place a space character after the opening parenthesis and before the closing parenthesis of a method declaration parameter list.
csharp_space_between_method_declaration_parameter_list_parentheses = false
#Formatting - wrapping options
#leave code block on separate lines
csharp_preserve_single_line_blocks = false
#leave statements and member declarations on the same line
csharp_preserve_single_line_statements = true
#Style - Code block preferences
#prefer no curly braces if allowed
csharp_prefer_braces = false:suggestion
#Style - expression bodied member options
#prefer block bodies for accessors
csharp_style_expression_bodied_accessors = false:suggestion
#prefer block bodies for constructors
csharp_style_expression_bodied_constructors = false:suggestion
#prefer block bodies for methods
csharp_style_expression_bodied_methods = false:suggestion
#prefer block bodies for properties
csharp_style_expression_bodied_properties = false:suggestion
#Style - expression level options
#prefer out variables to be declared before the method call
csharp_style_inlined_variable_declaration = false:suggestion
#prefer the language keyword for member access expressions, instead of the type name, for types that have a keyword to represent them
dotnet_style_predefined_type_for_member_access = true:suggestion
#Style - Expression-level preferences
#prefer objects to not be initialized using object initializers
dotnet_style_object_initializer = false:suggestion
#Style - implicit and explicit types
#prefer explicit type over var in all cases, unless overridden by another code style rule
csharp_style_var_elsewhere = false:suggestion
#prefer explicit type over var to declare variables with built-in system types such as int
csharp_style_var_for_built_in_types = false:suggestion
#prefer explicit type over var when the type is already mentioned on the right-hand side of a declaration
csharp_style_var_when_type_is_apparent = false:suggestion
#Style - language keyword and framework type options
#prefer the language keyword for local variables, method parameters, and class members, instead of the type name, for types that have a keyword to represent them
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
#Style - modifier options
#prefer accessibility modifiers to be declared except for public interface members. This will currently not differ from always and will act as future proofing for if C# adds default interface methods.
dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion
#Style - Modifier preferences
#when this rule is set to a list of modifiers, prefer the specified ordering.
csharp_preferred_modifier_order = public,private,internal,protected,static,virtual,override,readonly:suggestion
#Style - qualification options
#prefer events not to be prefaced with this. or Me. in Visual Basic
dotnet_style_qualification_for_event = false:suggestion
#prefer fields not to be prefaced with this. or Me. in Visual Basic
dotnet_style_qualification_for_field = false:suggestion
#prefer methods not to be prefaced with this. or Me. in Visual Basic
dotnet_style_qualification_for_method = false:suggestion
#prefer properties not to be prefaced with this. or Me. in Visual Basic
dotnet_style_qualification_for_property = false:suggestion

View File

@@ -517,6 +517,57 @@ namespace VEPROMS.CSLA.Library
}
}
#endregion CheckOff
#region ShwRplWds
[Serializable]
[TypeConverter(typeof(ExpandableObjectConverter))]
public class ShwRplWds
{
private string _MenuItem;
[XmlAttribute("MenuItem")]
[Browsable(false)]
public string MenuItem
{
get { return _MenuItem; }
set { _MenuItem = value; }
}
private string _Index;
[XmlAttribute("Index")]
[Browsable(false)] // Don't show in the property grid
public string Index
{
get { return _Index; }
set { _Index = value; }
}
private bool? _Active;
[DisplayName("Active ShwRplWds")]
[Description("Allow use of this ShwRplWds")]
public bool? Active
{
get { return _Active; }
set { _Active = value; }
}
private bool? _OrigActive;
[XmlIgnore]
[Browsable(false)]
public bool? OrigActive
{
get { return _OrigActive; }
set { _OrigActive = value; }
}
public ShwRplWds()
{
}
public string ConvertToString()
{
return GenericSerializer<ShwRplWds>.StringSerialize(this);
}
public override string ToString()
{
return MenuItem;
}
}
#endregion ShwRplWds
#region StepData (list)
[Serializable]
[TypeConverter(typeof(ExpandableObjectConverter))]

View File

@@ -528,6 +528,24 @@ namespace VEPROMS.CSLA.Library
OnPropertyChanged("Section_OriginalSteps");
}
}
[Browsable(false)]
[DisplayName("Section ShowReplaceWords")]
[RefreshProperties(RefreshProperties.All)]
[Description("Section ShowReplaceWords")]
public string Section_ShwRplWords
{
get
{
//return _Xp["Section", "ShwRplWords"];
string tmp = _Xp["Section", "ShwRplWords"];
return tmp == null || tmp == "" ? "Y" : tmp;
}
set
{
_Xp["Section", "ShwRplWords"] = value;
OnPropertyChanged("Section_ShwRplWords");
}
}
[Category("Section")]
//PROPGRID: Hide Section NumPages
[Browsable(false)]

View File

@@ -493,6 +493,34 @@ namespace VEPROMS.CSLA.Library
OnPropertyChanged("Step_DisableInitialLine");
}
}
//C2019-025 Ability to Toggle Replace Words
public int Step_ShwRplWdsIndex
{
get
{
string s = _Xp["Step", "ShwRplWdsIndex"];
if (s == string.Empty) return 0;
if (s == "0") return 0;
if (s == "1") return 1;
if (s == "2") return 2;
if (s == "3") return 3;
return 0;
}
set
{
string s = _Xp["Step", ""];
if (value.ToString() == s) return;
_Xp["Step", "ShwRplWdsIndex"] = value.ToString();
OnPropertyChanged("Step_ShwRplWdsIndex");
}
}
#region RO image sizing
// if the RO image (figure) is resized, save it in the step config, not in the ROImageConfig. If stored in ROImageConfig
// the size is set for ALL uses.

View File

@@ -6,6 +6,7 @@ using System.Text.RegularExpressions;
using System.Drawing;
using Volian.Base.Library;
using JR.Utils.GUI.Forms;
//using VEPROMS.colorReplaceWords;
// This was moved from volian.controls.library
namespace VEPROMS.CSLA.Library
@@ -46,6 +47,60 @@ namespace VEPROMS.CSLA.Library
return string.Empty;
}
}
private string ShwRplWords(ItemInfo _MyItemInfo)
{
//if (_Initalizing) return "N";
//_MyItemInfo.
SectionConfig sc = _MyItemInfo.MyConfig as SectionConfig;
if (sc == null) return "N";
return sc.Section_ShwRplWords;
}
private bool ShwRplWdsIndex(ItemInfo _MyItemInfo)
{
StepConfig sc = _MyItemInfo.MyConfig as StepConfig;
int setting = sc.Step_ShwRplWdsIndex;
switch (setting)
{
case 3:
return false;
break;
case 2:
return true;
break;
case 1:
case 0:
//SectionConfig sc2 = _MyItemInfo.ActiveParent.MyConfig as SectionConfig;
SectionConfig sc2 = _MyItemInfo.ActiveSection.MyConfig as SectionConfig;
if (sc2 == null || sc2.Section_ShwRplWords == "Y")
{
return true;
}
else
{
return false;
}
break;
default:
return false;
break;
}
//int setting = sc.Step_ShwRplWdsIndex;
//if (setting == 3) return false;
//if (setting == 2) return true;
//if (setting == 1 || setting == 0)
//{
// SectionConfig sc2 = _MyItemInfo.ActiveParent.MyConfig as SectionConfig;
// if (sc2.Section_ShwRplWords == "Y")
// {
// return true;
// }
// else
// {
// return false;
// }
//}
//return false; // if Step_ShwRplWdsIndex = 0
}
private Item _MyItem;
private string EditText
{
@@ -357,9 +412,37 @@ namespace VEPROMS.CSLA.Library
// But don't do ReplaceWords if the TurnOffReplaceWords format flag is set
if (wordsShouldBeReplaced && !_MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.TurnOffReplaceWords)
{
//string stf = _MyItemInfo.SectionConfig.Section_ShwRplWords;
//ItemInfoList stf = _MyItemInfo.MyPrevious.Sections//SectionConfig.Section_ShwRplWords;
//_MyItemInfo.SectionConfig.Section_ShwRplWords;
//string str = _MyItemInfo.MyConfig.Section_ShwRplWords;
//epMode
int profileDepth1 = ProfileTimer.Push(">>>> DoReplaceWords2");
text = DoReplaceWords2(text);
if (_MyItemInfo.IsSection)
{
string ShwRplWrds = ShwRplWords(_MyItemInfo);
if (ShwRplWrds == "Y")
{
text = DoReplaceWords2(text, epMode);
}
}
if (_MyItemInfo.IsStep)
{
bool ShwRplWrds = ShwRplWdsIndex(_MyItemInfo);
if (ShwRplWrds == true)
{
text = DoReplaceWords2(text, epMode);
}
}
if (_MyItemInfo.IsFolder || _MyItemInfo.IsProcedure)
{
text = DoReplaceWords2(text, epMode);
}
ProfileTimer.Pop(profileDepth1);
}
if (_MyItemInfo != null && ROsShouldBeAdjusted) // B2017-019 - added check for ROsShouldBeAdjusted so that these token are not "cooked" on property pages
@@ -2101,7 +2184,7 @@ namespace VEPROMS.CSLA.Library
return (bool) _ProcessReplaceWords;
}
}
private string DoReplaceWords2(string Text)
private string DoReplaceWords2(string Text, E_EditPrintMode epMode)
{
if(!ProcessReplaceWords) return Text;
// F2021-053: BNPP Alarm - need ability to have super/sub scripts in the text of Alarm Tables (ROs).
@@ -2162,6 +2245,12 @@ namespace VEPROMS.CSLA.Library
// CASEINSENS: Do ReplaceWords for all words that match, regardless of case, and replace with the ReplaceWith string as is
//RegexOptions myOptions = (rs.Flag & E_ReplaceFlags.CaseInsens) == E_ReplaceFlags.CaseInsens ? RegexOptions.IgnoreCase & RegexOptions.Singleline : RegexOptions.None & RegexOptions.Singleline;
string replaceWord = Regex.Replace(rs.ReplaceWord, @"[[\]\\()]", @"\$0");
//if (Volian.Controls.Library.Properties.Settings.Default.cbShwRplWrdsColor)
//{
// replaceWord = $@"\cf2{replaceWord}\cf0";
// // with = $@"\cf2{with}\cf0 ";
//}
// if first or last character in replaceword is a non-word character, for example, ',', ')', or '.',
// don't use the \W, i.e. don't bother to look for a non-word character.
string wordMatchBeg = Regex.IsMatch(replaceWord.Substring(0, 1), @"\W") ? "" : @"(?<=\W|^)";
@@ -2188,7 +2277,7 @@ namespace VEPROMS.CSLA.Library
}
//ProfileTimer.Pop(profileDepth);
//int profileDepth5 = ProfileTimer.Push(">>>> DoReplaceWords2.ReplaceMatches");
Text = myMatches.ReplaceMatches();
Text = myMatches.ReplaceMatches(epMode);
//ProfileTimer.Pop(profileDepth5);
Text = Text.Replace(@"\xA0", @"\u160?"); //replace hard space
return Text;
@@ -2480,7 +2569,8 @@ namespace VEPROMS.CSLA.Library
if (str.Length == index && str == text.Substring(0, str.Length)) return true;
return false;
}
public string ReplaceMatches()
public string ReplaceMatches(E_EditPrintMode epMode)
{
int offset = 0;
string text = _Text;
@@ -2572,6 +2662,11 @@ namespace VEPROMS.CSLA.Library
with = with.Replace(@"\ul ", "");
with = with.Replace(@"\ulnone ", "");
}
//if (Properties.Settings.Default.cbShwRplWrdsColor && !(epMode == E_EditPrintMode.Print))
if (Properties.Settings.Default.cbShwRplWrdsColor && !(epMode == E_EditPrintMode.Print))
{
with = $@"\cf2{with}\cf0 ";
}
text = text.Substring(0, offset + foundMatch.MyMatch.Index) + with + text.Substring(offset + foundMatch.MyMatch.Index + foundMatch.MyMatch.Length);
//offset += foundMatch.MyWord.ReplaceWith.Length - foundMatch.MyMatch.Length;

View File

@@ -1654,6 +1654,14 @@ namespace VEPROMS.CSLA.Library
return LazyLoad(ref _ProcAppl, "@ProcAppl");
}
}
//private ShwRplWdsData _ShwRplWdsData;
//public ShwRplWdsData ShwRplWdsData
//{
// get
// {
// return ShwRplWdsData == null ? ShwRplWdsData = new ShwRplWdsData(SelectSingleNode("ShwRplWdsData")) : ShwRplWdsData;
// }
//}
}
#endregion
@@ -2173,6 +2181,72 @@ namespace VEPROMS.CSLA.Library
}
}
}
//#region ShwRplWdsData
//[TypeConverter(typeof(ExpandableObjectConverter))]
//public class ShwRplWdsData : vlnFormatItem
//{
// public ShwRplWdsData(XmlNode xmlNode) : base(xmlNode) { }
// private ShwRplWdsList _ShwRplWdsList = null;
// public ShwRplWdsList ShwRplWdsList
// {
// get
// {
// if (_ShwRplWdsList != null) return _ShwRplWdsList;
// // Get a list of checkoffs that should be included:
// // if !UseCheckOffUCF (Baseall has it as false. User can change setting in UCF to true)
// // if !IgnoreUCF, i.e. use UCF changes, return original lists with only active items (Inactive = false)
// // if IgnoreUCF, return original lists with all items
// // if UseCheckOffUCF is true use the merged lists from current format and baseall.xml and
// // do the same processing for IgnoreUCF described above.
// // UseCheckOffUCF is false or there is no FormatConfig (UCF) data:
// //FormatConfig fc = PlantFormat.GetFormatConfig(MyFormat);
// //if (!MyFormat.PlantFormat.FormatData.ProcData.CheckOffUCF || fc==null)
// //{
// // _ShwRplWdsList = new ShwRplWdsList(SelectNodes("ShwRplWdsList/ShwRplWds"), MyFormat);
// // // B2019-100: If Ignoring the UCF data, just return the entire list. Also, return entire list if there is no UCF data (fc == null)
// // if (PlantFormat.IgnoreUCF || fc == null) return _ShwRplWdsList;
// // // If not ignoring UCF settings, only return those that are active
// // foreach (FormatConfig.ShwRplWds co in fc.PlantFormat.FormatData.ShwRplWdsList)
// // {
// // foreach (CheckOff coo in _ShwRplWdsList)
// // {
// // if ((int)coo.Index == Convert.ToInt32(co.Index) && !(bool)co.Active)
// // {
// // _ShwRplWdsList.Remove(coo);
// // break;
// // }
// // }
// // }
// // return _ShwRplWdsList;
// //}
// // UseCheckOfffUCF is true:
// // merge the checkoff list from the current format and the checkoff list from the base format
// FormatConfig fc = PlantFormat.GetFormatConfig(MyFormat);
// _ShwRplWdsList = new ShwRplWdsList(SelectNodes("ShwRplWdsList/ShwRplWds"), MyFormat);
// ShwRplWdsList retlist2 = new ShwRplWdsList(SelectNodes("../ShwRplWdsList/ShwRplWds"), MyFormat);
// if (retlist2 != null && retlist2.Count > 0) foreach (ShwRplWds co in retlist2) _ShwRplWdsList.Add(co);
// if (PlantFormat.IgnoreUCF) return _ShwRplWdsList;
// // if applying UCF, then remove those that are inactive:
// foreach (FormatConfig.ShwRplWds co in fc.PlantFormat.FormatData.ShwRplWdsList)
// {
// foreach (ShwRplWds coo in _ShwRplWdsList)
// {
// if ((int)coo.Index == Convert.ToInt32(co.Index) && !(bool)co.Active)
// {
// _ShwRplWdsList.Remove(coo);
// break;
// }
// }
// }
// return _ShwRplWdsList;
// }
// }
//}
//#endregion
#endregion
#region CheckOff
[TypeConverter(typeof(ExpandableObjectConverter))]
@@ -2284,6 +2358,48 @@ namespace VEPROMS.CSLA.Library
}
}
#endregion
#region ShwRplWds
public class ShwRplWds : vlnFormatItem, IVlnIndexedFormatItem
{
public ShwRplWds(XmlNode xmlNode) : base(xmlNode) { }
public ShwRplWds() : base() { }
private LazyLoad<int?> _Index;
public int? Index
{
get
{
return LazyLoad(ref _Index, "@Index");
}
}
// User Interface Mark (UIMark) is the deimal number of an ASCII character that is desplayed in the step editor
// to indicate the selected checkoff
private LazyLoad<int?> _UIMark;
public int? UIMark
{
get
{
return LazyLoad(ref _UIMark, "@UIMark");
}
}
//Descriptive text shown in the checkoff selection list
private LazyLoad<string> _MenuItem;
public string MenuItem
{
get
{
return LazyLoad(ref _MenuItem, "@MenuItem");
}
}
public override string ToString()
{
return MenuItem;
}
}
#endregion
#region CheckOffList
[TypeConverter(typeof(vlnIndexedListConverter<CheckOffList, CheckOff>))]
public class CheckOffList : vlnIndexedFormatList<CheckOff>
@@ -2300,6 +2416,20 @@ namespace VEPROMS.CSLA.Library
}
}
}
//public class ShwRplWdsList : vlnIndexedFormatList<ShwRplWds>
//{
// public ShwRplWdsList(XmlNodeList xmlNodeList, IFormatOrFormatInfo myFormat) : base(xmlNodeList, myFormat) { }
// public override vlnIndexedFormatList<ShwRplWds> InheritedList
// {
// get
// {
// IFormatOrFormatInfo parentFormat = MyFormat.MyIParent;
// if (parentFormat != null)
// return parentFormat.PlantFormat.FormatData.ProcData.ShwRplWds;
// return null;
// }
// }
//}
#endregion
#region CheckOffHeader
[TypeConverter(typeof(ExpandableObjectConverter))]

View File

@@ -103,6 +103,9 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\VEPROMS User Interface\Properties\Settings.Designer.cs">
<Link>Properties\Settings.Designer.cs</Link>
</Compile>
<Compile Include="Config\AnnotationTypeConfig.cs" />
<Compile Include="Config\AssocConfig.cs" />
<Compile Include="Config\ColorConfig.cs" />
@@ -386,6 +389,7 @@
<Compile Include="VEObjects\VETreeNode.cs" />
</ItemGroup>
<ItemGroup>
<None Include=".editorconfig" />
<None Include="ClassDiagram1.cd" />
</ItemGroup>
<ItemGroup>
@@ -419,6 +423,7 @@
<DependentUpon>frmRofstLoadStatus.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.