180 lines
4.7 KiB
C#
180 lines
4.7 KiB
C#
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Globalization;
|
|||
|
|
using System.Windows.Forms;
|
|||
|
|
using log4net;
|
|||
|
|
using TBF.BenchControl;
|
|||
|
|
using TBF.BenchControl.GenericDevices;
|
|||
|
|
using TBF.Resources;
|
|||
|
|
|
|||
|
|
namespace TBF.UiControls
|
|||
|
|
{
|
|||
|
|
public class PathsMetersCtrl : BaseWithListViewEx<Entities.MetersPath>, ITabWithListViewEx
|
|||
|
|
{
|
|||
|
|
static readonly ILog log = LogManager.GetLogger(typeof(PathsMetersCtrl));
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Fixed ListViewEx columns
|
|||
|
|
/// </summary>
|
|||
|
|
enum Column
|
|||
|
|
{
|
|||
|
|
Name,
|
|||
|
|
Qfrom,
|
|||
|
|
Qto,
|
|||
|
|
FixedColumnsCount,
|
|||
|
|
}
|
|||
|
|
readonly int fixedColumnsCount = (int)Column.FixedColumnsCount;
|
|||
|
|
|
|||
|
|
PathsDlg parent;
|
|||
|
|
Control parentControl;
|
|||
|
|
Control[] editors;
|
|||
|
|
|
|||
|
|
public PathsMetersCtrl()
|
|||
|
|
: base()
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void Initialize(PathsDlg parent, Control parentControl)
|
|||
|
|
{
|
|||
|
|
this.parent = parent;
|
|||
|
|
this.parentControl = parentControl;
|
|||
|
|
|
|||
|
|
/// Load the paths
|
|||
|
|
MyItems = parent.Session
|
|||
|
|
.CreateQuery("FROM MetersPath ORDER BY ItemNr")
|
|||
|
|
.List<Entities.MetersPath>();
|
|||
|
|
|
|||
|
|
SubItemClicked += new SubItemEventHandler(listViewEx_SubItemClicked);
|
|||
|
|
SubItemEndEditing += new SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing);
|
|||
|
|
|
|||
|
|
IList<IRegisterReader> readers = new List<IRegisterReader>();
|
|||
|
|
foreach (var cmpnt in parent.TbfComponents)
|
|||
|
|
{
|
|||
|
|
if (cmpnt is IRegisterReader) readers.Add(cmpnt as IRegisterReader);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// ListViewEx columns
|
|||
|
|
Columns.Add(Strings.Name, 60 * parent.Dpi / PathsDlg.Dpi100pct);
|
|||
|
|
Columns.Add(Strings.Q_from_m3h, 50 * parent.Dpi / PathsDlg.Dpi100pct);
|
|||
|
|
Columns.Add(Strings.Q_to_m3h, 50 * parent.Dpi / PathsDlg.Dpi100pct);
|
|||
|
|
for (int i = 0; i < Program.WMsCount; i++) Columns.Add(Strings.Sensor_ + (i+1).ToString());
|
|||
|
|
|
|||
|
|
/// Editors
|
|||
|
|
editors = new Control[fixedColumnsCount + Program.WMsCount];
|
|||
|
|
///
|
|||
|
|
editors[(int)Column.Name] = new TextBox(); /// Name
|
|||
|
|
editors[(int)Column.Qfrom] = new TextBox(); /// Q_from
|
|||
|
|
editors[(int)Column.Qto] = new TextBox(); /// Q_to
|
|||
|
|
/// Prepare valve combo-boxes (max. 64 valves)
|
|||
|
|
for (int i = 0; i < Program.WMsCount; i++)
|
|||
|
|
{
|
|||
|
|
ComboBox cb = new ComboBox();
|
|||
|
|
foreach (var rr in readers) cb.Items.Add(rr.Cfg.Name);
|
|||
|
|
editors[fixedColumnsCount + i] = cb;
|
|||
|
|
}
|
|||
|
|
///
|
|||
|
|
for (int i = 0; i < editors.Length; i++) parent.Controls.Add(editors[i]);
|
|||
|
|
|
|||
|
|
base.RedrawAll();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void listViewEx_SubItemClicked(object sender, SubItemEventArgs e)
|
|||
|
|
{
|
|||
|
|
if (!Unlocked || e.SubItem >= editors.Length) return;
|
|||
|
|
StartEditing(editors[e.SubItem], e.Item, e.SubItem);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void listViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void DrawOne(object myItem)
|
|||
|
|
{
|
|||
|
|
Entities.MetersPath entity =(Entities.MetersPath)myItem;
|
|||
|
|
BenchControl.MetersPath path = new BenchControl.MetersPath(entity, parent.TbfComponents);
|
|||
|
|
|
|||
|
|
ListViewItem lvi = new ListViewItem(entity.Name);
|
|||
|
|
lvi.SubItems.Add(path.Qfrom.ToString());
|
|||
|
|
lvi.SubItems.Add(path.Qto.ToString());
|
|||
|
|
|
|||
|
|
for (int i = 0; i < Program.WMsCount; i++)
|
|||
|
|
{
|
|||
|
|
if (path.RegisterReaders != null && path.RegisterReaders[i] != null)
|
|||
|
|
{
|
|||
|
|
lvi.SubItems.Add(path.RegisterReaders[i].Cfg.Name);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
lvi.SubItems.Add("---");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
lvi.Tag = entity;
|
|||
|
|
|
|||
|
|
Items.Add(lvi);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void UpdateOne(ListViewItem lvi, object myItem)
|
|||
|
|
{
|
|||
|
|
Entities.MetersPath entity = (Entities.MetersPath)myItem;
|
|||
|
|
|
|||
|
|
entity.Name = lvi.Text;
|
|||
|
|
|
|||
|
|
float Qfrom;
|
|||
|
|
bool allOk = Utils.TryParseUFloat(lvi.SubItems[(int)Column.Qfrom].Text, out Qfrom);
|
|||
|
|
entity.Qfrom = Qfrom;
|
|||
|
|
|
|||
|
|
float Qto;
|
|||
|
|
allOk &= Utils.TryParseUFloat(lvi.SubItems[(int)Column.Qto].Text, out Qto);
|
|||
|
|
entity.Qto = Qto;
|
|||
|
|
|
|||
|
|
for (int j = 0; j < Program.WMsCount; j++)
|
|||
|
|
{
|
|||
|
|
entity.SetSensor(j, lvi.SubItems[fixedColumnsCount + j].Text);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// Update the entities and save them to the database
|
|||
|
|
/// </summary>
|
|||
|
|
public new void OkBtnClicked()
|
|||
|
|
{
|
|||
|
|
base.OkBtnClicked();
|
|||
|
|
|
|||
|
|
foreach (var entity in ToBeRemovedItems)
|
|||
|
|
{
|
|||
|
|
FluentCommon.DeleteFromDb(parent.Session, entity);
|
|||
|
|
}
|
|||
|
|
foreach (var entity in MyItems)
|
|||
|
|
{
|
|||
|
|
FluentCommon.SaveToDb(parent.Session, entity);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void AddOne()
|
|||
|
|
{
|
|||
|
|
/// Find an unused test name
|
|||
|
|
string newName;
|
|||
|
|
for (int nameId = 1; true; nameId++)
|
|||
|
|
{
|
|||
|
|
newName = Strings.New_sensors_path_name + nameId.ToString();
|
|||
|
|
bool notUsed = true;
|
|||
|
|
foreach (var t in MyItems) if (t.Name.Equals(newName)) notUsed = false;
|
|||
|
|
if (notUsed) break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Entities.MetersPath entity = new Entities.MetersPath(new BenchControl.MetersPath(newName, MyItems.Count));
|
|||
|
|
|
|||
|
|
base.AddOne(entity);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public new void RemoveSelected()
|
|||
|
|
{
|
|||
|
|
bool lastOneRemoved = base.RemoveSelected();
|
|||
|
|
if (lastOneRemoved && parent != null)
|
|||
|
|
{
|
|||
|
|
parent.UpdateButtonStates(SharedButtons.SelectedItemPos.None);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|