B2026-091 RO Editor - Change Default Prefix to take existing prefixes into account for Setpoint/Graphics DBs
This commit is contained in:
1 parent
cb5bb715cf
commit
87e163af15
3 files changed
+179
-147
No files matched your search
@@ -127,12 +127,13 @@ namespace ROEditor
|
|||||||
private string origPrefix;
|
private string origPrefix;
|
||||||
private string origValue;
|
private string origValue;
|
||||||
private int dbtype;
|
private int dbtype;
|
||||||
|
private bool IsNewGroup = false;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Required designer variable.
|
/// Required designer variable.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private System.ComponentModel.Container components = null;
|
private System.ComponentModel.Container components = null;
|
||||||
|
|
||||||
public GroupDefFrm(VlnXmlElement pelem, RODB rodb, string gpname,int idbtype)
|
public GroupDefFrm(VlnXmlElement pelem, RODB rodb, string gpname,int idbtype, bool newgrp = false)
|
||||||
{
|
{
|
||||||
myrodb = rodb;
|
myrodb = rodb;
|
||||||
elem = pelem;
|
elem = pelem;
|
||||||
@@ -143,7 +144,8 @@ namespace ROEditor
|
|||||||
//
|
//
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
FillInData();
|
FillInData();
|
||||||
}
|
IsNewGroup = newgrp;
|
||||||
|
}
|
||||||
|
|
||||||
private string CvtUserFldToFld(string fldname)
|
private string CvtUserFldToFld(string fldname)
|
||||||
{
|
{
|
||||||
@@ -655,10 +657,11 @@ namespace ROEditor
|
|||||||
tmpn.FirstChild.Value = tmpstr2; //tmpn.FirstChild.Value.Replace(CvtUserFldToFld(origGroup), this.tbGroup.Text);
|
tmpn.FirstChild.Value = tmpstr2; //tmpn.FirstChild.Value.Replace(CvtUserFldToFld(origGroup), this.tbGroup.Text);
|
||||||
modified=true;
|
modified=true;
|
||||||
}
|
}
|
||||||
if ((elem.HasAttribute("AccPageIDPrefix")&&this.tbPrefix.Text != origPrefix) || this.tbPrefix.Modified==true)
|
if ((elem.HasAttribute("AccPageIDPrefix")&&(tbPrefix.Text != origPrefix || IsNewGroup)) || tbPrefix.Modified)
|
||||||
{
|
{
|
||||||
elem.SetAttribute("AccPageIDPrefix",this.tbPrefix.Text);
|
elem.SetAttribute("AccPageIDPrefix",this.tbPrefix.Text);
|
||||||
modified=true;
|
modified=true;
|
||||||
|
IsNewGroup = false;
|
||||||
|
|
||||||
if (myrodb.IsDuplicateAccPagePrefix(elem, tbPrefix.Text))
|
if (myrodb.IsDuplicateAccPagePrefix(elem, tbPrefix.Text))
|
||||||
{
|
{
|
||||||
@@ -666,7 +669,8 @@ namespace ROEditor
|
|||||||
elem.SetAttribute("AccPageIDPrefix", origPrefix);
|
elem.SetAttribute("AccPageIDPrefix", origPrefix);
|
||||||
modified = false;
|
modified = false;
|
||||||
MessageBox.Show($"The Prefix field used for the \"Accessory Pages Access\" values should be unique. The fields used in these values can be found under \"Properties\" of an RO Group. If these are not unique, you may have trouble utilizing these ROs within Word Sections in PROMS. Cannot save.", "Problem saving data");
|
MessageBox.Show($"The Prefix field used for the \"Accessory Pages Access\" values should be unique. The fields used in these values can be found under \"Properties\" of an RO Group. If these are not unique, you may have trouble utilizing these ROs within Word Sections in PROMS. Cannot save.", "Problem saving data");
|
||||||
return;
|
DialogResult = DialogResult.Cancel;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bool success=true;
|
bool success=true;
|
||||||
|
|||||||
@@ -44,9 +44,7 @@
|
|||||||
*********************************************************************************************/
|
*********************************************************************************************/
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Drawing;
|
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.ComponentModel;
|
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
@@ -282,148 +280,176 @@ namespace ROEditor
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void btnContinue_Click(object sender, System.EventArgs e)
|
private void btnContinue_Click(object sender, System.EventArgs e)
|
||||||
{
|
{
|
||||||
bool success;
|
bool success;
|
||||||
if (this.tbGroup.Text == null || this.tbGroup.Text == "")
|
if (this.tbGroup.Text == null || this.tbGroup.Text == "")
|
||||||
{
|
{
|
||||||
MessageBox.Show("Need to specify group name.");
|
MessageBox.Show("Need to specify group name.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// if this was already saved, i.e. user hit continue button already,
|
// if this was already saved, i.e. user hit continue button already,
|
||||||
// just return;
|
// just return;
|
||||||
if (this.tbGroup.Text == lastSavedGroup)
|
if (this.tbGroup.Text == lastSavedGroup)
|
||||||
{
|
{
|
||||||
this.Close();
|
this.Close();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
lastSavedGroup = this.tbGroup.Text;
|
lastSavedGroup = this.tbGroup.Text;
|
||||||
int dbtype=-1;
|
int dbtype = -1;
|
||||||
if (this.rbbtnGraphics.Checked == true) dbtype = 1;
|
if (this.rbbtnGraphics.Checked == true) dbtype = 1;
|
||||||
else if (this.rbbtnSetpoint.Checked == true) dbtype = 2;
|
else if (this.rbbtnSetpoint.Checked == true) dbtype = 2;
|
||||||
else if (this.rbbtnUserDef.Checked == true) dbtype = 3;
|
else if (this.rbbtnUserDef.Checked == true) dbtype = 3;
|
||||||
if (dbtype<0)
|
if (dbtype < 0)
|
||||||
{
|
{
|
||||||
MessageBox.Show("Need to define type of group.");
|
MessageBox.Show("Need to define type of group.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Cursor.Current = Cursors.WaitCursor;
|
Cursor.Current = Cursors.WaitCursor;
|
||||||
// make a new table with the next table name id
|
// make a new table with the next table name id
|
||||||
tbname = myrodb.RODB_GetNextGroupTable();
|
tbname = myrodb.RODB_GetNextGroupTable();
|
||||||
if (tbname == null)
|
if (tbname == null)
|
||||||
{
|
{
|
||||||
Cursor.Current = Cursors.Default;
|
Cursor.Current = Cursors.Default;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
toprecid = myrodb.RODB_AddNewTable(tbname, this.tbGroup.Text);
|
toprecid = myrodb.RODB_AddNewTable(tbname, this.tbGroup.Text);
|
||||||
if (toprecid == null)
|
if (toprecid == null)
|
||||||
{
|
{
|
||||||
Cursor.Current = Cursors.Default;
|
Cursor.Current = Cursors.Default;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// for the given type, copy over the required fields.
|
// for the given type, copy over the required fields.
|
||||||
success = myrodb.RODB_CopyFieldDefs("ROMaster",tbname,dbtype);
|
success = myrodb.RODB_CopyFieldDefs("ROMaster", tbname, dbtype);
|
||||||
if (success == false)
|
if (success == false)
|
||||||
{
|
{
|
||||||
Cursor.Current = Cursors.Default;
|
Cursor.Current = Cursors.Default;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// create top level group node with input name.
|
// create top level group node with input name.
|
||||||
nelem = (VlnXmlElement) elem.OwnerDocument.CreateElement("vlnGroup");
|
nelem = (VlnXmlElement)elem.OwnerDocument.CreateElement("vlnGroup");
|
||||||
nelem.InnerText = CvtUserFldToFld(this.tbGroup.Text);
|
nelem.InnerText = CvtUserFldToFld(this.tbGroup.Text);
|
||||||
nelem.SetAttribute("Table",tbname);
|
nelem.SetAttribute("Table", tbname);
|
||||||
nelem.SetAttribute("ParentID", "00000000");
|
nelem.SetAttribute("ParentID", "00000000");
|
||||||
string nrecid = myrodb.RODB_GetNextRecId(tbname);
|
string nrecid = myrodb.RODB_GetNextRecId(tbname);
|
||||||
nelem.SetAttribute("RecID", nrecid);
|
nelem.SetAttribute("RecID", nrecid);
|
||||||
elem.AppendChild((XmlNode) nelem);
|
elem.AppendChild((XmlNode)nelem);
|
||||||
success = myrodb.RODB_InsertGroup(nelem);
|
success = myrodb.RODB_InsertGroup(nelem);
|
||||||
Cursor.Current = Cursors.Default;
|
Cursor.Current = Cursors.Default;
|
||||||
if (success == false) return;
|
if (success == false) return;
|
||||||
nelem.SetAttribute("TreeNotData", "True");
|
nelem.SetAttribute("TreeNotData", "True");
|
||||||
nelem.SetAttribute("MenuTitle", this.tbGroup.Text);
|
nelem.SetAttribute("MenuTitle", this.tbGroup.Text);
|
||||||
nelem.SetAttribute("MasterRecID",toprecid);
|
nelem.SetAttribute("MasterRecID", toprecid);
|
||||||
nelem.SetAttribute("HasChild", "False");
|
nelem.SetAttribute("HasChild", "False");
|
||||||
|
|
||||||
// if this is a setpoint db or image db, get fields and find those fields needed
|
// if this is a setpoint db or image db, get fields and find those fields needed
|
||||||
// to define ro & group. This is hardcoded, yuk.
|
// to define ro & group. This is hardcoded, yuk.
|
||||||
if(dbtype == 1 || dbtype == 2)
|
if (dbtype == 1 || dbtype == 2)
|
||||||
{
|
{
|
||||||
ArrayList FieldList = myrodb.RODB_GetFields(nelem, (uint) RecordType.Schema);
|
ArrayList FieldList = myrodb.RODB_GetFields(nelem, (uint)RecordType.Schema);
|
||||||
string[] fldlist=null, grplist=null;
|
string[] fldlist = null, grplist = null;
|
||||||
ROField rof;
|
ROField rof;
|
||||||
string curfld;
|
string curfld;
|
||||||
StringBuilder Inuse = new StringBuilder();
|
StringBuilder Inuse = new StringBuilder();
|
||||||
// Get list of inuse fields for the rro.
|
// Get list of inuse fields for the rro.
|
||||||
if (dbtype == 1)
|
if (dbtype == 1)
|
||||||
fldlist = new string[] {"Name", "Image ID", "Image"};
|
fldlist = new string[] { "Name", "Image ID", "Image" };
|
||||||
else
|
else
|
||||||
fldlist = new string[] {"Setpoint ID", "Setpoint Value", "Associated System Component", "Applicability", "Revision", "Short Description",
|
fldlist = new string[] {"Setpoint ID", "Setpoint Value", "Associated System Component", "Applicability", "Revision", "Short Description",
|
||||||
"Description", "Key Assumptions", "Basis", "References"};
|
"Description", "Key Assumptions", "Basis", "References"};
|
||||||
for (int i=0; i< fldlist.Length; i++)
|
for (int i = 0; i < fldlist.Length; i++)
|
||||||
{
|
{
|
||||||
curfld = fldlist[i];
|
curfld = fldlist[i];
|
||||||
for (int j=0; j<FieldList.Count; j++)
|
for (int j = 0; j < FieldList.Count; j++)
|
||||||
{
|
{
|
||||||
rof = (ROField) FieldList[j];
|
rof = (ROField)FieldList[j];
|
||||||
if (rof.GetFieldname == curfld)
|
if (rof.GetFieldname == curfld)
|
||||||
{
|
{
|
||||||
if (i==fldlist.Length-1) // last one don't add ' '
|
if (i == fldlist.Length - 1) // last one don't add ' '
|
||||||
Inuse.Append(rof.GetRecID);
|
Inuse.Append(rof.GetRecID);
|
||||||
else
|
else
|
||||||
Inuse.Append(rof.GetRecID+" ");
|
Inuse.Append(rof.GetRecID + " ");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
nelem.SetAttribute("FieldsInUse", Inuse.ToString());
|
nelem.SetAttribute("FieldsInUse", Inuse.ToString());
|
||||||
|
|
||||||
// Get list of group inuse fields.
|
// Get list of group inuse fields.
|
||||||
Inuse.Remove(0,Inuse.Length);
|
Inuse.Remove(0, Inuse.Length);
|
||||||
if (dbtype == 1)
|
if (dbtype == 1)
|
||||||
grplist = new string[] {"Group"};
|
grplist = new string[] { "Group" };
|
||||||
else
|
else
|
||||||
grplist = new string[] {"Parameter"};
|
grplist = new string[] { "Parameter" };
|
||||||
for (int i=0; i< grplist.Length; i++)
|
for (int i = 0; i < grplist.Length; i++)
|
||||||
{
|
{
|
||||||
curfld = grplist[i];
|
curfld = grplist[i];
|
||||||
for (int j=0; j<FieldList.Count; j++)
|
for (int j = 0; j < FieldList.Count; j++)
|
||||||
{
|
{
|
||||||
rof = (ROField) FieldList[j];
|
rof = (ROField)FieldList[j];
|
||||||
if (rof.GetFieldname == curfld)
|
if (rof.GetFieldname == curfld)
|
||||||
{
|
{
|
||||||
if (i == grplist.Length-1) // last, don't add ' '
|
if (i == grplist.Length - 1) // last, don't add ' '
|
||||||
Inuse.Append(rof.GetRecID);
|
Inuse.Append(rof.GetRecID);
|
||||||
else
|
else
|
||||||
Inuse.Append(rof.GetRecID+" ");
|
Inuse.Append(rof.GetRecID + " ");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
nelem.SetAttribute("GroupFieldsInUse", Inuse.ToString());
|
nelem.SetAttribute("GroupFieldsInUse", Inuse.ToString());
|
||||||
if (dbtype == 2) // Setpoint
|
string defaultPfix = "UD";
|
||||||
{
|
if (dbtype == 2) // Setpoint
|
||||||
nelem.SetAttribute("RetVal","<Setpoint__Value>");
|
{
|
||||||
nelem.SetAttribute("MenuItem","<Setpoint__Value,5,17> <Short__Description>");
|
nelem.SetAttribute("RetVal", "<Setpoint__Value>");
|
||||||
nelem.SetAttribute("GroupMenuItem","<Parameter>");
|
nelem.SetAttribute("MenuItem", "<Setpoint__Value,5,17> <Short__Description>");
|
||||||
nelem.SetAttribute("AccPageIDPrefix","SP2");
|
nelem.SetAttribute("GroupMenuItem", "<Parameter>");
|
||||||
nelem.SetAttribute("AccPageID","<Setpoint__ID>");
|
defaultPfix = "SP";
|
||||||
}
|
nelem.SetAttribute("AccPageIDPrefix", "SP2");
|
||||||
else if (dbtype == 1) // image
|
nelem.SetAttribute("AccPageID", "<Setpoint__ID>");
|
||||||
{
|
}
|
||||||
nelem.SetAttribute("RetVal","<Image>");
|
else if (dbtype == 1) // image
|
||||||
nelem.SetAttribute("MenuItem","<Name>");
|
{
|
||||||
nelem.SetAttribute("GroupMenuItem","<Group>");
|
nelem.SetAttribute("RetVal", "<Image>");
|
||||||
nelem.SetAttribute("AccPageIDPrefix","IG2");
|
nelem.SetAttribute("MenuItem", "<Name>");
|
||||||
nelem.SetAttribute("AccPageID","<Image__ID>");
|
nelem.SetAttribute("GroupMenuItem", "<Group>");
|
||||||
}
|
defaultPfix = "IG";
|
||||||
success = myrodb.RODB_WriteRO(nelem);
|
nelem.SetAttribute("AccPageIDPrefix", "IG2");
|
||||||
if (success == false) return;
|
nelem.SetAttribute("AccPageID", "<Image__ID>");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//B2026-091 RO Editor - Change Default Prefix to take existing prefixes into account for Setpoint/Graphics DBs
|
||||||
|
//if duplicate prefix - then change it so it will be unique
|
||||||
|
int x = 2;
|
||||||
|
while (nelem.HasAttribute("AccPageIDPrefix") && myrodb.IsDuplicateAccPagePrefix(nelem, nelem.GetAttribute("AccPageIDPrefix")))
|
||||||
|
{
|
||||||
|
nelem.SetAttribute("AccPageIDPrefix", $"{defaultPfix}{x}");
|
||||||
|
x++;
|
||||||
|
}
|
||||||
|
success = myrodb.RODB_WriteRO(nelem);
|
||||||
|
if (success == false) return;
|
||||||
|
}
|
||||||
|
|
||||||
// now let the user specify the group name, etc to define the group.
|
// now let the user specify the group name, etc to define the group.
|
||||||
GroupDefFrm grdef = new GroupDefFrm(nelem,myrodb,nelem.InnerText,dbtype);
|
DialogResult dlgrslt = DialogResult.OK;
|
||||||
grdef.ShowDialog();
|
using (GroupDefFrm grdef = new GroupDefFrm(nelem, myrodb, nelem.InnerText, dbtype, true))
|
||||||
}
|
{
|
||||||
private void txtBox_KeyDown(object sender, KeyEventArgs e)
|
dlgrslt = grdef.ShowDialog();
|
||||||
|
}
|
||||||
|
|
||||||
|
//If New Group and prefix would not be unique, remove the group
|
||||||
|
//needed because groups get autoadded with defaults
|
||||||
|
//before user has a chance to enter things like Acc Page Prefix
|
||||||
|
if (dlgrslt == DialogResult.Cancel)
|
||||||
|
{
|
||||||
|
XmlNode pn = nelem.ParentNode;
|
||||||
|
XmlNode nd = (XmlNode)nelem;
|
||||||
|
myrodb.RODB_DeleteGroup(nd, null, null);
|
||||||
|
pn.RemoveChild(nelem);
|
||||||
|
DialogResult = DialogResult.Cancel;
|
||||||
|
Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void txtBox_KeyDown(object sender, KeyEventArgs e)
|
||||||
{
|
{
|
||||||
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
|
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2117,7 +2117,9 @@ namespace RODBInterface
|
|||||||
|
|
||||||
if (retele != null && tbl != ro.GetAttribute("Table") && retele.GetAttribute("AccPageIDPrefix").ToLower() == pfix.ToLower())
|
if (retele != null && tbl != ro.GetAttribute("Table") && retele.GetAttribute("AccPageIDPrefix").ToLower() == pfix.ToLower())
|
||||||
{
|
{
|
||||||
return true; //another table contains the prefix - return true
|
DBE.CommandDispose();
|
||||||
|
DBE.ReaderClose();
|
||||||
|
return true; //another table contains the prefix - return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user