diff --git a/TestBenchFramework/BenchControl/Output/FileWriters/Basic/WriterCfg.cs b/TestBenchFramework/BenchControl/Output/FileWriters/Basic/WriterCfg.cs index 77b25e17f..f56a5a6e6 100644 --- a/TestBenchFramework/BenchControl/Output/FileWriters/Basic/WriterCfg.cs +++ b/TestBenchFramework/BenchControl/Output/FileWriters/Basic/WriterCfg.cs @@ -1,5 +1,5 @@ /// -/// Copyright (c) 2013-2016 Sensus Metering Systems +/// Copyright (c) 2013-2017 Sensus Metering Systems /// using System; using System.Collections.Generic; @@ -9,41 +9,6 @@ using TBF.BenchControl.Generic; namespace TBF.BenchControl.Output.FileWriters.Basic { - public enum YearFolders - { - None, - TwoDigit, - FourDigit, - Count - } - - public enum MonthFolders - { - None, - Digit, - TwoDigit, - Name, - Count - } - - public enum DayFolders - { - None, - Digit, - TwoDigit, - Count - } - - public enum Separator - { - None, - Space, - Tabulator, - Comma, - Semicolon, - Count - } - public class WriterCfg : ComponentCfgBase, Generic.IComponentCfg { public IComponentCfgCtrl GetControl() { return new WriterCfgCtrl(); } diff --git a/TestBenchFramework/BenchControl/Output/FileWriters/Enhanced/WriterCfg.cs b/TestBenchFramework/BenchControl/Output/FileWriters/Enhanced/WriterCfg.cs index 2c2bfec3d..5d4d50c96 100644 --- a/TestBenchFramework/BenchControl/Output/FileWriters/Enhanced/WriterCfg.cs +++ b/TestBenchFramework/BenchControl/Output/FileWriters/Enhanced/WriterCfg.cs @@ -1,5 +1,5 @@ /// -/// Copyright (c) 2016 Sensus Metering Systems +/// Copyright (c) 2016-2017 Sensus Metering Systems /// using System; using System.Collections.Generic; @@ -9,41 +9,6 @@ using TBF.BenchControl.Generic; namespace TBF.BenchControl.Output.FileWriters.Enhanced { - public enum YearFolders - { - None, - TwoDigit, - FourDigit, - Count - } - - public enum MonthFolders - { - None, - Digit, - TwoDigit, - Name, - Count - } - - public enum DayFolders - { - None, - Digit, - TwoDigit, - Count - } - - public enum Separator - { - None, - Space, - Tabulator, - Comma, - Semicolon, - Count - } - public class WriterCfg : ComponentCfgBase, Generic.IComponentCfg { public IComponentCfgCtrl GetControl() { return new WriterCfgCtrl(); } diff --git a/TestBenchFramework/BenchControl/Output/FileWriters/Enums.cs b/TestBenchFramework/BenchControl/Output/FileWriters/Enums.cs new file mode 100644 index 000000000..b398f7d6f --- /dev/null +++ b/TestBenchFramework/BenchControl/Output/FileWriters/Enums.cs @@ -0,0 +1,40 @@ +/// +/// Copyright (c) 2017 Sensus Metering Systems +/// +namespace TBF.BenchControl.Output.FileWriters +{ + public enum YearFolders + { + None, + TwoDigit, + FourDigit, + Count + } + + public enum MonthFolders + { + None, + Digit, + TwoDigit, + Name, + Count + } + + public enum DayFolders + { + None, + Digit, + TwoDigit, + Count + } + + public enum Separator + { + None, + Space, + Tabulator, + Comma, + Semicolon, + Count + } +} diff --git a/TestBenchFramework/BenchControl/Output/FileWriters/Xml/FactoryCompound.cs b/TestBenchFramework/BenchControl/Output/FileWriters/Xml/FactoryCompound.cs new file mode 100644 index 000000000..de5f66750 --- /dev/null +++ b/TestBenchFramework/BenchControl/Output/FileWriters/Xml/FactoryCompound.cs @@ -0,0 +1,29 @@ +/// +/// Copyright (c) 2017 Sensus Metering Systems +/// +using System; +using System.Collections.Generic; +using TBF.BenchControl.Generic; + +namespace TBF.BenchControl.Output.FileWriters.Xml +{ + public class FactoryCompound : IComponentFactory + { + public string ClassName { get { return this.GetType().Namespace.Substring(17) + ".Compound"; } } + + public void ResetStaticProperties() { Writer.ResetStaticProperties(); } + + public IComponent DummyComponent() { return new Writer(); } + + public IComponent GetComponent(IComponentCfg cfg, IList components) { return new Writer(cfg); } + + public IComponentCfg DefaultConfig() { return new WriterCfg("FileWriter.Xml.Compound", this, Config.Entities.MetersKind.Combined); } + + public IComponentCfg CmpntCfgFromCmpntEntity(Config.Entities.Component component) + { + IComponentCfg cfg = ComponentCfgBase.CreateFromDbEntity(typeof(WriterCfg), component, this); + (cfg as WriterCfg).MetersKind = Config.Entities.MetersKind.Combined; + return cfg; + } + } +} diff --git a/TestBenchFramework/BenchControl/Output/FileWriters/Xml/FactoryHeatMeters.cs b/TestBenchFramework/BenchControl/Output/FileWriters/Xml/FactoryHeatMeters.cs new file mode 100644 index 000000000..209755cf2 --- /dev/null +++ b/TestBenchFramework/BenchControl/Output/FileWriters/Xml/FactoryHeatMeters.cs @@ -0,0 +1,29 @@ +/// +/// Copyright (c) 2017 Sensus Metering Systems +/// +using System; +using System.Collections.Generic; +using TBF.BenchControl.Generic; + +namespace TBF.BenchControl.Output.FileWriters.Xml +{ + public class FactoryHeatMeters : IComponentFactory + { + public string ClassName { get { return this.GetType().Namespace.Substring(17) + ".HeatMeters"; } } + + public void ResetStaticProperties() { Writer.ResetStaticProperties(); } + + public IComponent DummyComponent() { return new Writer(); } + + public IComponent GetComponent(IComponentCfg cfg, IList components) { return new Writer(cfg); } + + public IComponentCfg DefaultConfig() { return new WriterCfg("FileWriter.Xml.HeatMeters", this, Config.Entities.MetersKind.HeatMeter); } + + public IComponentCfg CmpntCfgFromCmpntEntity(Config.Entities.Component component) + { + IComponentCfg cfg = ComponentCfgBase.CreateFromDbEntity(typeof(WriterCfg), component, this); + (cfg as WriterCfg).MetersKind = Config.Entities.MetersKind.HeatMeter; + return cfg; + } + } +} diff --git a/TestBenchFramework/BenchControl/Output/FileWriters/Xml/FactorySingle.cs b/TestBenchFramework/BenchControl/Output/FileWriters/Xml/FactorySingle.cs new file mode 100644 index 000000000..846458e8c --- /dev/null +++ b/TestBenchFramework/BenchControl/Output/FileWriters/Xml/FactorySingle.cs @@ -0,0 +1,29 @@ +/// +/// Copyright (c) 2017 Sensus Metering Systems +/// +using System; +using System.Collections.Generic; +using TBF.BenchControl.Generic; + +namespace TBF.BenchControl.Output.FileWriters.Xml +{ + public class FactorySingle : IComponentFactory + { + public string ClassName { get { return this.GetType().Namespace.Substring(17) + ".Single"; } } + + public void ResetStaticProperties() { Writer.ResetStaticProperties(); } + + public IComponent DummyComponent() { return new Writer(); } + + public IComponent GetComponent(IComponentCfg cfg, IList components) { return new Writer(cfg); } + + public IComponentCfg DefaultConfig() { return new WriterCfg("FileWriter.Xml.Single", this, Config.Entities.MetersKind.Single); } + + public IComponentCfg CmpntCfgFromCmpntEntity(Config.Entities.Component component) + { + IComponentCfg cfg = ComponentCfgBase.CreateFromDbEntity(typeof(WriterCfg), component, this); + (cfg as WriterCfg).MetersKind = Config.Entities.MetersKind.Single; + return cfg; + } + } +} diff --git a/TestBenchFramework/BenchControl/Output/FileWriters/Xml/HeaderFooterDlg.cs b/TestBenchFramework/BenchControl/Output/FileWriters/Xml/HeaderFooterDlg.cs new file mode 100644 index 000000000..d9ee01fee --- /dev/null +++ b/TestBenchFramework/BenchControl/Output/FileWriters/Xml/HeaderFooterDlg.cs @@ -0,0 +1,29 @@ +/// +/// Copyright (c) 2017 Sensus Metering Systems +/// +using System.Windows.Forms; +using TBF.Resources; + +namespace TBF.BenchControl.Output.FileWriters.Xml +{ + public partial class HeaderFooterDlg : Form + { + public string EditedText + { + set { textBox.Text = value; } + get { return textBox.Text; } + } + + public HeaderFooterDlg() + { + InitializeComponent(); + } + + public HeaderFooterDlg(bool isHeader, string text) + : this() + { + Text = isHeader ? Strings.Header : Strings.Footer; + textBox.Text = text; + } + } +} diff --git a/TestBenchFramework/BenchControl/Output/FileWriters/Xml/HeaderFooterDlg.designer.cs b/TestBenchFramework/BenchControl/Output/FileWriters/Xml/HeaderFooterDlg.designer.cs new file mode 100644 index 000000000..ce9a6f9bc --- /dev/null +++ b/TestBenchFramework/BenchControl/Output/FileWriters/Xml/HeaderFooterDlg.designer.cs @@ -0,0 +1,85 @@ +namespace TBF.BenchControl.Output.FileWriters.Xml +{ + partial class HeaderFooterDlg + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.okButton = new System.Windows.Forms.Button(); + this.cancelButton = new System.Windows.Forms.Button(); + this.textBox = new System.Windows.Forms.TextBox(); + this.SuspendLayout(); + // + // okButton + // + this.okButton.DialogResult = System.Windows.Forms.DialogResult.OK; + this.okButton.Location = new System.Drawing.Point(393, 169); + this.okButton.Name = "okButton"; + this.okButton.Size = new System.Drawing.Size(75, 34); + this.okButton.TabIndex = 1; + this.okButton.Text = "OK"; + this.okButton.UseVisualStyleBackColor = true; + // + // cancelButton + // + this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.cancelButton.Location = new System.Drawing.Point(484, 169); + this.cancelButton.Name = "cancelButton"; + this.cancelButton.Size = new System.Drawing.Size(75, 34); + this.cancelButton.TabIndex = 2; + this.cancelButton.Text = "Cancel"; + this.cancelButton.UseVisualStyleBackColor = true; + // + // textBox + // + this.textBox.Location = new System.Drawing.Point(12, 12); + this.textBox.Multiline = true; + this.textBox.Name = "textBox"; + this.textBox.Size = new System.Drawing.Size(547, 142); + this.textBox.TabIndex = 0; + // + // HeaderFooterDlg + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(571, 216); + this.Controls.Add(this.textBox); + this.Controls.Add(this.cancelButton); + this.Controls.Add(this.okButton); + this.Name = "HeaderFooterDlg"; + this.Text = "Enter text"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button okButton; + private System.Windows.Forms.Button cancelButton; + private System.Windows.Forms.TextBox textBox; + } +} \ No newline at end of file diff --git a/TestBenchFramework/BenchControl/Output/FileWriters/Xml/HeaderFooterDlg.resx b/TestBenchFramework/BenchControl/Output/FileWriters/Xml/HeaderFooterDlg.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/TestBenchFramework/BenchControl/Output/FileWriters/Xml/HeaderFooterDlg.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/TestBenchFramework/BenchControl/Output/FileWriters/Xml/Writer.cs b/TestBenchFramework/BenchControl/Output/FileWriters/Xml/Writer.cs new file mode 100644 index 000000000..194988714 --- /dev/null +++ b/TestBenchFramework/BenchControl/Output/FileWriters/Xml/Writer.cs @@ -0,0 +1,291 @@ +/// +/// Copyright (c) 2017 Sensus Metering Systems +/// +using System; +using System.Collections.Generic; +using System.IO; +using log4net; +using Config.Entities; +using TBF.BenchControl; +using TBF.Resources; + +namespace TBF.BenchControl.Output.FileWriters.Xml +{ + public class Writer : ComponentBase, IOperation, GenericDevices.IResultsWriter + { + private static readonly ILog log = LogManager.GetLogger(typeof(Writer)); + public override string ToString() { return string.Format("Output.FileWriters.Enhanced({0})", Cfg.ToString(1)); } + + readonly WriterCfg writerCfg; + + string separatorStr; + + /// + /// Items to print + /// + string header; + IList commonItems1; + IList testItems; + IList commonItems2; + string footer; + + /// + /// Results to print + /// + Results.Entities.Batch batch; + + + public Writer() {} + + public Writer(Generic.IComponentCfg cfg) + : base(cfg) + { + writerCfg = cfg as WriterCfg; + ApplyConfig(); + log.Debug(this.ToString()); + } + + + void ApplyConfig() + { + switch (writerCfg.Separator) + { + default: + case Separator.None: separatorStr = string.Empty; break; + case Separator.Space: separatorStr = " "; break; + case Separator.Tabulator: separatorStr = "\t"; break; + case Separator.Comma: separatorStr = ","; break; + case Separator.Semicolon: separatorStr = ";"; break; + } + + header = writerCfg.Header.Replace("~", Environment.NewLine); + commonItems1 = Results.WMeterRsltItemSpec.FromStrArray(writerCfg.CommonItems1); + testItems = Results.WMeterRsltItemSpec.FromStrArray(writerCfg.SelectedItems); /// TestID info will be overwritten later on + commonItems2 = Results.WMeterRsltItemSpec.FromStrArray(writerCfg.CommonItems2); + footer = writerCfg.Footer.Replace("~", Environment.NewLine); + } + + + #region Configuration Change Handling + + public static void OnCfgChange(object sender, CfgChangeArgs args) + { + if (CfgChangeHandler == null) return; + try { CfgChangeHandler(sender, args); } + catch (Exception e) { log.Error("CfgChangeHandler(...) failed", e); } + } + + public static event EventHandler CfgChangeHandler; + + public override void StartChangeHandler() + { + CfgChangeHandler += delegate(object sender, CfgChangeArgs args) + { + WriterCfg newCfg = args.Cfg as WriterCfg; + if (newCfg != null && newCfg.Name.Equals(Name)) + { + if (args.Command == CfgChangeCmd.CfgChange) + { + writerCfg.DestinationPath = newCfg.DestinationPath; + writerCfg.DestinationPath2 = newCfg.DestinationPath2; + writerCfg.YearFolders = newCfg.YearFolders; + writerCfg.MonthFolders = newCfg.MonthFolders; + writerCfg.DayFolders = newCfg.DayFolders; + writerCfg.FileNameFormat = newCfg.FileNameFormat; + writerCfg.Separator = newCfg.Separator; + writerCfg.CommonItems1 = newCfg.CommonItems1; + writerCfg.SelectedItems = newCfg.SelectedItems; + writerCfg.CommonItems2 = newCfg.CommonItems2; + writerCfg.Header = newCfg.Header; + writerCfg.Footer = newCfg.Footer; + + ApplyConfig(); + } + } + }; + } + + #endregion Configuration Change Handling + + + /// + /// Returns a file name derived from a DateTime structure. + /// Creates directories on this path as a side effect. + /// + /// Date and time + /// File name + string GetFilename(string destinationPath, DateTime time, int wmPosition) + { + string directory = destinationPath; /// Ends with "\\"; + + switch (writerCfg.YearFolders) + { + case YearFolders.FourDigit: + directory = string.Format("{0}{1:yyyy}\\", directory, time); + break; + case YearFolders.TwoDigit: + directory = string.Format("{0}{1:yy}\\", directory, time); + break; + } + + switch (writerCfg.MonthFolders) + { + case MonthFolders.Name: + { + string monthStr; + switch (time.Month) + { + default: + case 1: monthStr = "January"; break; + case 2: monthStr = "February"; break; + case 3: monthStr = "March"; break; + case 4: monthStr = "April"; break; + case 5: monthStr = "May"; break; + case 6: monthStr = "June"; break; + case 7: monthStr = "July"; break; + case 8: monthStr = "August"; break; + case 9: monthStr = "September"; break; + case 10: monthStr = "October"; break; + case 11: monthStr = "November"; break; + case 12: monthStr = "December"; break; + } + directory = string.Format("{0}{1}\\", directory, monthStr); + break; + } + case MonthFolders.Digit: + directory = string.Format("{0}{1}\\", directory, time.Month.ToString()); + break; + case MonthFolders.TwoDigit: + directory = string.Format("{0}{1:MM}\\", directory, time); + break; + } + + switch (writerCfg.DayFolders) + { + case DayFolders.Digit: + directory = string.Format("{0}{1}\\", directory, time.Day.ToString()); + break; + case DayFolders.TwoDigit: + directory = string.Format("{0}{1:dd}\\", directory, time); + break; + } + + Directory.CreateDirectory(directory); + + try + { + if (string.IsNullOrEmpty(writerCfg.FileNameFormat)) throw new Exception(); + return directory + string.Format(writerCfg.FileNameFormat, time, wmPosition); + } + catch + { + return string.Format("{0}{1:yyMMdd-HHmm}-{2:D2}.xml", directory, time, wmPosition); + } + } + + /// + /// Writes the test cycle results into a file, Events: Event.ResultsWritten + /// + /// Procedure to print the results of + /// Results to write into the file + /// Reference to the operation + public IOperation WriteResultsOp(Results.Entities.Batch batchResults) + { + this.batch = batchResults; + return this; + } + + /// Start this operation + public void Start() + { + IList destPaths = new List(); + if (!string.IsNullOrEmpty(writerCfg.DestinationPath)) destPaths.Add(writerCfg.DestinationPath); + if (!string.IsNullOrEmpty(writerCfg.DestinationPath2)) destPaths.Add(writerCfg.DestinationPath2); + + foreach (var dest in destPaths) + { + foreach (var wm in batch.WaterMeters) + { + try + { + StreamWriter writer = File.AppendText(GetFilename(writerCfg.DestinationPath, batch.EndTime, wm.WMPosition)); + WriteWM(writer, wm); + writer.Close(); + } + catch + { + } + } + } + } + + /// + /// Write one water meter results + /// + /// Water meter number (0-based) + void WriteWM(StreamWriter wr, Results.Entities.WaterMeter wm) + { + /// Header + if (!string.IsNullOrEmpty(writerCfg.Header)) wr.Write(header); + + /// Common items 1 + foreach (var v in commonItems1) + { + /// Fetch the item and strip color information + string itemText = v.Print(wm); + string[] texts = itemText.Split(new char[] { '|' }); + if (texts.Length == 2) { itemText = texts[0]; } + + wr.WriteLine(" <{0}>{1}", v.Caption, itemText); + } + + /// Test items + foreach (var mtr in wm.MeterTestRslts) + { + if ((mtr != null) && (mtr.Publish() == Config.Entities.Publish.Always)) + { + wr.WriteLine(" "); + for (int i = 0; i < testItems.Count; i++) + { + /// Fetch the item and strip color information + string itemText = testItems[i].Print(wm, mtr.Name()); + string[] texts = itemText.Split(new char[] { '|' }); + if (texts.Length == 2) { itemText = texts[0]; } + + /// Print the item + wr.WriteLine(" <{0}>{1}", testItems[i].Caption, itemText); + } + wr.WriteLine(" "); + } + } + + /// Common items 2 + foreach (var v in commonItems2) + { + /// Fetch the item and strip color information + string itemText = v.Print(wm); + string[] texts = itemText.Split(new char[] { '|' }); + if (texts.Length == 2) { itemText = texts[0]; } + + wr.WriteLine(" <{0}>{1}", v.Caption, itemText); + } + + /// Footer + if (!string.IsNullOrEmpty(writerCfg.Footer)) wr.Write(footer); + } + + + /// Run this operation + /// Event.ResultsWritten + public Event Run() + { + return Event.ResultsWritten; + } + + + /// Stop this operation + public void Stop() + { + } + } +} diff --git a/TestBenchFramework/BenchControl/Output/FileWriters/Xml/WriterCfg.cs b/TestBenchFramework/BenchControl/Output/FileWriters/Xml/WriterCfg.cs new file mode 100644 index 000000000..51014ea04 --- /dev/null +++ b/TestBenchFramework/BenchControl/Output/FileWriters/Xml/WriterCfg.cs @@ -0,0 +1,69 @@ +/// +/// Copyright (c) 2017 Sensus Metering Systems +/// +using System; +using System.Collections.Generic; +using System.IO; +using System.Xml.Serialization; +using TBF.BenchControl.Generic; + +namespace TBF.BenchControl.Output.FileWriters.Xml +{ + + public class WriterCfg : ComponentCfgBase, Generic.IComponentCfg + { + public IComponentCfgCtrl GetControl() { return new WriterCfgCtrl(); } + + public string DestinationPath; /// Directory path into which the results will be saved + public string DestinationPath2; /// Directory path into which the 2nd copy of results will be saved + public YearFolders YearFolders; + public MonthFolders MonthFolders; + public DayFolders DayFolders; + public string FileNameFormat; + public Separator Separator; + public string Header; + public string[] CommonItems1; + public string[] SelectedItems; + public string[] CommonItems2; + public string Footer; + + [XmlIgnore] + public Config.Entities.MetersKind MetersKind; + + /// Private parameterless constructor invoked by all other (public) constructors + WriterCfg() + { + } + + public WriterCfg(string name, IComponentFactory factory, Config.Entities.MetersKind metersKind) + : this() + { + Name = name; + Factory = factory; + MetersKind = metersKind; + + ParentName = string.Empty; + DestinationPath = Program.HomeDir + "Results\\"; + DestinationPath2 = string.Empty; + YearFolders = YearFolders.FourDigit; + MonthFolders = MonthFolders.Digit; + DayFolders = DayFolders.Digit; + FileNameFormat = "{0:yyMMdd-HHmm}-{2:D2}.xml"; + Separator = Separator.None; + Header = string.Empty; + Footer = string.Empty; + } + + public string ToString(int i) + { + return string.Format("Name={0}, Path={1}, Y={2}, M={3}, D={4}, FNameFmt={5}, Separator={6}", + Name, + DestinationPath, + YearFolders, + MonthFolders, + DayFolders, + FileNameFormat, + Separator); + } + } +} diff --git a/TestBenchFramework/BenchControl/Output/FileWriters/Xml/WriterCfgCtrl.cs b/TestBenchFramework/BenchControl/Output/FileWriters/Xml/WriterCfgCtrl.cs new file mode 100644 index 000000000..8e2de58bd --- /dev/null +++ b/TestBenchFramework/BenchControl/Output/FileWriters/Xml/WriterCfgCtrl.cs @@ -0,0 +1,352 @@ +/// +/// Copyright (c) 2017-2017 Sensus Metering Systems +/// +using System; +using System.Collections.Generic; +using System.Windows.Forms; +using log4net; +using TBF.BenchControl.Generic; +using TBF.Resources; + +namespace TBF.BenchControl.Output.FileWriters.Xml +{ + public partial class WriterCfgCtrl : UserControl, IComponentCfgCtrl + { + static readonly ILog log = LogManager.GetLogger(typeof(WriterCfgCtrl)); + + public bool ShowMore { get { return false; } } + + public bool Compound; + + WriterCfg config; + public IComponentCfg Config + { + get { return config as IComponentCfg; } + set + { + config = value as WriterCfg; + Redraw(); + } + } + + string header; + string[] commonItems1; + string[] testItems; + string[] commonItems2; + string footer; + + public WriterCfgCtrl() + { + InitializeComponent(); + Localize(); + } + + private void WriterCfgCtrl_Load(object sender, EventArgs e) + { + for (Separator s = 0; s < Separator.Count; s++) separatorComboBox.Items.Add(s.ToString()); + for (YearFolders s = 0; s < YearFolders.Count; s++) yearFoldersComboBox.Items.Add(s.ToString()); + for (MonthFolders s = 0; s < MonthFolders.Count; s++) monthFoldersComboBox.Items.Add(s.ToString()); + for (DayFolders s = 0; s < DayFolders.Count; s++) dayFoldersComboBox.Items.Add(s.ToString()); + + for (int i = 0; i < (int)Separator.Count; i++) + { + separatorComboBox.Items.Add(((Separator)i).ToString()); + } + + header = config.Header; + commonItems1 = config.CommonItems1; + testItems = config.SelectedItems; + commonItems2 = config.CommonItems2; + footer = config.Footer; + + Redraw(); + } + + void Localize() + { + nameLabel.Text = Strings.Name; + destinationLabel.Text = "Destination"; + destination2Label.Text = "Destination" + " 2"; + yearFoldersLabel.Text = "Year folders"; + monthFoldersLabel.Text = "Month folders"; + dayFoldersLabel.Text = "Day folders"; + fileNameFmtLabel.Text = "File name format"; + separatorLabel.Text = "Separator"; + headerButton.Text = Strings.Header; + commonItemsButton1.Text = "Common items 1"; + testItemsButton.Text = "Test items"; + commonItemsButton2.Text = "Common items 2"; + footerButton.Text = Strings.Footer; + } + + public void Closing() + { + } + + void Redraw() + { + if (config == null) return; /// Control was not loaded, settings were not changed + classNameLabel.Text = config.Factory.ClassName; + nameTextBox.Text = config.Name; + destinationTextBox.Text = config.DestinationPath; + destination2TextBox.Text = config.DestinationPath2; + yearFoldersComboBox.Text = config.YearFolders.ToString(); + monthFoldersComboBox.Text = config.MonthFolders.ToString(); + dayFoldersComboBox.Text = config.DayFolders.ToString(); + fileNameFmtTextBox.Text = config.FileNameFormat; + separatorComboBox.Text = config.Separator.ToString(); + } + + public void Unlock() + { + nameTextBox.Enabled = true; + destinationTextBox.Enabled = true; + destinationButton.Enabled = true; + destination2TextBox.Enabled = true; + destination2Button.Enabled = true; + yearFoldersComboBox.Enabled = true; + monthFoldersComboBox.Enabled = true; + dayFoldersComboBox.Enabled = true; + fileNameFmtTextBox.Enabled = true; + separatorComboBox.Enabled = true; + headerButton.Enabled = true; + commonItemsButton1.Enabled = true; + testItemsButton.Enabled = true; + commonItemsButton2.Enabled = true; + footerButton.Enabled = true; + } + + public CfgUpdateFlags VerifyCfg(ref string message) + { + CfgUpdateFlags flags = CfgUpdateFlags.None; + + if (!yearFoldersComboBox.Items.Contains(yearFoldersComboBox.Text)) + { + flags |= CfgUpdateFlags.Error; + message += Environment.NewLine + "Invalid year folders selection"; + } + + if (!monthFoldersComboBox.Items.Contains(monthFoldersComboBox.Text)) + { + flags |= CfgUpdateFlags.Error; + message += Environment.NewLine + "Invalid month folders selection"; + } + + if (!dayFoldersComboBox.Items.Contains(dayFoldersComboBox.Text)) + { + flags |= CfgUpdateFlags.Error; + message += Environment.NewLine + "Invalid day folder selection"; + } + + if (!separatorComboBox.Items.Contains(separatorComboBox.Text)) + { + flags |= CfgUpdateFlags.Error; + message += Environment.NewLine + "Invalid separator"; + } + return flags; + } + + public CfgUpdateFlags UpdateCfg() + { + CfgUpdateFlags flags = CfgUpdateFlags.None; + + if (config == null) return CfgUpdateFlags.Error; /// Control was not loaded, settings were not changed + + if (config.Name != nameTextBox.Text) + { + config.Name = nameTextBox.Text; + flags |= (CfgUpdateFlags.RestartRqrd | CfgUpdateFlags.AnyChange); + } + + if (config.DestinationPath != destinationTextBox.Text) + { + config.DestinationPath = destinationTextBox.Text; + if (!config.DestinationPath.EndsWith("\\")) config.DestinationPath += "\\"; + flags |= (CfgUpdateFlags.InvokeCfgChange | CfgUpdateFlags.AnyChange); + } + + if (config.DestinationPath2 != destination2TextBox.Text) + { + config.DestinationPath2 = destination2TextBox.Text; + if (!config.DestinationPath2.EndsWith("\\")) config.DestinationPath2 += "\\"; + flags |= (CfgUpdateFlags.InvokeCfgChange | CfgUpdateFlags.AnyChange); + } + + for (YearFolders i = 0; i < YearFolders.Count; i++) + { + if (i.ToString().Equals(yearFoldersComboBox.Text) && (config.YearFolders != i)) + { + config.YearFolders = i; + flags |= (CfgUpdateFlags.InvokeCfgChange | CfgUpdateFlags.AnyChange); + break; + } + } + + for (MonthFolders i = 0; i < MonthFolders.Count; i++) + { + if (i.ToString().Equals(monthFoldersComboBox.Text) && (config.MonthFolders != i)) + { + config.MonthFolders = i; + flags |= (CfgUpdateFlags.InvokeCfgChange | CfgUpdateFlags.AnyChange); + break; + } + } + + for (DayFolders i = 0; i < DayFolders.Count; i++) + { + if (i.ToString().Equals(dayFoldersComboBox.Text) && (config.DayFolders != i)) + { + config.DayFolders = i; + flags |= (CfgUpdateFlags.InvokeCfgChange | CfgUpdateFlags.AnyChange); + break; + } + } + + if (config.FileNameFormat != fileNameFmtTextBox.Text) + { + config.FileNameFormat = fileNameFmtTextBox.Text; + flags |= (CfgUpdateFlags.InvokeCfgChange | CfgUpdateFlags.AnyChange); + } + + + for (Separator i = 0; i < Separator.Count; i++) + { + if (i.ToString().Equals(separatorComboBox.Text) && (config.Separator != i)) + { + config.Separator = i; + flags |= (CfgUpdateFlags.InvokeCfgChange | CfgUpdateFlags.AnyChange); + break; + } + } + + + if (config.Header != header) + { + config.Header = header; + flags |= (CfgUpdateFlags.InvokeCfgChange | CfgUpdateFlags.AnyChange); + } + + if (config.CommonItems1 != commonItems1) + { + config.CommonItems1 = commonItems1; + flags |= (CfgUpdateFlags.InvokeCfgChange | CfgUpdateFlags.AnyChange); + } + + if (config.SelectedItems != testItems) + { + config.SelectedItems = testItems; + flags |= (CfgUpdateFlags.InvokeCfgChange | CfgUpdateFlags.AnyChange); + } + + if (config.CommonItems2 != commonItems2) + { + config.CommonItems2 = commonItems2; + flags |= (CfgUpdateFlags.InvokeCfgChange | CfgUpdateFlags.AnyChange); + } + + if (config.Footer != footer) + { + config.Footer = footer; + flags |= (CfgUpdateFlags.InvokeCfgChange | CfgUpdateFlags.AnyChange); + } + + + if ((flags & CfgUpdateFlags.InvokeCfgChange) != 0) + { + Writer.OnCfgChange(this, new CfgChangeArgs(CfgChangeCmd.CfgChange, config)); + } + + return flags; + } + + private void destinationButton_Click(object sender, EventArgs e) + { + + } + + private void headerButton_Click(object sender, EventArgs e) + { + HeaderFooterDlg dlg = new HeaderFooterDlg(true, header.Replace("~", Environment.NewLine)); + if (dlg.ShowDialog() == DialogResult.OK) + { + header = dlg.EditedText.Replace(Environment.NewLine, "~"); + } + } + + private void commonItemsButton1_Click(object sender, EventArgs e) + { + Results.Forms.ResultsConfigDlg dlg = new Results.Forms.ResultsConfigDlg() + { + MetersKind = config.MetersKind, + SelectedItems = Results.WMeterRsltItemSpec.FromStrArray(commonItems1), + AvailableItems = new List() + }; + + foreach (var v in Results.WMeterRsltItemSpec.AllItems) dlg.AvailableItems.Add(v); + + if (dlg.ShowDialog() == DialogResult.OK) + { + commonItems1 = Results.WMeterRsltItemSpec.ToStrArray(dlg.SelectedItems); + } + } + + private void commonItemsButton2_Click(object sender, EventArgs e) + { + Results.Forms.ResultsConfigDlg dlg = new Results.Forms.ResultsConfigDlg() + { + MetersKind = config.MetersKind, + SelectedItems = Results.WMeterRsltItemSpec.FromStrArray(commonItems2), + AvailableItems = new List() + }; + + foreach (var v in Results.WMeterRsltItemSpec.AllItems) dlg.AvailableItems.Add(v); + + if (dlg.ShowDialog() == DialogResult.OK) + { + commonItems2 = Results.WMeterRsltItemSpec.ToStrArray(dlg.SelectedItems); + } + } + + private void testItemsButton_Click(object sender, EventArgs e) + { + Results.Forms.ResultsConfigDlg dlg = new Results.Forms.ResultsConfigDlg(true) + { + MetersKind = config.MetersKind, + SelectedItems = Results.WMeterRsltItemSpec.FromStrArray(testItems), + AvailableItems = new List() + }; + + foreach (var v in Results.WMeterRsltItemSpec.AllItems) dlg.AvailableItems.Add(v); + + if (dlg.ShowDialog() == DialogResult.OK) + { + testItems = Results.WMeterRsltItemSpec.ToStrArray(dlg.SelectedItems); + } + } + + private void footerButton_Click(object sender, EventArgs e) + { + HeaderFooterDlg dlg = new HeaderFooterDlg(false, footer.Replace("~", Environment.NewLine)); + if (dlg.ShowDialog() == DialogResult.OK) + { + footer = dlg.EditedText.Replace(Environment.NewLine, "~"); + } + } + + #region Configuration Change Handling + + public static void OnCmdResponse(object sender, CmdResponseArgs args) + { + if (CmdResponseHandler == null) return; + try { CmdResponseHandler(sender, args); } + catch (Exception e) { log.Error("CmdResponseHandler(...) failed", e); } + } + + public static event EventHandler CmdResponseHandler; + + public void StartResponseHandler() { } + public void StopResponseHandler() { } + + #endregion Configuration Change Handling + } +} diff --git a/TestBenchFramework/BenchControl/Output/FileWriters/Xml/WriterCfgCtrl.designer.cs b/TestBenchFramework/BenchControl/Output/FileWriters/Xml/WriterCfgCtrl.designer.cs new file mode 100644 index 000000000..658fe0ddf --- /dev/null +++ b/TestBenchFramework/BenchControl/Output/FileWriters/Xml/WriterCfgCtrl.designer.cs @@ -0,0 +1,348 @@ +/// +/// Copyright (c) 2017 Sensus Metering Systems +/// +namespace TBF.BenchControl.Output.FileWriters.Xml +{ + partial class WriterCfgCtrl + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.nameTextBox = new System.Windows.Forms.TextBox(); + this.nameLabel = new System.Windows.Forms.Label(); + this.classNameLabel = new System.Windows.Forms.Label(); + this.destinationTextBox = new System.Windows.Forms.TextBox(); + this.destinationLabel = new System.Windows.Forms.Label(); + this.destinationButton = new System.Windows.Forms.Button(); + this.separatorLabel = new System.Windows.Forms.Label(); + this.separatorComboBox = new System.Windows.Forms.ComboBox(); + this.testItemsButton = new System.Windows.Forms.Button(); + this.yearFoldersLabel = new System.Windows.Forms.Label(); + this.monthFoldersLabel = new System.Windows.Forms.Label(); + this.dayFoldersLabel = new System.Windows.Forms.Label(); + this.yearFoldersComboBox = new System.Windows.Forms.ComboBox(); + this.monthFoldersComboBox = new System.Windows.Forms.ComboBox(); + this.dayFoldersComboBox = new System.Windows.Forms.ComboBox(); + this.destination2Button = new System.Windows.Forms.Button(); + this.destination2TextBox = new System.Windows.Forms.TextBox(); + this.destination2Label = new System.Windows.Forms.Label(); + this.fileNameFmtTextBox = new System.Windows.Forms.TextBox(); + this.fileNameFmtLabel = new System.Windows.Forms.Label(); + this.headerButton = new System.Windows.Forms.Button(); + this.footerButton = new System.Windows.Forms.Button(); + this.commonItemsButton1 = new System.Windows.Forms.Button(); + this.commonItemsButton2 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // nameTextBox + // + this.nameTextBox.Enabled = false; + this.nameTextBox.Location = new System.Drawing.Point(108, 31); + this.nameTextBox.Name = "nameTextBox"; + this.nameTextBox.Size = new System.Drawing.Size(146, 20); + this.nameTextBox.TabIndex = 2; + // + // nameLabel + // + this.nameLabel.AutoSize = true; + this.nameLabel.Location = new System.Drawing.Point(17, 34); + this.nameLabel.Name = "nameLabel"; + this.nameLabel.Size = new System.Drawing.Size(35, 13); + this.nameLabel.TabIndex = 1; + this.nameLabel.Text = "Name"; + // + // classNameLabel + // + this.classNameLabel.AutoSize = true; + this.classNameLabel.Location = new System.Drawing.Point(105, 9); + this.classNameLabel.Name = "classNameLabel"; + this.classNameLabel.Size = new System.Drawing.Size(83, 13); + this.classNameLabel.TabIndex = 0; + this.classNameLabel.Text = "ComonentName"; + // + // destinationTextBox + // + this.destinationTextBox.Enabled = false; + this.destinationTextBox.Location = new System.Drawing.Point(108, 52); + this.destinationTextBox.Name = "destinationTextBox"; + this.destinationTextBox.Size = new System.Drawing.Size(146, 20); + this.destinationTextBox.TabIndex = 4; + // + // destinationLabel + // + this.destinationLabel.AutoSize = true; + this.destinationLabel.Location = new System.Drawing.Point(17, 55); + this.destinationLabel.Name = "destinationLabel"; + this.destinationLabel.Size = new System.Drawing.Size(60, 13); + this.destinationLabel.TabIndex = 3; + this.destinationLabel.Text = "Destination"; + // + // destinationButton + // + this.destinationButton.Enabled = false; + this.destinationButton.Location = new System.Drawing.Point(269, 52); + this.destinationButton.Name = "destinationButton"; + this.destinationButton.Size = new System.Drawing.Size(30, 20); + this.destinationButton.TabIndex = 5; + this.destinationButton.Text = "..."; + this.destinationButton.UseVisualStyleBackColor = true; + this.destinationButton.Click += new System.EventHandler(this.destinationButton_Click); + // + // separatorLabel + // + this.separatorLabel.AutoSize = true; + this.separatorLabel.Location = new System.Drawing.Point(17, 184); + this.separatorLabel.Name = "separatorLabel"; + this.separatorLabel.Size = new System.Drawing.Size(53, 13); + this.separatorLabel.TabIndex = 17; + this.separatorLabel.Text = "Separator"; + // + // separatorComboBox + // + this.separatorComboBox.Enabled = false; + this.separatorComboBox.FormattingEnabled = true; + this.separatorComboBox.Location = new System.Drawing.Point(108, 181); + this.separatorComboBox.Name = "separatorComboBox"; + this.separatorComboBox.Size = new System.Drawing.Size(146, 21); + this.separatorComboBox.TabIndex = 18; + // + // testItemsButton + // + this.testItemsButton.Enabled = false; + this.testItemsButton.Location = new System.Drawing.Point(108, 255); + this.testItemsButton.Name = "testItemsButton"; + this.testItemsButton.Size = new System.Drawing.Size(146, 23); + this.testItemsButton.TabIndex = 21; + this.testItemsButton.Text = "Test items"; + this.testItemsButton.UseVisualStyleBackColor = true; + this.testItemsButton.Click += new System.EventHandler(this.testItemsButton_Click); + // + // yearFoldersLabel + // + this.yearFoldersLabel.AutoSize = true; + this.yearFoldersLabel.Location = new System.Drawing.Point(17, 97); + this.yearFoldersLabel.Name = "yearFoldersLabel"; + this.yearFoldersLabel.Size = new System.Drawing.Size(63, 13); + this.yearFoldersLabel.TabIndex = 9; + this.yearFoldersLabel.Text = "Year folders"; + // + // monthFoldersLabel + // + this.monthFoldersLabel.AutoSize = true; + this.monthFoldersLabel.Location = new System.Drawing.Point(17, 119); + this.monthFoldersLabel.Name = "monthFoldersLabel"; + this.monthFoldersLabel.Size = new System.Drawing.Size(71, 13); + this.monthFoldersLabel.TabIndex = 11; + this.monthFoldersLabel.Text = "Month folders"; + // + // dayFoldersLabel + // + this.dayFoldersLabel.AutoSize = true; + this.dayFoldersLabel.Location = new System.Drawing.Point(17, 141); + this.dayFoldersLabel.Name = "dayFoldersLabel"; + this.dayFoldersLabel.Size = new System.Drawing.Size(60, 13); + this.dayFoldersLabel.TabIndex = 13; + this.dayFoldersLabel.Text = "Day folders"; + // + // yearFoldersComboBox + // + this.yearFoldersComboBox.Enabled = false; + this.yearFoldersComboBox.FormattingEnabled = true; + this.yearFoldersComboBox.Location = new System.Drawing.Point(108, 94); + this.yearFoldersComboBox.Name = "yearFoldersComboBox"; + this.yearFoldersComboBox.Size = new System.Drawing.Size(146, 21); + this.yearFoldersComboBox.TabIndex = 10; + // + // monthFoldersComboBox + // + this.monthFoldersComboBox.Enabled = false; + this.monthFoldersComboBox.FormattingEnabled = true; + this.monthFoldersComboBox.Location = new System.Drawing.Point(108, 116); + this.monthFoldersComboBox.Name = "monthFoldersComboBox"; + this.monthFoldersComboBox.Size = new System.Drawing.Size(146, 21); + this.monthFoldersComboBox.TabIndex = 12; + // + // dayFoldersComboBox + // + this.dayFoldersComboBox.Enabled = false; + this.dayFoldersComboBox.FormattingEnabled = true; + this.dayFoldersComboBox.Location = new System.Drawing.Point(108, 138); + this.dayFoldersComboBox.Name = "dayFoldersComboBox"; + this.dayFoldersComboBox.Size = new System.Drawing.Size(146, 21); + this.dayFoldersComboBox.TabIndex = 14; + // + // destination2Button + // + this.destination2Button.Enabled = false; + this.destination2Button.Location = new System.Drawing.Point(269, 73); + this.destination2Button.Name = "destination2Button"; + this.destination2Button.Size = new System.Drawing.Size(30, 20); + this.destination2Button.TabIndex = 8; + this.destination2Button.Text = "..."; + this.destination2Button.UseVisualStyleBackColor = true; + // + // destination2TextBox + // + this.destination2TextBox.Enabled = false; + this.destination2TextBox.Location = new System.Drawing.Point(108, 73); + this.destination2TextBox.Name = "destination2TextBox"; + this.destination2TextBox.Size = new System.Drawing.Size(146, 20); + this.destination2TextBox.TabIndex = 7; + // + // destination2Label + // + this.destination2Label.AutoSize = true; + this.destination2Label.Location = new System.Drawing.Point(17, 76); + this.destination2Label.Name = "destination2Label"; + this.destination2Label.Size = new System.Drawing.Size(69, 13); + this.destination2Label.TabIndex = 6; + this.destination2Label.Text = "Destination 2"; + // + // fileNameFmtTextBox + // + this.fileNameFmtTextBox.Enabled = false; + this.fileNameFmtTextBox.Location = new System.Drawing.Point(108, 160); + this.fileNameFmtTextBox.Name = "fileNameFmtTextBox"; + this.fileNameFmtTextBox.Size = new System.Drawing.Size(146, 20); + this.fileNameFmtTextBox.TabIndex = 16; + // + // fileNameFmtLabel + // + this.fileNameFmtLabel.AutoSize = true; + this.fileNameFmtLabel.Location = new System.Drawing.Point(17, 163); + this.fileNameFmtLabel.Name = "fileNameFmtLabel"; + this.fileNameFmtLabel.Size = new System.Drawing.Size(84, 13); + this.fileNameFmtLabel.TabIndex = 15; + this.fileNameFmtLabel.Text = "File name format"; + // + // headerButton + // + this.headerButton.Enabled = false; + this.headerButton.Location = new System.Drawing.Point(108, 205); + this.headerButton.Name = "headerButton"; + this.headerButton.Size = new System.Drawing.Size(146, 23); + this.headerButton.TabIndex = 19; + this.headerButton.Text = "Header"; + this.headerButton.UseVisualStyleBackColor = true; + this.headerButton.Click += new System.EventHandler(this.headerButton_Click); + // + // footerButton + // + this.footerButton.Enabled = false; + this.footerButton.Location = new System.Drawing.Point(108, 305); + this.footerButton.Name = "footerButton"; + this.footerButton.Size = new System.Drawing.Size(146, 23); + this.footerButton.TabIndex = 23; + this.footerButton.Text = "Footer"; + this.footerButton.UseVisualStyleBackColor = true; + this.footerButton.Click += new System.EventHandler(this.footerButton_Click); + // + // commonItemsButton1 + // + this.commonItemsButton1.Enabled = false; + this.commonItemsButton1.Location = new System.Drawing.Point(108, 230); + this.commonItemsButton1.Name = "commonItemsButton1"; + this.commonItemsButton1.Size = new System.Drawing.Size(146, 23); + this.commonItemsButton1.TabIndex = 20; + this.commonItemsButton1.Text = "Common items 1"; + this.commonItemsButton1.UseVisualStyleBackColor = true; + this.commonItemsButton1.Click += new System.EventHandler(this.commonItemsButton1_Click); + // + // commonItemsButton2 + // + this.commonItemsButton2.Enabled = false; + this.commonItemsButton2.Location = new System.Drawing.Point(108, 280); + this.commonItemsButton2.Name = "commonItemsButton2"; + this.commonItemsButton2.Size = new System.Drawing.Size(146, 23); + this.commonItemsButton2.TabIndex = 22; + this.commonItemsButton2.Text = "Common items 2"; + this.commonItemsButton2.UseVisualStyleBackColor = true; + this.commonItemsButton2.Click += new System.EventHandler(this.commonItemsButton2_Click); + // + // WriterCfgCtrl + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.commonItemsButton2); + this.Controls.Add(this.commonItemsButton1); + this.Controls.Add(this.footerButton); + this.Controls.Add(this.headerButton); + this.Controls.Add(this.fileNameFmtTextBox); + this.Controls.Add(this.fileNameFmtLabel); + this.Controls.Add(this.destination2Button); + this.Controls.Add(this.destination2TextBox); + this.Controls.Add(this.destination2Label); + this.Controls.Add(this.dayFoldersComboBox); + this.Controls.Add(this.monthFoldersComboBox); + this.Controls.Add(this.yearFoldersComboBox); + this.Controls.Add(this.dayFoldersLabel); + this.Controls.Add(this.monthFoldersLabel); + this.Controls.Add(this.yearFoldersLabel); + this.Controls.Add(this.testItemsButton); + this.Controls.Add(this.separatorComboBox); + this.Controls.Add(this.separatorLabel); + this.Controls.Add(this.destinationButton); + this.Controls.Add(this.destinationTextBox); + this.Controls.Add(this.destinationLabel); + this.Controls.Add(this.nameTextBox); + this.Controls.Add(this.nameLabel); + this.Controls.Add(this.classNameLabel); + this.Name = "WriterCfgCtrl"; + this.Size = new System.Drawing.Size(400, 350); + this.Load += new System.EventHandler(this.WriterCfgCtrl_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox nameTextBox; + private System.Windows.Forms.Label nameLabel; + private System.Windows.Forms.Label classNameLabel; + private System.Windows.Forms.TextBox destinationTextBox; + private System.Windows.Forms.Label destinationLabel; + private System.Windows.Forms.Button destinationButton; + private System.Windows.Forms.Label separatorLabel; + private System.Windows.Forms.ComboBox separatorComboBox; + private System.Windows.Forms.Button testItemsButton; + private System.Windows.Forms.Label yearFoldersLabel; + private System.Windows.Forms.Label monthFoldersLabel; + private System.Windows.Forms.Label dayFoldersLabel; + private System.Windows.Forms.ComboBox yearFoldersComboBox; + private System.Windows.Forms.ComboBox monthFoldersComboBox; + private System.Windows.Forms.ComboBox dayFoldersComboBox; + private System.Windows.Forms.Button destination2Button; + private System.Windows.Forms.TextBox destination2TextBox; + private System.Windows.Forms.Label destination2Label; + private System.Windows.Forms.TextBox fileNameFmtTextBox; + private System.Windows.Forms.Label fileNameFmtLabel; + private System.Windows.Forms.Button headerButton; + private System.Windows.Forms.Button footerButton; + private System.Windows.Forms.Button commonItemsButton1; + private System.Windows.Forms.Button commonItemsButton2; + } +} diff --git a/TestBenchFramework/BenchControl/Output/FileWriters/Xml/WriterCfgCtrl.resx b/TestBenchFramework/BenchControl/Output/FileWriters/Xml/WriterCfgCtrl.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/TestBenchFramework/BenchControl/Output/FileWriters/Xml/WriterCfgCtrl.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/TestBenchFramework/BenchControl/TbfComponents.cs b/TestBenchFramework/BenchControl/TbfComponents.cs index 8b3bebeb4..2c79dd9e0 100644 --- a/TestBenchFramework/BenchControl/TbfComponents.cs +++ b/TestBenchFramework/BenchControl/TbfComponents.cs @@ -77,13 +77,16 @@ namespace TBF.BenchControl Factories.Add(new Network.Adapter.Factory()); Factories.Add(new Network.Camera.CLP1611.Factory()); Factories.Add(new Network.Camera.Roi.Factory()); - Factories.Add(new Output.FileWriters.Basic.FactorySingle()); /// Output.FileWriters.Basic.Single - Factories.Add(new Output.FileWriters.Basic.FactoryCompound()); /// Output.FileWriters.Basic.Compound - Factories.Add(new Output.FileWriters.Basic.FactoryHeatMeters()); /// Output.FileWriters.Basic.FactoryHeatMeters - Factories.Add(new Output.FileWriters.Enhanced.FactorySingle()); /// Output.FileWriters.Basic.Single - Factories.Add(new Output.FileWriters.Enhanced.FactoryCompound()); /// Output.FileWriters.Basic.Compound - Factories.Add(new Output.FileWriters.Enhanced.FactoryHeatMeters()); /// Output.FileWriters.Basic.HeatMeters - Factories.Add(new Elde.PressureMeter.PressureMeterFactory()); + Factories.Add(new Output.FileWriters.Basic.FactorySingle()); + Factories.Add(new Output.FileWriters.Basic.FactoryCompound()); + Factories.Add(new Output.FileWriters.Basic.FactoryHeatMeters()); + Factories.Add(new Output.FileWriters.Enhanced.FactorySingle()); + Factories.Add(new Output.FileWriters.Enhanced.FactoryCompound()); + Factories.Add(new Output.FileWriters.Enhanced.FactoryHeatMeters()); + Factories.Add(new Output.FileWriters.Xml.FactorySingle()); + Factories.Add(new Output.FileWriters.Xml.FactoryCompound()); + Factories.Add(new Output.FileWriters.Xml.FactoryHeatMeters()); + Factories.Add(new Elde.PressureMeter.PressureMeterFactory()); Factories.Add(new Elde.PressureMeterInternal.PressureMeterFactory()); Factories.Add(new Elde.Pump.PumpFactory()); Factories.Add(new Danfoss.VLT2800.PumpFactory()); diff --git a/TestBenchFramework/TBF.csproj b/TestBenchFramework/TBF.csproj index 244e710b7..4774adb7e 100644 --- a/TestBenchFramework/TBF.csproj +++ b/TestBenchFramework/TBF.csproj @@ -604,6 +604,24 @@ WriterCfgCtrl.cs + + + + + + Form + + + HeaderFooterDlg.cs + + + + + UserControl + + + WriterCfgCtrl.cs + @@ -1920,6 +1938,12 @@ WriterCfgCtrl.cs + + HeaderFooterDlg.cs + + + WriterCfgCtrl.cs + PrinterCfgCtrl.cs