Conditions and Uncertainties added to Bench menu, initial versions of dialogs, Config.Entities.Ucertainty, etc.
This commit is contained in:
@@ -0,0 +1,320 @@
|
||||
///
|
||||
/// Copyright (c) 2019 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Forms;
|
||||
using NHibernate;
|
||||
using log4net;
|
||||
using Config.Entities;
|
||||
using TBF.BenchControl;
|
||||
using TBF.Resources;
|
||||
using TBF.UI.Shared;
|
||||
using TBF.UI.Bench.Metrology; /// TODO: Remove
|
||||
|
||||
namespace TBF.UI.Bench.Uncertainties
|
||||
{
|
||||
public partial class UncertaintiesDlg : Form, IParentOfListViewEx
|
||||
{
|
||||
static readonly ILog log = LogManager.GetLogger(typeof(UncertaintiesDlg));
|
||||
|
||||
public IList<Component> cmpntEntities;
|
||||
|
||||
ISession session;
|
||||
|
||||
public UncertaintiesDlg()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
/// SharedDlgButtons configuration
|
||||
#if KEMPNO_50
|
||||
sharedButtons.RequiredGroupMembership = new Users.Grp.GID[] { Users.Grp.GID.MetrologicalAuthority };
|
||||
#else
|
||||
sharedButtons.RequiredGroupMembership = new Users.Grp.GID[] { Users.Grp.GID.Metrologists };
|
||||
#endif
|
||||
sharedButtons.OptionalButtons = SharedButtons.Buttons.Add | SharedButtons.Buttons.Remove;
|
||||
sharedButtons.Unlocked += unlockButton_Click;
|
||||
sharedButtons.OKClicked += okButton_Click;
|
||||
sharedButtons.CancelClicked += cancelButton_Click;
|
||||
sharedButtons.AddClicked += addButton_Click;
|
||||
sharedButtons.RemoveClicked += removeButton_Click;
|
||||
}
|
||||
|
||||
private void MetrologyDlg_Load(object sender, EventArgs e)
|
||||
{
|
||||
LoadUISettings();
|
||||
|
||||
Text = Strings.Uncertainty;
|
||||
|
||||
int fixedCount = 0;
|
||||
int balancesCount = 0;
|
||||
int levelMetersCount = 0;
|
||||
int divertersCount = 0;
|
||||
int flowMetersCount = 0;
|
||||
int pressMetersCount = 0;
|
||||
int tempMetersCount = 0;
|
||||
int platinumTempMetersCount = 0;
|
||||
int evaporationsCount = 0;
|
||||
|
||||
session = Config.FluentCommon.CreateSession(Users.Entities.DBKind.Config);
|
||||
cmpntEntities = session.QueryOver<Component>()
|
||||
.OrderBy(x => x. ItemNr).Asc
|
||||
.List();
|
||||
|
||||
// Density tab-page
|
||||
fixedCount++;
|
||||
TabPage dstyTabPage = new TabPage(" " + Strings.Density + " ");
|
||||
MetrologyDlgDensityTab uiCtl = new MetrologyDlgDensityTab();
|
||||
uiCtl.Dock = DockStyle.Fill;
|
||||
dstyTabPage.Tag = uiCtl;
|
||||
dstyTabPage.Controls.Add(uiCtl);
|
||||
metrologyTabControl.TabPages.Add(dstyTabPage);
|
||||
|
||||
foreach (var cmpnt in cmpntEntities)
|
||||
{
|
||||
BenchControl.Generic.IComponentFactory factory = TbfComponents.CmpntFactoryFromClassName(cmpnt.ClassName);
|
||||
|
||||
/// Tab-pages for scales
|
||||
if (factory is BenchControl.MettlerToledo.Standard.BalanceFactory ||
|
||||
factory is BenchControl.MettlerToledo.Standard.BalanceOldFactory ||
|
||||
factory is BenchControl.MettlerToledo.Standard.BalanceNewFactory ||
|
||||
factory is BenchControl.MettlerToledo.Multi.BalanceFactory)
|
||||
{
|
||||
balancesCount++;
|
||||
TabPage tabPage = new TabPage(" " + cmpnt.Name + " ");
|
||||
MetrologyDlgBalanceTab uiControl = new MetrologyDlgBalanceTab();
|
||||
uiControl.MeterEntity = cmpnt;
|
||||
uiControl.BalanceCfg = factory.CmpntCfgFromCmpntEntity(cmpnt) as BenchControl.GenericDevices.IScaleCfg;
|
||||
uiControl.Dock = DockStyle.Fill;
|
||||
tabPage.Tag = uiControl;
|
||||
tabPage.Controls.Add(uiControl);
|
||||
metrologyTabControl.TabPages.Add(tabPage);
|
||||
}
|
||||
|
||||
/// Tab-pages for flowmeters
|
||||
if (factory is BenchControl.Elde.FlowMeter.FlowMeterFactory)
|
||||
{
|
||||
BenchControl.Elde.FlowMeter.FlowMeterCfg flowMeterCfg = factory.CmpntCfgFromCmpntEntity(cmpnt) as BenchControl.Elde.FlowMeter.FlowMeterCfg;
|
||||
|
||||
for (int r = 0; r <= 5; r++)
|
||||
{
|
||||
if (flowMeterCfg.RangeEnabled(r))
|
||||
{
|
||||
flowMetersCount++;
|
||||
TabPage tabPage = new TabPage(string.Format(((r == 0) ? " {0} " : " {0} r{1} "), cmpnt.Name, r));
|
||||
MetrologyDlgFlowMeterTab uiControl = new MetrologyDlgFlowMeterTab(r);
|
||||
uiControl.MeterEntity = cmpnt;
|
||||
uiControl.CalibInfoCfg = factory.CmpntCfgFromCmpntEntity(cmpnt) as BenchControl.GenericDevices.ICalibRangesCfg;
|
||||
uiControl.Dock = DockStyle.Fill;
|
||||
tabPage.Tag = uiControl;
|
||||
tabPage.Controls.Add(uiControl);
|
||||
metrologyTabControl.TabPages.Add(tabPage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Tab-pages for pressure meters
|
||||
if (factory is BenchControl.Elde.PressureMeter.PressureMeterFactory ||
|
||||
factory is BenchControl.Elde.PressureMeterInternal.PressureMeterFactory ||
|
||||
factory is BenchControl.Modbus.PressureMeter.Meret.Factory)
|
||||
{
|
||||
pressMetersCount++;
|
||||
TabPage tabPage = new TabPage(" " + cmpnt.Name + " ");
|
||||
MetrologyDlgPressMeterTab uiControl = new MetrologyDlgPressMeterTab();
|
||||
uiControl.MeterEntity = cmpnt;
|
||||
uiControl.Dock = DockStyle.Fill;
|
||||
tabPage.Tag = uiControl;
|
||||
tabPage.Controls.Add(uiControl);
|
||||
metrologyTabControl.TabPages.Add(tabPage);
|
||||
}
|
||||
|
||||
/// Tab-pages for temperature meters
|
||||
if (factory is BenchControl.Elde.TempMeter.TempMeterFactory ||
|
||||
factory is BenchControl.Elde.TempMeterInternal.TempMeterFactory)
|
||||
{
|
||||
tempMetersCount++;
|
||||
TabPage tabPage = new TabPage(" " + cmpnt.Name + " ");
|
||||
MetrologyDlgTempMeterTab uiControl = new MetrologyDlgTempMeterTab();
|
||||
uiControl.MeterEntity = cmpnt;
|
||||
uiControl.Dock = DockStyle.Fill;
|
||||
tabPage.Tag = uiControl;
|
||||
tabPage.Controls.Add(uiControl);
|
||||
metrologyTabControl.TabPages.Add(tabPage);
|
||||
}
|
||||
|
||||
/// Tab-pages for platinum resistance temperature meters
|
||||
if (factory is BenchControl.Keithley.TempMeter.Factory)
|
||||
{
|
||||
platinumTempMetersCount++;
|
||||
TabPage tabPage = new TabPage(" " + cmpnt.Name + " ");
|
||||
MetrologyDlgPlatinumResistanceTMeterTab uiControl = new MetrologyDlgPlatinumResistanceTMeterTab();
|
||||
uiControl.MeterEntity = cmpnt;
|
||||
uiControl.TempMeterCfg = factory.CmpntCfgFromCmpntEntity(cmpnt) as BenchControl.Keithley.TempMeter.TempMeterCfg;
|
||||
uiControl.Dock = DockStyle.Fill;
|
||||
tabPage.Tag = uiControl;
|
||||
tabPage.Controls.Add(uiControl);
|
||||
metrologyTabControl.TabPages.Add(tabPage);
|
||||
}
|
||||
|
||||
/// Tab-pages for diverters
|
||||
if (factory is BenchControl.Elde.Diverter.DiverterFactory)
|
||||
{
|
||||
divertersCount++;
|
||||
TabPage tabPage = new TabPage(" " + cmpnt.Name + " ");
|
||||
MetrologyDlgDiverterTab uiControl = new MetrologyDlgDiverterTab();
|
||||
uiControl.MeterEntity = cmpnt;
|
||||
uiControl.CalibInfoCfg = factory.CmpntCfgFromCmpntEntity(cmpnt) as BenchControl.GenericDevices.ICalibInfoCfg;
|
||||
uiControl.Dock = DockStyle.Fill;
|
||||
tabPage.Tag = uiControl;
|
||||
tabPage.Controls.Add(uiControl);
|
||||
metrologyTabControl.TabPages.Add(tabPage);
|
||||
}
|
||||
|
||||
/// Tab-pages for level meters inside water tanks
|
||||
if (factory is BenchControl.Hart.Nivotrack.Factory)
|
||||
{
|
||||
levelMetersCount++;
|
||||
TabPage tabPage = new TabPage(" " + cmpnt.Name + " ");
|
||||
MetrologyDlgLevelMeterTab uiControl = new MetrologyDlgLevelMeterTab();
|
||||
uiControl.MeterEntity = cmpnt;
|
||||
uiControl.CalibInfoCfg = factory.CmpntCfgFromCmpntEntity(cmpnt) as BenchControl.GenericDevices.ICalibInfoCfg;
|
||||
uiControl.Dock = DockStyle.Fill;
|
||||
tabPage.Tag = uiControl;
|
||||
tabPage.Controls.Add(uiControl);
|
||||
metrologyTabControl.TabPages.Add(tabPage);
|
||||
}
|
||||
|
||||
/// Tab-pages for water tank evaporation rates
|
||||
if (factory is BenchControl.Various.Evaporation.Factory)
|
||||
{
|
||||
evaporationsCount++;
|
||||
TabPage tabPage = new TabPage(" " + cmpnt.Name + " ");
|
||||
MetrologyDlgEvaporationTab uiControl = new MetrologyDlgEvaporationTab();
|
||||
uiControl.MeterEntity = cmpnt;
|
||||
uiControl.CalibInfoCfg = factory.CmpntCfgFromCmpntEntity(cmpnt) as BenchControl.GenericDevices.ICalibInfoCfg;
|
||||
uiControl.Dock = DockStyle.Fill;
|
||||
tabPage.Tag = uiControl;
|
||||
tabPage.Controls.Add(uiControl);
|
||||
metrologyTabControl.TabPages.Add(tabPage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void unlockButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
foreach (TabPage tabPage in metrologyTabControl.TabPages)
|
||||
{
|
||||
(tabPage.Tag as IMetrologyDlgTab).Unlock();
|
||||
}
|
||||
}
|
||||
|
||||
private void okButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
using (ITransaction transaction = session.BeginTransaction())
|
||||
{
|
||||
try
|
||||
{
|
||||
foreach (TabPage tabPage in metrologyTabControl.TabPages)
|
||||
{
|
||||
IMetrologyDlgTab tab = tabPage.Tag as IMetrologyDlgTab;
|
||||
tab.OkBtnClicked();
|
||||
|
||||
if (!(tabPage.Tag is MetrologyDlgDensityTab))
|
||||
{
|
||||
session.SaveOrUpdate(tab.MeterEntity);
|
||||
foreach (var entity in tab.ToBeRemoved) session.Delete(entity);
|
||||
}
|
||||
}
|
||||
transaction.Commit();
|
||||
session.Flush();
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
transaction.Rollback();
|
||||
log.ErrorFormat("Cannot save changes to DB: {0}", exc.Message);
|
||||
MessageBox.Show(Strings.Cannot_save_changes, Strings.Error, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
}
|
||||
}
|
||||
|
||||
SaveUISettings();
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
}
|
||||
|
||||
private void cancelButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
foreach (TabPage tabPage in metrologyTabControl.TabPages)
|
||||
{
|
||||
(tabPage.Tag as IMetrologyDlgTab).CancelBtnClicked();
|
||||
}
|
||||
|
||||
SaveUISettings();
|
||||
DialogResult = DialogResult.Cancel;
|
||||
Close();
|
||||
}
|
||||
|
||||
private void SaveUISettings()
|
||||
{
|
||||
/// Obtain UncertaintyDlg 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.UncertaintyDlgMaximized != isMaximized ||
|
||||
ls.UncertaintyDlgLeft != left ||
|
||||
ls.UncertaintyDlgTop != top ||
|
||||
ls.UncertaintyDlgWidth != width ||
|
||||
ls.UncertaintyDlgHeight != height))
|
||||
{
|
||||
/// At least one UncertaintyDlg dimension differs => Update local settings and save them
|
||||
ls.UncertaintyDlgMaximized = isMaximized;
|
||||
ls.UncertaintyDlgLeft = left;
|
||||
ls.UncertaintyDlgTop = top;
|
||||
ls.UncertaintyDlgWidth = width;
|
||||
ls.UncertaintyDlgHeight = height;
|
||||
ls.Save();
|
||||
}
|
||||
}
|
||||
|
||||
private void LoadUISettings()
|
||||
{
|
||||
TBF.LocalSettings ls = Program.LocalSettings;
|
||||
WindowState = (ls.UncertaintyDlgMaximized ? FormWindowState.Maximized : FormWindowState.Normal);
|
||||
Width = (ls.UncertaintyDlgWidth > 0) ? ls.UncertaintyDlgWidth : 900;
|
||||
Height = (ls.UncertaintyDlgHeight > 0) ? ls.UncertaintyDlgHeight : 500;
|
||||
Left = (ls.UncertaintyDlgLeft != 0) ? ls.UncertaintyDlgLeft : 200;
|
||||
Top = (ls.UncertaintyDlgTop != 0) ? ls.UncertaintyDlgTop : 100;
|
||||
}
|
||||
|
||||
private void addButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
(metrologyTabControl.SelectedTab.Tag as IMetrologyDlgTab).AddOne();
|
||||
}
|
||||
|
||||
private void removeButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
(metrologyTabControl.SelectedTab.Tag as IMetrologyDlgTab).RemoveSelected();
|
||||
}
|
||||
|
||||
public void UpdateButtonStates(SharedButtons.SelectedItemPos selectedItemPos)
|
||||
{
|
||||
if (selectedItemPos == SharedButtons.SelectedItemPos.None)
|
||||
{
|
||||
sharedButtons.DisableButtons(SharedButtons.Buttons.Remove);
|
||||
}
|
||||
else
|
||||
{
|
||||
sharedButtons.EnableButtons(SharedButtons.Buttons.Remove);
|
||||
}
|
||||
}
|
||||
|
||||
private void metrologyTabControl_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
sharedButtons.DisableButtons(SharedButtons.Buttons.Remove);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user