2015-04-15 18:32:56 +00:00
|
|
|
|
///
|
2022-01-25 17:27:00 +00:00
|
|
|
|
/// Copyright (c) 2013-2022 Sensus Slovensko a.s.
|
2015-04-15 18:32:56 +00:00
|
|
|
|
///
|
2022-11-16 16:24:48 +00:00
|
|
|
|
#if KEMPNO_50 || KRAKOW_50 || TORUN_50 || WARSAW_50 || WARSAW_END
|
|
|
|
|
|
#define SHOW_Q_TG
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
2015-04-15 18:32:56 +00:00
|
|
|
|
using System;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.Linq;
|
2016-05-02 08:19:26 +00:00
|
|
|
|
using System.Text;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
|
using log4net;
|
2021-09-23 09:46:40 +00:00
|
|
|
|
using Common;
|
2022-01-23 12:58:54 +00:00
|
|
|
|
using Common.Forms;
|
2022-05-23 08:38:14 +00:00
|
|
|
|
using Config.Entities;
|
2021-10-26 09:23:57 +00:00
|
|
|
|
using TBF.Rig.Generic;
|
|
|
|
|
|
using TBF.Rig.GenericDevices;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
using TBF.Resources;
|
2019-09-16 08:51:25 +00:00
|
|
|
|
using TBF.UI.Shared;
|
2021-10-26 09:23:57 +00:00
|
|
|
|
using TBF.Rig.TestMethods.iPerlCommunication.iPerlHead;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
2019-09-16 08:51:25 +00:00
|
|
|
|
namespace TBF.UI.Procedures
|
2014-07-28 07:54:35 +00:00
|
|
|
|
{
|
|
|
|
|
|
public partial class ProcedureDlg : Form, IParentOfListViewEx
|
|
|
|
|
|
{
|
2021-01-13 11:57:56 +00:00
|
|
|
|
public enum Mode
|
|
|
|
|
|
{
|
|
|
|
|
|
Unlocked,
|
|
|
|
|
|
Locked,
|
|
|
|
|
|
PermanentlyLocked,
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2014-07-28 07:54:35 +00:00
|
|
|
|
static readonly ILog log = LogManager.GetLogger(typeof(ProcedureDlg));
|
|
|
|
|
|
|
|
|
|
|
|
/// Used when re-scaling the dialog: 100% = 96dpi, 125% = 120dpi, 150% = 144dpi
|
|
|
|
|
|
public readonly int Dpi;
|
|
|
|
|
|
|
2021-01-13 11:57:56 +00:00
|
|
|
|
readonly Mode initialMode;
|
2019-07-18 12:02:53 +00:00
|
|
|
|
|
2014-07-28 07:54:35 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Procedure to be updated by this dialog.
|
|
|
|
|
|
/// Set by the constructor or updated by the parent after creation and before loading.
|
|
|
|
|
|
/// </summary>
|
2015-12-04 16:17:20 +00:00
|
|
|
|
public Procedure LoadedProcedure;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
public int SelectedTestIx; /// -1 = none, 0 = 1st = top
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
IList<string> usedNames; /// Already used names
|
2017-06-29 14:58:59 +00:00
|
|
|
|
|
2014-07-28 07:54:35 +00:00
|
|
|
|
/// Auxiliary public lists used also by user controls in tab pages
|
2021-10-26 09:23:57 +00:00
|
|
|
|
public IList<Rig.Generic.IComponent> TbfComponents;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
public IList<IValve> Valves;
|
2021-09-23 09:46:40 +00:00
|
|
|
|
public IList<IRegValve> RegulValves;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
public IList<ITestMethod> TestMethods;
|
|
|
|
|
|
public IList<ITestMethod> UsedTestMethods;
|
2022-05-19 14:31:09 +00:00
|
|
|
|
public IList<ITempControl> TempControllers;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
ComboBox methodCBox;
|
|
|
|
|
|
|
|
|
|
|
|
/// Auxiliary private lists
|
|
|
|
|
|
IList<FeedingPath> feedingPaths;
|
|
|
|
|
|
IList<BenchPath> benchPaths;
|
|
|
|
|
|
IList<OutputPath> outputPaths;
|
|
|
|
|
|
IList<MetersPath> metersPaths;
|
2016-06-28 16:04:52 +00:00
|
|
|
|
IList<HeatMetersPath> heatMetersPaths;
|
|
|
|
|
|
IList<TransitionSequence> transitionSequences;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
|
|
|
|
|
IList<TestParamsCtrl> testParamsCtrls;
|
2020-12-08 10:11:53 +00:00
|
|
|
|
IList<IProcParamsCtrl> procedureParamsCtrls;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
|
|
|
|
|
bool unlocked;
|
|
|
|
|
|
|
2022-05-23 08:38:14 +00:00
|
|
|
|
ProcedureDlg()
|
2014-07-28 07:54:35 +00:00
|
|
|
|
{
|
|
|
|
|
|
/// Detect display setting: 100% = 96dpi, 125% = 120dpi, 150% = 144dpi.
|
|
|
|
|
|
Dpi = (int)this.CreateGraphics().DpiX;
|
2021-01-13 11:57:56 +00:00
|
|
|
|
initialMode = Mode.Locked;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
|
|
2019-10-01 11:45:21 +00:00
|
|
|
|
/// SharedDlgButtons configuration
|
2021-03-30 08:05:53 +00:00
|
|
|
|
sharedButtons.OptionalButtons = SharedButtons.Buttons.Add |
|
|
|
|
|
|
SharedButtons.Buttons.Remove |
|
|
|
|
|
|
SharedButtons.Buttons.Up |
|
|
|
|
|
|
SharedButtons.Buttons.Down |
|
|
|
|
|
|
SharedButtons.Buttons.Copy;
|
2019-10-01 11:45:21 +00:00
|
|
|
|
#if TURA_SPECIAL || TURA_IPERL || TURA_IPERL_NEW
|
2021-09-19 20:04:16 +00:00
|
|
|
|
/// Custom button 'Načítaj testy iPerl z Oracle'
|
2021-03-30 08:05:53 +00:00
|
|
|
|
sharedButtons.OptionalButtons |= SharedButtons.Buttons.Custom1;
|
2019-10-01 11:45:21 +00:00
|
|
|
|
sharedButtons.Custom1Caption = string.Format("Načítaj testy{0}iPerl z Oracle", Environment.NewLine);
|
|
|
|
|
|
sharedButtons.Custom1Clicked += iPerlWizardButton_Click;
|
|
|
|
|
|
#endif
|
|
|
|
|
|
sharedButtons.Unlocked += Unlocked;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
sharedButtons.OKClicked += okButton_Click;
|
|
|
|
|
|
sharedButtons.CancelClicked += cancelButton_Click;
|
|
|
|
|
|
sharedButtons.AddClicked += addButton_Click;
|
|
|
|
|
|
sharedButtons.RemoveClicked += removeButton_Click;
|
|
|
|
|
|
sharedButtons.UpClicked += upButton_Click;
|
|
|
|
|
|
sharedButtons.DownClicked += downButton_Click;
|
2020-11-02 08:34:56 +00:00
|
|
|
|
sharedButtons.CopyClicked += copyButton_Click;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
|
|
|
|
|
/// ListViewEx-es configuration
|
2019-09-16 08:51:25 +00:00
|
|
|
|
metrology1ListViewEx.SubItemClicked += new SubItemEventHandler(metrology1ListViewEx_SubItemClicked);
|
|
|
|
|
|
metrology1ListViewEx.SubItemRightClicked += new SubItemEventHandler(metrology1ListViewEx_SubItemRightClicked);
|
|
|
|
|
|
metrology1ListViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(metrology1ListViewEx_SubItemEndEditing);
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
2019-09-16 08:51:25 +00:00
|
|
|
|
metrology2ListViewEx.SubItemClicked += new SubItemEventHandler(metrology2ListViewEx_SubItemClicked);
|
|
|
|
|
|
metrology2ListViewEx.SubItemRightClicked += new SubItemEventHandler(metrology2ListViewEx_SubItemRightClicked);
|
|
|
|
|
|
metrology2ListViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(metrology2ListViewEx_SubItemEndEditing);
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
2019-09-16 08:51:25 +00:00
|
|
|
|
processListViewEx.SubItemClicked += new SubItemEventHandler(processListViewEx_SubItemClicked);
|
|
|
|
|
|
processListViewEx.SubItemRightClicked += new SubItemEventHandler(processListViewEx_SubItemRightClicked);
|
|
|
|
|
|
processListViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(processListViewEx_SubItemEndEditing);
|
2015-01-17 05:34:24 +00:00
|
|
|
|
|
2019-09-16 08:51:25 +00:00
|
|
|
|
parametersListViewEx.SubItemClicked += new SubItemEventHandler(parametersListViewEx_SubItemClicked);
|
|
|
|
|
|
parametersListViewEx.SubItemRightClicked += new SubItemEventHandler(parametersListViewEx_SubItemRightClicked);
|
|
|
|
|
|
parametersListViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(parametersListViewEx_SubItemEndEditing);
|
2018-05-22 13:33:07 +00:00
|
|
|
|
|
|
|
|
|
|
SelectedTestIx = -1;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-05-23 08:38:14 +00:00
|
|
|
|
public ProcedureDlg(Procedure procedure, IList<string> usedNames, Mode initialMode, Form parentForm)
|
2014-07-28 07:54:35 +00:00
|
|
|
|
: this()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (procedure == null) throw new ArgumentNullException("procedure");
|
|
|
|
|
|
|
2019-07-18 12:02:53 +00:00
|
|
|
|
LoadedProcedure = procedure;
|
2017-06-29 14:58:59 +00:00
|
|
|
|
this.usedNames = usedNames;
|
2021-01-13 11:57:56 +00:00
|
|
|
|
this.initialMode = initialMode;
|
2017-06-29 14:58:59 +00:00
|
|
|
|
|
2022-05-23 08:38:14 +00:00
|
|
|
|
/// Dynamic SharedDlgButtons configuration
|
|
|
|
|
|
sharedButtons.ParentForm = parentForm;
|
|
|
|
|
|
|
2022-11-16 16:24:48 +00:00
|
|
|
|
#if KEMPNO_50 || KRAKOW_50 || TORUN_50 || WARSAW_50 || WARSAW_END
|
2021-09-23 09:46:40 +00:00
|
|
|
|
sharedButtons.RequiredGroupMembership = procedure.Protected ? new GID[] { GID.WaterMeterAuthority }
|
|
|
|
|
|
: new GID[] { GID.TestingSpecialists, GID.WaterMeterAuthority };
|
2019-09-04 14:43:29 +00:00
|
|
|
|
#else
|
2021-09-23 09:46:40 +00:00
|
|
|
|
sharedButtons.RequiredGroupMembership = procedure.Protected ? new GID[] { GID.Metrologists }
|
|
|
|
|
|
: new GID[] { GID.TestingSpecialists, GID.Metrologists };
|
2019-09-04 14:43:29 +00:00
|
|
|
|
#endif
|
2021-01-13 11:57:56 +00:00
|
|
|
|
if (initialMode == Mode.PermanentlyLocked) sharedButtons.DisableUnlock();
|
|
|
|
|
|
|
2021-09-23 09:46:40 +00:00
|
|
|
|
using (NHibernate.ISession session = TBF.DB.CreateSession(DBKind.Config))
|
2014-07-28 07:54:35 +00:00
|
|
|
|
{
|
2019-10-01 11:45:21 +00:00
|
|
|
|
///
|
|
|
|
|
|
/// Prepare a list of components and a list of all valves in the test bench
|
|
|
|
|
|
///
|
2021-10-26 09:23:57 +00:00
|
|
|
|
TbfComponents = Rig.TbfComponents.LoadComponentsFromDB(session);
|
|
|
|
|
|
Valves = Rig.GenericDevices.ValveBase.MasterValves(TbfComponents);
|
2021-09-23 09:46:40 +00:00
|
|
|
|
RegulValves = new List<IRegValve>();
|
2014-07-28 07:54:35 +00:00
|
|
|
|
TestMethods = new List<ITestMethod>();
|
2022-05-19 14:31:09 +00:00
|
|
|
|
TempControllers = new List<ITempControl>();
|
2015-08-30 06:31:53 +00:00
|
|
|
|
dataEntryComboBox.Items.Add("---");
|
2016-05-02 08:19:26 +00:00
|
|
|
|
printer1ComboBox.Items.Add("---");
|
2016-05-03 12:07:26 +00:00
|
|
|
|
printer2ComboBox.Items.Add("---");
|
|
|
|
|
|
fileWriter1ComboBox.Items.Add("---");
|
2016-05-02 08:19:26 +00:00
|
|
|
|
fileWriter2ComboBox.Items.Add("---");
|
2016-05-03 12:07:26 +00:00
|
|
|
|
fileWriter3ComboBox.Items.Add("---");
|
|
|
|
|
|
fileWriter4ComboBox.Items.Add("---");
|
2021-05-17 08:20:23 +00:00
|
|
|
|
fileWriter5ComboBox.Items.Add("---");
|
2020-03-05 12:59:43 +00:00
|
|
|
|
eventTrigger1ComboBox.Items.Add("---");
|
|
|
|
|
|
eventTrigger2ComboBox.Items.Add("---");
|
|
|
|
|
|
eventTrigger3ComboBox.Items.Add("---");
|
2019-10-01 11:45:21 +00:00
|
|
|
|
|
2016-04-29 14:58:23 +00:00
|
|
|
|
foreach (var cmpnt in TbfComponents)
|
2014-07-28 07:54:35 +00:00
|
|
|
|
{
|
2021-09-23 09:46:40 +00:00
|
|
|
|
if (cmpnt is IRegValve) RegulValves.Add(cmpnt as IRegValve);
|
2014-07-28 07:54:35 +00:00
|
|
|
|
if (cmpnt is ITestMethod) TestMethods.Add(cmpnt as ITestMethod);
|
2022-05-19 14:31:09 +00:00
|
|
|
|
if (cmpnt is ITempControl) TempControllers.Add(cmpnt as ITempControl);
|
|
|
|
|
|
if (cmpnt is IDataEntry) dataEntryComboBox.Items.Add(cmpnt.Cfg.Name);
|
2016-05-03 12:07:26 +00:00
|
|
|
|
if (cmpnt is IResultsPrinter)
|
|
|
|
|
|
{
|
|
|
|
|
|
printer1ComboBox.Items.Add(cmpnt.Cfg.Name);
|
|
|
|
|
|
printer2ComboBox.Items.Add(cmpnt.Cfg.Name);
|
|
|
|
|
|
}
|
2016-04-29 14:58:23 +00:00
|
|
|
|
if (cmpnt is IResultsWriter)
|
|
|
|
|
|
{
|
2016-05-02 08:19:26 +00:00
|
|
|
|
fileWriter1ComboBox.Items.Add(cmpnt.Cfg.Name);
|
|
|
|
|
|
fileWriter2ComboBox.Items.Add(cmpnt.Cfg.Name);
|
2016-05-03 12:07:26 +00:00
|
|
|
|
fileWriter3ComboBox.Items.Add(cmpnt.Cfg.Name);
|
|
|
|
|
|
fileWriter4ComboBox.Items.Add(cmpnt.Cfg.Name);
|
2021-05-17 08:20:23 +00:00
|
|
|
|
fileWriter5ComboBox.Items.Add(cmpnt.Cfg.Name);
|
2016-04-29 14:58:23 +00:00
|
|
|
|
}
|
2020-03-05 12:59:43 +00:00
|
|
|
|
if (cmpnt is IEventTrigger)
|
|
|
|
|
|
{
|
|
|
|
|
|
eventTrigger1ComboBox.Items.Add(cmpnt.Cfg.Name);
|
|
|
|
|
|
eventTrigger2ComboBox.Items.Add(cmpnt.Cfg.Name);
|
|
|
|
|
|
eventTrigger3ComboBox.Items.Add(cmpnt.Cfg.Name);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
2019-10-01 11:45:21 +00:00
|
|
|
|
///
|
|
|
|
|
|
/// Loads paths, this must be done before PrepareMetrology12AndProcessTabs() call
|
|
|
|
|
|
///
|
|
|
|
|
|
feedingPaths = session.QueryOver<FeedingPath>().List();
|
2016-12-02 10:04:33 +00:00
|
|
|
|
benchPaths = session.QueryOver<BenchPath>().List();
|
|
|
|
|
|
outputPaths = session.QueryOver<OutputPath>().List();
|
|
|
|
|
|
metersPaths = session.QueryOver<MetersPath>().List();
|
2017-02-14 12:25:43 +00:00
|
|
|
|
#if HEAT_METERS
|
2016-12-02 10:04:33 +00:00
|
|
|
|
heatMetersPaths = session.QueryOver<HeatMetersPath>().List();
|
|
|
|
|
|
#else
|
|
|
|
|
|
heatMetersPaths = new List<HeatMetersPath>();
|
2016-06-28 16:04:52 +00:00
|
|
|
|
#endif
|
2016-12-02 10:04:33 +00:00
|
|
|
|
transitionSequences = session.QueryOver<TransitionSequence>().List();
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2015-08-30 06:31:53 +00:00
|
|
|
|
transitionStartComboBox.Items.Add("---");
|
|
|
|
|
|
transitionEndComboBox.Items.Add("---");
|
2014-07-28 07:54:35 +00:00
|
|
|
|
foreach (var trans in transitionSequences)
|
|
|
|
|
|
{
|
|
|
|
|
|
transitionStartComboBox.Items.Add(trans.Name);
|
|
|
|
|
|
transitionEndComboBox.Items.Add(trans.Name);
|
|
|
|
|
|
}
|
2015-08-30 06:31:53 +00:00
|
|
|
|
|
|
|
|
|
|
///--------------------------------------------------------------------------------------
|
|
|
|
|
|
///-------------------------- Tab pages with test parameters --------------------------
|
|
|
|
|
|
///--------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
testParamsCtrls = new List<TestParamsCtrl>(); /// Initialize the list
|
|
|
|
|
|
|
|
|
|
|
|
///---------------------
|
|
|
|
|
|
/// Used test methods
|
|
|
|
|
|
///---------------------
|
|
|
|
|
|
|
2014-07-28 07:54:35 +00:00
|
|
|
|
/// Find all test methods used in this procedure
|
|
|
|
|
|
UsedTestMethods = new List<ITestMethod>();
|
|
|
|
|
|
foreach (var test in LoadedProcedure.Tests)
|
|
|
|
|
|
{
|
2021-10-26 09:23:57 +00:00
|
|
|
|
ITestMethod method = Rig.TbfComponents.FindComponent(test.Method, TbfComponents) as ITestMethod;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
if (method != null && !UsedTestMethods.Contains(method)) UsedTestMethods.Add(method);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// Create a tab with a TestParamsCtrl control for each used test method
|
|
|
|
|
|
foreach (var method in UsedTestMethods)
|
|
|
|
|
|
{
|
2018-05-10 11:25:46 +00:00
|
|
|
|
if (method.Cfg.GetRuntimeTestParamsProvider() != null)
|
2014-07-28 07:54:35 +00:00
|
|
|
|
{
|
2020-12-08 10:11:53 +00:00
|
|
|
|
var nwCtrl = new TestParamsCtrl(this, method, true);
|
2018-05-22 13:33:07 +00:00
|
|
|
|
testParamsCtrls.Add(nwCtrl);
|
|
|
|
|
|
|
|
|
|
|
|
TabPage nwTab = new TabPage(method.Cfg.Name);
|
|
|
|
|
|
nwTab.Controls.Add(nwCtrl);
|
|
|
|
|
|
nwTab.Tag = nwCtrl;
|
|
|
|
|
|
tabControl.TabPages.Add(nwTab);
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2015-08-30 06:31:53 +00:00
|
|
|
|
/// Create a control for another component with Test parameters which was not handled yet
|
|
|
|
|
|
foreach (var cmpnt in TbfComponents)
|
2014-07-28 07:54:35 +00:00
|
|
|
|
{
|
2018-05-10 11:25:46 +00:00
|
|
|
|
if ((cmpnt.Cfg.GetRuntimeTestParamsProvider() != null) && !(cmpnt is ITestMethod))
|
2015-08-30 06:31:53 +00:00
|
|
|
|
{
|
2020-12-08 10:11:53 +00:00
|
|
|
|
var nwCtrl = new TestParamsCtrl(this, cmpnt, true);
|
2018-05-22 13:33:07 +00:00
|
|
|
|
testParamsCtrls.Add(nwCtrl);
|
|
|
|
|
|
|
|
|
|
|
|
TabPage nwTab = new TabPage(cmpnt.Cfg.Name);
|
2015-08-30 06:31:53 +00:00
|
|
|
|
nwTab.Controls.Add(nwCtrl);
|
2018-05-22 13:33:07 +00:00
|
|
|
|
nwTab.Tag = nwCtrl;
|
|
|
|
|
|
this.tabControl.TabPages.Add(nwTab);
|
2015-08-30 06:31:53 +00:00
|
|
|
|
}
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2015-08-30 06:31:53 +00:00
|
|
|
|
///--------------------------------------------------------------------------------------
|
|
|
|
|
|
///----------------------- Tab pages with procedure parameters ------------------------
|
|
|
|
|
|
///--------------------------------------------------------------------------------------
|
|
|
|
|
|
|
2020-12-08 10:11:53 +00:00
|
|
|
|
procedureParamsCtrls = new List<IProcParamsCtrl>(); /// Initialize the list
|
2015-08-30 06:31:53 +00:00
|
|
|
|
|
|
|
|
|
|
///----------------
|
|
|
|
|
|
/// Water meters
|
|
|
|
|
|
///----------------
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
|
|
|
|
|
/// Create a control for the water meters and add it to the list.
|
|
|
|
|
|
IList<IComponent> waterMeters = new List<IComponent>();
|
|
|
|
|
|
foreach (var cmpnt in TbfComponents)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (cmpnt is IWaterMeter) waterMeters.Add(cmpnt);
|
|
|
|
|
|
}
|
2015-08-30 06:31:53 +00:00
|
|
|
|
|
|
|
|
|
|
{
|
2020-12-08 10:11:53 +00:00
|
|
|
|
var newCtrl = new ProcedureParamsCtrl(this, waterMeters, false);
|
2018-05-22 13:33:07 +00:00
|
|
|
|
procedureParamsCtrls.Add(newCtrl);
|
|
|
|
|
|
|
|
|
|
|
|
TabPage newTab = new TabPage(Strings.Water_meters);
|
2015-08-30 06:31:53 +00:00
|
|
|
|
newTab.Controls.Add(newCtrl);
|
2018-05-22 13:33:07 +00:00
|
|
|
|
newTab.Tag = newCtrl;
|
|
|
|
|
|
tabControl.TabPages.Add(newTab);
|
2015-08-30 06:31:53 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
///---------------------
|
|
|
|
|
|
/// Used sensor paths
|
|
|
|
|
|
///---------------------
|
|
|
|
|
|
|
|
|
|
|
|
/// Prepare a list of all meters paths used in this procedure (in any test)
|
|
|
|
|
|
IList<string> usedMPaths = new List<string>();
|
|
|
|
|
|
foreach (var test in LoadedProcedure.Tests)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (test.MetersPath != null && !usedMPaths.Contains(test.MetersPath)) usedMPaths.Add(test.MetersPath);
|
|
|
|
|
|
}
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
|
|
|
|
|
/// Create controls for each sensors path used in this procedure.
|
|
|
|
|
|
/// Initialize it with its components (sensors or cameras) and add it to the list.
|
|
|
|
|
|
foreach (var usedPathName in usedMPaths)
|
|
|
|
|
|
{
|
2015-12-04 16:17:20 +00:00
|
|
|
|
MetersPath usedPath = null;
|
|
|
|
|
|
try { usedPath = metersPaths.First<MetersPath>(x => (x.Name == usedPathName)); }
|
2014-07-28 07:54:35 +00:00
|
|
|
|
catch { }
|
|
|
|
|
|
if (usedPath != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
IList<IComponent> cmpntsInMPath = new List<IComponent>();
|
2021-09-19 20:04:16 +00:00
|
|
|
|
for (int i = 0; i < TBF.Data.WMsCount; i++)
|
2014-07-28 07:54:35 +00:00
|
|
|
|
{
|
|
|
|
|
|
IComponent sensor = TbfComponents.FirstOrDefault<IComponent>(x => (x.Cfg.Name.Equals(usedPath.GetSensor(i))));
|
|
|
|
|
|
cmpntsInMPath.Add(sensor);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2020-12-08 10:11:53 +00:00
|
|
|
|
var nwCtrl = new ProcedureParamsCtrl(this, cmpntsInMPath, true);
|
2018-05-22 13:33:07 +00:00
|
|
|
|
procedureParamsCtrls.Add(nwCtrl);
|
|
|
|
|
|
|
|
|
|
|
|
TabPage nwTab = new TabPage(usedPathName);
|
2015-08-30 06:31:53 +00:00
|
|
|
|
nwTab.Controls.Add(nwCtrl);
|
2018-05-22 13:33:07 +00:00
|
|
|
|
nwTab.Tag = nwCtrl;
|
|
|
|
|
|
tabControl.TabPages.Add(nwTab);
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-03-09 15:13:23 +00:00
|
|
|
|
///---------------------
|
|
|
|
|
|
/// Other components
|
|
|
|
|
|
///---------------------
|
|
|
|
|
|
|
2020-12-08 10:11:53 +00:00
|
|
|
|
/// Create a control for some other components and add it to the list.
|
2017-03-09 15:13:23 +00:00
|
|
|
|
IList<IComponent> other = new List<IComponent>();
|
|
|
|
|
|
foreach (var cmpnt in TbfComponents)
|
2014-07-28 07:54:35 +00:00
|
|
|
|
{
|
2022-09-02 11:01:13 +00:00
|
|
|
|
if (!(cmpnt is IRegReader) && !(cmpnt is IWaterMeter) && cmpnt.Cfg.CreateProcParamsProvider() != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
other.Add(cmpnt);
|
|
|
|
|
|
}
|
2020-11-04 12:29:27 +00:00
|
|
|
|
}
|
2017-03-09 15:13:23 +00:00
|
|
|
|
|
|
|
|
|
|
if (other.Count > 0)
|
|
|
|
|
|
{
|
2020-12-08 10:11:53 +00:00
|
|
|
|
var newCtrl = new ProcedureParamsMixedCtrl(this, other);
|
2018-05-22 13:33:07 +00:00
|
|
|
|
procedureParamsCtrls.Add(newCtrl);
|
|
|
|
|
|
|
2020-11-04 12:29:27 +00:00
|
|
|
|
TabPage newTab = new TabPage("More...");
|
2017-03-09 15:13:23 +00:00
|
|
|
|
newTab.Controls.Add(newCtrl);
|
2018-05-22 13:33:07 +00:00
|
|
|
|
newTab.Tag = newCtrl;
|
|
|
|
|
|
tabControl.TabPages.Add(newTab);
|
2015-08-30 06:31:53 +00:00
|
|
|
|
}
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void ProcedureDlg_Load(object sender, EventArgs e)
|
|
|
|
|
|
{
|
2015-09-25 07:22:11 +00:00
|
|
|
|
Localize();
|
|
|
|
|
|
|
2014-07-28 07:54:35 +00:00
|
|
|
|
if (LoadedProcedure == null) return; /// return in case the dialog is open in the designer
|
|
|
|
|
|
|
2019-07-12 11:25:32 +00:00
|
|
|
|
LoadUISettings();
|
2014-09-07 07:34:28 +00:00
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
/// Enable/disable/show/hide controls in General tab
|
2022-11-16 16:24:48 +00:00
|
|
|
|
#if KEMPNO_50 || KRAKOW_50 || TORUN_50 || WARSAW_50 || WARSAW_END
|
2018-05-22 13:33:07 +00:00
|
|
|
|
altProcNameLabel.Visible = true;
|
|
|
|
|
|
altProcNameTextBox.Visible = true;
|
2019-10-01 11:45:21 +00:00
|
|
|
|
//altProcPeriodLabel.Visible = true;
|
|
|
|
|
|
//altProcPeriodTextBox.Visible = true;
|
2017-07-24 06:32:56 +00:00
|
|
|
|
#endif
|
2018-05-22 13:33:07 +00:00
|
|
|
|
procNameTextBox.Enabled = false;
|
|
|
|
|
|
descriptionTextBox.Enabled = false;
|
|
|
|
|
|
watermetersTextBox.Enabled = false;
|
2017-05-03 20:19:26 +00:00
|
|
|
|
protectedCheckBox.Enabled = false;
|
|
|
|
|
|
mustBeCompleteCheckBox.Enabled = false;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
manualControlDisabledCheckBox.Enabled = false;
|
2017-06-26 14:11:47 +00:00
|
|
|
|
altProcNameTextBox.Enabled = false;
|
|
|
|
|
|
altProcPeriodTextBox.Enabled = false;
|
2017-05-03 20:19:26 +00:00
|
|
|
|
dataEntryComboBox.Enabled = false;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
transitionStartComboBox.Enabled = false;
|
|
|
|
|
|
transitionEndComboBox.Enabled = false;
|
2016-05-02 08:19:26 +00:00
|
|
|
|
printer1ComboBox.Enabled = false;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
printer2ComboBox.Enabled = false;
|
|
|
|
|
|
fileWriter1ComboBox.Enabled = false;
|
2016-05-02 08:19:26 +00:00
|
|
|
|
fileWriter2ComboBox.Enabled = false;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
fileWriter3ComboBox.Enabled = false;
|
|
|
|
|
|
fileWriter4ComboBox.Enabled = false;
|
2021-05-17 08:20:23 +00:00
|
|
|
|
fileWriter5ComboBox.Enabled = false;
|
2020-03-05 12:59:43 +00:00
|
|
|
|
eventTrigger1ComboBox.Enabled = false;
|
|
|
|
|
|
eventTrigger2ComboBox.Enabled = false;
|
|
|
|
|
|
eventTrigger3ComboBox.Enabled = false;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
metersKindRadioButton1.Enabled = false;
|
|
|
|
|
|
metersKindRadioButton2.Enabled = false;
|
2016-06-28 16:04:52 +00:00
|
|
|
|
metersKindRadioButton3.Enabled = false;
|
|
|
|
|
|
notesTextBox.Enabled = false;
|
2017-02-14 12:25:43 +00:00
|
|
|
|
#if !HEAT_METERS
|
2016-06-28 16:04:52 +00:00
|
|
|
|
metersKindRadioButton3.Visible = false;
|
|
|
|
|
|
#endif
|
2018-05-22 13:33:07 +00:00
|
|
|
|
/// Make some controls readonly
|
2014-07-28 07:54:35 +00:00
|
|
|
|
createdByTextBox.ReadOnly = true;
|
|
|
|
|
|
createdOnTextBox.ReadOnly = true;
|
|
|
|
|
|
lastChangedByTextBox.ReadOnly = true;
|
|
|
|
|
|
lastChangedOnTextBox.ReadOnly = true;
|
|
|
|
|
|
|
2021-11-03 10:09:34 +00:00
|
|
|
|
foreach (var test in LoadedProcedure.Tests)
|
|
|
|
|
|
{
|
2022-05-31 14:08:00 +00:00
|
|
|
|
test.VolumeUnit = TBF.Rig.Sequences.ProcessData.VolumeUnit;
|
|
|
|
|
|
test.FlowUnit = TBF.Rig.Sequences.ProcessData.FlowUnit;
|
|
|
|
|
|
test.MassUnit = TBF.Rig.Sequences.ProcessData.MassUnit;
|
|
|
|
|
|
test.TempUnit = TBF.Rig.Sequences.ProcessData.TempUnit;
|
|
|
|
|
|
test.PressUnit = TBF.Rig.Sequences.ProcessData.PressUnit;
|
|
|
|
|
|
test.LengthUnit = TBF.Rig.Sequences.ProcessData.LengthUnit;
|
2021-11-03 10:09:34 +00:00
|
|
|
|
test.ResetChngdFlags();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
/// History tab
|
|
|
|
|
|
InitializeHistoryTab(); /// Create ListViewEx columns for 'History of changes'
|
|
|
|
|
|
|
|
|
|
|
|
/// LisViewEx columns and edit controls for 'Metrology1', 'Metrology2', 'Process' and 'Parameters' tabs
|
|
|
|
|
|
PrepareMetrology1Tab();
|
|
|
|
|
|
PrepareMetrology2Tab();
|
|
|
|
|
|
PrepareProcess();
|
|
|
|
|
|
PrepareParameters();
|
|
|
|
|
|
|
2014-07-28 07:54:35 +00:00
|
|
|
|
/// Now refresh the content of the dialog
|
2018-05-22 13:33:07 +00:00
|
|
|
|
RefreshGeneralTab();
|
|
|
|
|
|
RefreshMetrology1Tab();
|
|
|
|
|
|
RefreshMetrology2Tab();
|
|
|
|
|
|
RefreshProcessTab();
|
|
|
|
|
|
RefreshParametersTab();
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var ctrl in testParamsCtrls)
|
2014-07-28 07:54:35 +00:00
|
|
|
|
{
|
|
|
|
|
|
ctrl.Initialize();
|
|
|
|
|
|
}
|
|
|
|
|
|
foreach (var ctrl in procedureParamsCtrls)
|
|
|
|
|
|
{
|
|
|
|
|
|
ctrl.Initialize();
|
|
|
|
|
|
}
|
2019-07-18 12:02:53 +00:00
|
|
|
|
|
|
|
|
|
|
/// Optionally unlock this dialog
|
2021-01-13 11:57:56 +00:00
|
|
|
|
if (initialMode == Mode.Unlocked)
|
2019-07-18 12:02:53 +00:00
|
|
|
|
{
|
|
|
|
|
|
sharedButtons.UnlockButtons();
|
|
|
|
|
|
Unlocked(sender, e);
|
|
|
|
|
|
}
|
2021-05-17 08:20:23 +00:00
|
|
|
|
|
|
|
|
|
|
ShowNokComponents();
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2015-09-25 07:22:11 +00:00
|
|
|
|
void Localize()
|
|
|
|
|
|
{
|
2016-06-28 16:04:52 +00:00
|
|
|
|
Text = Strings.Procedure;
|
|
|
|
|
|
|
|
|
|
|
|
generalTabPage.Text = Strings.General;
|
|
|
|
|
|
historyTabPage.Text = Strings.History_of_changes;
|
|
|
|
|
|
metrology1TabPage.Text = Strings.Metrology + " I.";
|
|
|
|
|
|
metrology2TabPage.Text = Strings.Metrology + " II.";
|
|
|
|
|
|
processTabPage.Text = Strings.Process;
|
|
|
|
|
|
parametersTabPage.Text = Strings.Parameters;
|
|
|
|
|
|
|
|
|
|
|
|
label1.Text = Strings.Procedure_name;
|
|
|
|
|
|
label12.Text = Strings.Short_description;
|
|
|
|
|
|
label13.Text = Strings.Created_by;
|
|
|
|
|
|
label16.Text = Strings.Last_changed_by;
|
|
|
|
|
|
label14.Text = Strings.Date;
|
|
|
|
|
|
label15.Text = Strings.Date;
|
|
|
|
|
|
label18.Text = Strings.Notes;
|
|
|
|
|
|
watermetersLabel.Text = Strings.Meter_types_tested;
|
2019-11-27 10:22:32 +00:00
|
|
|
|
testProfileLabel.Text = Strings.Test_profiles;
|
2019-10-01 11:45:21 +00:00
|
|
|
|
altProcNameLabel.Text = Strings.Conditions;
|
2017-05-03 20:19:26 +00:00
|
|
|
|
protectedCheckBox.Text = Strings.Protected_procedure;
|
|
|
|
|
|
mustBeCompleteCheckBox.Text = Strings.All_tests_must_be_completed;
|
|
|
|
|
|
manualControlDisabledCheckBox.Text = Strings.Manual_control_disabled;
|
2016-06-28 16:04:52 +00:00
|
|
|
|
dataEntryLabel.Text = Strings.Data_entry;
|
|
|
|
|
|
transitionStartLabel.Text = Strings.Purge_Begin;
|
|
|
|
|
|
transitionEndLabel.Text = Strings.Purge_End;
|
2020-03-05 12:59:43 +00:00
|
|
|
|
printersLabel.Text = Strings.Printing;
|
|
|
|
|
|
fileWritersLabel.Text = Strings.Saving_results;
|
|
|
|
|
|
eventTriggersLabel.Text = Strings.Event_triggers;
|
2016-06-28 16:04:52 +00:00
|
|
|
|
|
2015-09-25 07:22:11 +00:00
|
|
|
|
metersKindRadioButton1.Text = Strings.SingleBtnText;
|
2016-06-28 16:04:52 +00:00
|
|
|
|
metersKindRadioButton2.Text = Strings.Compound;
|
|
|
|
|
|
metersKindRadioButton3.Text = Strings.Heat_meter;
|
|
|
|
|
|
}
|
2015-09-25 07:22:11 +00:00
|
|
|
|
|
2014-07-28 07:54:35 +00:00
|
|
|
|
#region General
|
|
|
|
|
|
|
|
|
|
|
|
void RefreshGeneralTab()
|
|
|
|
|
|
{
|
|
|
|
|
|
procNameTextBox.Text = LoadedProcedure.Name;
|
2018-04-27 12:08:34 +00:00
|
|
|
|
Text = string.Format("{0} {1} {2}", Strings.Procedure, LoadedProcedure.ItemNr + 1, LoadedProcedure.Name);
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
|
|
|
|
|
descriptionTextBox.Text = LoadedProcedure.Description;
|
|
|
|
|
|
createdByTextBox.Text = LoadedProcedure.CreationUser;
|
2016-06-27 13:24:10 +00:00
|
|
|
|
createdOnTextBox.Text = LoadedProcedure.CreationTime.ToString();
|
2014-07-28 07:54:35 +00:00
|
|
|
|
lastChangedByTextBox.Text = LoadedProcedure.LastChgUser;
|
|
|
|
|
|
if (LoadedProcedure.LastChgTime > LoadedProcedure.CreationTime)
|
|
|
|
|
|
{
|
2016-06-27 13:24:10 +00:00
|
|
|
|
lastChangedOnTextBox.Text = LoadedProcedure.LastChgTime.ToString();
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
2015-01-25 22:43:17 +00:00
|
|
|
|
watermetersTextBox.Text = LoadedProcedure.Watermeters;
|
2017-05-03 20:19:26 +00:00
|
|
|
|
protectedCheckBox.Checked = LoadedProcedure.Protected;
|
|
|
|
|
|
mustBeCompleteCheckBox.Checked = LoadedProcedure.MustBeComplete;
|
|
|
|
|
|
manualControlDisabledCheckBox.Checked = LoadedProcedure.ManualCtrlDisabled;
|
2014-07-28 12:07:47 +00:00
|
|
|
|
dataEntryComboBox.Text = string.IsNullOrEmpty(LoadedProcedure.DataEntry) ? "---" : LoadedProcedure.DataEntry;
|
2016-05-02 08:19:26 +00:00
|
|
|
|
transitionStartComboBox.Text = string.IsNullOrEmpty(LoadedProcedure.TransitionStart) ? "---" : LoadedProcedure.TransitionStart;
|
|
|
|
|
|
transitionEndComboBox.Text = string.IsNullOrEmpty(LoadedProcedure.TransitionEnd) ? "---" : LoadedProcedure.TransitionEnd;
|
|
|
|
|
|
|
2019-11-27 10:22:32 +00:00
|
|
|
|
testProfileTextBox.Text = string.IsNullOrEmpty(LoadedProcedure.AltProcName) ? "---" : LoadedProcedure.AltProcName;
|
|
|
|
|
|
//altProcNameTextBox.Text = string.IsNullOrEmpty(LoadedProcedure.AltProcName) ? "---" : LoadedProcedure.AltProcName;
|
|
|
|
|
|
//altProcPeriodTextBox.Text = LoadedProcedure.AltProcPeriod.ToString();
|
2017-06-26 14:11:47 +00:00
|
|
|
|
|
2016-05-02 08:19:26 +00:00
|
|
|
|
if (string.IsNullOrEmpty(LoadedProcedure.ResultsPrinter))
|
|
|
|
|
|
{
|
|
|
|
|
|
printer1ComboBox.Text = "---";
|
|
|
|
|
|
printer2ComboBox.Text = "---";
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
string[] fields = LoadedProcedure.ResultsPrinter.Split(new char[] { '~' });
|
|
|
|
|
|
printer1ComboBox.Text = fields[0];
|
|
|
|
|
|
printer2ComboBox.Text = (fields.Length == 2) ? fields[1] : "---";
|
|
|
|
|
|
}
|
2016-04-29 14:58:23 +00:00
|
|
|
|
|
|
|
|
|
|
if (string.IsNullOrEmpty(LoadedProcedure.ResultsWriter))
|
|
|
|
|
|
{
|
2016-05-02 08:19:26 +00:00
|
|
|
|
fileWriter1ComboBox.Text = "---";
|
|
|
|
|
|
fileWriter2ComboBox.Text = "---";
|
|
|
|
|
|
fileWriter3ComboBox.Text = "---";
|
|
|
|
|
|
fileWriter4ComboBox.Text = "---";
|
2021-05-17 08:20:23 +00:00
|
|
|
|
fileWriter5ComboBox.Text = "---";
|
|
|
|
|
|
}
|
2016-04-29 14:58:23 +00:00
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
string[] fields = LoadedProcedure.ResultsWriter.Split(new char[] { '~' });
|
2016-05-02 08:19:26 +00:00
|
|
|
|
fileWriter1ComboBox.Text = fields[0];
|
|
|
|
|
|
fileWriter2ComboBox.Text = (fields.Length >= 2) ? fields[1] : "---";
|
|
|
|
|
|
fileWriter3ComboBox.Text = (fields.Length >= 3) ? fields[2] : "---";
|
|
|
|
|
|
fileWriter4ComboBox.Text = (fields.Length >= 4) ? fields[3] : "---";
|
2021-05-17 08:20:23 +00:00
|
|
|
|
fileWriter5ComboBox.Text = (fields.Length >= 5) ? fields[4] : "---";
|
|
|
|
|
|
}
|
2016-04-29 14:58:23 +00:00
|
|
|
|
|
2020-03-05 12:59:43 +00:00
|
|
|
|
if (string.IsNullOrEmpty(LoadedProcedure.EventTriggers))
|
|
|
|
|
|
{
|
|
|
|
|
|
eventTrigger1ComboBox.Text = "---";
|
|
|
|
|
|
eventTrigger2ComboBox.Text = "---";
|
|
|
|
|
|
eventTrigger3ComboBox.Text = "---";
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
string[] fields = LoadedProcedure.EventTriggers.Split(new char[] { '~' });
|
|
|
|
|
|
eventTrigger1ComboBox.Text = fields[0];
|
|
|
|
|
|
eventTrigger2ComboBox.Text = (fields.Length >= 2) ? fields[1] : "---";
|
|
|
|
|
|
eventTrigger3ComboBox.Text = (fields.Length >= 3) ? fields[2] : "---";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2016-06-28 16:04:52 +00:00
|
|
|
|
metersKindRadioButton1.Checked = (LoadedProcedure.MetersKind == MetersKind.Single
|
|
|
|
|
|
|| (LoadedProcedure.MetersKind != MetersKind.Combined && LoadedProcedure.MetersKind != MetersKind.HeatMeter));
|
2016-05-02 08:19:26 +00:00
|
|
|
|
metersKindRadioButton2.Checked = (LoadedProcedure.MetersKind == MetersKind.Combined);
|
2016-06-28 16:04:52 +00:00
|
|
|
|
metersKindRadioButton3.Checked = (LoadedProcedure.MetersKind == MetersKind.HeatMeter);
|
|
|
|
|
|
|
|
|
|
|
|
notesTextBox.Text = LoadedProcedure.LongDescription;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void UpdateFromGeneralTab()
|
|
|
|
|
|
{
|
|
|
|
|
|
LoadedProcedure.Name = procNameTextBox.Text;
|
2018-04-27 12:08:34 +00:00
|
|
|
|
Text = string.Format("{0} {1} {2}", Strings.Procedure, LoadedProcedure.ItemNr + 1, LoadedProcedure.Name);
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
|
|
|
|
|
LoadedProcedure.Description = descriptionTextBox.Text;
|
|
|
|
|
|
LoadedProcedure.Watermeters = watermetersTextBox.Text;
|
2015-01-25 22:43:17 +00:00
|
|
|
|
|
2017-05-03 20:19:26 +00:00
|
|
|
|
LoadedProcedure.Protected = protectedCheckBox.Checked;
|
|
|
|
|
|
LoadedProcedure.MustBeComplete = mustBeCompleteCheckBox.Checked;
|
|
|
|
|
|
LoadedProcedure.ManualCtrlDisabled = manualControlDisabledCheckBox.Checked;
|
|
|
|
|
|
|
2019-11-27 10:22:32 +00:00
|
|
|
|
//LoadedProcedure.AltProcName = altProcNameTextBox.Text.Equals("---") ? string.Empty : altProcNameTextBox.Text;
|
|
|
|
|
|
//int itmp;
|
|
|
|
|
|
//if (int.TryParse(altProcPeriodTextBox.Text, out itmp) && itmp >= 0) { LoadedProcedure.AltProcPeriod = itmp; }
|
2017-06-26 14:11:47 +00:00
|
|
|
|
|
2016-05-02 08:19:26 +00:00
|
|
|
|
if (transitionStartComboBox.Items.Contains(transitionStartComboBox.Text))
|
|
|
|
|
|
{
|
|
|
|
|
|
LoadedProcedure.TransitionStart = transitionStartComboBox.Text.Equals("---") ? string.Empty : transitionStartComboBox.Text;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (transitionEndComboBox.Items.Contains(transitionEndComboBox.Text))
|
|
|
|
|
|
{
|
|
|
|
|
|
LoadedProcedure.TransitionEnd = transitionEndComboBox.Text.Equals("---") ? string.Empty : transitionEndComboBox.Text;
|
|
|
|
|
|
}
|
2014-07-28 12:07:47 +00:00
|
|
|
|
if (dataEntryComboBox.Items.Contains(dataEntryComboBox.Text))
|
|
|
|
|
|
{
|
|
|
|
|
|
LoadedProcedure.DataEntry = dataEntryComboBox.Text.Equals("---") ? string.Empty : dataEntryComboBox.Text;
|
|
|
|
|
|
}
|
2016-04-29 14:58:23 +00:00
|
|
|
|
|
2020-03-05 12:59:43 +00:00
|
|
|
|
///
|
|
|
|
|
|
/// Printers
|
|
|
|
|
|
///
|
2016-05-02 08:19:26 +00:00
|
|
|
|
if (printer1ComboBox.Items.Contains(printer1ComboBox.Text) && printer2ComboBox.Items.Contains(printer2ComboBox.Text))
|
|
|
|
|
|
{
|
|
|
|
|
|
bool pr = !printer1ComboBox.Text.Equals("---");
|
2017-06-01 10:38:52 +00:00
|
|
|
|
bool pr2 = !printer2ComboBox.Text.Equals("---") && !printer2ComboBox.Text.Equals(printer1ComboBox.Text);
|
2016-05-02 08:19:26 +00:00
|
|
|
|
|
|
|
|
|
|
if (!pr && !pr2) LoadedProcedure.ResultsPrinter = string.Empty;
|
|
|
|
|
|
else if (pr && !pr2) LoadedProcedure.ResultsPrinter = printer1ComboBox.Text;
|
|
|
|
|
|
else if (!pr && pr2) LoadedProcedure.ResultsPrinter = printer2ComboBox.Text;
|
|
|
|
|
|
else LoadedProcedure.ResultsPrinter = printer1ComboBox.Text + '~' + printer2ComboBox.Text;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2020-03-05 12:59:43 +00:00
|
|
|
|
///
|
|
|
|
|
|
/// File writers
|
|
|
|
|
|
///
|
|
|
|
|
|
if (fileWriter1ComboBox.Items.Contains(fileWriter1ComboBox.Text) &&
|
|
|
|
|
|
fileWriter2ComboBox.Items.Contains(fileWriter2ComboBox.Text) &&
|
|
|
|
|
|
fileWriter3ComboBox.Items.Contains(fileWriter3ComboBox.Text) &&
|
2021-05-17 08:20:23 +00:00
|
|
|
|
fileWriter4ComboBox.Items.Contains(fileWriter4ComboBox.Text) &&
|
|
|
|
|
|
fileWriter5ComboBox.Items.Contains(fileWriter5ComboBox.Text))
|
2020-03-05 12:59:43 +00:00
|
|
|
|
{
|
|
|
|
|
|
bool first = true;
|
|
|
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
|
|
if (!fileWriter1ComboBox.Text.Equals("---"))
|
|
|
|
|
|
{
|
|
|
|
|
|
sb.Append(fileWriter1ComboBox.Text);
|
|
|
|
|
|
first = false;
|
|
|
|
|
|
}
|
2021-05-17 08:20:23 +00:00
|
|
|
|
|
2020-03-05 12:59:43 +00:00
|
|
|
|
if (!fileWriter2ComboBox.Text.Equals("---") && !fileWriter2ComboBox.Text.Equals(fileWriter1ComboBox.Text))
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!first) sb.Append("~");
|
|
|
|
|
|
sb.Append(fileWriter2ComboBox.Text);
|
|
|
|
|
|
first = false;
|
|
|
|
|
|
}
|
2021-05-17 08:20:23 +00:00
|
|
|
|
|
2020-03-05 12:59:43 +00:00
|
|
|
|
if (!fileWriter3ComboBox.Text.Equals("---") && !fileWriter3ComboBox.Text.Equals(fileWriter1ComboBox.Text)
|
|
|
|
|
|
&& !fileWriter3ComboBox.Text.Equals(fileWriter2ComboBox.Text))
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!first) sb.Append("~");
|
|
|
|
|
|
sb.Append(fileWriter3ComboBox.Text);
|
|
|
|
|
|
first = false;
|
|
|
|
|
|
}
|
2021-05-17 08:20:23 +00:00
|
|
|
|
|
2020-03-05 12:59:43 +00:00
|
|
|
|
if (!fileWriter4ComboBox.Text.Equals("---") && !fileWriter4ComboBox.Text.Equals(fileWriter1ComboBox.Text)
|
|
|
|
|
|
&& !fileWriter4ComboBox.Text.Equals(fileWriter2ComboBox.Text)
|
|
|
|
|
|
&& !fileWriter4ComboBox.Text.Equals(fileWriter3ComboBox.Text))
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!first) sb.Append("~");
|
|
|
|
|
|
sb.Append(fileWriter4ComboBox.Text);
|
|
|
|
|
|
first = false;
|
|
|
|
|
|
}
|
2021-05-17 08:20:23 +00:00
|
|
|
|
|
|
|
|
|
|
if (!fileWriter5ComboBox.Text.Equals("---") && !fileWriter5ComboBox.Text.Equals(fileWriter1ComboBox.Text)
|
|
|
|
|
|
&& !fileWriter5ComboBox.Text.Equals(fileWriter2ComboBox.Text)
|
|
|
|
|
|
&& !fileWriter5ComboBox.Text.Equals(fileWriter3ComboBox.Text)
|
|
|
|
|
|
&& !fileWriter5ComboBox.Text.Equals(fileWriter4ComboBox.Text))
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!first) sb.Append("~");
|
|
|
|
|
|
sb.Append(fileWriter5ComboBox.Text);
|
|
|
|
|
|
first = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2020-03-05 12:59:43 +00:00
|
|
|
|
LoadedProcedure.ResultsWriter = sb.ToString();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
///
|
|
|
|
|
|
/// Event triggers
|
|
|
|
|
|
///
|
|
|
|
|
|
if (eventTrigger1ComboBox.Items.Contains(eventTrigger1ComboBox.Text) &&
|
|
|
|
|
|
eventTrigger2ComboBox.Items.Contains(eventTrigger2ComboBox.Text) &&
|
|
|
|
|
|
eventTrigger3ComboBox.Items.Contains(eventTrigger3ComboBox.Text))
|
2014-07-28 07:54:35 +00:00
|
|
|
|
{
|
2016-05-02 08:19:26 +00:00
|
|
|
|
bool first = true;
|
|
|
|
|
|
StringBuilder sb = new StringBuilder();
|
2020-03-05 12:59:43 +00:00
|
|
|
|
if (!eventTrigger1ComboBox.Text.Equals("---"))
|
2016-05-02 08:19:26 +00:00
|
|
|
|
{
|
2020-03-05 12:59:43 +00:00
|
|
|
|
sb.Append(eventTrigger1ComboBox.Text);
|
2016-05-03 12:07:26 +00:00
|
|
|
|
first = false;
|
2016-05-02 08:19:26 +00:00
|
|
|
|
}
|
2020-03-05 12:59:43 +00:00
|
|
|
|
if (!eventTrigger2ComboBox.Text.Equals("---") && !eventTrigger2ComboBox.Text.Equals(eventTrigger1ComboBox.Text))
|
2016-05-02 08:19:26 +00:00
|
|
|
|
{
|
2016-05-03 12:07:26 +00:00
|
|
|
|
if (!first) sb.Append("~");
|
2020-03-05 12:59:43 +00:00
|
|
|
|
sb.Append(eventTrigger2ComboBox.Text);
|
2016-05-03 12:07:26 +00:00
|
|
|
|
first = false;
|
2016-05-02 08:19:26 +00:00
|
|
|
|
}
|
2020-03-05 12:59:43 +00:00
|
|
|
|
if (!eventTrigger3ComboBox.Text.Equals("---") && !eventTrigger3ComboBox.Text.Equals(eventTrigger1ComboBox.Text)
|
|
|
|
|
|
&& !eventTrigger3ComboBox.Text.Equals(eventTrigger2ComboBox.Text))
|
2016-05-02 08:19:26 +00:00
|
|
|
|
{
|
2016-05-03 12:07:26 +00:00
|
|
|
|
if (!first) sb.Append("~");
|
2020-03-05 12:59:43 +00:00
|
|
|
|
sb.Append(eventTrigger3ComboBox.Text);
|
|
|
|
|
|
first = false;
|
2016-05-02 08:19:26 +00:00
|
|
|
|
}
|
2020-03-05 12:59:43 +00:00
|
|
|
|
LoadedProcedure.EventTriggers = sb.ToString();
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
2016-05-02 08:19:26 +00:00
|
|
|
|
|
2016-06-28 16:04:52 +00:00
|
|
|
|
LoadedProcedure.MetersKind = (metersKindRadioButton1.Checked ? MetersKind.Single
|
|
|
|
|
|
: (metersKindRadioButton2.Checked ? MetersKind.Combined
|
|
|
|
|
|
: MetersKind.HeatMeter));
|
2016-05-02 08:19:26 +00:00
|
|
|
|
LoadedProcedure.LongDescription = notesTextBox.Text;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
2015-11-26 22:51:49 +00:00
|
|
|
|
#region History
|
|
|
|
|
|
|
|
|
|
|
|
void InitializeHistoryTab()
|
|
|
|
|
|
{
|
|
|
|
|
|
TBF.LocalSettings ls = Program.LocalSettings;
|
|
|
|
|
|
|
2018-10-11 11:53:24 +00:00
|
|
|
|
historyListViewEx.Columns.Add(Strings.Name, (ls.HistoryColumnCount > 0) ? ls.HistoryColumnWidths[0] : 80);
|
2018-12-13 09:37:52 +00:00
|
|
|
|
historyListViewEx.Columns.Add(Strings.Revision, (ls.HistoryColumnCount > 1) ? ls.HistoryColumnWidths[1] : 80);
|
|
|
|
|
|
historyListViewEx.Columns.Add(Strings.Date_and_time, (ls.HistoryColumnCount > 2) ? ls.HistoryColumnWidths[2] : 120);
|
|
|
|
|
|
historyListViewEx.Columns.Add(Strings.User, (ls.HistoryColumnCount > 3) ? ls.HistoryColumnWidths[3] : 55);
|
|
|
|
|
|
historyListViewEx.Columns.Add(Strings.DescriptionColHdr, (ls.HistoryColumnCount > 4) ? ls.HistoryColumnWidths[4] : 150);
|
|
|
|
|
|
historyListViewEx.Columns.Add(Strings.Other, (ls.HistoryColumnCount > 5) ? ls.HistoryColumnWidths[5] : 150);
|
2015-11-26 22:51:49 +00:00
|
|
|
|
|
|
|
|
|
|
RefreshHistoryTab();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void RefreshHistoryTab()
|
|
|
|
|
|
{
|
2021-09-23 09:46:40 +00:00
|
|
|
|
NHibernate.ISession session = TBF.DB.CreateSession(DBKind.Config);
|
2015-12-04 16:17:20 +00:00
|
|
|
|
IList<Procedure> procedures = session
|
2016-12-02 10:04:33 +00:00
|
|
|
|
.QueryOver<Procedure>()
|
|
|
|
|
|
.Where(x => x.ProcedureState == ProcedureState.History)
|
|
|
|
|
|
.List();
|
2015-11-26 22:51:49 +00:00
|
|
|
|
|
|
|
|
|
|
int predecessorId = LoadedProcedure.PredecessorId;
|
|
|
|
|
|
|
2015-12-04 16:17:20 +00:00
|
|
|
|
IList<Procedure> oneProcedure = session
|
2016-12-02 10:04:33 +00:00
|
|
|
|
.QueryOver<Procedure>()
|
|
|
|
|
|
.Where(x => (x.ProcedureState == ProcedureState.Active))
|
|
|
|
|
|
.And(x => (x.Id == predecessorId))
|
|
|
|
|
|
.List();
|
2015-11-26 22:51:49 +00:00
|
|
|
|
|
|
|
|
|
|
if (oneProcedure.Count == 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
predecessorId = oneProcedure[0].PredecessorId;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
while (predecessorId != 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
bool found = false;
|
|
|
|
|
|
foreach (var p in procedures)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (p.Id == predecessorId)
|
|
|
|
|
|
{
|
|
|
|
|
|
found = true;
|
|
|
|
|
|
ListViewItem item = new ListViewItem(p.Name);
|
2021-01-13 11:57:56 +00:00
|
|
|
|
item.Tag = p;
|
2015-11-26 22:51:49 +00:00
|
|
|
|
item.SubItems.Add(p.Revision.ToString());
|
2016-06-27 13:24:10 +00:00
|
|
|
|
item.SubItems.Add(p.LastChgTime.ToString());
|
2015-11-26 22:51:49 +00:00
|
|
|
|
item.SubItems.Add(p.LastChgUser.ToString());
|
|
|
|
|
|
item.SubItems.Add(p.Description);
|
2018-10-11 11:53:24 +00:00
|
|
|
|
|
|
|
|
|
|
string other = string.Empty;
|
|
|
|
|
|
//if ((p.Watermeters != null) && (p.Watermeters.Count > 0) && (p.Watermeters[0] != null)) other = p.Watermeters[0];
|
|
|
|
|
|
item.SubItems.Add(other);
|
|
|
|
|
|
|
|
|
|
|
|
historyListViewEx.Items.Add(item);
|
2015-11-26 22:51:49 +00:00
|
|
|
|
|
|
|
|
|
|
predecessorId = p.PredecessorId; /// Iterate
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (!found) break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void UpdateFromHistoryTab()
|
|
|
|
|
|
{
|
|
|
|
|
|
// Do nothing
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
#region Metrology1
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
Control[] metrology1Editors;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
2015-01-04 22:21:12 +00:00
|
|
|
|
public enum MtrlgyClmn
|
|
|
|
|
|
{
|
|
|
|
|
|
Name,
|
|
|
|
|
|
Part,
|
2022-11-16 16:24:48 +00:00
|
|
|
|
#if SHOW_Q_TG
|
2019-09-21 16:03:25 +00:00
|
|
|
|
Qtg,
|
|
|
|
|
|
#endif
|
|
|
|
|
|
Qfrom,
|
2015-01-04 22:21:12 +00:00
|
|
|
|
Qto,
|
2021-11-03 10:09:34 +00:00
|
|
|
|
FlowUnit,
|
2015-01-04 22:21:12 +00:00
|
|
|
|
Volume,
|
2021-11-03 10:09:34 +00:00
|
|
|
|
VolumeUnit,
|
2015-01-04 22:21:12 +00:00
|
|
|
|
TestTime,
|
2017-06-08 13:42:47 +00:00
|
|
|
|
ErrLimLo,
|
|
|
|
|
|
ErrLimHi,
|
2022-01-25 17:27:00 +00:00
|
|
|
|
Uncertainty,
|
|
|
|
|
|
Repeats,
|
2019-09-21 16:03:25 +00:00
|
|
|
|
Method,
|
2021-11-03 10:09:34 +00:00
|
|
|
|
ColumnsCount
|
2015-01-04 22:21:12 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void PrepareMetrology1Tab()
|
|
|
|
|
|
{
|
2019-09-16 08:51:25 +00:00
|
|
|
|
ListViewEx lv = metrology1ListViewEx;
|
2017-06-08 13:42:47 +00:00
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Test_chdr, Width = 70 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Part, Width = 40 });
|
2022-11-16 16:24:48 +00:00
|
|
|
|
#if SHOW_Q_TG
|
2021-11-03 10:09:34 +00:00
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Q_tg, Width = 80 });
|
2019-09-21 16:03:25 +00:00
|
|
|
|
#endif
|
2021-11-03 10:09:34 +00:00
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Q_from, Width = 80 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Q_to, Width = 80 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = "Unit", Width = 50 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Volume, Width = 70 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = "Unit", Width = 50 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Test_time_s_chdr, Width = 70 });
|
2017-06-08 13:42:47 +00:00
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Err_limit_neg_pct_chdr, Width = 80 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Err_limit_pos_pct_chdr, Width = 80 });
|
2022-01-25 17:27:00 +00:00
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Uncertainty_pct_chdr, Width = 90 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Repeats_nr_chdr, Width = 90 });
|
2019-09-21 16:03:25 +00:00
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Method_chdr, Width = 200 });
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
|
|
|
|
|
methodCBox = new ComboBox();
|
|
|
|
|
|
foreach (var m in TestMethods) methodCBox.Items.Add(m.Cfg.Name);
|
|
|
|
|
|
|
2021-11-03 10:09:34 +00:00
|
|
|
|
var flowUnitBox = new ComboBox();
|
|
|
|
|
|
var volUnitBox = new ComboBox();
|
2022-05-31 14:08:00 +00:00
|
|
|
|
for (Unit u = 0; u < Unit.Count; u++)
|
2022-01-25 17:27:00 +00:00
|
|
|
|
{
|
|
|
|
|
|
if (Units.IsFlow(u)) flowUnitBox.Items.Add(u.ToDescription());
|
|
|
|
|
|
if (Units.IsVolume(u)) volUnitBox.Items.Add(u.ToDescription());
|
|
|
|
|
|
}
|
2021-11-03 10:09:34 +00:00
|
|
|
|
|
2014-07-28 07:54:35 +00:00
|
|
|
|
metrology1Editors = new Control[]
|
|
|
|
|
|
{
|
2015-01-04 22:21:12 +00:00
|
|
|
|
new TextBox(), /// Name
|
|
|
|
|
|
new TextBox(), /// Part
|
2022-11-16 16:24:48 +00:00
|
|
|
|
#if SHOW_Q_TG
|
2019-09-21 16:03:25 +00:00
|
|
|
|
new TextBox(), /// Qtg
|
|
|
|
|
|
#endif
|
2015-01-04 22:21:12 +00:00
|
|
|
|
new TextBox(), /// Qfrom
|
|
|
|
|
|
new TextBox(), /// Qto
|
2021-11-03 10:09:34 +00:00
|
|
|
|
flowUnitBox,
|
2015-01-04 22:21:12 +00:00
|
|
|
|
new TextBox(), /// Volume
|
2021-11-03 10:09:34 +00:00
|
|
|
|
volUnitBox,
|
2015-01-04 22:21:12 +00:00
|
|
|
|
new TextBox(), /// Test time
|
2017-06-08 13:42:47 +00:00
|
|
|
|
new TextBox(), /// Err.Lim. -
|
|
|
|
|
|
new TextBox(), /// Err.Lim. +
|
2022-01-25 17:27:00 +00:00
|
|
|
|
new TextBox(), /// Uncertainty
|
|
|
|
|
|
new TextBox(), /// Repeats count
|
2015-01-04 22:21:12 +00:00
|
|
|
|
methodCBox, /// Method
|
2014-07-28 07:54:35 +00:00
|
|
|
|
};
|
|
|
|
|
|
|
2015-01-04 22:21:12 +00:00
|
|
|
|
foreach (var ctrl in metrology1Editors)
|
|
|
|
|
|
{
|
|
|
|
|
|
metrology1TabPage.Controls.Add(ctrl);
|
|
|
|
|
|
}
|
2021-11-03 10:09:34 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2015-01-04 22:21:12 +00:00
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
void RefreshMetrology1Tab()
|
|
|
|
|
|
{
|
|
|
|
|
|
metrology1ListViewEx.Items.Clear();
|
2021-11-03 10:09:34 +00:00
|
|
|
|
foreach (var test in LoadedProcedure.Tests)
|
|
|
|
|
|
{
|
|
|
|
|
|
AddToMetrology1Tab(test);
|
|
|
|
|
|
}
|
2018-06-04 06:55:50 +00:00
|
|
|
|
|
|
|
|
|
|
if (0 <= SelectedTestIx && SelectedTestIx < metrology1ListViewEx.Items.Count)
|
|
|
|
|
|
{
|
|
|
|
|
|
metrology1ListViewEx.Items[SelectedTestIx].Selected = true;
|
|
|
|
|
|
}
|
2018-05-22 13:33:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void AddToMetrology1Tab(Test test)
|
|
|
|
|
|
{
|
|
|
|
|
|
///
|
|
|
|
|
|
/// Metrology 1 item with subitems
|
|
|
|
|
|
///
|
2021-11-03 10:09:34 +00:00
|
|
|
|
ListViewItem lvi = new ListViewItem(test.Name); /// Name
|
2018-05-22 13:33:07 +00:00
|
|
|
|
lvi.Tag = test;
|
2021-11-03 10:09:34 +00:00
|
|
|
|
lvi.SubItems.Add((test.Part == 0) ? "-" : test.Part.ToString()); /// Part
|
2022-11-16 16:24:48 +00:00
|
|
|
|
#if SHOW_Q_TG
|
2021-11-03 10:09:34 +00:00
|
|
|
|
lvi.SubItems.Add(Units.ConvertTo(test.FlowUnit, test.Qtg).ToString()); /// Q_tg (target flow)
|
2019-09-21 16:03:25 +00:00
|
|
|
|
#endif
|
2021-11-03 10:09:34 +00:00
|
|
|
|
lvi.SubItems.Add(Units.ConvertTo(test.FlowUnit, test.Qfrom).ToString()); /// Q_from
|
|
|
|
|
|
lvi.SubItems.Add(Units.ConvertTo(test.FlowUnit, test.Qto).ToString()); /// Q_to
|
|
|
|
|
|
lvi.SubItems.Add(test.FlowUnit.ToDescription());
|
|
|
|
|
|
lvi.SubItems.Add(Units.ConvertTo(test.VolumeUnit, test.Volume).ToString()); /// Volume
|
|
|
|
|
|
lvi.SubItems.Add(test.VolumeUnit.ToDescription());
|
2021-09-23 09:46:40 +00:00
|
|
|
|
lvi.SubItems.Add(test.TestTime.ToString());
|
2018-05-22 13:33:07 +00:00
|
|
|
|
lvi.SubItems.Add(test.ErrLimLo.ToString());
|
|
|
|
|
|
lvi.SubItems.Add(test.ErrLimHi.ToString());
|
2022-01-25 17:27:00 +00:00
|
|
|
|
lvi.SubItems.Add(test.Uncertainty.ToString());
|
|
|
|
|
|
lvi.SubItems.Add(test.Repeats.ToString());
|
2018-05-22 13:33:07 +00:00
|
|
|
|
lvi.SubItems.Add((test.Method != null) ? test.Method.ToString() : string.Empty);
|
|
|
|
|
|
|
2021-11-03 10:09:34 +00:00
|
|
|
|
test.ResetChngdFlags();
|
|
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
metrology1ListViewEx.Items.Add(lvi);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void UpdateFromMetrology1Tab()
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < metrology1ListViewEx.Items.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
ListViewItem lvi = metrology1ListViewEx.Items[i];
|
2021-11-03 10:09:34 +00:00
|
|
|
|
Test test = (Test)lvi.Tag;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
|
2021-11-03 10:09:34 +00:00
|
|
|
|
test.Name = lvi.Text;
|
|
|
|
|
|
test.ItemNr = i;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
|
2021-11-03 10:09:34 +00:00
|
|
|
|
int part = test.Part;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
if (lvi.SubItems[(int)MtrlgyClmn.Part].Text.Equals("-"))
|
|
|
|
|
|
{
|
2021-11-03 10:09:34 +00:00
|
|
|
|
test.Part = 0;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
else if (int.TryParse(lvi.SubItems[(int)MtrlgyClmn.Part].Text, out part))
|
|
|
|
|
|
{
|
2021-11-03 10:09:34 +00:00
|
|
|
|
test.Part = part;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-01-25 17:27:00 +00:00
|
|
|
|
int itmp;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
float tmp;
|
2021-11-03 10:09:34 +00:00
|
|
|
|
double dtmp;
|
2022-11-16 16:24:48 +00:00
|
|
|
|
#if SHOW_Q_TG
|
2021-11-03 10:09:34 +00:00
|
|
|
|
if (test.QtgTextChngd && Utils.TryParseUDouble(lvi.SubItems[(int)MtrlgyClmn.Qtg].Text, out dtmp))
|
|
|
|
|
|
test.Qtg = (float)Units.ConvertFrom(test.FlowUnit, dtmp);
|
2019-09-21 16:03:25 +00:00
|
|
|
|
#endif
|
2021-11-03 10:09:34 +00:00
|
|
|
|
if (test.QfromTextChngd && Utils.TryParseUDouble(lvi.SubItems[(int)MtrlgyClmn.Qfrom].Text, out dtmp))
|
|
|
|
|
|
test.Qfrom = (float)Units.ConvertFrom(test.FlowUnit, dtmp);
|
|
|
|
|
|
|
|
|
|
|
|
if (test.QtoTextChngd && Utils.TryParseUDouble(lvi.SubItems[(int)MtrlgyClmn.Qto].Text, out dtmp))
|
|
|
|
|
|
test.Qto = (float)Units.ConvertFrom(test.FlowUnit, dtmp);
|
|
|
|
|
|
|
|
|
|
|
|
if (test.VolumeTextChngd && Utils.TryParseUDouble(lvi.SubItems[(int)MtrlgyClmn.Volume].Text, out dtmp))
|
|
|
|
|
|
test.Volume = (float)Units.ConvertFrom(test.VolumeUnit, dtmp);
|
|
|
|
|
|
|
|
|
|
|
|
if (Utils.TryParseUFloat(lvi.SubItems[(int)MtrlgyClmn.TestTime].Text, out tmp)) test.TestTime = tmp;
|
2022-01-25 17:27:00 +00:00
|
|
|
|
|
|
|
|
|
|
if (Utils.TryParseSFloat(lvi.SubItems[(int)MtrlgyClmn.ErrLimLo].Text, out tmp)) test.ErrLimLo = tmp;
|
2021-11-03 10:09:34 +00:00
|
|
|
|
if (Utils.TryParseSFloat(lvi.SubItems[(int)MtrlgyClmn.ErrLimHi].Text, out tmp)) test.ErrLimHi = tmp;
|
2022-01-25 17:27:00 +00:00
|
|
|
|
if (Utils.TryParseUFloat(lvi.SubItems[(int)MtrlgyClmn.Uncertainty].Text, out tmp)) test.Uncertainty = tmp;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
|
2022-01-25 17:27:00 +00:00
|
|
|
|
if (int.TryParse(lvi.SubItems[(int)MtrlgyClmn.Repeats].Text, out itmp)) test.Repeats = itmp;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
|
|
|
|
|
|
if (methodCBox.Items.Contains(lvi.SubItems[(int)MtrlgyClmn.Method].Text))
|
|
|
|
|
|
{
|
2021-11-03 10:09:34 +00:00
|
|
|
|
test.Method = lvi.SubItems[(int)MtrlgyClmn.Method].Text;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2019-09-16 08:51:25 +00:00
|
|
|
|
private void metrology1ListViewEx_SubItemClicked(object sender, SubItemEventArgs e)
|
2018-05-22 13:33:07 +00:00
|
|
|
|
{
|
2021-11-03 10:09:34 +00:00
|
|
|
|
MtrlgyClmn column = (MtrlgyClmn)e.SubItem;
|
|
|
|
|
|
|
2022-11-16 16:24:48 +00:00
|
|
|
|
#if SHOW_Q_TG
|
2019-09-21 16:03:25 +00:00
|
|
|
|
if (e.SubItem == (int)MtrlgyClmn.Qtg) return;
|
|
|
|
|
|
#endif
|
2021-11-03 10:09:34 +00:00
|
|
|
|
/// Unit change is allowed when locked
|
2022-01-25 17:27:00 +00:00
|
|
|
|
if ((column != MtrlgyClmn.FlowUnit && column != MtrlgyClmn.VolumeUnit) &&
|
2021-11-03 10:09:34 +00:00
|
|
|
|
(!unlocked || column >= MtrlgyClmn.ColumnsCount))
|
|
|
|
|
|
{
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
2019-11-27 10:22:32 +00:00
|
|
|
|
|
|
|
|
|
|
MtrlgyClmn[] protectedColumns = new MtrlgyClmn[]
|
|
|
|
|
|
{
|
|
|
|
|
|
MtrlgyClmn.Name,
|
|
|
|
|
|
MtrlgyClmn.Qfrom, MtrlgyClmn.Qto,
|
|
|
|
|
|
MtrlgyClmn.ErrLimLo, MtrlgyClmn.ErrLimHi,
|
|
|
|
|
|
};
|
2021-11-03 10:09:34 +00:00
|
|
|
|
if (((e.Item.Tag as Test).Profile >= TestProfile.Protected) && protectedColumns.Contains<MtrlgyClmn>(column)) return;
|
2019-11-27 10:22:32 +00:00
|
|
|
|
|
|
|
|
|
|
metrology1ListViewEx.StartEditing(metrology1Editors[e.SubItem], e.Item, e.SubItem);
|
2018-05-22 13:33:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2019-09-16 08:51:25 +00:00
|
|
|
|
void metrology1ListViewEx_SubItemRightClicked(object sender, SubItemEventArgs e)
|
2018-05-22 13:33:07 +00:00
|
|
|
|
{
|
2022-11-16 16:24:48 +00:00
|
|
|
|
#if SHOW_Q_TG
|
2019-09-21 16:03:25 +00:00
|
|
|
|
if (e.SubItem == (int)MtrlgyClmn.Qtg) return;
|
|
|
|
|
|
#endif
|
2021-11-03 10:09:34 +00:00
|
|
|
|
if (!unlocked || e.SubItem >= (int)MtrlgyClmn.ColumnsCount) return;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
|
|
|
|
|
|
if (DialogResult.Yes == MessageBox.Show(Strings.Do_you_want_to_copy_this_value_to_all_cells_below_this_cell,
|
|
|
|
|
|
Strings.Confirmation, MessageBoxButtons.YesNo, MessageBoxIcon.Question))
|
|
|
|
|
|
{
|
|
|
|
|
|
int columnNr = e.SubItem;
|
|
|
|
|
|
string value = null;
|
|
|
|
|
|
System.Drawing.Color backColor = System.Drawing.Color.White;
|
|
|
|
|
|
foreach (ListViewItem item in metrology1ListViewEx.Items)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (value != null && item.SubItems.Count > columnNr)
|
|
|
|
|
|
{
|
2021-11-03 10:09:34 +00:00
|
|
|
|
/// This item is below e.Item
|
2018-05-22 13:33:07 +00:00
|
|
|
|
item.SubItems[columnNr].Text = value;
|
|
|
|
|
|
item.SubItems[columnNr].BackColor = backColor;
|
2021-11-03 10:09:34 +00:00
|
|
|
|
|
|
|
|
|
|
switch ((MtrlgyClmn)columnNr)
|
|
|
|
|
|
{
|
|
|
|
|
|
case MtrlgyClmn.FlowUnit: UpdateFlow(item, Units.FromDescription(value)); break;
|
|
|
|
|
|
case MtrlgyClmn.VolumeUnit: UpdateVolume(item, Units.FromDescription(value)); break;
|
|
|
|
|
|
}
|
2018-05-22 13:33:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
else if (item == e.Item)
|
|
|
|
|
|
{
|
2021-11-03 10:09:34 +00:00
|
|
|
|
/// Set 'value' to the value to be copied
|
2018-05-22 13:33:07 +00:00
|
|
|
|
value = item.SubItems[columnNr].Text;
|
|
|
|
|
|
backColor = item.SubItems[columnNr].BackColor;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2019-09-16 08:51:25 +00:00
|
|
|
|
private void metrology1ListViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e)
|
2018-05-22 13:33:07 +00:00
|
|
|
|
{
|
2021-11-03 10:09:34 +00:00
|
|
|
|
Test test = e.Item.Tag as Test;
|
|
|
|
|
|
MtrlgyClmn column = (MtrlgyClmn)e.SubItem;
|
|
|
|
|
|
Unit newUnit;
|
|
|
|
|
|
int dummy;
|
|
|
|
|
|
float fdummy;
|
|
|
|
|
|
|
|
|
|
|
|
switch (column)
|
2018-06-13 05:41:03 +00:00
|
|
|
|
{
|
2021-11-03 10:09:34 +00:00
|
|
|
|
case MtrlgyClmn.Name:
|
|
|
|
|
|
if (Utils.IsGoodFName(e.DisplayText)) return; /// OK
|
|
|
|
|
|
break;
|
2018-06-13 05:41:03 +00:00
|
|
|
|
|
2021-11-03 10:09:34 +00:00
|
|
|
|
case MtrlgyClmn.Part:
|
|
|
|
|
|
if (e.DisplayText.Equals("-")) return; /// OK
|
|
|
|
|
|
if (int.TryParse(e.DisplayText, out dummy) && Data.IsGoodPartNr(dummy)) return; /// OK
|
|
|
|
|
|
break;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
|
2022-11-16 16:24:48 +00:00
|
|
|
|
#if SHOW_Q_TG
|
2021-11-03 10:09:34 +00:00
|
|
|
|
case MtrlgyClmn.Qtg:
|
|
|
|
|
|
if (Utils.TryParseUFloat(e.DisplayText, out fdummy))
|
|
|
|
|
|
{
|
|
|
|
|
|
if (e.DisplayText != e.Item.SubItems[e.SubItem].Text) test.QtgTextChngd = true;
|
|
|
|
|
|
return; /// OK
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
2019-09-21 16:03:25 +00:00
|
|
|
|
#endif
|
2021-11-03 10:09:34 +00:00
|
|
|
|
case MtrlgyClmn.ErrLimLo:
|
|
|
|
|
|
case MtrlgyClmn.ErrLimHi:
|
|
|
|
|
|
if (Utils.TryParseSFloat(e.DisplayText, out fdummy)) return;
|
|
|
|
|
|
break;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
|
2022-01-25 17:27:00 +00:00
|
|
|
|
case MtrlgyClmn.Uncertainty:
|
|
|
|
|
|
if (Utils.TryParseUFloat(e.DisplayText, out fdummy)) return;
|
2021-11-03 10:09:34 +00:00
|
|
|
|
break;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
|
2022-01-25 17:27:00 +00:00
|
|
|
|
case MtrlgyClmn.Repeats:
|
|
|
|
|
|
if (int.TryParse(e.DisplayText, out dummy)) return; /// OK
|
2021-11-03 10:09:34 +00:00
|
|
|
|
break;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
|
2021-11-03 10:09:34 +00:00
|
|
|
|
case MtrlgyClmn.FlowUnit:
|
|
|
|
|
|
newUnit = Units.FromDescription(e.DisplayText);
|
|
|
|
|
|
if (!Units.IsFlow(newUnit)) break;
|
|
|
|
|
|
UpdateFlow(e.Item, newUnit);
|
|
|
|
|
|
return;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
|
2021-11-03 10:09:34 +00:00
|
|
|
|
case MtrlgyClmn.VolumeUnit:
|
|
|
|
|
|
newUnit = Units.FromDescription(e.DisplayText);
|
|
|
|
|
|
if (!Units.IsVolume(newUnit)) break;
|
|
|
|
|
|
UpdateVolume(e.Item, newUnit);
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
case MtrlgyClmn.Method:
|
|
|
|
|
|
if (methodCBox.Items.Contains(e.DisplayText)) return;
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case MtrlgyClmn.Qfrom:
|
|
|
|
|
|
case MtrlgyClmn.Qto:
|
|
|
|
|
|
case MtrlgyClmn.Volume:
|
|
|
|
|
|
case MtrlgyClmn.TestTime:
|
|
|
|
|
|
|
|
|
|
|
|
if (e.DisplayText == e.Item.SubItems[e.SubItem].Text) return; /// Nothing changed
|
|
|
|
|
|
|
|
|
|
|
|
float qFrom = 1.0f;
|
|
|
|
|
|
float qTo = 1.0f;
|
|
|
|
|
|
float volume = 0.0f;
|
|
|
|
|
|
float testTime = 0.0f;
|
|
|
|
|
|
|
|
|
|
|
|
bool calculateVolume = false;
|
|
|
|
|
|
bool calculateTime = false;
|
|
|
|
|
|
bool allOk = true;
|
|
|
|
|
|
|
|
|
|
|
|
if (column == MtrlgyClmn.Qfrom && Utils.TryParseUFloat(e.DisplayText, out qFrom))
|
|
|
|
|
|
{
|
|
|
|
|
|
allOk &= Utils.TryParseUFloat(e.Item.SubItems[(int)MtrlgyClmn.Qto].Text, out qTo);
|
|
|
|
|
|
allOk &= Utils.TryParseUFloat(e.Item.SubItems[(int)MtrlgyClmn.Volume].Text, out volume);
|
|
|
|
|
|
if (allOk)
|
|
|
|
|
|
{
|
|
|
|
|
|
test.QfromTextChngd = true;
|
|
|
|
|
|
calculateTime = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (column == MtrlgyClmn.Qto && Utils.TryParseUFloat(e.DisplayText, out qTo))
|
|
|
|
|
|
{
|
|
|
|
|
|
allOk &= Utils.TryParseUFloat(e.Item.SubItems[(int)MtrlgyClmn.Qfrom].Text, out qFrom);
|
|
|
|
|
|
allOk &= Utils.TryParseUFloat(e.Item.SubItems[(int)MtrlgyClmn.Volume].Text, out volume);
|
|
|
|
|
|
if (allOk)
|
|
|
|
|
|
{
|
|
|
|
|
|
test.QtoTextChngd = true;
|
|
|
|
|
|
calculateTime = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (column == MtrlgyClmn.Volume && Utils.TryParseUFloat(e.DisplayText, out volume))
|
|
|
|
|
|
{
|
|
|
|
|
|
allOk &= Utils.TryParseUFloat(e.Item.SubItems[(int)MtrlgyClmn.Qfrom].Text, out qFrom);
|
|
|
|
|
|
allOk &= Utils.TryParseUFloat(e.Item.SubItems[(int)MtrlgyClmn.Qto].Text, out qTo);
|
|
|
|
|
|
if (allOk)
|
|
|
|
|
|
{
|
|
|
|
|
|
test.VolumeTextChngd = true;
|
|
|
|
|
|
calculateTime = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (column == MtrlgyClmn.TestTime && Utils.TryParseUFloat(e.DisplayText, out testTime))
|
|
|
|
|
|
{
|
|
|
|
|
|
allOk &= Utils.TryParseUFloat(e.Item.SubItems[(int)MtrlgyClmn.Qfrom].Text, out qFrom);
|
|
|
|
|
|
allOk &= Utils.TryParseUFloat(e.Item.SubItems[(int)MtrlgyClmn.Qto].Text, out qTo);
|
|
|
|
|
|
if (allOk)
|
|
|
|
|
|
{
|
|
|
|
|
|
calculateVolume = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
float qAveLps = Units.ConvertFrom(test.FlowUnit, qFrom + qTo) / 7.2f;
|
|
|
|
|
|
|
|
|
|
|
|
if (calculateTime)
|
|
|
|
|
|
{
|
|
|
|
|
|
float volumeLtr = Units.ConvertFrom(test.VolumeUnit, volume);
|
|
|
|
|
|
testTime = volumeLtr / qAveLps;
|
|
|
|
|
|
e.Item.SubItems[(int)MtrlgyClmn.TestTime].Text = testTime.ToString();
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (calculateVolume)
|
|
|
|
|
|
{
|
|
|
|
|
|
var volumeLtr = testTime * qAveLps;
|
|
|
|
|
|
e.Item.SubItems[(int)MtrlgyClmn.Volume].Text = Units.ConvertTo(test.VolumeUnit, volumeLtr).ToString();
|
|
|
|
|
|
test.VolumeTextChngd = true;
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
break; /// NOK - Restore original value
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// Display text was not OK, revert to the original one
|
|
|
|
|
|
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
|
|
|
|
|
|
e.Cancel = true;
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void UpdateFlow(ListViewItem item, Unit newUnit)
|
|
|
|
|
|
{
|
|
|
|
|
|
Test test = item.Tag as Test;
|
|
|
|
|
|
if (test == null || !Units.IsFlow(newUnit) || newUnit == test.FlowUnit) return;
|
|
|
|
|
|
Unit oriUnit = test.FlowUnit;
|
|
|
|
|
|
test.FlowUnit = newUnit;
|
|
|
|
|
|
|
|
|
|
|
|
int ix = (int)MtrlgyClmn.Qfrom;
|
|
|
|
|
|
double flowM3ph = Units.ConvertFrom(oriUnit, Utils.ParseUDouble(item.SubItems[ix].Text));
|
|
|
|
|
|
item.SubItems[ix].Text = Units.ConvertTo(newUnit, test.QfromTextChngd ? flowM3ph : test.Qfrom).ToString();
|
|
|
|
|
|
|
|
|
|
|
|
ix = (int)MtrlgyClmn.Qto;
|
|
|
|
|
|
flowM3ph = Units.ConvertFrom(oriUnit, Utils.ParseUDouble(item.SubItems[ix].Text));
|
|
|
|
|
|
item.SubItems[ix].Text = Units.ConvertTo(newUnit, test.QtoTextChngd ? flowM3ph : test.Qto).ToString();
|
2022-11-16 16:24:48 +00:00
|
|
|
|
#if SHOW_Q_TG
|
2021-11-03 10:09:34 +00:00
|
|
|
|
ix = (int)MtrlgyClmn.Qtg;
|
|
|
|
|
|
flowM3ph = Units.ConvertFrom(oriUnit, Utils.ParseUDouble(item.SubItems[ix].Text));
|
|
|
|
|
|
item.SubItems[ix].Text = Units.ConvertTo(newUnit, test.QtgTextChngd ? flowM3ph : test.Qtg).ToString();
|
|
|
|
|
|
#endif
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void UpdateVolume(ListViewItem item, Unit newUnit)
|
|
|
|
|
|
{
|
|
|
|
|
|
Test test = item.Tag as Test;
|
|
|
|
|
|
if (test == null || !Units.IsVolume(newUnit) || newUnit == test.VolumeUnit) return;
|
|
|
|
|
|
Unit oriUnit = test.VolumeUnit;
|
|
|
|
|
|
test.VolumeUnit = newUnit;
|
|
|
|
|
|
|
|
|
|
|
|
int ix = (int)MtrlgyClmn.Volume;
|
|
|
|
|
|
double volumeLtr = Units.ConvertFrom(oriUnit, Utils.ParseUDouble(item.SubItems[ix].Text));
|
|
|
|
|
|
item.SubItems[ix].Text = Units.ConvertTo(newUnit, test.VolumeTextChngd ? volumeLtr : test.Volume).ToString();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void UpdateTemperature(ListViewItem item, Unit newUnit)
|
|
|
|
|
|
{
|
|
|
|
|
|
Test test = item.Tag as Test;
|
|
|
|
|
|
if (test == null || !Units.IsTemperature(newUnit) || newUnit == test.TempUnit) return;
|
|
|
|
|
|
Unit oriUnit = test.TempUnit;
|
|
|
|
|
|
test.TempUnit = newUnit;
|
|
|
|
|
|
|
2022-01-25 17:27:00 +00:00
|
|
|
|
int ix = (int)Mtrlgy2Clmn.TempLimLo;
|
2021-11-03 10:09:34 +00:00
|
|
|
|
double tempC = Units.ConvertFrom(oriUnit, Utils.ParseUDouble(item.SubItems[ix].Text));
|
|
|
|
|
|
item.SubItems[ix].Text = Units.ConvertTo(newUnit, test.TempLimLoTextChngd ? tempC : test.TempLimLo).ToString();
|
|
|
|
|
|
|
2022-01-25 17:27:00 +00:00
|
|
|
|
ix = (int)Mtrlgy2Clmn.TempLimHi;
|
2021-11-03 10:09:34 +00:00
|
|
|
|
tempC = Units.ConvertFrom(oriUnit, Utils.ParseUDouble(item.SubItems[ix].Text));
|
|
|
|
|
|
item.SubItems[ix].Text = Units.ConvertTo(newUnit, test.TempLimHiTextChngd ? tempC : test.TempLimHi).ToString();
|
2018-05-22 13:33:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region Metrology2
|
|
|
|
|
|
|
2015-01-04 22:21:12 +00:00
|
|
|
|
public enum Mtrlgy2Clmn
|
|
|
|
|
|
{
|
|
|
|
|
|
Name,
|
|
|
|
|
|
Part,
|
2022-01-25 17:27:00 +00:00
|
|
|
|
TempLimLo,
|
|
|
|
|
|
TempLimHi,
|
|
|
|
|
|
TempUnit,
|
2022-05-19 14:31:09 +00:00
|
|
|
|
TempControl,
|
2019-04-29 08:33:19 +00:00
|
|
|
|
ShortPulses,
|
2016-01-01 23:54:21 +00:00
|
|
|
|
Publish,
|
|
|
|
|
|
Evaluate,
|
2022-12-05 12:42:48 +00:00
|
|
|
|
#if ORACLE_DB
|
|
|
|
|
|
OraId,
|
|
|
|
|
|
OraIdRepetM,
|
|
|
|
|
|
OraDesig,
|
|
|
|
|
|
RawDataId,
|
|
|
|
|
|
RawDataIdRepetM,
|
|
|
|
|
|
RawDataDesig,
|
|
|
|
|
|
#endif
|
|
|
|
|
|
ColumnsCount
|
2015-01-04 22:21:12 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Control[] metrology2Editors;
|
|
|
|
|
|
|
|
|
|
|
|
void PrepareMetrology2Tab()
|
|
|
|
|
|
{
|
2019-09-16 08:51:25 +00:00
|
|
|
|
ListViewEx lv = metrology2ListViewEx;
|
2017-06-08 13:42:47 +00:00
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Test_chdr, Width = 70 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Part, Width = 40 });
|
2022-01-25 17:27:00 +00:00
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Temp_lim_lo_chdr, Width = 100 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Temp_lim_hi_chdr, Width = 100 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = "Unit", Width = 50 });
|
2019-09-21 16:03:25 +00:00
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Control_water_temp_chdr, Width = 110 });
|
2019-04-29 08:33:19 +00:00
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Short_pulses, Width = 100 }); /// Strings.Tol_red_pct_chdr
|
2022-12-05 12:42:48 +00:00
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Publish, Width = 80 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Evaluate, Width = 80 });
|
|
|
|
|
|
#if ORACLE_DB
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = "Ora Id", Width = 45 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = "+ (m) * repet.#", Width = 80 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = "Ora name", Width = 70 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = "Raw data Id", Width = 70 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = "+ (m) * repet.#", Width = 80 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = "Raw data name", Width = 95 });
|
|
|
|
|
|
#endif
|
2015-01-04 22:21:12 +00:00
|
|
|
|
|
2022-01-25 17:27:00 +00:00
|
|
|
|
ComboBox publishCBox = new ComboBox(); /// control for Publish
|
2021-09-23 09:46:40 +00:00
|
|
|
|
for (Publish pb = 0; pb < Publish.Count; pb++)
|
2016-02-25 17:04:18 +00:00
|
|
|
|
{
|
2016-06-03 12:30:44 +00:00
|
|
|
|
publishCBox.Items.Add(pb.ToDescription());
|
2016-02-25 17:04:18 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-01-25 17:27:00 +00:00
|
|
|
|
ComboBox tempUnitBox = new ComboBox();
|
|
|
|
|
|
for (Common.Unit u = 0; u < Common.Unit.Count; u++)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (Units.IsTemperature(u)) tempUnitBox.Items.Add(u.ToDescription());
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-05-19 14:31:09 +00:00
|
|
|
|
ComboBox tempControlBox = new ComboBox(); /// control for Control water temp.
|
|
|
|
|
|
tempControlBox.Items.Add("---");
|
|
|
|
|
|
foreach (var tc in TempControllers) tempControlBox.Items.Add(tc.Name);
|
2017-06-08 13:42:47 +00:00
|
|
|
|
|
2022-01-25 17:27:00 +00:00
|
|
|
|
ComboBox yesNo3CBox = new ComboBox(); /// control for Evaluate
|
2017-06-08 13:42:47 +00:00
|
|
|
|
yesNo3CBox.Items.Add(Strings.yes);
|
|
|
|
|
|
yesNo3CBox.Items.Add(Strings.no);
|
2016-01-01 23:54:21 +00:00
|
|
|
|
|
2015-01-04 22:21:12 +00:00
|
|
|
|
metrology2Editors = new Control[]
|
|
|
|
|
|
{
|
|
|
|
|
|
new TextBox(), /// Name
|
|
|
|
|
|
new TextBox(), /// Part
|
2022-01-25 17:27:00 +00:00
|
|
|
|
new TextBox(), /// Temp.Lim. -
|
|
|
|
|
|
new TextBox(), /// Temp.Lim. +
|
|
|
|
|
|
tempUnitBox,
|
2022-05-19 14:31:09 +00:00
|
|
|
|
tempControlBox, /// Water temp. control
|
2019-04-29 08:33:19 +00:00
|
|
|
|
new TextBox(), /// Short pulses
|
2016-02-25 17:04:18 +00:00
|
|
|
|
publishCBox, /// Publish
|
2017-06-08 13:42:47 +00:00
|
|
|
|
yesNo3CBox, /// Evaluate
|
2022-12-05 12:42:48 +00:00
|
|
|
|
#if ORACLE_DB
|
|
|
|
|
|
new TextBox(), /// Ora Id
|
|
|
|
|
|
new TextBox(), /// Ora Id repet multi
|
|
|
|
|
|
new TextBox(), /// Ora name
|
|
|
|
|
|
new TextBox(), /// Raw data Id
|
|
|
|
|
|
new TextBox(), /// Raw data Id repet multi
|
|
|
|
|
|
new TextBox(), /// Raw data name
|
|
|
|
|
|
#endif
|
|
|
|
|
|
};
|
2015-01-04 22:21:12 +00:00
|
|
|
|
|
|
|
|
|
|
foreach (var ctrl in metrology2Editors)
|
|
|
|
|
|
{
|
|
|
|
|
|
metrology2TabPage.Controls.Add(ctrl);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
void RefreshMetrology2Tab()
|
|
|
|
|
|
{
|
|
|
|
|
|
metrology2ListViewEx.Items.Clear();
|
|
|
|
|
|
foreach (var test in LoadedProcedure.Tests) AddToMetrology2Tab(test);
|
2018-06-04 06:55:50 +00:00
|
|
|
|
|
|
|
|
|
|
if (0 <= SelectedTestIx && SelectedTestIx < metrology2ListViewEx.Items.Count)
|
|
|
|
|
|
{
|
|
|
|
|
|
metrology2ListViewEx.Items[SelectedTestIx].Selected = true;
|
|
|
|
|
|
}
|
2018-05-22 13:33:07 +00:00
|
|
|
|
}
|
2015-01-04 22:21:12 +00:00
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
void AddToMetrology2Tab(Test test)
|
|
|
|
|
|
{
|
|
|
|
|
|
///
|
|
|
|
|
|
/// Metrology 2 item with subitems
|
|
|
|
|
|
///
|
|
|
|
|
|
ListViewItem lvi = new ListViewItem(test.Name); /// Name
|
|
|
|
|
|
lvi.Tag = test;
|
|
|
|
|
|
lvi.SubItems.Add((test.Part == 0) ? "-" : test.Part.ToString()); /// Part
|
2022-01-25 17:27:00 +00:00
|
|
|
|
lvi.SubItems.Add(Units.ConvertTo(test.TempUnit, test.TempLimLo).ToString());
|
|
|
|
|
|
lvi.SubItems.Add(Units.ConvertTo(test.TempUnit, test.TempLimHi).ToString());
|
|
|
|
|
|
lvi.SubItems.Add(test.TempUnit.ToDescription());
|
2022-05-19 14:31:09 +00:00
|
|
|
|
lvi.SubItems.Add(string.IsNullOrEmpty(test.TempControl) ? "---" : test.TempControl);
|
2021-09-23 09:46:40 +00:00
|
|
|
|
lvi.SubItems.Add(test.ShortPulses.ToString());
|
|
|
|
|
|
lvi.SubItems.Add(((Publish)test.Publish).ToDescription());
|
2018-05-22 13:33:07 +00:00
|
|
|
|
lvi.SubItems.Add(test.DoEvaluate ? Strings.yes : Strings.no);
|
2022-12-05 12:42:48 +00:00
|
|
|
|
#if ORACLE_DB
|
|
|
|
|
|
lvi.SubItems.Add(test.OraId.ToString());
|
|
|
|
|
|
lvi.SubItems.Add(test.OraIdRepetMulti.ToString());
|
|
|
|
|
|
lvi.SubItems.Add((test.OraDesignation != null) ? test.OraDesignation : string.Empty);
|
|
|
|
|
|
lvi.SubItems.Add(test.RawDataId.ToString());
|
|
|
|
|
|
lvi.SubItems.Add(test.RawDataIdRepetMulti.ToString());
|
|
|
|
|
|
lvi.SubItems.Add((test.RawDataDesignation != null) ? test.RawDataDesignation : string.Empty);
|
|
|
|
|
|
#endif
|
2018-05-22 13:33:07 +00:00
|
|
|
|
metrology2ListViewEx.Items.Add(lvi);
|
|
|
|
|
|
}
|
2015-01-04 22:21:12 +00:00
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
void UpdateFromMetrology2Tab()
|
2015-01-04 22:21:12 +00:00
|
|
|
|
{
|
2022-01-25 17:27:00 +00:00
|
|
|
|
double dtmp;
|
|
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
for (int i = 0; i < metrology2ListViewEx.Items.Count; i++)
|
|
|
|
|
|
{
|
2019-09-21 16:03:25 +00:00
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
ListViewItem lvi = metrology2ListViewEx.Items[i];
|
|
|
|
|
|
Test entity = (Test)lvi.Tag;
|
|
|
|
|
|
entity.ItemNr = i;
|
|
|
|
|
|
entity.Name = lvi.SubItems[(int)Mtrlgy2Clmn.Name].Text;
|
|
|
|
|
|
entity.Part = lvi.SubItems[(int)Mtrlgy2Clmn.Part].Text.Equals("-") ? 0 : int.Parse(lvi.SubItems[(int)Mtrlgy2Clmn.Part].Text);
|
2022-05-19 14:31:09 +00:00
|
|
|
|
entity.TempControl = lvi.SubItems[(int)Mtrlgy2Clmn.TempControl].Text.Equals("---")
|
|
|
|
|
|
? string.Empty
|
|
|
|
|
|
: lvi.SubItems[(int)Mtrlgy2Clmn.TempControl].Text;
|
2021-09-23 09:46:40 +00:00
|
|
|
|
entity.ShortPulses = (double)Utils.ParseUFloat(lvi.SubItems[(int)Mtrlgy2Clmn.ShortPulses].Text);
|
2019-09-21 16:03:25 +00:00
|
|
|
|
entity.DoEvaluate = lvi.SubItems[(int)Mtrlgy2Clmn.Evaluate].Text.Equals(Strings.yes);
|
|
|
|
|
|
|
2022-01-25 17:27:00 +00:00
|
|
|
|
if (entity.TempLimLoTextChngd && Utils.TryParseUDouble(lvi.SubItems[(int)Mtrlgy2Clmn.TempLimLo].Text, out dtmp))
|
|
|
|
|
|
entity.TempLimLo = (float)Units.ConvertFrom(entity.TempUnit, dtmp);
|
|
|
|
|
|
|
|
|
|
|
|
if (entity.TempLimHiTextChngd && Utils.TryParseUDouble(lvi.SubItems[(int)Mtrlgy2Clmn.TempLimHi].Text, out dtmp))
|
|
|
|
|
|
entity.TempLimHi = (float)Units.ConvertFrom(entity.TempUnit, dtmp);
|
|
|
|
|
|
|
2021-09-23 09:46:40 +00:00
|
|
|
|
for (Publish pb = 0; pb < Publish.Count; pb++)
|
2019-09-21 16:03:25 +00:00
|
|
|
|
{
|
|
|
|
|
|
if (lvi.SubItems[(int)Mtrlgy2Clmn.Publish].Text.Equals(pb.ToDescription()))
|
|
|
|
|
|
{
|
|
|
|
|
|
entity.Publish = (sbyte)pb;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2022-12-05 12:42:48 +00:00
|
|
|
|
#if ORACLE_DB
|
|
|
|
|
|
entity.OraId = int.Parse(lvi.SubItems[(int)Mtrlgy2Clmn.OraId].Text);
|
|
|
|
|
|
entity.OraIdRepetMulti = int.Parse(lvi.SubItems[(int)Mtrlgy2Clmn.OraId].Text);
|
|
|
|
|
|
entity.OraDesignation = lvi.SubItems[(int)Mtrlgy2Clmn.OraDesig].Text;
|
|
|
|
|
|
entity.RawDataId = int.Parse(lvi.SubItems[(int)Mtrlgy2Clmn.RawDataId].Text);
|
|
|
|
|
|
entity.RawDataIdRepetMulti = int.Parse(lvi.SubItems[(int)Mtrlgy2Clmn.RawDataId].Text);
|
|
|
|
|
|
entity.RawDataDesignation = lvi.SubItems[(int)Mtrlgy2Clmn.RawDataDesig].Text;
|
|
|
|
|
|
#endif
|
2019-09-21 16:03:25 +00:00
|
|
|
|
}
|
|
|
|
|
|
catch (Exception exc)
|
|
|
|
|
|
{
|
|
|
|
|
|
MessageBox.Show(string.Format("Unexpected problem: {0}", exc.Message));
|
|
|
|
|
|
}
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
2018-05-22 13:33:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2019-09-16 08:51:25 +00:00
|
|
|
|
private void metrology2ListViewEx_SubItemClicked(object sender, SubItemEventArgs e)
|
2018-05-22 13:33:07 +00:00
|
|
|
|
{
|
2022-01-25 17:27:00 +00:00
|
|
|
|
Mtrlgy2Clmn column = (Mtrlgy2Clmn)e.SubItem;
|
|
|
|
|
|
|
|
|
|
|
|
/// Unit change is allowed when locked
|
|
|
|
|
|
if (column != Mtrlgy2Clmn.TempUnit && (!unlocked || column >= Mtrlgy2Clmn.ColumnsCount))
|
|
|
|
|
|
{
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
2019-11-27 10:22:32 +00:00
|
|
|
|
|
|
|
|
|
|
Mtrlgy2Clmn[] protectedColumns = new Mtrlgy2Clmn[]
|
|
|
|
|
|
{
|
|
|
|
|
|
Mtrlgy2Clmn.Name,
|
2022-01-25 17:27:00 +00:00
|
|
|
|
Mtrlgy2Clmn.TempLimLo, Mtrlgy2Clmn.TempLimHi,
|
2019-11-27 10:22:32 +00:00
|
|
|
|
Mtrlgy2Clmn.Publish, Mtrlgy2Clmn.Evaluate
|
|
|
|
|
|
};
|
|
|
|
|
|
if (((e.Item.Tag as Test).Profile >= TestProfile.Protected) && protectedColumns.Contains<Mtrlgy2Clmn>((Mtrlgy2Clmn)e.SubItem)) return;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
|
|
|
|
|
|
metrology2ListViewEx.StartEditing(metrology2Editors[e.SubItem], e.Item, e.SubItem);
|
|
|
|
|
|
}
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
2019-09-16 08:51:25 +00:00
|
|
|
|
void metrology2ListViewEx_SubItemRightClicked(object sender, SubItemEventArgs e)
|
2018-05-22 13:33:07 +00:00
|
|
|
|
{
|
|
|
|
|
|
if (!unlocked || e.SubItem >= (int)Mtrlgy2Clmn.ColumnsCount)
|
|
|
|
|
|
{
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (DialogResult.Yes == MessageBox.Show(Strings.Do_you_want_to_copy_this_value_to_all_cells_below_this_cell,
|
|
|
|
|
|
Strings.Confirmation, MessageBoxButtons.YesNo, MessageBoxIcon.Question))
|
|
|
|
|
|
{
|
|
|
|
|
|
int columnNr = e.SubItem;
|
|
|
|
|
|
string value = null;
|
|
|
|
|
|
System.Drawing.Color backColor = System.Drawing.Color.White;
|
|
|
|
|
|
foreach (ListViewItem item in metrology2ListViewEx.Items)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (value != null && item.SubItems.Count > columnNr)
|
|
|
|
|
|
{
|
|
|
|
|
|
item.SubItems[columnNr].Text = value;
|
|
|
|
|
|
item.SubItems[columnNr].BackColor = backColor;
|
2022-01-25 17:27:00 +00:00
|
|
|
|
|
|
|
|
|
|
if (columnNr == (int)Mtrlgy2Clmn.TempUnit) UpdateTemperature(item, Units.FromDescription(value));
|
2018-05-22 13:33:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
else if (item == e.Item)
|
|
|
|
|
|
{
|
|
|
|
|
|
value = item.SubItems[columnNr].Text;
|
|
|
|
|
|
backColor = item.SubItems[columnNr].BackColor;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2019-09-16 08:51:25 +00:00
|
|
|
|
private void metrology2ListViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e)
|
2018-05-22 13:33:07 +00:00
|
|
|
|
{
|
2022-01-25 17:27:00 +00:00
|
|
|
|
Test test = e.Item.Tag as Test;
|
|
|
|
|
|
Mtrlgy2Clmn column = (Mtrlgy2Clmn)e.SubItem;
|
|
|
|
|
|
Unit newUnit;
|
2019-09-21 16:03:25 +00:00
|
|
|
|
int dummy;
|
2022-01-25 17:27:00 +00:00
|
|
|
|
float fdummy;
|
|
|
|
|
|
|
|
|
|
|
|
switch (column)
|
2019-09-21 16:03:25 +00:00
|
|
|
|
{
|
2022-01-25 17:27:00 +00:00
|
|
|
|
case Mtrlgy2Clmn.Name:
|
|
|
|
|
|
if (Utils.IsGoodFName(e.DisplayText)) return; /// OK
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case Mtrlgy2Clmn.Part:
|
2019-09-21 16:03:25 +00:00
|
|
|
|
{
|
2022-01-25 17:27:00 +00:00
|
|
|
|
if (e.DisplayText.Equals("-")) return; /// OK
|
|
|
|
|
|
if (int.TryParse(e.DisplayText, out dummy) && Data.IsGoodPartNr(dummy)) return; /// OK
|
|
|
|
|
|
break;
|
2019-09-21 16:03:25 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-01-25 17:27:00 +00:00
|
|
|
|
case Mtrlgy2Clmn.TempLimLo:
|
|
|
|
|
|
if (Utils.TryParseUFloat(e.DisplayText, out fdummy))
|
|
|
|
|
|
{
|
|
|
|
|
|
if (e.DisplayText != e.Item.SubItems[e.SubItem].Text) test.TempLimLoTextChngd = true;
|
|
|
|
|
|
return; /// OK
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
|
2022-01-25 17:27:00 +00:00
|
|
|
|
case Mtrlgy2Clmn.TempLimHi:
|
|
|
|
|
|
if (Utils.TryParseUFloat(e.DisplayText, out fdummy))
|
|
|
|
|
|
{
|
|
|
|
|
|
if (e.DisplayText != e.Item.SubItems[e.SubItem].Text) test.TempLimHiTextChngd = true;
|
|
|
|
|
|
return; /// OK
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
2019-09-21 16:03:25 +00:00
|
|
|
|
|
2022-01-25 17:27:00 +00:00
|
|
|
|
case Mtrlgy2Clmn.TempUnit:
|
|
|
|
|
|
newUnit = Units.FromDescription(e.DisplayText);
|
|
|
|
|
|
if (!Units.IsTemperature(newUnit)) break;
|
|
|
|
|
|
UpdateTemperature(e.Item, newUnit);
|
2019-09-21 16:03:25 +00:00
|
|
|
|
return;
|
2022-01-25 17:27:00 +00:00
|
|
|
|
|
|
|
|
|
|
case Mtrlgy2Clmn.ShortPulses:
|
|
|
|
|
|
if (Utils.TryParseUFloat(e.DisplayText, out fdummy)) return;
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
2022-05-19 14:31:09 +00:00
|
|
|
|
case Mtrlgy2Clmn.TempControl:
|
2022-01-25 17:27:00 +00:00
|
|
|
|
case Mtrlgy2Clmn.Publish:
|
|
|
|
|
|
case Mtrlgy2Clmn.Evaluate:
|
|
|
|
|
|
/// Combo boxes
|
|
|
|
|
|
if ((metrology2Editors[e.SubItem] as ComboBox).Items.Contains(e.DisplayText)) return; /// OK
|
|
|
|
|
|
break;
|
2022-12-05 12:42:48 +00:00
|
|
|
|
#if ORACLE_DB
|
|
|
|
|
|
case Mtrlgy2Clmn.OraId:
|
|
|
|
|
|
case Mtrlgy2Clmn.OraIdRepetM:
|
|
|
|
|
|
case Mtrlgy2Clmn.RawDataId:
|
|
|
|
|
|
case Mtrlgy2Clmn.RawDataIdRepetM:
|
|
|
|
|
|
if (int.TryParse(e.DisplayText, out dummy)) return; /// OK
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case Mtrlgy2Clmn.OraDesig:
|
|
|
|
|
|
case Mtrlgy2Clmn.RawDataDesig:
|
|
|
|
|
|
return; /// Always OK
|
|
|
|
|
|
#endif
|
2018-05-22 13:33:07 +00:00
|
|
|
|
}
|
2022-01-25 17:27:00 +00:00
|
|
|
|
|
|
|
|
|
|
/// Display text was not OK, revert to the original one
|
|
|
|
|
|
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
|
|
|
|
|
|
e.Cancel = true;
|
|
|
|
|
|
return;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region Process
|
|
|
|
|
|
|
|
|
|
|
|
public enum ProcessClmn
|
2015-01-17 05:34:24 +00:00
|
|
|
|
{
|
|
|
|
|
|
Name,
|
|
|
|
|
|
Part,
|
2019-10-24 12:38:36 +00:00
|
|
|
|
DrainingBefore,
|
|
|
|
|
|
DrainingAfter,
|
2018-05-22 13:33:07 +00:00
|
|
|
|
Feeding,
|
|
|
|
|
|
Bench,
|
|
|
|
|
|
Output,
|
|
|
|
|
|
Sensor,
|
|
|
|
|
|
#if HEAT_METERS
|
|
|
|
|
|
HeatMeterSensors,
|
2016-11-17 09:24:07 +00:00
|
|
|
|
#endif
|
2018-05-22 13:33:07 +00:00
|
|
|
|
TrnStart,
|
2018-11-14 07:23:01 +00:00
|
|
|
|
TrnBetween,
|
2018-05-22 13:33:07 +00:00
|
|
|
|
TrnStop,
|
2017-06-08 13:42:47 +00:00
|
|
|
|
ColumnsCount
|
2015-01-17 05:34:24 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
Control[] processEditors;
|
2015-01-17 05:34:24 +00:00
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
void PrepareProcess()
|
|
|
|
|
|
{
|
2019-09-16 08:51:25 +00:00
|
|
|
|
ListViewEx lv = processListViewEx;
|
2017-06-08 13:42:47 +00:00
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Test_chdr, Width = 70 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Part, Width = 40 });
|
2019-10-24 12:38:36 +00:00
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Draining_before, Width = 90 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Draining_after, Width = 90 });
|
2018-05-22 13:33:07 +00:00
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Feeding_chdr, Width = 80 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Bench_chdr, Width = 80 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Output_chdr, Width = 80 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Sensors_chdr, Width = 80 });
|
|
|
|
|
|
#if HEAT_METERS
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Heat_meter_sensors, Width = 110 });
|
2016-11-17 09:24:07 +00:00
|
|
|
|
#endif
|
2018-05-22 13:33:07 +00:00
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.TransitionStart_chdr, Width = 100 });
|
2018-11-14 07:23:01 +00:00
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.TransitionBetween_chdr, Width = 100 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.TransitionEnd_chdr, Width = 100 });
|
2015-01-17 05:34:24 +00:00
|
|
|
|
|
2019-10-24 12:38:36 +00:00
|
|
|
|
ComboBox yesNo1CBox = new ComboBox(); /// control for Draining before test
|
|
|
|
|
|
yesNo1CBox.Items.Add(Strings.yes);
|
|
|
|
|
|
yesNo1CBox.Items.Add(Strings.no);
|
|
|
|
|
|
|
|
|
|
|
|
ComboBox yesNo2CBox = new ComboBox(); /// control for Draining after test
|
|
|
|
|
|
yesNo2CBox.Items.Add(Strings.yes);
|
|
|
|
|
|
yesNo2CBox.Items.Add(Strings.no);
|
|
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
processEditors = new Control[]
|
2015-01-17 05:34:24 +00:00
|
|
|
|
{
|
|
|
|
|
|
new TextBox(), /// Name
|
|
|
|
|
|
new TextBox(), /// Part
|
2019-10-24 12:38:36 +00:00
|
|
|
|
yesNo1CBox,
|
|
|
|
|
|
yesNo2CBox,
|
2018-05-22 13:33:07 +00:00
|
|
|
|
new ComboBox(), /// Feeding
|
|
|
|
|
|
new ComboBox(), /// Table
|
|
|
|
|
|
new ComboBox(), /// Output
|
|
|
|
|
|
new ComboBox(), /// Meters
|
|
|
|
|
|
#if HEAT_METERS
|
|
|
|
|
|
new ComboBox(), /// Heat meters
|
2016-11-17 09:24:07 +00:00
|
|
|
|
#endif
|
2018-11-14 07:23:01 +00:00
|
|
|
|
new ComboBox(), /// Transition-Start
|
|
|
|
|
|
new ComboBox(), /// Transition-Between
|
|
|
|
|
|
new ComboBox(), /// Transition-End
|
2015-01-17 05:34:24 +00:00
|
|
|
|
};
|
|
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
foreach (var path in feedingPaths) ((ComboBox)processEditors[(int)ProcessClmn.Feeding]).Items.Add(path.Name);
|
|
|
|
|
|
foreach (var path in benchPaths) ((ComboBox)processEditors[(int)ProcessClmn.Bench]).Items.Add(path.Name);
|
|
|
|
|
|
foreach (var path in outputPaths) ((ComboBox)processEditors[(int)ProcessClmn.Output]).Items.Add(path.Name);
|
|
|
|
|
|
foreach (var path in metersPaths) ((ComboBox)processEditors[(int)ProcessClmn.Sensor]).Items.Add(path.Name);
|
2017-02-14 12:25:43 +00:00
|
|
|
|
#if HEAT_METERS
|
2018-05-22 13:33:07 +00:00
|
|
|
|
foreach (var path in heatMetersPaths) ((ComboBox)processEditors[(int)ProcessClmn.HeatMeterSensors]).Items.Add(path.Name);
|
2016-11-17 09:24:07 +00:00
|
|
|
|
#endif
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
((ComboBox)processEditors[(int)ProcessClmn.TrnStart]).Items.Add("---");
|
2018-11-14 07:23:01 +00:00
|
|
|
|
((ComboBox)processEditors[(int)ProcessClmn.TrnBetween]).Items.Add("---");
|
2018-05-22 13:33:07 +00:00
|
|
|
|
((ComboBox)processEditors[(int)ProcessClmn.TrnStop]).Items.Add("---");
|
|
|
|
|
|
foreach (var trans in transitionSequences)
|
|
|
|
|
|
{
|
|
|
|
|
|
((ComboBox)processEditors[(int)ProcessClmn.TrnStart]).Items.Add(trans.Name);
|
2018-11-14 07:23:01 +00:00
|
|
|
|
((ComboBox)processEditors[(int)ProcessClmn.TrnBetween]).Items.Add(trans.Name);
|
|
|
|
|
|
((ComboBox)processEditors[(int)ProcessClmn.TrnStop]).Items.Add(trans.Name);
|
2017-06-08 13:42:47 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
foreach (var ctrl in processEditors)
|
|
|
|
|
|
{
|
|
|
|
|
|
processTabPage.Controls.Add(ctrl);
|
2016-01-01 23:54:21 +00:00
|
|
|
|
}
|
2018-05-22 13:33:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void RefreshProcessTab()
|
|
|
|
|
|
{
|
|
|
|
|
|
processListViewEx.Items.Clear();
|
|
|
|
|
|
foreach (var test in LoadedProcedure.Tests) AddToProcessTab(test);
|
2018-06-04 06:55:50 +00:00
|
|
|
|
|
|
|
|
|
|
if (0 <= SelectedTestIx && SelectedTestIx < processListViewEx.Items.Count)
|
|
|
|
|
|
{
|
|
|
|
|
|
processListViewEx.Items[SelectedTestIx].Selected = true;
|
|
|
|
|
|
}
|
2018-05-22 13:33:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void AddToProcessTab(Test test)
|
|
|
|
|
|
{
|
2021-10-26 09:23:57 +00:00
|
|
|
|
ITestMethod tm = TBF.Rig.TbfComponents.FindComponent(test.Method, TbfComponents) as ITestMethod;
|
2019-11-27 10:22:32 +00:00
|
|
|
|
bool isNotAHydroTest = (tm != null) && !tm.DoTransitions();
|
2019-10-23 11:33:57 +00:00
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
///
|
|
|
|
|
|
/// Process item with subitems
|
|
|
|
|
|
///
|
2019-10-24 12:38:36 +00:00
|
|
|
|
ListViewItem lvi = new ListViewItem(test.Name); /// Name
|
2018-05-22 13:33:07 +00:00
|
|
|
|
lvi.Tag = test;
|
2019-10-24 12:38:36 +00:00
|
|
|
|
lvi.SubItems.Add((test.Part == 0) ? "-" : test.Part.ToString()); /// Part
|
2019-11-27 10:22:32 +00:00
|
|
|
|
|
|
|
|
|
|
if (isNotAHydroTest)
|
2019-10-23 11:33:57 +00:00
|
|
|
|
{
|
2019-10-24 12:38:36 +00:00
|
|
|
|
lvi.SubItems.Add(string.Empty); /// Draining before test N/A
|
|
|
|
|
|
lvi.SubItems.Add(string.Empty); /// Draining after test N/A
|
|
|
|
|
|
lvi.SubItems.Add(string.Empty); /// FeedingPath N/A
|
|
|
|
|
|
lvi.SubItems.Add(string.Empty); /// BenchPath N/A
|
|
|
|
|
|
lvi.SubItems.Add(string.Empty); /// OutputPath N/A
|
|
|
|
|
|
#if HEAT_METERS
|
|
|
|
|
|
lvi.SubItems.Add(test.HeatMetersPath);
|
|
|
|
|
|
#endif
|
|
|
|
|
|
lvi.SubItems.Add(test.MetersPath);
|
|
|
|
|
|
lvi.SubItems.Add(string.Empty); /// RelTransBefore N/A
|
|
|
|
|
|
lvi.SubItems.Add(string.Empty); /// RelTransBetween N/A
|
|
|
|
|
|
lvi.SubItems.Add(string.Empty); /// TransitionAfter N/A
|
2019-10-23 11:33:57 +00:00
|
|
|
|
}
|
2019-11-27 10:22:32 +00:00
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
lvi.SubItems.Add(test.DoDraining ? Strings.yes : Strings.no); /// Draining before test
|
|
|
|
|
|
lvi.SubItems.Add(test.DoDrainingAfter ? Strings.yes : Strings.no); /// Draining after test
|
|
|
|
|
|
lvi.SubItems.Add(test.FeedingPath);
|
|
|
|
|
|
lvi.SubItems.Add(test.BenchPath);
|
|
|
|
|
|
lvi.SubItems.Add(test.OutputPath);
|
|
|
|
|
|
#if HEAT_METERS
|
|
|
|
|
|
lvi.SubItems.Add(test.HeatMetersPath);
|
|
|
|
|
|
#endif
|
|
|
|
|
|
lvi.SubItems.Add(test.MetersPath);
|
2021-09-23 09:46:40 +00:00
|
|
|
|
lvi.SubItems.Add(string.IsNullOrEmpty(test.TransBefore) ? "---" : test.TransBefore);
|
|
|
|
|
|
lvi.SubItems.Add(string.IsNullOrEmpty(test.TransBetween) ? "---" : test.TransBetween);
|
|
|
|
|
|
lvi.SubItems.Add(string.IsNullOrEmpty(test.TransAfter) ? "---" : test.TransAfter);
|
2019-11-27 10:22:32 +00:00
|
|
|
|
}
|
2018-05-22 13:33:07 +00:00
|
|
|
|
|
|
|
|
|
|
processListViewEx.Items.Add(lvi);
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void UpdateFromProcessTab()
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < processListViewEx.Items.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
ListViewItem lvi = processListViewEx.Items[i];
|
2019-11-27 10:22:32 +00:00
|
|
|
|
Test test = (Test)lvi.Tag;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
2021-10-26 09:23:57 +00:00
|
|
|
|
ITestMethod tm = TBF.Rig.TbfComponents.FindComponent(test.Method, TbfComponents) as ITestMethod;
|
2019-11-27 10:22:32 +00:00
|
|
|
|
bool isNotAHydroTest = (tm != null) && !tm.DoTransitions();
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
2019-11-27 10:22:32 +00:00
|
|
|
|
test.Name = lvi.Text;
|
|
|
|
|
|
test.ItemNr = i;
|
|
|
|
|
|
|
|
|
|
|
|
int part = test.Part;
|
2015-01-17 05:34:24 +00:00
|
|
|
|
if (lvi.SubItems[(int)ProcessClmn.Part].Text.Equals("-"))
|
2015-01-04 22:21:12 +00:00
|
|
|
|
{
|
2019-11-27 10:22:32 +00:00
|
|
|
|
test.Part = 0;
|
2015-01-04 22:21:12 +00:00
|
|
|
|
}
|
2015-01-17 05:34:24 +00:00
|
|
|
|
else if (int.TryParse(lvi.SubItems[(int)ProcessClmn.Part].Text, out part))
|
2015-01-04 22:21:12 +00:00
|
|
|
|
{
|
2019-11-27 10:22:32 +00:00
|
|
|
|
test.Part = part;
|
2015-01-04 22:21:12 +00:00
|
|
|
|
}
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
2019-11-27 10:22:32 +00:00
|
|
|
|
int column;
|
|
|
|
|
|
string subItemText;
|
|
|
|
|
|
if (!isNotAHydroTest)
|
|
|
|
|
|
{
|
|
|
|
|
|
/// Is a hydraulical test or test.Method component == null
|
|
|
|
|
|
test.DoDraining = lvi.SubItems[(int)ProcessClmn.DrainingBefore].Text.Equals(Strings.yes);
|
|
|
|
|
|
test.DoDrainingAfter = lvi.SubItems[(int)ProcessClmn.DrainingAfter].Text.Equals(Strings.yes);
|
2019-10-24 12:38:36 +00:00
|
|
|
|
|
2019-11-27 10:22:32 +00:00
|
|
|
|
column = (int)ProcessClmn.Feeding;
|
|
|
|
|
|
subItemText = lvi.SubItems[column].Text;
|
|
|
|
|
|
if (string.IsNullOrEmpty(subItemText) || (processEditors[column] as ComboBox).Items.Contains(subItemText))
|
|
|
|
|
|
{
|
|
|
|
|
|
test.FeedingPath = subItemText;
|
|
|
|
|
|
}
|
2019-10-23 11:33:57 +00:00
|
|
|
|
|
2019-11-27 10:22:32 +00:00
|
|
|
|
column = (int)ProcessClmn.Bench;
|
|
|
|
|
|
subItemText = lvi.SubItems[column].Text;
|
|
|
|
|
|
if (string.IsNullOrEmpty(subItemText) || (processEditors[column] as ComboBox).Items.Contains(subItemText))
|
|
|
|
|
|
{
|
|
|
|
|
|
test.BenchPath = subItemText;
|
|
|
|
|
|
}
|
2019-10-23 11:33:57 +00:00
|
|
|
|
|
2019-11-27 10:22:32 +00:00
|
|
|
|
column = (int)ProcessClmn.Output;
|
|
|
|
|
|
subItemText = lvi.SubItems[column].Text;
|
|
|
|
|
|
if (string.IsNullOrEmpty(subItemText) || (processEditors[column] as ComboBox).Items.Contains(subItemText))
|
|
|
|
|
|
{
|
|
|
|
|
|
test.OutputPath = subItemText;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
column = (int)ProcessClmn.TrnStart;
|
|
|
|
|
|
subItemText = lvi.SubItems[column].Text;
|
|
|
|
|
|
if (string.IsNullOrEmpty(subItemText) || (processEditors[column] as ComboBox).Items.Contains(subItemText))
|
|
|
|
|
|
{
|
2021-09-23 09:46:40 +00:00
|
|
|
|
test.TransBefore = (string.IsNullOrEmpty(subItemText) || subItemText.Equals("---")) ? string.Empty : subItemText;
|
2019-11-27 10:22:32 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
column = (int)ProcessClmn.TrnBetween;
|
|
|
|
|
|
subItemText = lvi.SubItems[column].Text;
|
|
|
|
|
|
if (string.IsNullOrEmpty(subItemText) || (processEditors[column] as ComboBox).Items.Contains(subItemText))
|
|
|
|
|
|
{
|
2021-09-23 09:46:40 +00:00
|
|
|
|
test.TransBetween = (string.IsNullOrEmpty(subItemText) || subItemText.Equals("---")) ? string.Empty : subItemText;
|
2019-11-27 10:22:32 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
column = (int)ProcessClmn.TrnStop;
|
|
|
|
|
|
subItemText = lvi.SubItems[column].Text;
|
|
|
|
|
|
if (string.IsNullOrEmpty(subItemText) || (processEditors[column] as ComboBox).Items.Contains(subItemText))
|
|
|
|
|
|
{
|
2021-09-23 09:46:40 +00:00
|
|
|
|
test.TransAfter = (string.IsNullOrEmpty(subItemText) || subItemText.Equals("---")) ? string.Empty : subItemText;
|
2019-11-27 10:22:32 +00:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2019-10-23 11:33:57 +00:00
|
|
|
|
|
|
|
|
|
|
column = (int)ProcessClmn.Sensor;
|
|
|
|
|
|
subItemText = lvi.SubItems[column].Text;
|
|
|
|
|
|
if ((processEditors[column] as ComboBox).Items.Contains(subItemText))
|
2019-11-27 10:22:32 +00:00
|
|
|
|
{
|
|
|
|
|
|
test.MetersPath = subItemText;
|
|
|
|
|
|
}
|
2017-02-14 12:25:43 +00:00
|
|
|
|
#if HEAT_METERS
|
2016-06-28 16:04:52 +00:00
|
|
|
|
if ((processEditors[(int)ProcessClmn.HeatMeterSensors] as ComboBox).Items.Contains(lvi.SubItems[(int)ProcessClmn.HeatMeterSensors].Text))
|
|
|
|
|
|
{
|
2020-08-07 11:42:51 +00:00
|
|
|
|
test.HeatMetersPath = lvi.SubItems[(int)ProcessClmn.HeatMeterSensors].Text;
|
2016-06-28 16:04:52 +00:00
|
|
|
|
}
|
|
|
|
|
|
#endif
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2019-09-16 08:51:25 +00:00
|
|
|
|
private void processListViewEx_SubItemClicked(object sender, SubItemEventArgs e)
|
2014-07-28 07:54:35 +00:00
|
|
|
|
{
|
2018-05-22 13:33:07 +00:00
|
|
|
|
if (!unlocked || e.SubItem >= (int)ProcessClmn.ColumnsCount)
|
|
|
|
|
|
{
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2019-11-27 10:22:32 +00:00
|
|
|
|
ProcessClmn[] protectedColumns = new ProcessClmn[] { ProcessClmn.Name };
|
|
|
|
|
|
if (((e.Item.Tag as Test).Profile >= TestProfile.Protected) && protectedColumns.Contains<ProcessClmn>((ProcessClmn)e.SubItem)) return;
|
2019-10-23 11:33:57 +00:00
|
|
|
|
|
2021-10-26 09:23:57 +00:00
|
|
|
|
ITestMethod tm = TBF.Rig.TbfComponents.FindComponent((e.Item.Tag as Test).Method, TbfComponents) as ITestMethod;
|
2019-11-27 10:22:32 +00:00
|
|
|
|
bool isNotAHydroTest = (tm != null) && !tm.DoTransitions();
|
|
|
|
|
|
|
|
|
|
|
|
if (isNotAHydroTest && ((e.SubItem == (int)ProcessClmn.DrainingBefore) ||
|
|
|
|
|
|
(e.SubItem == (int)ProcessClmn.DrainingAfter) ||
|
|
|
|
|
|
(e.SubItem == (int)ProcessClmn.Feeding) ||
|
|
|
|
|
|
(e.SubItem == (int)ProcessClmn.Bench) ||
|
|
|
|
|
|
(e.SubItem == (int)ProcessClmn.Output) ||
|
|
|
|
|
|
(e.SubItem == (int)ProcessClmn.TrnStart) ||
|
|
|
|
|
|
(e.SubItem == (int)ProcessClmn.TrnBetween) ||
|
|
|
|
|
|
(e.SubItem == (int)ProcessClmn.TrnStop)))
|
2019-10-23 11:33:57 +00:00
|
|
|
|
{
|
2019-11-27 10:22:32 +00:00
|
|
|
|
return; /// Prevent editing these cells
|
2019-10-23 11:33:57 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
processListViewEx.StartEditing(processEditors[e.SubItem], e.Item, e.SubItem);
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2019-09-16 08:51:25 +00:00
|
|
|
|
void processListViewEx_SubItemRightClicked(object sender, SubItemEventArgs e)
|
2016-08-15 09:23:00 +00:00
|
|
|
|
{
|
2018-05-22 13:33:07 +00:00
|
|
|
|
if (!unlocked || e.SubItem >= (int)ProcessClmn.ColumnsCount)
|
|
|
|
|
|
{
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
2016-08-15 09:23:00 +00:00
|
|
|
|
|
|
|
|
|
|
if (DialogResult.Yes == MessageBox.Show(Strings.Do_you_want_to_copy_this_value_to_all_cells_below_this_cell,
|
|
|
|
|
|
Strings.Confirmation, MessageBoxButtons.YesNo, MessageBoxIcon.Question))
|
|
|
|
|
|
{
|
|
|
|
|
|
int columnNr = e.SubItem;
|
|
|
|
|
|
string value = null;
|
|
|
|
|
|
System.Drawing.Color backColor = System.Drawing.Color.White;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
foreach (ListViewItem item in processListViewEx.Items)
|
2016-08-15 09:23:00 +00:00
|
|
|
|
{
|
2017-03-20 20:29:48 +00:00
|
|
|
|
if (value != null && item.SubItems.Count > columnNr)
|
2016-08-15 09:23:00 +00:00
|
|
|
|
{
|
|
|
|
|
|
item.SubItems[columnNr].Text = value;
|
|
|
|
|
|
item.SubItems[columnNr].BackColor = backColor;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (item == e.Item)
|
|
|
|
|
|
{
|
|
|
|
|
|
value = item.SubItems[columnNr].Text;
|
|
|
|
|
|
backColor = item.SubItems[columnNr].BackColor;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2019-09-16 08:51:25 +00:00
|
|
|
|
private void processListViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e)
|
2014-07-28 07:54:35 +00:00
|
|
|
|
{
|
2018-06-13 05:41:03 +00:00
|
|
|
|
if (e.SubItem == (int)ProcessClmn.Name)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!Utils.IsGoodFName(e.DisplayText))
|
|
|
|
|
|
{
|
|
|
|
|
|
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
|
|
|
|
|
|
e.Cancel = true;
|
|
|
|
|
|
return; /// NOK
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
int dummy;
|
|
|
|
|
|
if (e.SubItem == (int)ProcessClmn.Part)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (e.DisplayText.Equals("-")) return; /// OK
|
2021-09-19 20:04:16 +00:00
|
|
|
|
if (!int.TryParse(e.DisplayText, out dummy) || !Data.IsGoodPartNr(dummy))
|
2019-01-14 13:32:26 +00:00
|
|
|
|
{
|
2018-05-22 13:33:07 +00:00
|
|
|
|
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
|
|
|
|
|
|
e.Cancel = true;
|
|
|
|
|
|
return; /// NOK
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
2019-10-24 12:38:36 +00:00
|
|
|
|
if ((e.SubItem == (int)ProcessClmn.DrainingBefore) && !(processEditors[(int)ProcessClmn.DrainingBefore] as ComboBox).Items.Contains(e.DisplayText))
|
|
|
|
|
|
{
|
|
|
|
|
|
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
|
|
|
|
|
|
e.Cancel = true;
|
|
|
|
|
|
return; /// NOK
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if ((e.SubItem == (int)ProcessClmn.DrainingAfter) && !(processEditors[(int)ProcessClmn.DrainingAfter] as ComboBox).Items.Contains(e.DisplayText))
|
|
|
|
|
|
{
|
|
|
|
|
|
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
|
|
|
|
|
|
e.Cancel = true;
|
|
|
|
|
|
return; /// NOK
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
if (((e.SubItem == (int)ProcessClmn.Feeding) && !(processEditors[(int)ProcessClmn.Feeding] as ComboBox).Items.Contains(e.DisplayText)) ||
|
|
|
|
|
|
((e.SubItem == (int)ProcessClmn.Bench) && !(processEditors[(int)ProcessClmn.Bench] as ComboBox).Items.Contains(e.DisplayText)) ||
|
|
|
|
|
|
((e.SubItem == (int)ProcessClmn.Output) && !(processEditors[(int)ProcessClmn.Output] as ComboBox).Items.Contains(e.DisplayText)) ||
|
|
|
|
|
|
((e.SubItem == (int)ProcessClmn.Sensor) && !(processEditors[(int)ProcessClmn.Sensor] as ComboBox).Items.Contains(e.DisplayText)) ||
|
|
|
|
|
|
((e.SubItem == (int)ProcessClmn.TrnStart) && !(processEditors[(int)ProcessClmn.TrnStart] as ComboBox).Items.Contains(e.DisplayText)) ||
|
2018-11-14 07:23:01 +00:00
|
|
|
|
((e.SubItem == (int)ProcessClmn.TrnBetween) && !(processEditors[(int)ProcessClmn.TrnBetween] as ComboBox).Items.Contains(e.DisplayText)) ||
|
2018-05-22 13:33:07 +00:00
|
|
|
|
((e.SubItem == (int)ProcessClmn.TrnStop) && !(processEditors[(int)ProcessClmn.TrnStop] as ComboBox).Items.Contains(e.DisplayText)))
|
|
|
|
|
|
{
|
|
|
|
|
|
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
|
|
|
|
|
|
e.Cancel = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
#endregion
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
#region Parameters
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
public enum ParametersClmn
|
|
|
|
|
|
{
|
|
|
|
|
|
Name,
|
|
|
|
|
|
Part,
|
|
|
|
|
|
PumpPower,
|
|
|
|
|
|
MassRepeats,
|
|
|
|
|
|
#if STABLE_MASS_EXTRAS
|
|
|
|
|
|
MassSpread,
|
|
|
|
|
|
MassMethod,
|
|
|
|
|
|
#endif
|
|
|
|
|
|
Time_Pump2StartV,
|
|
|
|
|
|
Time_BeforeFlow,
|
|
|
|
|
|
Time_Flow2Mass,
|
|
|
|
|
|
Time_Stop2Mass,
|
|
|
|
|
|
ColumnsCount
|
|
|
|
|
|
}
|
2016-08-15 09:23:00 +00:00
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
Control[] parametersEditors;
|
2016-08-15 09:23:00 +00:00
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
void PrepareParameters()
|
|
|
|
|
|
{
|
2019-09-16 08:51:25 +00:00
|
|
|
|
ListViewEx lv = parametersListViewEx;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Test_chdr, Width = 70 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Part, Width = 40 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Pump_power_pct, Width = 90 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Mass_repeats, Width = 90 });
|
|
|
|
|
|
#if STABLE_MASS_EXTRAS
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Mass_spread_kg, Width = 110 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Mass_method, Width = 90 });
|
|
|
|
|
|
#endif
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.TimePump2StartV_chdr, Width = 70 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.TimeBeforeSettingFlow, Width = 70 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.TimeFlow2Start_chdr, Width = 70 });
|
|
|
|
|
|
lv.Columns.Add(new ColumnHeader { Text = Strings.Time2MassMsrmt_chdr, Width = 70 });
|
2016-08-15 09:23:00 +00:00
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
parametersEditors = new Control[]
|
|
|
|
|
|
{
|
|
|
|
|
|
new TextBox(), /// Name
|
|
|
|
|
|
new TextBox(), /// Part
|
|
|
|
|
|
new ComboBox(), /// PumpPower
|
|
|
|
|
|
new TextBox(), /// MassRepeats
|
|
|
|
|
|
#if STABLE_MASS_EXTRAS
|
|
|
|
|
|
new TextBox(), /// MassSpread
|
|
|
|
|
|
new ComboBox(), /// MassMethod
|
|
|
|
|
|
#endif
|
|
|
|
|
|
new TextBox(), /// Time_Pump2StartV
|
|
|
|
|
|
new TextBox(), /// Time_BeforeFlow
|
|
|
|
|
|
new TextBox(), /// Time_Flow2Mass
|
|
|
|
|
|
new TextBox(), /// Time_Stop2Mass
|
|
|
|
|
|
};
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
((ComboBox)parametersEditors[(int)ParametersClmn.PumpPower]).Items.Add("0");
|
|
|
|
|
|
((ComboBox)parametersEditors[(int)ParametersClmn.PumpPower]).Items.Add("30");
|
|
|
|
|
|
((ComboBox)parametersEditors[(int)ParametersClmn.PumpPower]).Items.Add("40");
|
|
|
|
|
|
((ComboBox)parametersEditors[(int)ParametersClmn.PumpPower]).Items.Add("50");
|
|
|
|
|
|
((ComboBox)parametersEditors[(int)ParametersClmn.PumpPower]).Items.Add("60");
|
|
|
|
|
|
((ComboBox)parametersEditors[(int)ParametersClmn.PumpPower]).Items.Add("70");
|
|
|
|
|
|
((ComboBox)parametersEditors[(int)ParametersClmn.PumpPower]).Items.Add("75");
|
|
|
|
|
|
((ComboBox)parametersEditors[(int)ParametersClmn.PumpPower]).Items.Add("80");
|
|
|
|
|
|
((ComboBox)parametersEditors[(int)ParametersClmn.PumpPower]).Items.Add("85");
|
|
|
|
|
|
((ComboBox)parametersEditors[(int)ParametersClmn.PumpPower]).Items.Add("90");
|
|
|
|
|
|
((ComboBox)parametersEditors[(int)ParametersClmn.PumpPower]).Items.Add("92");
|
|
|
|
|
|
((ComboBox)parametersEditors[(int)ParametersClmn.PumpPower]).Items.Add("94");
|
|
|
|
|
|
((ComboBox)parametersEditors[(int)ParametersClmn.PumpPower]).Items.Add("96");
|
|
|
|
|
|
((ComboBox)parametersEditors[(int)ParametersClmn.PumpPower]).Items.Add("98");
|
|
|
|
|
|
((ComboBox)parametersEditors[(int)ParametersClmn.PumpPower]).Items.Add("100");
|
|
|
|
|
|
#if STABLE_MASS_EXTRAS
|
|
|
|
|
|
for (MassMethod mm = 0; mm < MassMethod.Count; mm++)
|
2017-06-08 13:42:47 +00:00
|
|
|
|
{
|
2018-05-22 13:33:07 +00:00
|
|
|
|
((ComboBox)parametersEditors[(int)ParametersClmn.MassMethod]).Items.Add(mm.ToDescription());
|
2017-06-08 13:42:47 +00:00
|
|
|
|
}
|
2018-05-22 13:33:07 +00:00
|
|
|
|
#endif
|
|
|
|
|
|
foreach (var ctrl in parametersEditors)
|
2017-06-08 13:42:47 +00:00
|
|
|
|
{
|
2018-05-22 13:33:07 +00:00
|
|
|
|
parametersTabPage.Controls.Add(ctrl);
|
2017-06-08 13:42:47 +00:00
|
|
|
|
}
|
2018-05-22 13:33:07 +00:00
|
|
|
|
}
|
2017-06-08 13:42:47 +00:00
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
void RefreshParametersTab()
|
|
|
|
|
|
{
|
|
|
|
|
|
parametersListViewEx.Items.Clear();
|
|
|
|
|
|
foreach (var test in LoadedProcedure.Tests) AddToParametersTab(test);
|
2018-06-04 06:55:50 +00:00
|
|
|
|
|
|
|
|
|
|
if (0 <= SelectedTestIx && SelectedTestIx < parametersListViewEx.Items.Count)
|
|
|
|
|
|
{
|
|
|
|
|
|
parametersListViewEx.Items[SelectedTestIx].Selected = true;
|
|
|
|
|
|
}
|
2018-05-22 13:33:07 +00:00
|
|
|
|
}
|
2017-06-08 13:42:47 +00:00
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
void AddToParametersTab(Test test)
|
|
|
|
|
|
{
|
|
|
|
|
|
///
|
|
|
|
|
|
/// Parameters item with subitems
|
|
|
|
|
|
///
|
|
|
|
|
|
ListViewItem lvi = new ListViewItem(test.Name); /// Name
|
|
|
|
|
|
lvi.Tag = test;
|
|
|
|
|
|
lvi.SubItems.Add((test.Part == 0) ? "-" : test.Part.ToString()); ///
|
|
|
|
|
|
lvi.SubItems.Add(test.PumpPower.ToString("F1"));
|
|
|
|
|
|
lvi.SubItems.Add((test.MassRepeats < 4 ? 5 : test.MassRepeats).ToString());
|
|
|
|
|
|
#if STABLE_MASS_EXTRAS
|
|
|
|
|
|
lvi.SubItems.Add(test.MassSpread.ToString("F4"));
|
|
|
|
|
|
lvi.SubItems.Add(test.MassMethod.ToDescription());
|
|
|
|
|
|
#endif
|
|
|
|
|
|
lvi.SubItems.Add(test.TimePump2StartV.ToString());
|
|
|
|
|
|
lvi.SubItems.Add(test.TimeBeforeFlow.ToString());
|
|
|
|
|
|
lvi.SubItems.Add(test.TimeFlow2Mass.ToString());
|
|
|
|
|
|
lvi.SubItems.Add(test.TimeStop2Mass.ToString());
|
|
|
|
|
|
|
|
|
|
|
|
parametersListViewEx.Items.Add(lvi);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void UpdateFromParametersTab()
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < parametersListViewEx.Items.Count; i++)
|
2015-01-04 22:21:12 +00:00
|
|
|
|
{
|
2018-05-22 13:33:07 +00:00
|
|
|
|
ListViewItem lvi = parametersListViewEx.Items[i];
|
|
|
|
|
|
Test entity = (Test)lvi.Tag;
|
|
|
|
|
|
|
|
|
|
|
|
entity.Name = lvi.Text;
|
2018-09-04 06:38:57 +00:00
|
|
|
|
entity.ItemNr = i;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
|
|
|
|
|
|
int part = entity.Part;
|
|
|
|
|
|
if (lvi.SubItems[(int)ParametersClmn.Part].Text.Equals("-"))
|
2015-01-04 22:21:12 +00:00
|
|
|
|
{
|
2018-05-22 13:33:07 +00:00
|
|
|
|
entity.Part = 0;
|
2015-01-04 22:21:12 +00:00
|
|
|
|
}
|
2018-05-22 13:33:07 +00:00
|
|
|
|
else if (int.TryParse(lvi.SubItems[(int)ParametersClmn.Part].Text, out part))
|
2016-02-25 17:04:18 +00:00
|
|
|
|
{
|
2018-05-22 13:33:07 +00:00
|
|
|
|
entity.Part = part;
|
2016-02-25 17:04:18 +00:00
|
|
|
|
}
|
2016-08-15 09:23:00 +00:00
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
float powerPct;
|
|
|
|
|
|
if (Utils.TryParseUFloat(lvi.SubItems[(int)ParametersClmn.PumpPower].Text, out powerPct) && powerPct >= 0 && powerPct <= 100.0f)
|
|
|
|
|
|
{
|
|
|
|
|
|
entity.PumpPower = powerPct;
|
|
|
|
|
|
}
|
2016-08-15 09:23:00 +00:00
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
entity.MassRepeats = int.Parse(lvi.SubItems[(int)ParametersClmn.MassRepeats].Text);
|
2016-08-15 09:23:00 +00:00
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
#if STABLE_MASS_EXTRAS
|
|
|
|
|
|
float massSpread;
|
|
|
|
|
|
if (Utils.TryParseUFloat(lvi.SubItems[(int)ParametersClmn.MassSpread].Text, out massSpread) && massSpread >= 0)
|
2016-08-15 09:23:00 +00:00
|
|
|
|
{
|
2018-05-22 13:33:07 +00:00
|
|
|
|
entity.MassSpread = massSpread;
|
2016-08-15 09:23:00 +00:00
|
|
|
|
}
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
for (MassMethod mm = 0; mm < MassMethod.Count; mm++)
|
2015-01-04 22:21:12 +00:00
|
|
|
|
{
|
2018-05-22 13:33:07 +00:00
|
|
|
|
if (mm.ToDescription().Equals(lvi.SubItems[(int)ParametersClmn.MassMethod].Text)) entity.MassMethod = mm;
|
2015-01-04 22:21:12 +00:00
|
|
|
|
}
|
2018-05-22 13:33:07 +00:00
|
|
|
|
#endif
|
|
|
|
|
|
int itmp;
|
|
|
|
|
|
if (int.TryParse(lvi.SubItems[(int)ParametersClmn.Time_Pump2StartV].Text, out itmp)) entity.TimePump2StartV = itmp;
|
|
|
|
|
|
if (int.TryParse(lvi.SubItems[(int)ParametersClmn.Time_BeforeFlow].Text, out itmp)) entity.TimeBeforeFlow = itmp;
|
|
|
|
|
|
if (int.TryParse(lvi.SubItems[(int)ParametersClmn.Time_Flow2Mass].Text, out itmp)) entity.TimeFlow2Mass = itmp;
|
|
|
|
|
|
if (int.TryParse(lvi.SubItems[(int)ParametersClmn.Time_Stop2Mass].Text, out itmp)) entity.TimeStop2Mass = itmp;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2019-09-16 08:51:25 +00:00
|
|
|
|
private void parametersListViewEx_SubItemClicked(object sender, SubItemEventArgs e)
|
2018-05-22 13:33:07 +00:00
|
|
|
|
{
|
2017-06-08 13:42:47 +00:00
|
|
|
|
if (!unlocked || e.SubItem >= (int)ParametersClmn.ColumnsCount)
|
2016-08-15 09:23:00 +00:00
|
|
|
|
{
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2019-11-27 10:22:32 +00:00
|
|
|
|
ProcessClmn[] protectedColumns = new ProcessClmn[] { ProcessClmn.Name };
|
|
|
|
|
|
if (((e.Item.Tag as Test).Profile >= TestProfile.Protected) && protectedColumns.Contains<ProcessClmn>((ProcessClmn)e.SubItem)) return;
|
|
|
|
|
|
|
2016-08-15 09:23:00 +00:00
|
|
|
|
parametersListViewEx.StartEditing(parametersEditors[e.SubItem], e.Item, e.SubItem);
|
2018-05-22 13:33:07 +00:00
|
|
|
|
}
|
2015-01-17 05:34:24 +00:00
|
|
|
|
|
2019-09-16 08:51:25 +00:00
|
|
|
|
void parametersListViewEx_SubItemRightClicked(object sender, SubItemEventArgs e)
|
2016-08-15 09:23:00 +00:00
|
|
|
|
{
|
2017-06-08 13:42:47 +00:00
|
|
|
|
if (!unlocked || e.SubItem >= (int)ParametersClmn.ColumnsCount)
|
2016-08-15 09:23:00 +00:00
|
|
|
|
{
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (DialogResult.Yes == MessageBox.Show(Strings.Do_you_want_to_copy_this_value_to_all_cells_below_this_cell,
|
|
|
|
|
|
Strings.Confirmation, MessageBoxButtons.YesNo, MessageBoxIcon.Question))
|
|
|
|
|
|
{
|
|
|
|
|
|
int columnNr = e.SubItem;
|
|
|
|
|
|
string value = null;
|
|
|
|
|
|
System.Drawing.Color backColor = System.Drawing.Color.White;
|
|
|
|
|
|
foreach (ListViewItem item in parametersListViewEx.Items)
|
|
|
|
|
|
{
|
2017-03-20 20:29:48 +00:00
|
|
|
|
if (value != null && item.SubItems.Count > columnNr)
|
2016-08-15 09:23:00 +00:00
|
|
|
|
{
|
|
|
|
|
|
item.SubItems[columnNr].Text = value;
|
|
|
|
|
|
item.SubItems[columnNr].BackColor = backColor;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (item == e.Item)
|
|
|
|
|
|
{
|
|
|
|
|
|
value = item.SubItems[columnNr].Text;
|
|
|
|
|
|
backColor = item.SubItems[columnNr].BackColor;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2019-09-16 08:51:25 +00:00
|
|
|
|
private void parametersListViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e)
|
2018-05-22 13:33:07 +00:00
|
|
|
|
{
|
2018-06-13 05:41:03 +00:00
|
|
|
|
if (e.SubItem == (int)ParametersClmn.Name)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!Utils.IsGoodFName(e.DisplayText))
|
|
|
|
|
|
{
|
|
|
|
|
|
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
|
|
|
|
|
|
e.Cancel = true;
|
|
|
|
|
|
return; /// NOK
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
int dummy;
|
|
|
|
|
|
if (e.SubItem == (int)ParametersClmn.Part)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (e.DisplayText.Equals("-")) return; /// OK
|
2021-09-19 20:04:16 +00:00
|
|
|
|
if (!int.TryParse(e.DisplayText, out dummy) || !Data.IsGoodPartNr(dummy))
|
2019-01-14 13:32:26 +00:00
|
|
|
|
{
|
2018-05-22 13:33:07 +00:00
|
|
|
|
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
|
|
|
|
|
|
e.Cancel = true;
|
|
|
|
|
|
return; /// NOK
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2015-01-17 05:34:24 +00:00
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
float powerPct;
|
|
|
|
|
|
if ((e.SubItem == (int)ParametersClmn.PumpPower) &&
|
|
|
|
|
|
(!Utils.TryParseUFloat(e.DisplayText, out powerPct) || powerPct < 0 || powerPct > 100.0f))
|
|
|
|
|
|
{
|
|
|
|
|
|
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
|
|
|
|
|
|
e.Cancel = true;
|
|
|
|
|
|
}
|
2016-03-17 04:05:30 +00:00
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
int itmp;
|
|
|
|
|
|
if ((e.SubItem == (int)ParametersClmn.Time_Pump2StartV) &&
|
|
|
|
|
|
(!int.TryParse(e.DisplayText, out itmp) || itmp < 0 || itmp > 300))
|
|
|
|
|
|
{
|
|
|
|
|
|
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
|
|
|
|
|
|
e.Cancel = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
if ((e.SubItem == (int)ParametersClmn.Time_BeforeFlow) &&
|
|
|
|
|
|
(!int.TryParse(e.DisplayText, out itmp) || itmp < 0 || itmp > 300))
|
|
|
|
|
|
{
|
|
|
|
|
|
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
|
|
|
|
|
|
e.Cancel = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
if ((e.SubItem == (int)ParametersClmn.Time_Flow2Mass) &&
|
|
|
|
|
|
(!int.TryParse(e.DisplayText, out itmp) || itmp < 0 || itmp > 300))
|
|
|
|
|
|
{
|
|
|
|
|
|
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
|
|
|
|
|
|
e.Cancel = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
if ((e.SubItem == (int)ParametersClmn.Time_Stop2Mass) &&
|
|
|
|
|
|
(!int.TryParse(e.DisplayText, out itmp) || itmp < 0 || itmp > 300))
|
|
|
|
|
|
{
|
|
|
|
|
|
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
|
|
|
|
|
|
e.Cancel = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
if ((e.SubItem == (int)ParametersClmn.MassRepeats) &&
|
|
|
|
|
|
(!int.TryParse(e.DisplayText, out itmp) || itmp < 4 || itmp > 100))
|
|
|
|
|
|
{
|
|
|
|
|
|
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
|
|
|
|
|
|
e.Cancel = true;
|
|
|
|
|
|
}
|
2017-03-28 19:40:27 +00:00
|
|
|
|
|
|
|
|
|
|
#if STABLE_MASS_EXTRAS
|
2017-03-27 14:08:32 +00:00
|
|
|
|
if ((e.SubItem == (int)ParametersClmn.MassSpread) && !Utils.TryParseUFloat(e.DisplayText, out powerPct))
|
|
|
|
|
|
{
|
|
|
|
|
|
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
|
|
|
|
|
|
e.Cancel = true;
|
|
|
|
|
|
}
|
2017-03-28 19:40:27 +00:00
|
|
|
|
|
|
|
|
|
|
if (e.SubItem == (int)ParametersClmn.MassMethod)
|
2017-03-27 14:08:32 +00:00
|
|
|
|
{
|
2017-03-28 19:40:27 +00:00
|
|
|
|
bool mmIsOk = false;
|
|
|
|
|
|
for (MassMethod mm = 0; mm < MassMethod.Count; mm++)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (mm.ToDescription().Equals(e.DisplayText))
|
|
|
|
|
|
{
|
|
|
|
|
|
mmIsOk = true;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (!mmIsOk)
|
|
|
|
|
|
{
|
|
|
|
|
|
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
|
|
|
|
|
|
e.Cancel = true;
|
|
|
|
|
|
}
|
2017-03-27 14:08:32 +00:00
|
|
|
|
}
|
|
|
|
|
|
#endif
|
2018-05-22 13:33:07 +00:00
|
|
|
|
}
|
2015-01-17 05:34:24 +00:00
|
|
|
|
|
2014-07-28 07:54:35 +00:00
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
void RefreshMetrology12AndProcessTabs()
|
|
|
|
|
|
{
|
|
|
|
|
|
RefreshMetrology1Tab();
|
|
|
|
|
|
RefreshMetrology2Tab();
|
|
|
|
|
|
RefreshProcessTab();
|
|
|
|
|
|
RefreshParametersTab();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void RefreshOtherTabs()
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (var ctrl in testParamsCtrls) ctrl.RedrawAll();
|
|
|
|
|
|
foreach (var ctrl in procedureParamsCtrls) ctrl.RedrawAll();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-07-28 07:54:35 +00:00
|
|
|
|
private void Unlocked(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
unlocked = true;
|
|
|
|
|
|
if (testParamsCtrls != null) foreach (var ctrl in testParamsCtrls) ctrl.Unlock();
|
|
|
|
|
|
if (procedureParamsCtrls != null) foreach (var ctrl in procedureParamsCtrls) ctrl.Unlock();
|
|
|
|
|
|
|
|
|
|
|
|
procNameTextBox.Enabled = true;
|
|
|
|
|
|
descriptionTextBox.Enabled = true;
|
|
|
|
|
|
watermetersTextBox.Enabled = true;
|
2022-05-23 08:38:14 +00:00
|
|
|
|
protectedCheckBox.Enabled = Users.CurrentUser.IsMemberOf(GID.Metrologists);
|
2017-05-03 20:19:26 +00:00
|
|
|
|
mustBeCompleteCheckBox.Enabled = true;
|
|
|
|
|
|
manualControlDisabledCheckBox.Enabled = true;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
dataEntryComboBox.Enabled = true;
|
2014-12-11 21:35:16 +00:00
|
|
|
|
metersKindRadioButton1.Enabled = true;
|
|
|
|
|
|
metersKindRadioButton2.Enabled = true;
|
2017-06-26 14:11:47 +00:00
|
|
|
|
altProcNameTextBox.Enabled = true;
|
|
|
|
|
|
altProcPeriodTextBox.Enabled = true;
|
2017-02-14 12:25:43 +00:00
|
|
|
|
#if HEAT_METERS
|
2016-06-28 16:04:52 +00:00
|
|
|
|
metersKindRadioButton3.Enabled = true;
|
|
|
|
|
|
#endif
|
2016-05-02 08:19:26 +00:00
|
|
|
|
printer1ComboBox.Enabled = true;
|
2016-05-03 12:07:26 +00:00
|
|
|
|
printer2ComboBox.Enabled = true;
|
|
|
|
|
|
fileWriter1ComboBox.Enabled = true;
|
2016-05-02 08:19:26 +00:00
|
|
|
|
fileWriter2ComboBox.Enabled = true;
|
2016-05-03 12:07:26 +00:00
|
|
|
|
fileWriter3ComboBox.Enabled = true;
|
|
|
|
|
|
fileWriter4ComboBox.Enabled = true;
|
2021-05-17 08:20:23 +00:00
|
|
|
|
fileWriter5ComboBox.Enabled = true;
|
2020-03-05 12:59:43 +00:00
|
|
|
|
eventTrigger1ComboBox.Enabled = true;
|
|
|
|
|
|
eventTrigger2ComboBox.Enabled = true;
|
|
|
|
|
|
eventTrigger3ComboBox.Enabled = true;
|
2016-04-29 14:58:23 +00:00
|
|
|
|
transitionStartComboBox.Enabled = true;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
transitionEndComboBox.Enabled = true;
|
|
|
|
|
|
notesTextBox.Enabled = true;
|
|
|
|
|
|
|
2019-09-16 08:51:25 +00:00
|
|
|
|
ListViewEx listViewEx;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
|
|
|
|
|
switch (selectedTab)
|
|
|
|
|
|
{
|
|
|
|
|
|
case ProcedureTabs.Metrology1:
|
|
|
|
|
|
listViewEx = metrology1ListViewEx;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case ProcedureTabs.Metrology2:
|
|
|
|
|
|
listViewEx = metrology2ListViewEx;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case ProcedureTabs.Process:
|
|
|
|
|
|
listViewEx = processListViewEx;
|
|
|
|
|
|
break;
|
2015-01-17 05:34:24 +00:00
|
|
|
|
case ProcedureTabs.Parameters:
|
|
|
|
|
|
listViewEx = parametersListViewEx;
|
|
|
|
|
|
break;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
default:
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (listViewEx.SelectedItems.Count == 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
int ix = listViewEx.SelectedIndices[0];
|
|
|
|
|
|
listViewEx.Focus();
|
|
|
|
|
|
listViewEx.Items[ix].Selected = true;
|
|
|
|
|
|
listViewEx.Items[ix].EnsureVisible();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void okButton_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
switch (selectedTab)
|
|
|
|
|
|
{
|
2016-03-14 07:51:09 +00:00
|
|
|
|
case ProcedureTabs.General: UpdateFromGeneralTab(); break;
|
|
|
|
|
|
case ProcedureTabs.Metrology1: UpdateFromMetrology1Tab(); break;
|
|
|
|
|
|
case ProcedureTabs.Metrology2: UpdateFromMetrology2Tab(); break;
|
|
|
|
|
|
case ProcedureTabs.Process: UpdateFromProcessTab(); break;
|
|
|
|
|
|
case ProcedureTabs.Parameters: UpdateFromParametersTab(); break;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2020-12-08 10:11:53 +00:00
|
|
|
|
foreach (var ctrl in testParamsCtrls)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!ctrl.UpdateAll()) MessageBox.Show(string.Format(Strings.Error_saving_parameters_of_0, ctrl.Name));
|
|
|
|
|
|
}
|
|
|
|
|
|
foreach (var ctrl in procedureParamsCtrls)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!ctrl.UpdateAll()) MessageBox.Show(string.Format(Strings.Error_saving_parameters_of_0, ctrl.Name));
|
|
|
|
|
|
}
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
2019-11-27 10:22:32 +00:00
|
|
|
|
if (usedNames != null && usedNames.Contains(LoadedProcedure.Name.ToLower()))
|
2017-06-29 14:58:59 +00:00
|
|
|
|
{
|
|
|
|
|
|
MessageBox.Show(string.Format("There is already a procedure named '{0}'.{1}Choose another name please.", LoadedProcedure.Name, Environment.NewLine),
|
|
|
|
|
|
Strings.Warning,
|
|
|
|
|
|
MessageBoxButtons.OK,
|
|
|
|
|
|
MessageBoxIcon.Exclamation);
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2019-07-12 11:25:32 +00:00
|
|
|
|
SaveUISettings();
|
2014-09-07 07:34:28 +00:00
|
|
|
|
DialogResult = DialogResult.OK;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
Close();
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void cancelButton_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
2019-07-12 11:25:32 +00:00
|
|
|
|
SaveUISettings();
|
2014-09-07 07:34:28 +00:00
|
|
|
|
DialogResult = DialogResult.Cancel;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
Close();
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2019-07-12 11:25:32 +00:00
|
|
|
|
private void SaveUISettings()
|
2019-01-22 19:28:13 +00:00
|
|
|
|
{
|
2019-07-12 11:25:32 +00:00
|
|
|
|
/// Obtain ProcedureDlg dimensions, etc.
|
|
|
|
|
|
bool isMaximized = (WindowState == FormWindowState.Maximized);
|
|
|
|
|
|
int left = (WindowState == FormWindowState.Normal) ? Location.X : RestoreBounds.Left;
|
|
|
|
|
|
int top = (WindowState == FormWindowState.Normal) ? Location.Y : RestoreBounds.Top;
|
|
|
|
|
|
int width = (WindowState == FormWindowState.Normal) ? Size.Width : RestoreBounds.Width;
|
|
|
|
|
|
int height = (WindowState == FormWindowState.Normal) ? Size.Height : RestoreBounds.Height;
|
|
|
|
|
|
|
|
|
|
|
|
LocalSettings ls = Program.LocalSettings;
|
|
|
|
|
|
|
|
|
|
|
|
if (ls != null && (ls.OneProcedureDlgMaximized != isMaximized ||
|
|
|
|
|
|
ls.OneProcedureDlgLeft != left ||
|
|
|
|
|
|
ls.OneProcedureDlgTop != top ||
|
|
|
|
|
|
ls.OneProcedureDlgWidth != width ||
|
|
|
|
|
|
ls.OneProcedureDlgHeight != height))
|
2019-01-22 19:28:13 +00:00
|
|
|
|
{
|
2019-07-12 11:25:32 +00:00
|
|
|
|
/// At least one ProcedureDlg dimension differs => Update local settings and save them
|
|
|
|
|
|
ls.OneProcedureDlgMaximized = isMaximized;
|
|
|
|
|
|
ls.OneProcedureDlgLeft = left;
|
|
|
|
|
|
ls.OneProcedureDlgTop = top;
|
|
|
|
|
|
ls.OneProcedureDlgWidth = width;
|
|
|
|
|
|
ls.OneProcedureDlgHeight = height;
|
|
|
|
|
|
ls.Save();
|
2019-01-22 19:28:13 +00:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2019-07-12 11:25:32 +00:00
|
|
|
|
private void LoadUISettings()
|
2019-01-22 19:28:13 +00:00
|
|
|
|
{
|
|
|
|
|
|
TBF.LocalSettings ls = Program.LocalSettings;
|
2019-07-12 11:25:32 +00:00
|
|
|
|
WindowState = (ls.OneProcedureDlgMaximized ? FormWindowState.Maximized : FormWindowState.Normal);
|
2019-01-22 19:28:13 +00:00
|
|
|
|
Width = (ls.OneProcedureDlgWidth > 0) ? ls.OneProcedureDlgWidth : 800;
|
|
|
|
|
|
Height = (ls.OneProcedureDlgHeight > 0) ? ls.OneProcedureDlgHeight : 420;
|
|
|
|
|
|
Left = (ls.OneProcedureDlgLeft != 0) ? ls.OneProcedureDlgLeft : 150;
|
|
|
|
|
|
Top = (ls.OneProcedureDlgTop != 0) ? ls.OneProcedureDlgTop : 150;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2014-07-28 07:54:35 +00:00
|
|
|
|
#region Tab switching
|
|
|
|
|
|
|
2015-01-17 05:34:24 +00:00
|
|
|
|
enum ProcedureTabs
|
|
|
|
|
|
{
|
|
|
|
|
|
General,
|
|
|
|
|
|
History,
|
|
|
|
|
|
Metrology1,
|
|
|
|
|
|
Metrology2,
|
|
|
|
|
|
Process,
|
|
|
|
|
|
Parameters,
|
|
|
|
|
|
}
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
|
|
|
|
|
ProcedureTabs selectedTab = ProcedureTabs.General;
|
|
|
|
|
|
|
|
|
|
|
|
private void tabControl_SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
switch (selectedTab)
|
|
|
|
|
|
{
|
2018-05-22 13:33:07 +00:00
|
|
|
|
case ProcedureTabs.General:
|
|
|
|
|
|
UpdateFromGeneralTab();
|
|
|
|
|
|
break;
|
|
|
|
|
|
case ProcedureTabs.Metrology1:
|
|
|
|
|
|
UpdateFromMetrology1Tab();
|
|
|
|
|
|
break;
|
|
|
|
|
|
case ProcedureTabs.Metrology2:
|
|
|
|
|
|
UpdateFromMetrology2Tab();
|
|
|
|
|
|
break;
|
|
|
|
|
|
case ProcedureTabs.Process:
|
|
|
|
|
|
UpdateFromProcessTab();
|
|
|
|
|
|
break;
|
|
|
|
|
|
case ProcedureTabs.Parameters:
|
|
|
|
|
|
UpdateFromParametersTab();
|
|
|
|
|
|
break;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
selectedTab = (ProcedureTabs)tabControl.SelectedIndex;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
bool isMetr12ProcOrParams = selectedTab == ProcedureTabs.Metrology1 ||
|
|
|
|
|
|
selectedTab == ProcedureTabs.Metrology2 ||
|
|
|
|
|
|
selectedTab == ProcedureTabs.Process ||
|
|
|
|
|
|
selectedTab == ProcedureTabs.Parameters;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
2019-01-25 11:52:05 +00:00
|
|
|
|
if (isMetr12ProcOrParams)
|
|
|
|
|
|
{
|
|
|
|
|
|
sharedButtons.EnableButtons(SharedButtons.Buttons.Add);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
sharedButtons.DisableButtons(SharedButtons.Buttons.Add);
|
|
|
|
|
|
}
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
|
|
|
|
|
//bool removeBtnEnabled = (selectedTab != ProcedureTabs.General &&
|
|
|
|
|
|
// selectedTab != ProcedureTabs.History &&
|
|
|
|
|
|
// selectedTab != ProcedureTabs.Calibration);
|
|
|
|
|
|
|
|
|
|
|
|
sharedButtons.DisableButtons(SharedButtons.Buttons.Remove);
|
|
|
|
|
|
|
2019-09-16 08:51:25 +00:00
|
|
|
|
ListViewEx lv = null;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
///
|
|
|
|
|
|
switch (selectedTab)
|
|
|
|
|
|
{
|
|
|
|
|
|
case ProcedureTabs.General:
|
|
|
|
|
|
RefreshGeneralTab();
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case ProcedureTabs.Metrology1:
|
|
|
|
|
|
RefreshMetrology1Tab();
|
|
|
|
|
|
lv = metrology1ListViewEx; /// ListVIewEx for test selection
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case ProcedureTabs.Metrology2:
|
|
|
|
|
|
RefreshMetrology2Tab();
|
|
|
|
|
|
lv = metrology2ListViewEx; /// ListVIewEx for test selection
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case ProcedureTabs.Process:
|
|
|
|
|
|
RefreshProcessTab();
|
|
|
|
|
|
lv = processListViewEx; /// ListVIewEx for test selection
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case ProcedureTabs.Parameters:
|
|
|
|
|
|
RefreshParametersTab();
|
|
|
|
|
|
lv = parametersListViewEx; /// ListVIewEx for test selection
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
object ctrl = tabControl.SelectedTab.Tag;
|
|
|
|
|
|
if (ctrl is TestParamsCtrl)
|
|
|
|
|
|
{
|
|
|
|
|
|
(ctrl as TestParamsCtrl).RedrawAll();
|
|
|
|
|
|
lv = (ctrl as TestParamsCtrl).LVEx; /// ListVIewEx for test selection
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (ctrl is ProcedureParamsCtrl)
|
|
|
|
|
|
{
|
|
|
|
|
|
(ctrl as ProcedureParamsCtrl).RedrawAll();
|
|
|
|
|
|
}
|
|
|
|
|
|
UpdateButtonStates(SharedButtons.SelectedItemPos.None);
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
///
|
|
|
|
|
|
/// Highlight the selected test
|
|
|
|
|
|
///
|
2018-06-04 06:55:50 +00:00
|
|
|
|
if (lv != null && 0 <= SelectedTestIx && SelectedTestIx < lv.Items.Count)
|
2018-05-22 13:33:07 +00:00
|
|
|
|
{
|
|
|
|
|
|
lv.Focus();
|
|
|
|
|
|
lv.Items[SelectedTestIx].Selected = true;
|
|
|
|
|
|
lv.Items[SelectedTestIx].EnsureVisible();
|
|
|
|
|
|
}
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region 'Add', 'Remove', 'Up' and 'Down'
|
|
|
|
|
|
|
|
|
|
|
|
private void addButton_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
2019-09-16 08:51:25 +00:00
|
|
|
|
ListViewEx listViewEx;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
switch (selectedTab)
|
|
|
|
|
|
{
|
|
|
|
|
|
case ProcedureTabs.Metrology1: listViewEx = metrology1ListViewEx; break;
|
|
|
|
|
|
case ProcedureTabs.Metrology2: listViewEx = metrology2ListViewEx; break;
|
2018-05-22 13:33:07 +00:00
|
|
|
|
case ProcedureTabs.Process: listViewEx = processListViewEx; break;
|
2015-01-17 05:34:24 +00:00
|
|
|
|
case ProcedureTabs.Parameters: listViewEx = parametersListViewEx; break;
|
2019-10-01 11:45:21 +00:00
|
|
|
|
default: return;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// Find an unused test name
|
|
|
|
|
|
string newName;
|
|
|
|
|
|
for (int nameId = 1; true; nameId++)
|
|
|
|
|
|
{
|
|
|
|
|
|
newName = Strings.New_test_name + nameId.ToString();
|
|
|
|
|
|
bool notUsed = true;
|
|
|
|
|
|
foreach (var t in LoadedProcedure.Tests) if (t.Name.Equals(newName)) notUsed = false;
|
|
|
|
|
|
if (notUsed) break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-06-30 15:47:30 +00:00
|
|
|
|
/// Find possible selector values.
|
|
|
|
|
|
/// Empty string or null (which is permitted) is not part of list 'selectorValues'
|
|
|
|
|
|
IList<string> selectorValues = new List<string>();
|
|
|
|
|
|
foreach (var fp in feedingPaths)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!string.IsNullOrEmpty(fp.Selector) && !selectorValues.Contains(fp.Selector)) selectorValues.Add(fp.Selector);
|
|
|
|
|
|
}
|
|
|
|
|
|
foreach (var bp in benchPaths)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!string.IsNullOrEmpty(bp.Selector) && !selectorValues.Contains(bp.Selector)) selectorValues.Add(bp.Selector);
|
|
|
|
|
|
}
|
|
|
|
|
|
foreach (var op in outputPaths)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!string.IsNullOrEmpty(op.Selector) && !selectorValues.Contains(op.Selector)) selectorValues.Add(op.Selector);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2014-07-28 07:54:35 +00:00
|
|
|
|
/// Add a test
|
|
|
|
|
|
Test test = new Test(newName, listViewEx.Items.Count, LoadedProcedure);
|
2021-11-03 10:09:34 +00:00
|
|
|
|
|
|
|
|
|
|
IBenchInfo benchInfo = TBF.Rig.Sequences.ProcessData.BenchInfo;
|
|
|
|
|
|
test.VolumeUnit = (benchInfo != null) ? benchInfo.VolumeUnit : Unit.l;
|
|
|
|
|
|
test.FlowUnit = (benchInfo != null) ? benchInfo.FlowUnit : Unit.m3ph;
|
|
|
|
|
|
test.MassUnit = (benchInfo != null) ? benchInfo.MassUnit : Unit.kg;
|
|
|
|
|
|
test.TempUnit = (benchInfo != null) ? benchInfo.TempUnit : Unit.C;
|
|
|
|
|
|
test.PressUnit = (benchInfo != null) ? benchInfo.PressUnit : Unit.bar;
|
|
|
|
|
|
test.LengthUnit = (benchInfo != null) ? benchInfo.LengthUnit : Unit.mm;
|
|
|
|
|
|
|
|
|
|
|
|
TestWizard.RoiData roiData = new TestWizard.RoiData();
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
|
|
|
|
|
/// Run a create new test wizard
|
2015-02-19 07:37:37 +00:00
|
|
|
|
TestWizard.MethodSelection methodDlg = new TestWizard.MethodSelection(true, false, test, TestMethods);
|
2022-06-30 15:47:30 +00:00
|
|
|
|
TestWizard.FlowSelection flowDlg = new TestWizard.FlowSelection(false, false, test, metersPaths, selectorValues);
|
2015-02-19 07:37:37 +00:00
|
|
|
|
TestWizard.VolumeAndErrorSelection volumeDlg = new TestWizard.VolumeAndErrorSelection(false, true, test);
|
|
|
|
|
|
TestWizard.PressureSelection pressureDlg = new TestWizard.PressureSelection(false, true, test);
|
2016-08-04 14:22:41 +00:00
|
|
|
|
TestWizard.HeatMetersSelection heatMetersDlg = new TestWizard.HeatMetersSelection(false, false, test);
|
2017-04-10 05:55:34 +00:00
|
|
|
|
TestWizard.Roi1 roi1Dlg = new TestWizard.Roi1(false, false, roiData);
|
|
|
|
|
|
TestWizard.Roi2 roi2Dlg = new TestWizard.Roi2(false, false, roiData);
|
|
|
|
|
|
TestWizard.Roi3 roi3Dlg = new TestWizard.Roi3(false, false, roiData);
|
|
|
|
|
|
//test.
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
2015-02-19 07:37:37 +00:00
|
|
|
|
methodLabel:
|
2017-04-10 05:55:34 +00:00
|
|
|
|
|
2015-02-19 07:37:37 +00:00
|
|
|
|
switch (methodDlg.ShowDialog())
|
2014-07-28 07:54:35 +00:00
|
|
|
|
{
|
|
|
|
|
|
case DialogResult.Cancel: return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2015-02-19 07:37:37 +00:00
|
|
|
|
ITestMethod selectedMethod = TestMethods.FirstOrDefault<ITestMethod>(x => x.Name.Equals(test.Method));
|
|
|
|
|
|
|
2021-10-26 09:23:57 +00:00
|
|
|
|
if (selectedMethod is TBF.Rig.TestMethods.OuterLoop.Start.Component
|
|
|
|
|
|
|| selectedMethod is TBF.Rig.TestMethods.OuterLoop.End.Component)
|
2016-12-10 15:27:51 +00:00
|
|
|
|
{
|
|
|
|
|
|
test.Publish = (sbyte)Publish.Never;
|
2017-06-08 13:42:47 +00:00
|
|
|
|
test.DoEvaluate = false;
|
2016-12-10 15:27:51 +00:00
|
|
|
|
goto done;
|
|
|
|
|
|
}
|
2021-10-26 09:23:57 +00:00
|
|
|
|
if (selectedMethod is Rig.TestMethods.PMaxTest.TestMethod) goto pressure_label;
|
|
|
|
|
|
if (selectedMethod is Rig.TestMethods.LeakTest.TestMethod) goto pressure_label;
|
2017-02-14 12:25:43 +00:00
|
|
|
|
#if HEAT_METERS
|
2016-08-17 10:24:24 +00:00
|
|
|
|
if (selectedMethod.CanTest(MetersKind.HeatMeter)) goto heat_meters_label;
|
2016-12-02 10:04:33 +00:00
|
|
|
|
#endif
|
2021-10-26 09:23:57 +00:00
|
|
|
|
if (!(selectedMethod is Rig.TestMethods.RoiDetection.RoiDetection)) goto flowLabel;
|
2017-04-10 05:55:34 +00:00
|
|
|
|
|
|
|
|
|
|
roi_detection_label_1:
|
|
|
|
|
|
switch (roi1Dlg.ShowDialog())
|
|
|
|
|
|
{
|
|
|
|
|
|
case DialogResult.Cancel: return;
|
|
|
|
|
|
case DialogResult.Retry: goto methodLabel;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
roi_detection_label_2:
|
|
|
|
|
|
switch (roi2Dlg.ShowDialog())
|
|
|
|
|
|
{
|
|
|
|
|
|
case DialogResult.Cancel: return;
|
|
|
|
|
|
case DialogResult.Retry: goto roi_detection_label_1;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
switch (roi3Dlg.ShowDialog())
|
|
|
|
|
|
{
|
|
|
|
|
|
case DialogResult.Cancel: return;
|
|
|
|
|
|
case DialogResult.Retry: goto roi_detection_label_2;
|
|
|
|
|
|
}
|
2015-02-19 07:37:37 +00:00
|
|
|
|
|
2017-10-17 16:24:03 +00:00
|
|
|
|
/// Pre-calculate additional data and flow for ROI detection
|
|
|
|
|
|
roiData.Calculate();
|
|
|
|
|
|
test.Qfrom = (float)(roiData.Q * 0.95);
|
|
|
|
|
|
test.Qto = (float)(roiData.Q * 1.05);
|
|
|
|
|
|
|
2015-02-19 07:37:37 +00:00
|
|
|
|
flowLabel:
|
|
|
|
|
|
switch (flowDlg.ShowDialog())
|
2014-07-28 07:54:35 +00:00
|
|
|
|
{
|
|
|
|
|
|
case DialogResult.Cancel: return;
|
2015-02-19 07:37:37 +00:00
|
|
|
|
case DialogResult.Retry: goto methodLabel;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2021-10-26 09:23:57 +00:00
|
|
|
|
if (selectedMethod is Rig.TestMethods.RoiDetection.RoiDetection)
|
2017-04-10 05:55:34 +00:00
|
|
|
|
{
|
2017-05-01 12:33:22 +00:00
|
|
|
|
AddProcedureParamsToRoiComponents(LoadedProcedure, test.MetersPath, roiData);
|
2017-04-10 05:55:34 +00:00
|
|
|
|
goto select_paths;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2014-07-28 07:54:35 +00:00
|
|
|
|
switch (volumeDlg.ShowDialog())
|
|
|
|
|
|
{
|
|
|
|
|
|
case DialogResult.Cancel: return;
|
2015-02-19 07:37:37 +00:00
|
|
|
|
case DialogResult.Retry: goto flowLabel;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2017-04-10 05:55:34 +00:00
|
|
|
|
select_paths:
|
|
|
|
|
|
|
2022-06-30 15:47:30 +00:00
|
|
|
|
string selector = flowDlg.Selector;
|
|
|
|
|
|
|
2014-07-28 07:54:35 +00:00
|
|
|
|
/// Depending on the chosen Q select the paths
|
|
|
|
|
|
float Qaver = (test.Qfrom + test.Qto) / 2.0f;
|
|
|
|
|
|
foreach (var path in feedingPaths)
|
|
|
|
|
|
{
|
2022-06-30 15:47:30 +00:00
|
|
|
|
if ((path.Qfrom <= Qaver) && (Qaver <= path.Qto) &&
|
|
|
|
|
|
(string.IsNullOrEmpty(selector) || string.IsNullOrEmpty(path.Selector) || path.Selector == selector))
|
2014-07-28 07:54:35 +00:00
|
|
|
|
{
|
|
|
|
|
|
test.FeedingPath = path.Name;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
foreach (var path in benchPaths)
|
|
|
|
|
|
{
|
2022-06-30 15:47:30 +00:00
|
|
|
|
if ((path.Qfrom <= Qaver) && (Qaver <= path.Qto) &&
|
|
|
|
|
|
(string.IsNullOrEmpty(selector) || string.IsNullOrEmpty(path.Selector) || path.Selector == selector))
|
2014-07-28 07:54:35 +00:00
|
|
|
|
{
|
|
|
|
|
|
test.BenchPath = path.Name;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
foreach (var path in outputPaths)
|
|
|
|
|
|
{
|
2022-06-30 15:47:30 +00:00
|
|
|
|
if ((path.Qfrom <= Qaver) && (Qaver <= path.Qto) &&
|
|
|
|
|
|
(string.IsNullOrEmpty(selector) || string.IsNullOrEmpty(path.Selector) || path.Selector == selector))
|
2014-07-28 07:54:35 +00:00
|
|
|
|
{
|
|
|
|
|
|
test.OutputPath = path.Name;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2015-02-19 07:37:37 +00:00
|
|
|
|
goto done;
|
2016-08-04 14:22:41 +00:00
|
|
|
|
|
2017-02-14 12:25:43 +00:00
|
|
|
|
#if HEAT_METERS
|
2016-08-04 14:22:41 +00:00
|
|
|
|
heat_meters_label:
|
2015-02-19 07:37:37 +00:00
|
|
|
|
|
2016-08-04 14:22:41 +00:00
|
|
|
|
DialogResult dr = heatMetersDlg.ShowDialog();
|
|
|
|
|
|
switch (dr)
|
|
|
|
|
|
{
|
|
|
|
|
|
case DialogResult.Cancel: return;
|
|
|
|
|
|
case DialogResult.Retry: goto methodLabel;
|
|
|
|
|
|
}
|
|
|
|
|
|
goto flowLabel;
|
2016-12-09 09:57:27 +00:00
|
|
|
|
#endif
|
2017-04-10 05:55:34 +00:00
|
|
|
|
|
2015-02-19 07:37:37 +00:00
|
|
|
|
pressure_label:
|
|
|
|
|
|
|
|
|
|
|
|
switch (pressureDlg.ShowDialog())
|
|
|
|
|
|
{
|
|
|
|
|
|
case DialogResult.Cancel: return;
|
|
|
|
|
|
case DialogResult.Retry: goto methodLabel;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
done:
|
|
|
|
|
|
|
2014-07-28 07:54:35 +00:00
|
|
|
|
LoadedProcedure.Tests.Add(test);
|
2018-05-22 13:33:07 +00:00
|
|
|
|
///
|
|
|
|
|
|
AddToMetrology1Tab(test);
|
|
|
|
|
|
AddToMetrology2Tab(test);
|
|
|
|
|
|
AddToProcessTab(test);
|
|
|
|
|
|
AddToParametersTab(test);
|
|
|
|
|
|
foreach (var ctrl in testParamsCtrls) ctrl.AddOne(test);
|
2017-05-01 08:28:43 +00:00
|
|
|
|
|
2019-10-01 11:45:21 +00:00
|
|
|
|
if (listViewEx != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
listViewEx.Focus();
|
|
|
|
|
|
listViewEx.SelectedItems.Clear();
|
|
|
|
|
|
listViewEx.Items[listViewEx.Items.Count - 1].Selected = true;
|
|
|
|
|
|
listViewEx.Items[listViewEx.Items.Count - 1].EnsureVisible();
|
|
|
|
|
|
}
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void removeButton_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
2019-09-16 08:51:25 +00:00
|
|
|
|
ListViewEx listViewEx;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
|
|
|
|
|
switch (selectedTab)
|
|
|
|
|
|
{
|
|
|
|
|
|
case ProcedureTabs.Metrology1:
|
|
|
|
|
|
UpdateFromMetrology1Tab();
|
|
|
|
|
|
listViewEx = metrology1ListViewEx;
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case ProcedureTabs.Metrology2:
|
|
|
|
|
|
UpdateFromMetrology2Tab();
|
|
|
|
|
|
listViewEx = metrology2ListViewEx;
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case ProcedureTabs.Process:
|
|
|
|
|
|
UpdateFromProcessTab();
|
|
|
|
|
|
listViewEx = processListViewEx;
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
2015-01-17 05:34:24 +00:00
|
|
|
|
case ProcedureTabs.Parameters:
|
|
|
|
|
|
UpdateFromParametersTab();
|
|
|
|
|
|
listViewEx = parametersListViewEx;
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
2014-07-28 07:54:35 +00:00
|
|
|
|
default: return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// Check the selected index validity
|
|
|
|
|
|
if (listViewEx.SelectedItems.Count != 1) return;
|
|
|
|
|
|
int removeItemNr = listViewEx.SelectedIndices[0];
|
2019-11-27 10:22:32 +00:00
|
|
|
|
|
|
|
|
|
|
if (LoadedProcedure.Tests[removeItemNr].Profile >= TestProfile.Protected)
|
|
|
|
|
|
{
|
|
|
|
|
|
MessageBox.Show("This test is protected and cannot be deleted.");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2014-07-28 07:54:35 +00:00
|
|
|
|
/// Remove the selected test
|
2015-12-04 16:17:20 +00:00
|
|
|
|
Test toBeDeleted = LoadedProcedure.Tests[removeItemNr];
|
2014-07-28 07:54:35 +00:00
|
|
|
|
LoadedProcedure.Tests.Remove(toBeDeleted);
|
|
|
|
|
|
for (int i = removeItemNr; i < LoadedProcedure.Tests.Count; i++) LoadedProcedure.Tests[i].ItemNr--;
|
|
|
|
|
|
|
|
|
|
|
|
RefreshMetrology12AndProcessTabs();
|
|
|
|
|
|
foreach (var ctrl in testParamsCtrls) ctrl.RedrawAll();
|
|
|
|
|
|
|
|
|
|
|
|
if (removeItemNr < listViewEx.Items.Count)
|
|
|
|
|
|
{
|
|
|
|
|
|
listViewEx.Focus();
|
|
|
|
|
|
listViewEx.Items[removeItemNr].Selected = true;
|
|
|
|
|
|
listViewEx.Items[removeItemNr].EnsureVisible();
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
UpdateButtonStates(SharedButtons.SelectedItemPos.None);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void upButton_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
2019-09-16 08:51:25 +00:00
|
|
|
|
ListViewEx listViewEx;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
|
|
|
|
|
switch (selectedTab)
|
|
|
|
|
|
{
|
|
|
|
|
|
case ProcedureTabs.Metrology1:
|
|
|
|
|
|
UpdateFromMetrology1Tab();
|
|
|
|
|
|
listViewEx = metrology1ListViewEx;
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case ProcedureTabs.Metrology2:
|
|
|
|
|
|
UpdateFromMetrology2Tab();
|
|
|
|
|
|
listViewEx = metrology2ListViewEx;
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case ProcedureTabs.Process:
|
|
|
|
|
|
UpdateFromProcessTab();
|
|
|
|
|
|
listViewEx = processListViewEx;
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
2015-01-17 05:34:24 +00:00
|
|
|
|
case ProcedureTabs.Parameters:
|
|
|
|
|
|
UpdateFromParametersTab();
|
|
|
|
|
|
listViewEx = parametersListViewEx;
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
2014-07-28 07:54:35 +00:00
|
|
|
|
default: return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// Check the selected index validity
|
|
|
|
|
|
if (listViewEx.SelectedItems.Count != 1) return;
|
|
|
|
|
|
int ix = listViewEx.SelectedIndices[0];
|
|
|
|
|
|
if (ix <= 0 || ix >= listViewEx.Items.Count) return;
|
|
|
|
|
|
|
|
|
|
|
|
/// Swap two items (move the selected item up)
|
2015-12-04 16:17:20 +00:00
|
|
|
|
Test test1 = LoadedProcedure.Tests[ix - 1];
|
|
|
|
|
|
Test test2 = LoadedProcedure.Tests[ix];
|
2014-07-28 07:54:35 +00:00
|
|
|
|
test1.ItemNr++;
|
|
|
|
|
|
test2.ItemNr--;
|
|
|
|
|
|
LoadedProcedure.Tests.RemoveAt(ix);
|
|
|
|
|
|
LoadedProcedure.Tests.Insert(ix - 1, test2);
|
|
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
if (SelectedTestIx >= 1) SelectedTestIx--;
|
|
|
|
|
|
|
2014-07-28 07:54:35 +00:00
|
|
|
|
RefreshMetrology12AndProcessTabs();
|
|
|
|
|
|
|
|
|
|
|
|
listViewEx.Focus();
|
|
|
|
|
|
listViewEx.Items[ix - 1].Selected = true;
|
|
|
|
|
|
listViewEx.Items[ix - 1].EnsureVisible();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void downButton_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
2019-09-16 08:51:25 +00:00
|
|
|
|
ListViewEx listViewEx;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
|
|
|
|
|
switch (selectedTab)
|
|
|
|
|
|
{
|
|
|
|
|
|
case ProcedureTabs.Metrology1:
|
|
|
|
|
|
UpdateFromMetrology1Tab();
|
|
|
|
|
|
listViewEx = metrology1ListViewEx;
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case ProcedureTabs.Metrology2:
|
|
|
|
|
|
UpdateFromMetrology2Tab();
|
|
|
|
|
|
listViewEx = metrology2ListViewEx;
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case ProcedureTabs.Process:
|
|
|
|
|
|
UpdateFromProcessTab();
|
|
|
|
|
|
listViewEx = processListViewEx;
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
2015-01-17 05:34:24 +00:00
|
|
|
|
case ProcedureTabs.Parameters:
|
|
|
|
|
|
UpdateFromParametersTab();
|
|
|
|
|
|
listViewEx = parametersListViewEx;
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
2014-07-28 07:54:35 +00:00
|
|
|
|
default: return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// Check the selected index validity
|
|
|
|
|
|
if (listViewEx.SelectedItems.Count != 1) return;
|
|
|
|
|
|
int ix = listViewEx.SelectedIndices[0];
|
|
|
|
|
|
if (ix < 0 || ix >= listViewEx.Items.Count - 1) return;
|
|
|
|
|
|
|
|
|
|
|
|
/// Swap two items (move the selected item down)
|
2015-12-04 16:17:20 +00:00
|
|
|
|
Test test1 = LoadedProcedure.Tests[ix];
|
|
|
|
|
|
Test test2 = LoadedProcedure.Tests[ix + 1];
|
2014-07-28 07:54:35 +00:00
|
|
|
|
test1.ItemNr++;
|
|
|
|
|
|
test2.ItemNr--;
|
|
|
|
|
|
LoadedProcedure.Tests.RemoveAt(ix + 1);
|
|
|
|
|
|
LoadedProcedure.Tests.Insert(ix, test2);
|
|
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
if ((SelectedTestIx >= 0) && (SelectedTestIx < listViewEx.Items.Count - 1)) SelectedTestIx++;
|
|
|
|
|
|
|
2014-07-28 07:54:35 +00:00
|
|
|
|
RefreshMetrology12AndProcessTabs();
|
|
|
|
|
|
|
|
|
|
|
|
listViewEx.Focus();
|
|
|
|
|
|
listViewEx.Items[ix + 1].Selected = true;
|
|
|
|
|
|
listViewEx.Items[ix + 1].EnsureVisible();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2020-11-02 08:34:56 +00:00
|
|
|
|
private void copyButton_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
ListViewEx listViewEx;
|
|
|
|
|
|
|
|
|
|
|
|
switch (selectedTab)
|
|
|
|
|
|
{
|
|
|
|
|
|
case ProcedureTabs.Metrology1:
|
|
|
|
|
|
UpdateFromMetrology1Tab();
|
|
|
|
|
|
listViewEx = metrology1ListViewEx;
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case ProcedureTabs.Metrology2:
|
|
|
|
|
|
UpdateFromMetrology2Tab();
|
|
|
|
|
|
listViewEx = metrology2ListViewEx;
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case ProcedureTabs.Process:
|
|
|
|
|
|
UpdateFromProcessTab();
|
|
|
|
|
|
listViewEx = processListViewEx;
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case ProcedureTabs.Parameters:
|
|
|
|
|
|
UpdateFromParametersTab();
|
|
|
|
|
|
listViewEx = parametersListViewEx;
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
default: return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// Check the selected index validity
|
|
|
|
|
|
if (listViewEx.SelectedItems.Count != 1) return;
|
|
|
|
|
|
int ix = listViewEx.SelectedIndices[0];
|
|
|
|
|
|
if (ix < 0 || ix >= listViewEx.Items.Count) return;
|
|
|
|
|
|
|
|
|
|
|
|
Test selectedTest = LoadedProcedure.Tests[ix];
|
|
|
|
|
|
|
|
|
|
|
|
/// Add a copy of the selected test
|
|
|
|
|
|
Test newTest = selectedTest.Clone();
|
|
|
|
|
|
newTest.ItemNr = listViewEx.Items.Count;
|
|
|
|
|
|
newTest.Name = selectedTest.Name + " copy";
|
|
|
|
|
|
|
|
|
|
|
|
LoadedProcedure.Tests.Add(newTest);
|
|
|
|
|
|
///
|
|
|
|
|
|
AddToMetrology1Tab(newTest);
|
|
|
|
|
|
AddToMetrology2Tab(newTest);
|
|
|
|
|
|
AddToProcessTab(newTest);
|
|
|
|
|
|
AddToParametersTab(newTest);
|
|
|
|
|
|
foreach (var ctrl in testParamsCtrls) ctrl.AddOne(newTest);
|
|
|
|
|
|
|
|
|
|
|
|
if (listViewEx != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
listViewEx.Focus();
|
|
|
|
|
|
listViewEx.SelectedItems.Clear();
|
|
|
|
|
|
listViewEx.Items[listViewEx.Items.Count - 1].Selected = true;
|
|
|
|
|
|
listViewEx.Items[listViewEx.Items.Count - 1].EnsureVisible();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2014-07-28 07:54:35 +00:00
|
|
|
|
#endregion
|
|
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
private void metrology1ListViewEx_SelectedIndexChanged(object sender, EventArgs e) { SelectedIndexChanged(sender, e); }
|
|
|
|
|
|
private void metrology2ListViewEx_SelectedIndexChanged(object sender, EventArgs e) { SelectedIndexChanged(sender, e); }
|
|
|
|
|
|
private void processListViewEx_SelectedIndexChanged(object sender, EventArgs e) { SelectedIndexChanged(sender, e); }
|
|
|
|
|
|
private void parametersListViewEx_SelectedIndexChanged(object sender, EventArgs e) { SelectedIndexChanged(sender, e); }
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2018-05-22 13:33:07 +00:00
|
|
|
|
/// Common part for four xxxListViewEx_SelectedIndexChanged event handlers
|
2014-07-28 07:54:35 +00:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
void SelectedIndexChanged(object sender, EventArgs e)
|
|
|
|
|
|
{
|
2019-09-16 08:51:25 +00:00
|
|
|
|
ListViewEx listViewEx = sender as ListViewEx;
|
2019-10-31 13:02:20 +00:00
|
|
|
|
if ((listViewEx == null) || (listViewEx.SelectedItems.Count != 1))
|
|
|
|
|
|
{
|
2014-07-28 07:54:35 +00:00
|
|
|
|
UpdateButtonStates(SharedButtons.SelectedItemPos.None);
|
2018-05-22 13:33:07 +00:00
|
|
|
|
SelectedTestIx = -1;
|
|
|
|
|
|
return;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
2018-05-22 13:33:07 +00:00
|
|
|
|
|
|
|
|
|
|
SelectedTestIx = listViewEx.SelectedIndices[0];
|
|
|
|
|
|
|
|
|
|
|
|
if (listViewEx.Items.Count == 1)
|
2014-07-28 07:54:35 +00:00
|
|
|
|
{
|
|
|
|
|
|
UpdateButtonStates(SharedButtons.SelectedItemPos.FirstAndLast);
|
|
|
|
|
|
}
|
2018-05-22 13:33:07 +00:00
|
|
|
|
else if (SelectedTestIx == 0)
|
2014-07-28 07:54:35 +00:00
|
|
|
|
{
|
|
|
|
|
|
UpdateButtonStates(SharedButtons.SelectedItemPos.First);
|
|
|
|
|
|
}
|
2018-05-22 13:33:07 +00:00
|
|
|
|
else if (SelectedTestIx == (listViewEx.Items.Count - 1))
|
2014-07-28 07:54:35 +00:00
|
|
|
|
{
|
|
|
|
|
|
UpdateButtonStates(SharedButtons.SelectedItemPos.Last);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
UpdateButtonStates(SharedButtons.SelectedItemPos.Middle);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2017-04-10 05:55:34 +00:00
|
|
|
|
|
2018-05-22 13:33:07 +00:00
|
|
|
|
public void UpdateButtonStates(SharedButtons.SelectedItemPos selectedItemPos)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (selectedItemPos == SharedButtons.SelectedItemPos.None)
|
|
|
|
|
|
{
|
|
|
|
|
|
sharedButtons.DisableButtons(SharedButtons.Buttons.Remove | SharedButtons.Buttons.Up | SharedButtons.Buttons.Down);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (selectedItemPos == SharedButtons.SelectedItemPos.First)
|
|
|
|
|
|
{
|
|
|
|
|
|
sharedButtons.EnableButtons(SharedButtons.Buttons.Remove | SharedButtons.Buttons.Down);
|
|
|
|
|
|
sharedButtons.DisableButtons(SharedButtons.Buttons.Up);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (selectedItemPos == SharedButtons.SelectedItemPos.Last)
|
|
|
|
|
|
{
|
|
|
|
|
|
sharedButtons.EnableButtons(SharedButtons.Buttons.Remove | SharedButtons.Buttons.Up);
|
|
|
|
|
|
sharedButtons.DisableButtons(SharedButtons.Buttons.Down);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (selectedItemPos == SharedButtons.SelectedItemPos.FirstAndLast)
|
|
|
|
|
|
{
|
|
|
|
|
|
sharedButtons.EnableButtons(SharedButtons.Buttons.Remove);
|
|
|
|
|
|
sharedButtons.DisableButtons(SharedButtons.Buttons.Up | SharedButtons.Buttons.Down);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
sharedButtons.EnableButtons(SharedButtons.Buttons.Remove | SharedButtons.Buttons.Up | SharedButtons.Buttons.Down);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-04-10 05:55:34 +00:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Adds ROI data/process data prepared by the wizard to ROI-components in the selected sensors path
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="procedure">Loaded procedure</param>
|
|
|
|
|
|
/// <param name="sensorsPath">Selected sensors path</param>
|
|
|
|
|
|
/// <param name="roiData">ROI data</param>
|
2022-05-23 08:38:14 +00:00
|
|
|
|
void AddProcedureParamsToRoiComponents(Procedure procedure, string sensorsPathName, TestWizard.RoiData roiData)
|
2017-04-10 05:55:34 +00:00
|
|
|
|
{
|
2017-05-01 12:33:22 +00:00
|
|
|
|
IList<IComponent> cmpntsInSensPath = new List<IComponent>();
|
2017-04-10 05:55:34 +00:00
|
|
|
|
|
2017-05-01 12:33:22 +00:00
|
|
|
|
MetersPath sensorsPath = metersPaths.FirstOrDefault<MetersPath>(x => (x.Name == sensorsPathName));
|
|
|
|
|
|
if (sensorsPath != null)
|
|
|
|
|
|
{
|
2021-09-19 20:04:16 +00:00
|
|
|
|
for (int i = 0; i < TBF.Data.WMsCount; i++)
|
2017-04-10 05:55:34 +00:00
|
|
|
|
{
|
2017-05-01 12:33:22 +00:00
|
|
|
|
IComponent sensor = TbfComponents.FirstOrDefault<IComponent>(x => (x.Cfg.Name.Equals(sensorsPath.GetSensor(i))));
|
|
|
|
|
|
cmpntsInSensPath.Add(sensor);
|
2017-04-10 05:55:34 +00:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2017-05-01 12:33:22 +00:00
|
|
|
|
|
|
|
|
|
|
foreach (var cmpnt in cmpntsInSensPath)
|
2017-04-10 05:55:34 +00:00
|
|
|
|
{
|
2021-10-26 09:23:57 +00:00
|
|
|
|
if (cmpnt != null && (cmpnt.Cfg is Rig.Network.Camera.Roi.RoiCfg))
|
2017-05-01 12:33:22 +00:00
|
|
|
|
{
|
2021-10-26 09:23:57 +00:00
|
|
|
|
Rig.Network.Camera.Roi.ProcedureParams roiParams =
|
|
|
|
|
|
new Rig.Network.Camera.Roi.ProcedureParams()
|
2017-05-01 12:33:22 +00:00
|
|
|
|
{
|
|
|
|
|
|
PulsesPerLtr = (float)roiData.PulsesPerLiter,
|
|
|
|
|
|
DetectionImagesCount = roiData.N,
|
|
|
|
|
|
DetectionPeriod1 = roiData.P1,
|
|
|
|
|
|
DetectionPeriod2 = roiData.P2,
|
|
|
|
|
|
RoiParams = roiData.GetRoiParams()
|
|
|
|
|
|
};
|
2018-05-10 11:25:46 +00:00
|
|
|
|
roiParams.FromDbEntity(cmpnt.Name, LoadedProcedure);
|
2017-05-01 12:33:22 +00:00
|
|
|
|
}
|
2017-04-10 05:55:34 +00:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2019-10-01 11:45:21 +00:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Queries an Oracle database and loads ... array/list
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
private void iPerlWizardButton_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
ListViewEx listViewEx = null;
|
|
|
|
|
|
switch (selectedTab)
|
|
|
|
|
|
{
|
|
|
|
|
|
case ProcedureTabs.General:
|
|
|
|
|
|
UpdateFromGeneralTab();
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case ProcedureTabs.History:
|
|
|
|
|
|
UpdateFromHistoryTab();
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case ProcedureTabs.Metrology1:
|
|
|
|
|
|
listViewEx = metrology1ListViewEx;
|
|
|
|
|
|
UpdateFromMetrology1Tab();
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case ProcedureTabs.Metrology2:
|
|
|
|
|
|
listViewEx = metrology2ListViewEx;
|
|
|
|
|
|
UpdateFromMetrology2Tab();
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case ProcedureTabs.Process:
|
|
|
|
|
|
listViewEx = processListViewEx;
|
|
|
|
|
|
UpdateFromProcessTab();
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case ProcedureTabs.Parameters:
|
|
|
|
|
|
listViewEx = parametersListViewEx;
|
|
|
|
|
|
UpdateFromParametersTab();
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
foreach (var ctrl in testParamsCtrls) if (!ctrl.UpdateAll()) MessageBox.Show(string.Format(Strings.Error_saving_parameters_of_0, ctrl.Name));
|
|
|
|
|
|
foreach (var ctrl in procedureParamsCtrls) if (!ctrl.UpdateAll()) MessageBox.Show(string.Format(Strings.Error_saving_parameters_of_0, ctrl.Name));
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2021-09-23 09:46:40 +00:00
|
|
|
|
using (NHibernate.ISession session = TBF.DB.CreateSession(DBKind.Config))
|
2019-10-01 11:45:21 +00:00
|
|
|
|
{
|
|
|
|
|
|
IList<Test> testsToBeUpdated = new List<Test>();
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var test in LoadedProcedure.Tests)
|
|
|
|
|
|
{
|
2021-09-23 09:46:40 +00:00
|
|
|
|
foreach (var testMethod in TestMethods)
|
2019-10-01 11:45:21 +00:00
|
|
|
|
{
|
2021-09-23 09:46:40 +00:00
|
|
|
|
if (testMethod.Name == test.Method && testMethod.ClassName == "TestMethods.Dummy")
|
2019-10-01 11:45:21 +00:00
|
|
|
|
{
|
|
|
|
|
|
testsToBeUpdated.Add(test);
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (testsToBeUpdated.Count == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
MessageBox.Show("There are no tests to be updated");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// Run a wizard
|
|
|
|
|
|
TestWizard.OracleWZTypSelection oracleDlg = new TestWizard.OracleWZTypSelection(LoadedProcedure, TestMethods);
|
|
|
|
|
|
TestWizard.ConfirmUpdatingTests confirmationDlg = new TestWizard.ConfirmUpdatingTests(LoadedProcedure, TestMethods);
|
|
|
|
|
|
Form[] forms = new Form[] { oracleDlg, confirmationDlg };
|
|
|
|
|
|
|
|
|
|
|
|
int step = 0; /// 1st step
|
|
|
|
|
|
while ((step >= 0) && (step < forms.Length))
|
|
|
|
|
|
{
|
|
|
|
|
|
switch (forms[step].ShowDialog())
|
|
|
|
|
|
{
|
|
|
|
|
|
case DialogResult.OK:
|
|
|
|
|
|
/// Next
|
|
|
|
|
|
step++;
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case DialogResult.Retry:
|
|
|
|
|
|
/// Back
|
|
|
|
|
|
step--;
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case DialogResult.Cancel:
|
|
|
|
|
|
default:
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (step == forms.Length)
|
|
|
|
|
|
{
|
|
|
|
|
|
///
|
|
|
|
|
|
/// Update tests
|
|
|
|
|
|
///
|
|
|
|
|
|
foreach (var ti in oracleDlg.SelectedTestInfos)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (var test in testsToBeUpdated)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (ti.TestName == test.Name)
|
|
|
|
|
|
{
|
|
|
|
|
|
///
|
|
|
|
|
|
/// Update this test with information obtained from Oracle
|
|
|
|
|
|
///
|
|
|
|
|
|
double qfrom, qto;
|
|
|
|
|
|
switch (ti.Range)
|
|
|
|
|
|
{
|
2020-02-06 12:35:56 +00:00
|
|
|
|
case Results.Output.Range.R90_100:
|
2019-10-01 11:45:21 +00:00
|
|
|
|
qfrom = 0.9 * ti.Flow;
|
|
|
|
|
|
qto = ti.Flow;
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
2020-02-06 12:35:56 +00:00
|
|
|
|
case Results.Output.Range.R95_105:
|
2019-10-01 11:45:21 +00:00
|
|
|
|
qfrom = 0.95 * ti.Flow;
|
|
|
|
|
|
qto = 1.05 * ti.Flow;
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
2020-02-06 12:35:56 +00:00
|
|
|
|
case Results.Output.Range.R100_110:
|
2019-10-01 11:45:21 +00:00
|
|
|
|
qfrom = ti.Flow;
|
|
|
|
|
|
qto = 1.1 * ti.Flow;
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
qfrom = qto = ti.Flow;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
double volume = ti.TestTime * (qfrom + qto) / 7.2;
|
|
|
|
|
|
|
|
|
|
|
|
test.Qfrom = (float)qfrom;
|
|
|
|
|
|
test.Qto = (float)qto;
|
2021-09-23 09:46:40 +00:00
|
|
|
|
test.TestTime = (float)ti.TestTime;
|
2019-10-01 11:45:21 +00:00
|
|
|
|
test.Volume = (float)volume;
|
|
|
|
|
|
test.ErrLimLo = (float)(ti.ErrLimLoFromDB - ti.Uncertainty);
|
|
|
|
|
|
test.ErrLimHi = (float)(ti.ErrLimHiFromDB + ti.Uncertainty);
|
|
|
|
|
|
test.Uncertainty = (float)ti.Uncertainty;
|
|
|
|
|
|
test.Method = ti.TestMethod;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
///
|
|
|
|
|
|
/// Update iPerls and water meters
|
|
|
|
|
|
///
|
|
|
|
|
|
foreach (var ppCtrl in procedureParamsCtrls)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (var pp in ppCtrl.CmpntsParams)
|
|
|
|
|
|
{
|
2021-10-26 09:23:57 +00:00
|
|
|
|
var ihpp = pp as TBF.Rig.TestMethods.iPerlCommunication.iPerlHead.ProcParams;
|
2019-10-01 11:45:21 +00:00
|
|
|
|
if (ihpp != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
ihpp.WMType_ID = oracleDlg.WMTypeId;
|
|
|
|
|
|
ihpp.MeterType = oracleDlg.MeterType;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2021-10-26 09:23:57 +00:00
|
|
|
|
var wmpp = pp as TBF.Rig.WaterMeters.WaterMeter.ProcParams;
|
2019-10-01 11:45:21 +00:00
|
|
|
|
if (wmpp != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
wmpp.MetrologicalClass = oracleDlg.MetrolKlasse;
|
|
|
|
|
|
wmpp.ApprovalInfo = oracleDlg.Zulasszeichen;
|
|
|
|
|
|
wmpp.Qn = (float)oracleDlg.Q3;
|
|
|
|
|
|
|
|
|
|
|
|
switch (oracleDlg.MeterType)
|
|
|
|
|
|
{
|
2021-07-28 12:47:05 +00:00
|
|
|
|
case MeterType.DN15: wmpp.DN = 15.0F; break;
|
|
|
|
|
|
case MeterType.DN20: wmpp.DN = 20.0F; break;
|
|
|
|
|
|
case MeterType.DN25: wmpp.DN = 25.0F; break;
|
|
|
|
|
|
case MeterType.DN25_Q3_10: wmpp.DN = 25.0F; break;
|
|
|
|
|
|
case MeterType.DN32: wmpp.DN = 32.0F; break;
|
|
|
|
|
|
case MeterType.DN40: wmpp.DN = 40.0F; break;
|
2019-10-01 11:45:21 +00:00
|
|
|
|
default:
|
|
|
|
|
|
case MeterType.AutoDetect: wmpp.DN = 0; break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
RefreshMetrology12AndProcessTabs();
|
|
|
|
|
|
RefreshOtherTabs();
|
|
|
|
|
|
|
|
|
|
|
|
if (listViewEx != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
listViewEx.Focus();
|
|
|
|
|
|
listViewEx.SelectedItems.Clear();
|
|
|
|
|
|
listViewEx.Items[listViewEx.Items.Count - 1].Selected = true;
|
|
|
|
|
|
listViewEx.Items[listViewEx.Items.Count - 1].EnsureVisible();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2021-01-13 11:57:56 +00:00
|
|
|
|
|
|
|
|
|
|
private void historyListViewEx_MouseDoubleClick(object sender, MouseEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (historyListViewEx.SelectedIndices.Count != 1) return;
|
|
|
|
|
|
ListViewItem lvi = historyListViewEx.SelectedItems[0];
|
|
|
|
|
|
|
|
|
|
|
|
if (lvi.Tag is Procedure)
|
|
|
|
|
|
{
|
2022-05-23 08:38:14 +00:00
|
|
|
|
(new ProcedureDlg(lvi.Tag as Procedure, new List<string>(), ProcedureDlg.Mode.PermanentlyLocked, sharedButtons.ParentForm)).ShowDialog();
|
2021-01-13 11:57:56 +00:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2021-05-17 08:20:23 +00:00
|
|
|
|
|
|
|
|
|
|
private void dataEntryComboBox_SelectedIndexChanged(object sender, EventArgs e) { ShowNokComponents(); }
|
|
|
|
|
|
private void transitionStartComboBox_SelectedIndexChanged(object sender, EventArgs e) { ShowNokComponents(); }
|
|
|
|
|
|
private void transitionEndComboBox_SelectedIndexChanged(object sender, EventArgs e) { ShowNokComponents(); }
|
|
|
|
|
|
private void printer1ComboBox_SelectedIndexChanged(object sender, EventArgs e) { ShowNokComponents(); }
|
|
|
|
|
|
private void printer2ComboBox_SelectedIndexChanged(object sender, EventArgs e) { ShowNokComponents(); }
|
|
|
|
|
|
private void fileWriter1ComboBox_SelectedIndexChanged(object sender, EventArgs e) { ShowNokComponents(); }
|
|
|
|
|
|
private void fileWriter2ComboBox_SelectedIndexChanged(object sender, EventArgs e) { ShowNokComponents(); }
|
|
|
|
|
|
private void fileWriter3ComboBox_SelectedIndexChanged(object sender, EventArgs e) { ShowNokComponents(); }
|
|
|
|
|
|
private void fileWriter4ComboBox_SelectedIndexChanged(object sender, EventArgs e) { ShowNokComponents(); }
|
|
|
|
|
|
private void fileWriter5ComboBox_SelectedIndexChanged(object sender, EventArgs e) { ShowNokComponents(); }
|
|
|
|
|
|
private void eventTrigger1ComboBox_SelectedIndexChanged(object sender, EventArgs e) { ShowNokComponents(); }
|
|
|
|
|
|
private void eventTrigger2ComboBox_SelectedIndexChanged(object sender, EventArgs e) { ShowNokComponents(); }
|
|
|
|
|
|
private void eventTrigger3ComboBox_SelectedIndexChanged(object sender, EventArgs e) { ShowNokComponents(); }
|
|
|
|
|
|
|
|
|
|
|
|
private void dataEntryComboBox_TextChanged(object sender, EventArgs e) { ShowNokComponents(); }
|
|
|
|
|
|
private void transitionStartComboBox_TextChanged(object sender, EventArgs e) { ShowNokComponents(); }
|
|
|
|
|
|
private void transitionEndComboBox_TextChanged(object sender, EventArgs e) { ShowNokComponents(); }
|
|
|
|
|
|
private void printer1ComboBox_TextChanged(object sender, EventArgs e) { ShowNokComponents(); }
|
|
|
|
|
|
private void printer2ComboBox_TextChanged(object sender, EventArgs e) { ShowNokComponents(); }
|
|
|
|
|
|
private void fileWriter1ComboBox_TextChanged(object sender, EventArgs e) { ShowNokComponents(); }
|
|
|
|
|
|
private void fileWriter2ComboBox_TextChanged(object sender, EventArgs e) { ShowNokComponents(); }
|
|
|
|
|
|
private void fileWriter3ComboBox_TextChanged(object sender, EventArgs e) { ShowNokComponents(); }
|
|
|
|
|
|
private void fileWriter4ComboBox_TextChanged(object sender, EventArgs e) { ShowNokComponents(); }
|
|
|
|
|
|
private void fileWriter5ComboBox_TextChanged(object sender, EventArgs e) { ShowNokComponents(); }
|
|
|
|
|
|
private void eventTrigger1ComboBox_TextChanged(object sender, EventArgs e) { ShowNokComponents(); }
|
|
|
|
|
|
private void eventTrigger2ComboBox_TextChanged(object sender, EventArgs e) { ShowNokComponents(); }
|
|
|
|
|
|
private void eventTrigger3ComboBox_TextChanged(object sender, EventArgs e) { ShowNokComponents(); }
|
|
|
|
|
|
|
|
|
|
|
|
void ShowNokComponents()
|
|
|
|
|
|
{
|
|
|
|
|
|
dataEntryNokLabel.Visible = !dataEntryComboBox.Items.Contains(dataEntryComboBox.Text);
|
|
|
|
|
|
transitionStartNokLabel.Visible = !transitionStartComboBox.Items.Contains(transitionStartComboBox.Text);
|
|
|
|
|
|
transitionEndNokLabel.Visible = !transitionEndComboBox.Items.Contains(transitionEndComboBox.Text);
|
|
|
|
|
|
printer1NokLabel.Visible = !printer1ComboBox.Items.Contains(printer1ComboBox.Text);
|
|
|
|
|
|
printer2NokLabel.Visible = !printer2ComboBox.Items.Contains(printer2ComboBox.Text);
|
|
|
|
|
|
fileWriter1NokLabel.Visible = !fileWriter1ComboBox.Items.Contains(fileWriter1ComboBox.Text);
|
|
|
|
|
|
fileWriter2NokLabel.Visible = !fileWriter2ComboBox.Items.Contains(fileWriter2ComboBox.Text);
|
|
|
|
|
|
fileWriter3NokLabel.Visible = !fileWriter3ComboBox.Items.Contains(fileWriter3ComboBox.Text);
|
|
|
|
|
|
fileWriter4NokLabel.Visible = !fileWriter4ComboBox.Items.Contains(fileWriter4ComboBox.Text);
|
|
|
|
|
|
fileWriter5NokLabel.Visible = !fileWriter5ComboBox.Items.Contains(fileWriter5ComboBox.Text);
|
|
|
|
|
|
eventTrigger1NokLabel.Visible = !eventTrigger1ComboBox.Items.Contains(eventTrigger1ComboBox.Text);
|
|
|
|
|
|
eventTrigger2NokLabel.Visible = !eventTrigger2ComboBox.Items.Contains(eventTrigger2ComboBox.Text);
|
|
|
|
|
|
eventTrigger3NokLabel.Visible = !eventTrigger3ComboBox.Items.Contains(eventTrigger3ComboBox.Text);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|