Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 29 additions & 4 deletions OpenEphys.Onix1.Design/GenericStimulusSequenceDialog.cs
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,35 @@ void ButtonOk_Click(object sender, EventArgs e)
}
}

internal virtual bool CanCloseForm(out DialogResult result)
internal bool CanCloseForm(out DialogResult result, string stimulusName = "Stimulus")
{
result = DialogResult.OK;
return true;
bool canClose = true;

if (!IsSequenceValid())
{
DialogResult resultContinue = MessageBox.Show($"Warning: {stimulusName} sequence is not valid. " +
$"If you continue, the current settings for {stimulusName} will be discarded. " +
"Press OK to discard all changes for this device, or press Cancel to continue editing the sequence.",
$"Invalid {stimulusName} Sequence",
MessageBoxButtons.OKCancel);

if (resultContinue == DialogResult.OK)
{
result = DialogResult.Cancel;
}
else
{
result = DialogResult.OK;
canClose = false;
}
}
else
{
result = DialogResult.OK;
}

DialogResult = result;
return canClose;
}

internal void OnSelect(object sender, EventArgs e)
Expand Down Expand Up @@ -381,7 +406,7 @@ void CenterAxesOnCursor(ZedGraphControl zedGraphControl)

internal virtual bool IsSequenceValid()
{
return true;
throw new NotImplementedException();
}

internal virtual void SetStatusValidity()
Expand Down
2 changes: 1 addition & 1 deletion OpenEphys.Onix1.Design/Headstage64Dialog.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 16 additions & 1 deletion OpenEphys.Onix1.Design/Headstage64Dialog.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Windows.Forms;
using System;
using System.Windows.Forms;

namespace OpenEphys.Onix1.Design
{
Expand Down Expand Up @@ -38,5 +39,19 @@ public Headstage64Dialog(ConfigureHeadstage64 configureNode)

menuStrip1.Visible = false;
}

void OnClickOk(object sender, EventArgs e)
{
if (ElectricalStimulatorSequenceDialog.CanCloseForm(out DialogResult electricalResult, "Electrical Stimulator")
&& OpticalStimulatorSequenceDialog.CanCloseForm(out DialogResult opticalResult, "Optical Stimulator"))
{
if (electricalResult == DialogResult.OK || opticalResult == DialogResult.OK)
DialogResult = DialogResult.OK;
else
DialogResult = DialogResult.Cancel;

Close();
}
}
}
}
8 changes: 6 additions & 2 deletions OpenEphys.Onix1.Design/Headstage64Editor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,12 @@ public override bool EditComponent(ITypeDescriptorContext context, object compon
DesignHelper.CopyProperties((ConfigureRhd2164)editorDialog.Rhd2164Dialog.Device, configureNode.Rhd2164, DesignHelper.PropertiesToIgnore);
DesignHelper.CopyProperties((ConfigureBno055)editorDialog.Bno055Dialog.Device, configureNode.Bno055, DesignHelper.PropertiesToIgnore);
DesignHelper.CopyProperties((ConfigureTS4231V1)editorDialog.TS4231V1Dialog.Device, configureNode.TS4231, DesignHelper.PropertiesToIgnore);
configureNode.ElectricalStimulator = editorDialog.ElectricalStimulatorSequenceDialog.ElectricalStimulator;
configureNode.OpticalStimulator = editorDialog.OpticalStimulatorSequenceDialog.OpticalStimulator;

if (editorDialog.ElectricalStimulatorSequenceDialog.DialogResult == DialogResult.OK)
configureNode.ElectricalStimulator = editorDialog.ElectricalStimulatorSequenceDialog.ElectricalStimulator;

if (editorDialog.OpticalStimulatorSequenceDialog.DialogResult == DialogResult.OK)
configureNode.OpticalStimulator = editorDialog.OpticalStimulatorSequenceDialog.OpticalStimulator;

return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -252,41 +252,6 @@ static bool AnyCurrentIsSet(ConfigureHeadstage64ElectricalStimulator sequence)
return true;
}

internal override bool CanCloseForm(out DialogResult result)
{
if (ElectricalStimulator != null)
{
if (!IsSequenceValid(ElectricalStimulator, out string reason))
{
DialogResult resultContinue = MessageBox.Show($"Warning: Stimulus sequence is not valid ({reason}). " +
"If you continue, the current settings will be discarded. " +
"Press OK to discard changes, or press Cancel to continue editing the sequence.", "Invalid Sequence",
MessageBoxButtons.OKCancel);

if (resultContinue == DialogResult.OK)
{
result = DialogResult.Cancel;
return true;
}
else
{
result = DialogResult.OK;
return false;
}
}
else
{
result = DialogResult.OK;
return true;
}
}
else
{
result = DialogResult.Cancel;
return true;
}
}

internal override double GetPeakToPeakAmplitudeInMicroAmps()
{
var peakToPeak = Math.Max(Math.Max(ElectricalStimulator.PhaseOneCurrent, ElectricalStimulator.PhaseTwoCurrent), ElectricalStimulator.InterPhaseCurrent)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -305,40 +305,5 @@ internal override void SetStatusValidity()
toolStripStatusIsValid.Text = "Warning: " + reason;
}
}

internal override bool CanCloseForm(out DialogResult result)
{
if (OpticalStimulator != null)
{
if (!IsSequenceValid(OpticalStimulator, out string reason))
{
DialogResult resultContinue = MessageBox.Show($"Warning: Stimulus sequence is not valid ({reason}). " +
"If you continue, the current settings will be discarded. " +
"Press OK to discard changes, or press Cancel to continue editing the sequence.", "Invalid Sequence",
MessageBoxButtons.OKCancel);

if (resultContinue == DialogResult.OK)
{
result = DialogResult.Cancel;
return true;
}
else
{
result = DialogResult.OK;
return false;
}
}
else
{
result = DialogResult.OK;
return true;
}
}
else
{
result = DialogResult.Cancel;
return true;
}
}
}
}
35 changes: 0 additions & 35 deletions OpenEphys.Onix1.Design/Rhs2116StimulusSequenceDialog.cs
Original file line number Diff line number Diff line change
Expand Up @@ -115,41 +115,6 @@ public Rhs2116StimulusSequenceDialog(ConfigureRhs2116Trigger rhs2116Trigger)
DrawStimulusWaveform();
}

internal override bool CanCloseForm(out DialogResult result)
{
if (Sequence != null)
{
if (!Sequence.Valid)
{
DialogResult resultContinue = MessageBox.Show("Warning: Stimulus sequence is not valid. " +
"If you continue, the current settings will be discarded. " +
"Press OK to discard changes, or press Cancel to continue editing the sequence.", "Invalid Sequence",
MessageBoxButtons.OKCancel);

if (resultContinue == DialogResult.OK)
{
result = DialogResult.Cancel;
return true;
}
else
{
result = DialogResult.OK;
return false;
}
}
else
{
result = DialogResult.OK;
return true;
}
}
else
{
result = DialogResult.Cancel;
return true;
}
}

internal void OnZoom(object sender, EventArgs e)
{
ChannelDialog.UpdateFontSize();
Expand Down