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
@@ -44,9 +44,7 @@
|
||||
*********************************************************************************************/
|
||||
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Collections;
|
||||
using System.ComponentModel;
|
||||
using System.Windows.Forms;
|
||||
using System.Xml;
|
||||
using System.Text;
|
||||
@@ -282,148 +280,176 @@ namespace ROEditor
|
||||
}
|
||||
|
||||
private void btnContinue_Click(object sender, System.EventArgs e)
|
||||
{
|
||||
bool success;
|
||||
if (this.tbGroup.Text == null || this.tbGroup.Text == "")
|
||||
{
|
||||
MessageBox.Show("Need to specify group name.");
|
||||
return;
|
||||
}
|
||||
// if this was already saved, i.e. user hit continue button already,
|
||||
// just return;
|
||||
if (this.tbGroup.Text == lastSavedGroup)
|
||||
{
|
||||
this.Close();
|
||||
return;
|
||||
}
|
||||
lastSavedGroup = this.tbGroup.Text;
|
||||
int dbtype=-1;
|
||||
if (this.rbbtnGraphics.Checked == true) dbtype = 1;
|
||||
else if (this.rbbtnSetpoint.Checked == true) dbtype = 2;
|
||||
else if (this.rbbtnUserDef.Checked == true) dbtype = 3;
|
||||
if (dbtype<0)
|
||||
{
|
||||
MessageBox.Show("Need to define type of group.");
|
||||
return;
|
||||
}
|
||||
Cursor.Current = Cursors.WaitCursor;
|
||||
// make a new table with the next table name id
|
||||
tbname = myrodb.RODB_GetNextGroupTable();
|
||||
if (tbname == null)
|
||||
{
|
||||
Cursor.Current = Cursors.Default;
|
||||
return;
|
||||
}
|
||||
toprecid = myrodb.RODB_AddNewTable(tbname, this.tbGroup.Text);
|
||||
if (toprecid == null)
|
||||
{
|
||||
Cursor.Current = Cursors.Default;
|
||||
return;
|
||||
}
|
||||
// for the given type, copy over the required fields.
|
||||
success = myrodb.RODB_CopyFieldDefs("ROMaster",tbname,dbtype);
|
||||
if (success == false)
|
||||
{
|
||||
Cursor.Current = Cursors.Default;
|
||||
return;
|
||||
}
|
||||
// create top level group node with input name.
|
||||
nelem = (VlnXmlElement) elem.OwnerDocument.CreateElement("vlnGroup");
|
||||
nelem.InnerText = CvtUserFldToFld(this.tbGroup.Text);
|
||||
nelem.SetAttribute("Table",tbname);
|
||||
nelem.SetAttribute("ParentID", "00000000");
|
||||
string nrecid = myrodb.RODB_GetNextRecId(tbname);
|
||||
nelem.SetAttribute("RecID", nrecid);
|
||||
elem.AppendChild((XmlNode) nelem);
|
||||
success = myrodb.RODB_InsertGroup(nelem);
|
||||
Cursor.Current = Cursors.Default;
|
||||
if (success == false) return;
|
||||
nelem.SetAttribute("TreeNotData", "True");
|
||||
nelem.SetAttribute("MenuTitle", this.tbGroup.Text);
|
||||
nelem.SetAttribute("MasterRecID",toprecid);
|
||||
nelem.SetAttribute("HasChild", "False");
|
||||
|
||||
// if this is a setpoint db or image db, get fields and find those fields needed
|
||||
// to define ro & group. This is hardcoded, yuk.
|
||||
if(dbtype == 1 || dbtype == 2)
|
||||
{
|
||||
ArrayList FieldList = myrodb.RODB_GetFields(nelem, (uint) RecordType.Schema);
|
||||
string[] fldlist=null, grplist=null;
|
||||
ROField rof;
|
||||
string curfld;
|
||||
StringBuilder Inuse = new StringBuilder();
|
||||
// Get list of inuse fields for the rro.
|
||||
if (dbtype == 1)
|
||||
fldlist = new string[] {"Name", "Image ID", "Image"};
|
||||
else
|
||||
fldlist = new string[] {"Setpoint ID", "Setpoint Value", "Associated System Component", "Applicability", "Revision", "Short Description",
|
||||
"Description", "Key Assumptions", "Basis", "References"};
|
||||
for (int i=0; i< fldlist.Length; i++)
|
||||
{
|
||||
curfld = fldlist[i];
|
||||
for (int j=0; j<FieldList.Count; j++)
|
||||
{
|
||||
rof = (ROField) FieldList[j];
|
||||
if (rof.GetFieldname == curfld)
|
||||
{
|
||||
if (i==fldlist.Length-1) // last one don't add ' '
|
||||
Inuse.Append(rof.GetRecID);
|
||||
else
|
||||
Inuse.Append(rof.GetRecID+" ");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
nelem.SetAttribute("FieldsInUse", Inuse.ToString());
|
||||
|
||||
// Get list of group inuse fields.
|
||||
Inuse.Remove(0,Inuse.Length);
|
||||
if (dbtype == 1)
|
||||
grplist = new string[] {"Group"};
|
||||
else
|
||||
grplist = new string[] {"Parameter"};
|
||||
for (int i=0; i< grplist.Length; i++)
|
||||
{
|
||||
curfld = grplist[i];
|
||||
for (int j=0; j<FieldList.Count; j++)
|
||||
{
|
||||
rof = (ROField) FieldList[j];
|
||||
if (rof.GetFieldname == curfld)
|
||||
{
|
||||
if (i == grplist.Length-1) // last, don't add ' '
|
||||
Inuse.Append(rof.GetRecID);
|
||||
else
|
||||
Inuse.Append(rof.GetRecID+" ");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
nelem.SetAttribute("GroupFieldsInUse", Inuse.ToString());
|
||||
if (dbtype == 2) // Setpoint
|
||||
{
|
||||
nelem.SetAttribute("RetVal","<Setpoint__Value>");
|
||||
nelem.SetAttribute("MenuItem","<Setpoint__Value,5,17> <Short__Description>");
|
||||
nelem.SetAttribute("GroupMenuItem","<Parameter>");
|
||||
nelem.SetAttribute("AccPageIDPrefix","SP2");
|
||||
nelem.SetAttribute("AccPageID","<Setpoint__ID>");
|
||||
}
|
||||
else if (dbtype == 1) // image
|
||||
{
|
||||
nelem.SetAttribute("RetVal","<Image>");
|
||||
nelem.SetAttribute("MenuItem","<Name>");
|
||||
nelem.SetAttribute("GroupMenuItem","<Group>");
|
||||
nelem.SetAttribute("AccPageIDPrefix","IG2");
|
||||
nelem.SetAttribute("AccPageID","<Image__ID>");
|
||||
}
|
||||
success = myrodb.RODB_WriteRO(nelem);
|
||||
if (success == false) return;
|
||||
}
|
||||
{
|
||||
bool success;
|
||||
if (this.tbGroup.Text == null || this.tbGroup.Text == "")
|
||||
{
|
||||
MessageBox.Show("Need to specify group name.");
|
||||
return;
|
||||
}
|
||||
// if this was already saved, i.e. user hit continue button already,
|
||||
// just return;
|
||||
if (this.tbGroup.Text == lastSavedGroup)
|
||||
{
|
||||
this.Close();
|
||||
return;
|
||||
}
|
||||
lastSavedGroup = this.tbGroup.Text;
|
||||
int dbtype = -1;
|
||||
if (this.rbbtnGraphics.Checked == true) dbtype = 1;
|
||||
else if (this.rbbtnSetpoint.Checked == true) dbtype = 2;
|
||||
else if (this.rbbtnUserDef.Checked == true) dbtype = 3;
|
||||
if (dbtype < 0)
|
||||
{
|
||||
MessageBox.Show("Need to define type of group.");
|
||||
return;
|
||||
}
|
||||
Cursor.Current = Cursors.WaitCursor;
|
||||
// make a new table with the next table name id
|
||||
tbname = myrodb.RODB_GetNextGroupTable();
|
||||
if (tbname == null)
|
||||
{
|
||||
Cursor.Current = Cursors.Default;
|
||||
return;
|
||||
}
|
||||
toprecid = myrodb.RODB_AddNewTable(tbname, this.tbGroup.Text);
|
||||
if (toprecid == null)
|
||||
{
|
||||
Cursor.Current = Cursors.Default;
|
||||
return;
|
||||
}
|
||||
// for the given type, copy over the required fields.
|
||||
success = myrodb.RODB_CopyFieldDefs("ROMaster", tbname, dbtype);
|
||||
if (success == false)
|
||||
{
|
||||
Cursor.Current = Cursors.Default;
|
||||
return;
|
||||
}
|
||||
// create top level group node with input name.
|
||||
nelem = (VlnXmlElement)elem.OwnerDocument.CreateElement("vlnGroup");
|
||||
nelem.InnerText = CvtUserFldToFld(this.tbGroup.Text);
|
||||
nelem.SetAttribute("Table", tbname);
|
||||
nelem.SetAttribute("ParentID", "00000000");
|
||||
string nrecid = myrodb.RODB_GetNextRecId(tbname);
|
||||
nelem.SetAttribute("RecID", nrecid);
|
||||
elem.AppendChild((XmlNode)nelem);
|
||||
success = myrodb.RODB_InsertGroup(nelem);
|
||||
Cursor.Current = Cursors.Default;
|
||||
if (success == false) return;
|
||||
nelem.SetAttribute("TreeNotData", "True");
|
||||
nelem.SetAttribute("MenuTitle", this.tbGroup.Text);
|
||||
nelem.SetAttribute("MasterRecID", toprecid);
|
||||
nelem.SetAttribute("HasChild", "False");
|
||||
|
||||
// if this is a setpoint db or image db, get fields and find those fields needed
|
||||
// to define ro & group. This is hardcoded, yuk.
|
||||
if (dbtype == 1 || dbtype == 2)
|
||||
{
|
||||
ArrayList FieldList = myrodb.RODB_GetFields(nelem, (uint)RecordType.Schema);
|
||||
string[] fldlist = null, grplist = null;
|
||||
ROField rof;
|
||||
string curfld;
|
||||
StringBuilder Inuse = new StringBuilder();
|
||||
// Get list of inuse fields for the rro.
|
||||
if (dbtype == 1)
|
||||
fldlist = new string[] { "Name", "Image ID", "Image" };
|
||||
else
|
||||
fldlist = new string[] {"Setpoint ID", "Setpoint Value", "Associated System Component", "Applicability", "Revision", "Short Description",
|
||||
"Description", "Key Assumptions", "Basis", "References"};
|
||||
for (int i = 0; i < fldlist.Length; i++)
|
||||
{
|
||||
curfld = fldlist[i];
|
||||
for (int j = 0; j < FieldList.Count; j++)
|
||||
{
|
||||
rof = (ROField)FieldList[j];
|
||||
if (rof.GetFieldname == curfld)
|
||||
{
|
||||
if (i == fldlist.Length - 1) // last one don't add ' '
|
||||
Inuse.Append(rof.GetRecID);
|
||||
else
|
||||
Inuse.Append(rof.GetRecID + " ");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
nelem.SetAttribute("FieldsInUse", Inuse.ToString());
|
||||
|
||||
// Get list of group inuse fields.
|
||||
Inuse.Remove(0, Inuse.Length);
|
||||
if (dbtype == 1)
|
||||
grplist = new string[] { "Group" };
|
||||
else
|
||||
grplist = new string[] { "Parameter" };
|
||||
for (int i = 0; i < grplist.Length; i++)
|
||||
{
|
||||
curfld = grplist[i];
|
||||
for (int j = 0; j < FieldList.Count; j++)
|
||||
{
|
||||
rof = (ROField)FieldList[j];
|
||||
if (rof.GetFieldname == curfld)
|
||||
{
|
||||
if (i == grplist.Length - 1) // last, don't add ' '
|
||||
Inuse.Append(rof.GetRecID);
|
||||
else
|
||||
Inuse.Append(rof.GetRecID + " ");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
nelem.SetAttribute("GroupFieldsInUse", Inuse.ToString());
|
||||
string defaultPfix = "UD";
|
||||
if (dbtype == 2) // Setpoint
|
||||
{
|
||||
nelem.SetAttribute("RetVal", "<Setpoint__Value>");
|
||||
nelem.SetAttribute("MenuItem", "<Setpoint__Value,5,17> <Short__Description>");
|
||||
nelem.SetAttribute("GroupMenuItem", "<Parameter>");
|
||||
defaultPfix = "SP";
|
||||
nelem.SetAttribute("AccPageIDPrefix", "SP2");
|
||||
nelem.SetAttribute("AccPageID", "<Setpoint__ID>");
|
||||
}
|
||||
else if (dbtype == 1) // image
|
||||
{
|
||||
nelem.SetAttribute("RetVal", "<Image>");
|
||||
nelem.SetAttribute("MenuItem", "<Name>");
|
||||
nelem.SetAttribute("GroupMenuItem", "<Group>");
|
||||
defaultPfix = "IG";
|
||||
nelem.SetAttribute("AccPageIDPrefix", "IG2");
|
||||
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.
|
||||
GroupDefFrm grdef = new GroupDefFrm(nelem,myrodb,nelem.InnerText,dbtype);
|
||||
grdef.ShowDialog();
|
||||
}
|
||||
private void txtBox_KeyDown(object sender, KeyEventArgs e)
|
||||
DialogResult dlgrslt = DialogResult.OK;
|
||||
using (GroupDefFrm grdef = new GroupDefFrm(nelem, myrodb, nelem.InnerText, dbtype, true))
|
||||
{
|
||||
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))
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user