diff --git a/Config/Entities/TransitionSequence.cs b/Config/Entities/TransitionSequence.cs
index d17ef434a..d1e960c6c 100644
--- a/Config/Entities/TransitionSequence.cs
+++ b/Config/Entities/TransitionSequence.cs
@@ -1,7 +1,10 @@
///
-/// Copyright (c) 2013-2015 Sensus Metering Systems
+/// Copyright (c) 2013-2018 Sensus Slovensko a.s.
///
+using System;
using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
namespace Config.Entities
{
@@ -37,5 +40,56 @@ namespace Config.Entities
foreach (var step in TransitionSteps) { result.TransitionSteps.Add(step.Clone()); }
return result;
}
- }
+
+ public virtual void Export(StreamWriter output)
+ {
+ output.WriteLine(ItemNr.ToString(CultureInfo.InvariantCulture));
+ output.WriteLine(Name);
+ output.WriteLine(Description);
+
+ foreach (var step in TransitionSteps) { step.Export(output); }
+ output.WriteLine();
+
+ output.Close();
+ }
+
+ public static TransitionSequence Import(StreamReader input)
+ {
+ TransitionSequence result = new TransitionSequence();
+
+ result.ItemNr = int.Parse(input.ReadLine(), CultureInfo.InvariantCulture);
+ result.Name = input.ReadLine();
+ result.Description = input.ReadLine();
+
+ while (true)
+ {
+ TransitionStep step = TransitionStep.Import(input, result);
+ if (step == null)
+ break;
+ else
+ result.TransitionSteps.Add(step);
+ }
+
+ return result;
+ }
+
+ public virtual string Compare(StreamReader inp)
+ {
+ System.Text.StringBuilder diff = new System.Text.StringBuilder();
+ const string fmt = "{0} = {1}\r\n (in the file {2})\r\n";
+ string ln;
+
+ ln = inp.ReadLine(); /// skip ItemNr
+ ln = inp.ReadLine(); if (ln != Name) { diff.AppendFormat(fmt, "Name", Name, ln); };
+ ln = inp.ReadLine(); if (ln != Description) { diff.AppendFormat(fmt, "Description", Description, ln); };
+
+ //foreach (var step in TransitionSteps)
+ //{
+ // string testDiff = step.Compare(inp);
+ // if (testDiff.Contains(
+ //}
+
+ return diff.ToString();
+ }
+ }
}
diff --git a/Config/Entities/TransitionStep.cs b/Config/Entities/TransitionStep.cs
index 143b525e1..6fd7c5129 100644
--- a/Config/Entities/TransitionStep.cs
+++ b/Config/Entities/TransitionStep.cs
@@ -1,8 +1,10 @@
///
-/// Copyright (c) 2013-2015, 2017 Sensus Metering Systems
+/// Copyright (c) 2013-2018 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
namespace Config.Entities
{
@@ -61,5 +63,64 @@ namespace Config.Entities
result += indent + "PumpsWithFMPct = " + PumpWithFMPcts + Environment.NewLine;
return result;
}
+
+ public virtual void Export(StreamWriter output)
+ {
+ CultureInfo ci = CultureInfo.InvariantCulture;
+
+ output.WriteLine(ItemNr.ToString(ci));
+ output.WriteLine(Duration.ToString(ci));
+ output.WriteLine(Message);
+ output.WriteLine(EndCondition);
+ output.WriteLine(ValvesOpen);
+ output.WriteLine(ValvesClose);
+ output.WriteLine(RegulValvesPct);
+ output.WriteLine(PumpWithFMPcts);
+ }
+
+ public static TransitionStep Import(StreamReader input, TransitionSequence newSequence)
+ {
+ string firstLine = input.ReadLine();
+ if (string.IsNullOrEmpty(firstLine))
+ {
+ return null;
+ }
+
+ CultureInfo ci = CultureInfo.InvariantCulture;
+ int itemNr = int.Parse(firstLine, ci);
+ TransitionStep tst = new TransitionStep(itemNr, newSequence);
+
+ tst.Duration = int.Parse(input.ReadLine(), ci);
+ tst.Message = input.ReadLine();
+ tst.EndCondition = input.ReadLine();
+ tst.ValvesOpen = input.ReadLine();
+ tst.ValvesClose = input.ReadLine();
+ tst.RegulValvesPct = input.ReadLine();
+ tst.PumpWithFMPcts = input.ReadLine();
+
+ return tst;
+ }
+
+ public virtual string Compare(StreamReader inp)
+ {
+ System.Text.StringBuilder diff = new System.Text.StringBuilder();
+ string fmt = string.Format("Step {0} : ", ItemNr) + "{0} = {1}\r\n (in the file {2})\r\n";
+ string ln;
+ CultureInfo ci = CultureInfo.InvariantCulture;
+
+ string firstLine = inp.ReadLine();
+ if (string.IsNullOrEmpty(firstLine)) return string.Format("TransitionStep {0} is missing in the compared file\r\n", ItemNr);
+
+ if (ItemNr.ToString() != firstLine) { diff.AppendFormat(fmt, "ItemNr", ItemNr, firstLine); };
+ ln = inp.ReadLine(); if (ln != Duration.ToString(ci)) { diff.AppendFormat(fmt, "Duration", Duration.ToString(ci), ln); };
+ ln = inp.ReadLine(); if (ln != Message) { diff.AppendFormat(fmt, "Message", Message, ln); };
+ ln = inp.ReadLine(); if (ln != EndCondition) { diff.AppendFormat(fmt, "EndCondition", EndCondition, ln); };
+ ln = inp.ReadLine(); if (ln != ValvesOpen) { diff.AppendFormat(fmt, "ValvesOpen", ValvesOpen, ln); };
+ ln = inp.ReadLine(); if (ln != ValvesClose) { diff.AppendFormat(fmt, "ValvesClose", ValvesClose, ln); };
+ ln = inp.ReadLine(); if (ln != RegulValvesPct) { diff.AppendFormat(fmt, "RegulValvesPct", RegulValvesPct, ln); };
+ ln = inp.ReadLine(); if (ln != PumpWithFMPcts) { diff.AppendFormat(fmt, "PumpWithFMPcts", PumpWithFMPcts, ln); };
+
+ return diff.ToString();
+ }
}
}
diff --git a/Config/Entities/VirtualBenchSequence.cs b/Config/Entities/VirtualBenchSequence.cs
index 151d8c20c..44171e6b7 100644
--- a/Config/Entities/VirtualBenchSequence.cs
+++ b/Config/Entities/VirtualBenchSequence.cs
@@ -1,8 +1,9 @@
///
-/// Copyright (c) 2013-2015 Sensus Metering Systems
+/// Copyright (c) 2013-2018 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
+using System.IO;
namespace Config.Entities
{
@@ -35,5 +36,24 @@ namespace Config.Entities
foreach (var step in VirtualBenchSteps) { result.VirtualBenchSteps.Add(step.Clone()); }
return result;
}
+
+ public virtual void Export(StreamWriter output)
+ {
+ /// TODO
+ }
+
+ public static VirtualBenchSequence Import(StreamReader input)
+ {
+ VirtualBenchSequence result = new VirtualBenchSequence();
+ /// TODO
+ return result;
+ }
+
+ public virtual string Compare(StreamReader inp)
+ {
+ System.Text.StringBuilder diff = new System.Text.StringBuilder();
+ /// TODO
+ return diff.ToString();
+ }
}
}
diff --git a/Config/Properties/AssemblyInfo.cs b/Config/Properties/AssemblyInfo.cs
index 6a1140e73..c8d6440a3 100644
--- a/Config/Properties/AssemblyInfo.cs
+++ b/Config/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("2.18.1110.0")]
-[assembly: AssemblyFileVersion("2.18.1110.0")]
+[assembly: AssemblyVersion("2.18.1122.0")]
+[assembly: AssemblyFileVersion("2.18.1122.0")]
diff --git a/ResultsBrowser/Properties/AssemblyInfo.cs b/ResultsBrowser/Properties/AssemblyInfo.cs
index 1f31127f0..b7dfbffed 100644
--- a/ResultsBrowser/Properties/AssemblyInfo.cs
+++ b/ResultsBrowser/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("2.18.1115.0")]
-[assembly: AssemblyFileVersion("2.18.1115.0")]
+[assembly: AssemblyVersion("2.18.1122.0")]
+[assembly: AssemblyFileVersion("2.18.1122.0")]
diff --git a/TBF/BenchControl/TestMethods/Endurance/CycleDlg.cs b/TBF/BenchControl/TestMethods/Endurance/CycleDlg.cs
index 40290f9f6..051d5c0fb 100644
--- a/TBF/BenchControl/TestMethods/Endurance/CycleDlg.cs
+++ b/TBF/BenchControl/TestMethods/Endurance/CycleDlg.cs
@@ -177,7 +177,7 @@ namespace TBF.BenchControl.TestMethods.Endurance
seqStepsCtrl.OkBtnClicked();
}
slctdTab = tabControl.SelectedIndex;
- sharedButtons.SetEnabled(TBF.UiControls.SharedButtons.Buttons.Add, true);
+ sharedButtons.EnableButtons(TBF.UiControls.SharedButtons.Buttons.Add);
sharedButtons.DisableButtons(TBF.UiControls.SharedButtons.Buttons.Remove);
RefreshAllTabs();
}
diff --git a/TBF/Forms/TabNameDlg.Designer.cs b/TBF/Forms/TabNameDlg.Designer.cs
index 17591d262..2be8db154 100644
--- a/TBF/Forms/TabNameDlg.Designer.cs
+++ b/TBF/Forms/TabNameDlg.Designer.cs
@@ -31,69 +31,70 @@ namespace TBF.Forms
///
private void InitializeComponent()
{
- this.tabNameTextBox = new System.Windows.Forms.TextBox();
- this.okButton = new System.Windows.Forms.Button();
- this.radioButton1 = new System.Windows.Forms.RadioButton();
- this.radioButton2 = new System.Windows.Forms.RadioButton();
- this.SuspendLayout();
- //
- // tabNameTextBox
- //
- this.tabNameTextBox.Location = new System.Drawing.Point(33, 25);
- this.tabNameTextBox.Name = "tabNameTextBox";
- this.tabNameTextBox.Size = new System.Drawing.Size(145, 20);
- this.tabNameTextBox.TabIndex = 1;
- //
- // okButton
- //
- this.okButton.Location = new System.Drawing.Point(209, 18);
- this.okButton.Name = "okButton";
- this.okButton.Size = new System.Drawing.Size(85, 33);
- this.okButton.TabIndex = 2;
- this.okButton.Text = "OK";
- this.okButton.UseVisualStyleBackColor = true;
- this.okButton.Click += new System.EventHandler(this.okButton_Click);
- //
- // radioButton1
- //
- this.radioButton1.AutoSize = true;
- this.radioButton1.Checked = true;
- this.radioButton1.Location = new System.Drawing.Point(37, 63);
- this.radioButton1.Name = "radioButton1";
- this.radioButton1.Size = new System.Drawing.Size(121, 17);
- this.radioButton1.TabIndex = 3;
- this.radioButton1.TabStop = true;
- this.radioButton1.Text = "Transition sequence";
- this.radioButton1.UseVisualStyleBackColor = true;
- //
- // radioButton2
- //
- this.radioButton2.AutoSize = true;
- this.radioButton2.Location = new System.Drawing.Point(37, 86);
- this.radioButton2.Name = "radioButton2";
- this.radioButton2.Size = new System.Drawing.Size(137, 17);
- this.radioButton2.TabIndex = 4;
- this.radioButton2.Text = "Virtual bench sequence";
- this.radioButton2.UseVisualStyleBackColor = true;
- //
- // TabNameDlg
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(316, 122);
- this.Controls.Add(this.radioButton2);
- this.Controls.Add(this.radioButton1);
- this.Controls.Add(this.okButton);
- this.Controls.Add(this.tabNameTextBox);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
- this.MaximizeBox = false;
- this.MinimizeBox = false;
- this.Name = "TabNameDlg";
- this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
- this.Text = "TabName";
- this.Load += new System.EventHandler(this.TabNameDlg_Load);
- this.ResumeLayout(false);
- this.PerformLayout();
+ this.tabNameTextBox = new System.Windows.Forms.TextBox();
+ this.okButton = new System.Windows.Forms.Button();
+ this.radioButton1 = new System.Windows.Forms.RadioButton();
+ this.radioButton2 = new System.Windows.Forms.RadioButton();
+ this.SuspendLayout();
+ //
+ // tabNameTextBox
+ //
+ this.tabNameTextBox.Location = new System.Drawing.Point(33, 25);
+ this.tabNameTextBox.Name = "tabNameTextBox";
+ this.tabNameTextBox.Size = new System.Drawing.Size(145, 20);
+ this.tabNameTextBox.TabIndex = 1;
+ //
+ // okButton
+ //
+ this.okButton.Location = new System.Drawing.Point(209, 18);
+ this.okButton.Name = "okButton";
+ this.okButton.Size = new System.Drawing.Size(85, 33);
+ this.okButton.TabIndex = 2;
+ this.okButton.Text = "OK";
+ this.okButton.UseVisualStyleBackColor = true;
+ this.okButton.Click += new System.EventHandler(this.okButton_Click);
+ //
+ // radioButton1
+ //
+ this.radioButton1.AutoSize = true;
+ this.radioButton1.Checked = true;
+ this.radioButton1.Location = new System.Drawing.Point(37, 63);
+ this.radioButton1.Name = "radioButton1";
+ this.radioButton1.Size = new System.Drawing.Size(121, 17);
+ this.radioButton1.TabIndex = 3;
+ this.radioButton1.TabStop = true;
+ this.radioButton1.Text = "Transition sequence";
+ this.radioButton1.UseVisualStyleBackColor = true;
+ //
+ // radioButton2
+ //
+ this.radioButton2.AutoSize = true;
+ this.radioButton2.Location = new System.Drawing.Point(37, 86);
+ this.radioButton2.Name = "radioButton2";
+ this.radioButton2.Size = new System.Drawing.Size(137, 17);
+ this.radioButton2.TabIndex = 4;
+ this.radioButton2.Text = "Virtual bench sequence";
+ this.radioButton2.UseVisualStyleBackColor = true;
+ //
+ // TabNameDlg
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(316, 122);
+ this.Controls.Add(this.radioButton2);
+ this.Controls.Add(this.radioButton1);
+ this.Controls.Add(this.okButton);
+ this.Controls.Add(this.tabNameTextBox);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "TabNameDlg";
+ this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "TabName";
+ this.Load += new System.EventHandler(this.TabNameDlg_Load);
+ this.ResumeLayout(false);
+ this.PerformLayout();
}
diff --git a/TBF/ProcedureDlg.cs b/TBF/ProcedureDlg.cs
index 889f520fb..c6da1dce0 100644
--- a/TBF/ProcedureDlg.cs
+++ b/TBF/ProcedureDlg.cs
@@ -1851,7 +1851,14 @@ namespace TBF
selectedTab == ProcedureTabs.Process ||
selectedTab == ProcedureTabs.Parameters;
- sharedButtons.SetEnabled(SharedButtons.Buttons.Add, isMetr12ProcOrParams);
+ if (isMetr12ProcOrParams)
+ {
+ sharedButtons.EnableButtons(SharedButtons.Buttons.Add);
+ }
+ else
+ {
+ sharedButtons.DisableButtons(SharedButtons.Buttons.Add);
+ }
//bool removeBtnEnabled = (selectedTab != ProcedureTabs.General &&
// selectedTab != ProcedureTabs.History &&
diff --git a/TBF/Properties/AssemblyInfo.cs b/TBF/Properties/AssemblyInfo.cs
index 53a4f12e1..5ea85298d 100644
--- a/TBF/Properties/AssemblyInfo.cs
+++ b/TBF/Properties/AssemblyInfo.cs
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
-[assembly: AssemblyVersion("2.18.1120.0")]
-[assembly: AssemblyFileVersion("2.18.1120.0")]
+[assembly: AssemblyVersion("2.18.1122.0")]
+[assembly: AssemblyFileVersion("2.18.1122.0")]
diff --git a/TBF/Resources/Strings.Designer.cs b/TBF/Resources/Strings.Designer.cs
index e24d7211d..c98d09427 100644
--- a/TBF/Resources/Strings.Designer.cs
+++ b/TBF/Resources/Strings.Designer.cs
@@ -798,6 +798,15 @@ namespace TBF.Resources {
}
}
+ ///
+ /// Looks up a localized string similar to Compare.
+ ///
+ internal static string Compare {
+ get {
+ return ResourceManager.GetString("Compare", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Component.
///
@@ -1581,6 +1590,15 @@ namespace TBF.Resources {
}
}
+ ///
+ /// Looks up a localized string similar to Export.
+ ///
+ internal static string Export {
+ get {
+ return ResourceManager.GetString("Export", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to NOK.
///
@@ -1932,6 +1950,15 @@ namespace TBF.Resources {
}
}
+ ///
+ /// Looks up a localized string similar to Import.
+ ///
+ internal static string Import {
+ get {
+ return ResourceManager.GetString("Import", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Information.
///
diff --git a/TBF/Resources/Strings.resx b/TBF/Resources/Strings.resx
index 8c5494d41..098dab46b 100644
--- a/TBF/Resources/Strings.resx
+++ b/TBF/Resources/Strings.resx
@@ -1918,4 +1918,13 @@
Previous
+
+ Compare
+
+
+ Export
+
+
+ Import
+
\ No newline at end of file
diff --git a/TBF/TransitionsDlg.cs b/TBF/TransitionsDlg.cs
index 1852f0b29..654703f6e 100644
--- a/TBF/TransitionsDlg.cs
+++ b/TBF/TransitionsDlg.cs
@@ -12,6 +12,7 @@ using TBF.BenchControl.Generic;
using TBF.BenchControl.GenericDevices;
using TBF.Resources;
using TBF.UiControls;
+using System.IO;
namespace TBF
{
@@ -57,6 +58,7 @@ namespace TBF
IList seqStepsCtrls;
+
public TransitionsDlg()
{
/// Detect display setting: 100% = 96dpi, 125% = 120dpi, 150% = 144dpi.
@@ -68,8 +70,9 @@ namespace TBF
sharedButtons.RequiredGroupMembership = new Users.Grp.GID[] { Users.Grp.GID.Metrologists };
sharedButtons.OptionalButtons = SharedButtons.Buttons.Add | SharedButtons.Buttons.Remove |
SharedButtons.Buttons.Up | SharedButtons.Buttons.Down |
- SharedButtons.Buttons.NewTab | SharedButtons.Buttons.RenameTab |
- SharedButtons.Buttons.RemoveTab;
+ SharedButtons.Buttons.Export | SharedButtons.Buttons.Import |
+ SharedButtons.Buttons.Compare | SharedButtons.Buttons.NewTab |
+ SharedButtons.Buttons.RenameTab | SharedButtons.Buttons.RemoveTab;
sharedButtons.Unlocked += Unlocked;
sharedButtons.OKClicked += okButton_Click;
sharedButtons.CancelClicked += cancelButton_Click;
@@ -77,6 +80,9 @@ namespace TBF
sharedButtons.RemoveClicked += removeButton_Click;
sharedButtons.UpClicked += upButton_Click;
sharedButtons.DownClicked += downButton_Click;
+ sharedButtons.ExportClicked += exportButton_Click;
+ sharedButtons.ImportClicked += importButton_Click;
+ sharedButtons.CompareClicked += compareButton_Click;
sharedButtons.NewTabClicked += newTabButton_Click;
sharedButtons.RenameTabClicked += renameTabButton_Click;
sharedButtons.RemoveTabClicked += removeTabButton_Click;
@@ -149,7 +155,7 @@ namespace TBF
private void TransitionsDlg_Load(object sender, EventArgs e)
{
Localize();
- LoadFormPosition();
+ LoadUISettings();
/// Now refresh the content of the dialog
RefreshAllTabs();
@@ -170,6 +176,7 @@ namespace TBF
foreach (var ctrl in seqStepsCtrls) ctrl.Unlock();
}
+
private void newTabButton_Click(object sender, EventArgs e)
{
Forms.TabNameDlg dlg;
@@ -495,7 +502,7 @@ namespace TBF
Cursor.Current = Cursors.Default;
- SaveFormPosition();
+ SaveUISettings();
DialogResult = DialogResult.OK;
Close();
return;
@@ -503,13 +510,13 @@ namespace TBF
private void cancelButton_Click(object sender, EventArgs e)
{
- SaveFormPosition();
+ SaveUISettings();
DialogResult = DialogResult.Cancel;
Close();
return;
}
- private void SaveFormPosition()
+ private void SaveUISettings()
{
TBF.LocalSettings ls = Program.LocalSettings;
if (WindowState == FormWindowState.Normal)
@@ -529,13 +536,13 @@ namespace TBF
ls.Save();
}
- private void LoadFormPosition()
+ private void LoadUISettings()
{
TBF.LocalSettings ls = Program.LocalSettings;
Width = (ls.TransitionsDlgWidth > 0) ? ls.TransitionsDlgWidth : 1050;
- Height = (ls.TransitionsDlgHeight > 0) ? ls.TransitionsDlgHeight : 360;
- Left = (ls.TransitionsDlgLeft != 0) ? ls.TransitionsDlgLeft : 150;
- Top = (ls.TransitionsDlgTop != 0) ? ls.TransitionsDlgTop : 150;
+ Height = (ls.TransitionsDlgHeight > 0) ? ls.TransitionsDlgHeight : 650;
+ Left = (ls.TransitionsDlgLeft != 0) ? ls.TransitionsDlgLeft : 100;
+ Top = (ls.TransitionsDlgTop != 0) ? ls.TransitionsDlgTop : 100;
}
@@ -549,7 +556,7 @@ namespace TBF
seqStepsCtrls[slctdTab].OkBtnClicked();
}
slctdTab = tabControl.SelectedIndex;
- sharedButtons.SetEnabled(SharedButtons.Buttons.Add, true);
+ sharedButtons.EnableButtons(SharedButtons.Buttons.Add);
sharedButtons.DisableButtons(SharedButtons.Buttons.Remove);
RefreshAllTabs();
}
@@ -601,15 +608,6 @@ namespace TBF
}
}
- private void purgeStartCtrl_SelectedIndexChanged(object sender, EventArgs e)
- {
- SelectedIndexChanged(sender, e);
- }
-
- private void purgeEndCtrl_SelectedIndexChanged(object sender, EventArgs e)
- {
- SelectedIndexChanged(sender, e);
- }
///
/// Common part for three xxxListViewEx_SelectedIndexChanged event handlers
@@ -639,5 +637,62 @@ namespace TBF
UpdateButtonStates(SharedButtons.SelectedItemPos.Middle);
}
}
- }
+
+
+ private void exportButton_Click(object sender, EventArgs e)
+ {
+ TabPage tabPage = tabControl.SelectedTab;
+ TransitionSequence transitionSeq = tabPage.Tag as TransitionSequence;
+ VirtualBenchSequence virtualBenchSeq = tabPage.Tag as VirtualBenchSequence;
+
+ SaveFileDialog dlg = new SaveFileDialog();
+ if (dlg.ShowDialog() == DialogResult.OK)
+ {
+ if (transitionSeq != null)
+ {
+ /// export transition sequence
+ transitionSeq.Export(new StreamWriter(dlg.FileName, false, System.Text.Encoding.UTF8));
+ }
+ else if (virtualBenchSeq != null)
+ {
+ /// export virtual sequence
+ virtualBenchSeq.Export(new StreamWriter(dlg.FileName, false, System.Text.Encoding.UTF8));
+ }
+ }
+ }
+
+ private void importButton_Click(object sender, EventArgs e)
+ {
+ OpenFileDialog dlg = new OpenFileDialog();
+
+ if (dlg.ShowDialog() != DialogResult.OK) return;
+
+ /// Import a procedure from a file
+ int tabId = TransitionSequences.Count + VirtualBenchSequences.Count;
+ TransitionSequence newSequence = TransitionSequence.Import(new StreamReader(dlg.FileName, System.Text.Encoding.UTF8));
+ newSequence.ItemNr = tabId;
+
+ /// Find an unused procedure name
+ string newName;
+ bool nameUsed;
+ for (int nameId = 1; true; nameId++)
+ {
+ newName = string.Format("{0} imported{1}", newSequence.Name, (nameId == 1) ? string.Empty : string.Format("({0})", nameId));
+ nameUsed = false;
+ foreach (var seq in TransitionSequences) if (seq.Name.Equals(newName)) nameUsed = true;
+ if (!nameUsed) break;
+ }
+ newSequence.Name = newName;
+
+ TransitionSequences.Add(newSequence);
+ AddTransitionSeqTab(newSequence);
+ seqStepsCtrls[tabId].Unlock();
+ tabControl.SelectTab(tabId);
+ }
+
+ private void compareButton_Click(object sender, EventArgs e)
+ {
+ MessageBox.Show("Comparing sequences in not implemented yet");
+ }
+ }
}
diff --git a/TBF/UiControls/SharedButtons.Designer.cs b/TBF/UiControls/SharedButtons.Designer.cs
index 3847a479e..2013b72e3 100644
--- a/TBF/UiControls/SharedButtons.Designer.cs
+++ b/TBF/UiControls/SharedButtons.Designer.cs
@@ -151,7 +151,7 @@ namespace TBF.UiControls
// newTabButton
//
this.newTabButton.ImeMode = System.Windows.Forms.ImeMode.NoControl;
- this.newTabButton.Location = new System.Drawing.Point(10, 394);
+ this.newTabButton.Location = new System.Drawing.Point(10, 565);
this.newTabButton.Name = "newTabButton";
this.newTabButton.Size = new System.Drawing.Size(80, 40);
this.newTabButton.TabIndex = 9;
@@ -162,7 +162,7 @@ namespace TBF.UiControls
// renameTabButton
//
this.renameTabButton.ImeMode = System.Windows.Forms.ImeMode.NoControl;
- this.renameTabButton.Location = new System.Drawing.Point(10, 437);
+ this.renameTabButton.Location = new System.Drawing.Point(10, 608);
this.renameTabButton.Name = "renameTabButton";
this.renameTabButton.Size = new System.Drawing.Size(80, 40);
this.renameTabButton.TabIndex = 10;
@@ -173,7 +173,7 @@ namespace TBF.UiControls
// removeTabButton
//
this.removeTabButton.ImeMode = System.Windows.Forms.ImeMode.NoControl;
- this.removeTabButton.Location = new System.Drawing.Point(10, 480);
+ this.removeTabButton.Location = new System.Drawing.Point(10, 651);
this.removeTabButton.Name = "removeTabButton";
this.removeTabButton.Size = new System.Drawing.Size(80, 40);
this.removeTabButton.TabIndex = 11;
@@ -184,7 +184,7 @@ namespace TBF.UiControls
// moreButton
//
this.moreButton.ImeMode = System.Windows.Forms.ImeMode.NoControl;
- this.moreButton.Location = new System.Drawing.Point(10, 523);
+ this.moreButton.Location = new System.Drawing.Point(10, 694);
this.moreButton.Name = "moreButton";
this.moreButton.Size = new System.Drawing.Size(80, 40);
this.moreButton.TabIndex = 12;
@@ -246,7 +246,7 @@ namespace TBF.UiControls
this.Controls.Add(this.cancelButton);
this.Controls.Add(this.okButton);
this.Name = "SharedButtons";
- this.Size = new System.Drawing.Size(100, 649);
+ this.Size = new System.Drawing.Size(100, 805);
this.Load += new System.EventHandler(this.SharedDlgButtons_Load);
this.ResumeLayout(false);
diff --git a/TBF/UiControls/SharedButtons.cs b/TBF/UiControls/SharedButtons.cs
index c6fbe7ffb..dc75fe0ab 100644
--- a/TBF/UiControls/SharedButtons.cs
+++ b/TBF/UiControls/SharedButtons.cs
@@ -17,23 +17,23 @@ namespace TBF.UiControls
public enum Buttons
{
None = 0,
- OK = 1, /// always visible, text = 'Close' when locked
- Cancel = 2, /// always visible
- Add = 4, /// optional
- Remove = 8, /// optional
- Up = 0x10, /// optional
- Down = 0x20, /// optional
- Edit = 0x40, /// optional
- Copy = 0x80, /// optional
- NewTab = 0x100, /// optional
- RenameTab = 0x200, /// optional
- RemoveTab = 0x400, /// optional
- More = 0x800, /// optional
- Export = 0x1000, /// optional
- Import = 0x2000, /// optional
- Compare = 0x4000, /// optional
+ Add = (1 << 0), /// optional
+ Remove = (1 << 1), /// optional
+ Up = (1 << 2), /// optional
+ Down = (1 << 3), /// optional
+ Edit = (1 << 4), /// optional
+ Copy = (1 << 5), /// optional
+ Export = (1 << 6), /// optional
+ Import = (1 << 7), /// optional
+ Compare = (1 << 8), /// optional
+ NewTab = (1 << 9), /// optional
+ RenameTab = (1 << 10), /// optional
+ RemoveTab = (1 << 11), /// optional
+ More = (1 << 12), /// optional
}
+ readonly System.Windows.Forms.Button[] buttonCtrls;
+
///
/// Optional buttons are Add, Remove, Up, Down, Edit and Copy.
/// OK and Cancel buttons are always visible (after unlock), but not always enabled.
@@ -47,6 +47,8 @@ namespace TBF.UiControls
}
LockState lockState;
+ bool buttonsRepositionsed;
+
public bool MoreActive;
public int MoreButtonTop;
@@ -72,12 +74,19 @@ namespace TBF.UiControls
///
public SharedButtons()
{
+ InitializeComponent();
originalUser = Users.GlobalData.CurrentUser;
lockState = LockState.Locked;
MoreActive = false;
- OptionalButtons = Buttons.None;
RequiredGroupMembership = null;
- InitializeComponent();
+ buttonCtrls = new System.Windows.Forms.Button[]
+ {
+ addButton, removeButton, upButton, downButton, editButton, copyButton,
+ exportButton, importButton, compareButton,
+ newTabButton, renameTabButton, removeTabButton, moreButton,
+ };
+ OptionalButtons = Buttons.None;
+ buttonsRepositionsed = false;
}
///
@@ -96,120 +105,88 @@ namespace TBF.UiControls
downButton.Text = Strings.DownBtnText;
editButton.Text = Strings.EditBtnText;
copyButton.Text = Strings.CopyBtnText;
+ exportButton.Text = Strings.Export;
+ importButton.Text = Strings.Import;
+ compareButton.Text = Strings.Compare;
newTabButton.Text = Strings.NewTabBtnText;
renameTabButton.Text = Strings.RenameTabBtnText;
removeTabButton.Text = Strings.RemoveTabBtnText;
moreButton.Text = Strings.MoreBtnText;
cancelButton.Hide();
- addButton.Hide();
- removeButton.Hide();
- upButton.Hide();
- downButton.Hide();
- editButton.Hide();
- copyButton.Hide();
- newTabButton.Hide();
- renameTabButton.Hide();
- removeTabButton.Hide();
- moreButton.Hide();
- exportButton.Hide();
- importButton.Hide();
- compareButton.Hide();
-
- /// Reposition 'Edit' and 'Copy" buttons in case both 'Up' and 'Down' are hidden
- if (((OptionalButtons & Buttons.Up) == 0) &&
- ((OptionalButtons & Buttons.Down) == 0))
- {
- editButton.Top = upButton.Top;
- copyButton.Top = downButton.Top;
- }
-
- /// Reposition Tab-related button in case both 'Edit' and 'Copy" are hidden
- if (((OptionalButtons & Buttons.Edit) == 0) &&
- ((OptionalButtons & Buttons.Copy) == 0))
- {
- removeTabButton.Top = newTabButton.Top + 15;
- newTabButton.Top = editButton.Top + 15;
- renameTabButton.Top = copyButton.Top + 15;
- }
-
- if ((OptionalButtons & Buttons.Add) == 0 &&
- (OptionalButtons & Buttons.Remove) == 0 &&
- (OptionalButtons & Buttons.Up) == 0 &&
- (OptionalButtons & Buttons.Down) == 0 &&
- (OptionalButtons & Buttons.Edit) == 0 &&
- (OptionalButtons & Buttons.Copy) == 0 &&
- (OptionalButtons & Buttons.NewTab) == 0 &&
- (OptionalButtons & Buttons.RenameTab) == 0 &&
- (OptionalButtons & Buttons.RemoveTab) == 0)
- {
- moreButton.Top = MoreButtonTop;
- }
-#if DEBUG
- //unlockBtn_Click(sender, e);
-#endif
+ ShowOrHideButtons((Buttons)0x7FFFFFFF, false);
}
+
+ void RepositionButtons(Buttons enabledButtons)
+ {
+ if (!buttonsRepositionsed)
+ {
+ buttonsRepositionsed = true; /// Reposition buttons once
+
+ int spacing = unlockButton.Height + 3;
+ const int ExtraSpacing = 15;
+ int nextTop = cancelButton.Top + spacing + ExtraSpacing;
+
+ for (int i = 0; i < buttonCtrls.Length; i++)
+ {
+ Buttons btn = (Buttons)(1 << i);
+ if ((OptionalButtons & btn) != 0)
+ {
+ buttonCtrls[i].Top = nextTop;
+ nextTop += spacing + ((btn == Buttons.Down || btn == Buttons.Compare || btn == Buttons.RemoveTab) ? ExtraSpacing : 0);
+ }
+ }
+ }
+ }
+
+ void ShowOrHideButtons(Buttons selectedButtons, bool value)
+ {
+ for (int i = 0; i < buttonCtrls.Length; i++)
+ {
+ if ((selectedButtons & (Buttons)(1 << i)) != 0) buttonCtrls[i].Visible = value;
+ }
+ }
+
+ public void EnableOrDisableButtons(Buttons selectedButtons, bool value)
+ {
+ for (int i = 0; i < buttonCtrls.Length; i++)
+ {
+ if ((selectedButtons & (Buttons)(1 << i)) != 0) buttonCtrls[i].Enabled = value;
+ }
+ }
+
+
///
/// Update the visibility of buttons and OK button text when the dialog is unlocked
///
public void UnlockButtons()
{
+ RepositionButtons(OptionalButtons);
+
unlockButton.Enabled = false;
okButton.Text = Strings.OkBtnText;
- cancelButton.Show();
- if ((OptionalButtons & Buttons.Add) != 0) addButton.Show();
- if ((OptionalButtons & Buttons.Remove) != 0) removeButton.Show();
- if ((OptionalButtons & Buttons.Up) != 0) upButton.Show();
- if ((OptionalButtons & Buttons.Down) != 0) downButton.Show();
- if ((OptionalButtons & Buttons.Edit) != 0) editButton.Show();
- if ((OptionalButtons & Buttons.Copy) != 0) copyButton.Show();
- if ((OptionalButtons & Buttons.NewTab) != 0) newTabButton.Show();
- if ((OptionalButtons & Buttons.RenameTab) != 0) renameTabButton.Show();
- if ((OptionalButtons & Buttons.RemoveTab) != 0) removeTabButton.Show();
- if ((OptionalButtons & Buttons.More) != 0) moreButton.Show();
- if ((OptionalButtons & Buttons.Export) != 0) exportButton.Show();
- if ((OptionalButtons & Buttons.Import) != 0) importButton.Show();
- if ((OptionalButtons & Buttons.Compare) != 0) compareButton.Show();
-
+ cancelButton.Visible = true;
+ ShowOrHideButtons(OptionalButtons, true);
lockState = LockState.Unlocked;
}
///
/// Enable specified buttons
///
- public void EnableButtons(Buttons buttons)
+ public void EnableButtons(Buttons selectedButtons)
{
- SetEnabled(buttons, true);
+ EnableOrDisableButtons(selectedButtons, true);
}
///
/// Disable specified buttons
///
- public void DisableButtons(Buttons buttons)
+ public void DisableButtons(Buttons selectedButtons)
{
- SetEnabled(buttons, false);
+ EnableOrDisableButtons(selectedButtons, false);
}
- public void SetEnabled(Buttons buttons, bool value)
- {
- if ((buttons & Buttons.OK) != 0) okButton.Enabled = value;
- if ((buttons & Buttons.Cancel) != 0) cancelButton.Enabled = value;
- if ((buttons & Buttons.Add) != 0) addButton.Enabled = value;
- if ((buttons & Buttons.Remove) != 0) removeButton.Enabled = value;
- if ((buttons & Buttons.Up) != 0) upButton.Enabled = value;
- if ((buttons & Buttons.Down) != 0) downButton.Enabled = value;
- if ((buttons & Buttons.Edit) != 0) editButton.Enabled = value;
- if ((buttons & Buttons.Copy) != 0) copyButton.Enabled = value;
- if ((buttons & Buttons.NewTab) != 0) newTabButton.Enabled = value;
- if ((buttons & Buttons.RenameTab) != 0) renameTabButton.Enabled = value;
- if ((buttons & Buttons.RemoveTab) != 0) removeTabButton.Enabled = value;
- if ((buttons & Buttons.More) != 0) moreButton.Enabled = value;
- if ((buttons & Buttons.Export) != 0) exportButton.Enabled = value;
- if ((buttons & Buttons.Import) != 0) importButton.Enabled = value;
- if ((buttons & Buttons.Compare) != 0) compareButton.Enabled = value;
- }
-
void RestoreUser()
{
Users.GlobalData.CurrentUser = originalUser;
@@ -305,11 +282,11 @@ namespace TBF.UiControls
private void downBtn_Click(object s, EventArgs e) { if (DownClicked != null) DownClicked(s, e); }
private void editBtn_Click(object s, EventArgs e) { if (EditClicked != null) EditClicked(s, e); }
private void copyBtn_Click(object s, EventArgs e) { if (CopyClicked != null) CopyClicked(s, e); }
- private void newTabButton_Click(object s, EventArgs e) { if (NewTabClicked != null) NewTabClicked(s, e); }
- private void renameTabButton_Click(object s, EventArgs e) { if (RenameTabClicked != null) RenameTabClicked(s, e); }
- private void removeTabButton_Click(object s, EventArgs e) { if (RemoveTabClicked != null) RemoveTabClicked(s, e); }
private void exportButton_Click(object s, EventArgs e) { if (ExportClicked != null) ExportClicked(s, e); }
private void importButton_Click(object s, EventArgs e) { if (ImportClicked != null) ImportClicked(s, e); }
private void compareButton_Click(object s, EventArgs e) { if (CompareClicked != null) CompareClicked(s, e); }
+ private void newTabButton_Click(object s, EventArgs e) { if (NewTabClicked != null) NewTabClicked(s, e); }
+ private void renameTabButton_Click(object s, EventArgs e) { if (RenameTabClicked != null) RenameTabClicked(s, e); }
+ private void removeTabButton_Click(object s, EventArgs e) { if (RemoveTabClicked != null) RemoveTabClicked(s, e); }
}
}