Yet more MainWnd, MainSeq, etc. changes,ver. 3.1.1811

This commit is contained in:
Milan Hanajik
2021-11-18 14:53:12 +01:00
parent 587f6dffd0
commit 0494054171
10 changed files with 259 additions and 209 deletions
+2 -2
View File
@@ -70,8 +70,8 @@ namespace Common
[Description("None")] None, [Description("None")] None,
[Description("Local procedures")] FromLocalDB, [Description("Local procedures")] FromLocalDB,
[Description("Shared procedures")] FromSharedDB, [Description("Shared procedures")] FromSharedDB,
[Description("Orders from Oracle DB")] OrderNrFromOracleDB, [Description("Orders from Oracle DB")] OrderFromOracleDB,
[Description("Orders from Tracing DB")] OrderNrFromTracingDB, [Description("Orders from Tracing DB")] OrderFromTracingDB,
#endif #endif
Count Count
} }
+26 -11
View File
@@ -13,47 +13,62 @@ namespace Common
public class ProcedureInfo public class ProcedureInfo
{ {
public readonly ProcedureSelection Source; public readonly ProcedureSelection Source;
public readonly string Signature; public int ItemNr;
public readonly int ItemNr;
public readonly string Name; public readonly string Name;
public readonly string Signature;
public string Variant;
public string Order;
public string Workflow;
public bool IsNative;
public ProcedureSelection ResolvedSource; /// ProcedureSelection.FromLocalDB or ProcedureSelection.FromSharedDB when Resolved==true public ProcedureSelection ResolvedSource; /// ProcedureSelection.FromLocalDB or ProcedureSelection.FromSharedDB when Resolved==true
public string ResolvedName; public string ResolvedName;
public string Order;
public string Variant;
public ProcedureInfo(ProcedureSelection source, int itemNr, string name, string signature = null, string variant = null) public ProcedureInfo(ProcedureSelection source, int itemNr, string name, string signature = null,
string variant = null, string order = null, string workflow = null)
{ {
Source = source; Source = source;
Signature = (signature == null) ? string.Empty : signature;
ItemNr = itemNr; ItemNr = itemNr;
Name = name; Name = name;
Signature = (signature == null) ? string.Empty : signature;
Variant = (variant == null) ? string.Empty : variant;
Order = order;
Workflow = workflow;
if (source == ProcedureSelection.FromLocalDB || source == ProcedureSelection.FromSharedDB) if (source == ProcedureSelection.FromLocalDB || source == ProcedureSelection.FromSharedDB)
{ {
IsNative = true;
ResolvedSource = source; ResolvedSource = source;
ResolvedName = name; ResolvedName = name;
} }
else else
{ {
IsNative = false;
ResolvedSource = ProcedureSelection.None; ResolvedSource = ProcedureSelection.None;
ResolvedName = string.Empty; ResolvedName = string.Empty;
} }
Variant = (variant == null) ? string.Empty : variant;
} }
public static string GetSignature(ProcedureSelection source, ICollection<ProcedureSelection> allSources) public static string GetSignature(ProcedureSelection source, ICollection<ProcedureSelection> allSources)
{ {
return (source == ProcedureSelection.OrderNrFromOracleDB) ? "" return (source == ProcedureSelection.OrderFromOracleDB) ? ""
: (source == ProcedureSelection.OrderNrFromTracingDB) ? "" : (source == ProcedureSelection.OrderFromTracingDB) ? ""
: (source == ProcedureSelection.FromSharedDB) ? "R" : (source == ProcedureSelection.FromSharedDB) ? "R"
: (allSources != null && allSources.Contains(ProcedureSelection.FromSharedDB)) ? "L" : ""; : (allSources != null && allSources.Contains(ProcedureSelection.FromSharedDB)) ? "L" : "";
} }
public bool IsValid
{
get {
return (ResolvedSource != ProcedureSelection.None) && !string.IsNullOrEmpty(ResolvedName);
}
}
public override string ToString() public override string ToString()
{ {
switch (Source) switch (Source)
{ {
case ProcedureSelection.OrderNrFromOracleDB: case ProcedureSelection.OrderFromOracleDB:
case ProcedureSelection.OrderNrFromTracingDB: case ProcedureSelection.OrderFromTracingDB:
return Name; return Name;
case ProcedureSelection.FromSharedDB: case ProcedureSelection.FromSharedDB:
case ProcedureSelection.FromLocalDB: case ProcedureSelection.FromLocalDB:
+3 -2
View File
@@ -44,7 +44,7 @@ namespace Results
public static BatchResults NewFromProcedure(int batchNr, int benchId, string benchName, string a1, string a2, string a3, string a4, string a5, public static BatchResults NewFromProcedure(int batchNr, int benchId, string benchName, string a1, string a2, string a3, string a4, string a5,
string user, int userNr, string programVer, Config.Entities.Procedure procedure, string user, int userNr, string programVer, Config.Entities.Procedure procedure,
WaterMeterData[] waterMeterDatas, int[] waterMeterParts, string variant, string order, WaterMeterData[] waterMeterDatas, int[] waterMeterParts, string variant, string order, string workflow,
double realDensity, double atTemperature, double buoyancy) double realDensity, double atTemperature, double buoyancy)
{ {
BatchResults d = new BatchResults(waterMeterDatas.Length); BatchResults d = new BatchResults(waterMeterDatas.Length);
@@ -66,8 +66,9 @@ namespace Results
UserNumber = userNr, UserNumber = userNr,
ProcedureName = procedure.Name, ProcedureName = procedure.Name,
ProcedureDescription = procedure.Description, ProcedureDescription = procedure.Description,
WatermetersStr = variant, WatermetersStr = (variant != null) ? variant : string.Empty,
PurchaseOrder = order, PurchaseOrder = order,
Workflow = workflow,
ProcedureRevision = procedure.Revision, ProcedureRevision = procedure.Revision,
StartTime = DateTime.Now, StartTime = DateTime.Now,
SampleDensity = realDensity, SampleDensity = realDensity,
+1
View File
@@ -24,6 +24,7 @@ namespace Results.Entities
public virtual string ProcedureName { get; set; } public virtual string ProcedureName { get; set; }
public virtual bool IsRemoteProcedure { get; set; } /// Stara Tura, not mapped to DB public virtual bool IsRemoteProcedure { get; set; } /// Stara Tura, not mapped to DB
public virtual string PurchaseOrder { get; set; } /// Stara Tura, Nanjing, not mapped to DB public virtual string PurchaseOrder { get; set; } /// Stara Tura, Nanjing, not mapped to DB
public virtual string Workflow { get; set; } /// Stara Tura, Nanjing, not mapped to DB
public virtual string ProcedureDescription { get; set; } /// CEVAK, not mapped to DB public virtual string ProcedureDescription { get; set; } /// CEVAK, not mapped to DB
public virtual int ProcedureRevision { get; set; } public virtual int ProcedureRevision { get; set; }
public virtual string WatermetersStr { get; set; } /// CEVAK, not mapped to DB public virtual string WatermetersStr { get; set; } /// CEVAK, not mapped to DB
+2 -2
View File
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number // Build Number
// Revision // Revision
// //
[assembly: AssemblyVersion("3.1.1810.0")] [assembly: AssemblyVersion("3.1.1811.0")]
[assembly: AssemblyFileVersion("3.1.1810.0")] [assembly: AssemblyFileVersion("3.1.1811.0")]
+5 -3
View File
@@ -377,7 +377,7 @@ namespace TBF.Rig.Sequences
if (selection == Selection.RestoreBatch) if (selection == Selection.RestoreBatch)
{ {
BatchRslts = CreateNewBatchResults(newBatchNr, StateMachine.Procedure, string.Empty, null); BatchRslts = CreateNewBatchResults(newBatchNr, StateMachine.Procedure);
RestoreBatchResults(TBF.UiBridge.Bridge.BatchNr, ref BatchRslts); /// pass the original batch number of the batch to be restored RestoreBatchResults(TBF.UiBridge.Bridge.BatchNr, ref BatchRslts); /// pass the original batch number of the batch to be restored
} }
else if (selection == Selection.RestoreAndFixBatch) else if (selection == Selection.RestoreAndFixBatch)
@@ -385,7 +385,7 @@ namespace TBF.Rig.Sequences
/// ///
/// Restore and fix a batch - part 1 (fix "Previous workstep is missing" error) /// Restore and fix a batch - part 1 (fix "Previous workstep is missing" error)
/// ///
BatchRslts = CreateNewBatchResults(newBatchNr, StateMachine.Procedure, string.Empty, null); BatchRslts = CreateNewBatchResults(newBatchNr, StateMachine.Procedure);
RestoreBatchResults(TBF.UiBridge.Bridge.BatchNr, ref BatchRslts); /// pass the original batch number of the batch to be restored RestoreBatchResults(TBF.UiBridge.Bridge.BatchNr, ref BatchRslts); /// pass the original batch number of the batch to be restored
for (int i = 0; i < BatchRslts.Batch.WaterMeters.Count; i++) for (int i = 0; i < BatchRslts.Batch.WaterMeters.Count; i++)
@@ -426,7 +426,9 @@ namespace TBF.Rig.Sequences
else if (selection != Selection.RestoreInterruptedSession) else if (selection != Selection.RestoreInterruptedSession)
{ {
/// This is a regular session => initialize BatchRslts /// This is a regular session => initialize BatchRslts
BatchRslts = CreateNewBatchResults(newBatchNr, StateMachine.Procedure, Bridge.SelectedProcedure.Variant, Bridge.SelectedProcedure.Order); BatchRslts = CreateNewBatchResults(newBatchNr, StateMachine.Procedure, Bridge.SelectedProcedure.Variant,
Bridge.SelectedProcedure.Order,
Bridge.SelectedProcedure.Workflow);
} }
+2 -1
View File
@@ -534,7 +534,7 @@ namespace TBF.Rig.Sequences
/// <param name="newBatchNr">New batch number</param> /// <param name="newBatchNr">New batch number</param>
/// <param name="procedure">Selected procedure</param> /// <param name="procedure">Selected procedure</param>
/// <returns>Created BatchResults</returns> /// <returns>Created BatchResults</returns>
Results.BatchResults CreateNewBatchResults(int newBatchNr, Procedure procedure, string variant, string order) Results.BatchResults CreateNewBatchResults(int newBatchNr, Procedure procedure, string variant = null, string order = null, string workflow = null)
{ {
/// ///
/// Prepare new water meters /// Prepare new water meters
@@ -621,6 +621,7 @@ namespace TBF.Rig.Sequences
waterMeterParts, waterMeterParts,
variant, variant,
order, order,
workflow,
Formulas.RealDensity(), Formulas.RealDensity(),
Formulas.AtTemperature(), Formulas.AtTemperature(),
Formulas.Buoyancy()); Formulas.Buoyancy());
+1
View File
@@ -221,6 +221,7 @@ namespace TBF.UI
this.procedureComboBox.FormattingEnabled = true; this.procedureComboBox.FormattingEnabled = true;
this.procedureComboBox.Name = "procedureComboBox"; this.procedureComboBox.Name = "procedureComboBox";
this.procedureComboBox.SelectedIndexChanged += new System.EventHandler(this.procedureComboBox_SelectedIndexChanged); this.procedureComboBox.SelectedIndexChanged += new System.EventHandler(this.procedureComboBox_SelectedIndexChanged);
this.procedureComboBox.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.procedureComboBox_KeyPress);
// //
// progressGroupBox // progressGroupBox
// //
+190 -161
View File
@@ -32,11 +32,21 @@ namespace TBF.UI
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;
public ProcedureInfo SelectedProcedure;
public Procedure CurrentProcedure;
public bool IsShutdownDisabled; public bool IsShutdownDisabled;
public bool IsShutdownPCAfterClosingTbf; public bool IsShutdownPCAfterClosingTbf;
///
/// Procedure selection
///
IList<Procedure> localProcedures; /// procedures loaded form the local DB
IList<Procedure> remoteProcedures; /// Procedures loaded from thr remote/shared DB
IList<SharedDatabase.Entities.OrderInfo> mySqlOrders; /// Production orders loaded from the production tracing DB
IList<TBF.Rig.Output.DB.SensusOracle.OrderDetails> oracleOrders; /// Production orders loaded from the Oracle DB
IList<ProcedureInfo> procedureInfos; /// Composed procedure infos
///
public ProcedureInfo SelectedProcedure;
public Procedure CurrentProcedure;
/// <summary> /// <summary>
/// This dialog is shown when TBF program is shutting down /// This dialog is shown when TBF program is shutting down
/// </summary> /// </summary>
@@ -105,16 +115,18 @@ namespace TBF.UI
Program.Version, Program.Version,
TBF.DB.CurrentBench.BenchName, TBF.DB.CurrentBench.BenchName,
TBF.DB.CurrentBench.IsRealBench ? "" : Strings._offline); TBF.DB.CurrentBench.IsRealBench ? "" : Strings._offline);
///
localProcedures = new List<Procedure>();
remoteProcedures = new List<Procedure>();
mySqlOrders = new List<SharedDatabase.Entities.OrderInfo>();
oracleOrders = new List<Rig.Output.DB.SensusOracle.OrderDetails>();
procedureInfos = new List<ProcedureInfo>();
SelectedProcedure = null;
CurrentProcedure = null;
///
/// Customize menu items /// Customize menu items
/// ///
graphsToolStripMenuItem.Text = Strings.Graphs;
eventLogsTSMenuItem.Text = Strings.Event_logs;
calendarTSMenuItem.Text = Strings.Calendar;
settingsTSMenuItem.Text = Strings.Settings;
optoHeadsToolStripMenuItem.Text = Strings.Optical_heads;
clearCountersToolStripMenuItem.Text = Strings.Clear_counters;
helpTSMenuItem.Text = Strings.Help;
#if CAMERA #if CAMERA
/// Add 'Camera' menu item /// Add 'Camera' menu item
cameraTSMItem = new System.Windows.Forms.ToolStripMenuItem(); cameraTSMItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -138,6 +150,27 @@ namespace TBF.UI
/// Load the list of components from the database /// Load the list of components from the database
var session = TBF.DB.CreateSession(DBKind.Config); var session = TBF.DB.CreateSession(DBKind.Config);
cmpntEntities = session.QueryOver<Config.Entities.Component>().OrderBy(x => x.ItemNr).Asc.List(); cmpntEntities = session.QueryOver<Config.Entities.Component>().OrderBy(x => x.ItemNr).Asc.List();
///
/// Set TBF.Data members when there is a BenchInfo or an iPerlBenchInfo component
///
foreach (var cmpnt in cmpntEntities)
{
if (cmpnt.ClassName == "DataContainer.BenchInfo")
{
var cfg = new TBF.Rig.DataContainer.BenchInfo.Factory().CmpntCfgFromCmpntEntity(cmpnt)
as TBF.Rig.DataContainer.BenchInfo.ComponentCfg;
TBF.Data.SetData(cfg.WaterMetersCount, cfg.CompoundMetersCount, cfg.LinesCount);
break;
}
else if (cmpnt.ClassName == "DataContainer.iPerlBenchInfo")
{
var cfg = new TBF.Rig.DataContainer.iPerlBenchInfo.Factory().CmpntCfgFromCmpntEntity(cmpnt)
as TBF.Rig.DataContainer.iPerlBenchInfo.ComponentCfg;
TBF.Data.SetData(cfg.WaterMetersCount, cfg.CompoundMetersCount, cfg.LinesCount);
break;
}
}
} }
catch (Exception) catch (Exception)
{ {
@@ -145,27 +178,6 @@ namespace TBF.UI
cmpntEntities = new List<Config.Entities.Component>(); cmpntEntities = new List<Config.Entities.Component>();
} }
///
/// Set TBF.Data members when there is a BenchInfo or an iPerlBenchInfo component
///
foreach (var cmpnt in cmpntEntities)
{
if (cmpnt.ClassName == "DataContainer.BenchInfo")
{
var cfg = new TBF.Rig.DataContainer.BenchInfo.Factory().CmpntCfgFromCmpntEntity(cmpnt)
as TBF.Rig.DataContainer.BenchInfo.ComponentCfg;
TBF.Data.SetData(cfg.WaterMetersCount, cfg.CompoundMetersCount, cfg.LinesCount);
break;
}
else if (cmpnt.ClassName == "DataContainer.iPerlBenchInfo")
{
var cfg = new TBF.Rig.DataContainer.iPerlBenchInfo.Factory().CmpntCfgFromCmpntEntity(cmpnt)
as TBF.Rig.DataContainer.iPerlBenchInfo.ComponentCfg;
TBF.Data.SetData(cfg.WaterMetersCount, cfg.CompoundMetersCount, cfg.LinesCount);
break;
}
}
Rig.StateMachine.MachineState = TBF.DB.CurrentBench.IsRealBench ? Rig.MachineState.StartingUp : Rig.MachineState.Disabled; Rig.StateMachine.MachineState = TBF.DB.CurrentBench.IsRealBench ? Rig.MachineState.StartingUp : Rig.MachineState.Disabled;
/// ///
if (Rig.StateMachine.MachineState == Rig.MachineState.StartingUp) if (Rig.StateMachine.MachineState == Rig.MachineState.StartingUp)
@@ -179,8 +191,8 @@ namespace TBF.UI
string msg; string msg;
Rig.GenericDevices.IBenchInfo benchInfo = Rig.Sequences.ProcessData.BenchInfo; Rig.GenericDevices.IBenchInfo benchInfo = Rig.Sequences.ProcessData.BenchInfo;
bool sharedDBUsed = benchInfo != null ? benchInfo.Sources.Contains(ProcedureSelection.FromSharedDB) : false; bool sharedDBUsed = benchInfo != null ? benchInfo.Sources.Contains(ProcedureSelection.FromSharedDB) : false;
bool oracleDBUsed = benchInfo != null ? benchInfo.Sources.Contains(ProcedureSelection.OrderNrFromOracleDB) : false; bool oracleDBUsed = benchInfo != null ? benchInfo.Sources.Contains(ProcedureSelection.OrderFromOracleDB) : false;
bool tracingDBUsed = benchInfo != null ? benchInfo.Sources.Contains(ProcedureSelection.OrderNrFromTracingDB) : false; bool tracingDBUsed = benchInfo != null ? benchInfo.Sources.Contains(ProcedureSelection.OrderFromTracingDB) : false;
if (sharedDBUsed && !Rig.StateMachine.IsRemoteDBCompatible(out msg)) if (sharedDBUsed && !Rig.StateMachine.IsRemoteDBCompatible(out msg))
{ {
@@ -228,7 +240,15 @@ namespace TBF.UI
void Localize() void Localize()
{ {
procedureGroupBox.Text = Strings.Procedure; graphsToolStripMenuItem.Text = Strings.Graphs;
eventLogsTSMenuItem.Text = Strings.Event_logs;
calendarTSMenuItem.Text = Strings.Calendar;
settingsTSMenuItem.Text = Strings.Settings;
optoHeadsToolStripMenuItem.Text = Strings.Optical_heads;
clearCountersToolStripMenuItem.Text = Strings.Clear_counters;
helpTSMenuItem.Text = Strings.Help;
procedureGroupBox.Text = Strings.Procedure;
activityGroupBox.Text = Strings.Activity; activityGroupBox.Text = Strings.Activity;
progressGroupBox.Text = Strings.Progress; progressGroupBox.Text = Strings.Progress;
} }
@@ -450,18 +470,18 @@ namespace TBF.UI
/// </summary> /// </summary>
private void MainWnd_KeyPress(object sender, KeyPressEventArgs e) private void MainWnd_KeyPress(object sender, KeyPressEventArgs e)
{ {
#if BADGER_MALA_TRAT || BADGER_STREDNA_TRAT || BADGER_VELKA_TRAT || GENESIS || CEVAK_200 || TURA_SPECIAL #if BADGER_MALA_TRAT || BADGER_STREDNA_TRAT || BADGER_VELKA_TRAT || GENESIS || CEVAK_200 || TURA_SPECIAL || TURA_IPERL || TURA_IPERL_NEW
/// Do nothing = do not process keys /// Do nothing = do not process keys
#else #else
//if (BenchControlPanel != null && BenchControlPanel.ProcessKey(e.KeyChar)) if (BenchControlPanel != null && BenchControlPanel.ProcessKey(e.KeyChar))
//{ {
// e.Handled = true; e.Handled = true;
// log.WarnFormat("'{0}' key pressed, handled by BenchControlPanel", e.KeyChar); log.WarnFormat("'{0}' key pressed, handled by BenchControlPanel", e.KeyChar);
//} }
//else else
//{ {
// log.WarnFormat("'{0}' key pressed, not handled", e.KeyChar); log.WarnFormat("'{0}' key pressed, not handled", e.KeyChar);
//} }
#endif #endif
} }
@@ -587,9 +607,15 @@ namespace TBF.UI
procedureComboBox.Enabled = ((args.Flags & ButtonsEtc.ProcedureCmbBoxEn) != 0); procedureComboBox.Enabled = ((args.Flags & ButtonsEtc.ProcedureCmbBoxEn) != 0);
optoHeadsToolStripMenuItem.Enabled = ((args.Flags & ButtonsEtc.ProcedureCmbBoxEn) != 0); optoHeadsToolStripMenuItem.Enabled = ((args.Flags & ButtonsEtc.ProcedureCmbBoxEn) != 0);
if (procedureComboBox.Enabled && ProceduresUpdated) if (procedureComboBox.Enabled)
{ {
ReloadProcedureComboBoxItems(); if (ProceduresUpdated) ReloadProcedureComboBoxItems();
procedureGroupBox.BackColor = Color.Yellow;
procedureComboBox.Focus();
}
else
{
procedureGroupBox.BackColor = SystemColors.Control;
} }
IsShutdownDisabled = ((args.Flags & ButtonsEtc.ProcedureCmbBoxEn) == 0); IsShutdownDisabled = ((args.Flags & ButtonsEtc.ProcedureCmbBoxEn) == 0);
@@ -703,65 +729,79 @@ namespace TBF.UI
ReloadProcedureComboBoxItems(procName); ReloadProcedureComboBoxItems(procName);
} }
IList<SharedDatabase.Entities.OrderInfo> mySqlOrders = new List<SharedDatabase.Entities.OrderInfo>();
IList<Rig.Output.DB.SensusOracle.OrderDetails> oracleOrders = new List<Rig.Output.DB.SensusOracle.OrderDetails>();
public void ReloadProcedureComboBoxItems(string procedureNameToSelect) public void ReloadProcedureComboBoxItems(string procedureNameToSelect)
{ {
/// Ensure there is at least one way to select a procedure if (!procedureComboBox.Enabled)
ICollection<ProcedureSelection> sources;
if (Rig.Sequences.ProcessData.BenchInfo == null)
{ {
sources = new ProcedureSelection[] { ProcedureSelection.FromLocalDB }; /// Test cycle in progress, reload combo box items when the session is finished
ProceduresUpdated = true;
} }
else else
{ {
bool noneOnly = true; ///
foreach (var s in Rig.Sequences.ProcessData.BenchInfo.Sources) if (s != ProcedureSelection.None) { noneOnly = false; break; } /// Ensure there is at least one source = one way to select a procedure
///
ICollection<ProcedureSelection> sources;
if (Rig.Sequences.ProcessData.BenchInfo == null)
{
sources = new ProcedureSelection[] { ProcedureSelection.FromLocalDB };
}
else
{
bool noneOnly = true;
foreach (var s in Rig.Sequences.ProcessData.BenchInfo.Sources) if (s != ProcedureSelection.None) { noneOnly = false; break; }
sources = noneOnly
? new ProcedureSelection[] { ProcedureSelection.FromLocalDB }
: Rig.Sequences.ProcessData.BenchInfo.Sources;
}
sources = noneOnly
? new ProcedureSelection[] { ProcedureSelection.FromLocalDB }
: Rig.Sequences.ProcessData.BenchInfo.Sources;
}
if (procedureComboBox.Enabled)
{
bool procedureSet = false; bool procedureSet = false;
procedureComboBox.Items.Clear(); procedureComboBox.Items.Clear();
IList<ProcedureInfo> procInfos = new List<ProcedureInfo>(); procedureInfos.Clear();
IList<Procedure> nativeProcedures = new List<Procedure>();
IList<ProcedureSelection> nativeSources = new List<ProcedureSelection>();
foreach (var src in sources) foreach (var src in sources)
{ {
string signature = ProcedureInfo.GetSignature(src, sources); string signature = ProcedureInfo.GetSignature(src, sources);
int itemNr = 1; int itemNr = 1;
if (src == ProcedureSelection.FromLocalDB || src == ProcedureSelection.FromSharedDB) if (src == ProcedureSelection.FromLocalDB)
{ {
var procedures = TBF.DB.CreateSession((src == ProcedureSelection.FromSharedDB) ? DBKind.RemoteConfig : DBKind.Config) localProcedures = TBF.DB.CreateSession(DBKind.Config)
.QueryOver<Procedure>() .QueryOver<Procedure>()
.Where(x => (x.ProcedureState == ProcedureState.Active)) .Where(x => (x.ProcedureState == ProcedureState.Active))
.OrderBy(x => x.ItemNr).Asc .OrderBy(x => x.ItemNr).Asc
.List(); .List();
foreach (var proc in procedures) foreach (var proc in localProcedures)
{ {
nativeProcedures.Add(proc); procedureInfos.Add(new ProcedureInfo(src, itemNr++, proc.Name, signature, proc.Watermeters));
nativeSources.Add(src);
procInfos.Add(new ProcedureInfo(src, itemNr++, proc.Name, signature, proc.Watermeters));
} }
} }
else if (src == ProcedureSelection.OrderNrFromOracleDB) else if (src == ProcedureSelection.FromSharedDB)
{
remoteProcedures = TBF.DB.CreateSession(DBKind.RemoteConfig)
.QueryOver<Procedure>()
.Where(x => (x.ProcedureState == ProcedureState.Active))
.OrderBy(x => x.ItemNr).Asc
.List();
foreach (var proc in remoteProcedures)
{
procedureInfos.Add(new ProcedureInfo(src, itemNr++, proc.Name, signature, proc.Watermeters));
}
}
else if (src == ProcedureSelection.OrderFromOracleDB)
{ {
oracleOrders = Rig.Sequences.ProcessData.OracleDB.ReadOrderNumbers(); oracleOrders = Rig.Sequences.ProcessData.OracleDB.ReadOrderNumbers();
foreach (var order in oracleOrders) foreach (var order in oracleOrders)
{ {
procInfos.Add(new ProcedureInfo(src, itemNr++, order.AuftragsNummer.ToString(), signature, order.VariantenCode)); procedureInfos.Add(new ProcedureInfo(src, 0, order.AuftragsNummer.ToString(), signature, order.VariantenCode, order.AuftragsNummer));
} }
} }
else if (src == ProcedureSelection.OrderNrFromTracingDB) else if (src == ProcedureSelection.OrderFromTracingDB)
{ {
try try
{ {
@@ -777,19 +817,24 @@ namespace TBF.UI
foreach (var order in mySqlOrders) foreach (var order in mySqlOrders)
{ {
procInfos.Add(new ProcedureInfo(src, itemNr++, order.POName, signature, order.VariantCode)); procedureInfos.Add(new ProcedureInfo(src, 0, order.POName, signature, order.VariantCode, order.POName, order.Workflow));
} }
} }
} }
foreach (var pInfo in procInfos) ResolveOrders(procedureInfos);
foreach (var procInfo in procedureInfos)
{ {
procedureComboBox.Items.Add(pInfo); if (procInfo.IsValid)
if (!procedureSet && (procedureNameToSelect == pInfo.Name))
{ {
procedureSet = true; procedureComboBox.Items.Add(procInfo);
procedureComboBox.Text = pInfo.ToString(); if (!procedureSet && (procedureNameToSelect == procInfo.Name))
SelectedProcedure = pInfo; {
procedureSet = true;
procedureComboBox.Text = procInfo.ToString();
SelectedProcedure = procInfo;
}
} }
} }
@@ -799,15 +844,9 @@ namespace TBF.UI
SelectedProcedure = null; SelectedProcedure = null;
} }
ResolveOrders(procInfos, nativeProcedures, nativeSources);
ProceduresUpdated = false; ProceduresUpdated = false;
if (SelectedProcedure != null) BenchControlPanel.ReloadTests(); if (SelectedProcedure != null) BenchControlPanel.ReloadTests();
}
else
{
ProceduresUpdated = true;
} }
} }
@@ -817,30 +856,49 @@ namespace TBF.UI
/// <param name="procInfos">ProcedureInfo-s that contain unresolved, as well as resolved (native) procedures</param> /// <param name="procInfos">ProcedureInfo-s that contain unresolved, as well as resolved (native) procedures</param>
/// <param name="nativeProcedures">Native procedures</param> /// <param name="nativeProcedures">Native procedures</param>
/// <param name="nativeSources">ProcedureSelection sources of native procedures (the same list items count as nativeProcedures)</param> /// <param name="nativeSources">ProcedureSelection sources of native procedures (the same list items count as nativeProcedures)</param>
void ResolveOrders(IList<ProcedureInfo> procInfos, IList<Procedure> nativeProcedures, IList<ProcedureSelection> nativeSources) void ResolveOrders(IList<ProcedureInfo> procInfos)
{ {
foreach (var pi in procInfos) foreach (var pi in procInfos)
{ {
if (pi.ResolvedSource == ProcedureSelection.None) if (!pi.IsNative)
{ {
for (int i = 0; i < nativeProcedures.Count; i++) if (pi.Source == ProcedureSelection.OrderFromTracingDB)
{ {
var np = nativeProcedures[i]; /// pi.Name is the order name (the production order number)
if (IsMatch(pi, np)) /// Production orders in the tracing DB contain test procedure names
var order = mySqlOrders.FirstOrDefault(x => x.POName == pi.Name);
var procInfo = (order == null) ? null : procInfos.FirstOrDefault(x => x.IsNative && x.Name == order.TestProcedure);
if (procInfo != null)
{ {
pi.ResolvedName = np.Name; pi.ItemNr = procInfo.ItemNr;
pi.ResolvedSource = nativeSources[i]; pi.ResolvedName = procInfo.Name;
break; pi.ResolvedSource = procInfo.Source;
}
}
else if (pi.Source == ProcedureSelection.OrderFromOracleDB)
{
/// pi.Name is the order name (the production order number)
/// Production orders in Oracle DB contain varian codes
var order = oracleOrders.FirstOrDefault(x => x.AuftragsNummer == pi.Name);
var vaco = (order == null) ? null : order.VariantenCode;
foreach (var pi2 in procInfos)
{
if (pi2.IsNative && IsMatch(pi, pi2))
{
pi.ItemNr = pi2.ItemNr;
pi.ResolvedName = pi2.Name;
pi.ResolvedSource = pi2.Source;
}
} }
} }
} }
} }
} }
bool IsMatch(ProcedureInfo procInfo, Procedure nativeProcedure) bool IsMatch(ProcedureInfo procInfoToBeResolved, ProcedureInfo nativeProcedure)
{ {
string var1 = procInfo.Variant; string var1 = procInfoToBeResolved.Variant;
string var2 = nativeProcedure.Watermeters; string var2 = nativeProcedure.Variant;
if (var2.Length == 0 || var1.Length != var2.Length) return false; if (var2.Length == 0 || var1.Length != var2.Length) return false;
@@ -854,75 +912,46 @@ namespace TBF.UI
private void procedureComboBox_SelectedIndexChanged(object sender, EventArgs e) private void procedureComboBox_SelectedIndexChanged(object sender, EventArgs e)
{ {
var benchInfo = TBF.Rig.Sequences.ProcessData.BenchInfo; foreach (var item in procedureComboBox.Items)
int separPos = procedureComboBox.Text.IndexOf(ProcSeparator); {
int orderNumber; var procInfo = item as ProcedureInfo;
if (procInfo != null && procInfo.IsValid && procInfo.ToString() == procedureComboBox.Text)
{
SelectedProcedure = procInfo;
if (benchInfo == null) BenchControlPanel.ReloadTests();
{ if (CurrentProcedure != null && CurrentProcedure.Description != null)
int procNr = int.Parse(procedureComboBox.Text.Substring(0, separPos));
string procName = procedureComboBox.Text.Substring(separPos + ProcSeparator.Length);
UpdateProcedure(procNr, procName, ProcedureSelection.FromLocalDB);
}
else if (int.TryParse(procedureComboBox.Text, out orderNumber))
{
if (benchInfo.Sources.Contains(ProcedureSelection.OrderNrFromTracingDB))
{
var orderInfo = mySqlOrders.FirstOrDefault(x => x.POName == procedureComboBox.Text);
if (orderInfo != null)
{ {
UpdateProcedure(0, orderInfo.TestProcedure, ProcedureSelection.OrderNrFromTracingDB, procedureComboBox.Text); descriptionLabel.Text = CurrentProcedure.Description;
} }
} if (CurrentProcedure != null && testProgressControls != null)
else if (benchInfo.Sources.Contains(ProcedureSelection.OrderNrFromOracleDB))
{
var orderDetails = oracleOrders.FirstOrDefault(x => x.AuftragsNummer == procedureComboBox.Text);
if (orderDetails != null)
{ {
UpdateProcedure(0, orderDetails.AuftragsNummer, ProcedureSelection.OrderNrFromOracleDB, procedureComboBox.Text); testProgressControls.ProcedureSelectedInUI(this, new UiBridge.ProcedureSelectedEventArgs(CurrentProcedure));
}
if (!string.IsNullOrEmpty(procInfo.ResolvedName))
{
Program.LocalSettings.LastProcedureName = procInfo.ResolvedName;
Program.LocalSettings.LastProcedureSource = procInfo.ResolvedSource;
Program.LocalSettings.LastProcedureNr = procInfo.ItemNr;
Program.LocalSettings.Save();
} }
} }
}
else if (!string.IsNullOrEmpty(procedureComboBox.Text) && (procedureComboBox.Text[0] == 'L' || procedureComboBox.Text[0] == 'R'))
{
int procNr = int.Parse(procedureComboBox.Text.Substring(1, separPos));
string procName = procedureComboBox.Text.Substring(separPos + ProcSeparator.Length);
var source = (procedureComboBox.Text[0] == 'R') ? ProcedureSelection.FromSharedDB : ProcedureSelection.FromLocalDB;
UpdateProcedure(procNr, procName, source);
}
else
{
int procNr = int.Parse(procedureComboBox.Text.Substring(0, separPos));
string procName = procedureComboBox.Text.Substring(separPos + ProcSeparator.Length);
UpdateProcedure(procNr, procName, ProcedureSelection.FromLocalDB);
} }
} }
public void UpdateProcedure(int procedureNr, string procedureName, ProcedureSelection source, string order = null) private void procedureComboBox_KeyPress(object sender, KeyPressEventArgs e)
{ {
SelectedProcedure = new ProcedureInfo(source, 0, procedureName, if (e.KeyChar == '\r' && procedureComboBox.Enabled)
ProcedureInfo.GetSignature(source, (Rig.Sequences.ProcessData.BenchInfo != null) ? Rig.Sequences.ProcessData.BenchInfo.Sources : null)); {
SelectedProcedure.ResolvedSource = ProcedureSelection.FromLocalDB; /// Enter key was pressed ...
SelectedProcedure.ResolvedName = procedureName; procedureComboBox_SelectedIndexChanged(sender, e as EventArgs);
SelectedProcedure.Order = order; if (SelectedProcedure != null && SelectedProcedure.IsValid)
{
BenchControlPanel.ReloadTests(); /// and according to procedureComboBox.Text a valid procedure was selected => start a test cycle
if (CurrentProcedure != null && CurrentProcedure.Description != null) Bridge.Ui2Bench(UI2BenchCmd.StartCycle);
{ }
descriptionLabel.Text = CurrentProcedure.Description; }
} }
if (CurrentProcedure != null && testProgressControls != null)
{
testProgressControls.ProcedureSelectedInUI(this, new UiBridge.ProcedureSelectedEventArgs(CurrentProcedure));
}
if (!string.IsNullOrEmpty(procedureName))
{
Program.LocalSettings.LastProcedureName = procedureName;
Program.LocalSettings.LastProcedureSource = source;
Program.LocalSettings.LastProcedureNr = procedureNr;
Program.LocalSettings.Save();
}
}
/// <summary> /// <summary>
/// Save UI settings to Program.LocalSettings and save them to a file. /// Save UI settings to Program.LocalSettings and save them to a file.
+27 -27
View File
@@ -643,7 +643,7 @@
<value>4, 4, 4, 4</value> <value>4, 4, 4, 4</value>
</data> </data>
<data name="processTabPageCtrl.Size" type="System.Drawing.Size, System.Drawing"> <data name="processTabPageCtrl.Size" type="System.Drawing.Size, System.Drawing">
<value>1012, 523</value> <value>1012, 582</value>
</data> </data>
<data name="processTabPageCtrl.TabIndex" type="System.Int32, mscorlib"> <data name="processTabPageCtrl.TabIndex" type="System.Int32, mscorlib">
<value>1</value> <value>1</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.1656.0, Culture=neutral, PublicKeyToken=null</value> <value>TBF.UI.Process.ProcessTabPageCtrl, TBF, Version=3.1.1810.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>
@@ -664,7 +664,7 @@
<value>4, 5</value> <value>4, 5</value>
</data> </data>
<data name="processTabPage.Size" type="System.Drawing.Size, System.Drawing"> <data name="processTabPage.Size" type="System.Drawing.Size, System.Drawing">
<value>1012, 523</value> <value>1012, 582</value>
</data> </data>
<data name="processTabPage.TabIndex" type="System.Int32, mscorlib"> <data name="processTabPage.TabIndex" type="System.Int32, mscorlib">
<value>30</value> <value>30</value>
@@ -688,7 +688,7 @@
<value>4, 5</value> <value>4, 5</value>
</data> </data>
<data name="insertTabPage.Size" type="System.Drawing.Size, System.Drawing"> <data name="insertTabPage.Size" type="System.Drawing.Size, System.Drawing">
<value>1012, 523</value> <value>1012, 582</value>
</data> </data>
<data name="insertTabPage.TabIndex" type="System.Int32, mscorlib"> <data name="insertTabPage.TabIndex" type="System.Int32, mscorlib">
<value>22</value> <value>22</value>
@@ -721,7 +721,7 @@
<value>4, 4, 4, 4</value> <value>4, 4, 4, 4</value>
</data> </data>
<data name="resultsTabPageCtrl.Size" type="System.Drawing.Size, System.Drawing"> <data name="resultsTabPageCtrl.Size" type="System.Drawing.Size, System.Drawing">
<value>1012, 523</value> <value>1012, 582</value>
</data> </data>
<data name="resultsTabPageCtrl.TabIndex" type="System.Int32, mscorlib"> <data name="resultsTabPageCtrl.TabIndex" type="System.Int32, mscorlib">
<value>0</value> <value>0</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.1656.0, Culture=neutral, PublicKeyToken=null</value> <value>TBF.UI.ResultsMI.ResultsTabPageCtrl, TBF, Version=3.1.1810.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>
@@ -742,7 +742,7 @@
<value>4, 5</value> <value>4, 5</value>
</data> </data>
<data name="resultsTabPage.Size" type="System.Drawing.Size, System.Drawing"> <data name="resultsTabPage.Size" type="System.Drawing.Size, System.Drawing">
<value>1012, 523</value> <value>1012, 582</value>
</data> </data>
<data name="resultsTabPage.TabIndex" type="System.Int32, mscorlib"> <data name="resultsTabPage.TabIndex" type="System.Int32, mscorlib">
<value>15</value> <value>15</value>
@@ -772,7 +772,7 @@
<value>0, 0</value> <value>0, 0</value>
</data> </data>
<data name="graphsTabPageCtrl.Size" type="System.Drawing.Size, System.Drawing"> <data name="graphsTabPageCtrl.Size" type="System.Drawing.Size, System.Drawing">
<value>1012, 523</value> <value>1012, 582</value>
</data> </data>
<data name="graphsTabPageCtrl.TabIndex" type="System.Int32, mscorlib"> <data name="graphsTabPageCtrl.TabIndex" type="System.Int32, mscorlib">
<value>0</value> <value>0</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.1656.0, Culture=neutral, PublicKeyToken=null</value> <value>TBF.UI.Graphs.GraphsTabPageCtrl, TBF, Version=3.1.1810.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>
@@ -793,7 +793,7 @@
<value>4, 5</value> <value>4, 5</value>
</data> </data>
<data name="graphsTabPage.Size" type="System.Drawing.Size, System.Drawing"> <data name="graphsTabPage.Size" type="System.Drawing.Size, System.Drawing">
<value>1012, 523</value> <value>1012, 582</value>
</data> </data>
<data name="graphsTabPage.TabIndex" type="System.Int32, mscorlib"> <data name="graphsTabPage.TabIndex" type="System.Int32, mscorlib">
<value>32</value> <value>32</value>
@@ -826,7 +826,7 @@
<value>4, 4, 4, 4</value> <value>4, 4, 4, 4</value>
</data> </data>
<data name="eventLogsTabPageCtrl.Size" type="System.Drawing.Size, System.Drawing"> <data name="eventLogsTabPageCtrl.Size" type="System.Drawing.Size, System.Drawing">
<value>1012, 523</value> <value>1012, 582</value>
</data> </data>
<data name="eventLogsTabPageCtrl.TabIndex" type="System.Int32, mscorlib"> <data name="eventLogsTabPageCtrl.TabIndex" type="System.Int32, mscorlib">
<value>0</value> <value>0</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.1656.0, Culture=neutral, PublicKeyToken=null</value> <value>TBF.UI.EventLogs.EventLogsTabPageCtrl, TBF, Version=3.1.1810.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>
@@ -847,7 +847,7 @@
<value>4, 5</value> <value>4, 5</value>
</data> </data>
<data name="eventLogsTabPage.Size" type="System.Drawing.Size, System.Drawing"> <data name="eventLogsTabPage.Size" type="System.Drawing.Size, System.Drawing">
<value>1012, 523</value> <value>1012, 582</value>
</data> </data>
<data name="eventLogsTabPage.TabIndex" type="System.Int32, mscorlib"> <data name="eventLogsTabPage.TabIndex" type="System.Int32, mscorlib">
<value>21</value> <value>21</value>
@@ -877,7 +877,7 @@
<value>0, 0</value> <value>0, 0</value>
</data> </data>
<data name="calendarTabPageCtrl.Size" type="System.Drawing.Size, System.Drawing"> <data name="calendarTabPageCtrl.Size" type="System.Drawing.Size, System.Drawing">
<value>1012, 523</value> <value>1012, 582</value>
</data> </data>
<data name="calendarTabPageCtrl.TabIndex" type="System.Int32, mscorlib"> <data name="calendarTabPageCtrl.TabIndex" type="System.Int32, mscorlib">
<value>0</value> <value>0</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.1656.0, Culture=neutral, PublicKeyToken=null</value> <value>TBF.UI.Calendar.CalendarTabPageCtrl, TBF, Version=3.1.1810.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>
@@ -898,7 +898,7 @@
<value>4, 5</value> <value>4, 5</value>
</data> </data>
<data name="calendarTabPage.Size" type="System.Drawing.Size, System.Drawing"> <data name="calendarTabPage.Size" type="System.Drawing.Size, System.Drawing">
<value>1012, 523</value> <value>1012, 582</value>
</data> </data>
<data name="calendarTabPage.TabIndex" type="System.Int32, mscorlib"> <data name="calendarTabPage.TabIndex" type="System.Int32, mscorlib">
<value>33</value> <value>33</value>
@@ -928,7 +928,7 @@
<value>0, 0</value> <value>0, 0</value>
</data> </data>
<data name="picturesTabPageCtrl.Size" type="System.Drawing.Size, System.Drawing"> <data name="picturesTabPageCtrl.Size" type="System.Drawing.Size, System.Drawing">
<value>1012, 523</value> <value>1012, 582</value>
</data> </data>
<data name="picturesTabPageCtrl.TabIndex" type="System.Int32, mscorlib"> <data name="picturesTabPageCtrl.TabIndex" type="System.Int32, mscorlib">
<value>0</value> <value>0</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.1656.0, Culture=neutral, PublicKeyToken=null</value> <value>TBF.UI.Camera.PicturesTabPageCtrl, TBF, Version=3.1.1810.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>
@@ -949,7 +949,7 @@
<value>4, 5</value> <value>4, 5</value>
</data> </data>
<data name="picturesTabPage.Size" type="System.Drawing.Size, System.Drawing"> <data name="picturesTabPage.Size" type="System.Drawing.Size, System.Drawing">
<value>1012, 523</value> <value>1012, 582</value>
</data> </data>
<data name="picturesTabPage.TabIndex" type="System.Int32, mscorlib"> <data name="picturesTabPage.TabIndex" type="System.Int32, mscorlib">
<value>31</value> <value>31</value>
@@ -1291,19 +1291,19 @@
<value>Event logs</value> <value>Event logs</value>
</data> </data>
<data name="usersTSMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="usersTSMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>152, 22</value> <value>150, 22</value>
</data> </data>
<data name="usersTSMenuItem.Text" xml:space="preserve"> <data name="usersTSMenuItem.Text" xml:space="preserve">
<value>Users</value> <value>Users</value>
</data> </data>
<data name="languageTSMItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="languageTSMItem.Size" type="System.Drawing.Size, System.Drawing">
<value>152, 22</value> <value>150, 22</value>
</data> </data>
<data name="languageTSMItem.Text" xml:space="preserve"> <data name="languageTSMItem.Text" xml:space="preserve">
<value>Language</value> <value>Language</value>
</data> </data>
<data name="databaseSettingsTSMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="databaseSettingsTSMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>152, 22</value> <value>150, 22</value>
</data> </data>
<data name="databaseSettingsTSMenuItem.Text" xml:space="preserve"> <data name="databaseSettingsTSMenuItem.Text" xml:space="preserve">
<value>Profiles</value> <value>Profiles</value>
@@ -1321,31 +1321,31 @@
<value>Test results</value> <value>Test results</value>
</data> </data>
<data name="backUpTSMItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="backUpTSMItem.Size" type="System.Drawing.Size, System.Drawing">
<value>152, 22</value> <value>150, 22</value>
</data> </data>
<data name="backUpTSMItem.Text" xml:space="preserve"> <data name="backUpTSMItem.Text" xml:space="preserve">
<value>Back up</value> <value>Back up</value>
</data> </data>
<data name="passwdTSMItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="passwdTSMItem.Size" type="System.Drawing.Size, System.Drawing">
<value>152, 22</value> <value>150, 22</value>
</data> </data>
<data name="passwdTSMItem.Text" xml:space="preserve"> <data name="passwdTSMItem.Text" xml:space="preserve">
<value>Password</value> <value>Password</value>
</data> </data>
<data name="upgradeTSMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="upgradeTSMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>152, 22</value> <value>150, 22</value>
</data> </data>
<data name="upgradeTSMenuItem.Text" xml:space="preserve"> <data name="upgradeTSMenuItem.Text" xml:space="preserve">
<value>Upgrade</value> <value>Upgrade</value>
</data> </data>
<data name="optoHeadsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="optoHeadsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>152, 22</value> <value>150, 22</value>
</data> </data>
<data name="optoHeadsToolStripMenuItem.Text" xml:space="preserve"> <data name="optoHeadsToolStripMenuItem.Text" xml:space="preserve">
<value>Optical heads</value> <value>Optical heads</value>
</data> </data>
<data name="clearCountersToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="clearCountersToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>152, 22</value> <value>150, 22</value>
</data> </data>
<data name="clearCountersToolStripMenuItem.Text" xml:space="preserve"> <data name="clearCountersToolStripMenuItem.Text" xml:space="preserve">
<value>Clear counters</value> <value>Clear counters</value>