Fixed a bug that allowed the user to change a section’s format to a format that did not support that document style

This commit is contained in:
John Jenko 2015-09-30 16:56:29 +00:00
parent 5de80d59d1
commit e0bac39b9b

View File

@ -259,7 +259,7 @@ namespace VEPROMS
ppCmbxFormat.DisplayMember = "FullName";
ppCmbxFormat.ValueMember = "FullName";
ppCmbxFormat.DataSource = FormatInfoList.SortedFormatInfoList;
ppCmbxFormat.SelectedIndex = -1;
// Get the saved settings for this user
//
// Get setting telling us whether to display the default values on this property page
@ -408,7 +408,9 @@ namespace VEPROMS
}
_Initializing = false;
//_InitialIndex = ppCmbxFormat.SelectedIndex;
}
int _InitialIndex = -2;
private void ppCmbxLibDocFill()
{
@ -464,7 +466,6 @@ namespace VEPROMS
#endregion
#region Format tab
/// <summary>
/// This is the Format button used on the button interface design
/// </summary>
@ -473,7 +474,7 @@ namespace VEPROMS
private void btnFormat_Click(object sender, EventArgs e)
{
ProcessButtonClick(tiFormat, btnFormat);
if (_InitialIndex < -1) _InitialIndex = ppCmbxFormat.SelectedIndex; // save the current format selection (happens here when current section is set to the default format)
}
private void SetupPpCmbxSectionType()
@ -603,23 +604,83 @@ namespace VEPROMS
private void ppBtnDefaultFmt_Click(object sender, EventArgs e)
{
ppCmbxFormat.SelectedIndex = -1; //reset to the default Format setting
bool foundMatch = false;
bool isWordSection = rbWordSect.Checked;
FormatInfo dfi = _SectionConfig.MyDefaultFormat;
// check to see if the default format has a similar document style
// if it does not, then do not allow the selection of the default format
foreach (DocStyle ds in dfi.PlantFormat.DocStyles.DocStyleList)
{
if (ds.IsStepSection != isWordSection) foundMatch = true;
}
if (foundMatch)
{
_Initializing = true;
ppCmbxFormat.SelectedIndex = -1; //reset to the default Format setting
_Initializing = false;
SetupPpCmbxSectionType();
}
else
{
string suffix = "format ";
if (_DefaultFormatName.ToUpper().Contains("FORMAT")) suffix = "";
MessageBox.Show(string.Format("{0}\n\n{1}does not support {2} section type", _DefaultFormatName, suffix, isWordSection ? "MS Word" : "Step"), "Incompatible Format", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
private void ppCmbxFormat_SelectedIndexChanged(object sender, EventArgs e)
{
if (_Initializing) return;
private void ppCmbxFormat_SelectedIndexChanged(object sender, EventArgs e)
{
if (_Initializing)
{
// determine if the default button and the default description text should visable
ppBtnDefaultFmt.Visible = !(ppCmbxFormat.SelectedValue == null || ppCmbxFormat.SelectedIndex == -1);
ppLblFormatDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefaultFmt.Visible;
return;
}
if (_InitialIndex < -1) _InitialIndex = ppCmbxFormat.SelectedIndex; // save the current format selection (happens here when current section format is not the default section)
PlantFormat pf = FormatInfoList.SortedFormatInfoList[ppCmbxFormat.SelectedIndex].PlantFormat;
// If the selected format does not have a docstyle compatable with the section
// then reset the format selection back to what it was
if (!ValidPlantFormat(pf))
{
_Initializing = true;
ppCmbxFormat.SelectedIndex = _InitialIndex; // reset the format selection to what it was
ppBtnCancel.Focus(); // this will force the property page to refresh
_Initializing = false;
return;
}
bool didDefault = false;
if ((ppCmbxFormat.SelectedIndex != -1) && _DefaultFormatName != null && _DefaultFormatName.Equals(ppCmbxFormat.SelectedValue))
{
ppBtnDefaultFmt.Focus();
ppBtnDefaultFmt.PerformClick();
if ((ppCmbxFormat.SelectedIndex != -1) && _DefaultFormatName != null && _DefaultFormatName.Equals(ppCmbxFormat.SelectedValue))
{
ppBtnDefaultFmt.Focus();
ppBtnDefaultFmt.PerformClick();
didDefault = true;
}
ppBtnDefaultFmt.Visible = (ppCmbxFormat.SelectedValue != null);
ppLblFormatDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefaultFmt.Visible;
if (!didDefault)SetupPpCmbxSectionType();
}
}
// determine if the default button and the default description text should visable
ppBtnDefaultFmt.Visible = !(ppCmbxFormat.SelectedValue == null || ppCmbxFormat.SelectedIndex == -1);
ppLblFormatDefault.Visible = ppCbShwDefSettings.Checked && ppBtnDefaultFmt.Visible;
//if (!didDefault) SetupPpCmbxSectionType();
SetupPpCmbxSectionType();
}
// This function is used when the user selects different format for a give section.
// It will verify that the newly selected format contains a document style (docstyle)
// compatable with the that section. (i.e. if the section is a Word section, the selected format has Word section docstyle)
private bool ValidPlantFormat(PlantFormat pf)
{
bool foundMatch = false;
bool isWordSection = rbWordSect.Checked;
foreach (DocStyle ds in pf.DocStyles.DocStyleList)
{
if (ds.IsStepSection != isWordSection) foundMatch = true;
}
if (foundMatch)
return true; // valid format
string suffix = "format ";
if (ppCmbxFormat.SelectedValue.ToString().ToUpper().Contains("FORMAT")) suffix = "";
MessageBox.Show(string.Format("{0}\n\n{1}does not support {2} section type", ppCmbxFormat.SelectedValue, suffix, isWordSection ? "MS Word" : "Step"), "Incompatible Format", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return false;
}
private void ppCmbxStyleSectionType_SelectedValueChanged(object sender, EventArgs e)
{