DataEntry.DataStream.CycleBeginningForm completed, ver. 2.26.1706
This commit is contained in:
+801
-501
File diff suppressed because it is too large
Load Diff
@@ -3,6 +3,7 @@
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Globalization;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
@@ -12,10 +13,23 @@ using TBF.Resources;
|
||||
|
||||
namespace TBF.BenchControl.DataEntry.DataStream
|
||||
{
|
||||
public partial class CycleBeginningForm : Form, GenericDevices.IHasCompleted
|
||||
public enum CommErr
|
||||
{
|
||||
None = 0,
|
||||
CommFailed, /// 1
|
||||
HeadDisabledByUser, /// 2
|
||||
}
|
||||
|
||||
public partial class CycleBeginningForm : Form, GenericDevices.IHasCompleted
|
||||
{
|
||||
private static readonly ILog log = LogManager.GetLogger(typeof(CycleBeginningForm));
|
||||
|
||||
public static Color InitialColor = Color.LightGray;
|
||||
public static Color DisabledColor = Color.DarkGray;
|
||||
public static Color OptoOKColor = Color.Green;
|
||||
public static Color OptoNokColor = Color.Red;
|
||||
public static Color BusyColor = Color.Yellow;
|
||||
|
||||
/// <summary> Number of water meters </summary>
|
||||
IList<Results.Entities.WaterMeter> waterMeters;
|
||||
MefImport mefImport;
|
||||
@@ -26,17 +40,19 @@ namespace TBF.BenchControl.DataEntry.DataStream
|
||||
public bool[] Disabled;
|
||||
|
||||
/// Set to 'true' when the form closes
|
||||
public bool Completed { get { return completed; } }
|
||||
bool completed;
|
||||
public bool Completed { get { return formCompleted; } }
|
||||
bool formCompleted;
|
||||
|
||||
Thread thread;
|
||||
public int DataStreamsCount;
|
||||
int busyIx;
|
||||
|
||||
/// <summary> Number of text boxes for serial numbers </summary>
|
||||
Label[] labels;
|
||||
ComboBox[] comboBoxes;
|
||||
CheckBox[] checkBoxes;
|
||||
IList<ComboBox> enabledComboBoxes;
|
||||
CheckBoxImage[] checkBoxes;
|
||||
PictureBox[] pictures;
|
||||
TextBox[] serialNrBoxes;
|
||||
IList<TextBox> enabledSerialNrBoxes;
|
||||
|
||||
|
||||
/// <summary> Parameterless constructor for common functionality </summary>
|
||||
@@ -47,25 +63,30 @@ namespace TBF.BenchControl.DataEntry.DataStream
|
||||
|
||||
labels = new Label[]
|
||||
{
|
||||
label1, label2, label3, label4, label5, label6, label7, label8, label9, label10,
|
||||
label11, label12, label13, label14, label15, label16, label17, label18, label19, label20,
|
||||
label21, label22, label23, label24,
|
||||
label1, label2, label3, label4, label5, label6, label7, label8, label9, label10, label11, label12,
|
||||
label13, label14, label15, label16, label17, label18, label19, label20, label21, label22, label23, label24,
|
||||
};
|
||||
comboBoxes = new ComboBox[]
|
||||
checkBoxes = new CheckBoxImage[]
|
||||
{
|
||||
comboBox1, comboBox2, comboBox3, comboBox4, comboBox5, comboBox6,
|
||||
comboBox7, comboBox8, comboBox9, comboBox10, comboBox11, comboBox12,
|
||||
comboBox13, comboBox14, comboBox15, comboBox16, comboBox17, comboBox18,
|
||||
comboBox19, comboBox20, comboBox21, comboBox22, comboBox23, comboBox24,
|
||||
checkBoxImage1, checkBoxImage2, checkBoxImage3, checkBoxImage4, checkBoxImage5, checkBoxImage6,
|
||||
checkBoxImage7, checkBoxImage8, checkBoxImage9, checkBoxImage10, checkBoxImage11, checkBoxImage12,
|
||||
checkBoxImage13, checkBoxImage14, checkBoxImage15, checkBoxImage16, checkBoxImage17, checkBoxImage18,
|
||||
checkBoxImage19, checkBoxImage20, checkBoxImage21, checkBoxImage22, checkBoxImage23, checkBoxImage24,
|
||||
};
|
||||
checkBoxes = new CheckBox[]
|
||||
pictures = new PictureBox[]
|
||||
{
|
||||
checkBox1, checkBox2, checkBox3, checkBox4, checkBox5, checkBox6,
|
||||
checkBox7, checkBox8, checkBox9, checkBox10, checkBox11, checkBox12,
|
||||
checkBox13, checkBox14, checkBox15, checkBox16, checkBox17, checkBox18,
|
||||
checkBox19, checkBox20, checkBox21, checkBox22, checkBox23, checkBox24,
|
||||
pictureBox1, pictureBox2, pictureBox3, pictureBox4, pictureBox5, pictureBox6,
|
||||
pictureBox7, pictureBox8, pictureBox9, pictureBox10, pictureBox11, pictureBox12,
|
||||
pictureBox13, pictureBox14, pictureBox15, pictureBox16, pictureBox17, pictureBox18,
|
||||
pictureBox19, pictureBox20, pictureBox21, pictureBox22, pictureBox23, pictureBox24,
|
||||
};
|
||||
serialNrBoxes = new TextBox[]
|
||||
{
|
||||
serialNrBox1, serialNrBox2, serialNrBox3, serialNrBox4, serialNrBox5, serialNrBox6,
|
||||
serialNrBox7, serialNrBox8, serialNrBox9, serialNrBox10, serialNrBox11, serialNrBox12,
|
||||
serialNrBox13, serialNrBox14, serialNrBox15, serialNrBox16, serialNrBox17, serialNrBox18,
|
||||
serialNrBox19, serialNrBox20, serialNrBox21, serialNrBox22, serialNrBox23, serialNrBox24,
|
||||
};
|
||||
enabledComboBoxes = new List<ComboBox>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -81,42 +102,84 @@ namespace TBF.BenchControl.DataEntry.DataStream
|
||||
SNText = new string[waterMeters.Count];
|
||||
Disabled = new bool[waterMeters.Count];
|
||||
|
||||
int wmsCount = Math.Min(mefImport.DataStreamIFace.GetMetersCount(), waterMeters.Count);
|
||||
ShuffleTextBoxes(wmsCount, Config.Data.LineSize, out DataStreamsCount);
|
||||
Localize();
|
||||
|
||||
completed = false;
|
||||
PrepareOrderCombo(orderComboBox);
|
||||
|
||||
int wmsCount = Math.Min(mefImport.DataStreamIFace.GetMetersCount(), waterMeters.Count);
|
||||
|
||||
int right, bottom;
|
||||
enabledSerialNrBoxes = ShuffleTextBoxes(wmsCount, Config.Data.LineSize, out right, out bottom);
|
||||
Height = bottom + 60;
|
||||
|
||||
DataStreamsCount = enabledSerialNrBoxes.Count;
|
||||
|
||||
SetCheckBoxStates(Program.LocalSettings.OptoHeadsEnabled);
|
||||
|
||||
busyIx = -1;
|
||||
formCompleted = false;
|
||||
StartForceCloseHandler();
|
||||
|
||||
/// Attach to 'CommCompleted' handler
|
||||
OpenConnCompletedHandler += delegate(object sender, OpenConnCompletedEventArgs args)
|
||||
/// Attach to handlers
|
||||
OpenConnStartedHandler += delegate(object sender, OpenConnectionEventArgs args)
|
||||
{
|
||||
if (InvokeRequired)
|
||||
{
|
||||
Invoke(new EventHandler<OpenConnCompletedEventArgs>(DoOnOpenConnCompleted), sender, args);
|
||||
}
|
||||
else
|
||||
{
|
||||
DoOnOpenConnCompleted(sender, args);
|
||||
}
|
||||
if (InvokeRequired) { Invoke(new EventHandler<OpenConnectionEventArgs>(DoOnOpenConnStarted), sender, args); }
|
||||
else { DoOnOpenConnStarted(sender, args); }
|
||||
};
|
||||
OpenConnCompletedHandler += delegate(object sender, OpenConnectionEventArgs args)
|
||||
{
|
||||
if (InvokeRequired) { Invoke(new EventHandler<OpenConnectionEventArgs>(DoOnOpenConnCompleted), sender, args); }
|
||||
else { DoOnOpenConnCompleted(sender, args); }
|
||||
};
|
||||
|
||||
Thread thread = new Thread(Worker);
|
||||
///
|
||||
/// Start communication with water meters in the worker thread
|
||||
///
|
||||
thread = new Thread(Worker);
|
||||
thread.CurrentCulture = CultureInfo.CurrentCulture;
|
||||
thread.CurrentUICulture = CultureInfo.CurrentUICulture;
|
||||
thread.Start();
|
||||
}
|
||||
|
||||
//Height = 147 + WaterMetersCount * 90;
|
||||
void Localize()
|
||||
{
|
||||
Text = Strings.Opening_connections_with_water_meters;
|
||||
orderGroupBox.Text = Strings.Purchase_order;
|
||||
okButton.Text = Strings.OkBtnText;
|
||||
retryButton.Text = Strings.RetryBtnText;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Load Purchase order combo box items from the LocalSettings PurchaseOrderHistory array
|
||||
/// </summary>
|
||||
/// <param name="orderComboBox">Puchase order ComboBox</param>
|
||||
void PrepareOrderCombo(ComboBox orderComboBox)
|
||||
{
|
||||
for (int i = 0; i < Program.LocalSettings.PurchaseOrderHistoryCount; i++)
|
||||
{
|
||||
orderComboBox.Items.Add(Program.LocalSettings.PurchaseOrderHistory[i]);
|
||||
}
|
||||
|
||||
if (orderComboBox.Items.Count > 0)
|
||||
{
|
||||
orderComboBox.Text = orderComboBox.Items[0].ToString();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Make sure the layout of labels/text boxes on the screen
|
||||
/// corresponds to the layout of watermeters of the test bench.
|
||||
/// Makes layout of labels/text boxes on the screen the same
|
||||
/// as the layout of watermeters on the test bench.
|
||||
/// To be used only once in the constructor or in the form load handler.
|
||||
/// </summary>
|
||||
/// <param name="wmsCount">Number of watermeters</param>
|
||||
/// <param name="lineSize">Number of watermeters in one line</param>
|
||||
void ShuffleTextBoxes(int wmsCount, int lineSize, out int activatedWMsCount)
|
||||
/// <param name="wmsCount">Number of water meters</param>
|
||||
/// <param name="lineSize">Number of water meters in one line</param>
|
||||
/// <param name="right">Right coordinate of the rightmost TextBox</param>
|
||||
/// <param name="bottom">Bottom coordinate of the bottommost TextBox</param>
|
||||
/// <returns>List of enabled text boxes</returns>
|
||||
IList<TextBox> ShuffleTextBoxes(int wmsCount, int lineSize, out int right, out int bottom)
|
||||
{
|
||||
int uiBoxesCount = comboBoxes.Length;
|
||||
int uiBoxesCount = serialNrBoxes.Length;
|
||||
IList<TextBox> enabledSerialNrBoxes = new List<TextBox>();
|
||||
|
||||
if (wmsCount < uiBoxesCount && lineSize > 0)
|
||||
{
|
||||
@@ -128,65 +191,94 @@ namespace TBF.BenchControl.DataEntry.DataStream
|
||||
{
|
||||
for (int i = 0; i < lineSize; i++)
|
||||
{
|
||||
labels[dest] = labels[l * lineSize + l * gap + i];
|
||||
comboBoxes[dest] = comboBoxes[l * lineSize + l * gap + i];
|
||||
checkBoxes[dest] = checkBoxes[l * lineSize + l * gap + i];
|
||||
int origin = l * lineSize + l * gap + i;
|
||||
|
||||
labels[dest] = labels[origin];
|
||||
checkBoxes[dest] = checkBoxes[origin];
|
||||
pictures[dest] = pictures[origin];
|
||||
serialNrBoxes[dest] = serialNrBoxes[origin];
|
||||
|
||||
labels[dest].Visible = true;
|
||||
checkBoxes[dest].Visible = true;
|
||||
pictures[dest].Visible = true;
|
||||
serialNrBoxes[dest].Visible = true;
|
||||
|
||||
labels[dest].Text = (dest + 1).ToString();
|
||||
enabledSerialNrBoxes.Add(serialNrBoxes[dest]);
|
||||
|
||||
dest++;
|
||||
if (dest >= wmsCount) break;
|
||||
}
|
||||
|
||||
if (dest >= wmsCount) break;
|
||||
}
|
||||
activatedWMsCount = wmsCount;
|
||||
}
|
||||
else
|
||||
{
|
||||
activatedWMsCount = uiBoxesCount;
|
||||
int activatedWMsCount = Math.Min(wmsCount, uiBoxesCount);
|
||||
|
||||
for (int i = 0; i < activatedWMsCount; i++)
|
||||
{
|
||||
labels[i].Visible = true;
|
||||
checkBoxes[i].Visible = true;
|
||||
pictures[i].Visible = true;
|
||||
serialNrBoxes[i].Visible = true;
|
||||
|
||||
labels[i].Text = (i + 1).ToString();
|
||||
enabledSerialNrBoxes.Add(serialNrBoxes[i]);
|
||||
}
|
||||
}
|
||||
|
||||
int xMax = 0;
|
||||
int yMax = 0;
|
||||
foreach (var tb in enabledSerialNrBoxes)
|
||||
{
|
||||
if (tb.Left + tb.Width > xMax) xMax = tb.Left + tb.Width;
|
||||
if (tb.Top + tb.Height > yMax) yMax = tb.Top + tb.Height;
|
||||
}
|
||||
|
||||
right = xMax;
|
||||
bottom = yMax;
|
||||
return enabledSerialNrBoxes;
|
||||
}
|
||||
|
||||
void Localize()
|
||||
///
|
||||
/// Set checkbox states accroding to TBF program level configuration
|
||||
///
|
||||
void SetCheckBoxStates(long optoHeadsConfig)
|
||||
{
|
||||
Text = Strings.Data;
|
||||
orderGroupBox.Text = Strings.Purchase_order;
|
||||
for (int i = 0; i < DataStreamsCount; i++)
|
||||
{
|
||||
labels[i].Text = Strings.Serial_Number + " " + (i + 1).ToString();
|
||||
}
|
||||
okButton.Text = Strings.OkBtnText;
|
||||
clearButton.Text = Strings.ClearBtnText;
|
||||
}
|
||||
|
||||
private void CycleBeginningForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
Localize();
|
||||
|
||||
PrepareOrderCombo(orderComboBox);
|
||||
|
||||
for (int i = 0; i < DataStreamsCount; i++)
|
||||
{
|
||||
if (Program.LocalSettings.LastSNTextsCount == DataStreamsCount)
|
||||
{
|
||||
comboBoxes[i].Items.Add((Program.LocalSettings.LastSNTexts[i] == null) ? string.Empty : Program.LocalSettings.LastSNTexts[i]);
|
||||
if ((optoHeadsConfig & (1L << i)) == 0)
|
||||
{
|
||||
/// Opto head is disabled in configuration
|
||||
checkBoxes[i].Checked = false;
|
||||
checkBoxes[i].Enabled = false;
|
||||
pictures[i].BackColor = DisabledColor;
|
||||
serialNrBoxes[i].Text = Strings.Disabled_in_configuration;
|
||||
SNText[i] = string.Empty;
|
||||
Disabled[i] = waterMeters[i].Disabled = true;
|
||||
}
|
||||
labels[i].Visible = comboBoxes[i].Visible = checkBoxes[i].Visible = true;
|
||||
enabledComboBoxes.Add(comboBoxes[i]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/// Opto head is enabled
|
||||
checkBoxes[i].Checked = true;
|
||||
checkBoxes[i].Enabled = true;
|
||||
Disabled[i] = waterMeters[i].Disabled = false;
|
||||
|
||||
/// <summary>
|
||||
/// Load Purchase order combo box items from the LocalSettings PurchaseOrderHistory array
|
||||
/// </summary>
|
||||
/// <param name="orderComboBox">Puchase order ComboBox</param>
|
||||
void PrepareOrderCombo(ComboBox orderComboBox)
|
||||
{
|
||||
for (int i = 0; i < Program.LocalSettings.PurchaseOrderHistoryCount; i++)
|
||||
{
|
||||
orderComboBox.Items.Add(Program.LocalSettings.PurchaseOrderHistory[i]);
|
||||
}
|
||||
|
||||
if (orderComboBox.Items.Count > 0)
|
||||
{
|
||||
orderComboBox.Text = orderComboBox.Items[0].ToString();
|
||||
}
|
||||
}
|
||||
if (string.IsNullOrEmpty(SNText[i]))
|
||||
{
|
||||
serialNrBoxes[i].Text = string.Empty;
|
||||
pictures[i].BackColor = InitialColor;
|
||||
}
|
||||
else
|
||||
{
|
||||
serialNrBoxes[i].Text = SNText[i];
|
||||
pictures[i].BackColor = OptoOKColor;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
@@ -194,302 +286,126 @@ namespace TBF.BenchControl.DataEntry.DataStream
|
||||
/// </summary>
|
||||
void Worker()
|
||||
{
|
||||
for (int wmNr0 = 0; wmNr0 < DataStreamsCount; wmNr0++)
|
||||
do
|
||||
{
|
||||
if (completed) break;
|
||||
for (int wmNr0 = 0; wmNr0 < DataStreamsCount; wmNr0++)
|
||||
{
|
||||
if (formCompleted) break;
|
||||
|
||||
if (waterMeters[wmNr0] != null && !waterMeters[wmNr0].Disabled)
|
||||
{
|
||||
string waterMeterID;
|
||||
bool connected = mefImport.DataStreamIFace.OpenConnection(wmNr0, "", out waterMeterID);
|
||||
log.WarnFormat("{0} : DataStreamIFace.OpenConnection({1}, ...) returned {2}, ID={3}", Name, wmNr0, connected, waterMeterID);
|
||||
OnOpenConnCompleted(this, new OpenConnCompletedEventArgs(wmNr0, waterMeters[wmNr0], connected, waterMeterID));
|
||||
}
|
||||
else
|
||||
{
|
||||
OnOpenConnCompleted(this, new OpenConnCompletedEventArgs(wmNr0, waterMeters[wmNr0], false, string.Empty));
|
||||
bool isLast = (wmNr0 == DataStreamsCount - 1);
|
||||
|
||||
if (!Disabled[wmNr0])
|
||||
{
|
||||
OnOpenConnStarted(this, new OpenConnectionEventArgs(wmNr0, isLast, waterMeters[wmNr0]));
|
||||
string waterMeterID;
|
||||
bool connected = mefImport.OpenConnection(wmNr0, "", out waterMeterID);
|
||||
log.WarnFormat("{0} : mefImport.OpenConnection({1}, ...) returned {2}, ID={3}", Name, wmNr0, connected, waterMeterID);
|
||||
if (!formCompleted)
|
||||
{
|
||||
OnOpenConnCompleted(this, new OpenConnectionEventArgs(wmNr0, isLast, waterMeters[wmNr0], connected, waterMeterID));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!formCompleted)
|
||||
{
|
||||
OnOpenConnCompleted(this, new OpenConnectionEventArgs(wmNr0, isLast, waterMeters[wmNr0]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
completed = true;
|
||||
Close();
|
||||
while (!formCompleted);
|
||||
}
|
||||
|
||||
|
||||
private void okButton_Click(object sender, EventArgs e)
|
||||
private void checkBoxImage1_Click(object sender, EventArgs e) { ProcessCheckBoxClick(checkBoxImage1); }
|
||||
private void checkBoxImage2_Click(object sender, EventArgs e) { ProcessCheckBoxClick(checkBoxImage2); }
|
||||
private void checkBoxImage3_Click(object sender, EventArgs e) { ProcessCheckBoxClick(checkBoxImage3); }
|
||||
private void checkBoxImage4_Click(object sender, EventArgs e) { ProcessCheckBoxClick(checkBoxImage4); }
|
||||
private void checkBoxImage5_Click(object sender, EventArgs e) { ProcessCheckBoxClick(checkBoxImage5); }
|
||||
private void checkBoxImage6_Click(object sender, EventArgs e) { ProcessCheckBoxClick(checkBoxImage6); }
|
||||
private void checkBoxImage7_Click(object sender, EventArgs e) { ProcessCheckBoxClick(checkBoxImage7); }
|
||||
private void checkBoxImage8_Click(object sender, EventArgs e) { ProcessCheckBoxClick(checkBoxImage8); }
|
||||
private void checkBoxImage9_Click(object sender, EventArgs e) { ProcessCheckBoxClick(checkBoxImage9); }
|
||||
private void checkBoxImage10_Click(object sender, EventArgs e) { ProcessCheckBoxClick(checkBoxImage10); }
|
||||
private void checkBoxImage11_Click(object sender, EventArgs e) { ProcessCheckBoxClick(checkBoxImage11); }
|
||||
private void checkBoxImage12_Click(object sender, EventArgs e) { ProcessCheckBoxClick(checkBoxImage12); }
|
||||
private void checkBoxImage13_Click(object sender, EventArgs e) { ProcessCheckBoxClick(checkBoxImage13); }
|
||||
private void checkBoxImage14_Click(object sender, EventArgs e) { ProcessCheckBoxClick(checkBoxImage14); }
|
||||
private void checkBoxImage15_Click(object sender, EventArgs e) { ProcessCheckBoxClick(checkBoxImage15); }
|
||||
private void checkBoxImage16_Click(object sender, EventArgs e) { ProcessCheckBoxClick(checkBoxImage16); }
|
||||
private void checkBoxImage17_Click(object sender, EventArgs e) { ProcessCheckBoxClick(checkBoxImage17); }
|
||||
private void checkBoxImage18_Click(object sender, EventArgs e) { ProcessCheckBoxClick(checkBoxImage18); }
|
||||
private void checkBoxImage19_Click(object sender, EventArgs e) { ProcessCheckBoxClick(checkBoxImage19); }
|
||||
private void checkBoxImage20_Click(object sender, EventArgs e) { ProcessCheckBoxClick(checkBoxImage20); }
|
||||
private void checkBoxImage21_Click(object sender, EventArgs e) { ProcessCheckBoxClick(checkBoxImage21); }
|
||||
private void checkBoxImage22_Click(object sender, EventArgs e) { ProcessCheckBoxClick(checkBoxImage22); }
|
||||
private void checkBoxImage23_Click(object sender, EventArgs e) { ProcessCheckBoxClick(checkBoxImage23); }
|
||||
private void checkBoxImage24_Click(object sender, EventArgs e) { ProcessCheckBoxClick(checkBoxImage24); }
|
||||
|
||||
void ProcessCheckBoxClick(CheckBoxImage checkBox)
|
||||
{
|
||||
PurchaseOrder = orderComboBox.Text;
|
||||
Program.LocalSettings.UpdateHistory(orderComboBox.Text, ref Program.LocalSettings.PurchaseOrderHistory);
|
||||
|
||||
Program.LocalSettings.LastSNTexts = SNText;
|
||||
|
||||
for (int i = 0; i < DataStreamsCount; i++)
|
||||
{
|
||||
SNText[i] = comboBoxes[i].Text;
|
||||
Disabled[i] = !checkBoxes[i].Checked;
|
||||
}
|
||||
|
||||
completed = true;
|
||||
Close();
|
||||
for (int ix = 0; ix < DataStreamsCount; ix++)
|
||||
{
|
||||
if (checkBoxes[ix] == checkBox)
|
||||
{
|
||||
Disabled[ix] = waterMeters[ix].Disabled ? true : !checkBoxes[ix].Checked;
|
||||
CheckAllOK();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// When one combo box is updated using drop-down menu, all combo boxes
|
||||
/// are updated by this function.
|
||||
/// </summary>
|
||||
private void UpdateAllCombos()
|
||||
{
|
||||
for (int i = 0; i < DataStreamsCount; i++)
|
||||
{
|
||||
comboBoxes[i].Text = Program.LocalSettings.LastSNTexts[i];
|
||||
checkBoxes[i].Checked = !string.IsNullOrEmpty(comboBoxes[i].Text);
|
||||
}
|
||||
}
|
||||
|
||||
private void clearButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
for (int i = 0; i < DataStreamsCount; i++)
|
||||
{
|
||||
comboBoxes[i].Text = string.Empty;
|
||||
checkBoxes[i].Checked = false;
|
||||
}
|
||||
}
|
||||
private void serialNrBox1_TextChanged(object sender, EventArgs e) { checkBoxImage1.Checked = true; }
|
||||
private void serialNrBox2_TextChanged(object sender, EventArgs e) { checkBoxImage2.Checked = true; }
|
||||
private void serialNrBox3_TextChanged(object sender, EventArgs e) { checkBoxImage3.Checked = true; }
|
||||
private void serialNrBox4_TextChanged(object sender, EventArgs e) { checkBoxImage4.Checked = true; }
|
||||
private void serialNrBox5_TextChanged(object sender, EventArgs e) { checkBoxImage5.Checked = true; }
|
||||
private void serialNrBox6_TextChanged(object sender, EventArgs e) { checkBoxImage6.Checked = true; }
|
||||
private void serialNrBox7_TextChanged(object sender, EventArgs e) { checkBoxImage7.Checked = true; }
|
||||
private void serialNrBox8_TextChanged(object sender, EventArgs e) { checkBoxImage8.Checked = true; }
|
||||
private void serialNrBox9_TextChanged(object sender, EventArgs e) { checkBoxImage9.Checked = true; }
|
||||
private void serialNrBox10_TextChanged(object sender, EventArgs e) { checkBoxImage10.Checked = true; }
|
||||
private void serialNrBox11_TextChanged(object sender, EventArgs e) { checkBoxImage11.Checked = true; }
|
||||
private void serialNrBox12_TextChanged(object sender, EventArgs e) { checkBoxImage12.Checked = true; }
|
||||
private void serialNrBox13_TextChanged(object sender, EventArgs e) { checkBoxImage13.Checked = true; }
|
||||
private void serialNrBox14_TextChanged(object sender, EventArgs e) { checkBoxImage14.Checked = true; }
|
||||
private void serialNrBox15_TextChanged(object sender, EventArgs e) { checkBoxImage15.Checked = true; }
|
||||
private void serialNrBox16_TextChanged(object sender, EventArgs e) { checkBoxImage16.Checked = true; }
|
||||
private void serialNrBox17_TextChanged(object sender, EventArgs e) { checkBoxImage17.Checked = true; }
|
||||
private void serialNrBox18_TextChanged(object sender, EventArgs e) { checkBoxImage18.Checked = true; }
|
||||
private void serialNrBox19_TextChanged(object sender, EventArgs e) { checkBoxImage19.Checked = true; }
|
||||
private void serialNrBox20_TextChanged(object sender, EventArgs e) { checkBoxImage20.Checked = true; }
|
||||
private void serialNrBox21_TextChanged(object sender, EventArgs e) { checkBoxImage21.Checked = true; }
|
||||
private void serialNrBox22_TextChanged(object sender, EventArgs e) { checkBoxImage22.Checked = true; }
|
||||
private void serialNrBox23_TextChanged(object sender, EventArgs e) { checkBoxImage23.Checked = true; }
|
||||
private void serialNrBox24_TextChanged(object sender, EventArgs e) { checkBoxImage24.Checked = true; }
|
||||
|
||||
|
||||
private void comboBox1_TextChanged(object sender, EventArgs e) { checkBox1.Checked = true; }
|
||||
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.LocalSettings.LastSNTextsCount == DataStreamsCount)
|
||||
{
|
||||
if (comboBox1.Text.Equals(comboBox1.Items[0])) UpdateAllCombos();
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBox2_TextChanged(object sender, EventArgs e) { checkBox2.Checked = true; }
|
||||
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.LocalSettings.LastSNTextsCount == DataStreamsCount)
|
||||
{
|
||||
if (comboBox2.Text.Equals(comboBox2.Items[0])) UpdateAllCombos();
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBox3_TextChanged(object sender, EventArgs e) { checkBox3.Checked = true; }
|
||||
private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.LocalSettings.LastSNTextsCount == DataStreamsCount)
|
||||
{
|
||||
if (comboBox3.Text.Equals(comboBox3.Items[0])) UpdateAllCombos();
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBox4_TextChanged(object sender, EventArgs e) { checkBox4.Checked = true; }
|
||||
private void comboBox4_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.LocalSettings.LastSNTextsCount == DataStreamsCount)
|
||||
{
|
||||
if (comboBox4.Text.Equals(comboBox4.Items[0])) UpdateAllCombos();
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBox5_TextChanged(object sender, EventArgs e) { checkBox5.Checked = true; }
|
||||
private void comboBox5_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.LocalSettings.LastSNTextsCount == DataStreamsCount)
|
||||
{
|
||||
if (comboBox5.Text.Equals(comboBox5.Items[0])) UpdateAllCombos();
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBox6_TextChanged(object sender, EventArgs e) { checkBox6.Checked = true; }
|
||||
private void comboBox6_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.LocalSettings.LastSNTextsCount == DataStreamsCount)
|
||||
{
|
||||
if (comboBox6.Text.Equals(comboBox6.Items[0])) UpdateAllCombos();
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBox7_TextChanged(object sender, EventArgs e) { checkBox7.Checked = true; }
|
||||
private void comboBox7_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.LocalSettings.LastSNTextsCount == DataStreamsCount)
|
||||
{
|
||||
if (comboBox7.Text.Equals(comboBox7.Items[0])) UpdateAllCombos();
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBox8_TextChanged(object sender, EventArgs e) { checkBox8.Checked = true; }
|
||||
private void comboBox8_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.LocalSettings.LastSNTextsCount == DataStreamsCount)
|
||||
{
|
||||
if (comboBox8.Text.Equals(comboBox8.Items[0])) UpdateAllCombos();
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBox9_TextChanged(object sender, EventArgs e) { checkBox9.Checked = true; }
|
||||
private void comboBox9_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.LocalSettings.LastSNTextsCount == DataStreamsCount)
|
||||
{
|
||||
if (comboBox9.Text.Equals(comboBox9.Items[0])) UpdateAllCombos();
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBox10_TextChanged(object sender, EventArgs e) { checkBox10.Checked = true; }
|
||||
private void comboBox10_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.LocalSettings.LastSNTextsCount == DataStreamsCount)
|
||||
{
|
||||
if (comboBox10.Text.Equals(comboBox10.Items[0])) UpdateAllCombos();
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBox11_TextChanged(object sender, EventArgs e) { checkBox11.Checked = true; }
|
||||
private void comboBox11_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.LocalSettings.LastSNTextsCount == DataStreamsCount)
|
||||
{
|
||||
if (comboBox11.Text.Equals(comboBox11.Items[0])) UpdateAllCombos();
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBox12_TextChanged(object sender, EventArgs e) { checkBox12.Checked = true; }
|
||||
private void comboBox12_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.LocalSettings.LastSNTextsCount == DataStreamsCount)
|
||||
{
|
||||
if (comboBox12.Text.Equals(comboBox12.Items[0])) UpdateAllCombos();
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBox13_TextChanged(object sender, EventArgs e) { checkBox13.Checked = true; }
|
||||
private void comboBox13_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.LocalSettings.LastSNTextsCount == DataStreamsCount)
|
||||
{
|
||||
if (comboBox13.Text.Equals(comboBox13.Items[0])) UpdateAllCombos();
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBox14_TextChanged(object sender, EventArgs e) { checkBox14.Checked = true; }
|
||||
private void comboBox14_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.LocalSettings.LastSNTextsCount == DataStreamsCount)
|
||||
{
|
||||
if (comboBox14.Text.Equals(comboBox14.Items[0])) UpdateAllCombos();
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBox15_TextChanged(object sender, EventArgs e) { checkBox15.Checked = true; }
|
||||
private void comboBox15_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.LocalSettings.LastSNTextsCount == DataStreamsCount)
|
||||
{
|
||||
if (comboBox15.Text.Equals(comboBox15.Items[0])) UpdateAllCombos();
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBox16_TextChanged(object sender, EventArgs e) { checkBox16.Checked = true; }
|
||||
private void comboBox16_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.LocalSettings.LastSNTextsCount == DataStreamsCount)
|
||||
{
|
||||
if (comboBox16.Text.Equals(comboBox16.Items[0])) UpdateAllCombos();
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBox17_TextChanged(object sender, EventArgs e) { checkBox17.Checked = true; }
|
||||
private void comboBox17_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.LocalSettings.LastSNTextsCount == DataStreamsCount)
|
||||
{
|
||||
if (comboBox17.Text.Equals(comboBox17.Items[0])) UpdateAllCombos();
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBox18_TextChanged(object sender, EventArgs e) { checkBox18.Checked = true; }
|
||||
private void comboBox18_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.LocalSettings.LastSNTextsCount == DataStreamsCount)
|
||||
{
|
||||
if (comboBox18.Text.Equals(comboBox18.Items[0])) UpdateAllCombos();
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBox19_TextChanged(object sender, EventArgs e) { checkBox19.Checked = true; }
|
||||
private void comboBox19_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.LocalSettings.LastSNTextsCount == DataStreamsCount)
|
||||
{
|
||||
if (comboBox19.Text.Equals(comboBox19.Items[0])) UpdateAllCombos();
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBox20_TextChanged(object sender, EventArgs e) { checkBox20.Checked = true; }
|
||||
private void comboBox20_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.LocalSettings.LastSNTextsCount == DataStreamsCount)
|
||||
{
|
||||
if (comboBox20.Text.Equals(comboBox20.Items[0])) UpdateAllCombos();
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBox21_TextChanged(object sender, EventArgs e) { checkBox21.Checked = true; }
|
||||
private void comboBox21_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.LocalSettings.LastSNTextsCount == DataStreamsCount)
|
||||
{
|
||||
if (comboBox21.Text.Equals(comboBox21.Items[0])) UpdateAllCombos();
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBox22_TextChanged(object sender, EventArgs e) { checkBox22.Checked = true; }
|
||||
private void comboBox22_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.LocalSettings.LastSNTextsCount == DataStreamsCount)
|
||||
{
|
||||
if (comboBox22.Text.Equals(comboBox22.Items[0])) UpdateAllCombos();
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBox23_TextChanged(object sender, EventArgs e) { checkBox23.Checked = true; }
|
||||
private void comboBox23_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.LocalSettings.LastSNTextsCount == DataStreamsCount)
|
||||
{
|
||||
if (comboBox23.Text.Equals(comboBox23.Items[0])) UpdateAllCombos();
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBox24_TextChanged(object sender, EventArgs e) { checkBox24.Checked = true; }
|
||||
private void comboBox24_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Program.LocalSettings.LastSNTextsCount == DataStreamsCount)
|
||||
{
|
||||
if (comboBox24.Text.Equals(comboBox24.Items[0])) UpdateAllCombos();
|
||||
}
|
||||
}
|
||||
|
||||
#region Forced close handling
|
||||
|
||||
public void StartForceCloseHandler()
|
||||
{
|
||||
UiBridge.Bridge.CloseModelessFormHandler += delegate(object sender, EventArgs args)
|
||||
{
|
||||
if (InvokeRequired) { Invoke(new EventHandler<EventArgs>(OnForceClose), sender, args); }
|
||||
else OnForceClose(sender, args);
|
||||
};
|
||||
}
|
||||
|
||||
private void OnForceClose(object sender, EventArgs args)
|
||||
{
|
||||
DialogResult = DialogResult.Cancel;
|
||||
Close();
|
||||
}
|
||||
|
||||
#endregion
|
||||
private void serialNrBox1_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, serialNrBox1); }
|
||||
private void serialNrBox2_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, serialNrBox2); }
|
||||
private void serialNrBox3_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, serialNrBox3); }
|
||||
private void serialNrBox4_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, serialNrBox4); }
|
||||
private void serialNrBox5_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, serialNrBox5); }
|
||||
private void serialNrBox6_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, serialNrBox6); }
|
||||
private void serialNrBox7_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, serialNrBox7); }
|
||||
private void serialNrBox8_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, serialNrBox8); }
|
||||
private void serialNrBox9_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, serialNrBox9); }
|
||||
private void serialNrBox10_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, serialNrBox10); }
|
||||
private void serialNrBox11_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, serialNrBox11); }
|
||||
private void serialNrBox12_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, serialNrBox12); }
|
||||
private void serialNrBox13_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, serialNrBox13); }
|
||||
private void serialNrBox14_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, serialNrBox14); }
|
||||
private void serialNrBox15_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, serialNrBox15); }
|
||||
private void serialNrBox16_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, serialNrBox16); }
|
||||
private void serialNrBox17_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, serialNrBox17); }
|
||||
private void serialNrBox18_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, serialNrBox18); }
|
||||
private void serialNrBox19_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, serialNrBox19); }
|
||||
private void serialNrBox20_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, serialNrBox20); }
|
||||
private void serialNrBox21_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, serialNrBox21); }
|
||||
private void serialNrBox22_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, serialNrBox22); }
|
||||
private void serialNrBox23_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, serialNrBox23); }
|
||||
private void serialNrBox24_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, serialNrBox24); }
|
||||
|
||||
/// <summary>
|
||||
/// Process a key press within any enabled text boxe
|
||||
@@ -497,7 +413,7 @@ namespace TBF.BenchControl.DataEntry.DataStream
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
/// <param name="currentFocusOwner">TextBox control which received the event</param>
|
||||
private void ProcKeyPress(object sender, KeyPressEventArgs e, ComboBox currentFocusOwner)
|
||||
private void ProcKeyPress(object sender, KeyPressEventArgs e, TextBox currentFocusOwner)
|
||||
{
|
||||
if (e.KeyChar == '+')
|
||||
{
|
||||
@@ -507,45 +423,20 @@ namespace TBF.BenchControl.DataEntry.DataStream
|
||||
if (e.KeyChar == '\r')
|
||||
{
|
||||
/// Process <enter> key ..... Next text field
|
||||
if (enabledComboBoxes.Count < 2) return; /// There is just one enabled textbox
|
||||
if (enabledSerialNrBoxes.Count < 2) return; /// There is just one enabled textbox
|
||||
|
||||
for (int i = 0; i < enabledComboBoxes.Count; i++)
|
||||
for (int i = 0; i < enabledSerialNrBoxes.Count; i++)
|
||||
{
|
||||
if (enabledComboBoxes[i] == currentFocusOwner)
|
||||
if (enabledSerialNrBoxes[i] == currentFocusOwner)
|
||||
{
|
||||
/// Change focus to the next enabled text box
|
||||
enabledComboBoxes[(i + 1) % enabledComboBoxes.Count].Focus();
|
||||
enabledSerialNrBoxes[(i + 1) % enabledSerialNrBoxes.Count].Focus();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void comboBox1_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox1); }
|
||||
private void comboBox2_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox2); }
|
||||
private void comboBox3_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox3); }
|
||||
private void comboBox4_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox4); }
|
||||
private void comboBox5_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox5); }
|
||||
private void comboBox6_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox6); }
|
||||
private void comboBox7_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox7); }
|
||||
private void comboBox8_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox8); }
|
||||
private void comboBox9_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox9); }
|
||||
private void comboBox10_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox10); }
|
||||
private void comboBox11_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox11); }
|
||||
private void comboBox12_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox12); }
|
||||
private void comboBox13_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox13); }
|
||||
private void comboBox14_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox14); }
|
||||
private void comboBox15_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox15); }
|
||||
private void comboBox16_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox16); }
|
||||
private void comboBox17_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox17); }
|
||||
private void comboBox18_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox18); }
|
||||
private void comboBox19_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox19); }
|
||||
private void comboBox20_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox20); }
|
||||
private void comboBox21_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox21); }
|
||||
private void comboBox22_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox22); }
|
||||
private void comboBox23_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox23); }
|
||||
private void comboBox24_KeyPress(object sndr, KeyPressEventArgs e) { ProcKeyPress(sndr, e, comboBox24); }
|
||||
|
||||
private void allCheckBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
foreach (var cb in checkBoxes)
|
||||
@@ -554,80 +445,119 @@ namespace TBF.BenchControl.DataEntry.DataStream
|
||||
}
|
||||
}
|
||||
|
||||
private void autoSnButton_Click(object sender, EventArgs e)
|
||||
#region Forced close handling
|
||||
|
||||
public void StartForceCloseHandler()
|
||||
{
|
||||
char[] digits = new char[] {'0','1','2','3','4','5','6','7','8','9'};
|
||||
///
|
||||
/// Find the 1st enabled water meter
|
||||
///
|
||||
int firstIx;
|
||||
string firstSN = string.Empty;
|
||||
for (firstIx = 0; firstIx < DataStreamsCount; firstIx++)
|
||||
UiBridge.Bridge.CloseModelessFormHandler += delegate(object sender, EventArgs args)
|
||||
{
|
||||
if (checkBoxes[firstIx].Checked)
|
||||
{
|
||||
firstSN = comboBoxes[firstIx].Text;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (InvokeRequired) { Invoke(new EventHandler<EventArgs>(OnForceClose), sender, args); }
|
||||
else OnForceClose(sender, args);
|
||||
};
|
||||
}
|
||||
|
||||
int firstSnNr;
|
||||
int startIx = firstSN.IndexOfAny(digits);
|
||||
if (startIx >= 0)
|
||||
{
|
||||
int lastDigitPosPlus1 = startIx + 1;
|
||||
var listOfDigits = new List<char>(digits);
|
||||
while (lastDigitPosPlus1 < firstSN.Length && listOfDigits.Contains(firstSN[lastDigitPosPlus1]))
|
||||
{
|
||||
lastDigitPosPlus1++;
|
||||
}
|
||||
int digitsCount = lastDigitPosPlus1 - startIx;
|
||||
private void OnForceClose(object sender, EventArgs args)
|
||||
{
|
||||
DialogResult = DialogResult.Cancel;
|
||||
Close();
|
||||
}
|
||||
|
||||
if (int.TryParse(firstSN.Substring(startIx, digitsCount), out firstSnNr) && firstSnNr >= 0)
|
||||
{
|
||||
for (int ix = firstIx + 1; ix < DataStreamsCount; ix++)
|
||||
{
|
||||
if (checkBoxes[ix].Checked)
|
||||
{
|
||||
firstSnNr++;
|
||||
string newSN = firstSnNr.ToString();
|
||||
int len = newSN.Length;
|
||||
if (len <= digitsCount)
|
||||
{
|
||||
comboBoxes[ix].Text = firstSN.Substring(0, startIx + digitsCount - len) + newSN + firstSN.Substring(startIx + digitsCount);
|
||||
}
|
||||
else
|
||||
{
|
||||
comboBoxes[ix].Text = firstSN.Substring(0, startIx) + newSN + firstSN.Substring(startIx + digitsCount); ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// Called when communication with one watermeter is completed
|
||||
/// </summary>
|
||||
public static void OnOpenConnStarted(object sender, OpenConnectionEventArgs data)
|
||||
{
|
||||
if (OpenConnStartedHandler == null) return;
|
||||
try { OpenConnStartedHandler(sender, data); }
|
||||
catch (Exception e) { log.Error("OpenConnStartedHandler(...) failed", e); }
|
||||
}
|
||||
public static event EventHandler<OpenConnectionEventArgs> OpenConnStartedHandler;
|
||||
|
||||
void DoOnOpenConnStarted(object sender, OpenConnectionEventArgs data)
|
||||
{
|
||||
busyIx = data.WMNr0;
|
||||
pictures[busyIx].BackColor = BusyColor;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Called when communication with one watermeter is completed
|
||||
/// </summary>
|
||||
public static void OnOpenConnCompleted(object sender, OpenConnCompletedEventArgs data)
|
||||
public static void OnOpenConnCompleted(object sender, OpenConnectionEventArgs data)
|
||||
{
|
||||
if (OpenConnCompletedHandler == null) return;
|
||||
|
||||
try
|
||||
{
|
||||
OpenConnCompletedHandler(sender, data);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
log.Error("OpenConnCompletedHandler(...) failed", e);
|
||||
}
|
||||
try { OpenConnCompletedHandler(sender, data); }
|
||||
catch (Exception e) { log.Error("OpenConnCompletedHandler(...) failed", e); }
|
||||
}
|
||||
public static event EventHandler<OpenConnCompletedEventArgs> OpenConnCompletedHandler;
|
||||
public static event EventHandler<OpenConnectionEventArgs> OpenConnCompletedHandler;
|
||||
|
||||
void DoOnOpenConnCompleted(object sender, OpenConnCompletedEventArgs data)
|
||||
void DoOnOpenConnCompleted(object sender, OpenConnectionEventArgs data)
|
||||
{
|
||||
comboBoxes[data.WMNr0].Text = data.WaterMeterID;
|
||||
checkBoxes[data.WMNr0].Checked = data.Connected;
|
||||
busyIx = -1;
|
||||
int ix = data.WMNr0;
|
||||
|
||||
if (data.Wm != null)
|
||||
{
|
||||
if (data.Wm.Disabled)
|
||||
{
|
||||
/// Disabled in configuration
|
||||
SNText[ix] = Strings.Disabled_in_configuration;
|
||||
pictures[ix].BackColor = DisabledColor;
|
||||
}
|
||||
else
|
||||
{
|
||||
serialNrBoxes[ix].Text = SNText[ix] = string.IsNullOrEmpty(data.WaterMeterID) ? string.Empty : data.WaterMeterID;
|
||||
pictures[ix].BackColor = data.Connected ? OptoOKColor : OptoNokColor;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
serialNrBoxes[ix].Text = SNText[ix] = string.Empty;
|
||||
pictures[ix].BackColor = OptoNokColor;
|
||||
}
|
||||
|
||||
CheckAllOK();
|
||||
}
|
||||
|
||||
void CheckAllOK()
|
||||
{
|
||||
bool allOk = true;
|
||||
for (int i = 0; i < DataStreamsCount; i++)
|
||||
{
|
||||
if (!Disabled[i] && string.IsNullOrEmpty(SNText[i]))
|
||||
{
|
||||
allOk = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (allOk) okButton_Click(this, null);
|
||||
}
|
||||
|
||||
void okButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
formCompleted = true;
|
||||
|
||||
PurchaseOrder = orderComboBox.Text;
|
||||
for (int i = 0; i < DataStreamsCount; i++)
|
||||
{
|
||||
SNText[i] = serialNrBoxes[i].Text;
|
||||
Disabled[i] = !checkBoxes[i].Checked;
|
||||
|
||||
waterMeters[i].SerialNr = serialNrBoxes[i].Text;
|
||||
if (!waterMeters[i].Disabled) waterMeters[i].Disabled = !checkBoxes[i].Checked;
|
||||
}
|
||||
|
||||
Program.LocalSettings.UpdateHistory(orderComboBox.Text, ref Program.LocalSettings.PurchaseOrderHistory);
|
||||
Program.LocalSettings.LastSNTexts = SNText;
|
||||
|
||||
Close();
|
||||
}
|
||||
|
||||
void retryButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
SetCheckBoxStates(Program.LocalSettings.OptoHeadsEnabled);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+8
-5
@@ -5,28 +5,31 @@ using System;
|
||||
|
||||
namespace TBF.BenchControl.DataEntry.DataStream
|
||||
{
|
||||
public class OpenConnCompletedEventArgs : EventArgs
|
||||
public class OpenConnectionEventArgs : EventArgs
|
||||
{
|
||||
public int WMNr0; /// 0-based water meter position
|
||||
public bool IsLast;
|
||||
public Results.Entities.WaterMeter Wm;
|
||||
public bool Connected;
|
||||
public string WaterMeterID;
|
||||
|
||||
public OpenConnCompletedEventArgs(int wmNr0, Results.Entities.WaterMeter wm, bool connected, string waterMeterID)
|
||||
public OpenConnectionEventArgs(int wmNr0, bool isLast, Results.Entities.WaterMeter wm = null, bool connected = false, string waterMeterID = null)
|
||||
{
|
||||
this.WMNr0 = wmNr0;
|
||||
this.IsLast = isLast;
|
||||
this.Wm = wm;
|
||||
this.Connected = connected;
|
||||
this.WaterMeterID = connected ? waterMeterID : string.Empty;
|
||||
this.WaterMeterID = connected ? waterMeterID : null;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return string.Format("WMNr0={0} IHead={1} WM={2} CommMsg={3} CommErr={4}",
|
||||
return string.Format("WMNr0={0} Last={1} WMPos={2} connected={3} S/N={4}",
|
||||
WMNr0,
|
||||
IsLast,
|
||||
Wm.WMPosition,
|
||||
Connected,
|
||||
WaterMeterID);
|
||||
string.IsNullOrEmpty(WaterMeterID) ? string.Empty : WaterMeterID);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user