TBF.UI.Process.ProcessTabPageCtrl introduced, etc.

This commit is contained in:
Milan Hanajik
2021-05-26 23:42:16 +02:00
parent 7613613fad
commit f1ef16e1a3
11 changed files with 963 additions and 41 deletions
+7
View File
@@ -170,6 +170,13 @@ namespace TBF
public int SchDrawingDlgWidth; public int SchDrawingDlgWidth;
public int SchDrawingDlgHeight; public int SchDrawingDlgHeight;
/// Process
public int ProcessSplitDist1;
public int ProcessSplitDist2;
[XmlArrayAttribute("ProcessColumnWidths")]
public int[] ProcessColumnWidths;
[XmlIgnore]
public int ProcessColumnCount { get { return (ProcessColumnWidths != null) ? ProcessColumnWidths.Length : 0; } }
/// Procedures /// Procedures
public bool ProceduresDlgMaximized; public bool ProceduresDlgMaximized;
+2 -2
View File
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number // Build Number
// Revision // Revision
// //
[assembly: AssemblyVersion("3.1.1656.0")] [assembly: AssemblyVersion("3.1.1659.0")]
[assembly: AssemblyFileVersion("3.1.1656.0")] [assembly: AssemblyFileVersion("3.1.1659.0")]
+3 -3
View File
@@ -415,7 +415,7 @@ namespace TBF.Rig.ControlBoard.Uni
public void RunDeviceAfter() public void RunDeviceAfter()
{ {
DateTime now = DateTime.Now; DateTime now = DateTime.Now;
if (now < lastSentTime + TimeSpan.FromSeconds(0.8) || if (now < lastSentTime + TimeSpan.FromSeconds(0.7) ||
(lastReceivedTime < lastSentTime && now < lastSentTime + TimeSpan.FromSeconds(1.7))) (lastReceivedTime < lastSentTime && now < lastSentTime + TimeSpan.FromSeconds(1.7)))
{ {
log.Error("RunDeviceAfter() ... skipping too early write of a serial command or a data requect"); log.Error("RunDeviceAfter() ... skipping too early write of a serial command or a data requect");
@@ -511,8 +511,8 @@ namespace TBF.Rig.ControlBoard.Uni
lastSentTime = DateTime.Now; lastSentTime = DateTime.Now;
} }
log.Debug(" " + OutputMessage.Caption()); log.Debug(" " + OutputMessage.Caption());
log.Debug(Telegram.LogTelegram("Sent: ", outData)); log.Debug(Telegram.LogTelegram(string.Format("Sent {0}: ", lastSentTime.ToString("HH:mm:ss")), outData));
} }
log.DebugFormat(" Queue content:"); log.DebugFormat(" Queue content:");
+9
View File
@@ -2237,6 +2237,12 @@
<Compile Include="UI\Procedures\TestWizard\VolumeAndErrorSelection.designer.cs"> <Compile Include="UI\Procedures\TestWizard\VolumeAndErrorSelection.designer.cs">
<DependentUpon>VolumeAndErrorSelection.cs</DependentUpon> <DependentUpon>VolumeAndErrorSelection.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="UI\Process\ProcessTabPageCtrl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UI\Process\ProcessTabPageCtrl.Designer.cs">
<DependentUpon>ProcessTabPageCtrl.cs</DependentUpon>
</Compile>
<Compile Include="UI\Process\ProcessTabPageCtrl24.cs"> <Compile Include="UI\Process\ProcessTabPageCtrl24.cs">
<SubType>UserControl</SubType> <SubType>UserControl</SubType>
</Compile> </Compile>
@@ -3110,6 +3116,9 @@
<EmbeddedResource Include="UI\Procedures\TestWizard\VolumeAndErrorSelection.resx"> <EmbeddedResource Include="UI\Procedures\TestWizard\VolumeAndErrorSelection.resx">
<DependentUpon>VolumeAndErrorSelection.cs</DependentUpon> <DependentUpon>VolumeAndErrorSelection.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="UI\Process\ProcessTabPageCtrl.resx">
<DependentUpon>ProcessTabPageCtrl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\Process\ProcessTabPageCtrl24.resx"> <EmbeddedResource Include="UI\Process\ProcessTabPageCtrl24.resx">
<DependentUpon>ProcessTabPageCtrl24.cs</DependentUpon> <DependentUpon>ProcessTabPageCtrl24.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
+8 -6
View File
@@ -56,7 +56,7 @@ namespace TBF.UI
this.homeTabPage = new System.Windows.Forms.TabPage(); this.homeTabPage = new System.Windows.Forms.TabPage();
this.drawingCtrl = new SchematicDrawing.SchematicDrawingCtrl(); this.drawingCtrl = new SchematicDrawing.SchematicDrawingCtrl();
this.processTabPage = new System.Windows.Forms.TabPage(); this.processTabPage = new System.Windows.Forms.TabPage();
this.processTabPageCtrl = new TBF.UI.Process.ProcessTabPageCtrl24(); this.processTabPageCtrl = new TBF.UI.Process.ProcessTabPageCtrl();
this.insertTabPage = new System.Windows.Forms.TabPage(); this.insertTabPage = new System.Windows.Forms.TabPage();
this.resultsTabPage = new System.Windows.Forms.TabPage(); this.resultsTabPage = new System.Windows.Forms.TabPage();
this.resultsTabPageCtrl = new TBF.UI.ResultsMI.ResultsTabPageCtrl(); this.resultsTabPageCtrl = new TBF.UI.ResultsMI.ResultsTabPageCtrl();
@@ -299,15 +299,17 @@ namespace TBF.UI
// //
// drawingCtrl // drawingCtrl
// //
this.drawingCtrl.AltStrings = null;
this.drawingCtrl.BenchControlMode = false; this.drawingCtrl.BenchControlMode = false;
resources.ApplyResources(this.drawingCtrl, "drawingCtrl"); resources.ApplyResources(this.drawingCtrl, "drawingCtrl");
this.drawingCtrl.PipesL = null;
this.drawingCtrl.PipesM = null;
this.drawingCtrl.PipesS = null;
this.drawingCtrl.PipesXL = null;
this.drawingCtrl.EditMode = false; this.drawingCtrl.EditMode = false;
this.drawingCtrl.MeasuredValues = null; this.drawingCtrl.MeasuredValues = null;
this.drawingCtrl.MsrmntAvailableFlags = null;
this.drawingCtrl.Name = "drawingCtrl"; this.drawingCtrl.Name = "drawingCtrl";
this.drawingCtrl.PipesL = new string[0];
this.drawingCtrl.PipesM = new string[0];
this.drawingCtrl.PipesS = new string[0];
this.drawingCtrl.PipesXL = new string[0];
this.drawingCtrl.SelectedElement = SchematicDrawing.Element.None; this.drawingCtrl.SelectedElement = SchematicDrawing.Element.None;
this.drawingCtrl.SelectedItem = null; this.drawingCtrl.SelectedItem = null;
this.drawingCtrl.Setpoints = null; this.drawingCtrl.Setpoints = null;
@@ -746,7 +748,7 @@ namespace TBF.UI
private TBF.UI.ResultsMI.ResultsTabPageCtrl resultsTabPageCtrl; private TBF.UI.ResultsMI.ResultsTabPageCtrl resultsTabPageCtrl;
private EventLogs.EventLogsTabPageCtrl eventLogsTabPageCtrl; private EventLogs.EventLogsTabPageCtrl eventLogsTabPageCtrl;
private Calendar.CalendarTabPageCtrl calendarTabPageCtrl; private Calendar.CalendarTabPageCtrl calendarTabPageCtrl;
private TBF.UI.Process.ProcessTabPageCtrl24 processTabPageCtrl; private TBF.UI.Process.ProcessTabPageCtrl processTabPageCtrl;
private System.Windows.Forms.ToolStripMenuItem benchTSMenuItem; private System.Windows.Forms.ToolStripMenuItem benchTSMenuItem;
private System.Windows.Forms.ToolStripMenuItem homeTSMenuItem; private System.Windows.Forms.ToolStripMenuItem homeTSMenuItem;
private System.Windows.Forms.ToolStripMenuItem resultsTSMenuItem; private System.Windows.Forms.ToolStripMenuItem resultsTSMenuItem;
+11 -1
View File
@@ -1,5 +1,5 @@
/// ///
/// Copyright (c) 2013-2020 Sensus Slovensko a.s. /// Copyright (c) 2013-2021 Sensus Slovensko a.s.
/// ///
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@@ -24,6 +24,9 @@ namespace TBF.UI
{ {
static readonly ILog log = LogManager.GetLogger(typeof(MainWnd)); static readonly ILog log = LogManager.GetLogger(typeof(MainWnd));
/// Used when re-scaling the dialog: 100% = 96dpi, 125% = 120dpi, 150% = 144dpi
public static int Dpi;
const string ProcSeparator = " "; /// string separating procedure number and procedure name const string ProcSeparator = " "; /// string separating procedure number and procedure name
public BenchControlPanel BenchControlPanel; public BenchControlPanel BenchControlPanel;
@@ -91,6 +94,9 @@ namespace TBF.UI
/// </summary> /// </summary>
public MainWnd() public MainWnd()
{ {
/// Detect display setting: 100% = 96dpi, 125% = 120dpi, 150% = 144dpi.
Dpi = (int)this.CreateGraphics().DpiX;
InitializeComponent(); InitializeComponent();
Text = string.Format("Test Bench Framework ver. {0} - {1}{2}", Text = string.Format("Test Bench Framework ver. {0} - {1}{2}",
@@ -329,6 +335,8 @@ namespace TBF.UI
UpdateUser(); UpdateUser();
mainTabControl.SelectTab((int)MainTabPageId.Hydraulics); mainTabControl.SelectTab((int)MainTabPageId.Hydraulics);
processTabPageCtrl.Settings2UI();
/// ///
/// Initialize hydraulical schematic drawing /// Initialize hydraulical schematic drawing
/// ///
@@ -788,6 +796,8 @@ namespace TBF.UI
/// </summary> /// </summary>
void UI2Settings() void UI2Settings()
{ {
processTabPageCtrl.UI2Settings();
/// Obtain MainWnd dimensions, etc. /// Obtain MainWnd dimensions, etc.
bool isMaximized = (WindowState == FormWindowState.Maximized); bool isMaximized = (WindowState == FormWindowState.Maximized);
int left = (WindowState == FormWindowState.Normal) ? Location.X : RestoreBounds.Left; int left = (WindowState == FormWindowState.Normal) ? Location.X : RestoreBounds.Left;
+14 -23
View File
@@ -589,7 +589,7 @@
<value>0, 0</value> <value>0, 0</value>
</data> </data>
<data name="drawingCtrl.Size" type="System.Drawing.Size, System.Drawing"> <data name="drawingCtrl.Size" type="System.Drawing.Size, System.Drawing">
<value>1012, 523</value> <value>1012, 582</value>
</data> </data>
<data name="drawingCtrl.TabIndex" type="System.Int32, mscorlib"> <data name="drawingCtrl.TabIndex" type="System.Int32, mscorlib">
<value>0</value> <value>0</value>
@@ -610,7 +610,7 @@
<value>4, 5</value> <value>4, 5</value>
</data> </data>
<data name="homeTabPage.Size" type="System.Drawing.Size, System.Drawing"> <data name="homeTabPage.Size" type="System.Drawing.Size, System.Drawing">
<value>1012, 523</value> <value>1012, 582</value>
</data> </data>
<data name="homeTabPage.TabIndex" type="System.Int32, mscorlib"> <data name="homeTabPage.TabIndex" type="System.Int32, mscorlib">
<value>29</value> <value>29</value>
@@ -652,7 +652,7 @@
<value>processTabPageCtrl</value> <value>processTabPageCtrl</value>
</data> </data>
<data name="&gt;&gt;processTabPageCtrl.Type" xml:space="preserve"> <data name="&gt;&gt;processTabPageCtrl.Type" xml:space="preserve">
<value>TBF.UI.Process.ProcessTabPageCtrl24, TBF, Version=3.1.1480.0, Culture=neutral, PublicKeyToken=null</value> <value>TBF.UI.Process.ProcessTabPageCtrl24, TBF, Version=3.1.1656.0, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;processTabPageCtrl.Parent" xml:space="preserve"> <data name="&gt;&gt;processTabPageCtrl.Parent" xml:space="preserve">
<value>processTabPage</value> <value>processTabPage</value>
@@ -730,7 +730,7 @@
<value>resultsTabPageCtrl</value> <value>resultsTabPageCtrl</value>
</data> </data>
<data name="&gt;&gt;resultsTabPageCtrl.Type" xml:space="preserve"> <data name="&gt;&gt;resultsTabPageCtrl.Type" xml:space="preserve">
<value>TBF.UI.ResultsMI.ResultsTabPageCtrl, TBF, Version=3.1.1480.0, Culture=neutral, PublicKeyToken=null</value> <value>TBF.UI.ResultsMI.ResultsTabPageCtrl, TBF, Version=3.1.1656.0, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;resultsTabPageCtrl.Parent" xml:space="preserve"> <data name="&gt;&gt;resultsTabPageCtrl.Parent" xml:space="preserve">
<value>resultsTabPage</value> <value>resultsTabPage</value>
@@ -781,7 +781,7 @@
<value>graphsTabPageCtrl</value> <value>graphsTabPageCtrl</value>
</data> </data>
<data name="&gt;&gt;graphsTabPageCtrl.Type" xml:space="preserve"> <data name="&gt;&gt;graphsTabPageCtrl.Type" xml:space="preserve">
<value>TBF.UI.Graphs.GraphsTabPageCtrl, TBF, Version=3.1.1480.0, Culture=neutral, PublicKeyToken=null</value> <value>TBF.UI.Graphs.GraphsTabPageCtrl, TBF, Version=3.1.1656.0, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;graphsTabPageCtrl.Parent" xml:space="preserve"> <data name="&gt;&gt;graphsTabPageCtrl.Parent" xml:space="preserve">
<value>graphsTabPage</value> <value>graphsTabPage</value>
@@ -835,7 +835,7 @@
<value>eventLogsTabPageCtrl</value> <value>eventLogsTabPageCtrl</value>
</data> </data>
<data name="&gt;&gt;eventLogsTabPageCtrl.Type" xml:space="preserve"> <data name="&gt;&gt;eventLogsTabPageCtrl.Type" xml:space="preserve">
<value>TBF.UI.EventLogs.EventLogsTabPageCtrl, TBF, Version=3.1.1480.0, Culture=neutral, PublicKeyToken=null</value> <value>TBF.UI.EventLogs.EventLogsTabPageCtrl, TBF, Version=3.1.1656.0, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;eventLogsTabPageCtrl.Parent" xml:space="preserve"> <data name="&gt;&gt;eventLogsTabPageCtrl.Parent" xml:space="preserve">
<value>eventLogsTabPage</value> <value>eventLogsTabPage</value>
@@ -886,7 +886,7 @@
<value>calendarTabPageCtrl</value> <value>calendarTabPageCtrl</value>
</data> </data>
<data name="&gt;&gt;calendarTabPageCtrl.Type" xml:space="preserve"> <data name="&gt;&gt;calendarTabPageCtrl.Type" xml:space="preserve">
<value>TBF.UI.Calendar.CalendarTabPageCtrl, TBF, Version=3.1.1480.0, Culture=neutral, PublicKeyToken=null</value> <value>TBF.UI.Calendar.CalendarTabPageCtrl, TBF, Version=3.1.1656.0, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;calendarTabPageCtrl.Parent" xml:space="preserve"> <data name="&gt;&gt;calendarTabPageCtrl.Parent" xml:space="preserve">
<value>calendarTabPage</value> <value>calendarTabPage</value>
@@ -937,7 +937,7 @@
<value>picturesTabPageCtrl</value> <value>picturesTabPageCtrl</value>
</data> </data>
<data name="&gt;&gt;picturesTabPageCtrl.Type" xml:space="preserve"> <data name="&gt;&gt;picturesTabPageCtrl.Type" xml:space="preserve">
<value>TBF.UI.Camera.PicturesTabPageCtrl, TBF, Version=3.1.1480.0, Culture=neutral, PublicKeyToken=null</value> <value>TBF.UI.Camera.PicturesTabPageCtrl, TBF, Version=3.1.1656.0, Culture=neutral, PublicKeyToken=null</value>
</data> </data>
<data name="&gt;&gt;picturesTabPageCtrl.Parent" xml:space="preserve"> <data name="&gt;&gt;picturesTabPageCtrl.Parent" xml:space="preserve">
<value>picturesTabPage</value> <value>picturesTabPage</value>
@@ -979,7 +979,7 @@
<value>0, 0</value> <value>0, 0</value>
</data> </data>
<data name="mainTabControl.Size" type="System.Drawing.Size, System.Drawing"> <data name="mainTabControl.Size" type="System.Drawing.Size, System.Drawing">
<value>1020, 532</value> <value>1020, 591</value>
</data> </data>
<data name="mainTabControl.TabIndex" type="System.Int32, mscorlib"> <data name="mainTabControl.TabIndex" type="System.Int32, mscorlib">
<value>1</value> <value>1</value>
@@ -1009,7 +1009,7 @@
<value>1</value> <value>1</value>
</data> </data>
<data name="horizontalSplitContainer.Size" type="System.Drawing.Size, System.Drawing"> <data name="horizontalSplitContainer.Size" type="System.Drawing.Size, System.Drawing">
<value>1020, 656</value> <value>1020, 715</value>
</data> </data>
<data name="horizontalSplitContainer.SplitterDistance" type="System.Int32, mscorlib"> <data name="horizontalSplitContainer.SplitterDistance" type="System.Int32, mscorlib">
<value>120</value> <value>120</value>
@@ -1108,7 +1108,7 @@
<value>1</value> <value>1</value>
</data> </data>
<data name="rightHorizSplitContainer.Size" type="System.Drawing.Size, System.Drawing"> <data name="rightHorizSplitContainer.Size" type="System.Drawing.Size, System.Drawing">
<value>230, 656</value> <value>230, 715</value>
</data> </data>
<data name="rightHorizSplitContainer.SplitterDistance" type="System.Int32, mscorlib"> <data name="rightHorizSplitContainer.SplitterDistance" type="System.Int32, mscorlib">
<value>240</value> <value>240</value>
@@ -1141,7 +1141,7 @@
<value>1</value> <value>1</value>
</data> </data>
<data name="verticalSplitContainer.Size" type="System.Drawing.Size, System.Drawing"> <data name="verticalSplitContainer.Size" type="System.Drawing.Size, System.Drawing">
<value>1254, 656</value> <value>1254, 715</value>
</data> </data>
<data name="verticalSplitContainer.SplitterDistance" type="System.Int32, mscorlib"> <data name="verticalSplitContainer.SplitterDistance" type="System.Int32, mscorlib">
<value>1020</value> <value>1020</value>
@@ -1192,7 +1192,7 @@
<value>0, 17</value> <value>0, 17</value>
</data> </data>
<data name="statusStrip1.Location" type="System.Drawing.Point, System.Drawing"> <data name="statusStrip1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 680</value> <value>0, 739</value>
</data> </data>
<data name="statusStrip1.Size" type="System.Drawing.Size, System.Drawing"> <data name="statusStrip1.Size" type="System.Drawing.Size, System.Drawing">
<value>1254, 22</value> <value>1254, 22</value>
@@ -1435,7 +1435,7 @@
<value>6, 13</value> <value>6, 13</value>
</data> </data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing"> <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>1254, 702</value> <value>1254, 761</value>
</data> </data>
<data name="$this.Text" xml:space="preserve"> <data name="$this.Text" xml:space="preserve">
<value>Test Bench Framework</value> <value>Test Bench Framework</value>
@@ -1656,13 +1656,4 @@
<data name="&gt;&gt;$this.Type" xml:space="preserve"> <data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="logsTabPage.Text" xml:space="preserve">
<value>Logs</value>
</data>
<data name="logsTSMenuItem.Text" xml:space="preserve">
<value>Logs</value>
</data>
<data name="editTSMenuItem.Text" xml:space="preserve">
<value>Settings</value>
</data>
</root> </root>
+135
View File
@@ -0,0 +1,135 @@
namespace TBF.UI.Process
{
partial class ProcessTabPageCtrl
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
this.processListViewEx = new TracingDB.Forms.ListViewEx();
this.processDrawingCtrl = new SchematicDrawing.SchematicDrawingCtrl();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
this.splitContainer2.Panel1.SuspendLayout();
this.splitContainer2.SuspendLayout();
this.SuspendLayout();
//
// splitContainer1
//
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Name = "splitContainer1";
//
// splitContainer1.Panel1
//
this.splitContainer1.Panel1.Controls.Add(this.splitContainer2);
//
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.processDrawingCtrl);
this.splitContainer1.Size = new System.Drawing.Size(1012, 580);
this.splitContainer1.SplitterDistance = 250;
this.splitContainer1.TabIndex = 0;
//
// splitContainer2
//
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer2.Location = new System.Drawing.Point(0, 0);
this.splitContainer2.Name = "splitContainer2";
this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
//
// splitContainer2.Panel1
//
this.splitContainer2.Panel1.Controls.Add(this.processListViewEx);
this.splitContainer2.Size = new System.Drawing.Size(250, 580);
this.splitContainer2.SplitterDistance = 300;
this.splitContainer2.TabIndex = 0;
//
// processListViewEx
//
this.processListViewEx.AllowColumnReorder = true;
this.processListViewEx.Dock = System.Windows.Forms.DockStyle.Fill;
this.processListViewEx.DoubleClickActivation = false;
this.processListViewEx.FullRowSelect = true;
this.processListViewEx.GridLines = true;
this.processListViewEx.Location = new System.Drawing.Point(0, 0);
this.processListViewEx.Name = "processListViewEx";
this.processListViewEx.Size = new System.Drawing.Size(250, 300);
this.processListViewEx.TabIndex = 0;
this.processListViewEx.UseCompatibleStateImageBehavior = false;
this.processListViewEx.View = System.Windows.Forms.View.Details;
//
// processDrawingCtrl
//
this.processDrawingCtrl.AltStrings = null;
this.processDrawingCtrl.BenchControlMode = false;
this.processDrawingCtrl.Dock = System.Windows.Forms.DockStyle.Fill;
this.processDrawingCtrl.EditMode = false;
this.processDrawingCtrl.Location = new System.Drawing.Point(0, 0);
this.processDrawingCtrl.MeasuredValues = null;
this.processDrawingCtrl.MsrmntAvailableFlags = null;
this.processDrawingCtrl.Name = "processDrawingCtrl";
this.processDrawingCtrl.PipesL = new string[0];
this.processDrawingCtrl.PipesM = new string[0];
this.processDrawingCtrl.PipesS = new string[0];
this.processDrawingCtrl.PipesXL = new string[0];
this.processDrawingCtrl.SelectedElement = SchematicDrawing.Element.None;
this.processDrawingCtrl.SelectedItem = null;
this.processDrawingCtrl.Setpoints = null;
this.processDrawingCtrl.Size = new System.Drawing.Size(758, 580);
this.processDrawingCtrl.SupressRedraws = false;
this.processDrawingCtrl.TabIndex = 0;
//
// ProcessTabPageCtrl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.splitContainer1);
this.Name = "ProcessTabPageCtrl";
this.Size = new System.Drawing.Size(1012, 580);
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.splitContainer2.Panel1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
this.splitContainer2.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.SplitContainer splitContainer1;
private TracingDB.Forms.ListViewEx processListViewEx;
private System.Windows.Forms.SplitContainer splitContainer2;
private SchematicDrawing.SchematicDrawingCtrl processDrawingCtrl;
}
}
+647
View File
@@ -0,0 +1,647 @@
///
/// Copyright (c) 2021 Sensus Slovensko a.s.
///
using System;
using System.Windows.Forms;
using log4net;
using Config.Entities;
using TBF.Resources;
using TBF.Rig;
using TBF.UiBridge;
using SchematicDrawing;
namespace TBF.UI.Process
{
public partial class ProcessTabPageCtrl : UserControl
{
static readonly ILog log = LogManager.GetLogger(typeof(ProcessTabPageCtrl));
enum Column
{
Nr,
Error,
Volume,
Pulses,
RefPulses,
SerialNr,
Count
}
MetersKind currentMetersKind;
public ProcessTabPageCtrl()
{
InitializeComponent();
InitializeDrawing();
Bridge.ProcedureSelectedHandler += delegate(object sender, ProcedureSelectedEventArgs args)
{
try {
if (InvokeRequired) Invoke(new EventHandler<ProcedureSelectedEventArgs>(OnProcedureSelected), sender, args);
else OnProcedureSelected(sender, args);
}
catch (Exception e) { log.ErrorFormat("ProcessTabPageCtrl.OnProcedureSelected() failed: {0}", e.Message); }
};
Bridge.TestSelectedHandler += delegate(object sender, TestSelectedEventArgs args)
{
try {
if (InvokeRequired) Invoke(new EventHandler<TestSelectedEventArgs>(OnTestSelected), sender, args);
else OnTestSelected(sender, args);
}
catch (Exception e) { log.ErrorFormat("ProcessTabPageCtrl.OnTestSelected() failed: {0}", e.Message); }
};
Bridge.ProcessDataHandler += delegate(object sender, ProcessDataEventArgs args)
{
try {
if (InvokeRequired) Invoke(new EventHandler<ProcessDataEventArgs>(OnProcessDataChanged), sender, args);
else OnProcessDataChanged(sender, args);
}
catch (Exception e) { log.ErrorFormat("ProcessTabPageCtrl.OnProcessDataChanged() failed: {0}", e.Message); }
};
Bridge.TestCompletedHandler += delegate(object sender, TestCompletedEventArgs args)
{
try {
if (InvokeRequired) Invoke(new EventHandler<TestCompletedEventArgs>(OnTestCompleted), sender, args);
else OnTestCompleted(sender, args);
}
catch (Exception e) { log.ErrorFormat("ProcessTabPageCtrl.OnTestCompleted() failed: {0}", e.Message); }
};
Bridge.ProcedureCompletedHandler += delegate(object sender, ProcedureCompletedEventArgs args)
{
try {
if (InvokeRequired) Invoke(new EventHandler<ProcedureCompletedEventArgs>(OnProcedureCompleted), sender, args);
else OnProcedureCompleted(sender, args);
}
catch (Exception e) { log.ErrorFormat("ProcessTabPageCtrl.OnProcedureCompleted() failed: {0}", e.Message); }
};
}
void InitializeDrawing()
{
///
/// Initialize hydraulical schematic drawing
///
processDrawingCtrl.SupressRedraws = true;
///
var scale = new TBF.Rig.MettlerToledo.Standard.BalanceCfg(new TBF.Rig.MettlerToledo.Standard.BalanceFactory())
{
Id = 2,
Name = "WT",
Shape = Shape.Scale,
X = 640,
Y = 150,
Sz = Sz.M,
Orient = Orient.R,
Flip = false,
LblX = 16,
LblY = 40,
LblOrient = Orient.R,
MsrdX = 16,
MsrdY = 64,
MsrdOrient = Orient.R,
MsrdFormat = "{0:F3}",
MsrdUnit = Config.Unit.kg,
};
var diverter = new TBF.Rig.Uni.Diverter.DiverterCfg(new TBF.Rig.Uni.Diverter.Factory())
{
Id = 3,
Name = "Div",
DivNr1 = 1,
BitNr = 0,
Inverted = false,
Shape = Shape.Div,
X = 610,
Y = 90,
Sz = Sz.L,
Orient = Orient.R,
Flip = false,
LblX = 50,
LblY = -8,
LblOrient = Orient.R,
};
var regValve = new TBF.Rig.Uni.RegValve.RegValveCfg("VR", new TBF.Rig.Uni.RegValve.Factory())
{
Id = 4,
Shape = Shape.RegV,
X = 450,
Y = 140,
Sz = Sz.L,
Orient = Orient.Up,
Flip = true,
LblX = 46,
LblY = 0,
LblOrient = Orient.R,
SetpX = 46,
SetpY = 22,
SetpOrient = Orient.R,
};
var flowmeter = new TBF.Rig.Uni.FlowMeter.FlowMeterCfg(new TBF.Rig.Uni.FlowMeter.Factory())
{
Id = 5,
Name = "I",
MsrdFormat = "{0:F3} m2/h",
MsrdUnit = Config.Unit.m3ph,
Shape = Shape.FlowM,
X = 450,
Y = 210,
Sz = Sz.L,
Orient = Orient.Up,
Flip = true,
LblX = 46,
LblY = 0,
LblOrient = Orient.R,
MsrdX = 46,
MsrdY = 22,
MsrdOrient = Orient.R,
};
var startValve = new TBF.Rig.BuiltIn.Valve.ValveCfg(new TBF.Rig.BuiltIn.Valve.ValveFactory())
{
Id = 6,
Name = "VI",
BitNr = 0,
Inverted = false,
Shape = Shape.Valve,
X = 450,
Y = 280,
Sz = Sz.L,
Orient = Orient.Up,
Flip = false,
LblX = 48,
LblY = 9,
LblOrient = Orient.R,
};
var wm1 = new TBF.Rig.WaterMeters.WaterMeter.WaterMeterCfg(new TBF.Rig.WaterMeters.WaterMeter.WaterMeterFactory())
{
Id = 7,
Name = "WM1",
Shape = Shape.WaterM,
X = 120,
Y = 360,
Sz = Sz.L,
Orient = Orient.R,
Flip = false,
LblX = 0,
LblY = -24,
LblOrient = Orient.R,
};
var wm2 = new TBF.Rig.WaterMeters.WaterMeter.WaterMeterCfg(new TBF.Rig.WaterMeters.WaterMeter.WaterMeterFactory())
{
Id = 8,
Name = "WM2",
Shape = Shape.WaterM,
X = 180,
Y = 360,
Sz = Sz.L,
Orient = Orient.R,
Flip = false,
LblX = 0,
LblY = -24,
LblOrient = Orient.R,
};
var wm3 = new TBF.Rig.WaterMeters.WaterMeter.WaterMeterCfg(new TBF.Rig.WaterMeters.WaterMeter.WaterMeterFactory())
{
Id = 9,
Name = "WM3",
Shape = Shape.WaterM,
X = 310,
Y = 360,
Sz = Sz.L,
Orient = Orient.R,
Flip = false,
LblX = 0,
LblY = -24,
LblOrient = Orient.R,
};
var pump = new TBF.Rig.Modbus.PumpFM.DanfossVLT.PumpCfg(new TBF.Rig.Modbus.PumpFM.DanfossVLT.Factory())
{
Id = 10,
Name = "P",
BitNr = 0,
Inverted = false,
Shape = Shape.PumpFM,
X = 450,
Y = 480,
Sz = Sz.L,
Orient = Orient.L,
Flip = false,
LblX = 0,
LblY = -46,
LblOrient = Orient.R,
SetpX = 0,
SetpY = -24,
SetpOrient = Orient.R,
SetpFormat = "{0:F0} %",
SetpUnit = Config.Unit.Pct,
};
var tank = new TBF.Rig.Various.Drawing.Tank.Configuration("Tank", new TBF.Rig.Various.Drawing.Tank.Factory())
{
Id = 11,
Shape = Shape.Tank,
X = 570,
Y = 410,
Sz = Sz.L,
Orient = Orient.R,
Flip = false,
LblX = 33,
LblY = 22,
LblOrient = Orient.R,
};
var drainValve = new TBF.Rig.BuiltIn.Valve.ValveCfg(new TBF.Rig.BuiltIn.Valve.ValveFactory())
{
Id = 16,
Name = "VB",
BitNr = 0,
Inverted = false,
Shape = Shape.Valve,
X = 660,
Y = 270,
Sz = Sz.M,
Orient = Orient.Dn,
Flip = false,
LblX = 40,
LblY = 5,
LblOrient = Orient.R,
};
var j1 = new TBF.Rig.Various.Drawing.Junction.Configuration("J1", new TBF.Rig.Various.Drawing.Junction.Factory())
{
Id = 17,
Shape = Shape.Junction,
X = 50,
Y = 490,
Sz = Sz.L,
};
var j2 = new TBF.Rig.Various.Drawing.Junction.Configuration("J2", new TBF.Rig.Various.Drawing.Junction.Factory())
{
Id = 18,
Shape = Shape.Junction,
X = 50,
Y = 370,
Sz = Sz.L,
};
var j3 = new TBF.Rig.Various.Drawing.Junction.Configuration("J3", new TBF.Rig.Various.Drawing.Junction.Factory())
{
Id = 19,
Shape = Shape.Junction,
X = 460,
Y = 370,
Sz = Sz.L,
};
var j4 = new TBF.Rig.Various.Drawing.Junction.Configuration("J4", new TBF.Rig.Various.Drawing.Junction.Factory())
{
Id = 20,
Shape = Shape.Junction,
X = 460,
Y = 80,
Sz = Sz.L,
};
var j5 = new TBF.Rig.Various.Drawing.Junction.Configuration("J5", new TBF.Rig.Various.Drawing.Junction.Factory())
{
Id = 21,
Shape = Shape.Junction,
X = 630,
Y = 40,
Sz = Sz.L,
};
var j6 = new TBF.Rig.Various.Drawing.Junction.Configuration("J6", new TBF.Rig.Various.Drawing.Junction.Factory())
{
Id = 22,
Shape = Shape.Junction,
X = 680,
Y = 390,
Sz = Sz.None,
};
var j7 = new TBF.Rig.Various.Drawing.Junction.Configuration("J7", new TBF.Rig.Various.Drawing.Junction.Factory())
{
Id = 23,
Shape = Shape.Junction,
X = 620,
Y = 390,
Sz = Sz.None,
};
var t_in = new TBF.Rig.Modbus.TempMeter.Groch.TempMeterCfg(new TBF.Rig.Modbus.TempMeter.Groch.Factory())
{
Id = 25,
Name = "T in",
MsrdFormat = "{0:F1} °C",
MsrdUnit = Config.Unit.C,
MsrdValLimLo = 5,
MsrdValLimHi = 95,
Shape = Shape.TempM,
X = 50,
Y = 320,
Sz = Sz.M,
Orient = Orient.R,
Flip = false,
LblX = 0,
LblY = 2,
LblOrient = Orient.R,
MsrdX = 0,
MsrdY = 24,
MsrdOrient = Orient.R,
};
var t_out = new TBF.Rig.Modbus.TempMeter.Groch.TempMeterCfg(new TBF.Rig.Modbus.TempMeter.Groch.Factory())
{
Id = 26,
Name = "T out",
MsrdFormat = "{0:F1} °C",
MsrdUnit = Config.Unit.C,
MsrdValLimLo = 5,
MsrdValLimHi = 95,
Shape = Shape.TempM,
X = 370,
Y = 320,
Sz = Sz.M,
Orient = Orient.R,
Flip = false,
LblX = 0,
LblY = 2,
LblOrient = Orient.R,
MsrdX = 0,
MsrdY = 24,
MsrdOrient = Orient.R,
};
var t_div = new TBF.Rig.Modbus.TempMeter.Groch.TempMeterCfg(new TBF.Rig.Modbus.TempMeter.Groch.Factory())
{
Id = 27,
Name = "T div",
MsrdFormat = "{0:F1} °C",
MsrdUnit = Config.Unit.C,
MsrdValLimLo = 5,
MsrdValLimHi = 95,
Shape = Shape.TempM,
X = 660,
Y = 30,
Sz = Sz.M,
Orient = Orient.R,
Flip = false,
LblX = 0,
LblY = 0,
LblOrient = Orient.R,
MsrdX = 0,
MsrdY = 22,
MsrdOrient = Orient.R,
};
var pr_up = new TBF.Rig.Modbus.PressureMeter.Meret.PressureMeterCfg(new TBF.Rig.Modbus.PressureMeter.Meret.Factory())
{
Id = 28,
Name = "Pr up",
MsrdFormat = "{0:F2} bar",
MsrdUnit = Config.Unit.bar,
MsrdValLimLo = -0.1,
MsrdValLimHi = 25,
Shape = Shape.PressM,
X = 50,
Y = 270,
Sz = Sz.M,
Orient = Orient.R,
Flip = false,
LblX = 0,
LblY = 0,
LblOrient = Orient.R,
MsrdX = 0,
MsrdY = 22,
MsrdOrient = Orient.R,
};
var pr_dn = new TBF.Rig.Modbus.PressureMeter.Meret.PressureMeterCfg(new TBF.Rig.Modbus.PressureMeter.Meret.Factory())
{
Id = 29,
Name = "Pr dn",
MsrdFormat = "{0:F2} bar",
MsrdUnit = Config.Unit.bar,
MsrdValLimLo = -0.1,
MsrdValLimHi = 25,
Shape = Shape.PressM,
X = 370,
Y = 270,
Sz = Sz.M,
Orient = Orient.R,
Flip = false,
LblX = 0,
LblY = 0,
LblOrient = Orient.R,
MsrdX = 0,
MsrdY = 22,
MsrdOrient = Orient.R,
};
processDrawingCtrl.AddItem(scale);
processDrawingCtrl.AddItem(diverter);
processDrawingCtrl.AddItem(regValve);
processDrawingCtrl.AddItem(flowmeter);
processDrawingCtrl.AddItem(startValve);
processDrawingCtrl.AddItem(wm1);
processDrawingCtrl.AddItem(wm2);
processDrawingCtrl.AddItem(wm3);
processDrawingCtrl.AddItem(pump);
processDrawingCtrl.AddItem(tank);
processDrawingCtrl.AddItem(drainValve);
processDrawingCtrl.AddItem(j1);
processDrawingCtrl.AddItem(j2);
processDrawingCtrl.AddItem(j3);
processDrawingCtrl.AddItem(j4);
processDrawingCtrl.AddItem(j5);
processDrawingCtrl.AddItem(j6);
processDrawingCtrl.AddItem(j7);
processDrawingCtrl.AddItem(t_in);
processDrawingCtrl.AddItem(t_out);
processDrawingCtrl.AddItem(t_div);
processDrawingCtrl.AddItem(pr_up);
processDrawingCtrl.AddItem(pr_dn);
processDrawingCtrl.PipesS = new string[0];
processDrawingCtrl.PipesM = new string[0];
processDrawingCtrl.PipesL = new string[] {
"11~0~10~0", "10~1~17~0", "17~0~18~0", "18~0~7~0", "7~1~8~0", "8~1~9~0", "9~1~19~0", "19~0~6~0",
"6~1~5~0", "5~1~4~0", "4~1~20~0", "20~0~21~0", "21~0~3~0", "2~0~16~0", "16~1~22~0", "3~1~23~0" };
processDrawingCtrl.PipesXL = new string[0];
processDrawingCtrl.Route = 0;
processDrawingCtrl.SupressRedraws = false; /// Invokes Dijkstra algoritm
}
public void Settings2UI()
{
TBF.LocalSettings ls = Program.LocalSettings;
/// Splitter distances
splitContainer1.SplitterDistance = ls.ProcessSplitDist1;
splitContainer2.SplitterDistance = ls.ProcessSplitDist2;
/// ListViewEx columns
processListViewEx.Columns.Add(Strings.Nr, (ls.ProcessColumnCount > 0) ? ls.ProcessColumnWidths[0] : 30 * MainWnd.Dpi / Constants.Dpi100pct);
processListViewEx.Columns.Add(Strings.Error, (ls.ProcessColumnCount > 1) ? ls.ProcessColumnWidths[1] : 50 * MainWnd.Dpi / Constants.Dpi100pct);
processListViewEx.Columns.Add(Strings.Volume, (ls.ProcessColumnCount > 2) ? ls.ProcessColumnWidths[2] : 50 * MainWnd.Dpi / Constants.Dpi100pct);
processListViewEx.Columns.Add(Strings.Pulses, (ls.ProcessColumnCount > 3) ? ls.ProcessColumnWidths[3] : 60 * MainWnd.Dpi / Constants.Dpi100pct);
processListViewEx.Columns.Add(Strings.Ref_pulses, (ls.ProcessColumnCount > 4) ? ls.ProcessColumnWidths[4] : 75 * MainWnd.Dpi / Constants.Dpi100pct);
processListViewEx.Columns.Add(Strings.SerialNr, (ls.ProcessColumnCount > 5) ? ls.ProcessColumnWidths[5] : 100 * MainWnd.Dpi / Constants.Dpi100pct);
}
/// <summary>
/// Save UI settings to Program.LocalSettings and save them to a file.
/// UI settings are:
/// MainWnd size and location and splitter distances.
/// </summary>
public void UI2Settings()
{
LocalSettings ls = Program.LocalSettings;
bool anyChange = splitContainer1.SplitterDistance != ls.ProcessSplitDist1
|| splitContainer2.SplitterDistance != ls.ProcessSplitDist2;
if (anyChange)
{
ls.ProcessSplitDist1 = splitContainer1.SplitterDistance;
ls.ProcessSplitDist2 = splitContainer2.SplitterDistance;
}
/// Compare list view column widths with the saved ones
if (processListViewEx.Columns.Count != ls.ProcessColumnCount)
{
ls.ProcessColumnWidths = new int[processListViewEx.Columns.Count];
for (int i = 0; i < ls.ProcessColumnCount; i++)
{
ls.ProcessColumnWidths[i] = processListViewEx.Columns[i].Width;
}
anyChange = true;
}
else
{
for (int i = 0; i < ls.ProcessColumnCount; i++)
{
if (processListViewEx.Columns[i].Width != ls.ProcessColumnWidths[i])
{
ls.ProcessColumnWidths[i] = processListViewEx.Columns[i].Width;
anyChange = true;
}
}
}
if (anyChange) ls.Save();
}
void OnProcedureSelected(object sender, ProcedureSelectedEventArgs args)
{
currentMetersKind = args.Procedure.MetersKind;
Invalidate();
}
void OnTestSelected(object sender, TestSelectedEventArgs args)
{
}
void OnProcessDataChanged(object sender, ProcessDataEventArgs args)
{
if (processListViewEx.Items.Count != TBF.Rig.Sequences.ProcessData.RegisterReaders.Length)
{
processListViewEx.Items.Clear();
for (int i = 1; i <= TBF.Rig.Sequences.ProcessData.RegisterReaders.Length; i++)
{
var lvi = new ListViewItem(i.ToString());
for (Column c = Column.Error; c < Column.Count; c++) lvi.SubItems.Add(".");
if (TBF.Rig.Sequences.ProcessData.BatchRslts.Batch.WaterMeters.Count >= i)
{
lvi.Tag = TBF.Rig.Sequences.ProcessData.BatchRslts.Batch.WaterMeters[i - 1];
}
processListViewEx.Items.Add(lvi);
}
}
for (int i = 1; i <= TBF.Rig.Sequences.ProcessData.RegisterReaders.Length; i++)
{
if (TBF.Rig.Sequences.ProcessData.RegisterReaders[i - 1] != null)
{
var lvi = processListViewEx.Items[i - 1];
var rr = TBF.Rig.Sequences.ProcessData.RegisterReaders[i - 1];
if (rr != null)
{
/// Update a list view item
//lvi.SubItems[(int)Column.Error].Text = Config.Formulas.ErrorFromVolumes(rr.WMVolume, rr.WMRefVolume).ToString("F1");
lvi.SubItems[(int)Column.Volume].Text = rr.WMVolume.ToString("F1");
lvi.SubItems[(int)Column.Pulses].Text = rr.WMPulses.ToString();
lvi.SubItems[(int)Column.RefPulses].Text = rr.WMRefPulses.ToString();
if (rr is TBF.Rig.RegisterReaders.S640Stream.S640Stream)
{
lvi.SubItems[(int)Column.SerialNr].Text = (rr as TBF.Rig.RegisterReaders.S640Stream.S640Stream).PcbNumber.ToString();
}
}
}
}
}
void OnTestCompleted(object sender, TestCompletedEventArgs args)
{
if (processListViewEx.Items.Count != TBF.Rig.Sequences.ProcessData.RegisterReaders.Length)
{
processListViewEx.Items.Clear();
for (int i = 1; i <= TBF.Rig.Sequences.ProcessData.RegisterReaders.Length; i++)
{
var lvi = new ListViewItem(i.ToString());
for (Column c = Column.Error; c < Column.Count; c++) lvi.SubItems.Add(".");
if (TBF.Rig.Sequences.ProcessData.BatchRslts.Batch.WaterMeters.Count >= i)
{
lvi.Tag = TBF.Rig.Sequences.ProcessData.BatchRslts.Batch.WaterMeters[i - 1];
}
processListViewEx.Items.Add(lvi);
}
}
foreach (var wm in args.TestRslt.Batch.WaterMeters)
{
if (wm.WMPosition > 0 && wm.WMPosition <= processListViewEx.Items.Count)
{
foreach (var mtr in wm.MeterTestRslts)
{
if (mtr != null && mtr.TestRslt == args.TestRslt)
{
var lvi = processListViewEx.Items[wm.WMPosition - 1];
/// Update a list view item
lvi.SubItems[(int)Column.Error].Text = mtr.Error.ToString("F1");
lvi.SubItems[(int)Column.Volume].Text = mtr.VolumeMeter.ToString("F1");
lvi.SubItems[(int)Column.Pulses].Text = mtr.PulsesMeter.ToString();
lvi.SubItems[(int)Column.RefPulses].Text = mtr.PulsesMaster.ToString();
lvi.SubItems[(int)Column.SerialNr].Text = mtr.SerialNr();
}
}
}
}
}
void OnProcedureCompleted(object sender, ProcedureCompletedEventArgs args)
{
}
private void ProcessTabPageCtrl_Paint(object sender, PaintEventArgs e)
{
System.Drawing.Graphics formGraphics = this.CreateGraphics();
}
}
}
+120
View File
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
+7 -6
View File
@@ -2,6 +2,7 @@
/// Copyright (c) 2013-2015 Sensus Metering Systems /// Copyright (c) 2013-2015 Sensus Metering Systems
/// ///
using System; using System;
using Config.Entities;
namespace TBF.UiBridge namespace TBF.UiBridge
{ {
@@ -12,7 +13,7 @@ namespace TBF.UiBridge
public int Repeats; public int Repeats;
public int RepetitionNr; public int RepetitionNr;
public Config.Entities.Progress Phase; public Progress Phase;
public int Progress; /// value in the range 0..100 public int Progress; /// value in the range 0..100
public float OveralProgress; public float OveralProgress;
@@ -22,7 +23,7 @@ namespace TBF.UiBridge
static int[] estimatedTime; /// Estimated time of each phase to calculate the progress [s] static int[] estimatedTime; /// Estimated time of each phase to calculate the progress [s]
static int[] cumulativeSumsOfEstimates; static int[] cumulativeSumsOfEstimates;
static int currentPhaseStartTime; static int currentPhaseStartTime;
static Config.Entities.Progress currentPhase; static Progress currentPhase;
static TestProgressEventArgs() static TestProgressEventArgs()
@@ -58,7 +59,7 @@ namespace TBF.UiBridge
/// and calculates 'Progress'. /// and calculates 'Progress'.
/// </summary> /// </summary>
/// <param name="progress"></param> /// <param name="progress"></param>
private TestProgressEventArgs(Config.Entities.Progress phase) private TestProgressEventArgs(Progress phase)
{ {
if (phase != currentPhase) if (phase != currentPhase)
{ {
@@ -81,7 +82,7 @@ namespace TBF.UiBridge
#endregion #endregion
public TestProgressEventArgs(Config.Entities.Test test, int repetitionNr, Config.Entities.Progress progress) public TestProgressEventArgs(Config.Entities.Test test, int repetitionNr, Progress progress)
: this(progress) : this(progress)
{ {
TestName = Results.Utils.GetTestName(test.Name, test.Repeats, repetitionNr); TestName = Results.Utils.GetTestName(test.Name, test.Repeats, repetitionNr);
@@ -90,7 +91,7 @@ namespace TBF.UiBridge
RepetitionNr = repetitionNr; RepetitionNr = repetitionNr;
} }
public TestProgressEventArgs(Config.Entities.Test test, Config.Entities.Progress progress) public TestProgressEventArgs(Test test, Progress progress)
: this(test, 1, progress) : this(test, 1, progress)
{ {
} }
@@ -111,7 +112,7 @@ namespace TBF.UiBridge
/// <summary> /// <summary>
/// Used by iPearl communication dialog /// Used by iPearl communication dialog
/// </summary> /// </summary>
public TestProgressEventArgs(string testName, Config.Entities.Progress progress) public TestProgressEventArgs(string testName, Progress progress)
: this(progress) : this(progress)
{ {
TestName = testName; TestName = testName;